diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 00000000..62552314
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+ net8.0
+ True
+ Preview
+ enable
+ True
+ True
+ True
+ preview-all
+ x64;ARM64
+ Debug;Release;PerformanceDebug
+ 1701;1702;0649;1591;0169
+
+
+ MIT
+ https://github.com/Nitload-NSI/StgSharp
+ https://github.com/Nitload-NSI/StgSharp.git
+
+
+
+
+
+
+
+ False
+ portable
+ False
+
+
+
+ True
+ none
+ False
+
+
+
+ True
+ none
+ False
+
+
+
+
+
+
+
+ $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), 'Directory.Build.props'))\
+
+
+ StgSharp.Native
+
+
+
+
+
+
+ true
+ true
+ true
+
+ <_OsTag Condition="'$(IsWindows)'=='true'">win
+ <_OsTag Condition="'$(IsLinux)'=='true'">linux
+ <_OsTag Condition="'$(IsOSX)'=='true'">osx
+
+
+
+
+
+ <_ArchTag Condition="'$(Platform)'=='x64'">x64
+ <_ArchTag Condition="'$(Platform)'=='ARM64'">arm64
+ <_ArchTag Condition="'$(_ArchTag)'==''">x64
+
+
+ $(_OsTag)-$(_ArchTag)
+
+
+ $(SolutionRoot)build\$(BuildRid)\
+
+
+
+
+
+
+ <_NativePrefix Condition="'$(_OsTag)'!='win'">lib
+ <_NativePrefix Condition="'$(_OsTag)'=='win'">
+
+ <_NativeExt Condition="'$(_OsTag)'=='win'">.dll
+ <_NativeExt Condition="'$(_OsTag)'=='linux'">.so
+ <_NativeExt Condition="'$(_OsTag)'=='osx'">.dylib
+
+ <_NativeSymExt Condition="'$(_OsTag)'=='win'">.pdb
+ <_NativeSymExt Condition="'$(_OsTag)'=='linux'">.so.dbg
+ <_NativeSymExt Condition="'$(_OsTag)'=='osx'">.dylib.dSYM
+
+ $(_NativePrefix)$(NativeLibName)$(_NativeExt)
+ $(_NativePrefix)$(NativeLibName)$(_NativeSymExt)
+
+
+
+
+
+
+ $(DefineConstants);WINDOWS
+
+
+ $(DefineConstants);OSX
+
+
+ $(DefineConstants);LINUX
+
+
+
\ No newline at end of file
diff --git a/Directory.Build.targets b/Directory.Build.targets
new file mode 100644
index 00000000..6ffef66f
--- /dev/null
+++ b/Directory.Build.targets
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ <_OutputFiles Include="$(OutputPath)**\*.*"
+ Exclude="$(OutputPath)**\*.user" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_NativeLibFile Include="$(NativeBuildDir)$(NativeFileName)"
+ Condition="Exists('$(NativeBuildDir)$(NativeFileName)')" />
+
+
+
+
+ <_NativeSymFile Include="$(NativeBuildDir)$(NativeSymbolFileName)"
+ Condition="Exists('$(NativeBuildDir)$(NativeSymbolFileName)')" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_PackNative Include="$(SolutionRoot)build\win-x64\$(NativeLibName).dll"
+ Condition="Exists('$(SolutionRoot)build\win-x64\$(NativeLibName).dll')"
+ PackagePath="runtimes\win-x64\native" Pack="true" />
+
+ <_PackNative Include="$(SolutionRoot)build\win-arm64\$(NativeLibName).dll"
+ Condition="Exists('$(SolutionRoot)build\win-arm64\$(NativeLibName).dll')"
+ PackagePath="runtimes\win-arm64\native" Pack="true" />
+
+ <_PackNative Include="$(SolutionRoot)build\linux-x64\lib$(NativeLibName).so"
+ Condition="Exists('$(SolutionRoot)build\linux-x64\lib$(NativeLibName).so')"
+ PackagePath="runtimes\linux-x64\native" Pack="true" />
+
+ <_PackNative Include="$(SolutionRoot)build\linux-arm64\lib$(NativeLibName).so"
+ Condition="Exists('$(SolutionRoot)build\linux-arm64\lib$(NativeLibName).so')"
+ PackagePath="runtimes\linux-arm64\native" Pack="true" />
+
+ <_PackNative Include="$(SolutionRoot)build\linux-ppc64le\lib$(NativeLibName).so"
+ Condition="Exists('$(SolutionRoot)build\linux-ppc64le\lib$(NativeLibName).so')"
+ PackagePath="runtimes\linux-ppc64le\native" Pack="true" />
+
+ <_PackNative Include="$(SolutionRoot)build\osx-x64\lib$(NativeLibName).dylib"
+ Condition="Exists('$(SolutionRoot)build\osx-x64\lib$(NativeLibName).dylib')"
+ PackagePath="runtimes\osx-x64\native" Pack="true" />
+
+ <_PackNative Include="$(SolutionRoot)build\osx-arm64\lib$(NativeLibName).dylib"
+ Condition="Exists('$(SolutionRoot)build\osx-arm64\lib$(NativeLibName).dylib')"
+ PackagePath="runtimes\osx-arm64\native" Pack="true" />
+
+
+
+
+
+
\ No newline at end of file
diff --git a/StgSharp.Benchmark/StgSharp.Benchmark.csproj b/StgSharp.Benchmark/StgSharp.Benchmark.csproj
index 0d8f3d48..da48fac9 100644
--- a/StgSharp.Benchmark/StgSharp.Benchmark.csproj
+++ b/StgSharp.Benchmark/StgSharp.Benchmark.csproj
@@ -1,13 +1,4 @@
-
- Exe
- net8.0
- enable
- enable
- true
- x64
- x64
-
$(MSBuildProjectDirectory)\..\
diff --git a/StgSharp.Common/Controlling/Controls/BattleField.cs b/StgSharp.Common/Controlling/Controls/BattleField.cs
deleted file mode 100644
index 79e1228f..00000000
--- a/StgSharp.Common/Controlling/Controls/BattleField.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="BattleField"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-// TODO 这玩意如何加载一个渲染流程以获得各个图元还没搞清楚
-
-namespace StgSharp.Controls
-{
- public class BattleField : ControllingItem
- {
-
- public bool IsEntity => true;
-
- public ReadOnlySpan TextureBox
- {
- get => throw new NotImplementedException();
- }
-
- public Rectangle BoundingBox { get; set; }
-
- public Vec2 Position { get; set; }
-
- public IEnumerator GetEnumerator()
- {
- throw new NotImplementedException();
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/Controls/ButtonGroup.cs b/StgSharp.Common/Controlling/Controls/ButtonGroup.cs
deleted file mode 100644
index 4682497d..00000000
--- a/StgSharp.Common/Controlling/Controls/ButtonGroup.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ButtonGroup"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Security.Cryptography.X509Certificates;
-using System.Text;
-using System.Transactions;
-
-namespace StgSharp.Controls
-{
- public abstract class KeyboardButtonGroup : ControllingItem
- {
-
- private List buttonList;
- private TriggerButton current;
-
- public KeyboardButtonGroup()
- {
- buttonList = new List();
- }
-
- public bool IsEntity
- {
- get => false;
- }
-
- public ReadOnlySpan TextureBox
- {
- get => throw new NotSupportedException();
- }
-
- public Rectangle BoundingBox { get; set; }
-
- public TriggerButton CurrentButton
- {
- get => current;
- }
-
- public Vec2 Position { get; set; }
-
- protected List AllButton
- {
- get => buttonList;
- }
-
- public void AddButton(TriggerButton button)
- {
- buttonList.Add(button);
- }
-
- public abstract void Confirm();
-
- public IEnumerator GetEnumerator()
- {
- foreach (TriggerButton item in buttonList) {
- yield return item.Single();
- }
- }
-
- public void MoveDown()
- {
- TriggerButton button = current;
- while ((button.Down != null) && button.Down.IsDisabled) {
- button = button.Right;
- }
- if (current == button) {
- return;
- }
- current.DeHighlight();
- button.Enable();
- current = button;
- }
-
- public void MoveLeft()
- {
- TriggerButton button = current;
- while ((button.Left != null) && button.Left.IsDisabled) {
- button = button.Left;
- }
- if (current == button) {
- return;
- }
- current.DeHighlight();
- button.Enable();
- current = button;
- }
-
- public void MoveRight()
- {
- TriggerButton button = current;
- while ((button.Right != null) && button.Right.IsDisabled) {
- button = button.Right;
- }
- if (current == button) {
- return;
- }
- current.DeHighlight();
- button.Enable();
- current = button;
- }
-
- public void MoveUp()
- {
- TriggerButton button = current;
- while ((button.Up != null) && button.Up.IsDisabled) {
- button = button.Right;
- }
- if (current == button) {
- return;
- }
- current.DeHighlight();
- button.Enable();
- current = button;
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs b/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs
deleted file mode 100644
index 7b931551..00000000
--- a/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs
+++ /dev/null
@@ -1,109 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="CharacterIndexImage"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics.Contracts;
-using System.Linq;
-using System.Text;
-
-namespace StgSharp.Controls
-{
- public class CharacterLineIndexImage : ControllingItem
- {
-
- private char[] displayIndex;
- private char defaultChar;
-
- private Dictionary texIndex;
- private int length;
- private PlainGeometryMesh _tittleMesh;
-
- public CharacterLineIndexImage(
- int length,
- char defaultChar,
- PlainGeometryMesh tittleMesh,
- IEnumerable<(char, PlainGeometryMesh)> indexEnumeration)
- {
- this.length = length;
- displayIndex = new char[length];
- _tittleMesh = tittleMesh;
- texIndex = indexEnumeration.ToDictionary(item => item.Item1, item => item.Item2);
- }
-
- public bool IsEntity
- {
- get => true;
- }
-
- public ReadOnlySpan TextureBox
- {
- get => throw new NotSupportedException();
- }
-
- public Rectangle BoundingBox
- {
- get => throw new NotImplementedException();
- set => throw new NotImplementedException();
- }
-
- public Vec2 Position
- {
- get => throw new NotImplementedException();
- set => throw new NotImplementedException();
- }
-
- public void Display(string message)
- {
- if (string.IsNullOrEmpty(message)) {
- message = string.Empty;
- }
-
- string result = (message.Length >= length) ?
- message.Substring(message.Length - displayIndex.Length) :
- message.PadLeft(
- length, defaultChar);
-
- displayIndex = result.ToCharArray();
- }
-
- public IEnumerator GetEnumerator()
- {
- yield return _tittleMesh;
- foreach (char item in displayIndex) {
- yield return texIndex[item];
- }
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/Controls/ControllingIntem.cs b/StgSharp.Common/Controlling/Controls/ControllingIntem.cs
deleted file mode 100644
index 419cd434..00000000
--- a/StgSharp.Common/Controlling/Controls/ControllingIntem.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ControllingIntem"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-using StgSharp.Mathematics.Graphics;
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StgSharp.Controls
-{
- public interface ControllingItem : IEnumerable
- {
-
- public abstract bool IsEntity { get; }
-
- public abstract ReadOnlySpan TextureBox { get; }
-
- public abstract Rectangle BoundingBox { get; set; }
-
- public abstract Vec2 Position { get; set; }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return GetEnumerator();
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/Controls/DecorationBox.cs b/StgSharp.Common/Controlling/Controls/DecorationBox.cs
deleted file mode 100644
index 8911bd38..00000000
--- a/StgSharp.Common/Controlling/Controls/DecorationBox.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="DecorationBox.cs"
-// Project: StgSharp
-// AuthorGroup: Nitload Space
-// Copyright (c) Nitload Space. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the “Software”), to deal in the Software without restriction,
-// including without limitation the rights to use, copy, modify, merge,
-// publish, distribute, sublicense, and/or sell copies of the Software,
-// and to permit persons to whom the Software is furnished to do so,
-// subject to the following conditions:
-//
-// The above copyright notice and
-// this permission notice shall be included in all copies
-// or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED “AS IS”,
-// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
-// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH
-// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-using StgSharp.Mathematics.Graphics;
-
-using System;
-using System.Collections.Generic;
-using System.Runtime.CompilerServices;
-
-namespace StgSharp.Controls
-{
- public class DecorationBox : ControllingItem
- {
-
- private PlainGeometryMesh renderMesh;
-
- public DecorationBox(Rectangle bound, Image texture, Vec2[] texCoord)
- {
- renderMesh = new PlainGeometryMesh(
- BoundingBox, new TextureProvider(texture, texCoord));
- }
-
- public bool IsEntity => true;
-
- public ReadOnlySpan TextureBox
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => renderMesh.TextureCoord;
- }
-
- public Rectangle BoundingBox { get; set; }
-
- public Vec2 Position { get; set; }
-
- public IEnumerator GetEnumerator()
- {
- yield return renderMesh;
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/Controls/MarkingLable.cs b/StgSharp.Common/Controlling/Controls/MarkingLable.cs
deleted file mode 100644
index 06bb347b..00000000
--- a/StgSharp.Common/Controlling/Controls/MarkingLable.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="MarkingLable"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Controls;
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-using StgSharp.Timing;
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Runtime.CompilerServices;
-using System.Text;
-
-namespace StgSharp.Controls
-{
- public class MarkingLabel : ControllingItem
- {
-
- private PlainGeometryMesh marker;
-
- private Vec2 _currentPosition, _movementVec;
-
- public MarkingLabel(PlainGeometryMesh marker)
- {
- this.marker = marker;
- }
-
- public bool IsEntity => true;
-
- public ReadOnlySpan TextureBox
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => marker.TextureCoord;
- }
-
- public Rectangle BoundingBox { get; set; }
-
- public Vec2 Position { get; set; }
-
- public IEnumerator GetEnumerator()
- {
- yield return marker;
- }
-
- public void Move(Vec2 movement)
- {
- throw new NotImplementedException();
- }
-
- public void MoveTo(Vec2 target)
- {
- Move(target - Position);
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/Controls/TriggerButton.cs b/StgSharp.Common/Controlling/Controls/TriggerButton.cs
deleted file mode 100644
index 58af321b..00000000
--- a/StgSharp.Common/Controlling/Controls/TriggerButton.cs
+++ /dev/null
@@ -1,213 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="TriggerButton"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Controls;
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-
-using System;
-using System.Collections.Generic;
-using System.Runtime.InteropServices;
-using System.Text;
-
-namespace StgSharp.Controls
-{
- public delegate void RenderButtonTextureCallback(ButtonStatus status, float beginTime, in TextureProvider texture);
-
- public enum ButtonStatus
- {
-
- Error = 0b0,
- Disable = 0b1,
- Enable = 0b10,
- Highlight = 0b100,
- Confirm = 0b1000,
-
- DisableToEnable = Disable | Enable,
- EnableToDisable = -(Enable | DisableToEnable),
-
- EnableToHighlight = Enable | Highlight,
- HighlightToEnable = -(Enable | Highlight),
-
- HighlightToDisable = -(Highlight | Disable),
-
- }
-
- public class TriggerButton : ControllingItem
- {
-
- private Action? confirmCallback;
- private Action? disableCallback;
-
- #nullable enable
- private Action? enableCallback;
- private float _statusBeginTime;
-
- private RenderButtonTextureCallback _renderButton;
- private TextureProvider _texture;
-
- #nullable restore
-
- public TriggerButton()
- {
- CurrentStatus = ButtonStatus.Disable;
- }
-
- public event Action ConfirmEvent
- {
- add { confirmCallback += value; }
- remove { confirmCallback -= value; }
- }
-
- public event Action DisableEvent
- {
- add { disableCallback += value; }
- remove { disableCallback -= value; }
- }
-
- public event Action EnableEvent
- {
- add { enableCallback += value; }
- remove { enableCallback -= value; }
- }
-
- public event RenderButtonTextureCallback RenderButtonTexture
- {
- add
- {
- if (_renderButton == null)
- {
- _renderButton = value;
- } else
- {
- _renderButton += value;
- }
- }
- remove
- {
- if (_renderButton != null) {
- _renderButton -= value;
- }
- }
- }
-
- public bool IsHighLighted { get; internal set; }
-
- public bool IsDisabled { get; internal set; }
-
- public bool IsEntity => true;
-
- public ReadOnlySpan TextureBox
- {
- get => MemoryMarshal.Cast(_texture.TextureCoordinate);
- }
-
- public Rectangle BoundingBox { get; set; }
-
- public TriggerButton Left { get; internal set; }
-
- public TriggerButton Right { get; internal set; }
-
- public TriggerButton Up { get; internal set; }
-
- public TriggerButton Down { get; internal set; }
-
- public Vec2 Position { get; set; }
-
- internal TextureProvider Texture
- {
- get => _texture;
- set => _texture = value;
- }
-
- protected ButtonStatus CurrentStatus { get; set; }
-
- public void DeHighlight()
- {
- if (CurrentStatus == ButtonStatus.Highlight) {
- CurrentStatus = ButtonStatus.HighlightToEnable;
- }
- }
-
- public void Disable()
- {
- CurrentStatus = CurrentStatus switch
- {
- ButtonStatus.Enable => ButtonStatus.EnableToDisable,
- ButtonStatus.Highlight => ButtonStatus.HighlightToDisable,
- _ => CurrentStatus,
- };
- if (disableCallback != null) {
- disableCallback();
- }
- }
-
- public void Enable()
- {
- if (CurrentStatus == ButtonStatus.Disable)
- {
- CurrentStatus = ButtonStatus.DisableToEnable;
- } else
- {
- return;
- }
- if (enableCallback != null) {
- enableCallback();
- }
- }
-
- public IEnumerator GetEnumerator()
- {
- _renderButton(CurrentStatus, _statusBeginTime, in _texture);
- yield return new PlainGeometryMesh(this.BoundingBox, _texture);
- }
-
- public void Highlight()
- {
- if (CurrentStatus == ButtonStatus.Enable)
- {
- CurrentStatus |= ButtonStatus.EnableToHighlight;
- } else
- {
- return;
- }
- if (confirmCallback != null) {
- confirmCallback();
- }
- }
-
- internal void Init(ButtonStatus status)
- {
- if (CurrentStatus == ButtonStatus.Error) {
- CurrentStatus = status;
- }
- }
-
- }//----------------------------------- End of class --------------------------------------------
-}
diff --git a/StgSharp.Common/Controlling/KeyEnum.cs b/StgSharp.Common/Controlling/KeyEnum.cs
deleted file mode 100644
index 9aee345e..00000000
--- a/StgSharp.Common/Controlling/KeyEnum.cs
+++ /dev/null
@@ -1,234 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="KeyEnum"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Graphics;
-using StgSharp.Graphics.OpenGL;
-
-using System;
-
-namespace StgSharp
-{
- public enum KeyboardKey : int
- {
-
- UNKNOWN = -1,
- None = 0,
- Space = 32,
- Apostrophe = 39/*'*/,
- Comma = 44/*,*/,
- Minus = 45/*-*/,
- Period = 46/*.*/,
- Slash = 47/*/*/,
- Zero = 48,
- One = 49,
- Two = 50,
- Three = 51,
- Four = 52,
- Five = 53,
- Six = 54,
- Seven = 55,
- Eight = 56,
- Nine = 57,
- Semicolon = 59/*,*/,
- Equal = 61/*=*/,
- A = 65,
- B = 66,
- C = 67,
- D = 68,
- E = 69,
- F = 70,
- G = 71,
- H = 72,
- I = 73,
- J = 74,
- K = 75,
- L = 76,
- M = 77,
- N = 78,
- O = 79,
- P = 80,
- Q = 81,
- R = 82,
- S = 83,
- T = 84,
- U = 85,
- V = 86,
- W = 87,
- X = 88,
- Y = 89,
- Z = 90,
- LeftBracket = 91/*[*/,
- BACKSLASH = 92/*\*/,
- RightBracket = 93/*]*/,
- GraveAccent = 96/*`*/,
- World1 = 161/*non-US#1*/,
- World2 = 162/*non-US#2*/,
- Esc = 256,
- Enter = 257,
- Tab = 258,
- Backspace = 259,
- Insert = 260,
- Delete = 261,
- Right = 262,
- Left = 263,
- Down = 264,
- Up = 265,
- PgUp = 266,
- PgDown = 267,
- Home = 268,
- End = 269,
- CapsLock = 280,
- ScrollLock = 281,
- NumLock = 282,
- PrintScreen = 283,
- Pause = 284,
- F1 = 290,
- F2 = 291,
- F3 = 292,
- F4 = 293,
- F5 = 294,
- F6 = 295,
- F7 = 296,
- F8 = 297,
- F9 = 298,
- F10 = 299,
- F11 = 300,
- F12 = 301,
- F13 = 302,
- F14 = 303,
- F15 = 304,
- F16 = 305,
- F17 = 306,
- F18 = 307,
- F19 = 308,
- F20 = 309,
- F21 = 310,
- F22 = 311,
- F23 = 312,
- F24 = 313,
- F25 = 314,
- NumPad0 = 320,
- NumPad1 = 321,
- NumPad2 = 322,
- NumPad3 = 323,
- NumPad4 = 324,
- NumPad5 = 325,
- NumPad6 = 326,
- NumPad7 = 327,
- NumPad8 = 328,
- NumPad9 = 329,
- NumPadDec = 330,
- NumPadDiv = 331,
- NumPadMul = 332,
- NumPadSub = 333,
- NumPadAdd = 334,
- NumPadAnter = 335,
- NumPadEqual = 336,
- LeftShift = 340,
- LeftControl = 341,
- LeftAlt = 342,
- LeftSuper = 343,
- RightShift = 344,
- RightControl = 345,
- RightAlt = 346,
- RightSuper = 347,
- Menu = 348,
- First = Space,
- Last = Menu,
-
- }
-
- #pragma warning disable CA1707
- #pragma warning disable CA1712
- #pragma warning disable CA1008
- #pragma warning disable CA1027
- public enum Joystick : int
- #pragma warning restore CA1027
- {
-
- Joystick_1 = FrameworkConstant. JOYSTICK_1,
- Joystick_2 = FrameworkConstant. JOYSTICK_2,
- Joystick_3 = FrameworkConstant. JOYSTICK_3,
- Joystick_4 = FrameworkConstant. JOYSTICK_4,
- Joystick_5 = FrameworkConstant. JOYSTICK_5,
- Joystick_6 = FrameworkConstant. JOYSTICK_6,
- Joystick_7 = FrameworkConstant. JOYSTICK_7,
- Joystick_8 = FrameworkConstant. JOYSTICK_8,
- Joystick_9 = FrameworkConstant. JOYSTICK_9,
- Joystick_10 = FrameworkConstant.JOYSTICK_10,
- Joystick_11 = FrameworkConstant.JOYSTICK_11,
- Joystick_12 = FrameworkConstant.JOYSTICK_12,
- Joystick_13 = FrameworkConstant.JOYSTICK_13,
- Joystick_14 = FrameworkConstant.JOYSTICK_14,
- Joystick_15 = FrameworkConstant.JOYSTICK_15,
- Joystick_16 = FrameworkConstant.JOYSTICK_16,
- First = Joystick_1,
- Last = Joystick_16
-
- }
-
- [System.Flags]
- public enum Mouse : int
- {
-
- Button1 = 0,
- Button2 = 1,
- Button3 = 2,
- Button4 = 3,
- Button5 = 4,
- Button6 = 5,
- Button7 = 6,
- Button8 = 7,
- First = Button1,
- Last = Button8,
- Left = Button1,
- Right = Button2,
- Middle = Button3
-
- }
-
- #pragma warning restore CA1707
- #pragma warning restore CA1712
- #pragma warning restore CA7008
-
- internal enum InputEquipment
- {
-
- Keyboard,
- Mouse,
- Joystick
-
- }
-
- public enum KeyStatus : int
- {
-
- RELEASE = 0,
- PRESS = 1
-
- }
-}
diff --git a/StgSharp.Common/Controlling/KeyEventAttribute.cs b/StgSharp.Common/Controlling/KeyEventAttribute.cs
deleted file mode 100644
index b96d796a..00000000
--- a/StgSharp.Common/Controlling/KeyEventAttribute.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="KeyEventAttribute"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp
-{
- [AttributeUsage(AttributeTargets.Method)]
- public class KeyEventAttribute : Attribute
- {
-
- internal int _equipment;
- internal int _keyStat;
- internal int _keyTarget;
-
- public KeyEventAttribute(KeyboardKey key, KeyStatus status)
- {
- _equipment = (int)InputEquipment.Keyboard;
- _keyTarget = (int)key;
- _keyStat = (int)status;
- }
-
- public KeyEventAttribute(Joystick joystick, KeyStatus status)
- {
- _equipment = (int)InputEquipment.Keyboard;
- _keyTarget = (int)joystick;
- _keyStat = (int)status;
- }
-
- public KeyEventAttribute(Mouse mouse, KeyStatus status)
- {
- _equipment = (int)InputEquipment.Keyboard;
- _keyTarget = (int)mouse;
- _keyStat = (int)status;
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs
deleted file mode 100644
index c3b86c92..00000000
--- a/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="IClickTrigger"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StgSharp.Controlling.UsrActivity
-{
- public interface IClickTrigger
- {
-
- public int TargetKeyOrButtonID { get; }
-
- public KeyStatus TriggeredStatus { get; }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs
deleted file mode 100644
index f524be45..00000000
--- a/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="JoystickTrigger"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StgSharp.Controlling.UsrActivity
-{
- public readonly struct JoystickTrigger : IClickTrigger, IEquatable
- {
-
- private readonly Joystick _stick;
- private readonly KeyStatus _status;
-
- public JoystickTrigger(Joystick targetKey, KeyStatus status)
- {
- this._stick = targetKey;
- _status = status;
- }
-
- public int TargetKeyOrButtonID => (int)_stick;
-
- public Joystick Stick
- {
- get => _stick;
- }
-
- public KeyStatus TriggeredStatus => _status;
-
- public override bool Equals(object obj)
- {
- return base.Equals(obj);
- }
-
- public override int GetHashCode()
- {
- return ((int)_stick) + (17 * ((int)_status));
- }
-
- public override string ToString()
- {
- return $"Key {_stick} triggered when {_status}";
- }
-
- public static bool operator !=(JoystickTrigger left, JoystickTrigger right)
- {
- return !(left == right);
- }
-
- public static bool operator ==(JoystickTrigger left, JoystickTrigger right)
- {
- return (left._status == right._status) && (left._stick == right._stick);
- }
-
- bool IEquatable.Equals(JoystickTrigger other)
- {
- return other == this;
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs
deleted file mode 100644
index 1bca731a..00000000
--- a/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="KeyTrigger"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Data.Common;
-using System.Text;
-
-namespace StgSharp.Controlling.UsrActivity
-{
- public readonly struct KeyTrigger : IClickTrigger, IEquatable
- {
-
- private readonly KeyboardKey _targetKey;
- private readonly KeyStatus _triggerStat;
-
- public KeyTrigger(KeyboardKey targetKey, KeyStatus targetStat)
- {
- this._targetKey = targetKey;
- this._triggerStat = targetStat;
- }
-
- public int TargetKeyOrButtonID => (int)_targetKey;
-
- public KeyStatus TriggeredStatus => _triggerStat;
-
- public override bool Equals(object obj)
- {
- return base.Equals(obj);
- }
-
- public override int GetHashCode()
- {
- return ((int)_targetKey) + (17 * ((int)_triggerStat));
- }
-
- public override string ToString()
- {
- return $"Key {_targetKey} triggered when {_triggerStat}";
- }
-
- public static bool operator !=(KeyTrigger left, KeyTrigger right)
- {
- return !(left == right);
- }
-
- public static bool operator ==(KeyTrigger left, KeyTrigger right)
- {
- return (left._triggerStat == right._triggerStat) && (left._targetKey == right._targetKey);
- }
-
- bool IEquatable.Equals(KeyTrigger other)
- {
- return other == this;
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/UsrActivity/MouseTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/MouseTrigger.cs
deleted file mode 100644
index d1e1fd21..00000000
--- a/StgSharp.Common/Controlling/UsrActivity/MouseTrigger.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="MouseTrigger"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Mathematics;
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.SymbolStore;
-using System.Text;
-
-namespace StgSharp.Controlling.UsrActivity
-{
- public readonly struct MouseTrigger : IClickTrigger, IEquatable
- {
-
- private readonly KeyStatus _status;
- private readonly Mouse _mouse;
-
- public MouseTrigger(Mouse mouse, KeyStatus status)
- {
- _mouse = mouse;
- _status = status;
- }
-
- public int TargetKeyOrButtonID => (int)_mouse;
-
- public KeyStatus TriggeredStatus => _status;
-
- public bool Equals(MouseTrigger other)
- {
- return this == other;
- }
-
- public static bool operator !=(MouseTrigger left, MouseTrigger right)
- {
- return left._mouse != right._mouse || left._status != right._status;
- }
-
- public static bool operator ==(MouseTrigger left, MouseTrigger right)
- {
- return left._mouse == right._mouse && left._status == right._status;
- }
-
- }
-}
diff --git a/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs b/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs
deleted file mode 100644
index c6765ab0..00000000
--- a/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="TriggetFactory"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Mathematics;
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StgSharp.Controlling.UsrActivity
-{
- public static class TriggetBuilder
- {
-
- private const int JoystickMax = (int)Joystick.Last + 1;
- private const int JoystickMin = (int)Joystick.First - 1;
- private const int KeyboardMax = (int)KeyboardKey.Last + 1;
- private const int KeyboardMin = (int)KeyboardKey.First - 1;
- private const int MouseMax = (int)Mouse.Last + 1;
- private const int MouseMin = (int)Mouse.First - 1;
-
- private static KeyTrigger keyboardtemp;
- private static MouseTrigger mousetemp;
-
- public static JoystickTrigger BuildJoystickClickTrigger(int keyCode, KeyStatus status)
- {
- if (keyCode > MouseMin && keyCode < MouseMax) {
- return new JoystickTrigger((Joystick)keyCode, status);
- }
- throw new InvalidOperationException("Known key code or key is not on joystick.");
- }
-
- public static KeyTrigger BuildKeyboardClickTrigger(int keyCode, KeyStatus status)
- {
- if (keyCode > KeyboardMin && keyCode < KeyboardMax) {
- return new KeyTrigger((KeyboardKey)keyCode, status);
- }
- throw new InvalidOperationException("Known key code or kay is not on keyboard.");
- }
-
- public static MouseTrigger BuildMouseClickTrigger(int keyCode, KeyStatus status)
- {
- if (keyCode >= MouseMin && keyCode <= MouseMax) {
- return new MouseTrigger((Mouse)keyCode, status);
- }
- throw new InvalidOperationException("Known key code or key is not on mouse.");
- }
-
- public static IClickTrigger BuildTrigger(int keyCode, KeyStatus status)
- {
- if (keyCode > KeyboardMin && keyCode < KeyboardMax) {
- return new KeyTrigger((KeyboardKey)keyCode, status);
- }
- if (keyCode > JoystickMin && keyCode < JoystickMax) {
- return new JoystickTrigger((Joystick)keyCode, status);
- }
- if (keyCode >= MouseMin && keyCode <= MouseMax) {
- return new MouseTrigger((Mouse)keyCode, status);
- }
- throw new InvalidOperationException("Known key code.");
- }
-
- }
-}
diff --git a/StgSharp.Common/Environment/IStaticModule.cs b/StgSharp.Common/Environment/IStaticModule.cs
index fa887fd8..9700e6fc 100644
--- a/StgSharp.Common/Environment/IStaticModule.cs
+++ b/StgSharp.Common/Environment/IStaticModule.cs
@@ -1,4 +1,4 @@
-//-----------------------------------------------------------------------
+//-----------------------------------------------------------------------
// -----------------------------------------------------------------------
// file="IStaticModule"
// Project: StgSharp
@@ -40,12 +40,14 @@ namespace StgSharp
}
- public class ModuleToInitializeCollection : IEnumerable, IStaticModule
+ public sealed class ModuleToInitializeCollection : IEnumerable, IStaticModule
{
private readonly List _modules = [];
- internal ModuleToInitializeCollection(World.Initializer i)
+ internal ModuleToInitializeCollection(
+ World.Initializer i
+ )
{
_modules.Add(i);
}
@@ -62,7 +64,7 @@ namespace StgSharp
}
}
- public ModuleToInitializeCollection UseModule() where T: IStaticModule, new()
+ public ModuleToInitializeCollection UseModule() where T : IStaticModule, new()
{
_modules.Add(new T());
return this;
diff --git a/StgSharp.Common/Environment/globalKeyStat.cs b/StgSharp.Common/Environment/globalKeyStat.cs
deleted file mode 100644
index ef8dbef1..00000000
--- a/StgSharp.Common/Environment/globalKeyStat.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="globalKeyStat"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp
-{
- public static partial class World
- {
-
- private static ConcurrentDictionary keyListener
- = new ConcurrentDictionary();
-
- public static KeyStatus CheckKey(KeyboardKey key)
- {
- return keyListener.GetOrAdd((int)key, KeyStatus.RELEASE);
- }
-
- }
-}
diff --git a/StgSharp.Common/MVVM/View/ViewBase.cs b/StgSharp.Common/MVVM/View/ViewBase.cs
deleted file mode 100644
index 6f510dc3..00000000
--- a/StgSharp.Common/MVVM/View/ViewBase.cs
+++ /dev/null
@@ -1,199 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ViewBase"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Graphics;
-using StgSharp.Mathematics;
-using StgSharp.MVVM.ViewModel;
-using StgSharp.Timing;
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Numerics;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography;
-using System.Text;
-using System.Threading;
-
-namespace StgSharp.MVVM
-{
- ///
- /// ViewBase is the base type for all view types, providing context binding and control
- /// element binding. A complete view should contain one complete , , and , which provide
- /// layout descriptions of control elements, user responses, and rendering implementations in
- /// the view. Data between instances of , , and is shared through .
- ///
-
- public abstract unsafe partial class ViewBase
- {
-
- private (int x, int y, int z) unitCubeSize;
-
- private GetDataBindingEntryDelegate getDataBindingEntry;
-
- private int usedFrame;
- private IViewDesigner _design;
- private IViewRender _render;
- private IViewResponder _responder;
- private TimeSpanProvider time;
-
- private ViewPort context;
-
- private delegate bool GetDataBindingEntryDelegate(string name, out DataBindingEntry entry);
-
- public DataBindingEntry this[string name]
- {
- get
- {
- if (getDataBindingEntry(name, out DataBindingEntry entry)) {
- return entry;
- }
- if (TryGetObjectReference(name, out entry)) {
- return entry;
- }
- throw new KeyNotFoundException();
- }
- }
-
- public (int x, int y, int z) UnitCubeSize
- {
- get => unitCubeSize;
- }
-
- public bool Activated { get; internal set; }
-
- public int Height
- {
- get => context.Height;
- }
-
- public int Width
- {
- get => context.Width;
- }
-
- public IntPtr Monitor => context.Monitor;
-
- public IntPtr ViewHandle => context.ViewPortHandle;
-
- public IViewDesigner Designer
- {
- get => _design;
- protected set => _design = value;
- }
-
- public string ContextName => context.Name;
-
- public string SelfName { get; set; }
-
- public ViewPort Port
- {
- get => context;
- }
-
- internal TimeSpanProvider TimeProvider
- {
- get => time;
- }
-
- protected internal IViewRender Render
- {
- get => _render;
- set => _render = value;
- }
-
- protected IViewResponder Responder
- {
- get => _responder;
- set => _responder = value;
- }
-
- public abstract void CustomizedInitialize([NotNull]ViewModelBase viewModelBinding);
-
- ///
- /// Get the status of a certain key on the keyboard.
- ///
- ///
- ///
- ///
- ///
- /// representing if a key is pressed or released.
- ///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public KeyStatus GetKeyStatus(KeyboardKey key)
- {
- return GraphicFramework.glfwGetKey(context.ViewPortHandle, (int)key);
- }
-
- public void InternalInitialize(string name, (int, int, int) cubeSize, [NotNull]ViewModelBase viewModelBinding)
- {
- SelfName = name;
- unitCubeSize = cubeSize;
- getDataBindingEntry = viewModelBinding.TryGetObjectReference;
- context = viewModelBinding.ViewPortBinding;
- time = viewModelBinding.frameTimeProvider;
-
- CustomizedInitialize(viewModelBinding);
- }
-
- public abstract bool TryGetObjectReference(string name, out DataBindingEntry entry);
-
- public void Use()
- {
- if (usedFrame == 0)
- {
- if (!ValidateInitialization()) {
- throw new InvalidOperationException(
- "This view is not correctly initialized before rendering.");
- }
- }
- Show();
- usedFrame++;
- }
-
- public bool ValidateInitialization()
- {
- return (_design != null) &&
- (_render != null) &&
- (getDataBindingEntry != null) &&
- (_responder != null) &&
- _design.ValidateInitializing() &&
- _responder.ValidateInitializing() &&
- _render.ValidateInitializing();
- }
-
- protected abstract void Show();
-
- }
-}
\ No newline at end of file
diff --git a/StgSharp.Common/MVVM/View/ViewDesigner.cs b/StgSharp.Common/MVVM/View/ViewDesigner.cs
deleted file mode 100644
index a050d714..00000000
--- a/StgSharp.Common/MVVM/View/ViewDesigner.cs
+++ /dev/null
@@ -1,144 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ViewDesigner"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Controlling.UsrActivity;
-using StgSharp.Controls;
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-
-using StgSharp.Mathematics;
-
-using System;
-using System.Collections.Generic;
-using System.Net;
-using System.Text;
-
-namespace StgSharp.MVVM
-{
- public abstract partial class ViewBase
- {
-
- public interface IViewDesigner where TView: ViewBase
- {
-
- abstract void CustomizedInitialize();
-
- abstract void Initialize();
-
- abstract bool ValidateInitializing();
-
- }
-
- ///
- /// ViewDesigner provides descriptions of various controls in the view, binds the
- /// controls to specific user actions and behaviors, and describes the layout and
- /// interactions of each control.
- ///
- public abstract class ViewDesigner : IViewDesigner where TView: ViewBase
- {
-
- private KeyboardButtonGroup currentButtonGroup;
-
- private List _controlList;
- protected TView _binding;
-
- public ViewDesigner(TView binding)
- {
- _binding = binding;
- _controlList = new List();
- }
-
- protected TView Binding
- {
- get => _binding;
- }
-
- public CharacterLineIndexImage CreateCharacterLine(
- int length,
- char blankFilling,
- PlainGeometryMesh tittle,
- IEnumerable<(char, PlainGeometryMesh)> charList)
- {
- CharacterLineIndexImage ret = new CharacterLineIndexImage(
- length, blankFilling, tittle, charList);
- _controlList.Add(ret);
- return ret;
- }
-
- public TriggerButton CreateKeyboardButton(
- Rectangle bonding,
- TextureProvider defaultAnimation,
- bool isEnable)
- {
- TriggerButton ret = new TriggerButton();
- ret.BoundingBox = bonding;
- ret.Texture = defaultAnimation;
- if (isEnable)
- {
- ret.IsDisabled = false;
- ret.Enable();
- } else
- {
- ret.IsDisabled = true;
- ret.Disable();
- }
- currentButtonGroup.AddButton(ret);
- return ret;
- }
-
- public TButtonGroup CreateKeyboardButtonGroup(
- IClickTrigger leftBidning,
- IClickTrigger rightBinding,
- IClickTrigger upBinding,
- IClickTrigger downBinding,
- IClickTrigger confirmBinding)
- where TButtonGroup: KeyboardButtonGroup, new()
- {
- TButtonGroup ret = new TButtonGroup();
- _controlList.Add(ret);
- currentButtonGroup = ret;
- _binding.Responder[leftBidning] = ret.MoveLeft;
- _binding.Responder[rightBinding] = ret.MoveRight;
- _binding.Responder[upBinding] = ret.MoveUp;
- _binding.Responder[downBinding] = ret.MoveDown;
- _binding.Responder[confirmBinding] = ret.Confirm;
- return ret;
- }
-
- public abstract void CustomizedInitialize();
-
- public void Initialize()
- {
- CustomizedInitialize();
- }
-
- public abstract bool ValidateInitializing();
-
- }//---------------------------------- End of Class -----------------------------------------
-
- }
-}
diff --git a/StgSharp.Common/MVVM/View/ViewRender.cs b/StgSharp.Common/MVVM/View/ViewRender.cs
deleted file mode 100644
index 56fd3980..00000000
--- a/StgSharp.Common/MVVM/View/ViewRender.cs
+++ /dev/null
@@ -1,130 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ViewRender"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Graphics;
-
-using StgSharp.HighPerformance;
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace StgSharp.MVVM
-{
- public abstract partial class ViewBase
- {
-
- protected internal interface IViewRender where TView: ViewBase
- {
-
- RenderStream this[DataLabel renderName] { get; }
-
- void CustomizedInitialize();
-
- IEnumerator GetEnumerator();
-
- void Initialize();
-
- bool ValidateInitializing();
-
- }
-
- protected abstract class ViewRender : IViewRender where TView: ViewBase
- {
-
- protected ViewRender(TView binding)
- {
- _binding = binding;
- _render = new Dictionary();
- }
-
- public RenderStream this[DataLabel renderName]
- {
- get => _render.TryGetValue(renderName, out RenderStream stream) ? stream : (null!);
- protected set
- {
- if (_render.ContainsKey(renderName))
- {
- _render[renderName] = value;
- } else
- {
- _render.Add(renderName, value);
- }
- }
- }
-
- public TView Binding => _binding;
-
- protected ViewPort ContextBinding => _binding.context;
-
- protected ViewDesigner Design => (_binding.Designer as ViewDesigner)!;
-
- protected Dictionary Render
- {
- get => _render;
- }
-
- protected ViewResponder Responder => (_binding.Responder as ViewResponder)!;
-
- public T CreateRenderStream() where T: RenderStream, new()
- {
- T ret = new T();
- ret.Initialize(_binding.context, Binding.TimeProvider);
- return ret;
- }
-
- public T CreateRenderStream(ViewPort vp) where T: RenderStream, new()
- {
- T ret = new T();
- ret.Initialize(vp, Binding.TimeProvider);
- return ret;
- }
-
- public abstract void CustomizedInitialize();
-
- public IEnumerator GetEnumerator()
- {
- foreach (RenderStream item in Render.Values) {
- yield return item.BindedViewPortContext;
- }
- }
-
- public void Initialize()
- {
- CustomizedInitialize();
- }
-
- public abstract bool ValidateInitializing();
-
- #pragma warning disable CS8618
- private Dictionary _render;
- private TView _binding;
-#pragma warning restore CS8618
- }
-
- }
-}
diff --git a/StgSharp.Common/MVVM/View/ViewResponder.cs b/StgSharp.Common/MVVM/View/ViewResponder.cs
deleted file mode 100644
index b8503adb..00000000
--- a/StgSharp.Common/MVVM/View/ViewResponder.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ViewResponder"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Controlling.UsrActivity;
-using StgSharp.MVVM.ViewModel;
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp.MVVM
-{
- public partial class ViewBase
- {
-
- protected interface IViewResponder where TVIew: ViewBase
- {
-
- Action? this[IClickTrigger trigger] { get; set; }
-
- void CustomizedInitialize(Func keyRegister);
-
- void Initialize(MethodLookUpDelegate methodGetter);
-
- void ProcessUserInput();
-
- bool ValidateInitializing();
-
- }
-
- protected abstract class ViewResponder : IViewResponder where TView: ViewBase
- {
-
- private bool _isInitialized;
- private Dictionary keyCallbackIndex;
- private Dictionary nameToCallbackMap;
- private TView _binding;
-
- protected ViewResponder(TView binding)
- {
- keyCallbackIndex = new Dictionary();
- nameToCallbackMap = new Dictionary();
- _binding = binding;
- }
-
- #pragma warning disable CA1043
- public Action? this[IClickTrigger trigger]
- #pragma warning restore CA1043
- {
- get => keyCallbackIndex.TryGetValue(trigger, out Action callback) ? callback : null;
- set
- {
- if (keyCallbackIndex.TryGetValue(trigger, out Action callback))
- {
- callback += value;
- } else
- {
- keyCallbackIndex.Add(
- trigger, value ?? throw new ArgumentNullException(nameof(value)));
- }
- }
- }
-
- protected TView Binding => _binding;
-
- public abstract void CustomizedInitialize(Func keyRegister);
-
- public void Initialize(MethodLookUpDelegate methodGetter)
- {
- if (_isInitialized) {
- return;
- }
- CustomizedInitialize((trigger, name) => {
- if (!nameToCallbackMap.TryGetValue(name, out Action ret))
- {
- if (methodGetter(name, out Action lookup))
- {
- this[trigger] = lookup;
- } else
- {
- throw new InvalidOperationException(
- $"Cannot find method named {name} in binded view model");
- }
- }
- return ret;
- });
- }
-
- public void ProcessUserInput()
- {
- foreach (KeyValuePair pair in keyCallbackIndex)
- {
- if (GraphicFramework.glfwGetKey(_binding.ViewHandle,
- pair.Key.TargetKeyOrButtonID) == pair.Key.TriggeredStatus) {
- pair.Value();
- }
- }
- }
-
- public abstract bool ValidateInitializing();
-
- }
-
- }
-}
diff --git a/StgSharp.Common/MVVM/ViewModel/DataBinding.cs b/StgSharp.Common/MVVM/ViewModel/DataBinding.cs
deleted file mode 100644
index 2e50f19f..00000000
--- a/StgSharp.Common/MVVM/ViewModel/DataBinding.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="DataBinding"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.HighPerformance;
-
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-namespace StgSharp.MVVM.ViewModel
-{
-#nullable enable
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public delegate ref object BindingDataGetter();
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public delegate void BindingDataSetter(ref object value);
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- public delegate bool MethodLookUpDelegate(string name, out Action callback);
-
- public abstract partial class ViewModelBase
- {
-
- public bool MethodLookup(string methodName, out Action callback)
- {
- MethodInfo method = GetType().GetMethod(methodName)!;
- if (method == null)
- {
- callback = null!;
- return false;
- }
- try
- {
- callback = (Action)Delegate.CreateDelegate(typeof(Action), this, methodName);
- return true;
- }
- catch (MissingMethodException)
- {
- callback = null!;
- return false;
- }
- catch (MethodAccessException)
- {
- callback = null!;
- return false;
- }
- catch (Exception)
- {
- throw;
- }
- }
-
- }
-
- [StructLayout(LayoutKind.Explicit)]
- public unsafe struct DataBindingEntry
- {
-
- [FieldOffset(0)] private IntPtr getterPtr;
- [FieldOffset(8)] private IntPtr setterPtr;
- [FieldOffset(0)] private M128 _mask;
-
- public DataBindingEntry(
- [NotNull] BindingDataGetter gettingCallback,
- [NotNull] BindingDataSetter settingCallback)
- {
- getterPtr = Marshal.GetFunctionPointerForDelegate(gettingCallback);
- setterPtr = Marshal.GetFunctionPointerForDelegate(settingCallback);
- }
-
- public static DataBindingEntry NullBinding
- {
- get => new DataBindingEntry();
- }
-
- public bool Equals(DataBindingEntry other)
- {
- return (_mask == other._mask);
- }
-
- public override bool Equals(object obj)
- {
- if (obj is not DataBindingEntry other) {
- return false;
- }
- return Equals(other);
- }
-
- public bool ExactEqual(DataBindingEntry other)
- {
- return (getterPtr == other.getterPtr) && (setterPtr == other.setterPtr);
- }
-
- public override int GetHashCode()
- {
- return _mask.GetHashCode();
- }
-
- public ref object GetValue()
- {
- return ref ((delegate* unmanaged[Cdecl][)getterPtr)();
- }
-
- public void SetValue(ref object value)
- {
- ((delegate* unmanaged[Cdecl]][)setterPtr)(ref value);
- }
-
- public static bool operator !=(DataBindingEntry left, DataBindingEntry right)
- {
- return left._mask != right._mask;
- }
-
- public static bool operator ==(DataBindingEntry left, DataBindingEntry right)
- {
- return left._mask == right._mask;
- }
-
- }
-
-#nullable restore
-}
diff --git a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs
deleted file mode 100644
index 37107910..00000000
--- a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ShowViewPort"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Controls;
-using StgSharp.Graphics;
-using StgSharp.MVVM;
-using StgSharp.Threading;
-using StgSharp.Timing;
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading;
-
-namespace StgSharp.MVVM.ViewModel
-{
- public abstract partial class ViewModelBase
- {
-
- private volatile bool _closed = true;
- private ViewBase _nextView, _currentView;
-
- protected ViewBase CurrentView
- {
- get => _currentView;
- set => _nextView = value;
- }
-
- ///
- /// CustomizeInit this form and render it on screen, and respond with operation
- ///
- public unsafe void UseViewModel(
- string viewEntryName
- )
- {
- CustomizeInitialize();
- UseViewInNextFrame(viewEntryName);
- fpsCountProvider.TimeSpanRefreshed += CountFps;
- fpsCountProvider.MissTimeSpanRefreshed += CountFps;
- if (_nextView != _currentView) {
- _ = Interlocked.Exchange(ref _currentView, _nextView);
- }
- Thread renderThread = new Thread((
- token
- ) => {
- try
- {
- ProcessFrameWithoutEvent();
- }
- catch (Exception ex)
- {
- DefaultLog.InternalWriteLog(
- $"Critical error when rendering:\n" + $"{ex}", LogType.Error);
- ShouldClose = true;
- throw;
- }
- });
- renderThread.Start();
- /**/
- while (_closed)
- {
- if (_nextView != _currentView) {
- _ = Interlocked.Exchange(ref _currentView, _nextView);
- }
- GraphicFramework.glfwPollEvents();
- frameTimeProvider.WaitNextSpan();
- _closed = !ShouldClose;
- }
- /**/
- renderThread.Join();
- fpsCountProvider.Dispose();
- frameTimeProvider.Dispose();
- }
-
- protected void UseViewInNextFrame(
- string name
- )
- {
- if (!allView.TryGetValue(name, out ViewBase v)) {
- throw new KeyNotFoundException(
- $"{$"Cannot find View named {name} "}{$"in current View Model of {GetType().FullName}"}");
- }
- CurrentView = v;
- }
-
- private void CountFps(
- object sender,
- EventArgs e
- )
- {
- Interlocked.Exchange(ref _frameSpeed, _frameCount);
- Interlocked.Exchange(ref _frameCount, 0);
- }
-
- private unsafe void PrivateShow()
- {
- if (0 == GraphicFramework.glfwWindowShouldClose(this.viewPortDisplay.ViewPortHandle))
- {
- CurrentView.Use();
- RenderStream.PollEvents();
- }
- }
-
- private void ProcessFrameWithoutEvent()
- {
- frameTimeProvider.TimeSpanRefreshed += (
- _,
- _
- ) => { };
- while (_closed)
- {
- foreach (ViewPort context in CurrentView.Render) {
- context.FlushSize();
- }
- CurrentView.Use();
- frameTimeProvider.WaitNextSpan();
- Interlocked.Add(ref _frameCount, 1);
- }
- }
-
- }
-}
diff --git a/StgSharp.Common/MVVM/ViewModel/ViewManage.cs b/StgSharp.Common/MVVM/ViewModel/ViewManage.cs
deleted file mode 100644
index 802368a9..00000000
--- a/StgSharp.Common/MVVM/ViewModel/ViewManage.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ViewManage"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Graphics;
-using StgSharp.Graphics.OpenGL;
-using StgSharp.MVVM;
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.Design;
-using System.Text;
-
-namespace StgSharp.MVVM.ViewModel
-{
- public partial class ViewModelBase
- {
-
- private Dictionary allView;
-
- public T CreateAndBindView(string name, (int x, int y, int z) unitCubeSize) where T: ViewBase, new()
- {
- T ret = new T();
- ret.SelfName = name;
- ret.InternalInitialize(name, unitCubeSize, this);
- allView.Add(name, ret);
- return ret;
- }
-
- }
-}
diff --git a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs
deleted file mode 100644
index e80cf115..00000000
--- a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs
+++ /dev/null
@@ -1,271 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ViewModel"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Common.Timing;
-using StgSharp.Controlling.UsrActivity;
-using StgSharp.Graphics;
-using StgSharp.Graphics.OpenGL;
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-using StgSharp.MVVM;
-using StgSharp.MVVM.ViewModel;
-using StgSharp.Threading;
-using StgSharp.Timing;
-
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Numerics;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading;
-
-namespace StgSharp.MVVM.ViewModel
-{
- public abstract partial class ViewModelBase
- {
-
- private FrameBufferSizeHandler _resizeCallback;
- private int _frameCount;
- private int _frameSpeed;
- private ViewPort viewPortDisplay;
-
- // internal IntPtr monitor;
-
- internal TimeSpanProvider fpsCountProvider;
- internal TimeSpanProvider frameTimeProvider;
- internal Vector4 backgroundColor;
-
- protected ViewModelBase(
- int frameSpeed
- )
- {
- viewPortDisplay = new ViewPort();
- allView = [];
- fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider);
- _frameSpeed = 0;
- _frameCount = 0;
- long frameLength = (FrameSpeed > 0) ? (1000L * 1000L / FrameSpeed) : 0;
- frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider);
- SetFrameSizeCallback(DefaultFrameResizeCallback);
- }
-
- protected ViewModelBase(
- double frameLength
- )
- {
- viewPortDisplay = new ViewPort();
- allView = [];
- fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, frameLength), TimeSpanProvider.DefaultProvider);
- _frameSpeed = 0;
- _frameCount = 0;
- long _frameLength = (FrameSpeed > 0) ? ((long)(1000 * frameLength)) : 0;
- frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, frameLength), TimeSpanProvider.DefaultProvider);
- SetFrameSizeCallback(DefaultFrameResizeCallback);
- }
-
- public ViewModelBase(
- ViewPort vBinding,
- int frameSpeed
- )
- {
- viewPortDisplay = vBinding;
- allView = [];
- fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0), TimeSpanProvider.DefaultProvider);
- _frameSpeed = 0;
- _frameCount = 0;
- long frameLength = (frameSpeed > 0) ? (1000L * 1000L / frameSpeed) : 0;
- frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0 / frameSpeed), TimeSpanProvider.DefaultProvider);
- SetFrameSizeCallback(DefaultFrameResizeCallback);
- }
-
- public ViewModelBase(
- ViewPort vBinding,
- double frameLength
- )
- {
- viewPortDisplay = vBinding;
- allView = [];
- fpsCountProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, 1.0), TimeSpanProvider.DefaultProvider);
- _frameSpeed = 0;
- _frameCount = 0;
- long _frameLength = (FrameSpeed > 0) ? ((long)(1000 * frameLength)) : 0;
- frameTimeProvider = new TimeSpanProvider(TimeSequence.CreateLinear(double.PositiveInfinity, frameLength), TimeSpanProvider.DefaultProvider);
- SetFrameSizeCallback(DefaultFrameResizeCallback);
- }
-
- public DataBindingEntry this[
- string name
- ]
- {
- get
- {
- if (this.TryGetObjectReference(name, out DataBindingEntry entry)) {
- return entry;
- }
- throw new KeyNotFoundException();
- }
- }
-
- public bool ShouldClose
- {
- get => GraphicFramework.glfwWindowShouldClose(viewPortDisplay.ViewPortHandle) != 0;
- set => GraphicFramework.glfwSetWindowShouldClose(
- viewPortDisplay.ViewPortHandle, value ? 1 : 0);
- }
-
- public int CurrentFrameCount => frameTimeProvider.CurrentSpan;
-
- public int FrameSpeed => _frameSpeed;
-
- ///
- /// Height of this form, represent in
- ///
- public int Height
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => viewPortDisplay.Height;
- }
-
- ///
- /// Width of this form, represent in
- ///
- public int Width
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => viewPortDisplay.Width;
- }
-
- public unsafe IntPtr WindowID
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => viewPortDisplay.ViewPortHandle;
- }
-
- public string Name
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => viewPortDisplay.Name;
- }
-
- ///
- /// Width of this form, represent in
- ///
- public Vec2 Size
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => new Vec2(Width, Height);
- }
-
- public ViewPort ViewPortBinding
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => viewPortDisplay;
- }
-
- public abstract void CustomizeInitialize();
-
- ///
- /// Set the Size limit of current form
- ///
- ///
- /// Minimum Size of current form. In form of a of (width,height)
- ///
- ///
- /// Maximum Size of current form. In form of a of (width,height)
- ///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public void SetSizeLimit(
- Vec2 minSize,
- Vec2 maxSize
- )
- {
- ThreadHelper.MainThreadAssert();
- GraphicFramework.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortHandle,
- (int)minSize.X, (int)minSize.Y, (int)maxSize.X,
- (int)maxSize.Y);
- }
-
- ///
- /// Set the Size limit of current form
- ///
- ///
- /// Minimum width of current form
- ///
- ///
- /// Minimum height of current form
- ///
- ///
- /// Maximum width of current form
- ///
- ///
- /// Maximum height of current form
- ///
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public void SetSizeLimit(
- int minWidth,
- int minHeight,
- int maxWidth,
- int maxHeight
- )
- {
- ThreadHelper.MainThreadAssert();
- GraphicFramework.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortHandle, minWidth,
- minHeight, maxWidth, maxHeight);
- }
-
- public abstract bool TryGetObjectReference(
- string name,
- out DataBindingEntry entry
- );
-
- protected unsafe void SetFrameSizeCallback(
- FrameBufferSizeHandler callback
- )
- {
- _resizeCallback = callback;
- IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate(callback);
- _ = GraphicFramework.glfwSetFrameBufferSizeCallback(
- viewPortDisplay.ViewPortHandle, (delegate* unmanaged[Cdecl])handlerPtr);
- }
-
- private void DefaultFrameResizeCallback(
- IntPtr windowHandle,
- int width,
- int height
- )
- {
- ViewPort.GetExistedViewPort(windowHandle, out ViewPort vp);
- vp.RequestFlushSizeInNextFrame(width, height);
-
- // Console.WriteLine($"{width} {height}");
- }
-
- }
-}
diff --git a/StgSharp.Common/MVVM/ViewPort.cs b/StgSharp.Common/MVVM/ViewPort.cs
deleted file mode 100644
index db6ef77c..00000000
--- a/StgSharp.Common/MVVM/ViewPort.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ViewPort"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Concurrent;
-using System.Diagnostics;
-using System.Diagnostics.Contracts;
-using System.Runtime.CompilerServices;
-using System.Text;
-using System.Threading;
-
-namespace StgSharp.MVVM
-{
- public class ViewPort
- {
-
- private static readonly ConcurrentDictionary _handleToViewPortIndex = [];
- private int _width, _height, _newWidth, _newHeight;
-
- internal ViewPort()
- {
- _newHeight = 600;
- _newWidth = 800;
- FlushSize();
- Name = new StackFrame(1, false).
- GetMethod()!.DeclaringType!.Name;
- Monitor = IntPtr.Zero;
- ViewPortHandle = GraphicFramework.glfwCreateWindow(
- _newWidth, _newHeight, Encoding.UTF8.GetBytes(Name), Monitor, IntPtr.Zero);
- if (ViewPortHandle == IntPtr.Zero) {
- throw new InvalidOperationException("Unable to create viewport handle.");
- }
- _ = _handleToViewPortIndex.TryAdd(ViewPortHandle, this);
- }
-
- public ViewPort(int width, int height, string name, IntPtr monitor)
- {
- _newWidth = width;
- _newHeight = height;
- FlushSize();
- Name = name;
- Monitor = monitor;
- ViewPortHandle = GraphicFramework.glfwCreateWindow(
- _newWidth, _newHeight, Encoding.UTF8.GetBytes(Name), Monitor, IntPtr.Zero);
- if (ViewPortHandle == IntPtr.Zero) {
- throw new InvalidOperationException("Unable to create viewport handle.");
- }
- _ = _handleToViewPortIndex.TryAdd(ViewPortHandle, this);
- }
-
- public unsafe int Height
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => _height;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- internal set => Interlocked.Exchange(ref _height, value);
- }
-
- public unsafe int Width
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get => _width;
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- internal set => Interlocked.Exchange(ref _width, value);
- }
-
- public IntPtr GraphicHandle { get; internal set; }
-
- public IntPtr Monitor { get; internal set; }
-
- public IntPtr ViewPortHandle { get; private set; }
-
- public string Name { get; set; }
-
- // [BlueprintNodeExecution]
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static bool GetExistedViewPort(IntPtr handle, out ViewPort port)
- {
- return _handleToViewPortIndex.TryGetValue(handle, out port);
- }
-
- internal unsafe void FlushSize()
- {
- _ = Interlocked.Exchange(ref _height, _newHeight);
- _ = Interlocked.Exchange(ref _width, _newWidth);
- }
-
- internal void RequestFlushSizeInNextFrame(int width, int height)
- {
- _ = Interlocked.Exchange(ref _newHeight, height);
- _ = Interlocked .Exchange(ref _newWidth, width);
- }
-
- }
-}
diff --git a/StgSharp.Common/State/ISimpleStateMachine.cs b/StgSharp.Common/State/ISimpleStateMachine.cs
deleted file mode 100644
index 07c11f52..00000000
--- a/StgSharp.Common/State/ISimpleStateMachine.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="ISimpleStateMachine"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Numerics;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp.State
-{
- public interface ISimpleStateMachine
- where TStateNode : SimpleStateMachineNode
- where TStateLabel : unmanaged, IEquatable
- where TStateContext : StateContext
- {
-
- TStateNode this[
- TStateLabel label
- ] { get; }
-
- ref readonly TStateNode GetCurrentStateNode();
-
- void Reset();
-
- bool TryMoveNext(
- TStateContext ctx
- );
-
- }
-}
diff --git a/StgSharp.Common/State/SimpleStateMachineNode.cs b/StgSharp.Common/State/SimpleStateMachineNode.cs
deleted file mode 100644
index 5f58ff8e..00000000
--- a/StgSharp.Common/State/SimpleStateMachineNode.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="SimpleStateMachineNode"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Numerics;
-using System.Runtime.InteropServices;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp.State
-{
- public abstract class SimpleStateMachineNode
- where TSelf : SimpleStateMachineNode
- where TLabel : unmanaged, IEquatable
- where TStateContext : StateContext
- {
-
- private readonly List _jumpTable = [];
-
- public ReadOnlySpan AvailableNodes => CollectionsMarshal.AsSpan(_jumpTable);
-
- public abstract bool IsValidateFrom(
- TSelf former,
- TStateContext context
- );
-
- public abstract bool TryTransaction(
- ReadOnlySpan nodeSpan,
- TStateContext context,
- out TLabel label
- );
-
- }
-}
diff --git a/StgSharp.Common/State/StateContext.cs b/StgSharp.Common/State/StateContext.cs
deleted file mode 100644
index 27d4138e..00000000
--- a/StgSharp.Common/State/StateContext.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="StateContext.cs"
-// Project: StgSharp
-// AuthorGroup: Nitload Space
-// Copyright (c) Nitload Space. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the “Software”), to deal in the Software without restriction,
-// including without limitation the rights to use, copy, modify, merge,
-// publish, distribute, sublicense, and/or sell copies of the Software,
-// and to permit persons to whom the Software is furnished to do so,
-// subject to the following conditions:
-//
-// The above copyright notice and
-// this permission notice shall be included in all copies
-// or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED “AS IS”,
-// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
-// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH
-// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp.State
-{
- public abstract class StateContext { }
-}
diff --git a/StgSharp.Common/Stg/Bullet.cs b/StgSharp.Common/Stg/Bullet.cs
deleted file mode 100644
index f6589363..00000000
--- a/StgSharp.Common/Stg/Bullet.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="Bullet"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Geometries;
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-
-using System;
-
-namespace StgSharp.Gaming
-{
- public abstract class Bullet : IInstancing, IPlainEntity
- {
-
- protected Bullet(
- PlainInstancingBuffer buffer,
- GeometryMotion movement,
- Vec2 beginPosition,
- float angle,
- float scale)
- {
- ArgumentNullException.ThrowIfNull(buffer);
- GlobalBuffer = buffer;
- BufferId = buffer.CreateInstanceID();
- ((IInstancing)this).Scale = scale;
- ((IInstancing)this).Coord = new Vec3(beginPosition, 0);
- ((IInstancing)this).Rotation = angle;
- Motion = movement;
- }
-
- public GeometryMotion Motion { get; set; }
-
- public IInstancingBuffer GlobalBuffer { get; set; }
-
- public int BufferId { get; set; }
-
- public Vec2 CenterPosition { get; set; }
-
- public bool CollideWith(IPlainEntity entity)
- {
- throw new System.NotImplementedException();
- }
-
- Vec3 IInstancing.CenterPositionGlobal
- {
- get => throw new NotImplementedException();
- set => throw new NotImplementedException();
- }
-
- }
-}
\ No newline at end of file
diff --git a/StgSharp.Common/Stg/CollisionTexture.cs b/StgSharp.Common/Stg/CollisionTexture.cs
deleted file mode 100644
index 89331ced..00000000
--- a/StgSharp.Common/Stg/CollisionTexture.cs
+++ /dev/null
@@ -1,181 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="CollisionTexture"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Geometries;
-using StgSharp.Graphics;
-using StgSharp.Graphics.OpenGL;
-using StgSharp.Internal;
-
-using StgSharp.Mathematics;
-using StgSharp.Mathematics.Graphics;
-using StgSharp.MVVM;
-
-using System;
-using System.Buffers;
-using System.Collections.Generic;
-using System.Linq;
-using System.Resources;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp.Stg
-{
- public interface IOneDimensionalCollisionTexture2D
- {
-
- public void Init(
- Radius angleStride,
- string name
- );
-
- }
-
- public sealed class OneDimensionalCollisionTexture2D_GL : glRender, IOneDimensionalCollisionTexture2D
- {
-
- private float[] textureOutput;
- private ElementBuffer ebo;
- private FrameBuffer fbo;
- private RenderBuffer rbo;
-
- private ShaderProgram generatingShader;
-
- private TextureGL t;
-
- private VertexArray vao;
- private VertexBuffer vbo;
-
- public OneDimensionalCollisionTexture2D_GL() { }
-
- public override bool IsContextSharable => false;
-
- public void GenerateCollisionTexture(
- IEnumerable bufferEnumeration
- )
- {
- fbo.Bind(0);
- GL.ClearColor(0, 0, 0, 1);
- GL.Clear(MaskBufferBit.DEPTH | MaskBufferBit.COLOR);
- generatingShader.Use();
- vao.Bind(0);
-
- foreach (IInstancingBuffer item in bufferEnumeration)
- {
- IGeometry g = item.TypicalShape;
-
- if (g is not PlainGeometry) {
- throw new InvalidOperationException(
- "The current particle buffer contains non-planar geometry,");
- }
-
- ebo.Bind(0);
- ebo.SetValue(0, g.VertexIndices, BufferUsage.StreamDraw);
-
- vbo.WriteVectorData(0, item.CoordAndRotationSpan, BufferUsage.StreamDraw);
- vao.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0);
- vao.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float),
- 3 * sizeof(float));
-
- vbo.WriteScalerData(2, item.ScalingSpan, BufferUsage.StreamDraw);
- vao.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0);
-
- vbo.WriteVectorData(1, g.VertexStream, BufferUsage.StreamDraw);
- vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0);
-
- GL.DrawElementsInstanced(GeometryType.TRIANGLES, (g.VertexIndices.Length) / 3,
- TypeCode.UInt32, IntPtr.Zero, item.ScalingSpan.Length);
- }
-
- t.Bind2D(0);
- GL.GetTextureImage(Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor,
- PixelChannelLayout.Float, textureOutput);
- VertexArray.BindNull();
- }
-
- public void Init(
- Radius angleStride,
- string name
- )
- {
- primeArgs = new ViewPort(1, (int)((new Radius(Scalar.Pi)) / angleStride), name,
- IntPtr.Zero);
-
- PlatformSpecifiedInitialize();
- CustomizeInit();
- }
-
- #pragma warning disable CS8618
-
- protected override void CustomizeDeinit()
- {
- throw new NotImplementedException();
- }
-
- protected override void CustomizeInit()
- {
- generatingShader = CreateShaderProgram();
-
- Shader vertexShader = CreateShaderSegment(ShaderType.Vertex, 1);
- Shader fragmentShader = CreateShaderSegment(ShaderType.Fragment, 1);
-
- vertexShader.Compile(0, BuiltInShader.CollisionTextureVertexShader);
- fragmentShader.Compile(0, BuiltInShader.CollisionTextureFragmentShader);
- vertexShader.AttachTo(0, generatingShader);
- fragmentShader.AttachTo(0, generatingShader);
-
- generatingShader.Link();
- generatingShader.Use();
-
- vbo = CreateVertexBuffer(3);
- vao = CreateVertexArray(1);
- ebo = CreateElementBuffer(1);
-
-
- fbo = CreateFrameBuffer(1);
- rbo = CreateRenderBuffer(1);
- GL.SetRenderBufferStorage(RenderBufferInternalFormat.Depth24_Stencil8, this.Size);
-
-
- t = CreateTexture(1);
- t.Bind2D(0);
- GL.TextureImage2d(Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel,
- Width, Height, ImageChannel.WithAlphaChannel,
- PixelChannelLayout.Byte, Array.Empty());
-
- t.Set2dWrapProperty(0, TextureWrap.Repeat, TextureWrap.Repeat);
- t.Set2dFilterProperty(0, TextureFilter.Nearest, TextureFilter.Nearest);
-
- GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0),
- Texture2DTarget.Texture2D, t[0], 0);
-
- GL.CombineFrameBufferRenderBuffer(FrameBufferAttachment.Color, rbo[0]);
-
- textureOutput = new float[this.Width];
- }
-
- }
-}
diff --git a/StgSharp.Common/Stg/TimeLine.cs b/StgSharp.Common/Stg/TimeLine.cs
deleted file mode 100644
index a9ab7171..00000000
--- a/StgSharp.Common/Stg/TimeLine.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="TimeLine"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StgSharp.Stg
-{
- public class TimeLine { }
-}
diff --git a/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs b/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs
deleted file mode 100644
index ae8d2da9..00000000
--- a/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="TouhouBuilder"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Graphics;
-using StgSharp.Touhou;
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StgSharp.Stg.Touhou
-{
- public static class TouhouBuilder
- {
- /*
- public static ViewBase BuildTouhouWorld()
- {
-
- TouhouForm form = new TouhouForm();
-
-
- return form;
- }
- /**/
-
- }
-}
diff --git a/StgSharp.Common/Stg/Touhou/TouhouWindow.cs b/StgSharp.Common/Stg/Touhou/TouhouWindow.cs
deleted file mode 100644
index 0e79ee3c..00000000
--- a/StgSharp.Common/Stg/Touhou/TouhouWindow.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="TouhouWindow"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.Graphics;
-using StgSharp.MVVM;
-using StgSharp.MVVM.ViewModel;
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StgSharp.Touhou
-{
- public abstract class TouhouWindowMain : ViewModelBase
- {
-
- protected TouhouWindowMain(ViewPort vp) : base(vp, 60) { }
-
- }
-}
diff --git a/StgSharp.Common/Stg/Touhou/View/OpenningView.cs b/StgSharp.Common/Stg/Touhou/View/OpenningView.cs
deleted file mode 100644
index 6a57d98c..00000000
--- a/StgSharp.Common/Stg/Touhou/View/OpenningView.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-//-----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-// file="OpenningView"
-// Project: StgSharp
-// AuthorGroup: Nitload
-// Copyright (c) Nitload. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// -----------------------------------------------------------------------
-// -----------------------------------------------------------------------
-using StgSharp.MVVM;
-using StgSharp.MVVM.ViewModel;
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StgSharp.Stg.Touhou
-{
- public abstract class OpenningView : ViewBase
- {
-
- public override void CustomizedInitialize(ViewModelBase viewModelBinding)
- {
- throw new NotImplementedException();
- }
-
- }
-}
diff --git a/StgSharp.Common/StgSharp.Common.csproj b/StgSharp.Common/StgSharp.Common.csproj
index 2689047c..df68a9c5 100644
--- a/StgSharp.Common/StgSharp.Common.csproj
+++ b/StgSharp.Common/StgSharp.Common.csproj
@@ -1,153 +1,26 @@
-
- net8.0
- True
- Preview
- True
- True
- x64;ARM64
- False
- True
- MIT
- True
- preview-all
- Library
- enable
- Debug;Release;PerformanceDebug
-
+
+ Library
+ true
+
-
- True
-
+
+
+ false
+ true
+ TargetFramework
+
+
-
- True
-
+
+
+
-
- False
- portable
- 1701;1702;0649;1591;0169
- False
-
+
+
+
+
+
-
- False
- portable
- 1701;1702;0649;1591;0169
- False
-
-
-
- True
- embedded
- 1701;1702;0649;1591;0169
- False
-
-
-
- True
- embedded
- 1701;1702;0649;1591;0169
- False
-
-
-
- none
- 1701;1702;0649;1591;0169
- False
- True
-
-
-
- none
- 1701;1702;0649;1591;0169
- False
- True
-
-
-
- none
- 1701;1702;0649;1591;0169
- False
- True
-
-
-
- none
- 1701;1702;0649;1591;0169
- False
- True
-
-
-
- true
- true
- true
-
-
-
- WINDOWS
-
-
- OSX
-
-
- LINUX
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Always
-
-
-
-
-
-
-
-
- $(ColiisionTextureVertexShader)
- $(ColiisionTextureFragmentShader)
- False
- send
- https://github.com/Nitload-NSI/StgSharp
- https://github.com/Nitload-NSI/StgSharp.git
-
-
-
- $(MSBuildProjectDirectory)\..\
-
-
-
- False
-
-
-
- False
-
-
-
-
-
-
-
-
+]
\ No newline at end of file
diff --git a/StgSharp.Graphics/StgSharp.Graphics.csproj b/StgSharp.Graphics/StgSharp.Graphics.csproj
index 42df950d..411e8adc 100644
--- a/StgSharp.Graphics/StgSharp.Graphics.csproj
+++ b/StgSharp.Graphics/StgSharp.Graphics.csproj
@@ -1,30 +1,5 @@
-
- net8.0
- enable
- enable
- preview
- True
-
-
-
- none
-
-
-
-
-
-
-
- none
-
-
-
-
-
-
-
diff --git a/StgSharp.Mathematics/StgSharp.Mathematics.csproj b/StgSharp.Mathematics/StgSharp.Mathematics.csproj
index 3c81b0d0..ebd0bd33 100644
--- a/StgSharp.Mathematics/StgSharp.Mathematics.csproj
+++ b/StgSharp.Mathematics/StgSharp.Mathematics.csproj
@@ -1,15 +1,5 @@
-
- net8.0
- enable
- enable
- Preview
- True
- x64;ARM64
- Debug;Release;PerformanceDebug
-
-
@@ -19,20 +9,4 @@
-
- true
- true
- true
-
-
-
- WINDOWS
-
-
- OSX
-
-
- LINUX
-
-
diff --git a/StgSharp.Model/StgSharp.Model.csproj b/StgSharp.Model/StgSharp.Model.csproj
index 8db36cfe..1349cdc0 100644
--- a/StgSharp.Model/StgSharp.Model.csproj
+++ b/StgSharp.Model/StgSharp.Model.csproj
@@ -1,18 +1,5 @@
-
- net8.0
- enable
- preview
- x64
- True
- MIT
- True
- False
- True
- Debug;Release;PerformanceDebug
-
-
diff --git a/StgSharp.Native/StgSharp.Native.vcxproj b/StgSharp.Native/StgSharp.Native.vcxproj
index 94b69882..136aba8a 100644
--- a/StgSharp.Native/StgSharp.Native.vcxproj
+++ b/StgSharp.Native/StgSharp.Native.vcxproj
@@ -1,19 +1,37 @@
+
+
+
Debug
x64
-
- PerformanceDebug
- x64
+
+ Debug
+ ARM64
Release
x64
+
+ Release
+ ARM64
+
+
+ PerformanceDebug
+ x64
+
+
+ PerformanceDebug
+ ARM64
+
+
+
+
17.0
Win32Proj
@@ -23,21 +41,27 @@
StgSharp.Native
-
+
+
+
+
+
DynamicLibrary
true
Unicode
false
v143
-
+
+
DynamicLibrary
false
true
Unicode
v143
-
+
+
DynamicLibrary
false
true
@@ -49,111 +73,104 @@
-
-
-
-
-
-
-
+
+
-
- $(SolutionDir)build
+
+
+
+
+
+ <_ArchTag Condition="'$(Platform)'=='x64'">x64
+ <_ArchTag Condition="'$(Platform)'=='ARM64'">arm64
+
+ $(SolutionDir)build\win-$(_ArchTag)\
+ $(SolutionDir)obj\$(ProjectName)\$(Configuration)\$(Platform)\
+
+
true
false
-
- $(SolutionDir)build
+
false
true
false
-
- $(SolutionDir)build
- false
- true
- false
-
-
+
+
+
+
Level3
true
- _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
Default
stdc11
- Disabled
- true
- All
- true
true
Speed
$(ProjectDir)lib;$(ProjectDir)sn-head;%(AdditionalIncludeDirectories)
- Console
- true
+
+ Windows
opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
+
+
+
+
+ _DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ Disabled
+ true
+ All
+ true
+
+
+ true
+
true
-
+
+
- Level3
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- Speed
All
- Default
- stdc11
CompileAsC
- true
- $(ProjectDir)lib;$(ProjectDir)sn-head;%(AdditionalIncludeDirectories)
+
+
+ true
+ true
+ false
+ LinkVerbose
+ UseLinkTimeCodeGeneration
+
+
+
+
+
AnySuitable
-
- Console
- true
- true
- false
- opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
- LinkVerbose
- UseLinkTimeCodeGeneration
-
-
-
-
- Level3
- true
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
- Speed
- All
- Default
- stdc11
- CompileAsC
- true
- $(ProjectDir)lib;$(ProjectDir)sn-head;%(AdditionalIncludeDirectories)
-
-
- Console
- true
- true
- false
- opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)
- LinkVerbose
- UseLinkTimeCodeGeneration
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -163,9 +180,7 @@
-
- CCode
-
+
@@ -175,6 +190,9 @@
+
+
+
@@ -183,17 +201,14 @@
-
+
+
-
+
-
-
-
-
diff --git a/StgSharp.Native/StgSharp.Native.vcxproj.filters b/StgSharp.Native/StgSharp.Native.vcxproj.filters
index cb29bef4..5325cbd2 100644
--- a/StgSharp.Native/StgSharp.Native.vcxproj.filters
+++ b/StgSharp.Native/StgSharp.Native.vcxproj.filters
@@ -89,7 +89,7 @@
头文件
-
+
头文件
@@ -104,12 +104,15 @@
头文件
-
+
头文件
头文件
+
+ 头文件
+
diff --git a/StgSharp.Native/sn-head/sn_internal.h b/StgSharp.Native/sn-head/sn_internal.h
index 1f52a0a8..cb1b9df0 100644
--- a/StgSharp.Native/sn-head/sn_internal.h
+++ b/StgSharp.Native/sn-head/sn_internal.h
@@ -4,6 +4,8 @@
#include
+#define UNSAFE_AS(type, expr) *(type *)&(expr)
+
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS 1
#define WIN32_LEAN_AND_MEAN
diff --git a/StgSharp.Native/sn-head/sn_intrincontext.x86.h b/StgSharp.Native/sn-head/sn_intrinsic.context.x86.h
similarity index 78%
rename from StgSharp.Native/sn-head/sn_intrincontext.x86.h
rename to StgSharp.Native/sn-head/sn_intrinsic.context.x86.h
index 0230ce68..1d400287 100644
--- a/StgSharp.Native/sn-head/sn_intrincontext.x86.h
+++ b/StgSharp.Native/sn-head/sn_intrinsic.context.x86.h
@@ -1,232 +1,234 @@
-#include "sn_target.h"
-
-#if SN_IS_ARCH(SN_ARCH_X86_64)
-
-#include "sn_intrinsic.h"
-
-// -----------------------------------------------------------------------------
-// SIMDID layout helpers (see SIMDID.x86.md)
-// bits [3..0] : Root ISA
-// bits [7..4] : Manufacture (ISA-specific)
-// bits [15..8] : MainLevel (monotonic capability)
-// bits [31..16]: AVX512 Feature
-// bits [39..32]: AMX Feature
-// bits [47..40]: AVX Feature
-// bits [55..48]: AVX10 Feature
-// bits [63..56]: uArchHi / Policy (optional)
-// -----------------------------------------------------------------------------
-#define SIMDID_SHIFT_ROOT 0
-#define SIMDID_SHIFT_MANU 4
-#define SIMDID_SHIFT_MAIN 8
-#define SIMDID_SHIFT_AVX512 16
-#define SIMDID_SHIFT_AMX 32
-#define SIMDID_SHIFT_AVX 40
-#define SIMDID_SHIFT_AVX10 48
-#define SIMDID_SHIFT_UARCH 56
-
-#define SIMDID_MASK_ROOT 0xFULL
-#define SIMDID_MASK_MANU (0xFULL << SIMDID_SHIFT_MANU)
-#define SIMDID_MASK_MAIN (0xFFULL << SIMDID_SHIFT_MAIN)
-#define SIMDID_MASK_AVX512 (0xFFFFULL << SIMDID_SHIFT_AVX512)
-#define SIMDID_MASK_AMX (0xFFULL << SIMDID_SHIFT_AMX)
-#define SIMDID_MASK_AVX (0xFFULL << SIMDID_SHIFT_AVX)
-#define SIMDID_MASK_AVX10 (0xFFULL << SIMDID_SHIFT_AVX10)
-#define SIMDID_MASK_UARCH (0xFFULL << SIMDID_SHIFT_UARCH)
-
-// Root ISA (low nibble)
-#define SIMDID_ROOT_UNKNOWN 0x0
-#define SIMDID_ROOT_X86_64 0x1
-#define SIMDID_ROOT_AARCH64 0x2
-#define SIMDID_ROOT_PPC64LE 0x3
-#define SIMDID_ROOT_RISCV64 0x4
-#define SIMDID_ROOT_LOONGARCH 0x5
-
-// Manufacture (x86-64 mapping; other ISAs may reinterpret)
-#define SIMDID_MANU_UNKNOWN 0x0
-#define SIMDID_MANU_INTEL 0x1
-#define SIMDID_MANU_AMD 0x2
-#define SIMDID_MANU_VIA 0x3
-#define SIMDID_MANU_HYGON 0x4 /* 海光: Zen1-derived, separate from AMD */
-
-// MainLevel (ordinal, shared bits 8..15; not bit-flags)
-#define SIMDID_MAIN_LVL_NONE 0x00u
-#define SIMDID_MAIN_LVL_SSE 0x01u /* SSE1..SSE4.2 */
-#define SIMDID_MAIN_LVL_AVX2 0x02u
-#define SIMDID_MAIN_LVL_AVX512 0x03u
-#define SIMDID_MAIN_LVL_AMX 0x04u
-#define SIMDID_MAIN_LVL_AVX10 0x05u
-
-#ifndef SIMDID_AVX512_BASE
-#define SIMDID_AVX512_FP16 (1U << 13) /* relative bit 13 within [31..16] */
-#define SIMDID_AVX512_BF16 (1U << 12)
-#define SIMDID_AVX512_VNNI (1U << 11)
-#define SIMDID_AVX512_VBMI2 (1U << 10)
-#define SIMDID_AVX512_VBMI (1U << 9)
-#define SIMDID_AVX512_AI_RESERVED (1U << 8)
-#define SIMDID_AVX512_BASE (1U << 4)
-#define SIMDID_AVX512_IMPL_SHIFT 6
-#define SIMDID_AVX512_IMPL_MASK (0x3U << SIMDID_AVX512_IMPL_SHIFT)
-#define SIMDID_AVX512_IMPL_UNKNOWN (0x0U << SIMDID_AVX512_IMPL_SHIFT)
-#define SIMDID_AVX512_IMPL_DUAL (0x1U << SIMDID_AVX512_IMPL_SHIFT)
-#define SIMDID_AVX512_IMPL_NATIVE (0x2U << SIMDID_AVX512_IMPL_SHIFT)
-#endif
-
-#ifndef SIMDID_AVX_BASE
-#define SIMDID_AVX (1U << 0) /* relative bit 0 within [47..40] */
-#define SIMDID_AVX2 (1U << 1)
-#define SIMDID_AVX_FMA (1U << 2)
-#define SIMDID_AVX_F16C (1U << 3)
-#define SIMDID_AVX_DUAL (1U << 4) /* glued/split-lane YMM (two 128-bit units; Zen1, Hygon, VIA/Zhaoxin) */
-#endif
-
-#ifndef SIMDID_AMX_TILE
-#define SIMDID_AMX_TILE (1U << 0) /* relative bit 0 within [39..32] */
-#define SIMDID_AMX_INT8 (1U << 1)
-#define SIMDID_AMX_BF16 (1U << 2)
-#endif
-
-#ifndef SIMDID_AVX10_BASE
-#define SIMDID_AVX10 (1U << 0) /* relative bit 0 within [55..48] */
-#define SIMDID_AVX10_V1 (1U << 1)
-#define SIMDID_AVX10_V2 (1U << 2)
-#define SIMDID_AVX10_256W (1U << 3)
-#define SIMDID_AVX10_512W (1U << 4)
-#endif
-
-/* uArchHi ([63..56]) bitmask — core topology and SIMD-width execution policy */
-#ifndef SIMDID_UARCH_HYBRID_P
-/* Topology 2-bit field (bits [1..0] of uArchHi byte):
- * 00 = unknown (undetected hybrid type or pre-CPUID.1A hardware)
- * 01 = E-core (efficiency/small core in a hybrid CPU)
- * 10 = P-core (performance/big core in a hybrid CPU)
- * 11 = unified (confirmed non-hybrid; numerically strongest)
- * Higher numeric value == stronger / higher-capability topology. */
-#define SIMDID_UARCH_HYBRID_E (1U << 0) /* E-core (efficiency/small) in a hybrid topology */
-#define SIMDID_UARCH_HYBRID_P (1U << 1) /* P-core (performance/big) in a hybrid topology */
-#define SIMDID_UARCH_SIMD_DUAL (1U << 2) /* SIMD is glued/dual (summary: AVX_DUAL or AVX512_IMPL=DUAL) */
-#endif
-
-// Pack helpers (define locally to avoid missing macros when included standalone)
-#ifndef SIMDID_PACK_ROOT
-#define SIMDID_PACK_ROOT(root) (((uint64_t)(root) & 0xFULL) << SIMDID_SHIFT_ROOT)
-#define SIMDID_PACK_MANU(manu) (((uint64_t)(manu) & 0xFULL) << SIMDID_SHIFT_MANU)
-#define SIMDID_PACK_MAIN(main) (((uint64_t)(main) & 0xFFULL) << SIMDID_SHIFT_MAIN)
-#define SIMDID_PACK_AVX512(avx512_bits) \
- (((uint64_t)(avx512_bits) & 0xFFFFULL) << SIMDID_SHIFT_AVX512)
-#define SIMDID_PACK_AMX(amx_bits) (((uint64_t)(amx_bits) & 0xFFULL) << SIMDID_SHIFT_AMX)
-#define SIMDID_PACK_AVX(avx_bits) (((uint64_t)(avx_bits) & 0xFFULL) << SIMDID_SHIFT_AVX)
-#define SIMDID_PACK_AVX10(avx10_bits) (((uint64_t)(avx10_bits) & 0xFFULL) << SIMDID_SHIFT_AVX10)
-#define SIMDID_PACK_UARCH(uarch_hi) (((uint64_t)(uarch_hi) & 0xFFULL) << SIMDID_SHIFT_UARCH)
-#endif
-
-/* Pre-shifted helpers for convenience when constructing SIMDID */
-#define SIMDID_MAIN_ENC_NONE SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_NONE)
-#define SIMDID_MAIN_ENC_SSE SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_SSE)
-#define SIMDID_MAIN_ENC_AVX2 SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX2)
-#define SIMDID_MAIN_ENC_AVX512 SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX512)
-#define SIMDID_MAIN_ENC_AMX SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AMX)
-#define SIMDID_MAIN_ENC_AVX10 SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX10)
-
-#pragma region matix function
-
-INTERNAL void f32_normalize(VEC(float) * source, VEC(float) * target);
-
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, , add);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , add);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , add);
-
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , add);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , add);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , add);
-
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, , sub);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , sub);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , sub);
-
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , sub);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , sub);
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , sub);
-
-DECLARE_KER_PROC_RIGHT_ANS(float, sse, , transpose);
-DECLARE_KER_PROC_RIGHT_ANS(float, avx, , transpose);
-DECLARE_KER_PROC_RIGHT_ANS(float, 512, , transpose);
-
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, , scalar_mul);
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, , scalar_mul);
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, , scalar_mul);
-
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, , scalar_mul);
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, , scalar_mul);
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, , scalar_mul);
-
-DECLARE_BUF_PROC_ANS_SCALAR(float, sse, , fill);
-DECLARE_BUF_PROC_ANS_SCALAR(float, avx, , fill);
-DECLARE_BUF_PROC_ANS_SCALAR(float, 512, , fill);
-
-DECLARE_BUF_PROC_ANS_SCALAR(double, sse, , fill);
-DECLARE_BUF_PROC_ANS_SCALAR(double, avx, , fill);
-DECLARE_BUF_PROC_ANS_SCALAR(double, 512, , fill);
-
-DECLARE_PNL_PROC_ANS(float, sse, , clear);
-DECLARE_PNL_PROC_ANS(float, avx, , clear);
-DECLARE_PNL_PROC_ANS(float, 512, , clear);
-
-DECLARE_PNL_PROC_ANS(double, sse, , clear);
-DECLARE_PNL_PROC_ANS(double, avx, , clear);
-DECLARE_PNL_PROC_ANS(double, 512, , clear);
-
-DECLARE_KER_PROC_RIGHT_ANS(float, sse, , quality);
-
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, sse, , fma);
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, , fma);
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, _fma, fma);
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, 512, , fma);
-
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, sse, , fma);
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, avx, , fma);
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, avx, _fma, fma);
-DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, 512, , fma);
-
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, sse, , fma);
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, avx, , fma);
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, avx, _fma, fma);
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, 512, , fma);
-
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, sse, , fma);
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, avx, , fma);
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, avx, _fma, fma);
-DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, 512, , fma);
-
-#pragma endregion
-
-#pragma region scaler_simd
-
-INTERNAL uint64_t SN_DECL factorial_simd_sse(int n);
-
-#pragma endregion
-
-#pragma region dot_product
-
-INTERNAL void FORCEINLINE SN_DECL dot_41_sse(MAT_KERNEL(float) const *transpose,
- __m128 const *vector, __m128 *ans);
-INTERNAL void SN_DECL dot_41_avx(MAT_KERNEL(float) const *transpose, __m128 const *vector,
- __m128 *ans);
-INTERNAL void SN_DECL dot_42_sse(MAT_KERNEL(float) const *transpose, __m128 const *vector,
- __m128 *ans);
-INTERNAL void SN_DECL dot_42_avx(MAT_KERNEL(float) const *transpose, __m128 const *vector,
- __m128 *ans);
-
-#pragma endregion
-
-#pragma region string
-
-INTERNAL int SN_DECL city_hash_simplify_sse(byte const *str, int length);
-INTERNAL int SN_DECL index_pair_sse(short const *stram, uint32_t target, int length);
-
-#pragma endregion
-
-#else
-
-typedef enum intrinsic_level { SIMD0 = 0 } intrinsic_level;
-
-#endif
+#include "sn_target.h"
+
+#if SN_IS_ARCH(SN_ARCH_X86_64)
+
+#include "sn_intrinsic.h"
+
+// -----------------------------------------------------------------------------
+// SIMDID layout helpers (see SIMDID.x86.md)
+// bits [3..0] : Root ISA
+// bits [7..4] : Manufacture (ISA-specific)
+// bits [15..8] : MainLevel (monotonic capability)
+// bits [31..16]: AVX512 Feature
+// bits [39..32]: AMX Feature
+// bits [47..40]: AVX Feature
+// bits [55..48]: AVX10 Feature
+// bits [63..56]: uArchHi / Policy (optional)
+// -----------------------------------------------------------------------------
+#define SIMDID_SHIFT_ROOT 0
+#define SIMDID_SHIFT_MANU 4
+#define SIMDID_SHIFT_MAIN 8
+#define SIMDID_SHIFT_AVX512 16
+#define SIMDID_SHIFT_AMX 32
+#define SIMDID_SHIFT_AVX 40
+#define SIMDID_SHIFT_AVX10 48
+#define SIMDID_SHIFT_UARCH 56
+
+#define SIMDID_MASK_ROOT 0xFULL
+#define SIMDID_MASK_MANU (0xFULL << SIMDID_SHIFT_MANU)
+#define SIMDID_MASK_MAIN (0xFFULL << SIMDID_SHIFT_MAIN)
+#define SIMDID_MASK_AVX512 (0xFFFFULL << SIMDID_SHIFT_AVX512)
+#define SIMDID_MASK_AMX (0xFFULL << SIMDID_SHIFT_AMX)
+#define SIMDID_MASK_AVX (0xFFULL << SIMDID_SHIFT_AVX)
+#define SIMDID_MASK_AVX10 (0xFFULL << SIMDID_SHIFT_AVX10)
+#define SIMDID_MASK_UARCH (0xFFULL << SIMDID_SHIFT_UARCH)
+
+// Root ISA (low nibble)
+#define SIMDID_ROOT_UNKNOWN 0x0
+#define SIMDID_ROOT_X86_64 0x1
+#define SIMDID_ROOT_AARCH64 0x2
+#define SIMDID_ROOT_PPC64LE 0x3
+#define SIMDID_ROOT_RISCV64 0x4
+#define SIMDID_ROOT_LOONGARCH 0x5
+
+// Manufacture (x86-64 mapping; other ISAs may reinterpret)
+#define SIMDID_MANU_UNKNOWN 0x0
+#define SIMDID_MANU_INTEL 0x1
+#define SIMDID_MANU_AMD 0x2
+#define SIMDID_MANU_VIA 0x3
+#define SIMDID_MANU_HYGON 0x4 /* 海光: Zen1-derived, separate from AMD */
+
+// MainLevel (ordinal, shared bits 8..15; not bit-flags)
+#define SIMDID_MAIN_LVL_NONE 0x00u
+#define SIMDID_MAIN_LVL_SSE 0x01u /* SSE1..SSE4.2 */
+#define SIMDID_MAIN_LVL_AVX2 0x02u
+#define SIMDID_MAIN_LVL_AVX512 0x03u
+#define SIMDID_MAIN_LVL_AMX 0x04u
+#define SIMDID_MAIN_LVL_AVX10 0x05u
+
+#ifndef SIMDID_AVX512_BASE
+#define SIMDID_AVX512_FP16 U << 13) relative bit 13 within [31..16] */
+#define SIMDID_AVX512_BF16 U << 12)
+#define SIMDID_AVX512_VNNI U << 11)
+#define SIMDID_AVX512_VBMI2 U << 10)
+#define SIMDID_AVX512_VBMI U << 9)
+#define SIMDID_AVX512_AI_RESERVED U << 8)
+#define SIMDID_AVX512_BASE U << 4)
+#define SIMDID_AVX512_IMPL_SHIFT
+#define SIMDID_AVX512_IMPL_MASK x3U << SIMDID_AVX512_IMPL_SHIFT)
+#define SIMDID_AVX512_IMPL_UNKNOWN x0U << SIMDID_AVX512_IMPL_SHIFT)
+#define SIMDID_AVX512_IMPL_DUAL x1U << SIMDID_AVX512_IMPL_SHIFT)
+#define SIMDID_AVX512_IMPL_NATIVE x2U << SIMDID_AVX512_IMPL_SHIFT)
+#endif
+
+#ifndef SIMDID_AVX_BASE
+#define SIMDID_AVX U << 0) relative bit 0 within [47..40] */
+#define SIMDID_AVX2 U << 1)
+#define SIMDID_AVX_FMA U << 2)
+#define SIMDID_AVX_F16C (1U << 3)
+#define SIMDID_AVX_DUAL ( \
+ U << 4) glued/split-lane YMM (two 128-bit units; Zen1, Hygon, VIA/Zhaoxin) */
+#endif
+
+#ifndef SIMDID_AMX_TILE
+#define SIMDID_AMX_TILE (1U << 0) relative bit 0 within [39..32] */
+#define SIMDID_AMX_INT8 (1U << 1)
+#define SIMDID_AMX_BF16 (1U << 2)
+#endif
+
+#ifndef SIMDID_AVX10_BASE
+#define SIMDID_AVX10 U << 0) /* relative bit 0 within [55..48] */
+#define SIMDID_AVX10_V1 U << 1)
+#define SIMDID_AVX10_V2 U << 2)
+#define SIMDID_AVX10_256W (1U << 3)
+#define SIMDID_AVX10_512W (1U << 4)
+#endif
+
+/* uArchHi ([63..56]) bitmask — core topology and SIMD-width execution policy */
+#ifndef SIMDID_UARCH_HYBRID_P
+/* Topology 2-bit field (bits [1..0] of uArchHi byte):
+ * 00 = unknown (undetected hybrid type or pre-CPUID.1A hardware)
+ * 01 = E-core (efficiency/small core in a hybrid CPU)
+ * 10 = P-core (performance/big core in a hybrid CPU)
+ * 11 = unified (confirmed non-hybrid; numerically strongest)
+ * Higher numeric value == stronger / higher-capability topology. */
+#define SIMDID_UARCH_HYBRID_E << 0) / E-core (efficiency/small) in a hybrid topology */
+#define SIMDID_UARCH_HYBRID_P << 1) / P-core (performance/big) in a hybrid topology */
+#define SIMDID_UARCH_SIMD_DUAL ( \
+ << 2) / SIMD is glued/dual (summary: AVX_DUAL or AVX512_IMPL=DUAL) */
+#endif
+
+// Pack helpers (define locally to avoid missing macros when included standalone)
+#ifndef SIMDID_PACK_ROOT
+#define SIMDID_PACK_ROOT(root) (((uint64_t)(root) & 0xFULL) << SIMDID_SHIFT_ROOT)
+#define SIMDID_PACK_MANU(manu) (((uint64_t)(manu) & 0xFULL) << SIMDID_SHIFT_MANU)
+#define SIMDID_PACK_MAIN(main) (((uint64_t)(main) & 0xFFULL) << SIMDID_SHIFT_MAIN)
+#define SIMDID_PACK_AVX512(avx512_bits) \
+ (((uint64_t)(avx512_bits) & 0xFFFFULL) << SIMDID_SHIFT_AVX512)
+#define SIMDID_PACK_AMX(amx_bits) (((uint64_t)(amx_bits) & 0xFFULL) << SIMDID_SHIFT_AMX)
+#define SIMDID_PACK_AVX(avx_bits) (((uint64_t)(avx_bits) & 0xFFULL) << SIMDID_SHIFT_AVX)
+#define SIMDID_PACK_AVX10(avx10_bits) (((uint64_t)(avx10_bits) & 0xFFULL) << SIMDID_SHIFT_AVX10)
+#define SIMDID_PACK_UARCH(uarch_hi) (((uint64_t)(uarch_hi) & 0xFFULL) << SIMDID_SHIFT_UARCH)
+#endif
+
+/* Pre-shifted helpers for convenience when constructing SIMDID */
+#define SIMDID_MAIN_ENC_NONE SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_NONE)
+#define SIMDID_MAIN_ENC_SSE SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_SSE)
+#define SIMDID_MAIN_ENC_AVX2 SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX2)
+#define SIMDID_MAIN_ENC_AVX512 SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX512)
+#define SIMDID_MAIN_ENC_AMX SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AMX)
+#define SIMDID_MAIN_ENC_AVX10 SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX10)
+
+#pragma region matix function
+
+INTERNAL void f32_normalize(VEC(float) * source, VEC(float) * target);
+
+STD_MK_PROC_DECL(float, sse, , add);
+STD_MK_PROC_DECL(float, avx, , add);
+STD_MK_PROC_DECL(float, 512, , add);
+
+STD_MK_PROC_DECL(double, sse, , add);
+STD_MK_PROC_DECL(double, avx, , add);
+STD_MK_PROC_DECL(double, 512, , add);
+
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, , sub);
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , sub);
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , sub);
+
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , sub);
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , sub);
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , sub);
+
+DECLARE_KER_PROC_RIGHT_ANS(float, sse, , transpose);
+DECLARE_KER_PROC_RIGHT_ANS(float, avx, , transpose);
+DECLARE_KER_PROC_RIGHT_ANS(float, 512, , transpose);
+
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, , scalar_mul);
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, , scalar_mul);
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, , scalar_mul);
+
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, , scalar_mul);
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, , scalar_mul);
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, , scalar_mul);
+
+DECLARE_BUF_PROC_ANS_SCALAR(float, sse, , fill);
+DECLARE_BUF_PROC_ANS_SCALAR(float, avx, , fill);
+DECLARE_BUF_PROC_ANS_SCALAR(float, 512, , fill);
+
+DECLARE_BUF_PROC_ANS_SCALAR(double, sse, , fill);
+DECLARE_BUF_PROC_ANS_SCALAR(double, avx, , fill);
+DECLARE_BUF_PROC_ANS_SCALAR(double, 512, , fill);
+
+DECLARE_PNL_PROC_ANS(float, sse, , clear);
+DECLARE_PNL_PROC_ANS(float, avx, , clear);
+DECLARE_PNL_PROC_ANS(float, 512, , clear);
+
+DECLARE_PNL_PROC_ANS(double, sse, , clear);
+DECLARE_PNL_PROC_ANS(double, avx, , clear);
+DECLARE_PNL_PROC_ANS(double, 512, , clear);
+
+DECLARE_KER_PROC_RIGHT_ANS(float, sse, , quality);
+
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, sse, , fma);
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, , fma);
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, _fma, fma);
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, 512, , fma);
+
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, sse, , fma);
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, avx, , fma);
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, avx, _fma, fma);
+DECLARE_KER_PROC_LEFT_RIGHT_ANS(double, 512, , fma);
+
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, sse, , fma);
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, avx, , fma);
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, avx, _fma, fma);
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(float, 512, , fma);
+
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, sse, , fma);
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, avx, , fma);
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, avx, _fma, fma);
+DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(double, 512, , fma);
+
+#pragma endregion
+
+#pragma region scaler_simd
+
+INTERNAL uint64_t SN_DECL factorial_simd_sse(int n);
+
+#pragma endregion
+
+#pragma region dot_product
+
+INTERNAL void FORCEINLINE SN_DECL dot_41_sse(MAT_KERNEL(float) const *transpose,
+ __m128 const *vector, __m128 *ans);
+INTERNAL void SN_DECL dot_41_avx(MAT_KERNEL(float) const *transpose, __m128 const *vector,
+ __m128 *ans);
+INTERNAL void SN_DECL dot_42_sse(MAT_KERNEL(float) const *transpose, __m128 const *vector,
+ __m128 *ans);
+INTERNAL void SN_DECL dot_42_avx(MAT_KERNEL(float) const *transpose, __m128 const *vector,
+ __m128 *ans);
+
+#pragma endregion
+
+#pragma region string
+
+INTERNAL int SN_DECL city_hash_simplify_sse(byte const *str, int length);
+INTERNAL int SN_DECL index_pair_sse(short const *stram, uint32_t target, int length);
+
+#pragma endregion
+
+#else
+
+typedef enum intrinsic_level { SIMD0 = 0 } intrinsic_level;
+
+#endif
diff --git a/StgSharp.Native/sn-head/sn_intrinsic.h b/StgSharp.Native/sn-head/sn_intrinsic.h
index 01d77e95..30888e7e 100644
--- a/StgSharp.Native/sn-head/sn_intrinsic.h
+++ b/StgSharp.Native/sn-head/sn_intrinsic.h
@@ -4,7 +4,7 @@
#define SSC_INTRIN_HEAD
#include "StgSharpNative.h"
-#include "sn_matkernel.h"
+#include "sn_intrinsic.matkernel.h"
#include
#include
#include
@@ -47,18 +47,6 @@ typedef union scalar_pack {
uint64_t data[8];
} scalar_pack;
-// define operation style:
-
-#define PANEL_OP 1
-#define BUFFER_OP 2
-#define KERNEL_OP 3
-
-#define RIGHT_ANS_PARAM 1
-#define LEFT_RIGHT_ANS_PARAM 2
-#define RIGHT_ANS_SCALAR_PARAM 3
-#define LEFT_RIGHT_ANS_SCALAR_PARAM 4
-#define ANS_SCALAR_PARAM 5
-
/* Mirrors StgSharp.Mathematics.Numeric.MatrixParallelTaskPackage (128 bytes). */
#define MAT_TASK(T) \
struct { \
@@ -84,140 +72,7 @@ static_assert(sizeof(matrix_task) == 128, "matrix_parallel_task_package size mis
static_assert(sizeof(MAT_TASK(float)) == 128, "matrix_parallel_task_package size mismatch");
#endif
-typedef void(SN_DECL *UNIFIKERNELPROC)(matrix_task *task);
-#define UNIFIKERNRLPROC(T_arch, T_feature, T_op) mat_proc_##T_op##_##T_arch##_##T_feature
-
-#pragma region matrix buffer operation function type
-
-typedef void(SN_DECL *BUF_PROC_AS)(mat_kernel *ans, scalar_pack *scalar, int count);
-typedef void(SN_DECL *BUF_PROC_RAS)(mat_kernel *right, mat_kernel *ans, scalar_pack *scalar,
- int count);
-typedef void(SN_DECL *BUF_PROC_LRAS)(mat_kernel *left, mat_kernel *right, mat_kernel *ans,
- scalar_pack *scalar, int count);
-typedef void(SN_DECL *BUF_PROC_RA)(mat_kernel *right, mat_kernel *ans, int count);
-typedef void(SN_DECL *BUF_PROC_LRA)(mat_kernel *left, mat_kernel *right, mat_kernel *ans,
- int count);
-
-#define BUF_PROC(T_type, T_arch, T_feature, T_op_name) \
- T_type##_buf_##T_op_name##_##T_arch##T_feature
-
-#define DECLARE_BUF_PROC_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar, size_t count)
-#define DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, \
- scalar_pack const *scalar, size_t count)
-#define DECLARE_BUF_PROC_LEFT_RIGHT_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
- MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar, size_t count)
-#define DECLARE_BUF_PROC_RIGHT_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, size_t count)
-#define DECLARE_BUF_PROC_LEFT_RIGHT_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
- MAT_KERNEL(T_type) *restrict ans, size_t count)
-
-#pragma endregion
-
-#pragma region matrix panel function type
-
-typedef void(SN_DECL *PANEL_PROC)(mat_panel *panel, mat_kernel *kernel, int col_length,
- int row_length, int col_index, int row_index);
-typedef void(SN_DECL *PNL_PROC_LRA)(mat_panel *left, mat_panel *right, mat_panel *ans);
-typedef void(SN_DECL *PNL_PROC_RA)(mat_panel *right, mat_panel *ans);
-typedef void(SN_DECL *PNL_PROC_LRAS)(mat_panel *left, mat_panel *right, mat_panel *ans,
- scalar_pack *scalar);
-typedef void(SN_DECL *PNL_PROC_RAS)(mat_panel *right, mat_panel *ans, scalar_pack *scalar);
-
-#define PNL_PROC(T_type, T_arch, T_feature, T_op_name) \
- T_type##_pnl_##T_op_name##_##T_arch##T_feature
-#define DECLARE_PNL_PROC_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL PNL_PROC(T_type, T_arch, T_feature, \
- T_op_name)(MAT_PANEL_##T_arch##(T_type) *restrict ans)
-#define DECLARE_PNL_PROC_LEFT_RIGHT_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL PNL_PROC(T_type, T_arch, T_feature, \
- T_op_name)(MAT_PANEL_##T_arch##(T_type) const *left, \
- MAT_PANEL_##T_arch##(T_type) const *right, \
- MAT_PANEL_##T_arch##(T_type) *restrict ans)
-#define DECLARE_PNL_PROC_LEFT_RIGHT_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL PNL_PROC(T_type, T_arch, T_op_name)( \
- MAT_PANEL_##T_arch##(T_type) const *left, \
- MAT_PANEL_##T_arch##(T_type) const *right, \
- MAT_PANEL_##T_arch##(T_type) *restrict ans, scalar_pack const *scalar)
-
-#pragma endregion
-
-#pragma region matrix kernel function type
-
-typedef void(SN_DECL *KER_PROC_AS)(mat_kernel *ans, scalar_pack *scalar);
-typedef void(SN_DECL *KER_PROC_RA)(mat_kernel *left, mat_kernel *ans);
-typedef void(SN_DECL *KER_PROC_LRA)(mat_kernel *left, mat_kernel *right, mat_kernel *ans);
-typedef void(SN_DECL *KER_PROC_LAS)(mat_kernel *matrix, mat_kernel *ans, scalar_pack *scalar);
-
-#define KER_PROC(T_type, T_arch, T_feature, T_op_name) \
- T_type##_kernel_##T_op_name##_##T_arch##T_feature
-
-#define DECLARE_KER_PROC_LEFT_RIGHT_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KER_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
- MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar)
-#define DECLARE_KER_PROC_RIGHT_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KER_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, \
- scalar_pack const *scalar)
-#define DECLARE_KER_PROC_LEFT_RIGHT_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KER_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
- MAT_KERNEL(T_type) *restrict ans)
-#define DECLARE_KER_PROC_RIGHT_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KER_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans)
-
-#pragma endregion
-
-#pragma region matrix kernel tile function type
-
-typedef void(SN_DECL *KERTILE_PROC_AS)(mat_kernel *ans, scalar_pack *scalar, __m128 *enumeration);
-typedef void(SN_DECL *KERTILE_PROC_RA)(mat_kernel *left, mat_kernel *ans, __m128 *enumeration);
-typedef void(SN_DECL *KERTILE_PROC_LRA)(mat_kernel *left, mat_kernel *right, mat_kernel *ans,
- __m128 *enumeration);
-typedef void(SN_DECL *KERTILE_PROC_LAS)(mat_kernel *matrix, mat_kernel *ans, scalar_pack *scalar,
- __m128 *enumeration);
-
-#define KERTILE_PROC(T_type, T_arch, T_feature, T_op_name) \
- T_type##_kernel_tile_##T_op_name##_##T_arch##T_feature
-
-#define DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KERTILE_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
- MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar, \
- __m128 const *enumeration)
-#define DECLARE_KERTILE_PROC_RIGHT_ANS_SCALAR(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KERTILE_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, \
- scalar_pack const *scalar, __m128 const *enumeration)
-#define DECLARE_KERTILE_PROC_LEFT_RIGHT_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KERTILE_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
- MAT_KERNEL(T_type) *restrict ans, __m128 const *enumeration)
-#define DECLARE_KERTILE_PROC_RIGHT_ANS(T_type, T_arch, T_feature, T_op_name) \
- INTERNAL void SN_DECL KERTILE_PROC(T_type, T_arch, T_feature, T_op_name)( \
- MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, \
- __m128 const *enumeration)
-
-#pragma endregion
-
-#pragma region special matrix kernel operation
-
-typedef void(SN_DECL *PIVOTPROC)(mat_kernel const *source, size_t col_begin, size_t col_length,
- size_t *restrict ans);
-INTERNAL void SN_DECL pivot_float(MAT_KERNEL(float) const *source, size_t col_begin,
- size_t col_length, size_t *restrict ans);
-
-#pragma endregion
+typedef void(SN_DECL *UNI_MK_PROC)(matrix_task *task);
typedef void(SN_DECL *VECTORNORMALIZEPROC)(__m128 *source, __m128 *target);
typedef void(SN_DECL *DOTPROC)(void *transpose, __m128 *vector, __m128 *ans);
@@ -231,15 +86,15 @@ typedef int(SN_DECL *INDEX_PAIR)(short const *stram, uint32_t target, int length
#pragma endregion
typedef struct mat_intrinsic {
- UNIFIKERNELPROC buffer_add;
- UNIFIKERNELPROC buffer_fill;
- UNIFIKERNELPROC buffer_scalar_mul;
- UNIFIKERNELPROC buffer_sub;
- UNIFIKERNELPROC buffer_transpose;
- UNIFIKERNELPROC clear_panel;
- UNIFIKERNELPROC ker_fma;
- UNIFIKERNELPROC ker_tile_fma;
- UNIFIKERNELPROC pivot;
+ UNI_MK_PROC buffer_add;
+ UNI_MK_PROC buffer_fill;
+ UNI_MK_PROC buffer_scalar_mul;
+ UNI_MK_PROC buffer_sub;
+ UNI_MK_PROC buffer_transpose;
+ UNI_MK_PROC clear_panel;
+ UNI_MK_PROC ker_fma;
+ UNI_MK_PROC ker_tile_fma;
+ UNI_MK_PROC pivot;
} mat_intrinsic;
diff --git a/StgSharp.Native/sn-head/sn_matkernel.h b/StgSharp.Native/sn-head/sn_intrinsic.matkernel.h
similarity index 97%
rename from StgSharp.Native/sn-head/sn_matkernel.h
rename to StgSharp.Native/sn-head/sn_intrinsic.matkernel.h
index 27cb3b0c..29fe1351 100644
--- a/StgSharp.Native/sn-head/sn_matkernel.h
+++ b/StgSharp.Native/sn-head/sn_intrinsic.matkernel.h
@@ -1,141 +1,141 @@
-#ifndef SN_MATKERNEL
-#define SN_MATKERNEL
-
-#include
-#include
-
-#include "sn_internal.h"
-
-/* Kernel storage unions for a fixed 4x4 block. */
-#define ELEMENTSIZE(T) sizeof(T)
-#define XMMCOUNT(T) (sizeof(T))
-#define YMMCOUNT(T) (sizeof(T) / 2)
-#define ZMMCOUNT(T) (sizeof(T) / 4)
-
-#define MAT_KERNEL(T) \
- union /* MAT_KERNEL_##T## /**/ { \
- __m128 f32_x[XMMCOUNT(T)]; \
- __m256 f32_y[YMMCOUNT(T)]; \
- __m512 f32_z[ZMMCOUNT(T)]; \
- \
- __m128d f64_x[XMMCOUNT(T)]; \
- __m256d f64_y[YMMCOUNT(T)]; \
- __m512d f64_z[ZMMCOUNT(T)]; \
- T m[4][4]; \
- }
-
-#define VEC(T) \
- union { \
- __m128 f32_x[XMMCOUNT(T) / 4]; \
- __m256 f32_y[YMMCOUNT(T) / 4]; \
- __m512 f32_z[ZMMCOUNT(T) / 4]; \
- \
- __m128d f64_x[XMMCOUNT(T) / 4]; \
- __m256d f64_y[YMMCOUNT(T) / 4]; \
- __m512d f64_z[ZMMCOUNT(T) / 4]; \
- T v[4]; \
- }
-
-/* Provide a named alias for the zero kernel type to ensure consistent linkage in C++. */
-typedef MAT_KERNEL(uint64_t) sn_zero_kernel_u64;
-
-/* Helpers (all compile-time): */
-#define SN_LANES(T_VEC, T) (sizeof(T_VEC) / sizeof(T))
-#define SN_MAX(a, b) (((a)) > ((b)) ? (a) : (b))
-#define SN_CEIL_DIV(a, b) (((a) + (b) - 1) / (b))
-#define SN_BITS(x) ((int)(sizeof(x) * 8))
-#define PANEL_MINQ(T_VEC, T) SN_MAX(4, SN_MAX(SN_BITS(T_VEC) / 64, SN_BITS(T_VEC) / SN_BITS(T)))
-
-/* Panel geometry helpers (all compile-time): */
-#define PANEL_Q(T, T_VEC, MINQ) SN_MAX(SN_LANES(T_VEC, T), (MINQ))
-#define PANEL_CHUNKS(T, T_VEC, MINQ) SN_CEIL_DIV(PANEL_Q(T, T_VEC, MINQ), SN_LANES(T_VEC, T))
-
-/*
- Column-major square panel with minimum side Q:
- - Let R = lanes per vector = sizeof(T_VEC)/sizeof(T).
- - Side length Q = max(R, MINQ) to enforce the requested minimum extent.
- - Each column is stored contiguously via CH = ceil(Q/R) vector chunks.
- - Memory layout:
- vec[col][chunk] is a T_VEC holding up to R scalars of column 'col'
- spanning rows chunk*R .. chunk*R + (R - 1).
- flat[] mirrors the same column-major order (column stride = Q).
- - SIMD view remains integer-typed; cast inside micro-kernels to the
- appropriate floating-point/integer vector type on demand.
-*/
-#define MAT_PANEL_SQ_MIN_NOALIGN(T, T_VEC, MINQ) \
- union { \
- T_VEC vec[PANEL_Q(T, T_VEC, MINQ)][PANEL_CHUNKS(T, T_VEC, MINQ)]; \
- T flat[PANEL_Q(T, T_VEC, MINQ) * PANEL_Q(T, T_VEC, MINQ)]; \
- }
-
-/* ISA presets with minimum square side:
- - SSE : MINQ=4 (avoid 2x2 for double)
- - AVX2 : MINQ computed as max(4, vector_bits/64, vector_bits/element_bits)
- - AVX-512: same rule (float/i32 naturally expand to 16)
-*/
-
-/* SSE panel layout: column-major buffer holding 4 logical columns with MINQ=4.
- Columns: each column packs up to four scalars so ALIGN equals sizeof(__m128).
- Alignment: every column boundary lands on a 16-byte multiple for XMM loads. */
-#define MAT_PANEL_sse(T) SN_ALIGNAS(16) MAT_PANEL_SQ_MIN_NOALIGN(T, __m128, PANEL_MINQ(__m128, T))
-/* AVX2 panel layout: column-major buffer holding 8 logical columns with MINQ per PANEL_MINQ.
- Columns: each column stores up to lanes elements via contiguous chunks.
- Alignment: column starts are 32-byte aligned so AVX2 loads/stores remain contiguous. */
-#define MAT_PANEL_avx(T) SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, PANEL_MINQ(__m256, T))
-/* AVX2/FMA panel layout shares the same geometry as AVX2. */
-#define MAT_PANEL_avx_fma(T) \
- SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, PANEL_MINQ(__m256, T))
-/* AVX-512 panel layout: column-major buffer holding 8 or more columns depending on T.
- Columns: each column expands to ceil(Q/lanes) ZMM chunks.
- Alignment: column starts sit on 64-byte boundaries to match AVX-512 streaming access. */
-#define MAT_PANEL_512(T) SN_ALIGNAS(64) MAT_PANEL_SQ_MIN_NOALIGN(T, __m512, PANEL_MINQ(__m512, T))
-
-/* Global zero kernel declaration (defined in dllmain.c), aligned to 64 bytes */
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern __declspec(align(64)) sn_zero_kernel_u64 SN_ZERO_KERNEL;
-#ifdef __cplusplus
-}
-#endif
-
-/* Access helpers (all compile-time friendly):
- Given Q = PANEL_Q(...), CH = PANEL_CHUNKS(...), R = lanes per vector:
- - Column c occupies vec[c][0..CH-1].
- - Row r inside column c is located at vec[c][r / R] with lane (r % R).
-*/
-#define PANEL_COL_VEC(panel_obj, c, chunk) ((panel_obj).vec[(int)(c)][(int)(chunk)])
-/* Scalar flat index helper for column-major addressing */
-#define PANEL_ELEM(panel_obj, T, T_VEC, MINQ, r, c) \
- ((panel_obj).flat[(int)(c) * PANEL_Q(T, T_VEC, MINQ) + (int)(r)])
-
-/* API macros */
-#define BUILD_PANEL(arch, element) build_panel_##arch##_##element
-#define STORE_PANEL(arch, element) store_panel_##arch##_##element
-
-#define DECLARE_BUILD_PANEL(arch, element) \
- INTERNAL void SN_DECL BUILD_PANEL(arch, element)( \
- MAT_PANEL_##arch(element) *restrict panel, \
- MAT_KERNEL(element) const *const matrix, int col_length, int row_length, \
- int col_index, int row_index)
-#define DECLARE_STORE_PANEL(arch, element) \
- INTERNAL void SN_DECL STORE_PANEL(arch, element)(MAT_PANEL_##arch(element) \
- const *const panel, \
- MAT_KERNEL(element) *restrict matrix, \
- int col_length, int row_length, \
- int col_index, int row_index)
-
-/* Declarations for AVX float variant
-DECLARE_BUILD_PANEL(avx, float);
-DECLARE_BUILD_PANEL(512, float);
-
-DECLARE_STORE_PANEL(avx, float);
-DECLARE_STORE_PANEL(512, float);
-DECLARE_STORE_PANEL(512, float);
-
-DECLARE_BUILD_PANEL(512, double);
-
-DECLARE_STORE_PANEL(512, double);
-/**/
-
-#endif /* SN_MATKERNEL */
+#ifndef SN_MATKERNEL
+#define SN_MATKERNEL
+
+#include
+#include
+
+#include "sn_internal.h"
+
+/* Kernel storage unions for a fixed 4x4 block. */
+#define ELEMENTSIZE(T) sizeof(T)
+#define XMMCOUNT(T) (sizeof(T))
+#define YMMCOUNT(T) (sizeof(T) / 2)
+#define ZMMCOUNT(T) (sizeof(T) / 4)
+
+#define MAT_KERNEL(T) \
+ union /* MAT_KERNEL_##T## /**/ { \
+ __m128 f32_x[XMMCOUNT(T)]; \
+ __m256 f32_y[YMMCOUNT(T)]; \
+ __m512 f32_z[ZMMCOUNT(T)]; \
+ \
+ __m128d f64_x[XMMCOUNT(T)]; \
+ __m256d f64_y[YMMCOUNT(T)]; \
+ __m512d f64_z[ZMMCOUNT(T)]; \
+ T m[4][4]; \
+ }
+
+#define VEC(T) \
+ union { \
+ __m128 f32_x[XMMCOUNT(T) / 4]; \
+ __m256 f32_y[YMMCOUNT(T) / 4]; \
+ __m512 f32_z[ZMMCOUNT(T) / 4]; \
+ \
+ __m128d f64_x[XMMCOUNT(T) / 4]; \
+ __m256d f64_y[YMMCOUNT(T) / 4]; \
+ __m512d f64_z[ZMMCOUNT(T) / 4]; \
+ T v[4]; \
+ }
+
+/* Provide a named alias for the zero kernel type to ensure consistent linkage in C++. */
+typedef MAT_KERNEL(uint64_t) sn_zero_kernel_u64;
+
+/* Helpers (all compile-time): */
+#define SN_LANES(T_VEC, T) (sizeof(T_VEC) / sizeof(T))
+#define SN_MAX(a, b) (((a)) > ((b)) ? (a) : (b))
+#define SN_CEIL_DIV(a, b) (((a) + (b) - 1) / (b))
+#define SN_BITS(x) ((int)(sizeof(x) * 8))
+#define PANEL_MINQ(T_VEC, T) SN_MAX(4, SN_MAX(SN_BITS(T_VEC) / 64, SN_BITS(T_VEC) / SN_BITS(T)))
+
+/* Panel geometry helpers (all compile-time): */
+#define PANEL_Q(T, T_VEC, MINQ) SN_MAX(SN_LANES(T_VEC, T), (MINQ))
+#define PANEL_CHUNKS(T, T_VEC, MINQ) SN_CEIL_DIV(PANEL_Q(T, T_VEC, MINQ), SN_LANES(T_VEC, T))
+
+/*
+ Column-major square panel with minimum side Q:
+ - Let R = lanes per vector = sizeof(T_VEC)/sizeof(T).
+ - Side length Q = max(R, MINQ) to enforce the requested minimum extent.
+ - Each column is stored contiguously via CH = ceil(Q/R) vector chunks.
+ - Memory layout:
+ vec[col][chunk] is a T_VEC holding up to R scalars of column 'col'
+ spanning rows chunk*R .. chunk*R + (R - 1).
+ flat[] mirrors the same column-major order (column stride = Q).
+ - SIMD view remains integer-typed; cast inside micro-kernels to the
+ appropriate floating-point/integer vector type on demand.
+*/
+#define MAT_PANEL_SQ_MIN_NOALIGN(T, T_VEC, MINQ) \
+ union { \
+ T_VEC vec[PANEL_Q(T, T_VEC, MINQ)][PANEL_CHUNKS(T, T_VEC, MINQ)]; \
+ T flat[PANEL_Q(T, T_VEC, MINQ) * PANEL_Q(T, T_VEC, MINQ)]; \
+ }
+
+/* ISA presets with minimum square side:
+ - SSE : MINQ=4 (avoid 2x2 for double)
+ - AVX2 : MINQ computed as max(4, vector_bits/64, vector_bits/element_bits)
+ - AVX-512: same rule (float/i32 naturally expand to 16)
+*/
+
+/* SSE panel layout: column-major buffer holding 4 logical columns with MINQ=4.
+ Columns: each column packs up to four scalars so ALIGN equals sizeof(__m128).
+ Alignment: every column boundary lands on a 16-byte multiple for XMM loads. */
+#define MAT_PANEL_sse(T) SN_ALIGNAS(16) MAT_PANEL_SQ_MIN_NOALIGN(T, __m128, PANEL_MINQ(__m128, T))
+/* AVX2 panel layout: column-major buffer holding 8 logical columns with MINQ per PANEL_MINQ.
+ Columns: each column stores up to lanes elements via contiguous chunks.
+ Alignment: column starts are 32-byte aligned so AVX2 loads/stores remain contiguous. */
+#define MAT_PANEL_avx(T) SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, PANEL_MINQ(__m256, T))
+/* AVX2/FMA panel layout shares the same geometry as AVX2. */
+#define MAT_PANEL_avx_fma(T) \
+ SN_ALIGNAS(32) MAT_PANEL_SQ_MIN_NOALIGN(T, __m256, PANEL_MINQ(__m256, T))
+/* AVX-512 panel layout: column-major buffer holding 8 or more columns depending on T.
+ Columns: each column expands to ceil(Q/lanes) ZMM chunks.
+ Alignment: column starts sit on 64-byte boundaries to match AVX-512 streaming access. */
+#define MAT_PANEL_512(T) SN_ALIGNAS(64) MAT_PANEL_SQ_MIN_NOALIGN(T, __m512, PANEL_MINQ(__m512, T))
+
+/* Global zero kernel declaration (defined in dllmain.c), aligned to 64 bytes */
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern __declspec(align(64)) sn_zero_kernel_u64 SN_ZERO_KERNEL;
+#ifdef __cplusplus
+}
+#endif
+
+/* Access helpers (all compile-time friendly):
+ Given Q = PANEL_Q(...), CH = PANEL_CHUNKS(...), R = lanes per vector:
+ - Column c occupies vec[c][0..CH-1].
+ - Row r inside column c is located at vec[c][r / R] with lane (r % R).
+*/
+#define PANEL_COL_VEC(panel_obj, c, chunk) ((panel_obj).vec[(int)(c)][(int)(chunk)])
+/* Scalar flat index helper for column-major addressing */
+#define PANEL_ELEM(panel_obj, T, T_VEC, MINQ, r, c) \
+ ((panel_obj).flat[(int)(c) * PANEL_Q(T, T_VEC, MINQ) + (int)(r)])
+
+/* API macros */
+#define BUILD_PANEL(arch, element) build_panel_##arch##_##element
+#define STORE_PANEL(arch, element) store_panel_##arch##_##element
+
+#define DECLARE_BUILD_PANEL(arch, element) \
+ INTERNAL void SN_DECL BUILD_PANEL(arch, element)( \
+ MAT_PANEL_##arch(element) *restrict panel, \
+ MAT_KERNEL(element) const *const matrix, int col_length, int row_length, \
+ int col_index, int row_index)
+#define DECLARE_STORE_PANEL(arch, element) \
+ INTERNAL void SN_DECL STORE_PANEL(arch, element)(MAT_PANEL_##arch(element) \
+ const *const panel, \
+ MAT_KERNEL(element) *restrict matrix, \
+ int col_length, int row_length, \
+ int col_index, int row_index)
+
+/* Declarations for AVX float variant
+DECLARE_BUILD_PANEL(avx, float);
+DECLARE_BUILD_PANEL(512, float);
+
+DECLARE_STORE_PANEL(avx, float);
+DECLARE_STORE_PANEL(512, float);
+DECLARE_STORE_PANEL(512, float);
+
+DECLARE_BUILD_PANEL(512, double);
+
+DECLARE_STORE_PANEL(512, double);
+/**/
+
+#endif /* SN_MATKERNEL */
diff --git a/StgSharp.Native/sn-head/sn_intrinsic.std.h b/StgSharp.Native/sn-head/sn_intrinsic.std.h
new file mode 100644
index 00000000..9266fa42
--- /dev/null
+++ b/StgSharp.Native/sn-head/sn_intrinsic.std.h
@@ -0,0 +1,82 @@
+#ifndef SN_INTRINSIC_CallCONV_STD
+#define SN_INTRINSIC_CallCONV_STD
+
+#include "sn_internal.h"
+#include "sn_intrinsic.h"
+
+#ifndef static_assert
+#define static_assert _Static_assert
+#endif
+
+#define STD_MK_PROC_NAME(T_type, T_arch, T_feature, T_op) \
+ T_type##_mat_proc_##T_op##_##T_arch##_##T_feature
+#define STD_MK_PROC_DECL(T_type, T_arch, T_feature, T_op) \
+ INTERNAL void SN_DECL STD_MK_PROC_NAME(T_type, T_arch, T_feature, \
+ T_op)(MAT_TASK(T_type) * task);
+
+#pragma region param styles
+
+#define _SN_MATPROC_LEFT_RIGHT_ANS 1
+#define _SN_MATPROC_RIGHT_ANS 1
+#define _SN_MATPROC_LEFT_RIGHT_ANS_SCALAR 1
+#define _SN_MATPROC_RIGHT_ANS_SCALAR 1
+#define _SN_MATPROC_ANS_SCALAR 1
+
+#define _SN_MK_EXPAND_RA(T) \
+ MAT_KERNEL(T) const *right = (MAT_TASK(T) *)task->mat_1; \
+ MAT_KERNEL(T) *restrict ans = (MAT_TASK(T) *)task->mat_2;
+
+#define _SN_MK_EXPAND_LRA(T) \
+ MAT_KERNEL(T) const *left = (MAT_TASK(T) *)task->mat_0; \
+ MAT_KERNEL(T) const *right = (MAT_TASK(T) *)task->mat_1; \
+ MAT_KERNEL(T) *restrict ans = (MAT_TASK(T) *)task->mat_2;
+
+#define _SN_MK_EXPAND_RAS(T) \
+ MAT_KERNEL(T) const *right = (MAT_TASK(T) *)task->mat_1; \
+ MAT_KERNEL(T) *restrict ans = (MAT_TASK(T) *)task->mat_2; \
+ void *restrict scalar = (MAT_TASK(T) *)task->scalar;
+
+#define _SN_MK_EXPAND_LRAS(T) \
+ MAT_KERNEL(T) const *left = (MAT_KERNEL(T) *)task->mat_0; \
+ MAT_KERNEL(T) const *right = (MAT_KERNEL(T) *)task->mat_1; \
+ MAT_KERNEL(T) *restrict ans = (MAT_KERNEL(T) *)task->mat_2; \
+ void *restrict scalar = (MAT_TASK(T) *)task->scalar;
+
+#define _SN_MK_EXPAND_AS(T) \
+ MAT_KERNEL(T) *restrict ans = (MAT_KERNEL(T) *)task->mat_2; \
+ void *restrict scalar = (scalar_pack const *)task->scalar;
+
+#define _SN_PARAM_STYLE(T) _SN_MATPROC_##T
+
+#define _SN_MK_EXPAND_PARAM(style, T) _SN_MK_EXPAND_##style(T)
+
+#pragma endregion
+
+#pragma region mem layout
+
+#define _SN_MATPROC_LAYOUT_BUFFER 1
+#define _SN_MATPROC_LAYOUT_TILE 1
+#define _SN_MATPROC_LAYOUT_KERNEL 1
+
+#define _MK_MKPROC_EXPAND_INDEX_BUFFER \
+ size_t offset = UNSAFE_AS(size_t, task->padding.data[0]); \
+ size_t count = UNSAFE_AS(size_t, task->padding[1]);
+
+#define _MK_MKPROC_EXPAND_INDEX_KERNEL \
+ size_t common_i = UNSAFE_AS(size_t, task->common_i); \
+ size_t common_j = UNSAFE_AS(size_t, task->common_j); \
+ size_t common_k = UNSAFE_AS(size_t, task->common_k);
+
+#define _SN_MK_EXPAND_MEM(mem) _SN_MK_EXPAND_##mem
+#define _SN_MEM_LAYOUT(T) _SN_MATPROC_LAYOUT_##T
+
+#pragma endregion
+
+#define __mk_param(mem, param, T) \
+ static_assert((_SN_PARAM_STYLE(param)) - 1 == 0, \
+ "EXPAND_PARAM: invalid param style '" #param "'"); \
+ static_assert((_SN_MEM_LAYOUT(mem)) - 1 == 0, \
+ "EXPAND_PARAM: invalid mem layout '" #mem "'"); \
+ _SN_MK_EXPAND_PARAM(style, T) \
+ _SN_MK_EXPAND_MEM(layout)
+#endif // !SN_INTRINSIC_PARAM_EXPAND
diff --git a/StgSharp.Native/sn-head/sn_target.h b/StgSharp.Native/sn-head/sn_target.h
index 86e7a301..a3e25737 100644
--- a/StgSharp.Native/sn-head/sn_target.h
+++ b/StgSharp.Native/sn-head/sn_target.h
@@ -16,6 +16,28 @@
#define SN_ARCH_RISCV64 2
#define SN_ARCH_PPC64le 3
+#if defined(_M_X64) || defined(_M_AMD64) || defined(__x86_64__) || defined(__amd64__)
+#define SN_CURRENT_ARCH SN_ARCH_X86_64
+
+#elif defined(_M_ARM64) || defined(__aarch64__)
+#define SN_CURRENT_ARCH SN_ARCH_ARM64
+
+#elif defined(_M_ARM) || defined(__arm__)
+#define SN_CURRENT_ARCH SN_ARCH_ARM32
+
+#elif defined(_M_IX86) || defined(__i386__)
+#define SN_CURRENT_ARCH SN_ARCH_X86_32
+
+#elif defined(__powerpc64__) && defined(__LITTLE_ENDIAN__)
+#define SN_CURRENT_ARCH SN_ARCH_PPC64LE
+
+#elif defined(__riscv) && (__riscv_xlen == 64)
+#define SN_CURRENT_ARCH SN_ARCH_RISCV64
+
+#else
+#error "SN: Unsupported target architecture"
+#endif
+
/*
* Target selection policy:
* - Default (no SN_EXTERN_TARGET): fixed Windows + x86_64.
diff --git a/StgSharp.Native/sn-src/dllmain.c b/StgSharp.Native/sn-src/dllmain.c
index 9a77bcc2..0db4c993 100644
--- a/StgSharp.Native/sn-src/dllmain.c
+++ b/StgSharp.Native/sn-src/dllmain.c
@@ -1,5 +1,5 @@
#include "StgSharpNative.h"
-#include "sn_matkernel.h"
+#include "sn_intrinsic.matkernel.h"
#include
#ifdef _WIN32
diff --git a/StgSharp.Native/sn-src/m.basic.x86.c b/StgSharp.Native/sn-src/m.basic.x86.c
index dc88708f..ea45f062 100644
--- a/StgSharp.Native/sn-src/m.basic.x86.c
+++ b/StgSharp.Native/sn-src/m.basic.x86.c
@@ -5,7 +5,7 @@
#include "sn_intrinsic.h"
#include "sn_intrincontext.x86.h"
-DECLARE_PNL_PROC_ANS(float, sse, , clear)
+STD_MK_PROC_DECL(float, sse, , clear)
{
register __m128 zero = _mm_setzero_ps();
for (size_t i = 0; i < 4; i++) {
@@ -13,7 +13,7 @@ DECLARE_PNL_PROC_ANS(float, sse, , clear)
}
}
-DECLARE_PNL_PROC_ANS(float, avx, , clear)
+STD_MK_PROC_DECL(float, avx, , clear)
{
register __m256 zero = _mm256_setzero_ps();
for (size_t i = 0; i < 8; i++) {
@@ -21,7 +21,7 @@ DECLARE_PNL_PROC_ANS(float, avx, , clear)
}
}
-DECLARE_PNL_PROC_ANS(float, 512, , clear)
+STD_MK_PROC_DECL(float, 512, , clear)
{
register __m512 zero = _mm512_setzero_ps();
for (size_t i = 0; i < 16; i++) {
@@ -29,7 +29,7 @@ DECLARE_PNL_PROC_ANS(float, 512, , clear)
}
}
-DECLARE_PNL_PROC_ANS(double, sse, , clear)
+STD_MK_PROC_DECL(double, sse, , clear)
{
register __m128 zero = _mm_setzero_ps();
PANEL_COL_VEC((*ans), 0, 0) = zero;
@@ -38,7 +38,7 @@ DECLARE_PNL_PROC_ANS(double, sse, , clear)
PANEL_COL_VEC((*ans), 3, 0) = zero;
}
-DECLARE_PNL_PROC_ANS(double, avx, , clear)
+STD_MK_PROC_DECL(double, avx, , clear)
{
register __m256 zero = _mm256_setzero_ps();
for (size_t i = 0; i < 8; i++) {
@@ -46,7 +46,7 @@ DECLARE_PNL_PROC_ANS(double, avx, , clear)
}
}
-DECLARE_PNL_PROC_ANS(double, 512, , clear)
+STD_MK_PROC_DECL(double, 512, , clear)
{
register __m512 zero = _mm512_setzero_ps();
for (size_t i = 0; i < 16; i++) {
@@ -55,7 +55,7 @@ DECLARE_PNL_PROC_ANS(double, 512, , clear)
}
// Matrix transpose implementations
-DECLARE_KER_PROC_RIGHT_ANS(float, sse, ,transpose)
+STD_MK_PROC_DECL(float, sse, , transpose)
{
register __m128 col0 = right->f32_x[0];
register __m128 col1 = right->f32_x[1];
@@ -72,7 +72,7 @@ DECLARE_KER_PROC_RIGHT_ANS(float, sse, ,transpose)
ans->f32_x[3] = _mm_movehl_ps(tmp3, tmp1);
}
-DECLARE_KER_PROC_RIGHT_ANS(float, avx, ,transpose)
+STD_MK_PROC_DECL(float, avx, , transpose)
{
register __m256 col_low = right->f32_y[0];
register __m256 col_high = right->f32_y[1];
@@ -87,7 +87,7 @@ DECLARE_KER_PROC_RIGHT_ANS(float, avx, ,transpose)
ans->f32_y[1] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(3, 1, 3, 1));
}
-DECLARE_KER_PROC_RIGHT_ANS(float, 512, ,transpose)
+STD_MK_PROC_DECL(float, 512, , transpose)
{
register __m512 matrix = right->f32_z[0];
diff --git a/StgSharp.Native/sn-src/m.bufop.x86.c b/StgSharp.Native/sn-src/m.bufop.x86.c
index a258851c..27005876 100644
--- a/StgSharp.Native/sn-src/m.bufop.x86.c
+++ b/StgSharp.Native/sn-src/m.bufop.x86.c
@@ -3,9 +3,10 @@
#if SN_IS_ARCH(SN_ARCH_X86_64)
#include "sn_intrinsic.h"
-#include "sn_intrincontext.x86.h"
+#include "sn_intrinsic.std.h"
+#include "sn_intrinsic.context.x86.h"
-DECLARE_BUF_PROC_ANS_SCALAR(float, sse, ,fill)
+STD_MK_RPOC_DECL(float, sse, , fill)
{
register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -16,7 +17,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, sse, ,fill)
}
}
-DECLARE_BUF_PROC_ANS_SCALAR(float, avx, ,fill)
+DECLARE_BUF_PROC_ANS_SCALAR(float, avx, , fill)
{
register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -25,7 +26,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, avx, ,fill)
}
}
-DECLARE_BUF_PROC_ANS_SCALAR(float, 512, ,fill)
+DECLARE_BUF_PROC_ANS_SCALAR(float, 512, , fill)
{
register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -33,7 +34,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, 512, ,fill)
}
}
-DECLARE_BUF_PROC_ANS_SCALAR(double, sse, ,fill)
+DECLARE_BUF_PROC_ANS_SCALAR(double, sse, , fill)
{
register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -48,7 +49,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(double, sse, ,fill)
}
}
-DECLARE_BUF_PROC_ANS_SCALAR(double, avx, ,fill)
+DECLARE_BUF_PROC_ANS_SCALAR(double, avx, , fill)
{
register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -59,7 +60,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(double, avx, ,fill)
}
}
-DECLARE_BUF_PROC_ANS_SCALAR(double, 512, ,fill)
+DECLARE_BUF_PROC_ANS_SCALAR(double, 512, , fill)
{
register __m512d vec = _mm512_broadcastsd_pd(_mm_loadu_pd(scalar));
for (size_t i = 0; i < count; i++) {
@@ -68,8 +69,10 @@ DECLARE_BUF_PROC_ANS_SCALAR(double, 512, ,fill)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, ,add)
+STD_MK_PROC_DECL(float, sse, , add)
{
+ __mk_param(BUFFER, LEFT_RIGHT_ANS, float);
+
for (size_t i = 0; i < count; i++) {
register __m128 c0 = _mm_add_ps(left[i].f32_x[0], right[i].f32_x[0]);
register __m128 c1 = _mm_add_ps(left[i].f32_x[1], right[i].f32_x[1]);
@@ -83,7 +86,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, ,add)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, ,add)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , add)
{
for (size_t i = 0; i < count; i++) {
size_t s = sizeof(MAT_KERNEL(float));
@@ -94,14 +97,14 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, ,add)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, ,add)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , add)
{
for (size_t i = 0; i < count; i++) {
register __m512 c0 = _mm512_add_ps(left[i].f32_z[0], right[i].f32_z[0]);
ans[i].f32_z[0] = c0;
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, ,add)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , add)
{
for (size_t i = 0; i < count; i++) {
register __m128d c0 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[0]),
@@ -132,7 +135,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, ,add)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, ,add)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , add)
{
for (size_t i = 0; i < count; i++) {
size_t s = sizeof(MAT_KERNEL(float));
@@ -147,7 +150,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, ,add)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, ,add)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , add)
{
for (size_t i = 0; i < count; i++) {
register __m512d c0 = _mm512_add_pd(left[i].f64_z[0], right[i].f64_z[0]);
@@ -157,7 +160,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, ,add)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, ,sub)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m128 c0 = _mm_sub_ps(left[i].f32_x[0], right[i].f32_x[0]);
@@ -172,7 +175,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, ,sub)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, ,sub)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]);
@@ -182,7 +185,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, ,sub)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, ,sub)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]);
@@ -190,7 +193,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, ,sub)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, ,sub)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m128d c0 = _mm_sub_pd(left[i].f64_x[0], right[i].f64_x[0]);
@@ -213,7 +216,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, ,sub)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, ,sub)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]);
@@ -223,7 +226,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, ,sub)
}
}
-DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, ,sub)
+DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]);
@@ -231,7 +234,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, ,sub)
}
}
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, ,scalar_mul)
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, , scalar_mul)
{
register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -247,7 +250,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, ,scalar_mul)
}
}
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, ,scalar_mul)
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, , scalar_mul)
{
register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -259,7 +262,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, ,scalar_mul)
}
}
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, ,scalar_mul)
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, , scalar_mul)
{
register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -269,7 +272,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, ,scalar_mul)
}
}
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, ,scalar_mul)
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, , scalar_mul)
{
register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -293,7 +296,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, ,scalar_mul)
}
}
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, ,scalar_mul)
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, , scalar_mul)
{
register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -309,7 +312,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, ,scalar_mul)
}
}
-DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, ,scalar_mul)
+DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, , scalar_mul)
{
register __m512d vec = _mm512_broadcastsd_pd(_mm_load_pd(scalar));
for (size_t i = 0; i < count; i++) {
diff --git a/StgSharp.RegularAnalysis/StgSharp.RegularAnalysis.csproj b/StgSharp.RegularAnalysis/StgSharp.RegularAnalysis.csproj
index 0e1554fe..5321bf24 100644
--- a/StgSharp.RegularAnalysis/StgSharp.RegularAnalysis.csproj
+++ b/StgSharp.RegularAnalysis/StgSharp.RegularAnalysis.csproj
@@ -1,12 +1,5 @@
-
- net8.0
- enable
- enable
- preview
-
-
diff --git a/StgSharp.Script/StgSharp.Script.csproj b/StgSharp.Script/StgSharp.Script.csproj
index cefe009d..613c032a 100644
--- a/StgSharp.Script/StgSharp.Script.csproj
+++ b/StgSharp.Script/StgSharp.Script.csproj
@@ -1,13 +1,6 @@
-
- net8.0
- enable
- preview
- True
- x64
- Debug;Release;PerformanceDebug
-
+
diff --git a/StgSharp.TerminalDialogue/PostOpration.cs b/StgSharp.TerminalDialogue/PostOpration.cs
index 7b35b161..aac4b7ea 100644
--- a/StgSharp.TerminalDialogue/PostOpration.cs
+++ b/StgSharp.TerminalDialogue/PostOpration.cs
@@ -1,40 +1,31 @@
-//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
-// file="PostOpration.cs"
-// Project: StgSharp
-// AuthorGroup: Nitload Space
-// Copyright (c) Nitload Space. All rights reserved.
+// -----------------------------------------------------------------------
+// file="PostOpration"
+// Project: StgSharp
+// AuthorGroup: Nitload
+// Copyright (c) Nitload. All rights reserved.
//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the “Software”), to deal in the Software without restriction,
-// including without limitation the rights to use, copy, modify, merge,
-// publish, distribute, sublicense, and/or sell copies of the Software,
-// and to permit persons to whom the Software is furnished to do so,
-// subject to the following conditions:
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
//
-// The above copyright notice and
-// this permission notice shall be included in all copies
-// or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED “AS IS”,
-// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
-// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH
-// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//-----------------------------------------------------------------------
-//-----------------------------------------------------------------------
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-using Terminal.Gui;
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+using System.IO;
namespace StgSharpTerminalDialogue
{
@@ -43,14 +34,18 @@ namespace StgSharpTerminalDialogue
private static DialogueView _dv;
- internal static void PostOperation( string instruction, string operand )
+ internal static void PostOperation(
+ string instruction,
+ string operand
+ )
{
- switch( instruction ) {
+ switch (instruction)
+ {
case "posterror":
- _dv.ShowError( operand );
- using( StreamWriter sw = new StreamWriter(
- _callerServerPipe ) ) {
- sw.WriteLine( "ERRORGET" );
+ _dv.ShowError(operand);
+ using (StreamWriter sw = new StreamWriter(
+ _callerServerPipe)) {
+ sw.WriteLine("ERRORGET");
}
break;
default:
diff --git a/StgSharp.TerminalDialogue/Program.cs b/StgSharp.TerminalDialogue/Program.cs
index 1ab19a93..ff0c8703 100644
--- a/StgSharp.TerminalDialogue/Program.cs
+++ b/StgSharp.TerminalDialogue/Program.cs
@@ -1,37 +1,36 @@
-//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
-// file="Program.cs"
-// Project: StgSharp
-// AuthorGroup: Nitload Space
-// Copyright (c) Nitload Space. All rights reserved.
+// -----------------------------------------------------------------------
+// file="Program"
+// Project: StgSharp
+// AuthorGroup: Nitload
+// Copyright (c) Nitload. All rights reserved.
//
-// Permission is hereby granted, free of charge, to any person
-// obtaining a copy of this software and associated documentation
-// files (the “Software”), to deal in the Software without restriction,
-// including without limitation the rights to use, copy, modify, merge,
-// publish, distribute, sublicense, and/or sell copies of the Software,
-// and to permit persons to whom the Software is furnished to do so,
-// subject to the following conditions:
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
//
-// The above copyright notice and
-// this permission notice shall be included in all copies
-// or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED “AS IS”,
-// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
-// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-// ARISING FROM, OUT OF OR IN CONNECTION WITH
-// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-//-----------------------------------------------------------------------
-//-----------------------------------------------------------------------
+// -----------------------------------------------------------------------
+// -----------------------------------------------------------------------
using System;
using System.Globalization;
+using System.IO;
using System.IO.Pipes;
-
+using System.Threading;
+using System.Threading.Tasks;
using Terminal.Gui;
namespace StgSharpTerminalDialogue
@@ -41,57 +40,69 @@ namespace StgSharpTerminalDialogue
private static AnonymousPipeClientStream _callerClientPipe, _callerServerPipe;
- private static void Main( string[] args )
+ private static void Main(
+ string[] args
+ )
{
Application.Init();
- Console.CancelKeyPress += ( sender, e ) => {
+ Console.CancelKeyPress += (
+ sender,
+ e
+ ) => {
e.Cancel = true;
Application.RequestStop();
};
Task renderTask = Task.Factory
- .StartNew(
- () => {
- _dv = DialogueView.Single;
- Application.Run( view: _dv );
- } );
+ .StartNew((
+ ) => {
+ _dv = DialogueView.Single;
+ Application.Run(view:_dv);
+ }, CancellationToken.None, TaskCreationOptions.None,
+ TaskScheduler.Default);
/**/
- if( args.Length != 2 ) {
+ if (args.Length != 2)
+ {
Console.ReadLine();
Application.RequestStop();
}
/**/
_callerClientPipe = new AnonymousPipeClientStream(
- PipeDirection.In, args[ 0 ] );
+ PipeDirection.In, args[0]);
_callerServerPipe = new AnonymousPipeClientStream(
- PipeDirection.Out, args[ 1 ] );
+ PipeDirection.Out, args[1]);
- using( StreamReader clientReader = new StreamReader(
- _callerClientPipe ) ) {
- using( StreamWriter clientSender = new StreamWriter(
- _callerServerPipe ) ) {
+ using (StreamReader clientReader = new StreamReader(
+ _callerClientPipe))
+ {
+ using (StreamWriter clientSender = new StreamWriter(
+ _callerServerPipe))
+ {
clientSender.AutoFlush = true;
string temp = string.Empty;
- while( !temp!.Contains( "exit " ) && !renderTask.IsCompleted ) {
+ while (!temp!.Contains("exit ") && !renderTask.IsCompleted)
+ {
temp = clientReader.ReadLine()!;
temp = temp ?? string.Empty;
- if( string.IsNullOrEmpty( temp ) ) {
+ if (string.IsNullOrEmpty(temp))
+ {
continue;
}
- int index = temp.IndexOf( ' ' );
- if( index == -1 ) {
+ int index = temp.IndexOf(' ');
+ if (index == -1)
+ {
continue;
}
- string command = temp.Substring( 0, index );
- string operand = temp.Substring( index + 1 );
+ string command = temp[..index];
+ string operand = temp[(index + 1)..];
- PostOperation( command, operand );
+ PostOperation(command, operand);
}
}
}
diff --git a/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj b/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj
index d46be867..380f030d 100644
--- a/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj
+++ b/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj
@@ -1,54 +1,8 @@
-
- Exe
- net8.0
- enable
- enable
- build\StgSharpTerminalDialogue
- $(BaseOutputPath)
- false
- false
- True
- True
- x64
- none
- x64
- Debug;Release;PerformanceDebug
-
-
-
- False
-
-
-
- False
-
-
-
- True
-
-
-
- False
-
-
-
- False
-
-
-
- True
-
-
-
-
-
-
-
diff --git a/StgSharpDebug/StgSharpDebug.csproj b/StgSharpDebug/StgSharpDebug.csproj
index b6812a63..a803432f 100644
--- a/StgSharpDebug/StgSharpDebug.csproj
+++ b/StgSharpDebug/StgSharpDebug.csproj
@@ -2,73 +2,9 @@
Exe
- net8.0
- enable
- Preview
- warnings
- StgSharp.Program
- x64
- True
- True
- none
- False
- False
- MIT
- False
- x64;ARM64
- Always
- Debug;Release;PerformanceDebug
-
- False
- False
-
-
-
-
- False
- False
-
-
-
- True
- False
-
-
-
- True
- False
-
-
-
- True
- False
-
-
-
- True
- False
-
-
-
- true
- true
- true
- True
-
-
-
- Windows
-
-
- OSX
-
-
- Linux
-
-
@@ -108,9 +44,5 @@
-
-
-
-
diff --git a/StgSharpDevelop.sln b/StgSharpDevelop.sln
index 6a12b2f6..e8cb176e 100644
--- a/StgSharpDevelop.sln
+++ b/StgSharpDevelop.sln
@@ -1,5 +1,4 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
+Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32825.248
MinimumVisualStudioVersion = 10.0.40219.1
@@ -30,11 +29,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Script", "StgSharp
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Model", "StgSharp.Model\StgSharp.Model.csproj", "{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StgSharp.Mathematics", "StgSharp.Mathematics\StgSharp.Mathematics.csproj", "{9946599F-4D34-440F-840D-F9443D5AEFAA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Mathematics", "StgSharp.Mathematics\StgSharp.Mathematics.csproj", "{9946599F-4D34-440F-840D-F9443D5AEFAA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StgSharp.RegularAnalysis", "StgSharp.RegularAnalysis\StgSharp.RegularAnalysis.csproj", "{46339874-C6B8-4361-997E-2E30387E51F9}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.RegularAnalysis", "StgSharp.RegularAnalysis\StgSharp.RegularAnalysis.csproj", "{46339874-C6B8-4361-997E-2E30387E51F9}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StgSharp.Graphics", "StgSharp.Graphics\StgSharp.Graphics.csproj", "{80CD3DDE-0642-451D-82DF-0DE422FC6E34}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Graphics", "StgSharp.Graphics\StgSharp.Graphics.csproj", "{80CD3DDE-0642-451D-82DF-0DE422FC6E34}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -52,8 +51,8 @@ Global
{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.Build.0 = Debug|x64
{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
- {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.PerformanceDebug|x64.Build.0 = Release|x64
+ {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|ARM64.ActiveCfg = Release|ARM64
{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|ARM64.Build.0 = Release|ARM64
{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x64.ActiveCfg = Release|x64
@@ -64,8 +63,8 @@ Global
{610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x64.Build.0 = Debug|x64
{610B992B-BB34-49C3-9993-676C595FC12E}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
{610B992B-BB34-49C3-9993-676C595FC12E}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
- {610B992B-BB34-49C3-9993-676C595FC12E}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {610B992B-BB34-49C3-9993-676C595FC12E}.PerformanceDebug|x64.Build.0 = Release|x64
+ {610B992B-BB34-49C3-9993-676C595FC12E}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {610B992B-BB34-49C3-9993-676C595FC12E}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
{610B992B-BB34-49C3-9993-676C595FC12E}.Release|ARM64.ActiveCfg = Release|ARM64
{610B992B-BB34-49C3-9993-676C595FC12E}.Release|ARM64.Build.0 = Release|ARM64
{610B992B-BB34-49C3-9993-676C595FC12E}.Release|x64.ActiveCfg = Release|x64
@@ -76,8 +75,8 @@ Global
{0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.Debug|x64.Build.0 = Debug|x64
{0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
{0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
- {0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.PerformanceDebug|x64.Build.0 = Release|x64
+ {0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
{0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.Release|ARM64.ActiveCfg = Release|ARM64
{0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.Release|ARM64.Build.0 = Release|ARM64
{0D4D2A8F-2B5B-4F7D-8D63-4A9AF4B4C782}.Release|x64.ActiveCfg = Release|x64
@@ -86,10 +85,10 @@ Global
{20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|ARM64.Build.0 = Debug|ARM64
{20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x64.ActiveCfg = Debug|x64
{20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x64.Build.0 = Debug|x64
- {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|x64
- {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|x64
- {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|x64.Build.0 = Release|x64
+ {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
+ {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
+ {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {20CBFF26-6746-402E-992C-7B643E9423EB}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
{20CBFF26-6746-402E-992C-7B643E9423EB}.Release|ARM64.ActiveCfg = Release|ARM64
{20CBFF26-6746-402E-992C-7B643E9423EB}.Release|ARM64.Build.0 = Release|ARM64
{20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x64.ActiveCfg = Release|x64
@@ -98,34 +97,34 @@ Global
{10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|ARM64.Build.0 = Debug|ARM64
{10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.ActiveCfg = Debug|x64
{10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.Build.0 = Debug|x64
- {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|x64
- {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|x64
- {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|x64.Build.0 = Release|x64
- {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.ActiveCfg = Release|x64
- {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.Build.0 = Release|x64
+ {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
+ {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
+ {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
+ {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.ActiveCfg = Release|ARM64
+ {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.Build.0 = Release|ARM64
{10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.ActiveCfg = Release|x64
{10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.Build.0 = Release|x64
{5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|ARM64.Build.0 = Debug|ARM64
{5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.ActiveCfg = Debug|x64
{5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.Build.0 = Debug|x64
- {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|x64
- {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|x64
- {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|x64.Build.0 = Release|x64
- {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.ActiveCfg = Release|x64
- {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.Build.0 = Release|x64
+ {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
+ {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
+ {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
+ {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.ActiveCfg = Release|ARM64
+ {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.Build.0 = Release|ARM64
{5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.ActiveCfg = Release|x64
{5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.Build.0 = Release|x64
- {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.ActiveCfg = Debug|x64
- {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.Build.0 = Debug|x64
+ {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.Build.0 = Debug|ARM64
{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.ActiveCfg = Debug|x64
{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.Build.0 = Debug|x64
- {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|x64
- {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|x64
- {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|x64.Build.0 = Release|x64
+ {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
+ {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
+ {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|ARM64.ActiveCfg = Release|ARM64
{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|ARM64.Build.0 = Release|ARM64
{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.ActiveCfg = Release|x64
@@ -136,36 +135,36 @@ Global
{9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|x64.Build.0 = Debug|x64
{9946599F-4D34-440F-840D-F9443D5AEFAA}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
{9946599F-4D34-440F-840D-F9443D5AEFAA}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
- {9946599F-4D34-440F-840D-F9443D5AEFAA}.PerformanceDebug|x64.ActiveCfg = Release|x64
- {9946599F-4D34-440F-840D-F9443D5AEFAA}.PerformanceDebug|x64.Build.0 = Release|x64
+ {9946599F-4D34-440F-840D-F9443D5AEFAA}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {9946599F-4D34-440F-840D-F9443D5AEFAA}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
{9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|ARM64.ActiveCfg = Release|ARM64
{9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|ARM64.Build.0 = Release|ARM64
{9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|x64.ActiveCfg = Release|x64
{9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|x64.Build.0 = Release|x64
- {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|ARM64.Build.0 = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|x64.ActiveCfg = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|x64.Build.0 = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|ARM64.ActiveCfg = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|ARM64.Build.0 = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|x64.ActiveCfg = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|x64.Build.0 = Debug|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.Release|ARM64.ActiveCfg = Release|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.Release|ARM64.Build.0 = Release|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.Release|x64.ActiveCfg = Release|Any CPU
- {46339874-C6B8-4361-997E-2E30387E51F9}.Release|x64.Build.0 = Release|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|ARM64.Build.0 = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|x64.ActiveCfg = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|x64.Build.0 = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|ARM64.ActiveCfg = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|ARM64.Build.0 = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|x64.ActiveCfg = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|x64.Build.0 = Debug|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|ARM64.ActiveCfg = Release|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|ARM64.Build.0 = Release|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|x64.ActiveCfg = Release|Any CPU
- {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|x64.Build.0 = Release|Any CPU
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|ARM64.Build.0 = Debug|ARM64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|x64.ActiveCfg = Debug|x64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Debug|x64.Build.0 = Debug|x64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Release|ARM64.ActiveCfg = Release|ARM64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Release|ARM64.Build.0 = Release|ARM64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Release|x64.ActiveCfg = Release|x64
+ {46339874-C6B8-4361-997E-2E30387E51F9}.Release|x64.Build.0 = Release|x64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|ARM64.Build.0 = Debug|ARM64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|x64.ActiveCfg = Debug|x64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Debug|x64.Build.0 = Debug|x64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|ARM64.ActiveCfg = PerformanceDebug|ARM64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|ARM64.Build.0 = PerformanceDebug|ARM64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|x64.ActiveCfg = PerformanceDebug|x64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.PerformanceDebug|x64.Build.0 = PerformanceDebug|x64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|ARM64.ActiveCfg = Release|ARM64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|ARM64.Build.0 = Release|ARM64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|x64.ActiveCfg = Release|x64
+ {80CD3DDE-0642-451D-82DF-0DE422FC6E34}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -173,4 +172,4 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E13615C2-4C8D-4072-95A1-124440983818}
EndGlobalSection
-EndGlobal
+EndGlobal
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/CodeAnalysisResultManifest.txt b/obj/StgSharp.Native/Debug/x64/CodeAnalysisResultManifest.txt
new file mode 100644
index 00000000..1d10f245
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/CodeAnalysisResultManifest.txt differ
diff --git a/obj/StgSharp.Native/Debug/x64/NativeCodeAnalysis.read.1.tlog b/obj/StgSharp.Native/Debug/x64/NativeCodeAnalysis.read.1.tlog
new file mode 100644
index 00000000..2ae0d71f
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/NativeCodeAnalysis.read.1.tlog
@@ -0,0 +1 @@
+C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\2022\COMMUNITY\TEAM TOOLS\STATIC ANALYSIS TOOLS\\RULE SETS\NATIVERECOMMENDEDRULES.RULESET
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.dll.recipe b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.dll.recipe
new file mode 100644
index 00000000..06ac1409
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.dll.recipe
@@ -0,0 +1,11 @@
+
+
+
+
+ D:\platform-dev\build\win-x64\StgSharp.Native.dll
+
+
+
+
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.ilk b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.ilk
new file mode 100644
index 00000000..6a6e746c
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.ilk differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.log b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.log
new file mode 100644
index 00000000..125a6fa3
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.log
@@ -0,0 +1,439 @@
+ m.basic.x86.c
+ dllmain.c
+ m.bufop.x86.c
+ m.solve.x86.c
+ m.fma_tile.x86.c
+ s.factorial.x86.c
+ m.fma.x86.c
+ s.hash.x86.c
+ load_intrinsic.x86.c
+ load_glfw.c
+ simdid.x86.c
+ simdid_compare.x86.c
+ sn_native.c
+ str_string.c
+ t.affinity.c
+ vector.c
+D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
+D:\platform-dev\StgSharp.Native\sn-src\simdid_compare.x86.c(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/dllmain.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/m.fma.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/m.solve.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/m.bufop.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/s.factorial.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/load_glfw.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/t.affinity.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/s.hash.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/load_intrinsic.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/simdid.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/str_string.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/vector.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/m.fma_tile.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/simdid_compare.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/m.basic.x86.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c(6,1): error C1083: 无法打开包括文件: “sn_intrincontext.x86.h”: No such file or directory
+D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c(7,1): error C1083: 无法打开包括文件: “sn_intrincontext.x86.h”: No such file or directory
+D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c(9,1): error C1083: 无法打开包括文件: “sn_intrincontext.x86.h”: No such file or directory
+ vector_dot.c
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(144,45): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(144,47): error C2146: 语法错误: 缺少“)”(在标识符“sub”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(144,40): error C2081: “sse”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(144,47): error C2061: 语法错误: 标识符“sub”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(144,47): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(144,50): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(145,45): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(145,47): error C2146: 语法错误: 缺少“)”(在标识符“sub”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(145,40): error C2081: “avx”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(145,47): error C2061: 语法错误: 标识符“sub”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(145,47): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(145,50): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(146,40): error C2059: 语法错误:“常数”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(146,45): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(146,47): error C2146: 语法错误: 缺少“)”(在标识符“sub”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(146,47): error C2061: 语法错误: 标识符“sub”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(146,47): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(146,50): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(148,46): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(148,48): error C2146: 语法错误: 缺少“)”(在标识符“sub”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(148,41): error C2081: “sse”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(148,48): error C2061: 语法错误: 标识符“sub”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(148,48): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(148,51): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(149,46): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(149,48): error C2146: 语法错误: 缺少“)”(在标识符“sub”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(149,41): error C2081: “avx”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(149,48): error C2061: 语法错误: 标识符“sub”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(149,48): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(149,51): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(150,41): error C2059: 语法错误:“常数”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(150,46): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(150,48): error C2146: 语法错误: 缺少“)”(在标识符“sub”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(150,48): error C2061: 语法错误: 标识符“sub”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(150,48): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(150,51): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(10,52): error C2059: 语法错误:“,”
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(152,40): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(152,42): error C2146: 语法错误: 缺少“)”(在标识符“transpose”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(10,54): error C2146: 语法错误: 缺少“)”(在标识符“try_plu”的前面)
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(152,35): error C2081: “sse”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(10,47): error C2081: “sse”: 形参表中的名称非法
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(10,54): error C2061: 语法错误: 标识符“try_plu”
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(152,42): error C2061: 语法错误: 标识符“transpose”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(10,54): error C2059: 语法错误:“;”
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(152,42): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(152,51): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(10,61): error C2059: 语法错误:“)”
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(153,40): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(11,1): error C2449: 在文件范围内找到“{”(是否缺少函数头?)
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(153,42): error C2146: 语法错误: 缺少“)”(在标识符“transpose”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c(91,1): error C2059: 语法错误:“}”
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(153,35): error C2081: “avx”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\str_string.c(20,54): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据
+D:\platform-dev\StgSharp.Native\sn-src\str_string.c(35,54): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(153,42): error C2061: 语法错误: 标识符“transpose”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(153,42): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(153,51): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(154,35): error C2059: 语法错误:“常数”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(154,40): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(154,42): error C2146: 语法错误: 缺少“)”(在标识符“transpose”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(154,42): error C2061: 语法错误: 标识符“transpose”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(154,42): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(154,51): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(156,47): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(156,49): error C2146: 语法错误: 缺少“)”(在标识符“scalar_mul”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(156,42): error C2081: “sse”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(156,49): error C2061: 语法错误: 标识符“scalar_mul”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(156,49): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(156,59): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(157,47): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(157,49): error C2146: 语法错误: 缺少“)”(在标识符“scalar_mul”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(157,42): error C2081: “avx”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(157,49): error C2061: 语法错误: 标识符“scalar_mul”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(157,49): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(157,59): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\s.hash.x86.c(34,43): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据
+D:\platform-dev\StgSharp.Native\sn-src\s.hash.x86.c(35,50): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据
+D:\platform-dev\StgSharp.Native\sn-src\s.hash.x86.c(11,15): warning C4090: “初始化”: 不同的“const”限定符
+D:\platform-dev\StgSharp.Native\sn-src\s.hash.x86.c(11,34): warning C4090: “初始化”: 不同的“const”限定符
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(158,42): error C2059: 语法错误:“常数”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(158,47): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(158,49): error C2146: 语法错误: 缺少“)”(在标识符“scalar_mul”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(158,49): error C2061: 语法错误: 标识符“scalar_mul”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(158,49): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(158,59): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(160,48): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(160,50): error C2146: 语法错误: 缺少“)”(在标识符“scalar_mul”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(160,43): error C2081: “sse”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(160,50): error C2061: 语法错误: 标识符“scalar_mul”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(160,50): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(160,60): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(161,48): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(161,50): error C2146: 语法错误: 缺少“)”(在标识符“scalar_mul”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(161,43): error C2081: “avx”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(161,50): error C2061: 语法错误: 标识符“scalar_mul”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(161,50): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(161,60): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(162,43): error C2059: 语法错误:“常数”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(162,48): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(162,50): error C2146: 语法错误: 缺少“)”(在标识符“scalar_mul”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(162,50): error C2061: 语法错误: 标识符“scalar_mul”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(162,50): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(162,60): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(164,41): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(164,43): error C2146: 语法错误: 缺少“)”(在标识符“fill”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(164,36): error C2081: “sse”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(164,43): error C2061: 语法错误: 标识符“fill”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(164,43): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(164,47): error C2059: 语法错误:“)”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(165,41): error C2059: 语法错误:“,”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(165,43): error C2146: 语法错误: 缺少“)”(在标识符“fill”的前面)
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(165,36): error C2081: “avx”: 形参表中的名称非法
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(165,43): error C2061: 语法错误: 标识符“fill”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(165,43): error C2059: 语法错误:“;”
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-head\sn_intrinsic.context.x86.h(165,43): error C1003: 错误计数超过 100;正在停止编译
+ (编译源文件“sn-src/m.bufop.x86.c”)
+
+D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c(6,1): error C1083: 无法打开包括文件: “sn_intrincontext.x86.h”: No such file or directory
+D:\platform-dev\StgSharp.Native\sn-src\simdid_compare.x86.c(7,1): error C1083: 无法打开包括文件: “sn_intrincontext.x86.h”: No such file or directory
+D:\platform-dev\StgSharp.Native\sn-src\vector.c(6,41): warning C4047: “函数”:“const float *”与“__m128 (*)[1]”的间接级别不同
+D:\platform-dev\StgSharp.Native\sn-src\vector.c(6,41): warning C4024: “_mm_load_ps”: 形参和实参 1 的类型不同
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/sn_native.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
+D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c(6,1): error C1083: 无法打开包括文件: “sn_intrincontext.x86.h”: No such file or directory
+D:\platform-dev\StgSharp.Native\sn-src\sn_native.c(17,30): warning C4244: “函数”: 从“uint64_t”转换到“GLuint”,可能丢失数据
+D:\platform-dev\StgSharp.Native\sn-src\sn_native.c(19,43): warning C4244: “函数”: 从“uint64_t”转换到“GLuint”,可能丢失数据
+D:\platform-dev\StgSharp.Native\sn-src\sn_native.c(33,57): warning C4028: 形参 1 与声明不一致
+D:\platform-dev\StgSharp.Native\sn-src\sn_native.c(61,47): warning C4028: 形参 1 与声明不一致
+D:\platform-dev\StgSharp.Native\lib\glfw\glfw3.h(273,10): warning C4005: “GLFWAPI”: 宏重定义
+ (编译源文件“sn-src/vector_dot.c”)
+ D:\platform-dev\StgSharp.Native\sn-head\StgSharpNative.h(16,9):
+ 参见“GLFWAPI”的前一个定义
+
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.13136.write.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.13136.write.1.tlog
new file mode 100644
index 00000000..1d9cf28b
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.13136.write.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.command.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.command.1.tlog
new file mode 100644
index 00000000..6c6afe43
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.command.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.read.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.read.1.tlog
new file mode 100644
index 00000000..a5d59dea
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/CL.read.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/Cl.items.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/Cl.items.tlog
new file mode 100644
index 00000000..73ec43b8
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/Cl.items.tlog
@@ -0,0 +1,17 @@
+D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\m.basic.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\dllmain.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\dllmain.obj
+D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\m.bufop.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\m.solve.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\m.fma_tile.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\s.factorial.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\s.factorial.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\m.fma.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\s.hash.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\s.hash.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\load_intrinsic.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\load_glfw.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\load_glfw.obj
+D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\simdid.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\simdid_compare.x86.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\simdid_compare.x86.obj
+D:\platform-dev\StgSharp.Native\sn-src\sn_native.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\sn_native.obj
+D:\platform-dev\StgSharp.Native\sn-src\str_string.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\str_string.obj
+D:\platform-dev\StgSharp.Native\sn-src\t.affinity.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\t.affinity.obj
+D:\platform-dev\StgSharp.Native\sn-src\vector.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\vector.obj
+D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c;D:\platform-dev\obj\StgSharp.Native\Debug\x64\vector_dot.obj
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/StgSharp.Native.lastbuildstate b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/StgSharp.Native.lastbuildstate
new file mode 100644
index 00000000..71d59beb
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/StgSharp.Native.lastbuildstate
@@ -0,0 +1,2 @@
+PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.44.35207:TargetPlatformVersion=10.0.26100.0:
+Debug|x64|D:\platform-dev\|
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.command.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.command.1.tlog
new file mode 100644
index 00000000..7718b557
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.command.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.read.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.read.1.tlog
new file mode 100644
index 00000000..bc4ccb3e
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.read.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.write.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.write.1.tlog
new file mode 100644
index 00000000..5d2a3105
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/bscmake.write.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.command.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.command.1.tlog
new file mode 100644
index 00000000..a4586459
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.command.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.read.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.read.1.tlog
new file mode 100644
index 00000000..4f51fd42
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.read.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.secondary.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.secondary.1.tlog
new file mode 100644
index 00000000..a0bdb59b
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.secondary.1.tlog
@@ -0,0 +1,4 @@
+^D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\DLLMAIN.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\LOAD_GLFW.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\LOAD_INTRINSIC.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\M.BASIC.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\M.BUFOP.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\M.FMA.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\M.FMA_TILE.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\M.SOLVE.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\S.FACTORIAL.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\S.HASH.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\SIMDID.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\SIMDID_COMPARE.X86.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\SN_NATIVE.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\STR_STRING.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\T.AFFINITY.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\VECTOR.OBJ|D:\PLATFORM-DEV\OBJ\STGSHARP.NATIVE\DEBUG\X64\VECTOR_DOT.OBJ|D:\PLATFORM-DEV\STGSHARP.NATIVE\LIB\GLFW\GLFW3.LIB|D:\PLATFORM-DEV\STGSHARP.NATIVE\LIB\GLFW\GLFW3_MT.LIB
+D:\platform-dev\build\win-x64\StgSharp.Native.lib
+D:\platform-dev\build\win-x64\StgSharp.Native.EXP
+D:\platform-dev\obj\StgSharp.Native\Debug\x64\StgSharp.Native.ilk
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.write.1.tlog b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.write.1.tlog
new file mode 100644
index 00000000..5bb1ab18
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/link.write.1.tlog differ
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/unsuccessfulbuild b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.tlog/unsuccessfulbuild
new file mode 100644
index 00000000..e69de29b
diff --git a/obj/StgSharp.Native/Debug/x64/StgSharp.Native.vcxproj.FileListAbsolute.txt b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.vcxproj.FileListAbsolute.txt
new file mode 100644
index 00000000..f39f6cd5
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/StgSharp.Native.vcxproj.FileListAbsolute.txt
@@ -0,0 +1,2 @@
+D:\platform-dev\build\win-x64\StgSharp.Native.dll.lastcodeanalysissucceeded
+D:\platform-dev\obj\StgSharp.Native\Debug\x64\NativeCodeAnalysis.read.1.tlog
diff --git a/obj/StgSharp.Native/Debug/x64/dllmain.cod b/obj/StgSharp.Native/Debug/x64/dllmain.cod
new file mode 100644
index 00000000..481a0fde
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/dllmain.cod
@@ -0,0 +1,364 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+PUBLIC SN_ZERO_KERNEL
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+_BSS SEGMENT
+SN_ZERO_KERNEL DB 080H DUP (?)
+_BSS ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__F49407C4_sn_intrinsic@matkernel@h DB 01H
+__AE0F26BF_dllmain@c DB 01H
+msvcjmc ENDS
+PUBLIC DllMain
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$init_zero_kernel DD imagerel init_zero_kernel
+ DD imagerel init_zero_kernel+121
+ DD imagerel $unwind$init_zero_kernel
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$DllMain DD imagerel $LN9
+ DD imagerel $LN9+140
+ DD imagerel $unwind$DllMain
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$DllMain DD 025051c01H
+ DD 0117231cH
+ DD 07010001fH
+ DD 0500fH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$init_zero_kernel DD 025050f01H
+ DD 010a230fH
+ DD 070030025H
+ DD 05002H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\dllmain.c
+; COMDAT DllMain
+_TEXT SEGMENT
+tv64 = 192
+hModule$ = 240
+ul_reason_for_call$ = 248
+lpReserved$ = 256
+DllMain PROC ; COMDAT
+
+; 26 : {
+
+$LN9:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__AE0F26BF_dllmain@c
+ 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00028 90 npad 1
+
+; 27 : switch (ul_reason_for_call) {
+
+ 00029 8b 85 f8 00 00
+ 00 mov eax, DWORD PTR ul_reason_for_call$[rbp]
+ 0002f 89 85 c0 00 00
+ 00 mov DWORD PTR tv64[rbp], eax
+ 00035 83 bd c0 00 00
+ 00 00 cmp DWORD PTR tv64[rbp], 0
+ 0003c 74 38 je SHORT $LN7@DllMain
+ 0003e 83 bd c0 00 00
+ 00 01 cmp DWORD PTR tv64[rbp], 1
+ 00045 74 14 je SHORT $LN4@DllMain
+ 00047 83 bd c0 00 00
+ 00 02 cmp DWORD PTR tv64[rbp], 2
+ 0004e 74 18 je SHORT $LN5@DllMain
+ 00050 83 bd c0 00 00
+ 00 03 cmp DWORD PTR tv64[rbp], 3
+ 00057 74 16 je SHORT $LN6@DllMain
+ 00059 eb 22 jmp SHORT $LN2@DllMain
+$LN4@DllMain:
+
+; 28 : case DLL_PROCESS_ATTACH:
+; 29 : init_zero_kernel();
+
+ 0005b e8 00 00 00 00 call init_zero_kernel
+ 00060 90 npad 1
+
+; 30 : return 1;
+
+ 00061 b8 01 00 00 00 mov eax, 1
+ 00066 eb 1a jmp SHORT $LN1@DllMain
+$LN5@DllMain:
+
+; 31 : case DLL_THREAD_ATTACH:
+; 32 : return 1;
+
+ 00068 b8 01 00 00 00 mov eax, 1
+ 0006d eb 13 jmp SHORT $LN1@DllMain
+$LN6@DllMain:
+
+; 33 : case DLL_THREAD_DETACH:
+; 34 : return 1;
+
+ 0006f b8 01 00 00 00 mov eax, 1
+ 00074 eb 0c jmp SHORT $LN1@DllMain
+$LN7@DllMain:
+
+; 35 : case DLL_PROCESS_DETACH:
+; 36 : return 1;
+
+ 00076 b8 01 00 00 00 mov eax, 1
+ 0007b eb 05 jmp SHORT $LN1@DllMain
+$LN2@DllMain:
+
+; 37 : break;
+; 38 : }
+; 39 : return TRUE;
+
+ 0007d b8 01 00 00 00 mov eax, 1
+$LN1@DllMain:
+
+; 40 : }
+
+ 00082 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 00089 5f pop rdi
+ 0008a 5d pop rbp
+ 0008b c3 ret 0
+DllMain ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\dllmain.c
+; COMDAT init_zero_kernel
+_TEXT SEGMENT
+c$1 = 4
+r$2 = 36
+init_zero_kernel PROC ; COMDAT
+
+; 17 : {
+
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0000f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__AE0F26BF_dllmain@c
+ 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001b 90 npad 1
+
+; 18 : for (int c = 0; c < 4; ++c) {
+
+ 0001c c7 45 04 00 00
+ 00 00 mov DWORD PTR c$1[rbp], 0
+ 00023 eb 08 jmp SHORT $LN4@init_zero_
+$LN2@init_zero_:
+ 00025 8b 45 04 mov eax, DWORD PTR c$1[rbp]
+ 00028 ff c0 inc eax
+ 0002a 89 45 04 mov DWORD PTR c$1[rbp], eax
+$LN4@init_zero_:
+ 0002d 83 7d 04 04 cmp DWORD PTR c$1[rbp], 4
+ 00031 7d 3c jge SHORT $LN3@init_zero_
+
+; 19 : for (int r = 0; r < 4; ++r) {
+
+ 00033 c7 45 24 00 00
+ 00 00 mov DWORD PTR r$2[rbp], 0
+ 0003a eb 08 jmp SHORT $LN7@init_zero_
+$LN5@init_zero_:
+ 0003c 8b 45 24 mov eax, DWORD PTR r$2[rbp]
+ 0003f ff c0 inc eax
+ 00041 89 45 24 mov DWORD PTR r$2[rbp], eax
+$LN7@init_zero_:
+ 00044 83 7d 24 04 cmp DWORD PTR r$2[rbp], 4
+ 00048 7d 23 jge SHORT $LN6@init_zero_
+
+; 20 : SN_ZERO_KERNEL.m[r][c] = 0;
+
+ 0004a 48 63 45 24 movsxd rax, DWORD PTR r$2[rbp]
+ 0004e 48 6b c0 20 imul rax, rax, 32 ; 00000020H
+ 00052 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:SN_ZERO_KERNEL
+ 00059 48 03 c8 add rcx, rax
+ 0005c 48 8b c1 mov rax, rcx
+ 0005f 48 63 4d 04 movsxd rcx, DWORD PTR c$1[rbp]
+ 00063 48 c7 04 c8 00
+ 00 00 00 mov QWORD PTR [rax+rcx*8], 0
+
+; 21 : }
+
+ 0006b eb cf jmp SHORT $LN5@init_zero_
+$LN6@init_zero_:
+
+; 22 : }
+
+ 0006d eb b6 jmp SHORT $LN2@init_zero_
+$LN3@init_zero_:
+
+; 23 : }
+
+ 0006f 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00076 5f pop rdi
+ 00077 5d pop rbp
+ 00078 c3 ret 0
+init_zero_kernel ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/dllmain.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/dllmain.nativecodeanalysis.sarif
new file mode 100644
index 00000000..2ff1ed48
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/dllmain.nativecodeanalysis.sarif
@@ -0,0 +1,115 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/dllmain.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "c7bdcaa511f5eec55c641d61b9b747d99a329c02b14cd8529d19bce4ac2a6f74"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/dllmain.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/dllmain.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/dllmain.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/dllmain.obj b/obj/StgSharp.Native/Debug/x64/dllmain.obj
new file mode 100644
index 00000000..9835484e
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/dllmain.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/dllmain.sbr b/obj/StgSharp.Native/Debug/x64/dllmain.sbr
new file mode 100644
index 00000000..79df9b05
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/dllmain.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/load_glfw.cod b/obj/StgSharp.Native/Debug/x64/load_glfw.cod
new file mode 100644
index 00000000..025c44e9
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/load_glfw.cod
@@ -0,0 +1,1347 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__2C019110_load_glfw@c DB 01H
+msvcjmc ENDS
+PUBLIC load_glfw_functions
+PUBLIC __JustMyCode_Default
+EXTRN glfwInit:PROC
+EXTRN glfwTerminate:PROC
+EXTRN glfwInitHint:PROC
+EXTRN glfwGetVersion:PROC
+EXTRN glfwGetVersionString:PROC
+EXTRN glfwGetError:PROC
+EXTRN glfwSetErrorCallback:PROC
+EXTRN glfwGetMonitors:PROC
+EXTRN glfwGetPrimaryMonitor:PROC
+EXTRN glfwGetMonitorPos:PROC
+EXTRN glfwGetMonitorWorkarea:PROC
+EXTRN glfwGetMonitorPhysicalSize:PROC
+EXTRN glfwGetMonitorContentScale:PROC
+EXTRN glfwGetMonitorName:PROC
+EXTRN glfwSetMonitorUserPointer:PROC
+EXTRN glfwGetMonitorUserPointer:PROC
+EXTRN glfwSetMonitorCallback:PROC
+EXTRN glfwGetVideoModes:PROC
+EXTRN glfwGetVideoMode:PROC
+EXTRN glfwSetGamma:PROC
+EXTRN glfwGetGammaRamp:PROC
+EXTRN glfwSetGammaRamp:PROC
+EXTRN glfwDefaultWindowHints:PROC
+EXTRN glfwWindowHint:PROC
+EXTRN glfwWindowHintString:PROC
+EXTRN glfwCreateWindow:PROC
+EXTRN glfwDestroyWindow:PROC
+EXTRN glfwWindowShouldClose:PROC
+EXTRN glfwSetWindowShouldClose:PROC
+EXTRN glfwSetWindowTitle:PROC
+EXTRN glfwSetWindowIcon:PROC
+EXTRN glfwGetWindowPos:PROC
+EXTRN glfwSetWindowPos:PROC
+EXTRN glfwGetWindowSize:PROC
+EXTRN glfwSetWindowSizeLimits:PROC
+EXTRN glfwSetWindowAspectRatio:PROC
+EXTRN glfwSetWindowSize:PROC
+EXTRN glfwGetFramebufferSize:PROC
+EXTRN glfwGetWindowFrameSize:PROC
+EXTRN glfwGetWindowContentScale:PROC
+EXTRN glfwGetWindowOpacity:PROC
+EXTRN glfwSetWindowOpacity:PROC
+EXTRN glfwIconifyWindow:PROC
+EXTRN glfwRestoreWindow:PROC
+EXTRN glfwMaximizeWindow:PROC
+EXTRN glfwShowWindow:PROC
+EXTRN glfwHideWindow:PROC
+EXTRN glfwFocusWindow:PROC
+EXTRN glfwRequestWindowAttention:PROC
+EXTRN glfwGetWindowMonitor:PROC
+EXTRN glfwSetWindowMonitor:PROC
+EXTRN glfwGetWindowAttrib:PROC
+EXTRN glfwSetWindowAttrib:PROC
+EXTRN glfwSetWindowUserPointer:PROC
+EXTRN glfwGetWindowUserPointer:PROC
+EXTRN glfwSetWindowPosCallback:PROC
+EXTRN glfwSetWindowSizeCallback:PROC
+EXTRN glfwSetWindowCloseCallback:PROC
+EXTRN glfwSetWindowRefreshCallback:PROC
+EXTRN glfwSetWindowFocusCallback:PROC
+EXTRN glfwSetWindowIconifyCallback:PROC
+EXTRN glfwSetWindowMaximizeCallback:PROC
+EXTRN glfwSetFramebufferSizeCallback:PROC
+EXTRN glfwSetWindowContentScaleCallback:PROC
+EXTRN glfwPollEvents:PROC
+EXTRN glfwWaitEvents:PROC
+EXTRN glfwWaitEventsTimeout:PROC
+EXTRN glfwPostEmptyEvent:PROC
+EXTRN glfwGetInputMode:PROC
+EXTRN glfwSetInputMode:PROC
+EXTRN glfwRawMouseMotionSupported:PROC
+EXTRN glfwGetKeyName:PROC
+EXTRN glfwGetKeyScancode:PROC
+EXTRN glfwGetKey:PROC
+EXTRN glfwGetMouseButton:PROC
+EXTRN glfwGetCursorPos:PROC
+EXTRN glfwSetCursorPos:PROC
+EXTRN glfwCreateCursor:PROC
+EXTRN glfwCreateStandardCursor:PROC
+EXTRN glfwDestroyCursor:PROC
+EXTRN glfwSetCursor:PROC
+EXTRN glfwSetKeyCallback:PROC
+EXTRN glfwSetCharCallback:PROC
+EXTRN glfwSetCharModsCallback:PROC
+EXTRN glfwSetMouseButtonCallback:PROC
+EXTRN glfwSetCursorPosCallback:PROC
+EXTRN glfwSetCursorEnterCallback:PROC
+EXTRN glfwSetScrollCallback:PROC
+EXTRN glfwSetDropCallback:PROC
+EXTRN glfwJoystickPresent:PROC
+EXTRN glfwGetJoystickAxes:PROC
+EXTRN glfwGetJoystickButtons:PROC
+EXTRN glfwGetJoystickHats:PROC
+EXTRN glfwGetJoystickName:PROC
+EXTRN glfwGetJoystickGUID:PROC
+EXTRN glfwSetJoystickUserPointer:PROC
+EXTRN glfwGetJoystickUserPointer:PROC
+EXTRN glfwJoystickIsGamepad:PROC
+EXTRN glfwSetJoystickCallback:PROC
+EXTRN glfwUpdateGamepadMappings:PROC
+EXTRN glfwGetGamepadName:PROC
+EXTRN glfwGetGamepadState:PROC
+EXTRN glfwSetClipboardString:PROC
+EXTRN glfwGetClipboardString:PROC
+EXTRN glfwGetTime:PROC
+EXTRN glfwSetTime:PROC
+EXTRN glfwGetTimerValue:PROC
+EXTRN glfwGetTimerFrequency:PROC
+EXTRN glfwMakeContextCurrent:PROC
+EXTRN glfwGetCurrentContext:PROC
+EXTRN glfwSwapBuffers:PROC
+EXTRN glfwSwapInterval:PROC
+EXTRN glfwExtensionSupported:PROC
+EXTRN glfwGetProcAddress:PROC
+EXTRN glfwVulkanSupported:PROC
+EXTRN glfwGetRequiredInstanceExtensions:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$load_glfw_functions DD imagerel $LN3
+ DD imagerel $LN3+2429
+ DD imagerel $unwind$load_glfw_functions
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$load_glfw_functions DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\load_glfw.c
+; COMDAT load_glfw_functions
+_TEXT SEGMENT
+table$ = 224
+load_glfw_functions PROC ; COMDAT
+
+; 6 : {
+
+$LN3:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__2C019110_load_glfw@c
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 7 : table->glfwCreateCursor = glfwCreateCursor;
+
+ 00020 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00027 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwCreateCursor
+ 0002e 48 89 08 mov QWORD PTR [rax], rcx
+
+; 8 : table->glfwCreateStandardCursor = glfwCreateStandardCursor;
+
+ 00031 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00038 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwCreateStandardCursor
+ 0003f 48 89 48 08 mov QWORD PTR [rax+8], rcx
+
+; 9 : table->glfwCreateWindow = glfwCreateWindow;
+
+ 00043 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0004a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwCreateWindow
+ 00051 48 89 48 10 mov QWORD PTR [rax+16], rcx
+
+; 10 : table->glfwDefaultWindowHints = glfwDefaultWindowHints;
+
+ 00055 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0005c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwDefaultWindowHints
+ 00063 48 89 48 18 mov QWORD PTR [rax+24], rcx
+
+; 11 : table->glfwDestroyCursor = glfwDestroyCursor;
+
+ 00067 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0006e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwDestroyCursor
+ 00075 48 89 48 20 mov QWORD PTR [rax+32], rcx
+
+; 12 : table->glfwDestroyWindow = glfwDestroyWindow;
+
+ 00079 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00080 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwDestroyWindow
+ 00087 48 89 48 28 mov QWORD PTR [rax+40], rcx
+
+; 13 : table->glfwExtensionSupported = glfwExtensionSupported;
+
+ 0008b 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00092 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwExtensionSupported
+ 00099 48 89 48 30 mov QWORD PTR [rax+48], rcx
+
+; 14 : table->glfwFocusWindow = glfwFocusWindow;
+
+ 0009d 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 000a4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwFocusWindow
+ 000ab 48 89 48 38 mov QWORD PTR [rax+56], rcx
+
+; 15 : table->glfwGetClipboardString = glfwGetClipboardString;
+
+ 000af 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 000b6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetClipboardString
+ 000bd 48 89 48 40 mov QWORD PTR [rax+64], rcx
+
+; 16 : table->glfwGetCurrentContext = glfwGetCurrentContext;
+
+ 000c1 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 000c8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetCurrentContext
+ 000cf 48 89 48 48 mov QWORD PTR [rax+72], rcx
+
+; 17 : table->glfwGetCursorPos = glfwGetCursorPos;
+
+ 000d3 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 000da 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetCursorPos
+ 000e1 48 89 48 50 mov QWORD PTR [rax+80], rcx
+
+; 18 : table->glfwGetError = glfwGetError;
+
+ 000e5 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 000ec 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetError
+ 000f3 48 89 48 58 mov QWORD PTR [rax+88], rcx
+
+; 19 : table->glfwGetFrameBufferSize = glfwGetFramebufferSize;
+
+ 000f7 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 000fe 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetFramebufferSize
+ 00105 48 89 48 60 mov QWORD PTR [rax+96], rcx
+
+; 20 : table->glfwGetGamepadName = glfwGetGamepadName;
+
+ 00109 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00110 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetGamepadName
+ 00117 48 89 48 68 mov QWORD PTR [rax+104], rcx
+
+; 21 : table->glfwGetGamepadState = glfwGetGamepadState;
+
+ 0011b 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00122 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetGamepadState
+ 00129 48 89 48 70 mov QWORD PTR [rax+112], rcx
+
+; 22 : table->glfwGetGammaRamp = glfwGetGammaRamp;
+
+ 0012d 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00134 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetGammaRamp
+ 0013b 48 89 48 78 mov QWORD PTR [rax+120], rcx
+
+; 23 : table->glfwGetInputMode = glfwGetInputMode;
+
+ 0013f 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00146 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetInputMode
+ 0014d 48 89 88 80 00
+ 00 00 mov QWORD PTR [rax+128], rcx
+
+; 24 : table->glfwGetJoystickAxes = glfwGetJoystickAxes;
+
+ 00154 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0015b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetJoystickAxes
+ 00162 48 89 88 88 00
+ 00 00 mov QWORD PTR [rax+136], rcx
+
+; 25 : table->glfwGetJoystickButtons = glfwGetJoystickButtons;
+
+ 00169 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00170 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetJoystickButtons
+ 00177 48 89 88 90 00
+ 00 00 mov QWORD PTR [rax+144], rcx
+
+; 26 : table->glfwGetJoystickGUID = glfwGetJoystickGUID;
+
+ 0017e 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00185 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetJoystickGUID
+ 0018c 48 89 88 98 00
+ 00 00 mov QWORD PTR [rax+152], rcx
+
+; 27 : table->glfwGetJoystickHats = glfwGetJoystickHats;
+
+ 00193 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0019a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetJoystickHats
+ 001a1 48 89 88 a0 00
+ 00 00 mov QWORD PTR [rax+160], rcx
+
+; 28 : table->glfwGetJoystickName = glfwGetJoystickName;
+
+ 001a8 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 001af 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetJoystickName
+ 001b6 48 89 88 a8 00
+ 00 00 mov QWORD PTR [rax+168], rcx
+
+; 29 : table->glfwGetJoystickUserPointer = glfwGetJoystickUserPointer;
+
+ 001bd 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 001c4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetJoystickUserPointer
+ 001cb 48 89 88 b0 00
+ 00 00 mov QWORD PTR [rax+176], rcx
+
+; 30 : table->glfwGetKey = glfwGetKey;
+
+ 001d2 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 001d9 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetKey
+ 001e0 48 89 88 b8 00
+ 00 00 mov QWORD PTR [rax+184], rcx
+
+; 31 : table->glfwGetKeyName = glfwGetKeyName;
+
+ 001e7 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 001ee 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetKeyName
+ 001f5 48 89 88 c0 00
+ 00 00 mov QWORD PTR [rax+192], rcx
+
+; 32 : table->glfwGetKeyScancode = glfwGetKeyScancode;
+
+ 001fc 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00203 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetKeyScancode
+ 0020a 48 89 88 c8 00
+ 00 00 mov QWORD PTR [rax+200], rcx
+
+; 33 : table->glfwGetMonitorContentScale = glfwGetMonitorContentScale;
+
+ 00211 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00218 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMonitorContentScale
+ 0021f 48 89 88 d0 00
+ 00 00 mov QWORD PTR [rax+208], rcx
+
+; 34 : table->glfwGetMonitorName = glfwGetMonitorName;
+
+ 00226 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0022d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMonitorName
+ 00234 48 89 88 d8 00
+ 00 00 mov QWORD PTR [rax+216], rcx
+
+; 35 : table->glfwGetMonitorPhysicalSize = glfwGetMonitorPhysicalSize;
+
+ 0023b 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00242 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMonitorPhysicalSize
+ 00249 48 89 88 e0 00
+ 00 00 mov QWORD PTR [rax+224], rcx
+
+; 36 : table->glfwGetMonitorPos = glfwGetMonitorPos;
+
+ 00250 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00257 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMonitorPos
+ 0025e 48 89 88 e8 00
+ 00 00 mov QWORD PTR [rax+232], rcx
+
+; 37 : table->glfwGetMonitors = glfwGetMonitors;
+
+ 00265 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0026c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMonitors
+ 00273 48 89 88 f0 00
+ 00 00 mov QWORD PTR [rax+240], rcx
+
+; 38 : table->glfwGetMonitorUserPointer = glfwGetMonitorUserPointer;
+
+ 0027a 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00281 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMonitorUserPointer
+ 00288 48 89 88 f8 00
+ 00 00 mov QWORD PTR [rax+248], rcx
+
+; 39 : table->glfwGetMonitorWorkarea = glfwGetMonitorWorkarea;
+
+ 0028f 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00296 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMonitorWorkarea
+ 0029d 48 89 88 00 01
+ 00 00 mov QWORD PTR [rax+256], rcx
+
+; 40 : table->glfwGetMouseButton = glfwGetMouseButton;
+
+ 002a4 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 002ab 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetMouseButton
+ 002b2 48 89 88 08 01
+ 00 00 mov QWORD PTR [rax+264], rcx
+
+; 41 : table->glfwGetPrimaryMonitor = glfwGetPrimaryMonitor;
+
+ 002b9 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 002c0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetPrimaryMonitor
+ 002c7 48 89 88 10 01
+ 00 00 mov QWORD PTR [rax+272], rcx
+
+; 42 : table->glfwGetProcAddress = glfwGetProcAddress;
+
+ 002ce 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 002d5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetProcAddress
+ 002dc 48 89 88 18 01
+ 00 00 mov QWORD PTR [rax+280], rcx
+
+; 43 : table->glfwGetRequiredInstanceExtensions = glfwGetRequiredInstanceExtensions;
+
+ 002e3 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 002ea 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetRequiredInstanceExtensions
+ 002f1 48 89 88 20 01
+ 00 00 mov QWORD PTR [rax+288], rcx
+
+; 44 : table->glfwGetTime = glfwGetTime;
+
+ 002f8 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 002ff 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetTime
+ 00306 48 89 88 28 01
+ 00 00 mov QWORD PTR [rax+296], rcx
+
+; 45 : table->glfwGetTimerFrequency = glfwGetTimerFrequency;
+
+ 0030d 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00314 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetTimerFrequency
+ 0031b 48 89 88 30 01
+ 00 00 mov QWORD PTR [rax+304], rcx
+
+; 46 : table->glfwGetTimerValue = glfwGetTimerValue;
+
+ 00322 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00329 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetTimerValue
+ 00330 48 89 88 38 01
+ 00 00 mov QWORD PTR [rax+312], rcx
+
+; 47 : table->glfwGetVersion = glfwGetVersion;
+
+ 00337 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0033e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetVersion
+ 00345 48 89 88 40 01
+ 00 00 mov QWORD PTR [rax+320], rcx
+
+; 48 : table->glfwGetVersionString = glfwGetVersionString;
+
+ 0034c 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00353 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetVersionString
+ 0035a 48 89 88 48 01
+ 00 00 mov QWORD PTR [rax+328], rcx
+
+; 49 : table->glfwGetVideoMode = glfwGetVideoMode;
+
+ 00361 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00368 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetVideoMode
+ 0036f 48 89 88 50 01
+ 00 00 mov QWORD PTR [rax+336], rcx
+
+; 50 : table->glfwGetVideoModes = glfwGetVideoModes;
+
+ 00376 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0037d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetVideoModes
+ 00384 48 89 88 58 01
+ 00 00 mov QWORD PTR [rax+344], rcx
+
+; 51 : table->glfwGetWindowAttrib = glfwGetWindowAttrib;
+
+ 0038b 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00392 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowAttrib
+ 00399 48 89 88 60 01
+ 00 00 mov QWORD PTR [rax+352], rcx
+
+; 52 : table->glfwGetWindowContentScale = glfwGetWindowContentScale;
+
+ 003a0 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 003a7 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowContentScale
+ 003ae 48 89 88 68 01
+ 00 00 mov QWORD PTR [rax+360], rcx
+
+; 53 : table->glfwGetWindowFrameSize = glfwGetWindowFrameSize;
+
+ 003b5 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 003bc 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowFrameSize
+ 003c3 48 89 88 70 01
+ 00 00 mov QWORD PTR [rax+368], rcx
+
+; 54 : table->glfwGetWindowMonitor = glfwGetWindowMonitor;
+
+ 003ca 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 003d1 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowMonitor
+ 003d8 48 89 88 78 01
+ 00 00 mov QWORD PTR [rax+376], rcx
+
+; 55 : table->glfwGetWindowOpacity = glfwGetWindowOpacity;
+
+ 003df 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 003e6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowOpacity
+ 003ed 48 89 88 80 01
+ 00 00 mov QWORD PTR [rax+384], rcx
+
+; 56 : table->glfwGetWindowPos = glfwGetWindowPos;
+
+ 003f4 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 003fb 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowPos
+ 00402 48 89 88 88 01
+ 00 00 mov QWORD PTR [rax+392], rcx
+
+; 57 : table->glfwGetWindowSize = glfwGetWindowSize;
+
+ 00409 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00410 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowSize
+ 00417 48 89 88 90 01
+ 00 00 mov QWORD PTR [rax+400], rcx
+
+; 58 : table->glfwGetWindowUserPointer = glfwGetWindowUserPointer;
+
+ 0041e 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00425 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwGetWindowUserPointer
+ 0042c 48 89 88 98 01
+ 00 00 mov QWORD PTR [rax+408], rcx
+
+; 59 : table->glfwHideWindow = glfwHideWindow;
+
+ 00433 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0043a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwHideWindow
+ 00441 48 89 88 a0 01
+ 00 00 mov QWORD PTR [rax+416], rcx
+
+; 60 : table->glfwIconifyWindow = glfwIconifyWindow;
+
+ 00448 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0044f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwIconifyWindow
+ 00456 48 89 88 a8 01
+ 00 00 mov QWORD PTR [rax+424], rcx
+
+; 61 : table->glfwInit = glfwInit;
+
+ 0045d 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00464 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwInit
+ 0046b 48 89 88 b0 01
+ 00 00 mov QWORD PTR [rax+432], rcx
+
+; 62 : table->glfwInitHint = glfwInitHint;
+
+ 00472 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00479 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwInitHint
+ 00480 48 89 88 b8 01
+ 00 00 mov QWORD PTR [rax+440], rcx
+
+; 63 : table->glfwJoystickIsGamePad = glfwJoystickIsGamepad;
+
+ 00487 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0048e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwJoystickIsGamepad
+ 00495 48 89 88 c0 01
+ 00 00 mov QWORD PTR [rax+448], rcx
+
+; 64 : table->glfwJoystickPresent = glfwJoystickPresent;
+
+ 0049c 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 004a3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwJoystickPresent
+ 004aa 48 89 88 c8 01
+ 00 00 mov QWORD PTR [rax+456], rcx
+
+; 65 : table->glfwMakeContextCurrent = glfwMakeContextCurrent;
+
+ 004b1 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 004b8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwMakeContextCurrent
+ 004bf 48 89 88 d0 01
+ 00 00 mov QWORD PTR [rax+464], rcx
+
+; 66 : table->glfwMaximizeWindow = glfwMaximizeWindow;
+
+ 004c6 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 004cd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwMaximizeWindow
+ 004d4 48 89 88 d8 01
+ 00 00 mov QWORD PTR [rax+472], rcx
+
+; 67 : table->glfwPollEvents = glfwPollEvents;
+
+ 004db 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 004e2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwPollEvents
+ 004e9 48 89 88 e0 01
+ 00 00 mov QWORD PTR [rax+480], rcx
+
+; 68 : table->glfwPostEmptyEvent = glfwPostEmptyEvent;
+
+ 004f0 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 004f7 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwPostEmptyEvent
+ 004fe 48 89 88 e8 01
+ 00 00 mov QWORD PTR [rax+488], rcx
+
+; 69 : table->glfwRawMouseMotionSupported = glfwRawMouseMotionSupported;
+
+ 00505 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0050c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwRawMouseMotionSupported
+ 00513 48 89 88 f0 01
+ 00 00 mov QWORD PTR [rax+496], rcx
+
+; 70 : table->glfwRequestWindowAttention = glfwRequestWindowAttention;
+
+ 0051a 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00521 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwRequestWindowAttention
+ 00528 48 89 88 f8 01
+ 00 00 mov QWORD PTR [rax+504], rcx
+
+; 71 : table->glfwRestoreWindow = glfwRestoreWindow;
+
+ 0052f 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00536 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwRestoreWindow
+ 0053d 48 89 88 00 02
+ 00 00 mov QWORD PTR [rax+512], rcx
+
+; 72 : table->glfwSetCharCallback = glfwSetCharCallback;
+
+ 00544 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0054b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetCharCallback
+ 00552 48 89 88 08 02
+ 00 00 mov QWORD PTR [rax+520], rcx
+
+; 73 : table->glfwSetCharModsCallback = glfwSetCharModsCallback;
+
+ 00559 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00560 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetCharModsCallback
+ 00567 48 89 88 10 02
+ 00 00 mov QWORD PTR [rax+528], rcx
+
+; 74 : table->glfwSetClipboardString = glfwSetClipboardString;
+
+ 0056e 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00575 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetClipboardString
+ 0057c 48 89 88 18 02
+ 00 00 mov QWORD PTR [rax+536], rcx
+
+; 75 : table->glfwSetCursor = glfwSetCursor;
+
+ 00583 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0058a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetCursor
+ 00591 48 89 88 20 02
+ 00 00 mov QWORD PTR [rax+544], rcx
+
+; 76 : table->glfwSetCursorEnterCallback = glfwSetCursorEnterCallback;
+
+ 00598 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0059f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetCursorEnterCallback
+ 005a6 48 89 88 28 02
+ 00 00 mov QWORD PTR [rax+552], rcx
+
+; 77 : table->glfwSetCursorPos = glfwSetCursorPos;
+
+ 005ad 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 005b4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetCursorPos
+ 005bb 48 89 88 30 02
+ 00 00 mov QWORD PTR [rax+560], rcx
+
+; 78 : table->glfwSetCursorPosCallback = glfwSetCursorPosCallback;
+
+ 005c2 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 005c9 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetCursorPosCallback
+ 005d0 48 89 88 38 02
+ 00 00 mov QWORD PTR [rax+568], rcx
+
+; 79 : table->glfwSetDropCallback = glfwSetDropCallback;
+
+ 005d7 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 005de 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetDropCallback
+ 005e5 48 89 88 40 02
+ 00 00 mov QWORD PTR [rax+576], rcx
+
+; 80 : table->glfwSetErrorCallback = glfwSetErrorCallback;
+
+ 005ec 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 005f3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetErrorCallback
+ 005fa 48 89 88 48 02
+ 00 00 mov QWORD PTR [rax+584], rcx
+
+; 81 : table->glfwSetFramebufferSizeCallback = glfwSetFramebufferSizeCallback;
+
+ 00601 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00608 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetFramebufferSizeCallback
+ 0060f 48 89 88 50 02
+ 00 00 mov QWORD PTR [rax+592], rcx
+
+; 82 : table->glfwSetGamma = glfwSetGamma;
+
+ 00616 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0061d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetGamma
+ 00624 48 89 88 58 02
+ 00 00 mov QWORD PTR [rax+600], rcx
+
+; 83 : table->glfwSetGammaRamp = glfwSetGammaRamp;
+
+ 0062b 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00632 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetGammaRamp
+ 00639 48 89 88 60 02
+ 00 00 mov QWORD PTR [rax+608], rcx
+
+; 84 : table->glfwSetInputMode = glfwSetInputMode;
+
+ 00640 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00647 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetInputMode
+ 0064e 48 89 88 68 02
+ 00 00 mov QWORD PTR [rax+616], rcx
+
+; 85 : table->glfwSetJoystickCallback = glfwSetJoystickCallback;
+
+ 00655 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0065c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetJoystickCallback
+ 00663 48 89 88 70 02
+ 00 00 mov QWORD PTR [rax+624], rcx
+
+; 86 : table->glfwSetJoystickUserPointer = glfwSetJoystickUserPointer;
+
+ 0066a 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00671 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetJoystickUserPointer
+ 00678 48 89 88 78 02
+ 00 00 mov QWORD PTR [rax+632], rcx
+
+; 87 : table->glfwSetKeyCallback = glfwSetKeyCallback;
+
+ 0067f 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00686 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetKeyCallback
+ 0068d 48 89 88 80 02
+ 00 00 mov QWORD PTR [rax+640], rcx
+
+; 88 : table->glfwSetMonitorCallback = glfwSetMonitorCallback;
+
+ 00694 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0069b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetMonitorCallback
+ 006a2 48 89 88 88 02
+ 00 00 mov QWORD PTR [rax+648], rcx
+
+; 89 : table->glfwSetMonitorUserPointer = glfwSetMonitorUserPointer;
+
+ 006a9 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 006b0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetMonitorUserPointer
+ 006b7 48 89 88 90 02
+ 00 00 mov QWORD PTR [rax+656], rcx
+
+; 90 : table->glfwSetMouseButtonCallback = glfwSetMouseButtonCallback;
+
+ 006be 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 006c5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetMouseButtonCallback
+ 006cc 48 89 88 98 02
+ 00 00 mov QWORD PTR [rax+664], rcx
+
+; 91 : table->glfwSetScrollCallback = glfwSetScrollCallback;
+
+ 006d3 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 006da 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetScrollCallback
+ 006e1 48 89 88 a0 02
+ 00 00 mov QWORD PTR [rax+672], rcx
+
+; 92 : table->glfwSetTime = glfwSetTime;
+
+ 006e8 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 006ef 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetTime
+ 006f6 48 89 88 a8 02
+ 00 00 mov QWORD PTR [rax+680], rcx
+
+; 93 : table->glfwSetWindowAspectRatio = glfwSetWindowAspectRatio;
+
+ 006fd 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00704 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowAspectRatio
+ 0070b 48 89 88 b0 02
+ 00 00 mov QWORD PTR [rax+688], rcx
+
+; 94 : table->glfwSetWindowAttrib = glfwSetWindowAttrib;
+
+ 00712 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00719 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowAttrib
+ 00720 48 89 88 b8 02
+ 00 00 mov QWORD PTR [rax+696], rcx
+
+; 95 : table->glfwSetWindowCloseCallback = glfwSetWindowCloseCallback;
+
+ 00727 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0072e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowCloseCallback
+ 00735 48 89 88 c0 02
+ 00 00 mov QWORD PTR [rax+704], rcx
+
+; 96 : table->glfwSetWindowContentScaleCallback = glfwSetWindowContentScaleCallback;
+
+ 0073c 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00743 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowContentScaleCallback
+ 0074a 48 89 88 c8 02
+ 00 00 mov QWORD PTR [rax+712], rcx
+
+; 97 : table->glfwSetWindowFocusCallback = glfwSetWindowFocusCallback;
+
+ 00751 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00758 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowFocusCallback
+ 0075f 48 89 88 d0 02
+ 00 00 mov QWORD PTR [rax+720], rcx
+
+; 98 : table->glfwSetWindowIcon = glfwSetWindowIcon;
+
+ 00766 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0076d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowIcon
+ 00774 48 89 88 d8 02
+ 00 00 mov QWORD PTR [rax+728], rcx
+
+; 99 : table->glfwSetWindowIconifyCallback = glfwSetWindowIconifyCallback;
+
+ 0077b 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00782 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowIconifyCallback
+ 00789 48 89 88 e0 02
+ 00 00 mov QWORD PTR [rax+736], rcx
+
+; 100 : table->glfwSetWindowMaximizeCallback = glfwSetWindowMaximizeCallback;
+
+ 00790 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00797 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowMaximizeCallback
+ 0079e 48 89 88 e8 02
+ 00 00 mov QWORD PTR [rax+744], rcx
+
+; 101 : table->glfwSetWindowMonitor = glfwSetWindowMonitor;
+
+ 007a5 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 007ac 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowMonitor
+ 007b3 48 89 88 f0 02
+ 00 00 mov QWORD PTR [rax+752], rcx
+
+; 102 : table->glfwSetWindowOpacity = glfwSetWindowOpacity;
+
+ 007ba 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 007c1 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowOpacity
+ 007c8 48 89 88 f8 02
+ 00 00 mov QWORD PTR [rax+760], rcx
+
+; 103 : table->glfwSetWindowPos = glfwSetWindowPos;
+
+ 007cf 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 007d6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowPos
+ 007dd 48 89 88 00 03
+ 00 00 mov QWORD PTR [rax+768], rcx
+
+; 104 : table->glfwSetWindowPosCallback = glfwSetWindowPosCallback;
+
+ 007e4 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 007eb 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowPosCallback
+ 007f2 48 89 88 08 03
+ 00 00 mov QWORD PTR [rax+776], rcx
+
+; 105 : table->glfwSetWindowRefreshCallback = glfwSetWindowRefreshCallback;
+
+ 007f9 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00800 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowRefreshCallback
+ 00807 48 89 88 10 03
+ 00 00 mov QWORD PTR [rax+784], rcx
+
+; 106 : table->glfwSetWindowShouldClose = glfwSetWindowShouldClose;
+
+ 0080e 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00815 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowShouldClose
+ 0081c 48 89 88 18 03
+ 00 00 mov QWORD PTR [rax+792], rcx
+
+; 107 : table->glfwSetWindowSize = glfwSetWindowSize;
+
+ 00823 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0082a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowSize
+ 00831 48 89 88 20 03
+ 00 00 mov QWORD PTR [rax+800], rcx
+
+; 108 : table->glfwSetWindowSizeCallback = glfwSetWindowSizeCallback;
+
+ 00838 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0083f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowSizeCallback
+ 00846 48 89 88 28 03
+ 00 00 mov QWORD PTR [rax+808], rcx
+
+; 109 : table->glfwSetWindowSizeLimits = glfwSetWindowSizeLimits;
+
+ 0084d 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00854 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowSizeLimits
+ 0085b 48 89 88 30 03
+ 00 00 mov QWORD PTR [rax+816], rcx
+
+; 110 : table->glfwSetWindowTitle = glfwSetWindowTitle;
+
+ 00862 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00869 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowTitle
+ 00870 48 89 88 38 03
+ 00 00 mov QWORD PTR [rax+824], rcx
+
+; 111 : table->glfwSetWindowUserPointer = glfwSetWindowUserPointer;
+
+ 00877 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0087e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSetWindowUserPointer
+ 00885 48 89 88 40 03
+ 00 00 mov QWORD PTR [rax+832], rcx
+
+; 112 : table->glfwShowWindow = glfwShowWindow;
+
+ 0088c 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00893 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwShowWindow
+ 0089a 48 89 88 48 03
+ 00 00 mov QWORD PTR [rax+840], rcx
+
+; 113 : table->glfwSwapBuffers = glfwSwapBuffers;
+
+ 008a1 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 008a8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSwapBuffers
+ 008af 48 89 88 50 03
+ 00 00 mov QWORD PTR [rax+848], rcx
+
+; 114 : table->glfwSwapInterval = glfwSwapInterval;
+
+ 008b6 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 008bd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwSwapInterval
+ 008c4 48 89 88 58 03
+ 00 00 mov QWORD PTR [rax+856], rcx
+
+; 115 : table->glfwTerminate = glfwTerminate;
+
+ 008cb 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 008d2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwTerminate
+ 008d9 48 89 88 60 03
+ 00 00 mov QWORD PTR [rax+864], rcx
+
+; 116 : table->glfwUpdateGamePadMappings = glfwUpdateGamepadMappings;
+
+ 008e0 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 008e7 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwUpdateGamepadMappings
+ 008ee 48 89 88 68 03
+ 00 00 mov QWORD PTR [rax+872], rcx
+
+; 117 : table->glfwVulkanSupported = glfwVulkanSupported;
+
+ 008f5 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 008fc 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwVulkanSupported
+ 00903 48 89 88 70 03
+ 00 00 mov QWORD PTR [rax+880], rcx
+
+; 118 : table->glfwWaitEvents = glfwWaitEvents;
+
+ 0090a 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00911 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwWaitEvents
+ 00918 48 89 88 78 03
+ 00 00 mov QWORD PTR [rax+888], rcx
+
+; 119 : table->glfwWaitEventsTimeout = glfwWaitEventsTimeout;
+
+ 0091f 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00926 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwWaitEventsTimeout
+ 0092d 48 89 88 80 03
+ 00 00 mov QWORD PTR [rax+896], rcx
+
+; 120 : table->glfwWindowHint = glfwWindowHint;
+
+ 00934 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 0093b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwWindowHint
+ 00942 48 89 88 88 03
+ 00 00 mov QWORD PTR [rax+904], rcx
+
+; 121 : table->glfwWindowHintString = glfwWindowHintString;
+
+ 00949 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00950 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwWindowHintString
+ 00957 48 89 88 90 03
+ 00 00 mov QWORD PTR [rax+912], rcx
+
+; 122 : table->glfwWindowShouldClose = glfwWindowShouldClose;
+
+ 0095e 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR table$[rbp]
+ 00965 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:glfwWindowShouldClose
+ 0096c 48 89 88 98 03
+ 00 00 mov QWORD PTR [rax+920], rcx
+
+; 123 : }
+
+ 00973 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0097a 5f pop rdi
+ 0097b 5d pop rbp
+ 0097c c3 ret 0
+load_glfw_functions ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/load_glfw.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/load_glfw.nativecodeanalysis.sarif
new file mode 100644
index 00000000..96a4ac83
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/load_glfw.nativecodeanalysis.sarif
@@ -0,0 +1,107 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/load_glfw.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "17d82e2b6a8411d940ffc1769b7d90a683af9d1c0fe2d58cda2d18400337fdf5"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/load_glfw.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/load_glfw.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/load_glfw.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/load_glfw.obj b/obj/StgSharp.Native/Debug/x64/load_glfw.obj
new file mode 100644
index 00000000..690565d2
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/load_glfw.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/load_glfw.sbr b/obj/StgSharp.Native/Debug/x64/load_glfw.sbr
new file mode 100644
index 00000000..5c0cf30d
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/load_glfw.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.cod b/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.cod
new file mode 100644
index 00000000..1dc01b0a
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.cod
@@ -0,0 +1,1320 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__CE29950A_sn_intrincontext@x86@h DB 01H
+__518EAA70_load_intrinsic@x86@c DB 01H
+msvcjmc ENDS
+PUBLIC load_intrinsic_function
+PUBLIC __JustMyCode_Default
+PUBLIC ??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ ; `string'
+PUBLIC ??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@ ; `string'
+EXTRN __imp__wassert:PROC
+EXTRN sn_get_simd_level_global:PROC
+EXTRN f32_normalize:PROC
+EXTRN float_buf_add_sse:PROC
+EXTRN float_buf_add_avx:PROC
+EXTRN float_buf_add_512:PROC
+EXTRN double_buf_add_sse:PROC
+EXTRN double_buf_add_avx:PROC
+EXTRN double_buf_add_512:PROC
+EXTRN float_buf_sub_sse:PROC
+EXTRN float_buf_sub_avx:PROC
+EXTRN float_buf_sub_512:PROC
+EXTRN double_buf_sub_sse:PROC
+EXTRN double_buf_sub_avx:PROC
+EXTRN double_buf_sub_512:PROC
+EXTRN float_kernel_transpose_sse:PROC
+EXTRN float_kernel_transpose_avx:PROC
+EXTRN float_kernel_transpose_512:PROC
+EXTRN float_buf_scalar_mul_sse:PROC
+EXTRN float_buf_scalar_mul_avx:PROC
+EXTRN float_buf_scalar_mul_512:PROC
+EXTRN double_buf_scalar_mul_sse:PROC
+EXTRN double_buf_scalar_mul_avx:PROC
+EXTRN double_buf_scalar_mul_512:PROC
+EXTRN float_buf_fill_sse:PROC
+EXTRN float_buf_fill_avx:PROC
+EXTRN float_buf_fill_512:PROC
+EXTRN double_buf_fill_sse:PROC
+EXTRN double_buf_fill_avx:PROC
+EXTRN double_buf_fill_512:PROC
+EXTRN float_pnl_clear_sse:PROC
+EXTRN float_pnl_clear_avx:PROC
+EXTRN float_pnl_clear_512:PROC
+EXTRN double_pnl_clear_sse:PROC
+EXTRN double_pnl_clear_avx:PROC
+EXTRN double_pnl_clear_512:PROC
+EXTRN float_kernel_fma_sse:PROC
+EXTRN float_kernel_fma_avx:PROC
+EXTRN float_kernel_fma_avx_fma:PROC
+EXTRN float_kernel_fma_512:PROC
+EXTRN double_kernel_fma_sse:PROC
+EXTRN double_kernel_fma_avx:PROC
+EXTRN double_kernel_fma_avx_fma:PROC
+EXTRN double_kernel_fma_512:PROC
+EXTRN float_kernel_tile_fma_sse:PROC
+EXTRN float_kernel_tile_fma_avx:PROC
+EXTRN float_kernel_tile_fma_avx_fma:PROC
+EXTRN float_kernel_tile_fma_512:PROC
+EXTRN double_kernel_tile_fma_sse:PROC
+EXTRN double_kernel_tile_fma_avx:PROC
+EXTRN double_kernel_tile_fma_avx_fma:PROC
+EXTRN double_kernel_tile_fma_512:PROC
+EXTRN factorial_simd_sse:PROC
+EXTRN city_hash_simplify_sse:PROC
+EXTRN index_pair_sse:PROC
+EXTRN _RTC_CheckStackVars:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$load_intrinsic_function DD imagerel $LN13
+ DD imagerel $LN13+282
+ DD imagerel $unwind$load_intrinsic_function
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$load_intrinsic_sse DD imagerel load_intrinsic_sse
+ DD imagerel load_intrinsic_sse+613
+ DD imagerel $unwind$load_intrinsic_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$load_intrinsic_avx DD imagerel load_intrinsic_avx
+ DD imagerel load_intrinsic_avx+871
+ DD imagerel $unwind$load_intrinsic_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$load_intrinsic_512 DD imagerel load_intrinsic_512
+ DD imagerel load_intrinsic_512+613
+ DD imagerel $unwind$load_intrinsic_512
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT ??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@
+CONST SEGMENT
+??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@ DB 'i'
+ DB 00H, 'n', 00H, 't', 00H, 'r', 00H, 'i', 00H, 'n', 00H, 's', 00H
+ DB 'i', 00H, 'c', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'n', 00H, 't'
+ DB 00H, 'e', 00H, 'x', 00H, 't', 00H, ' ', 00H, '!', 00H, '=', 00H
+ DB ' ', 00H, 'N', 00H, 'U', 00H, 'L', 00H, 'L', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+CONST SEGMENT
+??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ DB 'D'
+ DB 00H, ':', 00H, '\', 00H, 'p', 00H, 'l', 00H, 'a', 00H, 't', 00H
+ DB 'f', 00H, 'o', 00H, 'r', 00H, 'm', 00H, '-', 00H, 'd', 00H, 'e'
+ DB 00H, 'v', 00H, '\', 00H, 'S', 00H, 't', 00H, 'g', 00H, 'S', 00H
+ DB 'h', 00H, 'a', 00H, 'r', 00H, 'p', 00H, '.', 00H, 'N', 00H, 'a'
+ DB 00H, 't', 00H, 'i', 00H, 'v', 00H, 'e', 00H, '\', 00H, 's', 00H
+ DB 'n', 00H, '-', 00H, 's', 00H, 'r', 00H, 'c', 00H, '\', 00H, 'l'
+ DB 00H, 'o', 00H, 'a', 00H, 'd', 00H, '_', 00H, 'i', 00H, 'n', 00H
+ DB 't', 00H, 'r', 00H, 'i', 00H, 'n', 00H, 's', 00H, 'i', 00H, 'c'
+ DB 00H, '.', 00H, 'x', 00H, '8', 00H, '6', 00H, '.', 00H, 'c', 00H
+ DB 00H, 00H ; `string'
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$load_intrinsic_512 DD 025051801H
+ DD 01132318H
+ DD 0700c001dH
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$load_intrinsic_avx DD 025051801H
+ DD 01132318H
+ DD 0700c0029H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$load_intrinsic_sse DD 025051801H
+ DD 01132318H
+ DD 0700c001dH
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$load_intrinsic_function DD 025053101H
+ DD 01132318H
+ DD 0700c0025H
+ DD 0500bH
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+load_intrinsic_function$rtcName$0 DB 073H
+ DB 069H
+ DB 06dH
+ DB 064H
+ DB 069H
+ DB 064H
+ DB 00H
+ ORG $+9
+load_intrinsic_function$rtcVarDesc DD 028H
+ DD 08H
+ DQ FLAT:load_intrinsic_function$rtcName$0
+ ORG $+48
+load_intrinsic_function$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:load_intrinsic_function$rtcVarDesc
+CONST ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c
+; COMDAT load_intrinsic_512
+_TEXT SEGMENT
+context$ = 224
+id$ = 232
+load_intrinsic_512 PROC ; COMDAT
+
+; 115 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 116 : context->city_hash_simplify = city_hash_simplify_sse;
+
+ 00025 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 0002c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse
+ 00033 48 89 08 mov QWORD PTR [rax], rcx
+
+; 117 : context->factorial_simd = factorial_simd_sse;
+
+ 00036 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 0003d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:factorial_simd_sse
+ 00044 48 89 48 08 mov QWORD PTR [rax+8], rcx
+
+; 118 : context->index_pair = index_pair_sse;
+
+ 00048 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 0004f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:index_pair_sse
+ 00056 48 89 48 10 mov QWORD PTR [rax+16], rcx
+
+; 119 :
+; 120 : context->mat[F32].buffer_add = BUF_PROC(float, 512, , add);
+
+ 0005a b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0005f 48 6b c0 00 imul rax, rax, 0
+ 00063 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0006a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_add_512
+ 00071 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
+
+; 121 : context->mat[F32].buffer_fill = BUF_PROC(float, 512, , fill);
+
+ 00076 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0007b 48 6b c0 00 imul rax, rax, 0
+ 0007f 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00086 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_fill_512
+ 0008d 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
+
+; 122 : context->mat[F32].buffer_scalar_mul = BUF_PROC(float, 512, , scalar_mul);
+
+ 00092 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00097 48 6b c0 00 imul rax, rax, 0
+ 0009b 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000a2 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_scalar_mul_512
+ 000a9 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
+
+; 123 : context->mat[F32].buffer_sub = BUF_PROC(float, 512, , sub);
+
+ 000ae b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000b3 48 6b c0 00 imul rax, rax, 0
+ 000b7 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000be 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_sub_512
+ 000c5 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
+
+; 124 : context->mat[F32].buffer_transpose = KER_PROC(float, 512, , transpose);
+
+ 000ca b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000cf 48 6b c0 00 imul rax, rax, 0
+ 000d3 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000da 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_transpose_512
+ 000e1 48 89 54 01 40 mov QWORD PTR [rcx+rax+64], rdx
+
+; 125 : context->mat[F32].clear_panel = PNL_PROC(float, 512, , clear);
+
+ 000e6 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000eb 48 6b c0 00 imul rax, rax, 0
+ 000ef 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000f6 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_pnl_clear_512
+ 000fd 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
+
+; 126 : context->mat[F32].ker_fma = KER_PROC(float, 512, , fma);
+
+ 00102 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00107 48 6b c0 00 imul rax, rax, 0
+ 0010b 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00112 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_fma_512
+ 00119 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
+
+; 127 : context->mat[F32].ker_tile_fma = KERTILE_PROC(float, 512, , fma);
+
+ 0011e b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00123 48 6b c0 00 imul rax, rax, 0
+ 00127 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0012e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_tile_fma_512
+ 00135 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
+
+; 128 : context->mat[F32].pivot = NULL;
+
+ 0013a b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0013f 48 6b c0 00 imul rax, rax, 0
+ 00143 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0014a 48 c7 44 01 60
+ 00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
+
+; 129 :
+; 130 : context->mat[F64].buffer_add = BUF_PROC(double, 512, , add);
+
+ 00153 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00158 48 6b c0 01 imul rax, rax, 1
+ 0015c 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00163 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_add_512
+ 0016a 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
+
+; 131 : context->mat[F64].buffer_fill = BUF_PROC(double, 512, , fill);
+
+ 0016f b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00174 48 6b c0 01 imul rax, rax, 1
+ 00178 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0017f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_fill_512
+ 00186 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
+
+; 132 : context->mat[F64].buffer_scalar_mul = BUF_PROC(double, 512, , scalar_mul);
+
+ 0018b b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00190 48 6b c0 01 imul rax, rax, 1
+ 00194 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0019b 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_scalar_mul_512
+ 001a2 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
+
+; 133 : context->mat[F64].buffer_sub = BUF_PROC(double, 512, , sub);
+
+ 001a7 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001ac 48 6b c0 01 imul rax, rax, 1
+ 001b0 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001b7 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_sub_512
+ 001be 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
+
+; 134 : context->mat[F64].buffer_transpose = NULL;
+
+ 001c3 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001c8 48 6b c0 01 imul rax, rax, 1
+ 001cc 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001d3 48 c7 44 01 40
+ 00 00 00 00 mov QWORD PTR [rcx+rax+64], 0
+
+; 135 : context->mat[F64].clear_panel = PNL_PROC(double, 512, , clear);
+
+ 001dc b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001e1 48 6b c0 01 imul rax, rax, 1
+ 001e5 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001ec 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_pnl_clear_512
+ 001f3 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
+
+; 136 : context->mat[F64].ker_fma = KER_PROC(double, 512, , fma);
+
+ 001f8 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001fd 48 6b c0 01 imul rax, rax, 1
+ 00201 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00208 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_kernel_fma_512
+ 0020f 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
+
+; 137 : context->mat[F64].ker_tile_fma = KERTILE_PROC(double, 512, , fma);
+
+ 00214 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00219 48 6b c0 01 imul rax, rax, 1
+ 0021d 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00224 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_kernel_tile_fma_512
+ 0022b 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
+
+; 138 : context->mat[F64].pivot = NULL;
+
+ 00230 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00235 48 6b c0 01 imul rax, rax, 1
+ 00239 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00240 48 c7 44 01 60
+ 00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
+
+; 139 :
+; 140 : context->vec_f32_normalize_3 = f32_normalize;
+
+ 00249 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 00250 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:f32_normalize
+ 00257 48 89 48 18 mov QWORD PTR [rax+24], rcx
+
+; 141 : }
+
+ 0025b 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00262 5f pop rdi
+ 00263 5d pop rbp
+ 00264 c3 ret 0
+load_intrinsic_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c
+; COMDAT load_intrinsic_avx
+_TEXT SEGMENT
+avx_seg$ = 4
+is_fma$ = 36
+is_f16c$ = 68
+tv69 = 276
+tv74 = 276
+tv141 = 280
+tv148 = 280
+tv183 = 280
+tv190 = 280
+context$ = 320
+id$ = 328
+load_intrinsic_avx PROC ; COMDAT
+
+; 78 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 79 : char avx_seg = id.make_byte[5];
+
+ 00025 b8 01 00 00 00 mov eax, 1
+ 0002a 48 6b c0 05 imul rax, rax, 5
+ 0002e 0f b6 84 05 48
+ 01 00 00 movzx eax, BYTE PTR id$[rbp+rax]
+ 00036 88 45 04 mov BYTE PTR avx_seg$[rbp], al
+
+; 80 : char is_fma = (avx_seg & SIMDID_AVX_FMA) != 0;
+
+ 00039 0f be 45 04 movsx eax, BYTE PTR avx_seg$[rbp]
+ 0003d 83 e0 04 and eax, 4
+ 00040 85 c0 test eax, eax
+ 00042 74 0c je SHORT $LN3@load_intri
+ 00044 c7 85 14 01 00
+ 00 01 00 00 00 mov DWORD PTR tv69[rbp], 1
+ 0004e eb 0a jmp SHORT $LN4@load_intri
+$LN3@load_intri:
+ 00050 c7 85 14 01 00
+ 00 00 00 00 00 mov DWORD PTR tv69[rbp], 0
+$LN4@load_intri:
+ 0005a 0f b6 85 14 01
+ 00 00 movzx eax, BYTE PTR tv69[rbp]
+ 00061 88 45 24 mov BYTE PTR is_fma$[rbp], al
+
+; 81 : char is_f16c = (avx_seg & SIMDID_AVX_F16C) != 0;
+
+ 00064 0f be 45 04 movsx eax, BYTE PTR avx_seg$[rbp]
+ 00068 83 e0 08 and eax, 8
+ 0006b 85 c0 test eax, eax
+ 0006d 74 0c je SHORT $LN5@load_intri
+ 0006f c7 85 14 01 00
+ 00 01 00 00 00 mov DWORD PTR tv74[rbp], 1
+ 00079 eb 0a jmp SHORT $LN6@load_intri
+$LN5@load_intri:
+ 0007b c7 85 14 01 00
+ 00 00 00 00 00 mov DWORD PTR tv74[rbp], 0
+$LN6@load_intri:
+ 00085 0f b6 85 14 01
+ 00 00 movzx eax, BYTE PTR tv74[rbp]
+ 0008c 88 45 44 mov BYTE PTR is_f16c$[rbp], al
+
+; 82 :
+; 83 : context->city_hash_simplify = city_hash_simplify_sse;
+
+ 0008f 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 00096 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse
+ 0009d 48 89 08 mov QWORD PTR [rax], rcx
+
+; 84 : context->factorial_simd = factorial_simd_sse;
+
+ 000a0 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 000a7 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:factorial_simd_sse
+ 000ae 48 89 48 08 mov QWORD PTR [rax+8], rcx
+
+; 85 : context->index_pair = index_pair_sse;
+
+ 000b2 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 000b9 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:index_pair_sse
+ 000c0 48 89 48 10 mov QWORD PTR [rax+16], rcx
+
+; 86 :
+; 87 : context->mat[F32].buffer_add = BUF_PROC(float, avx, , add);
+
+ 000c4 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000c9 48 6b c0 00 imul rax, rax, 0
+ 000cd 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000d4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_add_avx
+ 000db 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
+
+; 88 : context->mat[F32].buffer_fill = BUF_PROC(float, avx, , fill);
+
+ 000e0 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000e5 48 6b c0 00 imul rax, rax, 0
+ 000e9 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000f0 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_fill_avx
+ 000f7 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
+
+; 89 : context->mat[F32].buffer_scalar_mul = BUF_PROC(float, avx, , scalar_mul);
+
+ 000fc b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00101 48 6b c0 00 imul rax, rax, 0
+ 00105 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0010c 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_scalar_mul_avx
+ 00113 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
+
+; 90 : context->mat[F32].buffer_sub = BUF_PROC(float, avx, , sub);
+
+ 00118 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0011d 48 6b c0 00 imul rax, rax, 0
+ 00121 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00128 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_sub_avx
+ 0012f 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
+
+; 91 : context->mat[F32].buffer_transpose = KER_PROC(float, avx, , transpose);
+
+ 00134 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00139 48 6b c0 00 imul rax, rax, 0
+ 0013d 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00144 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_transpose_avx
+ 0014b 48 89 54 01 40 mov QWORD PTR [rcx+rax+64], rdx
+
+; 92 : context->mat[F32].clear_panel = PNL_PROC(float, avx, , clear);
+
+ 00150 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00155 48 6b c0 00 imul rax, rax, 0
+ 00159 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00160 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_pnl_clear_avx
+ 00167 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
+
+; 93 : context->mat[F32].ker_fma = is_fma ? KER_PROC(float, avx, , fma) :
+
+ 0016c 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
+ 00170 85 c0 test eax, eax
+ 00172 74 10 je SHORT $LN7@load_intri
+ 00174 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:float_kernel_fma_avx
+ 0017b 48 89 85 18 01
+ 00 00 mov QWORD PTR tv141[rbp], rax
+ 00182 eb 0e jmp SHORT $LN8@load_intri
+$LN7@load_intri:
+ 00184 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:float_kernel_fma_avx_fma
+ 0018b 48 89 85 18 01
+ 00 00 mov QWORD PTR tv141[rbp], rax
+$LN8@load_intri:
+ 00192 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00197 48 6b c0 00 imul rax, rax, 0
+ 0019b 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001a2 48 8b 95 18 01
+ 00 00 mov rdx, QWORD PTR tv141[rbp]
+ 001a9 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
+
+; 94 : KER_PROC(float, avx, _fma, fma);
+; 95 : context->mat[F32].ker_tile_fma = is_fma ? KERTILE_PROC(float, avx, , fma) :
+
+ 001ae 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
+ 001b2 85 c0 test eax, eax
+ 001b4 74 10 je SHORT $LN9@load_intri
+ 001b6 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:float_kernel_tile_fma_avx
+ 001bd 48 89 85 18 01
+ 00 00 mov QWORD PTR tv148[rbp], rax
+ 001c4 eb 0e jmp SHORT $LN10@load_intri
+$LN9@load_intri:
+ 001c6 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:float_kernel_tile_fma_avx_fma
+ 001cd 48 89 85 18 01
+ 00 00 mov QWORD PTR tv148[rbp], rax
+$LN10@load_intri:
+ 001d4 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001d9 48 6b c0 00 imul rax, rax, 0
+ 001dd 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001e4 48 8b 95 18 01
+ 00 00 mov rdx, QWORD PTR tv148[rbp]
+ 001eb 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
+
+; 96 : KERTILE_PROC(float, avx, _fma, fma);
+; 97 : context->mat[F32].pivot = NULL;
+
+ 001f0 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001f5 48 6b c0 00 imul rax, rax, 0
+ 001f9 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00200 48 c7 44 01 60
+ 00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
+
+; 98 :
+; 99 : context->mat[F64].buffer_add = BUF_PROC(double, avx, , add);
+
+ 00209 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0020e 48 6b c0 01 imul rax, rax, 1
+ 00212 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00219 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_add_avx
+ 00220 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
+
+; 100 : context->mat[F64].buffer_fill = BUF_PROC(double, avx, , fill);
+
+ 00225 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0022a 48 6b c0 01 imul rax, rax, 1
+ 0022e 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00235 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_fill_avx
+ 0023c 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
+
+; 101 : context->mat[F64].buffer_scalar_mul = BUF_PROC(double, avx, , scalar_mul);
+
+ 00241 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00246 48 6b c0 01 imul rax, rax, 1
+ 0024a 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00251 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_scalar_mul_avx
+ 00258 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
+
+; 102 : context->mat[F64].buffer_sub = BUF_PROC(double, avx, , sub);
+
+ 0025d b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00262 48 6b c0 01 imul rax, rax, 1
+ 00266 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0026d 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_sub_avx
+ 00274 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
+
+; 103 : context->mat[F64].buffer_transpose = NULL;
+
+ 00279 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0027e 48 6b c0 01 imul rax, rax, 1
+ 00282 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00289 48 c7 44 01 40
+ 00 00 00 00 mov QWORD PTR [rcx+rax+64], 0
+
+; 104 : context->mat[F64].clear_panel = PNL_PROC(double, avx, , clear);
+
+ 00292 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00297 48 6b c0 01 imul rax, rax, 1
+ 0029b 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 002a2 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_pnl_clear_avx
+ 002a9 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
+
+; 105 : context->mat[F64].ker_fma = is_fma ? KER_PROC(double, avx, , fma) :
+
+ 002ae 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
+ 002b2 85 c0 test eax, eax
+ 002b4 74 10 je SHORT $LN11@load_intri
+ 002b6 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:double_kernel_fma_avx
+ 002bd 48 89 85 18 01
+ 00 00 mov QWORD PTR tv183[rbp], rax
+ 002c4 eb 0e jmp SHORT $LN12@load_intri
+$LN11@load_intri:
+ 002c6 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:double_kernel_fma_avx_fma
+ 002cd 48 89 85 18 01
+ 00 00 mov QWORD PTR tv183[rbp], rax
+$LN12@load_intri:
+ 002d4 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 002d9 48 6b c0 01 imul rax, rax, 1
+ 002dd 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 002e4 48 8b 95 18 01
+ 00 00 mov rdx, QWORD PTR tv183[rbp]
+ 002eb 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
+
+; 106 : KER_PROC(double, avx, _fma, fma);
+; 107 : context->mat[F64].ker_tile_fma = is_fma ? KERTILE_PROC(double, avx, , fma) :
+
+ 002f0 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
+ 002f4 85 c0 test eax, eax
+ 002f6 74 10 je SHORT $LN13@load_intri
+ 002f8 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:double_kernel_tile_fma_avx
+ 002ff 48 89 85 18 01
+ 00 00 mov QWORD PTR tv190[rbp], rax
+ 00306 eb 0e jmp SHORT $LN14@load_intri
+$LN13@load_intri:
+ 00308 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:double_kernel_tile_fma_avx_fma
+ 0030f 48 89 85 18 01
+ 00 00 mov QWORD PTR tv190[rbp], rax
+$LN14@load_intri:
+ 00316 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0031b 48 6b c0 01 imul rax, rax, 1
+ 0031f 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00326 48 8b 95 18 01
+ 00 00 mov rdx, QWORD PTR tv190[rbp]
+ 0032d 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
+
+; 108 : KERTILE_PROC(double, avx, _fma, fma);
+; 109 : context->mat[F64].pivot = NULL;
+
+ 00332 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00337 48 6b c0 01 imul rax, rax, 1
+ 0033b 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00342 48 c7 44 01 60
+ 00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
+
+; 110 :
+; 111 : context->vec_f32_normalize_3 = f32_normalize;
+
+ 0034b 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 00352 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:f32_normalize
+ 00359 48 89 48 18 mov QWORD PTR [rax+24], rcx
+
+; 112 : }
+
+ 0035d 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 00364 5f pop rdi
+ 00365 5d pop rbp
+ 00366 c3 ret 0
+load_intrinsic_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c
+; COMDAT load_intrinsic_sse
+_TEXT SEGMENT
+context$ = 224
+id$ = 232
+load_intrinsic_sse PROC ; COMDAT
+
+; 49 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 50 : context->city_hash_simplify = city_hash_simplify_sse;
+
+ 00025 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 0002c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse
+ 00033 48 89 08 mov QWORD PTR [rax], rcx
+
+; 51 : context->factorial_simd = factorial_simd_sse;
+
+ 00036 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 0003d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:factorial_simd_sse
+ 00044 48 89 48 08 mov QWORD PTR [rax+8], rcx
+
+; 52 : context->index_pair = index_pair_sse;
+
+ 00048 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 0004f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:index_pair_sse
+ 00056 48 89 48 10 mov QWORD PTR [rax+16], rcx
+
+; 53 :
+; 54 : context->mat[F32].buffer_add = BUF_PROC(float, sse, , add);
+
+ 0005a b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0005f 48 6b c0 00 imul rax, rax, 0
+ 00063 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0006a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_add_sse
+ 00071 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
+
+; 55 : context->mat[F32].buffer_fill = BUF_PROC(float, sse, , fill);
+
+ 00076 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0007b 48 6b c0 00 imul rax, rax, 0
+ 0007f 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00086 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_fill_sse
+ 0008d 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
+
+; 56 : context->mat[F32].buffer_scalar_mul = BUF_PROC(float, sse, , scalar_mul);
+
+ 00092 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00097 48 6b c0 00 imul rax, rax, 0
+ 0009b 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000a2 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_scalar_mul_sse
+ 000a9 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
+
+; 57 : context->mat[F32].buffer_sub = BUF_PROC(float, sse, , sub);
+
+ 000ae b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000b3 48 6b c0 00 imul rax, rax, 0
+ 000b7 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000be 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_buf_sub_sse
+ 000c5 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
+
+; 58 : context->mat[F32].buffer_transpose = KER_PROC(float, sse, , transpose);
+
+ 000ca b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000cf 48 6b c0 00 imul rax, rax, 0
+ 000d3 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000da 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_transpose_sse
+ 000e1 48 89 54 01 40 mov QWORD PTR [rcx+rax+64], rdx
+
+; 59 : context->mat[F32].clear_panel = PNL_PROC(float, sse, , clear);
+
+ 000e6 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 000eb 48 6b c0 00 imul rax, rax, 0
+ 000ef 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 000f6 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_pnl_clear_sse
+ 000fd 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
+
+; 60 : context->mat[F32].ker_fma = KER_PROC(float, sse, , fma);
+
+ 00102 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00107 48 6b c0 00 imul rax, rax, 0
+ 0010b 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00112 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_fma_sse
+ 00119 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
+
+; 61 : context->mat[F32].ker_tile_fma = KERTILE_PROC(float, sse, , fma);
+
+ 0011e b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00123 48 6b c0 00 imul rax, rax, 0
+ 00127 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0012e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_tile_fma_sse
+ 00135 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
+
+; 62 : context->mat[F32].pivot = NULL;
+
+ 0013a b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 0013f 48 6b c0 00 imul rax, rax, 0
+ 00143 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0014a 48 c7 44 01 60
+ 00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
+
+; 63 :
+; 64 : context->mat[F64].buffer_add = BUF_PROC(double, sse, , add);
+
+ 00153 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00158 48 6b c0 01 imul rax, rax, 1
+ 0015c 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00163 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_add_sse
+ 0016a 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
+
+; 65 : context->mat[F64].buffer_fill = BUF_PROC(double, sse, , fill);
+
+ 0016f b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00174 48 6b c0 01 imul rax, rax, 1
+ 00178 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0017f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_fill_sse
+ 00186 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
+
+; 66 : context->mat[F64].buffer_scalar_mul = BUF_PROC(double, sse, , scalar_mul);
+
+ 0018b b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00190 48 6b c0 01 imul rax, rax, 1
+ 00194 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 0019b 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_scalar_mul_sse
+ 001a2 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
+
+; 67 : context->mat[F64].buffer_sub = BUF_PROC(double, sse, , sub);
+
+ 001a7 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001ac 48 6b c0 01 imul rax, rax, 1
+ 001b0 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001b7 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_buf_sub_sse
+ 001be 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
+
+; 68 : context->mat[F64].buffer_transpose = NULL;
+
+ 001c3 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001c8 48 6b c0 01 imul rax, rax, 1
+ 001cc 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001d3 48 c7 44 01 40
+ 00 00 00 00 mov QWORD PTR [rcx+rax+64], 0
+
+; 69 : context->mat[F64].clear_panel = PNL_PROC(double, sse, , clear);
+
+ 001dc b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001e1 48 6b c0 01 imul rax, rax, 1
+ 001e5 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 001ec 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_pnl_clear_sse
+ 001f3 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
+
+; 70 : context->mat[F64].ker_fma = KER_PROC(double, sse, , fma);
+
+ 001f8 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 001fd 48 6b c0 01 imul rax, rax, 1
+ 00201 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00208 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_kernel_fma_sse
+ 0020f 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
+
+; 71 : context->mat[F64].ker_tile_fma = KERTILE_PROC(double, sse, , fma);
+
+ 00214 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00219 48 6b c0 01 imul rax, rax, 1
+ 0021d 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00224 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:double_kernel_tile_fma_sse
+ 0022b 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
+
+; 72 : context->mat[F64].pivot = NULL;
+
+ 00230 b8 48 00 00 00 mov eax, 72 ; 00000048H
+ 00235 48 6b c0 01 imul rax, rax, 1
+ 00239 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR context$[rbp]
+ 00240 48 c7 44 01 60
+ 00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
+
+; 73 :
+; 74 : context->vec_f32_normalize_3 = f32_normalize;
+
+ 00249 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 00250 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:f32_normalize
+ 00257 48 89 48 18 mov QWORD PTR [rax+24], rcx
+
+; 75 : }
+
+ 0025b 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00262 5f pop rdi
+ 00263 5d pop rbp
+ 00264 c3 ret 0
+load_intrinsic_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c
+; COMDAT load_intrinsic_function
+_TEXT SEGMENT
+simdid$ = 8
+context$ = 40
+tv74 = 244
+intrinsic_context$ = 288
+id$ = 296
+load_intrinsic_function PROC ; COMDAT
+
+; 21 : {
+
+$LN13:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001d b9 12 00 00 00 mov ecx, 18
+ 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00027 f3 ab rep stosd
+ 00029 48 8b 8c 24 48
+ 01 00 00 mov rcx, QWORD PTR [rsp+328]
+ 00031 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
+ 00038 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0003d 90 npad 1
+
+; 22 : sn_null_assert(intrinsic_context);
+
+ 0003e 48 83 bd 20 01
+ 00 00 00 cmp QWORD PTR intrinsic_context$[rbp], 0
+ 00046 75 1c jne SHORT $LN12@load_intri
+ 00048 41 b8 16 00 00
+ 00 mov r8d, 22
+ 0004e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00055 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@
+ 0005c ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00062 33 c0 xor eax, eax
+$LN12@load_intri:
+
+; 23 :
+; 24 : SIMDID simdid;
+; 25 : if (id) {
+
+ 00064 48 83 bd 28 01
+ 00 00 00 cmp QWORD PTR id$[rbp], 0
+ 0006c 74 0d je SHORT $LN4@load_intri
+
+; 26 : simdid.mask = id;
+
+ 0006e 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR id$[rbp]
+ 00075 48 89 45 08 mov QWORD PTR simdid$[rbp], rax
+
+; 27 : } else {
+
+ 00079 eb 09 jmp SHORT $LN5@load_intri
+$LN4@load_intri:
+
+; 28 : simdid = sn_get_simd_level_global();
+
+ 0007b e8 00 00 00 00 call sn_get_simd_level_global
+ 00080 48 89 45 08 mov QWORD PTR simdid$[rbp], rax
+$LN5@load_intri:
+
+; 29 : }
+; 30 :
+; 31 : sn_intrinsic *context = (sn_intrinsic *)intrinsic_context;
+
+ 00084 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR intrinsic_context$[rbp]
+ 0008b 48 89 45 28 mov QWORD PTR context$[rbp], rax
+
+; 32 :
+; 33 : switch (simdid.make_byte[1]) {
+
+ 0008f b8 01 00 00 00 mov eax, 1
+ 00094 48 6b c0 01 imul rax, rax, 1
+ 00098 0f b6 44 05 08 movzx eax, BYTE PTR simdid$[rbp+rax]
+ 0009d 88 85 f4 00 00
+ 00 mov BYTE PTR tv74[rbp], al
+ 000a3 80 bd f4 00 00
+ 00 01 cmp BYTE PTR tv74[rbp], 1
+ 000aa 74 26 je SHORT $LN6@load_intri
+ 000ac 80 bd f4 00 00
+ 00 02 cmp BYTE PTR tv74[rbp], 2
+ 000b3 74 2d je SHORT $LN7@load_intri
+ 000b5 80 bd f4 00 00
+ 00 03 cmp BYTE PTR tv74[rbp], 3
+ 000bc 74 34 je SHORT $LN8@load_intri
+ 000be 80 bd f4 00 00
+ 00 04 cmp BYTE PTR tv74[rbp], 4
+ 000c5 74 2b je SHORT $LN9@load_intri
+ 000c7 80 bd f4 00 00
+ 00 05 cmp BYTE PTR tv74[rbp], 5
+ 000ce 74 22 je SHORT $LN10@load_intri
+ 000d0 eb 2e jmp SHORT $LN2@load_intri
+$LN6@load_intri:
+
+; 34 : case SIMDID_MAIN_LVL_SSE:
+; 35 : load_intrinsic_sse(context, simdid);
+
+ 000d2 48 8b 55 08 mov rdx, QWORD PTR simdid$[rbp]
+ 000d6 48 8b 4d 28 mov rcx, QWORD PTR context$[rbp]
+ 000da e8 00 00 00 00 call load_intrinsic_sse
+ 000df 90 npad 1
+
+; 36 : break;
+
+ 000e0 eb 1e jmp SHORT $LN2@load_intri
+$LN7@load_intri:
+
+; 37 : case SIMDID_MAIN_LVL_AVX2:
+; 38 : load_intrinsic_avx(context, simdid);
+
+ 000e2 48 8b 55 08 mov rdx, QWORD PTR simdid$[rbp]
+ 000e6 48 8b 4d 28 mov rcx, QWORD PTR context$[rbp]
+ 000ea e8 00 00 00 00 call load_intrinsic_avx
+ 000ef 90 npad 1
+
+; 39 : break;
+
+ 000f0 eb 0e jmp SHORT $LN2@load_intri
+$LN8@load_intri:
+$LN9@load_intri:
+$LN10@load_intri:
+
+; 40 : case SIMDID_MAIN_LVL_AVX512:
+; 41 : case SIMDID_MAIN_LVL_AMX:
+; 42 : case SIMDID_MAIN_LVL_AVX10:
+; 43 : load_intrinsic_512(context, simdid);
+
+ 000f2 48 8b 55 08 mov rdx, QWORD PTR simdid$[rbp]
+ 000f6 48 8b 4d 28 mov rcx, QWORD PTR context$[rbp]
+ 000fa e8 00 00 00 00 call load_intrinsic_512
+ 000ff 90 npad 1
+$LN2@load_intri:
+
+; 44 : break;
+; 45 : }
+; 46 : }
+
+ 00100 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00104 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:load_intrinsic_function$rtcFrameData
+ 0010b e8 00 00 00 00 call _RTC_CheckStackVars
+ 00110 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00117 5f pop rdi
+ 00118 5d pop rbp
+ 00119 c3 ret 0
+load_intrinsic_function ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..5c188c53
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.nativecodeanalysis.sarif
@@ -0,0 +1,131 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/load_intrinsic.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "c4b2c5dc98e95d9d7cfabcb85772979ac74c625048857b38d6344935c144bf09"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrincontext.x86.h"
+ },
+ "hashes": {
+ "sha-256": "bbc00ee7320b30ca1234dc7908e4695ff6d5bb2ba3224e4ffaed345010ba8f48"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.basic.x86.cod b/obj/StgSharp.Native/Debug/x64/m.basic.x86.cod
new file mode 100644
index 00000000..1ee8b0e4
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.basic.x86.cod
@@ -0,0 +1,1110 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__CE29950A_sn_intrincontext@x86@h DB 01H
+__E2B4C3B7_m@basic@x86@c DB 01H
+msvcjmc ENDS
+PUBLIC float_kernel_transpose_sse
+PUBLIC float_kernel_transpose_avx
+PUBLIC float_kernel_transpose_512
+PUBLIC float_pnl_clear_sse
+PUBLIC float_pnl_clear_avx
+PUBLIC float_pnl_clear_512
+PUBLIC double_pnl_clear_sse
+PUBLIC double_pnl_clear_avx
+PUBLIC double_pnl_clear_512
+PUBLIC __JustMyCode_Default
+PUBLIC __zmm@0000000f0000000b00000007000000030000000e0000000a00000006000000020000000d0000000900000005000000010000000c000000080000000400000000
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_transpose_sse DD imagerel $LN3
+ DD imagerel $LN3+366
+ DD imagerel $unwind$float_kernel_transpose_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_transpose_avx DD imagerel $LN3
+ DD imagerel $LN3+258
+ DD imagerel $unwind$float_kernel_transpose_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_transpose_512 DD imagerel $LN3
+ DD imagerel $LN3+144
+ DD imagerel $unwind$float_kernel_transpose_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_pnl_clear_sse DD imagerel $LN6
+ DD imagerel $LN6+117
+ DD imagerel $unwind$float_pnl_clear_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_pnl_clear_avx DD imagerel $LN6
+ DD imagerel $LN6+134
+ DD imagerel $unwind$float_pnl_clear_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_pnl_clear_512 DD imagerel $LN6
+ DD imagerel $LN6+155
+ DD imagerel $unwind$float_pnl_clear_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_pnl_clear_sse DD imagerel $LN3
+ DD imagerel $LN3+205
+ DD imagerel $unwind$double_pnl_clear_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_pnl_clear_avx DD imagerel $LN6
+ DD imagerel $LN6+134
+ DD imagerel $unwind$double_pnl_clear_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_pnl_clear_512 DD imagerel $LN6
+ DD imagerel $LN6+155
+ DD imagerel $unwind$double_pnl_clear_512
+pdata ENDS
+; COMDAT __zmm@0000000f0000000b00000007000000030000000e0000000a00000006000000020000000d0000000900000005000000010000000c000000080000000400000000
+CONST SEGMENT
+__zmm@0000000f0000000b00000007000000030000000e0000000a00000006000000020000000d0000000900000005000000010000000c000000080000000400000000 DB 00H
+ DB 00H, 00H, 00H, 04H, 00H, 00H, 00H, 08H, 00H, 00H, 00H, 0cH, 00H
+ DB 00H, 00H, 01H, 00H, 00H, 00H, 05H, 00H, 00H, 00H, 09H, 00H, 00H
+ DB 00H, 0dH, 00H, 00H, 00H, 02H, 00H, 00H, 00H, 06H, 00H, 00H, 00H
+ DB 0aH, 00H, 00H, 00H, 0eH, 00H, 00H, 00H, 03H, 00H, 00H, 00H, 07H
+ DB 00H, 00H, 00H, 0bH, 00H, 00H, 00H, 0fH, 00H, 00H, 00H
+CONST ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_pnl_clear_512 DD 02d061e01H
+ DD 01102315H
+ DD 07009003aH
+ DD 0d0075008H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_pnl_clear_avx DD 02d061e01H
+ DD 01102315H
+ DD 07009002eH
+ DD 0d0075008H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_pnl_clear_sse DD 025051301H
+ DD 010e2313H
+ DD 070070023H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_pnl_clear_512 DD 02d061e01H
+ DD 01102315H
+ DD 07009003aH
+ DD 0d0075008H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_pnl_clear_avx DD 02d061e01H
+ DD 01102315H
+ DD 07009002eH
+ DD 0d0075008H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_pnl_clear_sse DD 025051301H
+ DD 010e2313H
+ DD 070070027H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_transpose_512 DD 02d062301H
+ DD 0115231aH
+ DD 0700e0046H
+ DD 0d00c500dH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_transpose_avx DD 02d062301H
+ DD 0115231aH
+ DD 0700e0042H
+ DD 0d00c500dH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_transpose_sse DD 025051801H
+ DD 01132318H
+ DD 0700c004dH
+ DD 0500bH
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT double_pnl_clear_512
+_TEXT SEGMENT
+zero$ = 64
+i$1 = 152
+ans$ = 464
+double_pnl_clear_512 PROC ; COMDAT
+
+; 50 : {
+
+$LN6:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 41 55 push r13
+ 00007 55 push rbp
+ 00008 57 push rdi
+ 00009 48 81 ec d0 01
+ 00 00 sub rsp, 464 ; 000001d0H
+ 00010 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00015 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 0001a 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0001e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002a 90 npad 1
+
+; 51 : register __m512 zero = _mm512_setzero_ps();
+
+ 0002b c5 f8 57 c0 vxorps xmm0, xmm0, xmm0
+ 0002f 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR zero$[rbp], zmm0
+
+; 52 : for (size_t i = 0; i < 16; i++) {
+
+ 00036 48 c7 85 98 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$1[rbp], 0
+ 00041 eb 11 jmp SHORT $LN4@double_pnl
+$LN2@double_pnl:
+ 00043 48 8b 85 98 00
+ 00 00 mov rax, QWORD PTR i$1[rbp]
+ 0004a 48 ff c0 inc rax
+ 0004d 48 89 85 98 00
+ 00 00 mov QWORD PTR i$1[rbp], rax
+$LN4@double_pnl:
+ 00054 48 83 bd 98 00
+ 00 00 10 cmp QWORD PTR i$1[rbp], 16
+ 0005c 73 31 jae SHORT $LN3@double_pnl
+
+; 53 : PANEL_COL_VEC((*ans), i, 0) = zero;
+
+ 0005e 48 63 85 98 00
+ 00 00 movsxd rax, DWORD PTR i$1[rbp]
+ 00065 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00069 49 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00070 48 03 c8 add rcx, rax
+ 00073 48 8b c1 mov rax, rcx
+ 00076 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0007b 48 6b c9 00 imul rcx, rcx, 0
+ 0007f 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR zero$[rbp]
+ 00086 62 f1 7c 48 11
+ 04 08 vmovups ZMMWORD PTR [rax+rcx], zmm0
+
+; 54 : }
+
+ 0008d eb b4 jmp SHORT $LN2@double_pnl
+$LN3@double_pnl:
+
+; 55 : }
+
+ 0008f 49 8d a5 b0 01
+ 00 00 lea rsp, QWORD PTR [r13+432]
+ 00096 5f pop rdi
+ 00097 5d pop rbp
+ 00098 41 5d pop r13
+ 0009a c3 ret 0
+double_pnl_clear_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT double_pnl_clear_avx
+_TEXT SEGMENT
+zero$ = 32
+i$1 = 88
+ans$ = 368
+double_pnl_clear_avx PROC ; COMDAT
+
+; 42 : {
+
+$LN6:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 41 55 push r13
+ 00007 55 push rbp
+ 00008 57 push rdi
+ 00009 48 81 ec 70 01
+ 00 00 sub rsp, 368 ; 00000170H
+ 00010 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00015 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 0001a 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0001e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002a 90 npad 1
+
+; 43 : register __m256 zero = _mm256_setzero_ps();
+
+ 0002b c5 f8 57 c0 vxorps xmm0, xmm0, xmm0
+ 0002f c5 fc 11 45 20 vmovups YMMWORD PTR zero$[rbp], ymm0
+
+; 44 : for (size_t i = 0; i < 8; i++) {
+
+ 00034 48 c7 45 58 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 0003c eb 0b jmp SHORT $LN4@double_pnl
+$LN2@double_pnl:
+ 0003e 48 8b 45 58 mov rax, QWORD PTR i$1[rbp]
+ 00042 48 ff c0 inc rax
+ 00045 48 89 45 58 mov QWORD PTR i$1[rbp], rax
+$LN4@double_pnl:
+ 00049 48 83 7d 58 08 cmp QWORD PTR i$1[rbp], 8
+ 0004e 73 2a jae SHORT $LN3@double_pnl
+
+; 45 : PANEL_COL_VEC((*ans), i, 0) = zero;
+
+ 00050 48 63 45 58 movsxd rax, DWORD PTR i$1[rbp]
+ 00054 48 6b c0 20 imul rax, rax, 32 ; 00000020H
+ 00058 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0005f 48 03 c8 add rcx, rax
+ 00062 48 8b c1 mov rax, rcx
+ 00065 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0006a 48 6b c9 00 imul rcx, rcx, 0
+ 0006e c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR zero$[rbp]
+ 00073 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 46 : }
+
+ 00078 eb c4 jmp SHORT $LN2@double_pnl
+$LN3@double_pnl:
+
+; 47 : }
+
+ 0007a 49 8d a5 50 01
+ 00 00 lea rsp, QWORD PTR [r13+336]
+ 00081 5f pop rdi
+ 00082 5d pop rbp
+ 00083 41 5d pop r13
+ 00085 c3 ret 0
+double_pnl_clear_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT double_pnl_clear_sse
+_TEXT SEGMENT
+zero$ = 16
+ans$ = 272
+double_pnl_clear_sse PROC ; COMDAT
+
+; 33 : {
+
+$LN3:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 18 01
+ 00 00 sub rsp, 280 ; 00000118H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 34 : register __m128 zero = _mm_setzero_ps();
+
+ 00020 0f 57 c0 xorps xmm0, xmm0
+ 00023 0f 29 45 10 movaps XMMWORD PTR zero$[rbp], xmm0
+
+; 35 : PANEL_COL_VEC((*ans), 0, 0) = zero;
+
+ 00027 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0002c 48 6b c0 00 imul rax, rax, 0
+ 00030 48 8b 8d 10 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00037 48 03 c8 add rcx, rax
+ 0003a 48 8b c1 mov rax, rcx
+ 0003d b9 10 00 00 00 mov ecx, 16
+ 00042 48 6b c9 00 imul rcx, rcx, 0
+ 00046 0f 28 45 10 movaps xmm0, XMMWORD PTR zero$[rbp]
+ 0004a 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 36 : PANEL_COL_VEC((*ans), 1, 0) = zero;
+
+ 0004e b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00053 48 6b c0 01 imul rax, rax, 1
+ 00057 48 8b 8d 10 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0005e 48 03 c8 add rcx, rax
+ 00061 48 8b c1 mov rax, rcx
+ 00064 b9 10 00 00 00 mov ecx, 16
+ 00069 48 6b c9 00 imul rcx, rcx, 0
+ 0006d 0f 28 45 10 movaps xmm0, XMMWORD PTR zero$[rbp]
+ 00071 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 37 : PANEL_COL_VEC((*ans), 2, 0) = zero;
+
+ 00075 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0007a 48 6b c0 02 imul rax, rax, 2
+ 0007e 48 8b 8d 10 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00085 48 03 c8 add rcx, rax
+ 00088 48 8b c1 mov rax, rcx
+ 0008b b9 10 00 00 00 mov ecx, 16
+ 00090 48 6b c9 00 imul rcx, rcx, 0
+ 00094 0f 28 45 10 movaps xmm0, XMMWORD PTR zero$[rbp]
+ 00098 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 38 : PANEL_COL_VEC((*ans), 3, 0) = zero;
+
+ 0009c b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000a1 48 6b c0 03 imul rax, rax, 3
+ 000a5 48 8b 8d 10 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000ac 48 03 c8 add rcx, rax
+ 000af 48 8b c1 mov rax, rcx
+ 000b2 b9 10 00 00 00 mov ecx, 16
+ 000b7 48 6b c9 00 imul rcx, rcx, 0
+ 000bb 0f 28 45 10 movaps xmm0, XMMWORD PTR zero$[rbp]
+ 000bf 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 39 : }
+
+ 000c3 48 8d a5 f8 00
+ 00 00 lea rsp, QWORD PTR [rbp+248]
+ 000ca 5f pop rdi
+ 000cb 5d pop rbp
+ 000cc c3 ret 0
+double_pnl_clear_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT float_pnl_clear_512
+_TEXT SEGMENT
+zero$ = 64
+i$1 = 152
+ans$ = 464
+float_pnl_clear_512 PROC ; COMDAT
+
+; 25 : {
+
+$LN6:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 41 55 push r13
+ 00007 55 push rbp
+ 00008 57 push rdi
+ 00009 48 81 ec d0 01
+ 00 00 sub rsp, 464 ; 000001d0H
+ 00010 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00015 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 0001a 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0001e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002a 90 npad 1
+
+; 26 : register __m512 zero = _mm512_setzero_ps();
+
+ 0002b c5 f8 57 c0 vxorps xmm0, xmm0, xmm0
+ 0002f 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR zero$[rbp], zmm0
+
+; 27 : for (size_t i = 0; i < 16; i++) {
+
+ 00036 48 c7 85 98 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$1[rbp], 0
+ 00041 eb 11 jmp SHORT $LN4@float_pnl_
+$LN2@float_pnl_:
+ 00043 48 8b 85 98 00
+ 00 00 mov rax, QWORD PTR i$1[rbp]
+ 0004a 48 ff c0 inc rax
+ 0004d 48 89 85 98 00
+ 00 00 mov QWORD PTR i$1[rbp], rax
+$LN4@float_pnl_:
+ 00054 48 83 bd 98 00
+ 00 00 10 cmp QWORD PTR i$1[rbp], 16
+ 0005c 73 31 jae SHORT $LN3@float_pnl_
+
+; 28 : PANEL_COL_VEC((*ans), i, 0) = zero;
+
+ 0005e 48 63 85 98 00
+ 00 00 movsxd rax, DWORD PTR i$1[rbp]
+ 00065 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00069 49 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00070 48 03 c8 add rcx, rax
+ 00073 48 8b c1 mov rax, rcx
+ 00076 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0007b 48 6b c9 00 imul rcx, rcx, 0
+ 0007f 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR zero$[rbp]
+ 00086 62 f1 7c 48 11
+ 04 08 vmovups ZMMWORD PTR [rax+rcx], zmm0
+
+; 29 : }
+
+ 0008d eb b4 jmp SHORT $LN2@float_pnl_
+$LN3@float_pnl_:
+
+; 30 : }
+
+ 0008f 49 8d a5 b0 01
+ 00 00 lea rsp, QWORD PTR [r13+432]
+ 00096 5f pop rdi
+ 00097 5d pop rbp
+ 00098 41 5d pop r13
+ 0009a c3 ret 0
+float_pnl_clear_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT float_pnl_clear_avx
+_TEXT SEGMENT
+zero$ = 32
+i$1 = 88
+ans$ = 368
+float_pnl_clear_avx PROC ; COMDAT
+
+; 17 : {
+
+$LN6:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 41 55 push r13
+ 00007 55 push rbp
+ 00008 57 push rdi
+ 00009 48 81 ec 70 01
+ 00 00 sub rsp, 368 ; 00000170H
+ 00010 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00015 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 0001a 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0001e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002a 90 npad 1
+
+; 18 : register __m256 zero = _mm256_setzero_ps();
+
+ 0002b c5 f8 57 c0 vxorps xmm0, xmm0, xmm0
+ 0002f c5 fc 11 45 20 vmovups YMMWORD PTR zero$[rbp], ymm0
+
+; 19 : for (size_t i = 0; i < 8; i++) {
+
+ 00034 48 c7 45 58 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 0003c eb 0b jmp SHORT $LN4@float_pnl_
+$LN2@float_pnl_:
+ 0003e 48 8b 45 58 mov rax, QWORD PTR i$1[rbp]
+ 00042 48 ff c0 inc rax
+ 00045 48 89 45 58 mov QWORD PTR i$1[rbp], rax
+$LN4@float_pnl_:
+ 00049 48 83 7d 58 08 cmp QWORD PTR i$1[rbp], 8
+ 0004e 73 2a jae SHORT $LN3@float_pnl_
+
+; 20 : PANEL_COL_VEC((*ans), i, 0) = zero;
+
+ 00050 48 63 45 58 movsxd rax, DWORD PTR i$1[rbp]
+ 00054 48 6b c0 20 imul rax, rax, 32 ; 00000020H
+ 00058 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0005f 48 03 c8 add rcx, rax
+ 00062 48 8b c1 mov rax, rcx
+ 00065 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0006a 48 6b c9 00 imul rcx, rcx, 0
+ 0006e c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR zero$[rbp]
+ 00073 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 21 : }
+
+ 00078 eb c4 jmp SHORT $LN2@float_pnl_
+$LN3@float_pnl_:
+
+; 22 : }
+
+ 0007a 49 8d a5 50 01
+ 00 00 lea rsp, QWORD PTR [r13+336]
+ 00081 5f pop rdi
+ 00082 5d pop rbp
+ 00083 41 5d pop r13
+ 00085 c3 ret 0
+float_pnl_clear_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT float_pnl_clear_sse
+_TEXT SEGMENT
+zero$ = 16
+i$1 = 56
+ans$ = 304
+float_pnl_clear_sse PROC ; COMDAT
+
+; 9 : {
+
+$LN6:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 10 : register __m128 zero = _mm_setzero_ps();
+
+ 00020 0f 57 c0 xorps xmm0, xmm0
+ 00023 0f 29 45 10 movaps XMMWORD PTR zero$[rbp], xmm0
+
+; 11 : for (size_t i = 0; i < 4; i++) {
+
+ 00027 48 c7 45 38 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 0002f eb 0b jmp SHORT $LN4@float_pnl_
+$LN2@float_pnl_:
+ 00031 48 8b 45 38 mov rax, QWORD PTR i$1[rbp]
+ 00035 48 ff c0 inc rax
+ 00038 48 89 45 38 mov QWORD PTR i$1[rbp], rax
+$LN4@float_pnl_:
+ 0003c 48 83 7d 38 04 cmp QWORD PTR i$1[rbp], 4
+ 00041 73 28 jae SHORT $LN3@float_pnl_
+
+; 12 : PANEL_COL_VEC((*ans), i, 0) = zero;
+
+ 00043 48 63 45 38 movsxd rax, DWORD PTR i$1[rbp]
+ 00047 48 6b c0 10 imul rax, rax, 16
+ 0004b 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00052 48 03 c8 add rcx, rax
+ 00055 48 8b c1 mov rax, rcx
+ 00058 b9 10 00 00 00 mov ecx, 16
+ 0005d 48 6b c9 00 imul rcx, rcx, 0
+ 00061 0f 28 45 10 movaps xmm0, XMMWORD PTR zero$[rbp]
+ 00065 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 13 : }
+
+ 00069 eb c6 jmp SHORT $LN2@float_pnl_
+$LN3@float_pnl_:
+
+; 14 : }
+
+ 0006b 48 8d a5 18 01
+ 00 00 lea rsp, QWORD PTR [rbp+280]
+ 00072 5f pop rdi
+ 00073 5d pop rbp
+ 00074 c3 ret 0
+float_pnl_clear_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT float_kernel_transpose_512
+_TEXT SEGMENT
+matrix$ = 64
+transpose_indices$ = 192
+right$ = 560
+ans$ = 568
+float_kernel_transpose_512 PROC ; COMDAT
+
+; 91 : {
+
+$LN3:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 41 55 push r13
+ 0000c 55 push rbp
+ 0000d 57 push rdi
+ 0000e 48 81 ec 30 02
+ 00 00 sub rsp, 560 ; 00000230H
+ 00015 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001a 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 0001f 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 00023 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 0002a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002f 90 npad 1
+
+; 92 : register __m512 matrix = right->f32_z[0];
+
+ 00030 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 00035 48 6b c0 00 imul rax, rax, 0
+ 00039 49 8b 8d 30 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00040 62 f1 7c 48 10
+ 04 01 vmovups zmm0, ZMMWORD PTR [rcx+rax]
+ 00047 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR matrix$[rbp], zmm0
+
+; 93 :
+; 94 : const __m512i transpose_indices =
+
+ 0004e 62 f1 7e 48 6f
+ 05 00 00 00 00 vmovdqu32 zmm0, ZMMWORD PTR __zmm@0000000f0000000b00000007000000030000000e0000000a00000006000000020000000d0000000900000005000000010000000c000000080000000400000000
+ 00058 62 f1 7e 48 7f
+ 45 03 vmovdqu32 ZMMWORD PTR transpose_indices$[rbp], zmm0
+
+; 95 : _mm512_setr_epi32(0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15);
+; 96 :
+; 97 : ans->f32_z[0] = _mm512_permutexvar_ps(transpose_indices, matrix);
+
+ 0005f 62 f1 7e 48 6f
+ 45 03 vmovdqu32 zmm0, ZMMWORD PTR transpose_indices$[rbp]
+ 00066 62 f2 7d 48 16
+ 45 01 vpermps zmm0, zmm0, ZMMWORD PTR matrix$[rbp]
+ 0006d b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 00072 48 6b c0 00 imul rax, rax, 0
+ 00076 49 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0007d 62 f1 7c 48 11
+ 04 01 vmovups ZMMWORD PTR [rcx+rax], zmm0
+
+; 98 : }
+
+ 00084 49 8d a5 10 02
+ 00 00 lea rsp, QWORD PTR [r13+528]
+ 0008b 5f pop rdi
+ 0008c 5d pop rbp
+ 0008d 41 5d pop r13
+ 0008f c3 ret 0
+float_kernel_transpose_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT float_kernel_transpose_avx
+_TEXT SEGMENT
+col_low$ = 32
+col_high$ = 96
+unpack_low$ = 160
+unpack_high$ = 224
+right$ = 528
+ans$ = 536
+float_kernel_transpose_avx PROC ; COMDAT
+
+; 76 : {
+
+$LN3:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 41 55 push r13
+ 0000c 55 push rbp
+ 0000d 57 push rdi
+ 0000e 48 81 ec 10 02
+ 00 00 sub rsp, 528 ; 00000210H
+ 00015 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001a 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 0001f 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00023 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 0002a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002f 90 npad 1
+
+; 77 : register __m256 col_low = right->f32_y[0];
+
+ 00030 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00035 48 6b c0 00 imul rax, rax, 0
+ 00039 49 8b 8d 10 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00040 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
+ 00045 c5 fc 11 45 20 vmovups YMMWORD PTR col_low$[rbp], ymm0
+
+; 78 : register __m256 col_high = right->f32_y[1];
+
+ 0004a b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0004f 48 6b c0 01 imul rax, rax, 1
+ 00053 49 8b 8d 10 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0005a c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
+ 0005f c5 fc 11 45 60 vmovups YMMWORD PTR col_high$[rbp], ymm0
+
+; 79 :
+; 80 : register __m256 unpack_low = _mm256_unpacklo_ps(col_low, col_high);
+
+ 00064 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR col_low$[rbp]
+ 00069 c5 fc 14 45 60 vunpcklps ymm0, ymm0, YMMWORD PTR col_high$[rbp]
+ 0006e c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR unpack_low$[rbp], ymm0
+
+; 81 : register __m256 unpack_high = _mm256_unpackhi_ps(col_low, col_high);
+
+ 00076 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR col_low$[rbp]
+ 0007b c5 fc 15 45 60 vunpckhps ymm0, ymm0, YMMWORD PTR col_high$[rbp]
+ 00080 c5 fc 11 85 e0
+ 00 00 00 vmovups YMMWORD PTR unpack_high$[rbp], ymm0
+
+; 82 :
+; 83 : col_low = _mm256_permute2f128_ps(unpack_low, unpack_high, 0x20);
+
+ 00088 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR unpack_low$[rbp]
+ 00090 c4 e3 7d 06 85
+ e0 00 00 00 20 vperm2f128 ymm0, ymm0, YMMWORD PTR unpack_high$[rbp], 32 ; 00000020H
+ 0009a c5 fc 11 45 20 vmovups YMMWORD PTR col_low$[rbp], ymm0
+
+; 84 : col_high = _mm256_permute2f128_ps(unpack_low, unpack_high, 0x31);
+
+ 0009f c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR unpack_low$[rbp]
+ 000a7 c4 e3 7d 06 85
+ e0 00 00 00 31 vperm2f128 ymm0, ymm0, YMMWORD PTR unpack_high$[rbp], 49 ; 00000031H
+ 000b1 c5 fc 11 45 60 vmovups YMMWORD PTR col_high$[rbp], ymm0
+
+; 85 :
+; 86 : ans->f32_y[0] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(2, 0, 2, 0));
+
+ 000b6 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR col_high$[rbp]
+ 000bb c5 fc c6 45 20
+ 88 vshufps ymm0, ymm0, YMMWORD PTR col_low$[rbp], 136 ; 00000088H
+ 000c1 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000c6 48 6b c0 00 imul rax, rax, 0
+ 000ca 49 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000d1 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
+
+; 87 : ans->f32_y[1] = _mm256_shuffle_ps(col_high, col_low, _MM_SHUFFLE(3, 1, 3, 1));
+
+ 000d6 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR col_high$[rbp]
+ 000db c5 fc c6 45 20
+ dd vshufps ymm0, ymm0, YMMWORD PTR col_low$[rbp], 221 ; 000000ddH
+ 000e1 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000e6 48 6b c0 01 imul rax, rax, 1
+ 000ea 49 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000f1 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
+
+; 88 : }
+
+ 000f6 49 8d a5 f0 01
+ 00 00 lea rsp, QWORD PTR [r13+496]
+ 000fd 5f pop rdi
+ 000fe 5d pop rbp
+ 000ff 41 5d pop r13
+ 00101 c3 ret 0
+float_kernel_transpose_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.basic.x86.c
+; COMDAT float_kernel_transpose_sse
+_TEXT SEGMENT
+col0$ = 16
+col1$ = 64
+col2$ = 112
+col3$ = 160
+tmp0$ = 208
+tmp1$ = 256
+tmp2$ = 304
+tmp3$ = 352
+right$ = 608
+ans$ = 616
+float_kernel_transpose_sse PROC ; COMDAT
+
+; 59 : {
+
+$LN3:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 68 02
+ 00 00 sub rsp, 616 ; 00000268H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E2B4C3B7_m@basic@x86@c
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 60 : register __m128 col0 = right->f32_x[0];
+
+ 00025 b8 10 00 00 00 mov eax, 16
+ 0002a 48 6b c0 00 imul rax, rax, 0
+ 0002e 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00035 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 00039 0f 11 45 10 movups XMMWORD PTR col0$[rbp], xmm0
+
+; 61 : register __m128 col1 = right->f32_x[1];
+
+ 0003d b8 10 00 00 00 mov eax, 16
+ 00042 48 6b c0 01 imul rax, rax, 1
+ 00046 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 0004d 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 00051 0f 11 45 40 movups XMMWORD PTR col1$[rbp], xmm0
+
+; 62 : register __m128 col2 = right->f32_x[2];
+
+ 00055 b8 10 00 00 00 mov eax, 16
+ 0005a 48 6b c0 02 imul rax, rax, 2
+ 0005e 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00065 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 00069 0f 11 45 70 movups XMMWORD PTR col2$[rbp], xmm0
+
+; 63 : register __m128 col3 = right->f32_x[3];
+
+ 0006d b8 10 00 00 00 mov eax, 16
+ 00072 48 6b c0 03 imul rax, rax, 3
+ 00076 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 0007d 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 00081 0f 11 85 a0 00
+ 00 00 movups XMMWORD PTR col3$[rbp], xmm0
+
+; 64 : register __m128 tmp0 = _mm_unpacklo_ps(col0, col1);
+
+ 00088 0f 28 45 10 movaps xmm0, XMMWORD PTR col0$[rbp]
+ 0008c 0f 14 45 40 unpcklps xmm0, XMMWORD PTR col1$[rbp]
+ 00090 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR tmp0$[rbp], xmm0
+
+; 65 : register __m128 tmp1 = _mm_unpackhi_ps(col0, col1);
+
+ 00097 0f 28 45 10 movaps xmm0, XMMWORD PTR col0$[rbp]
+ 0009b 0f 15 45 40 unpckhps xmm0, XMMWORD PTR col1$[rbp]
+ 0009f 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR tmp1$[rbp], xmm0
+
+; 66 : register __m128 tmp2 = _mm_unpacklo_ps(col2, col3);
+
+ 000a6 0f 28 45 70 movaps xmm0, XMMWORD PTR col2$[rbp]
+ 000aa 0f 14 85 a0 00
+ 00 00 unpcklps xmm0, XMMWORD PTR col3$[rbp]
+ 000b1 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR tmp2$[rbp], xmm0
+
+; 67 : register __m128 tmp3 = _mm_unpackhi_ps(col2, col3);
+
+ 000b8 0f 28 45 70 movaps xmm0, XMMWORD PTR col2$[rbp]
+ 000bc 0f 15 85 a0 00
+ 00 00 unpckhps xmm0, XMMWORD PTR col3$[rbp]
+ 000c3 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR tmp3$[rbp], xmm0
+
+; 68 :
+; 69 : ans->f32_x[0] = _mm_movelh_ps(tmp0, tmp2);
+
+ 000ca 0f 28 85 d0 00
+ 00 00 movaps xmm0, XMMWORD PTR tmp0$[rbp]
+ 000d1 0f 28 8d 30 01
+ 00 00 movaps xmm1, XMMWORD PTR tmp2$[rbp]
+ 000d8 0f 16 c1 movlhps xmm0, xmm1
+ 000db b8 10 00 00 00 mov eax, 16
+ 000e0 48 6b c0 00 imul rax, rax, 0
+ 000e4 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000eb 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 70 : ans->f32_x[1] = _mm_movehl_ps(tmp2, tmp0);
+
+ 000ef 0f 28 85 d0 00
+ 00 00 movaps xmm0, XMMWORD PTR tmp0$[rbp]
+ 000f6 0f 28 8d 30 01
+ 00 00 movaps xmm1, XMMWORD PTR tmp2$[rbp]
+ 000fd 0f 12 c8 movhlps xmm1, xmm0
+ 00100 0f 28 c1 movaps xmm0, xmm1
+ 00103 b8 10 00 00 00 mov eax, 16
+ 00108 48 6b c0 01 imul rax, rax, 1
+ 0010c 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00113 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 71 : ans->f32_x[2] = _mm_movelh_ps(tmp1, tmp3);
+
+ 00117 0f 28 85 00 01
+ 00 00 movaps xmm0, XMMWORD PTR tmp1$[rbp]
+ 0011e 0f 28 8d 60 01
+ 00 00 movaps xmm1, XMMWORD PTR tmp3$[rbp]
+ 00125 0f 16 c1 movlhps xmm0, xmm1
+ 00128 b8 10 00 00 00 mov eax, 16
+ 0012d 48 6b c0 02 imul rax, rax, 2
+ 00131 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00138 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 72 : ans->f32_x[3] = _mm_movehl_ps(tmp3, tmp1);
+
+ 0013c 0f 28 85 00 01
+ 00 00 movaps xmm0, XMMWORD PTR tmp1$[rbp]
+ 00143 0f 28 8d 60 01
+ 00 00 movaps xmm1, XMMWORD PTR tmp3$[rbp]
+ 0014a 0f 12 c8 movhlps xmm1, xmm0
+ 0014d 0f 28 c1 movaps xmm0, xmm1
+ 00150 b8 10 00 00 00 mov eax, 16
+ 00155 48 6b c0 03 imul rax, rax, 3
+ 00159 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00160 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 73 : }
+
+ 00164 48 8d a5 48 02
+ 00 00 lea rsp, QWORD PTR [rbp+584]
+ 0016b 5f pop rdi
+ 0016c 5d pop rbp
+ 0016d c3 ret 0
+float_kernel_transpose_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/m.basic.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/m.basic.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..1433a7bc
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.basic.x86.nativecodeanalysis.sarif
@@ -0,0 +1,131 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/m.basic.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "d2e2e837a655806e69e9907ce694d936c3ab6b1d7ff8fcbf18a9925b1cc060f4"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrincontext.x86.h"
+ },
+ "hashes": {
+ "sha-256": "bbc00ee7320b30ca1234dc7908e4695ff6d5bb2ba3224e4ffaed345010ba8f48"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.basic.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/m.basic.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.basic.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.bufop.x86.cod b/obj/StgSharp.Native/Debug/x64/m.bufop.x86.cod
new file mode 100644
index 00000000..69fba24a
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.bufop.x86.cod
@@ -0,0 +1,4500 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__CE29950A_sn_intrincontext@x86@h DB 01H
+__BAFF6ACF_m@bufop@x86@c DB 01H
+msvcjmc ENDS
+PUBLIC float_buf_add_sse
+PUBLIC float_buf_add_avx
+PUBLIC float_buf_add_512
+PUBLIC double_buf_add_sse
+PUBLIC double_buf_add_avx
+PUBLIC double_buf_add_512
+PUBLIC float_buf_sub_sse
+PUBLIC float_buf_sub_avx
+PUBLIC float_buf_sub_512
+PUBLIC double_buf_sub_sse
+PUBLIC double_buf_sub_avx
+PUBLIC double_buf_sub_512
+PUBLIC float_buf_scalar_mul_sse
+PUBLIC float_buf_scalar_mul_avx
+PUBLIC float_buf_scalar_mul_512
+PUBLIC double_buf_scalar_mul_sse
+PUBLIC double_buf_scalar_mul_avx
+PUBLIC double_buf_scalar_mul_512
+PUBLIC float_buf_fill_sse
+PUBLIC float_buf_fill_avx
+PUBLIC float_buf_fill_512
+PUBLIC double_buf_fill_sse
+PUBLIC double_buf_fill_avx
+PUBLIC double_buf_fill_512
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+EXTRN _fltused:DWORD
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_add_sse DD imagerel $LN6
+ DD imagerel $LN6+524
+ DD imagerel $unwind$float_buf_add_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_add_avx DD imagerel $LN6
+ DD imagerel $LN6+343
+ DD imagerel $unwind$float_buf_add_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_add_512 DD imagerel $LN6
+ DD imagerel $LN6+226
+ DD imagerel $unwind$float_buf_add_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_add_sse DD imagerel $LN6
+ DD imagerel $LN6+1072
+ DD imagerel $unwind$double_buf_add_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_add_avx DD imagerel $LN6
+ DD imagerel $LN6+607
+ DD imagerel $unwind$double_buf_add_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_add_512 DD imagerel $LN6
+ DD imagerel $LN6+365
+ DD imagerel $unwind$double_buf_add_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_sub_sse DD imagerel $LN6
+ DD imagerel $LN6+524
+ DD imagerel $unwind$float_buf_sub_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_sub_avx DD imagerel $LN6
+ DD imagerel $LN6+335
+ DD imagerel $unwind$float_buf_sub_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_sub_512 DD imagerel $LN6
+ DD imagerel $LN6+226
+ DD imagerel $unwind$float_buf_sub_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_sub_sse DD imagerel $LN6
+ DD imagerel $LN6+1040
+ DD imagerel $unwind$double_buf_sub_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_sub_avx DD imagerel $LN6
+ DD imagerel $LN6+353
+ DD imagerel $unwind$double_buf_sub_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_sub_512 DD imagerel $LN6
+ DD imagerel $LN6+239
+ DD imagerel $unwind$double_buf_sub_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_scalar_mul_sse DD imagerel $LN6
+ DD imagerel $LN6+443
+ DD imagerel $unwind$float_buf_scalar_mul_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_scalar_mul_avx DD imagerel $LN6
+ DD imagerel $LN6+300
+ DD imagerel $unwind$float_buf_scalar_mul_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_scalar_mul_512 DD imagerel $LN6
+ DD imagerel $LN6+246
+ DD imagerel $unwind$float_buf_scalar_mul_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_scalar_mul_sse DD imagerel $LN6
+ DD imagerel $LN6+819
+ DD imagerel $unwind$double_buf_scalar_mul_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_scalar_mul_avx DD imagerel $LN6
+ DD imagerel $LN6+494
+ DD imagerel $unwind$double_buf_scalar_mul_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_scalar_mul_512 DD imagerel $LN6
+ DD imagerel $LN6+350
+ DD imagerel $unwind$double_buf_scalar_mul_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_fill_sse DD imagerel $LN6
+ DD imagerel $LN6+264
+ DD imagerel $unwind$float_buf_fill_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_fill_avx DD imagerel $LN6
+ DD imagerel $LN6+192
+ DD imagerel $unwind$float_buf_fill_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_buf_fill_512 DD imagerel $LN6
+ DD imagerel $LN6+187
+ DD imagerel $unwind$float_buf_fill_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_fill_sse DD imagerel $LN6
+ DD imagerel $LN6+428
+ DD imagerel $unwind$double_buf_fill_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_fill_avx DD imagerel $LN6
+ DD imagerel $LN6+285
+ DD imagerel $unwind$double_buf_fill_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_buf_fill_512 DD imagerel $LN6
+ DD imagerel $LN6+233
+ DD imagerel $unwind$double_buf_fill_512
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_fill_512 DD 02d062801H
+ DD 011a231fH
+ DD 07013003aH
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_fill_avx DD 02d062801H
+ DD 011a231fH
+ DD 07013002eH
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_fill_sse DD 025051d01H
+ DD 0118231dH
+ DD 070110027H
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_fill_512 DD 02d062801H
+ DD 011a231fH
+ DD 07013003aH
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_fill_avx DD 02d062801H
+ DD 011a231fH
+ DD 07013002eH
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_fill_sse DD 025051d01H
+ DD 0118231dH
+ DD 070110027H
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_scalar_mul_512 DD 02d062d01H
+ DD 011f2324H
+ DD 070180056H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_scalar_mul_avx DD 02d062d01H
+ DD 011f2324H
+ DD 07018004eH
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_scalar_mul_sse DD 025052201H
+ DD 011d2322H
+ DD 070160057H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_scalar_mul_512 DD 02d062d01H
+ DD 011f2324H
+ DD 070180046H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_scalar_mul_avx DD 02d062d01H
+ DD 011f2324H
+ DD 07018003eH
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_scalar_mul_sse DD 025052201H
+ DD 011d2322H
+ DD 07016003fH
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_sub_512 DD 02d062d01H
+ DD 011f2324H
+ DD 070180036H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_sub_avx DD 02d062d01H
+ DD 011f2324H
+ DD 070180036H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_sub_sse DD 025052201H
+ DD 011d2322H
+ DD 070160051H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_sub_512 DD 02d062d01H
+ DD 011f2324H
+ DD 070180036H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_sub_avx DD 02d062d01H
+ DD 011f2324H
+ DD 070180036H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_sub_sse DD 025052201H
+ DD 011d2322H
+ DD 070160039H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_add_512 DD 02d062d01H
+ DD 011f2324H
+ DD 070180046H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_add_avx DD 02d062d01H
+ DD 011f2324H
+ DD 07018004aH
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_buf_add_sse DD 025052201H
+ DD 011d2322H
+ DD 070160051H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_add_512 DD 02d062d01H
+ DD 011f2324H
+ DD 070180036H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_add_avx DD 02d062d01H
+ DD 011f2324H
+ DD 07018003aH
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_buf_add_sse DD 025052201H
+ DD 011d2322H
+ DD 070160039H
+ DD 05015H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_fill_512
+_TEXT SEGMENT
+vec$ = 64
+i$1 = 152
+ans$ = 464
+scalar$ = 472
+count$ = 480
+double_buf_fill_512 PROC ; COMDAT
+
+; 63 : {
+
+$LN6:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec d0 01
+ 00 00 sub rsp, 464 ; 000001d0H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00024 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 64 : register __m512d vec = _mm512_broadcastsd_pd(_mm_loadu_pd(scalar));
+
+ 00035 49 8b 85 d8 01
+ 00 00 mov rax, QWORD PTR scalar$[r13]
+ 0003c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0003f 62 f2 fd 48 19
+ c0 vbroadcastsd zmm0, xmm0
+ 00045 62 f1 fd 48 11
+ 45 01 vmovupd ZMMWORD PTR vec$[rbp], zmm0
+
+; 65 : for (size_t i = 0; i < count; i++) {
+
+ 0004c 48 c7 85 98 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$1[rbp], 0
+ 00057 eb 11 jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00059 48 8b 85 98 00
+ 00 00 mov rax, QWORD PTR i$1[rbp]
+ 00060 48 ff c0 inc rax
+ 00063 48 89 85 98 00
+ 00 00 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0006a 49 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00071 48 39 85 98 00
+ 00 00 cmp QWORD PTR i$1[rbp], rax
+ 00078 73 63 jae SHORT $LN3@double_buf
+
+; 66 : ans[i].f64_z[0] = vec;
+
+ 0007a 48 69 85 98 00
+ 00 00 80 00 00
+ 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00085 49 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0008c 48 03 c8 add rcx, rax
+ 0008f 48 8b c1 mov rax, rcx
+ 00092 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 00097 48 6b c9 00 imul rcx, rcx, 0
+ 0009b 62 f1 fd 48 10
+ 45 01 vmovupd zmm0, ZMMWORD PTR vec$[rbp]
+ 000a2 62 f1 fd 48 11
+ 04 08 vmovupd ZMMWORD PTR [rax+rcx], zmm0
+
+; 67 : ans[i].f64_z[1] = vec;
+
+ 000a9 48 69 85 98 00
+ 00 00 80 00 00
+ 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000b4 49 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000bb 48 03 c8 add rcx, rax
+ 000be 48 8b c1 mov rax, rcx
+ 000c1 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000c6 48 6b c9 01 imul rcx, rcx, 1
+ 000ca 62 f1 fd 48 10
+ 45 01 vmovupd zmm0, ZMMWORD PTR vec$[rbp]
+ 000d1 62 f1 fd 48 11
+ 04 08 vmovupd ZMMWORD PTR [rax+rcx], zmm0
+
+; 68 : }
+
+ 000d8 e9 7c ff ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 69 : }
+
+ 000dd 49 8d a5 b0 01
+ 00 00 lea rsp, QWORD PTR [r13+432]
+ 000e4 5f pop rdi
+ 000e5 5d pop rbp
+ 000e6 41 5d pop r13
+ 000e8 c3 ret 0
+double_buf_fill_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_fill_avx
+_TEXT SEGMENT
+vec$ = 32
+i$1 = 88
+ans$ = 368
+scalar$ = 376
+count$ = 384
+double_buf_fill_avx PROC ; COMDAT
+
+; 52 : {
+
+$LN6:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 70 01
+ 00 00 sub rsp, 368 ; 00000170H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 53 : register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data)));
+
+ 00035 49 8b 85 78 01
+ 00 00 mov rax, QWORD PTR scalar$[r13]
+ 0003c c4 e2 7d 19 00 vbroadcastsd ymm0, QWORD PTR [rax]
+ 00041 c5 fd 11 45 20 vmovupd YMMWORD PTR vec$[rbp], ymm0
+
+; 54 : for (size_t i = 0; i < count; i++) {
+
+ 00046 48 c7 45 58 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 0004e eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00050 48 8b 45 58 mov rax, QWORD PTR i$1[rbp]
+ 00054 48 ff c0 inc rax
+ 00057 48 89 45 58 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0005b 49 8b 85 80 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00062 48 39 45 58 cmp QWORD PTR i$1[rbp], rax
+ 00066 0f 83 a5 00 00
+ 00 jae $LN3@double_buf
+
+; 55 : ans[i].f64_y[0] = vec;
+
+ 0006c 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00074 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0007b 48 03 c8 add rcx, rax
+ 0007e 48 8b c1 mov rax, rcx
+ 00081 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00086 48 6b c9 00 imul rcx, rcx, 0
+ 0008a c5 fd 10 45 20 vmovupd ymm0, YMMWORD PTR vec$[rbp]
+ 0008f c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 56 : ans[i].f64_y[1] = vec;
+
+ 00094 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0009c 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000a3 48 03 c8 add rcx, rax
+ 000a6 48 8b c1 mov rax, rcx
+ 000a9 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000ae 48 6b c9 01 imul rcx, rcx, 1
+ 000b2 c5 fd 10 45 20 vmovupd ymm0, YMMWORD PTR vec$[rbp]
+ 000b7 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 57 : ans[i].f64_y[2] = vec;
+
+ 000bc 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000c4 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000cb 48 03 c8 add rcx, rax
+ 000ce 48 8b c1 mov rax, rcx
+ 000d1 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000d6 48 6b c9 02 imul rcx, rcx, 2
+ 000da c5 fd 10 45 20 vmovupd ymm0, YMMWORD PTR vec$[rbp]
+ 000df c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 58 : ans[i].f64_y[3] = vec;
+
+ 000e4 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000ec 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000f3 48 03 c8 add rcx, rax
+ 000f6 48 8b c1 mov rax, rcx
+ 000f9 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000fe 48 6b c9 03 imul rcx, rcx, 3
+ 00102 c5 fd 10 45 20 vmovupd ymm0, YMMWORD PTR vec$[rbp]
+ 00107 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 59 : }
+
+ 0010c e9 3f ff ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 60 : }
+
+ 00111 49 8d a5 50 01
+ 00 00 lea rsp, QWORD PTR [r13+336]
+ 00118 5f pop rdi
+ 00119 5d pop rbp
+ 0011a 41 5d pop r13
+ 0011c c3 ret 0
+double_buf_fill_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_fill_sse
+_TEXT SEGMENT
+vec$ = 16
+i$1 = 56
+ans$ = 304
+scalar$ = 312
+count$ = 320
+double_buf_fill_sse PROC ; COMDAT
+
+; 37 : {
+
+$LN6:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 38 : register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]);
+
+ 0002a b8 08 00 00 00 mov eax, 8
+ 0002f 48 6b c0 00 imul rax, rax, 0
+ 00033 48 8b 8d 38 01
+ 00 00 mov rcx, QWORD PTR scalar$[rbp]
+ 0003a f2 0f 10 04 01 movsd xmm0, QWORD PTR [rcx+rax]
+ 0003f 66 0f 14 c0 unpcklpd xmm0, xmm0
+ 00043 0f 29 45 10 movaps XMMWORD PTR vec$[rbp], xmm0
+
+; 39 : for (size_t i = 0; i < count; i++) {
+
+ 00047 48 c7 45 38 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 0004f eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00051 48 8b 45 38 mov rax, QWORD PTR i$1[rbp]
+ 00055 48 ff c0 inc rax
+ 00058 48 89 45 38 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0005c 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 00063 48 39 45 38 cmp QWORD PTR i$1[rbp], rax
+ 00067 0f 83 35 01 00
+ 00 jae $LN3@double_buf
+
+; 40 : ans[i].f64_x[0] = vec;
+
+ 0006d 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00075 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0007c 48 03 c8 add rcx, rax
+ 0007f 48 8b c1 mov rax, rcx
+ 00082 b9 10 00 00 00 mov ecx, 16
+ 00087 48 6b c9 00 imul rcx, rcx, 0
+ 0008b 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 0008f 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 41 : ans[i].f64_x[1] = vec;
+
+ 00093 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0009b 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000a2 48 03 c8 add rcx, rax
+ 000a5 48 8b c1 mov rax, rcx
+ 000a8 b9 10 00 00 00 mov ecx, 16
+ 000ad 48 6b c9 01 imul rcx, rcx, 1
+ 000b1 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 000b5 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 42 : ans[i].f64_x[2] = vec;
+
+ 000b9 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000c1 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000c8 48 03 c8 add rcx, rax
+ 000cb 48 8b c1 mov rax, rcx
+ 000ce b9 10 00 00 00 mov ecx, 16
+ 000d3 48 6b c9 02 imul rcx, rcx, 2
+ 000d7 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 000db 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 43 : ans[i].f64_x[3] = vec;
+
+ 000df 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000e7 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000ee 48 03 c8 add rcx, rax
+ 000f1 48 8b c1 mov rax, rcx
+ 000f4 b9 10 00 00 00 mov ecx, 16
+ 000f9 48 6b c9 03 imul rcx, rcx, 3
+ 000fd 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 00101 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 44 : ans[i].f64_x[4] = vec;
+
+ 00105 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0010d 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00114 48 03 c8 add rcx, rax
+ 00117 48 8b c1 mov rax, rcx
+ 0011a b9 10 00 00 00 mov ecx, 16
+ 0011f 48 6b c9 04 imul rcx, rcx, 4
+ 00123 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 00127 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 45 : ans[i].f64_x[5] = vec;
+
+ 0012b 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00133 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0013a 48 03 c8 add rcx, rax
+ 0013d 48 8b c1 mov rax, rcx
+ 00140 b9 10 00 00 00 mov ecx, 16
+ 00145 48 6b c9 05 imul rcx, rcx, 5
+ 00149 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 0014d 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 46 : ans[i].f64_x[6] = vec;
+
+ 00151 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00159 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00160 48 03 c8 add rcx, rax
+ 00163 48 8b c1 mov rax, rcx
+ 00166 b9 10 00 00 00 mov ecx, 16
+ 0016b 48 6b c9 06 imul rcx, rcx, 6
+ 0016f 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 00173 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 47 : ans[i].f64_x[7] = vec;
+
+ 00177 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0017f 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00186 48 03 c8 add rcx, rax
+ 00189 48 8b c1 mov rax, rcx
+ 0018c b9 10 00 00 00 mov ecx, 16
+ 00191 48 6b c9 07 imul rcx, rcx, 7
+ 00195 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 00199 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 48 : }
+
+ 0019d e9 af fe ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 49 : }
+
+ 001a2 48 8d a5 18 01
+ 00 00 lea rsp, QWORD PTR [rbp+280]
+ 001a9 5f pop rdi
+ 001aa 5d pop rbp
+ 001ab c3 ret 0
+double_buf_fill_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_fill_512
+_TEXT SEGMENT
+vec$ = 64
+i$1 = 152
+ans$ = 464
+scalar$ = 472
+count$ = 480
+float_buf_fill_512 PROC ; COMDAT
+
+; 29 : {
+
+$LN6:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec d0 01
+ 00 00 sub rsp, 464 ; 000001d0H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00024 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 30 : register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]);
+
+ 00035 b8 10 00 00 00 mov eax, 16
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e 49 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR scalar$[r13]
+ 00045 62 f2 7d 48 18
+ 04 01 vbroadcastss zmm0, XMMWORD PTR [rcx+rax]
+ 0004c 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR vec$[rbp], zmm0
+
+; 31 : for (size_t i = 0; i < count; i++) {
+
+ 00053 48 c7 85 98 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$1[rbp], 0
+ 0005e eb 11 jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00060 48 8b 85 98 00
+ 00 00 mov rax, QWORD PTR i$1[rbp]
+ 00067 48 ff c0 inc rax
+ 0006a 48 89 85 98 00
+ 00 00 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 00071 49 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00078 48 39 85 98 00
+ 00 00 cmp QWORD PTR i$1[rbp], rax
+ 0007f 73 2e jae SHORT $LN3@float_buf_
+
+; 32 : ans[i].f32_z[0] = vec;
+
+ 00081 48 6b 85 98 00
+ 00 00 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00089 49 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00090 48 03 c8 add rcx, rax
+ 00093 48 8b c1 mov rax, rcx
+ 00096 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0009b 48 6b c9 00 imul rcx, rcx, 0
+ 0009f 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR vec$[rbp]
+ 000a6 62 f1 7c 48 11
+ 04 08 vmovups ZMMWORD PTR [rax+rcx], zmm0
+
+; 33 : }
+
+ 000ad eb b1 jmp SHORT $LN2@float_buf_
+$LN3@float_buf_:
+
+; 34 : }
+
+ 000af 49 8d a5 b0 01
+ 00 00 lea rsp, QWORD PTR [r13+432]
+ 000b6 5f pop rdi
+ 000b7 5d pop rbp
+ 000b8 41 5d pop r13
+ 000ba c3 ret 0
+float_buf_fill_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_fill_avx
+_TEXT SEGMENT
+vec$ = 32
+i$1 = 88
+ans$ = 368
+scalar$ = 376
+count$ = 384
+float_buf_fill_avx PROC ; COMDAT
+
+; 20 : {
+
+$LN6:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 70 01
+ 00 00 sub rsp, 368 ; 00000170H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 21 : register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data)));
+
+ 00035 49 8b 85 78 01
+ 00 00 mov rax, QWORD PTR scalar$[r13]
+ 0003c c4 e2 7d 18 00 vbroadcastss ymm0, DWORD PTR [rax]
+ 00041 c5 fc 11 45 20 vmovups YMMWORD PTR vec$[rbp], ymm0
+
+; 22 : for (size_t i = 0; i < count; i++) {
+
+ 00046 48 c7 45 58 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 0004e eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00050 48 8b 45 58 mov rax, QWORD PTR i$1[rbp]
+ 00054 48 ff c0 inc rax
+ 00057 48 89 45 58 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 0005b 49 8b 85 80 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00062 48 39 45 58 cmp QWORD PTR i$1[rbp], rax
+ 00066 73 4c jae SHORT $LN3@float_buf_
+
+; 23 : ans[i].f32_y[0] = vec;
+
+ 00068 48 6b 45 58 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0006d 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00074 48 03 c8 add rcx, rax
+ 00077 48 8b c1 mov rax, rcx
+ 0007a b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0007f 48 6b c9 00 imul rcx, rcx, 0
+ 00083 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR vec$[rbp]
+ 00088 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 24 : ans[i].f32_y[1] = vec;
+
+ 0008d 48 6b 45 58 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00092 49 8b 8d 70 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00099 48 03 c8 add rcx, rax
+ 0009c 48 8b c1 mov rax, rcx
+ 0009f b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000a4 48 6b c9 01 imul rcx, rcx, 1
+ 000a8 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR vec$[rbp]
+ 000ad c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 25 : }
+
+ 000b2 eb 9c jmp SHORT $LN2@float_buf_
+$LN3@float_buf_:
+
+; 26 : }
+
+ 000b4 49 8d a5 50 01
+ 00 00 lea rsp, QWORD PTR [r13+336]
+ 000bb 5f pop rdi
+ 000bc 5d pop rbp
+ 000bd 41 5d pop r13
+ 000bf c3 ret 0
+float_buf_fill_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_fill_sse
+_TEXT SEGMENT
+vec$ = 16
+i$1 = 56
+ans$ = 304
+scalar$ = 312
+count$ = 320
+float_buf_fill_sse PROC ; COMDAT
+
+; 9 : {
+
+$LN6:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 10 : register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]);
+
+ 0002a b8 04 00 00 00 mov eax, 4
+ 0002f 48 6b c0 00 imul rax, rax, 0
+ 00033 48 8b 8d 38 01
+ 00 00 mov rcx, QWORD PTR scalar$[rbp]
+ 0003a f3 0f 10 04 01 movss xmm0, DWORD PTR [rcx+rax]
+ 0003f 0f c6 c0 00 shufps xmm0, xmm0, 0
+ 00043 0f 29 45 10 movaps XMMWORD PTR vec$[rbp], xmm0
+
+; 11 : for (size_t i = 0; i < count; i++) {
+
+ 00047 48 c7 45 38 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 0004f eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00051 48 8b 45 38 mov rax, QWORD PTR i$1[rbp]
+ 00055 48 ff c0 inc rax
+ 00058 48 89 45 38 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 0005c 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 00063 48 39 45 38 cmp QWORD PTR i$1[rbp], rax
+ 00067 0f 83 91 00 00
+ 00 jae $LN3@float_buf_
+
+; 12 : ans[i].f32_x[0] = vec;
+
+ 0006d 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00072 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00079 48 03 c8 add rcx, rax
+ 0007c 48 8b c1 mov rax, rcx
+ 0007f b9 10 00 00 00 mov ecx, 16
+ 00084 48 6b c9 00 imul rcx, rcx, 0
+ 00088 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 0008c 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 13 : ans[i].f32_x[1] = vec;
+
+ 00090 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00095 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0009c 48 03 c8 add rcx, rax
+ 0009f 48 8b c1 mov rax, rcx
+ 000a2 b9 10 00 00 00 mov ecx, 16
+ 000a7 48 6b c9 01 imul rcx, rcx, 1
+ 000ab 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 000af 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 14 : ans[i].f32_x[2] = vec;
+
+ 000b3 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000b8 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000bf 48 03 c8 add rcx, rax
+ 000c2 48 8b c1 mov rax, rcx
+ 000c5 b9 10 00 00 00 mov ecx, 16
+ 000ca 48 6b c9 02 imul rcx, rcx, 2
+ 000ce 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 000d2 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 15 : ans[i].f32_x[3] = vec;
+
+ 000d6 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000db 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000e2 48 03 c8 add rcx, rax
+ 000e5 48 8b c1 mov rax, rcx
+ 000e8 b9 10 00 00 00 mov ecx, 16
+ 000ed 48 6b c9 03 imul rcx, rcx, 3
+ 000f1 0f 28 45 10 movaps xmm0, XMMWORD PTR vec$[rbp]
+ 000f5 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 16 : }
+
+ 000f9 e9 53 ff ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 17 : }
+
+ 000fe 48 8d a5 18 01
+ 00 00 lea rsp, QWORD PTR [rbp+280]
+ 00105 5f pop rdi
+ 00106 5d pop rbp
+ 00107 c3 ret 0
+float_buf_fill_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_scalar_mul_512
+_TEXT SEGMENT
+vec$ = 64
+i$1 = 152
+c0$2 = 192
+c1$3 = 320
+right$ = 688
+ans$ = 696
+scalar$ = 704
+count$ = 712
+double_buf_scalar_mul_512 PROC ; COMDAT
+
+; 313 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec b0 02
+ 00 00 sub rsp, 688 ; 000002b0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 314 : register __m512d vec = _mm512_broadcastsd_pd(_mm_load_pd(scalar));
+
+ 0003a 49 8b 85 c0 02
+ 00 00 mov rax, QWORD PTR scalar$[r13]
+ 00041 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00044 62 f2 fd 48 19
+ c0 vbroadcastsd zmm0, xmm0
+ 0004a 62 f1 fd 48 11
+ 45 01 vmovupd ZMMWORD PTR vec$[rbp], zmm0
+
+; 315 : for (size_t i = 0; i < count; i++) {
+
+ 00051 48 c7 85 98 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$1[rbp], 0
+ 0005c eb 11 jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 0005e 48 8b 85 98 00
+ 00 00 mov rax, QWORD PTR i$1[rbp]
+ 00065 48 ff c0 inc rax
+ 00068 48 89 85 98 00
+ 00 00 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0006f 49 8b 85 c8 02
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00076 48 39 85 98 00
+ 00 00 cmp QWORD PTR i$1[rbp], rax
+ 0007d 0f 83 cf 00 00
+ 00 jae $LN3@double_buf
+
+; 316 : register __m512d c0 = _mm512_mul_pd(right[i].f64_z[0], vec);
+
+ 00083 48 69 85 98 00
+ 00 00 80 00 00
+ 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0008e 49 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00095 48 03 c8 add rcx, rax
+ 00098 48 8b c1 mov rax, rcx
+ 0009b b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000a0 48 6b c9 00 imul rcx, rcx, 0
+ 000a4 62 f1 fd 48 10
+ 04 08 vmovupd zmm0, ZMMWORD PTR [rax+rcx]
+ 000ab 62 f1 fd 48 59
+ 45 01 vmulpd zmm0, zmm0, ZMMWORD PTR vec$[rbp]
+ 000b2 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR c0$2[rbp], zmm0
+
+; 317 : register __m512d c1 = _mm512_mul_pd(right[i].f64_z[1], vec);
+
+ 000b9 48 69 85 98 00
+ 00 00 80 00 00
+ 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000c4 49 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000cb 48 03 c8 add rcx, rax
+ 000ce 48 8b c1 mov rax, rcx
+ 000d1 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000d6 48 6b c9 01 imul rcx, rcx, 1
+ 000da 62 f1 fd 48 10
+ 04 08 vmovupd zmm0, ZMMWORD PTR [rax+rcx]
+ 000e1 62 f1 fd 48 59
+ 45 01 vmulpd zmm0, zmm0, ZMMWORD PTR vec$[rbp]
+ 000e8 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR c1$3[rbp], zmm0
+
+; 318 :
+; 319 : ans[i].f64_z[0] = c0;
+
+ 000ef 48 69 85 98 00
+ 00 00 80 00 00
+ 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000fa 49 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00101 48 03 c8 add rcx, rax
+ 00104 48 8b c1 mov rax, rcx
+ 00107 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0010c 48 6b c9 00 imul rcx, rcx, 0
+ 00110 62 f1 fd 48 10
+ 45 03 vmovupd zmm0, ZMMWORD PTR c0$2[rbp]
+ 00117 62 f1 fd 48 11
+ 04 08 vmovupd ZMMWORD PTR [rax+rcx], zmm0
+
+; 320 : ans[i].f64_z[1] = c1;
+
+ 0011e 48 69 85 98 00
+ 00 00 80 00 00
+ 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00129 49 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00130 48 03 c8 add rcx, rax
+ 00133 48 8b c1 mov rax, rcx
+ 00136 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0013b 48 6b c9 01 imul rcx, rcx, 1
+ 0013f 62 f1 fd 48 10
+ 45 05 vmovupd zmm0, ZMMWORD PTR c1$3[rbp]
+ 00146 62 f1 fd 48 11
+ 04 08 vmovupd ZMMWORD PTR [rax+rcx], zmm0
+
+; 321 : }
+
+ 0014d e9 0c ff ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 322 : }
+
+ 00152 49 8d a5 90 02
+ 00 00 lea rsp, QWORD PTR [r13+656]
+ 00159 5f pop rdi
+ 0015a 5d pop rbp
+ 0015b 41 5d pop r13
+ 0015d c3 ret 0
+double_buf_scalar_mul_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_scalar_mul_avx
+_TEXT SEGMENT
+vec$ = 32
+i$1 = 88
+c0$2 = 128
+c1$3 = 192
+c2$4 = 256
+c3$5 = 320
+right$ = 624
+ans$ = 632
+scalar$ = 640
+count$ = 648
+double_buf_scalar_mul_avx PROC ; COMDAT
+
+; 297 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 70 02
+ 00 00 sub rsp, 624 ; 00000270H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 298 : register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data)));
+
+ 0003a 49 8b 85 80 02
+ 00 00 mov rax, QWORD PTR scalar$[r13]
+ 00041 c4 e2 7d 19 00 vbroadcastsd ymm0, QWORD PTR [rax]
+ 00046 c5 fd 11 45 20 vmovupd YMMWORD PTR vec$[rbp], ymm0
+
+; 299 : for (size_t i = 0; i < count; i++) {
+
+ 0004b 48 c7 45 58 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00053 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00055 48 8b 45 58 mov rax, QWORD PTR i$1[rbp]
+ 00059 48 ff c0 inc rax
+ 0005c 48 89 45 58 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 00060 49 8b 85 88 02
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00067 48 39 45 58 cmp QWORD PTR i$1[rbp], rax
+ 0006b 0f 83 71 01 00
+ 00 jae $LN3@double_buf
+
+; 300 : register __m256d c0 = _mm256_mul_pd(right[i].f64_y[0], vec);
+
+ 00071 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00079 49 8b 8d 70 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00080 48 03 c8 add rcx, rax
+ 00083 48 8b c1 mov rax, rcx
+ 00086 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0008b 48 6b c9 00 imul rcx, rcx, 0
+ 0008f c5 fd 10 04 08 vmovupd ymm0, YMMWORD PTR [rax+rcx]
+ 00094 c5 fd 59 45 20 vmulpd ymm0, ymm0, YMMWORD PTR vec$[rbp]
+ 00099 c5 fd 11 85 80
+ 00 00 00 vmovupd YMMWORD PTR c0$2[rbp], ymm0
+
+; 301 : register __m256d c1 = _mm256_mul_pd(right[i].f64_y[1], vec);
+
+ 000a1 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000a9 49 8b 8d 70 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000b0 48 03 c8 add rcx, rax
+ 000b3 48 8b c1 mov rax, rcx
+ 000b6 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000bb 48 6b c9 01 imul rcx, rcx, 1
+ 000bf c5 fd 10 04 08 vmovupd ymm0, YMMWORD PTR [rax+rcx]
+ 000c4 c5 fd 59 45 20 vmulpd ymm0, ymm0, YMMWORD PTR vec$[rbp]
+ 000c9 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c1$3[rbp], ymm0
+
+; 302 : register __m256d c2 = _mm256_mul_pd(right[i].f64_y[2], vec);
+
+ 000d1 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000d9 49 8b 8d 70 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000e0 48 03 c8 add rcx, rax
+ 000e3 48 8b c1 mov rax, rcx
+ 000e6 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000eb 48 6b c9 02 imul rcx, rcx, 2
+ 000ef c5 fd 10 04 08 vmovupd ymm0, YMMWORD PTR [rax+rcx]
+ 000f4 c5 fd 59 45 20 vmulpd ymm0, ymm0, YMMWORD PTR vec$[rbp]
+ 000f9 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c2$4[rbp], ymm0
+
+; 303 : register __m256d c3 = _mm256_mul_pd(right[i].f64_y[3], vec);
+
+ 00101 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00109 49 8b 8d 70 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00110 48 03 c8 add rcx, rax
+ 00113 48 8b c1 mov rax, rcx
+ 00116 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0011b 48 6b c9 03 imul rcx, rcx, 3
+ 0011f c5 fd 10 04 08 vmovupd ymm0, YMMWORD PTR [rax+rcx]
+ 00124 c5 fd 59 45 20 vmulpd ymm0, ymm0, YMMWORD PTR vec$[rbp]
+ 00129 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c3$5[rbp], ymm0
+
+; 304 :
+; 305 : ans[i].f64_y[0] = c0;
+
+ 00131 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00139 49 8b 8d 78 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00140 48 03 c8 add rcx, rax
+ 00143 48 8b c1 mov rax, rcx
+ 00146 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0014b 48 6b c9 00 imul rcx, rcx, 0
+ 0014f c5 fd 10 85 80
+ 00 00 00 vmovupd ymm0, YMMWORD PTR c0$2[rbp]
+ 00157 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 306 : ans[i].f64_y[1] = c1;
+
+ 0015c 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00164 49 8b 8d 78 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0016b 48 03 c8 add rcx, rax
+ 0016e 48 8b c1 mov rax, rcx
+ 00171 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00176 48 6b c9 01 imul rcx, rcx, 1
+ 0017a c5 fd 10 85 c0
+ 00 00 00 vmovupd ymm0, YMMWORD PTR c1$3[rbp]
+ 00182 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 307 : ans[i].f64_y[2] = c2;
+
+ 00187 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0018f 49 8b 8d 78 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00196 48 03 c8 add rcx, rax
+ 00199 48 8b c1 mov rax, rcx
+ 0019c b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 001a1 48 6b c9 02 imul rcx, rcx, 2
+ 001a5 c5 fd 10 85 00
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c2$4[rbp]
+ 001ad c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 308 : ans[i].f64_y[3] = c3;
+
+ 001b2 48 69 45 58 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001ba 49 8b 8d 78 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 001c1 48 03 c8 add rcx, rax
+ 001c4 48 8b c1 mov rax, rcx
+ 001c7 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 001cc 48 6b c9 03 imul rcx, rcx, 3
+ 001d0 c5 fd 10 85 40
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c3$5[rbp]
+ 001d8 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 309 : }
+
+ 001dd e9 73 fe ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 310 : }
+
+ 001e2 49 8d a5 50 02
+ 00 00 lea rsp, QWORD PTR [r13+592]
+ 001e9 5f pop rdi
+ 001ea 5d pop rbp
+ 001eb 41 5d pop r13
+ 001ed c3 ret 0
+double_buf_scalar_mul_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_scalar_mul_sse
+_TEXT SEGMENT
+vec$ = 16
+i$1 = 56
+c0$2 = 96
+c1$3 = 144
+c2$4 = 192
+c3$5 = 240
+c4$6 = 288
+c5$7 = 336
+c6$8 = 384
+c7$9 = 432
+right$ = 688
+ans$ = 696
+scalar$ = 704
+count$ = 712
+double_buf_scalar_mul_sse PROC ; COMDAT
+
+; 273 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec b8 02
+ 00 00 sub rsp, 696 ; 000002b8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 274 : register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]);
+
+ 0002f b8 08 00 00 00 mov eax, 8
+ 00034 48 6b c0 00 imul rax, rax, 0
+ 00038 48 8b 8d c0 02
+ 00 00 mov rcx, QWORD PTR scalar$[rbp]
+ 0003f f2 0f 10 04 01 movsd xmm0, QWORD PTR [rcx+rax]
+ 00044 66 0f 14 c0 unpcklpd xmm0, xmm0
+ 00048 0f 29 45 10 movaps XMMWORD PTR vec$[rbp], xmm0
+
+; 275 : for (size_t i = 0; i < count; i++) {
+
+ 0004c 48 c7 45 38 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00054 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00056 48 8b 45 38 mov rax, QWORD PTR i$1[rbp]
+ 0005a 48 ff c0 inc rax
+ 0005d 48 89 45 38 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 00061 48 8b 85 c8 02
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 00068 48 39 45 38 cmp QWORD PTR i$1[rbp], rax
+ 0006c 0f 83 b7 02 00
+ 00 jae $LN3@double_buf
+
+; 276 : register __m128d c0 = _mm_mul_pd(right[i].f64_x[0], vec);
+
+ 00072 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0007a 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00081 48 03 c8 add rcx, rax
+ 00084 48 8b c1 mov rax, rcx
+ 00087 b9 10 00 00 00 mov ecx, 16
+ 0008c 48 6b c9 00 imul rcx, rcx, 0
+ 00090 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 00094 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 00099 0f 29 45 60 movaps XMMWORD PTR c0$2[rbp], xmm0
+
+; 277 : register __m128d c1 = _mm_mul_pd(right[i].f64_x[1], vec);
+
+ 0009d 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000a5 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000ac 48 03 c8 add rcx, rax
+ 000af 48 8b c1 mov rax, rcx
+ 000b2 b9 10 00 00 00 mov ecx, 16
+ 000b7 48 6b c9 01 imul rcx, rcx, 1
+ 000bb 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 000bf 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 000c4 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c1$3[rbp], xmm0
+
+; 278 : register __m128d c2 = _mm_mul_pd(right[i].f64_x[2], vec);
+
+ 000cb 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000d3 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000da 48 03 c8 add rcx, rax
+ 000dd 48 8b c1 mov rax, rcx
+ 000e0 b9 10 00 00 00 mov ecx, 16
+ 000e5 48 6b c9 02 imul rcx, rcx, 2
+ 000e9 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 000ed 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 000f2 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c2$4[rbp], xmm0
+
+; 279 : register __m128d c3 = _mm_mul_pd(right[i].f64_x[3], vec);
+
+ 000f9 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00101 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00108 48 03 c8 add rcx, rax
+ 0010b 48 8b c1 mov rax, rcx
+ 0010e b9 10 00 00 00 mov ecx, 16
+ 00113 48 6b c9 03 imul rcx, rcx, 3
+ 00117 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 0011b 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 00120 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c3$5[rbp], xmm0
+
+; 280 : register __m128d c4 = _mm_mul_pd(right[i].f64_x[4], vec);
+
+ 00127 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0012f 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00136 48 03 c8 add rcx, rax
+ 00139 48 8b c1 mov rax, rcx
+ 0013c b9 10 00 00 00 mov ecx, 16
+ 00141 48 6b c9 04 imul rcx, rcx, 4
+ 00145 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 00149 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 0014e 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c4$6[rbp], xmm0
+
+; 281 : register __m128d c5 = _mm_mul_pd(right[i].f64_x[5], vec);
+
+ 00155 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0015d 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00164 48 03 c8 add rcx, rax
+ 00167 48 8b c1 mov rax, rcx
+ 0016a b9 10 00 00 00 mov ecx, 16
+ 0016f 48 6b c9 05 imul rcx, rcx, 5
+ 00173 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 00177 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 0017c 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c5$7[rbp], xmm0
+
+; 282 : register __m128d c6 = _mm_mul_pd(right[i].f64_x[6], vec);
+
+ 00183 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0018b 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00192 48 03 c8 add rcx, rax
+ 00195 48 8b c1 mov rax, rcx
+ 00198 b9 10 00 00 00 mov ecx, 16
+ 0019d 48 6b c9 06 imul rcx, rcx, 6
+ 001a1 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 001a5 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 001aa 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c6$8[rbp], xmm0
+
+; 283 : register __m128d c7 = _mm_mul_pd(right[i].f64_x[7], vec);
+
+ 001b1 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001b9 48 8b 8d b0 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 001c0 48 03 c8 add rcx, rax
+ 001c3 48 8b c1 mov rax, rcx
+ 001c6 b9 10 00 00 00 mov ecx, 16
+ 001cb 48 6b c9 07 imul rcx, rcx, 7
+ 001cf 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 001d3 66 0f 59 45 10 mulpd xmm0, XMMWORD PTR vec$[rbp]
+ 001d8 0f 29 85 b0 01
+ 00 00 movaps XMMWORD PTR c7$9[rbp], xmm0
+
+; 284 :
+; 285 : ans[i].f64_x[0] = c0;
+
+ 001df 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001e7 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 001ee 48 03 c8 add rcx, rax
+ 001f1 48 8b c1 mov rax, rcx
+ 001f4 b9 10 00 00 00 mov ecx, 16
+ 001f9 48 6b c9 00 imul rcx, rcx, 0
+ 001fd 0f 28 45 60 movaps xmm0, XMMWORD PTR c0$2[rbp]
+ 00201 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 286 : ans[i].f64_x[1] = c1;
+
+ 00205 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0020d 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00214 48 03 c8 add rcx, rax
+ 00217 48 8b c1 mov rax, rcx
+ 0021a b9 10 00 00 00 mov ecx, 16
+ 0021f 48 6b c9 01 imul rcx, rcx, 1
+ 00223 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR c1$3[rbp]
+ 0022a 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 287 : ans[i].f64_x[2] = c2;
+
+ 0022e 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00236 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0023d 48 03 c8 add rcx, rax
+ 00240 48 8b c1 mov rax, rcx
+ 00243 b9 10 00 00 00 mov ecx, 16
+ 00248 48 6b c9 02 imul rcx, rcx, 2
+ 0024c 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR c2$4[rbp]
+ 00253 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 288 : ans[i].f64_x[3] = c3;
+
+ 00257 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0025f 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00266 48 03 c8 add rcx, rax
+ 00269 48 8b c1 mov rax, rcx
+ 0026c b9 10 00 00 00 mov ecx, 16
+ 00271 48 6b c9 03 imul rcx, rcx, 3
+ 00275 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR c3$5[rbp]
+ 0027c 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 289 : ans[i].f64_x[4] = c4;
+
+ 00280 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00288 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0028f 48 03 c8 add rcx, rax
+ 00292 48 8b c1 mov rax, rcx
+ 00295 b9 10 00 00 00 mov ecx, 16
+ 0029a 48 6b c9 04 imul rcx, rcx, 4
+ 0029e 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR c4$6[rbp]
+ 002a5 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 290 : ans[i].f64_x[5] = c5;
+
+ 002a9 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 002b1 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 002b8 48 03 c8 add rcx, rax
+ 002bb 48 8b c1 mov rax, rcx
+ 002be b9 10 00 00 00 mov ecx, 16
+ 002c3 48 6b c9 05 imul rcx, rcx, 5
+ 002c7 0f 28 85 50 01
+ 00 00 movaps xmm0, XMMWORD PTR c5$7[rbp]
+ 002ce 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 291 : ans[i].f64_x[6] = c6;
+
+ 002d2 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 002da 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 002e1 48 03 c8 add rcx, rax
+ 002e4 48 8b c1 mov rax, rcx
+ 002e7 b9 10 00 00 00 mov ecx, 16
+ 002ec 48 6b c9 06 imul rcx, rcx, 6
+ 002f0 0f 28 85 80 01
+ 00 00 movaps xmm0, XMMWORD PTR c6$8[rbp]
+ 002f7 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 292 : ans[i].f64_x[7] = c7;
+
+ 002fb 48 69 45 38 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00303 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0030a 48 03 c8 add rcx, rax
+ 0030d 48 8b c1 mov rax, rcx
+ 00310 b9 10 00 00 00 mov ecx, 16
+ 00315 48 6b c9 07 imul rcx, rcx, 7
+ 00319 0f 28 85 b0 01
+ 00 00 movaps xmm0, XMMWORD PTR c7$9[rbp]
+ 00320 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 293 : }
+
+ 00324 e9 2d fd ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 294 : }
+
+ 00329 48 8d a5 98 02
+ 00 00 lea rsp, QWORD PTR [rbp+664]
+ 00330 5f pop rdi
+ 00331 5d pop rbp
+ 00332 c3 ret 0
+double_buf_scalar_mul_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_scalar_mul_512
+_TEXT SEGMENT
+vec$ = 64
+i$1 = 152
+c0$2 = 192
+right$ = 560
+ans$ = 568
+scalar$ = 576
+count$ = 584
+float_buf_scalar_mul_512 PROC ; COMDAT
+
+; 263 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 30 02
+ 00 00 sub rsp, 560 ; 00000230H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 264 : register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]);
+
+ 0003a b8 10 00 00 00 mov eax, 16
+ 0003f 48 6b c0 00 imul rax, rax, 0
+ 00043 49 8b 8d 40 02
+ 00 00 mov rcx, QWORD PTR scalar$[r13]
+ 0004a 62 f2 7d 48 18
+ 04 01 vbroadcastss zmm0, XMMWORD PTR [rcx+rax]
+ 00051 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR vec$[rbp], zmm0
+
+; 265 : for (size_t i = 0; i < count; i++) {
+
+ 00058 48 c7 85 98 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$1[rbp], 0
+ 00063 eb 11 jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00065 48 8b 85 98 00
+ 00 00 mov rax, QWORD PTR i$1[rbp]
+ 0006c 48 ff c0 inc rax
+ 0006f 48 89 85 98 00
+ 00 00 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 00076 49 8b 85 48 02
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 0007d 48 39 85 98 00
+ 00 00 cmp QWORD PTR i$1[rbp], rax
+ 00084 73 64 jae SHORT $LN3@float_buf_
+
+; 266 : register __m512 c0 = _mm512_mul_ps(right[i].f32_z[0], vec);
+
+ 00086 48 6b 85 98 00
+ 00 00 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0008e 49 8b 8d 30 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00095 48 03 c8 add rcx, rax
+ 00098 48 8b c1 mov rax, rcx
+ 0009b b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000a0 48 6b c9 00 imul rcx, rcx, 0
+ 000a4 62 f1 7c 48 10
+ 04 08 vmovups zmm0, ZMMWORD PTR [rax+rcx]
+ 000ab 62 f1 7c 48 59
+ 45 01 vmulps zmm0, zmm0, ZMMWORD PTR vec$[rbp]
+ 000b2 62 f1 7c 48 11
+ 45 03 vmovups ZMMWORD PTR c0$2[rbp], zmm0
+
+; 267 :
+; 268 : ans[i].f32_z[0] = c0;
+
+ 000b9 48 6b 85 98 00
+ 00 00 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000c1 49 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000c8 48 03 c8 add rcx, rax
+ 000cb 48 8b c1 mov rax, rcx
+ 000ce b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000d3 48 6b c9 00 imul rcx, rcx, 0
+ 000d7 62 f1 7c 48 10
+ 45 03 vmovups zmm0, ZMMWORD PTR c0$2[rbp]
+ 000de 62 f1 7c 48 11
+ 04 08 vmovups ZMMWORD PTR [rax+rcx], zmm0
+
+; 269 : }
+
+ 000e5 e9 7b ff ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 270 : }
+
+ 000ea 49 8d a5 10 02
+ 00 00 lea rsp, QWORD PTR [r13+528]
+ 000f1 5f pop rdi
+ 000f2 5d pop rbp
+ 000f3 41 5d pop r13
+ 000f5 c3 ret 0
+float_buf_scalar_mul_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_scalar_mul_avx
+_TEXT SEGMENT
+vec$ = 32
+i$1 = 88
+c0$2 = 128
+c1$3 = 192
+right$ = 496
+ans$ = 504
+scalar$ = 512
+count$ = 520
+float_buf_scalar_mul_avx PROC ; COMDAT
+
+; 251 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec f0 01
+ 00 00 sub rsp, 496 ; 000001f0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 252 : register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data)));
+
+ 0003a 49 8b 85 00 02
+ 00 00 mov rax, QWORD PTR scalar$[r13]
+ 00041 c4 e2 7d 18 00 vbroadcastss ymm0, DWORD PTR [rax]
+ 00046 c5 fc 11 45 20 vmovups YMMWORD PTR vec$[rbp], ymm0
+
+; 253 : for (size_t i = 0; i < count; i++) {
+
+ 0004b 48 c7 45 58 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00053 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00055 48 8b 45 58 mov rax, QWORD PTR i$1[rbp]
+ 00059 48 ff c0 inc rax
+ 0005c 48 89 45 58 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 00060 49 8b 85 08 02
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00067 48 39 45 58 cmp QWORD PTR i$1[rbp], rax
+ 0006b 0f 83 af 00 00
+ 00 jae $LN3@float_buf_
+
+; 254 : register __m256 c0 = _mm256_mul_ps(right[i].f32_y[0], vec);
+
+ 00071 48 6b 45 58 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00076 49 8b 8d f0 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0007d 48 03 c8 add rcx, rax
+ 00080 48 8b c1 mov rax, rcx
+ 00083 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00088 48 6b c9 00 imul rcx, rcx, 0
+ 0008c c5 fc 10 04 08 vmovups ymm0, YMMWORD PTR [rax+rcx]
+ 00091 c5 fc 59 45 20 vmulps ymm0, ymm0, YMMWORD PTR vec$[rbp]
+ 00096 c5 fc 11 85 80
+ 00 00 00 vmovups YMMWORD PTR c0$2[rbp], ymm0
+
+; 255 : register __m256 c1 = _mm256_mul_ps(right[i].f32_y[1], vec);
+
+ 0009e 48 6b 45 58 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000a3 49 8b 8d f0 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000aa 48 03 c8 add rcx, rax
+ 000ad 48 8b c1 mov rax, rcx
+ 000b0 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000b5 48 6b c9 01 imul rcx, rcx, 1
+ 000b9 c5 fc 10 04 08 vmovups ymm0, YMMWORD PTR [rax+rcx]
+ 000be c5 fc 59 45 20 vmulps ymm0, ymm0, YMMWORD PTR vec$[rbp]
+ 000c3 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c1$3[rbp], ymm0
+
+; 256 :
+; 257 : ans[i].f32_y[0] = c0;
+
+ 000cb 48 6b 45 58 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000d0 49 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000d7 48 03 c8 add rcx, rax
+ 000da 48 8b c1 mov rax, rcx
+ 000dd b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000e2 48 6b c9 00 imul rcx, rcx, 0
+ 000e6 c5 fc 10 85 80
+ 00 00 00 vmovups ymm0, YMMWORD PTR c0$2[rbp]
+ 000ee c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 258 : ans[i].f32_y[1] = c1;
+
+ 000f3 48 6b 45 58 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000f8 49 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000ff 48 03 c8 add rcx, rax
+ 00102 48 8b c1 mov rax, rcx
+ 00105 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0010a 48 6b c9 01 imul rcx, rcx, 1
+ 0010e c5 fc 10 85 c0
+ 00 00 00 vmovups ymm0, YMMWORD PTR c1$3[rbp]
+ 00116 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 259 : }
+
+ 0011b e9 35 ff ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 260 : }
+
+ 00120 49 8d a5 d0 01
+ 00 00 lea rsp, QWORD PTR [r13+464]
+ 00127 5f pop rdi
+ 00128 5d pop rbp
+ 00129 41 5d pop r13
+ 0012b c3 ret 0
+float_buf_scalar_mul_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_scalar_mul_sse
+_TEXT SEGMENT
+vec$ = 16
+i$1 = 56
+c0$2 = 96
+c1$3 = 144
+c2$4 = 192
+c3$5 = 240
+right$ = 496
+ans$ = 504
+scalar$ = 512
+count$ = 520
+float_buf_scalar_mul_sse PROC ; COMDAT
+
+; 235 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 236 : register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]);
+
+ 0002f b8 04 00 00 00 mov eax, 4
+ 00034 48 6b c0 00 imul rax, rax, 0
+ 00038 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR scalar$[rbp]
+ 0003f f3 0f 10 04 01 movss xmm0, DWORD PTR [rcx+rax]
+ 00044 0f c6 c0 00 shufps xmm0, xmm0, 0
+ 00048 0f 29 45 10 movaps XMMWORD PTR vec$[rbp], xmm0
+
+; 237 : for (size_t i = 0; i < count; i++) {
+
+ 0004c 48 c7 45 38 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00054 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00056 48 8b 45 38 mov rax, QWORD PTR i$1[rbp]
+ 0005a 48 ff c0 inc rax
+ 0005d 48 89 45 38 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 00061 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 00068 48 39 45 38 cmp QWORD PTR i$1[rbp], rax
+ 0006c 0f 83 3f 01 00
+ 00 jae $LN3@float_buf_
+
+; 238 : register __m128 c0 = _mm_mul_ps(right[i].f32_x[0], vec);
+
+ 00072 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00077 48 8b 8d f0 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 0007e 48 03 c8 add rcx, rax
+ 00081 48 8b c1 mov rax, rcx
+ 00084 b9 10 00 00 00 mov ecx, 16
+ 00089 48 6b c9 00 imul rcx, rcx, 0
+ 0008d 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 00091 0f 59 45 10 mulps xmm0, XMMWORD PTR vec$[rbp]
+ 00095 0f 29 45 60 movaps XMMWORD PTR c0$2[rbp], xmm0
+
+; 239 : register __m128 c1 = _mm_mul_ps(right[i].f32_x[1], vec);
+
+ 00099 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0009e 48 8b 8d f0 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000a5 48 03 c8 add rcx, rax
+ 000a8 48 8b c1 mov rax, rcx
+ 000ab b9 10 00 00 00 mov ecx, 16
+ 000b0 48 6b c9 01 imul rcx, rcx, 1
+ 000b4 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 000b8 0f 59 45 10 mulps xmm0, XMMWORD PTR vec$[rbp]
+ 000bc 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c1$3[rbp], xmm0
+
+; 240 : register __m128 c2 = _mm_mul_ps(right[i].f32_x[2], vec);
+
+ 000c3 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000c8 48 8b 8d f0 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000cf 48 03 c8 add rcx, rax
+ 000d2 48 8b c1 mov rax, rcx
+ 000d5 b9 10 00 00 00 mov ecx, 16
+ 000da 48 6b c9 02 imul rcx, rcx, 2
+ 000de 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 000e2 0f 59 45 10 mulps xmm0, XMMWORD PTR vec$[rbp]
+ 000e6 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c2$4[rbp], xmm0
+
+; 241 : register __m128 c3 = _mm_mul_ps(right[i].f32_x[3], vec);
+
+ 000ed 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000f2 48 8b 8d f0 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000f9 48 03 c8 add rcx, rax
+ 000fc 48 8b c1 mov rax, rcx
+ 000ff b9 10 00 00 00 mov ecx, 16
+ 00104 48 6b c9 03 imul rcx, rcx, 3
+ 00108 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 0010c 0f 59 45 10 mulps xmm0, XMMWORD PTR vec$[rbp]
+ 00110 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c3$5[rbp], xmm0
+
+; 242 :
+; 243 : ans[i].f32_x[0] = c0;
+
+ 00117 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0011c 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00123 48 03 c8 add rcx, rax
+ 00126 48 8b c1 mov rax, rcx
+ 00129 b9 10 00 00 00 mov ecx, 16
+ 0012e 48 6b c9 00 imul rcx, rcx, 0
+ 00132 0f 28 45 60 movaps xmm0, XMMWORD PTR c0$2[rbp]
+ 00136 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 244 : ans[i].f32_x[1] = c1;
+
+ 0013a 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0013f 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00146 48 03 c8 add rcx, rax
+ 00149 48 8b c1 mov rax, rcx
+ 0014c b9 10 00 00 00 mov ecx, 16
+ 00151 48 6b c9 01 imul rcx, rcx, 1
+ 00155 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR c1$3[rbp]
+ 0015c 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 245 : ans[i].f32_x[2] = c2;
+
+ 00160 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00165 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0016c 48 03 c8 add rcx, rax
+ 0016f 48 8b c1 mov rax, rcx
+ 00172 b9 10 00 00 00 mov ecx, 16
+ 00177 48 6b c9 02 imul rcx, rcx, 2
+ 0017b 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR c2$4[rbp]
+ 00182 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 246 : ans[i].f32_x[3] = c3;
+
+ 00186 48 6b 45 38 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0018b 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00192 48 03 c8 add rcx, rax
+ 00195 48 8b c1 mov rax, rcx
+ 00198 b9 10 00 00 00 mov ecx, 16
+ 0019d 48 6b c9 03 imul rcx, rcx, 3
+ 001a1 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR c3$5[rbp]
+ 001a8 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 247 : }
+
+ 001ac e9 a5 fe ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 248 : }
+
+ 001b1 48 8d a5 d8 01
+ 00 00 lea rsp, QWORD PTR [rbp+472]
+ 001b8 5f pop rdi
+ 001b9 5d pop rbp
+ 001ba c3 ret 0
+float_buf_scalar_mul_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_sub_512
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 64
+left$ = 432
+right$ = 440
+ans$ = 448
+count$ = 456
+double_buf_sub_512 PROC ; COMDAT
+
+; 227 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec b0 01
+ 00 00 sub rsp, 432 ; 000001b0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 228 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0004f 49 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 0f 83 83 00 00
+ 00 jae $LN3@double_buf
+
+; 229 : register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]);
+
+ 00060 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00068 49 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0006f 48 03 c8 add rcx, rax
+ 00072 48 8b c1 mov rax, rcx
+ 00075 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0007a 48 6b c9 00 imul rcx, rcx, 0
+ 0007e 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00086 4d 8b 85 b0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 0008d 4c 03 c2 add r8, rdx
+ 00090 49 8b d0 mov rdx, r8
+ 00093 41 b8 40 00 00
+ 00 mov r8d, 64 ; 00000040H
+ 00099 4d 6b c0 00 imul r8, r8, 0
+ 0009d 62 b1 7c 48 10
+ 04 02 vmovups zmm0, ZMMWORD PTR [rdx+r8]
+ 000a4 62 f1 7c 48 5c
+ 04 08 vsubps zmm0, zmm0, ZMMWORD PTR [rax+rcx]
+ 000ab 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR c0$2[rbp], zmm0
+
+; 230 : ans[i].f32_z[0] = c0;
+
+ 000b2 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000ba 49 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000c1 48 03 c8 add rcx, rax
+ 000c4 48 8b c1 mov rax, rcx
+ 000c7 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000cc 48 6b c9 00 imul rcx, rcx, 0
+ 000d0 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR c0$2[rbp]
+ 000d7 62 f1 7c 48 11
+ 04 08 vmovups ZMMWORD PTR [rax+rcx], zmm0
+
+; 231 : }
+
+ 000de e9 61 ff ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 232 : }
+
+ 000e3 49 8d a5 90 01
+ 00 00 lea rsp, QWORD PTR [r13+400]
+ 000ea 5f pop rdi
+ 000eb 5d pop rbp
+ 000ec 41 5d pop r13
+ 000ee c3 ret 0
+double_buf_sub_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_sub_avx
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 64
+c1$3 = 128
+left$ = 432
+right$ = 440
+ans$ = 448
+count$ = 456
+double_buf_sub_avx PROC ; COMDAT
+
+; 217 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec b0 01
+ 00 00 sub rsp, 432 ; 000001b0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 218 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0004f 49 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 0f 83 f5 00 00
+ 00 jae $LN3@double_buf
+
+; 219 : register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]);
+
+ 00060 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00068 49 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0006f 48 03 c8 add rcx, rax
+ 00072 48 8b c1 mov rax, rcx
+ 00075 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0007a 48 6b c9 00 imul rcx, rcx, 0
+ 0007e 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00086 4d 8b 85 b0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 0008d 4c 03 c2 add r8, rdx
+ 00090 49 8b d0 mov rdx, r8
+ 00093 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 00099 4d 6b c0 00 imul r8, r8, 0
+ 0009d c4 a1 7c 10 04
+ 02 vmovups ymm0, YMMWORD PTR [rdx+r8]
+ 000a3 c5 fc 5c 04 08 vsubps ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000a8 c5 fc 11 45 40 vmovups YMMWORD PTR c0$2[rbp], ymm0
+
+; 220 : register __m256 c1 = _mm256_sub_ps(left[i].f32_y[1], right[i].f32_y[1]);
+
+ 000ad 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000b5 49 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000bc 48 03 c8 add rcx, rax
+ 000bf 48 8b c1 mov rax, rcx
+ 000c2 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000c7 48 6b c9 01 imul rcx, rcx, 1
+ 000cb 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000d3 4d 8b 85 b0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 000da 4c 03 c2 add r8, rdx
+ 000dd 49 8b d0 mov rdx, r8
+ 000e0 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 000e6 4d 6b c0 01 imul r8, r8, 1
+ 000ea c4 a1 7c 10 04
+ 02 vmovups ymm0, YMMWORD PTR [rdx+r8]
+ 000f0 c5 fc 5c 04 08 vsubps ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000f5 c5 fc 11 85 80
+ 00 00 00 vmovups YMMWORD PTR c1$3[rbp], ymm0
+
+; 221 : ans[i].f32_y[0] = c0;
+
+ 000fd 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00105 49 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0010c 48 03 c8 add rcx, rax
+ 0010f 48 8b c1 mov rax, rcx
+ 00112 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00117 48 6b c9 00 imul rcx, rcx, 0
+ 0011b c5 fc 10 45 40 vmovups ymm0, YMMWORD PTR c0$2[rbp]
+ 00120 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 222 : ans[i].f32_y[1] = c1;
+
+ 00125 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0012d 49 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00134 48 03 c8 add rcx, rax
+ 00137 48 8b c1 mov rax, rcx
+ 0013a b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0013f 48 6b c9 01 imul rcx, rcx, 1
+ 00143 c5 fc 10 85 80
+ 00 00 00 vmovups ymm0, YMMWORD PTR c1$3[rbp]
+ 0014b c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 223 : }
+
+ 00150 e9 ef fe ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 224 : }
+
+ 00155 49 8d a5 90 01
+ 00 00 lea rsp, QWORD PTR [r13+400]
+ 0015c 5f pop rdi
+ 0015d 5d pop rbp
+ 0015e 41 5d pop r13
+ 00160 c3 ret 0
+double_buf_sub_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_sub_sse
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 48
+c1$3 = 96
+c2$4 = 144
+c3$5 = 192
+c4$6 = 240
+c5$7 = 288
+c6$8 = 336
+c7$9 = 384
+left$ = 640
+right$ = 648
+ans$ = 656
+count$ = 664
+double_buf_sub_sse PROC ; COMDAT
+
+; 194 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 88 02
+ 00 00 sub rsp, 648 ; 00000288H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 195 : for (size_t i = 0; i < count; i++) {
+
+ 0002f 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00037 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00039 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 0003d 48 ff c0 inc rax
+ 00040 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 00044 48 8b 85 98 02
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 0004b 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0004f 0f 83 b1 03 00
+ 00 jae $LN3@double_buf
+
+; 196 : register __m128d c0 = _mm_sub_pd(left[i].f64_x[0], right[i].f64_x[0]);
+
+ 00055 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0005d 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00064 48 03 c8 add rcx, rax
+ 00067 48 8b c1 mov rax, rcx
+ 0006a b9 10 00 00 00 mov ecx, 16
+ 0006f 48 6b c9 00 imul rcx, rcx, 0
+ 00073 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0007b 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 00082 4c 03 c2 add r8, rdx
+ 00085 49 8b d0 mov rdx, r8
+ 00088 41 b8 10 00 00
+ 00 mov r8d, 16
+ 0008e 4d 6b c0 00 imul r8, r8, 0
+ 00092 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00097 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 0009c 0f 29 45 30 movaps XMMWORD PTR c0$2[rbp], xmm0
+
+; 197 : register __m128d c1 = _mm_sub_pd(left[i].f64_x[1], right[i].f64_x[1]);
+
+ 000a0 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000a8 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000af 48 03 c8 add rcx, rax
+ 000b2 48 8b c1 mov rax, rcx
+ 000b5 b9 10 00 00 00 mov ecx, 16
+ 000ba 48 6b c9 01 imul rcx, rcx, 1
+ 000be 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000c6 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 000cd 4c 03 c2 add r8, rdx
+ 000d0 49 8b d0 mov rdx, r8
+ 000d3 41 b8 10 00 00
+ 00 mov r8d, 16
+ 000d9 4d 6b c0 01 imul r8, r8, 1
+ 000dd 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 000e2 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 000e7 0f 29 45 60 movaps XMMWORD PTR c1$3[rbp], xmm0
+
+; 198 : register __m128d c2 = _mm_sub_pd(left[i].f64_x[2], right[i].f64_x[2]);
+
+ 000eb 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000f3 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000fa 48 03 c8 add rcx, rax
+ 000fd 48 8b c1 mov rax, rcx
+ 00100 b9 10 00 00 00 mov ecx, 16
+ 00105 48 6b c9 02 imul rcx, rcx, 2
+ 00109 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00111 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 00118 4c 03 c2 add r8, rdx
+ 0011b 49 8b d0 mov rdx, r8
+ 0011e 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00124 4d 6b c0 02 imul r8, r8, 2
+ 00128 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 0012d 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 00132 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c2$4[rbp], xmm0
+
+; 199 : register __m128d c3 = _mm_sub_pd(left[i].f64_x[3], right[i].f64_x[3]);
+
+ 00139 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00141 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00148 48 03 c8 add rcx, rax
+ 0014b 48 8b c1 mov rax, rcx
+ 0014e b9 10 00 00 00 mov ecx, 16
+ 00153 48 6b c9 03 imul rcx, rcx, 3
+ 00157 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0015f 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 00166 4c 03 c2 add r8, rdx
+ 00169 49 8b d0 mov rdx, r8
+ 0016c 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00172 4d 6b c0 03 imul r8, r8, 3
+ 00176 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 0017b 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 00180 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c3$5[rbp], xmm0
+
+; 200 : register __m128d c4 = _mm_sub_pd(left[i].f64_x[4], right[i].f64_x[4]);
+
+ 00187 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0018f 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00196 48 03 c8 add rcx, rax
+ 00199 48 8b c1 mov rax, rcx
+ 0019c b9 10 00 00 00 mov ecx, 16
+ 001a1 48 6b c9 04 imul rcx, rcx, 4
+ 001a5 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001ad 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 001b4 4c 03 c2 add r8, rdx
+ 001b7 49 8b d0 mov rdx, r8
+ 001ba 41 b8 10 00 00
+ 00 mov r8d, 16
+ 001c0 4d 6b c0 04 imul r8, r8, 4
+ 001c4 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 001c9 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 001ce 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c4$6[rbp], xmm0
+
+; 201 : register __m128d c5 = _mm_sub_pd(left[i].f64_x[5], right[i].f64_x[5]);
+
+ 001d5 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001dd 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 001e4 48 03 c8 add rcx, rax
+ 001e7 48 8b c1 mov rax, rcx
+ 001ea b9 10 00 00 00 mov ecx, 16
+ 001ef 48 6b c9 05 imul rcx, rcx, 5
+ 001f3 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001fb 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 00202 4c 03 c2 add r8, rdx
+ 00205 49 8b d0 mov rdx, r8
+ 00208 41 b8 10 00 00
+ 00 mov r8d, 16
+ 0020e 4d 6b c0 05 imul r8, r8, 5
+ 00212 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00217 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 0021c 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c5$7[rbp], xmm0
+
+; 202 : register __m128d c6 = _mm_sub_pd(left[i].f64_x[6], right[i].f64_x[6]);
+
+ 00223 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0022b 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00232 48 03 c8 add rcx, rax
+ 00235 48 8b c1 mov rax, rcx
+ 00238 b9 10 00 00 00 mov ecx, 16
+ 0023d 48 6b c9 06 imul rcx, rcx, 6
+ 00241 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00249 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 00250 4c 03 c2 add r8, rdx
+ 00253 49 8b d0 mov rdx, r8
+ 00256 41 b8 10 00 00
+ 00 mov r8d, 16
+ 0025c 4d 6b c0 06 imul r8, r8, 6
+ 00260 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00265 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 0026a 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c6$8[rbp], xmm0
+
+; 203 : register __m128d c7 = _mm_sub_pd(left[i].f64_x[7], right[i].f64_x[7]);
+
+ 00271 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00279 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00280 48 03 c8 add rcx, rax
+ 00283 48 8b c1 mov rax, rcx
+ 00286 b9 10 00 00 00 mov ecx, 16
+ 0028b 48 6b c9 07 imul rcx, rcx, 7
+ 0028f 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00297 4c 8b 85 80 02
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 0029e 4c 03 c2 add r8, rdx
+ 002a1 49 8b d0 mov rdx, r8
+ 002a4 41 b8 10 00 00
+ 00 mov r8d, 16
+ 002aa 4d 6b c0 07 imul r8, r8, 7
+ 002ae 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 002b3 66 0f 5c 04 08 subpd xmm0, XMMWORD PTR [rax+rcx]
+ 002b8 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c7$9[rbp], xmm0
+
+; 204 :
+; 205 : ans[i].f64_x[0] = c0;
+
+ 002bf 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 002c7 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 002ce 48 03 c8 add rcx, rax
+ 002d1 48 8b c1 mov rax, rcx
+ 002d4 b9 10 00 00 00 mov ecx, 16
+ 002d9 48 6b c9 00 imul rcx, rcx, 0
+ 002dd 0f 28 45 30 movaps xmm0, XMMWORD PTR c0$2[rbp]
+ 002e1 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 206 : ans[i].f64_x[1] = c1;
+
+ 002e5 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 002ed 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 002f4 48 03 c8 add rcx, rax
+ 002f7 48 8b c1 mov rax, rcx
+ 002fa b9 10 00 00 00 mov ecx, 16
+ 002ff 48 6b c9 01 imul rcx, rcx, 1
+ 00303 0f 28 45 60 movaps xmm0, XMMWORD PTR c1$3[rbp]
+ 00307 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 207 : ans[i].f64_x[2] = c2;
+
+ 0030b 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00313 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0031a 48 03 c8 add rcx, rax
+ 0031d 48 8b c1 mov rax, rcx
+ 00320 b9 10 00 00 00 mov ecx, 16
+ 00325 48 6b c9 02 imul rcx, rcx, 2
+ 00329 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR c2$4[rbp]
+ 00330 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 208 : ans[i].f64_x[3] = c3;
+
+ 00334 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0033c 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00343 48 03 c8 add rcx, rax
+ 00346 48 8b c1 mov rax, rcx
+ 00349 b9 10 00 00 00 mov ecx, 16
+ 0034e 48 6b c9 03 imul rcx, rcx, 3
+ 00352 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR c3$5[rbp]
+ 00359 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 209 : ans[i].f64_x[4] = c4;
+
+ 0035d 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00365 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0036c 48 03 c8 add rcx, rax
+ 0036f 48 8b c1 mov rax, rcx
+ 00372 b9 10 00 00 00 mov ecx, 16
+ 00377 48 6b c9 04 imul rcx, rcx, 4
+ 0037b 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR c4$6[rbp]
+ 00382 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 210 : ans[i].f64_x[5] = c5;
+
+ 00386 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0038e 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00395 48 03 c8 add rcx, rax
+ 00398 48 8b c1 mov rax, rcx
+ 0039b b9 10 00 00 00 mov ecx, 16
+ 003a0 48 6b c9 05 imul rcx, rcx, 5
+ 003a4 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR c5$7[rbp]
+ 003ab 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 211 : ans[i].f64_x[6] = c6;
+
+ 003af 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 003b7 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 003be 48 03 c8 add rcx, rax
+ 003c1 48 8b c1 mov rax, rcx
+ 003c4 b9 10 00 00 00 mov ecx, 16
+ 003c9 48 6b c9 06 imul rcx, rcx, 6
+ 003cd 0f 28 85 50 01
+ 00 00 movaps xmm0, XMMWORD PTR c6$8[rbp]
+ 003d4 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 212 : ans[i].f64_x[7] = c7;
+
+ 003d8 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 003e0 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 003e7 48 03 c8 add rcx, rax
+ 003ea 48 8b c1 mov rax, rcx
+ 003ed b9 10 00 00 00 mov ecx, 16
+ 003f2 48 6b c9 07 imul rcx, rcx, 7
+ 003f6 0f 28 85 80 01
+ 00 00 movaps xmm0, XMMWORD PTR c7$9[rbp]
+ 003fd 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 213 : }
+
+ 00401 e9 33 fc ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 214 : }
+
+ 00406 48 8d a5 68 02
+ 00 00 lea rsp, QWORD PTR [rbp+616]
+ 0040d 5f pop rdi
+ 0040e 5d pop rbp
+ 0040f c3 ret 0
+double_buf_sub_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_sub_512
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 64
+left$ = 432
+right$ = 440
+ans$ = 448
+count$ = 456
+float_buf_sub_512 PROC ; COMDAT
+
+; 186 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec b0 01
+ 00 00 sub rsp, 432 ; 000001b0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 187 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 0004f 49 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 73 7a jae SHORT $LN3@float_buf_
+
+; 188 : register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]);
+
+ 0005c 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00061 49 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00068 48 03 c8 add rcx, rax
+ 0006b 48 8b c1 mov rax, rcx
+ 0006e b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 00073 48 6b c9 00 imul rcx, rcx, 0
+ 00077 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0007c 4d 8b 85 b0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 00083 4c 03 c2 add r8, rdx
+ 00086 49 8b d0 mov rdx, r8
+ 00089 41 b8 40 00 00
+ 00 mov r8d, 64 ; 00000040H
+ 0008f 4d 6b c0 00 imul r8, r8, 0
+ 00093 62 b1 7c 48 10
+ 04 02 vmovups zmm0, ZMMWORD PTR [rdx+r8]
+ 0009a 62 f1 7c 48 5c
+ 04 08 vsubps zmm0, zmm0, ZMMWORD PTR [rax+rcx]
+ 000a1 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR c0$2[rbp], zmm0
+
+; 189 : ans[i].f32_z[0] = c0;
+
+ 000a8 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000ad 49 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000b4 48 03 c8 add rcx, rax
+ 000b7 48 8b c1 mov rax, rcx
+ 000ba b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000bf 48 6b c9 00 imul rcx, rcx, 0
+ 000c3 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR c0$2[rbp]
+ 000ca 62 f1 7c 48 11
+ 04 08 vmovups ZMMWORD PTR [rax+rcx], zmm0
+
+; 190 : }
+
+ 000d1 e9 6e ff ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 191 : }
+
+ 000d6 49 8d a5 90 01
+ 00 00 lea rsp, QWORD PTR [r13+400]
+ 000dd 5f pop rdi
+ 000de 5d pop rbp
+ 000df 41 5d pop r13
+ 000e1 c3 ret 0
+float_buf_sub_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_sub_avx
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 64
+c1$3 = 128
+left$ = 432
+right$ = 440
+ans$ = 448
+count$ = 456
+float_buf_sub_avx PROC ; COMDAT
+
+; 176 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec b0 01
+ 00 00 sub rsp, 432 ; 000001b0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 177 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 0004f 49 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 0f 83 e3 00 00
+ 00 jae $LN3@float_buf_
+
+; 178 : register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]);
+
+ 00060 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00065 49 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0006c 48 03 c8 add rcx, rax
+ 0006f 48 8b c1 mov rax, rcx
+ 00072 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00077 48 6b c9 00 imul rcx, rcx, 0
+ 0007b 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00080 4d 8b 85 b0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 00087 4c 03 c2 add r8, rdx
+ 0008a 49 8b d0 mov rdx, r8
+ 0008d 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 00093 4d 6b c0 00 imul r8, r8, 0
+ 00097 c4 a1 7c 10 04
+ 02 vmovups ymm0, YMMWORD PTR [rdx+r8]
+ 0009d c5 fc 5c 04 08 vsubps ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000a2 c5 fc 11 45 40 vmovups YMMWORD PTR c0$2[rbp], ymm0
+
+; 179 : register __m256 c1 = _mm256_sub_ps(left[i].f32_y[1], right[i].f32_y[1]);
+
+ 000a7 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000ac 49 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000b3 48 03 c8 add rcx, rax
+ 000b6 48 8b c1 mov rax, rcx
+ 000b9 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000be 48 6b c9 01 imul rcx, rcx, 1
+ 000c2 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000c7 4d 8b 85 b0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 000ce 4c 03 c2 add r8, rdx
+ 000d1 49 8b d0 mov rdx, r8
+ 000d4 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 000da 4d 6b c0 01 imul r8, r8, 1
+ 000de c4 a1 7c 10 04
+ 02 vmovups ymm0, YMMWORD PTR [rdx+r8]
+ 000e4 c5 fc 5c 04 08 vsubps ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000e9 c5 fc 11 85 80
+ 00 00 00 vmovups YMMWORD PTR c1$3[rbp], ymm0
+
+; 180 : ans[i].f32_y[0] = c0;
+
+ 000f1 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000f6 49 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000fd 48 03 c8 add rcx, rax
+ 00100 48 8b c1 mov rax, rcx
+ 00103 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00108 48 6b c9 00 imul rcx, rcx, 0
+ 0010c c5 fc 10 45 40 vmovups ymm0, YMMWORD PTR c0$2[rbp]
+ 00111 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 181 : ans[i].f32_y[1] = c1;
+
+ 00116 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0011b 49 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00122 48 03 c8 add rcx, rax
+ 00125 48 8b c1 mov rax, rcx
+ 00128 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0012d 48 6b c9 01 imul rcx, rcx, 1
+ 00131 c5 fc 10 85 80
+ 00 00 00 vmovups ymm0, YMMWORD PTR c1$3[rbp]
+ 00139 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 182 : }
+
+ 0013e e9 01 ff ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 183 : }
+
+ 00143 49 8d a5 90 01
+ 00 00 lea rsp, QWORD PTR [r13+400]
+ 0014a 5f pop rdi
+ 0014b 5d pop rbp
+ 0014c 41 5d pop r13
+ 0014e c3 ret 0
+float_buf_sub_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_sub_sse
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 48
+c1$3 = 96
+c2$4 = 144
+c3$5 = 192
+left$ = 448
+right$ = 456
+ans$ = 464
+count$ = 472
+float_buf_sub_sse PROC ; COMDAT
+
+; 161 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec c8 01
+ 00 00 sub rsp, 456 ; 000001c8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 162 : for (size_t i = 0; i < count; i++) {
+
+ 0002f 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00037 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00039 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 0003d 48 ff c0 inc rax
+ 00040 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 00044 48 8b 85 d8 01
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 0004b 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0004f 0f 83 ad 01 00
+ 00 jae $LN3@float_buf_
+
+; 163 : register __m128 c0 = _mm_sub_ps(left[i].f32_x[0], right[i].f32_x[0]);
+
+ 00055 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0005a 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00061 48 03 c8 add rcx, rax
+ 00064 48 8b c1 mov rax, rcx
+ 00067 b9 10 00 00 00 mov ecx, 16
+ 0006c 48 6b c9 00 imul rcx, rcx, 0
+ 00070 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00075 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 0007c 4c 03 c2 add r8, rdx
+ 0007f 49 8b d0 mov rdx, r8
+ 00082 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00088 4d 6b c0 00 imul r8, r8, 0
+ 0008c 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00091 0f 5c 04 08 subps xmm0, XMMWORD PTR [rax+rcx]
+ 00095 0f 29 45 30 movaps XMMWORD PTR c0$2[rbp], xmm0
+
+; 164 : register __m128 c1 = _mm_sub_ps(left[i].f32_x[1], right[i].f32_x[1]);
+
+ 00099 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0009e 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000a5 48 03 c8 add rcx, rax
+ 000a8 48 8b c1 mov rax, rcx
+ 000ab b9 10 00 00 00 mov ecx, 16
+ 000b0 48 6b c9 01 imul rcx, rcx, 1
+ 000b4 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000b9 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 000c0 4c 03 c2 add r8, rdx
+ 000c3 49 8b d0 mov rdx, r8
+ 000c6 41 b8 10 00 00
+ 00 mov r8d, 16
+ 000cc 4d 6b c0 01 imul r8, r8, 1
+ 000d0 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 000d5 0f 5c 04 08 subps xmm0, XMMWORD PTR [rax+rcx]
+ 000d9 0f 29 45 60 movaps XMMWORD PTR c1$3[rbp], xmm0
+
+; 165 : register __m128 c2 = _mm_sub_ps(left[i].f32_x[2], right[i].f32_x[2]);
+
+ 000dd 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000e2 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000e9 48 03 c8 add rcx, rax
+ 000ec 48 8b c1 mov rax, rcx
+ 000ef b9 10 00 00 00 mov ecx, 16
+ 000f4 48 6b c9 02 imul rcx, rcx, 2
+ 000f8 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000fd 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 00104 4c 03 c2 add r8, rdx
+ 00107 49 8b d0 mov rdx, r8
+ 0010a 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00110 4d 6b c0 02 imul r8, r8, 2
+ 00114 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00119 0f 5c 04 08 subps xmm0, XMMWORD PTR [rax+rcx]
+ 0011d 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c2$4[rbp], xmm0
+
+; 166 : register __m128 c3 = _mm_sub_ps(left[i].f32_x[3], right[i].f32_x[3]);
+
+ 00124 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00129 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00130 48 03 c8 add rcx, rax
+ 00133 48 8b c1 mov rax, rcx
+ 00136 b9 10 00 00 00 mov ecx, 16
+ 0013b 48 6b c9 03 imul rcx, rcx, 3
+ 0013f 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00144 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 0014b 4c 03 c2 add r8, rdx
+ 0014e 49 8b d0 mov rdx, r8
+ 00151 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00157 4d 6b c0 03 imul r8, r8, 3
+ 0015b 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00160 0f 5c 04 08 subps xmm0, XMMWORD PTR [rax+rcx]
+ 00164 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c3$5[rbp], xmm0
+
+; 167 :
+; 168 : ans[i].f32_x[0] = c0;
+
+ 0016b 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00170 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00177 48 03 c8 add rcx, rax
+ 0017a 48 8b c1 mov rax, rcx
+ 0017d b9 10 00 00 00 mov ecx, 16
+ 00182 48 6b c9 00 imul rcx, rcx, 0
+ 00186 0f 28 45 30 movaps xmm0, XMMWORD PTR c0$2[rbp]
+ 0018a 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 169 : ans[i].f32_x[1] = c1;
+
+ 0018e 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00193 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0019a 48 03 c8 add rcx, rax
+ 0019d 48 8b c1 mov rax, rcx
+ 001a0 b9 10 00 00 00 mov ecx, 16
+ 001a5 48 6b c9 01 imul rcx, rcx, 1
+ 001a9 0f 28 45 60 movaps xmm0, XMMWORD PTR c1$3[rbp]
+ 001ad 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 170 : ans[i].f32_x[2] = c2;
+
+ 001b1 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 001b6 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 001bd 48 03 c8 add rcx, rax
+ 001c0 48 8b c1 mov rax, rcx
+ 001c3 b9 10 00 00 00 mov ecx, 16
+ 001c8 48 6b c9 02 imul rcx, rcx, 2
+ 001cc 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR c2$4[rbp]
+ 001d3 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 171 : ans[i].f32_x[3] = c3;
+
+ 001d7 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 001dc 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 001e3 48 03 c8 add rcx, rax
+ 001e6 48 8b c1 mov rax, rcx
+ 001e9 b9 10 00 00 00 mov ecx, 16
+ 001ee 48 6b c9 03 imul rcx, rcx, 3
+ 001f2 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR c3$5[rbp]
+ 001f9 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 172 : }
+
+ 001fd e9 37 fe ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 173 : }
+
+ 00202 48 8d a5 a8 01
+ 00 00 lea rsp, QWORD PTR [rbp+424]
+ 00209 5f pop rdi
+ 0020a 5d pop rbp
+ 0020b c3 ret 0
+float_buf_sub_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_add_512
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 64
+c1$3 = 192
+left$ = 560
+right$ = 568
+ans$ = 576
+count$ = 584
+double_buf_add_512 PROC ; COMDAT
+
+; 151 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 30 02
+ 00 00 sub rsp, 560 ; 00000230H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 152 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0004f 49 8b 85 48 02
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 0f 83 01 01 00
+ 00 jae $LN3@double_buf
+
+; 153 : register __m512d c0 = _mm512_add_pd(left[i].f64_z[0], right[i].f64_z[0]);
+
+ 00060 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00068 49 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0006f 48 03 c8 add rcx, rax
+ 00072 48 8b c1 mov rax, rcx
+ 00075 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0007a 48 6b c9 00 imul rcx, rcx, 0
+ 0007e 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00086 4d 8b 85 30 02
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 0008d 4c 03 c2 add r8, rdx
+ 00090 49 8b d0 mov rdx, r8
+ 00093 41 b8 40 00 00
+ 00 mov r8d, 64 ; 00000040H
+ 00099 4d 6b c0 00 imul r8, r8, 0
+ 0009d 62 b1 fd 48 10
+ 04 02 vmovupd zmm0, ZMMWORD PTR [rdx+r8]
+ 000a4 62 f1 fd 48 58
+ 04 08 vaddpd zmm0, zmm0, ZMMWORD PTR [rax+rcx]
+ 000ab 62 f1 fd 48 11
+ 45 01 vmovupd ZMMWORD PTR c0$2[rbp], zmm0
+
+; 154 : register __m512d c1 = _mm512_add_pd(left[i].f64_z[1], right[i].f64_z[1]);
+
+ 000b2 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000ba 49 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000c1 48 03 c8 add rcx, rax
+ 000c4 48 8b c1 mov rax, rcx
+ 000c7 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000cc 48 6b c9 01 imul rcx, rcx, 1
+ 000d0 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000d8 4d 8b 85 30 02
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 000df 4c 03 c2 add r8, rdx
+ 000e2 49 8b d0 mov rdx, r8
+ 000e5 41 b8 40 00 00
+ 00 mov r8d, 64 ; 00000040H
+ 000eb 4d 6b c0 01 imul r8, r8, 1
+ 000ef 62 b1 fd 48 10
+ 04 02 vmovupd zmm0, ZMMWORD PTR [rdx+r8]
+ 000f6 62 f1 fd 48 58
+ 04 08 vaddpd zmm0, zmm0, ZMMWORD PTR [rax+rcx]
+ 000fd 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR c1$3[rbp], zmm0
+
+; 155 : ans[i].f64_z[0] = c0;
+
+ 00104 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0010c 49 8b 8d 40 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00113 48 03 c8 add rcx, rax
+ 00116 48 8b c1 mov rax, rcx
+ 00119 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0011e 48 6b c9 00 imul rcx, rcx, 0
+ 00122 62 f1 fd 48 10
+ 45 01 vmovupd zmm0, ZMMWORD PTR c0$2[rbp]
+ 00129 62 f1 fd 48 11
+ 04 08 vmovupd ZMMWORD PTR [rax+rcx], zmm0
+
+; 156 : ans[i].f64_z[1] = c1;
+
+ 00130 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00138 49 8b 8d 40 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0013f 48 03 c8 add rcx, rax
+ 00142 48 8b c1 mov rax, rcx
+ 00145 b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 0014a 48 6b c9 01 imul rcx, rcx, 1
+ 0014e 62 f1 fd 48 10
+ 45 03 vmovupd zmm0, ZMMWORD PTR c1$3[rbp]
+ 00155 62 f1 fd 48 11
+ 04 08 vmovupd ZMMWORD PTR [rax+rcx], zmm0
+
+; 157 : }
+
+ 0015c e9 e3 fe ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 158 : }
+
+ 00161 49 8d a5 10 02
+ 00 00 lea rsp, QWORD PTR [r13+528]
+ 00168 5f pop rdi
+ 00169 5d pop rbp
+ 0016a 41 5d pop r13
+ 0016c c3 ret 0
+double_buf_add_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_add_avx
+_TEXT SEGMENT
+i$1 = 8
+s$2 = 40
+c0$3 = 96
+c1$4 = 160
+c2$5 = 224
+c3$6 = 288
+left$ = 592
+right$ = 600
+ans$ = 608
+count$ = 616
+double_buf_add_avx PROC ; COMDAT
+
+; 136 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 50 02
+ 00 00 sub rsp, 592 ; 00000250H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 137 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 0004f 49 8b 85 68 02
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 0f 83 f3 01 00
+ 00 jae $LN3@double_buf
+
+; 138 : size_t s = sizeof(MAT_KERNEL(float));
+
+ 00060 48 c7 45 28 40
+ 00 00 00 mov QWORD PTR s$2[rbp], 64 ; 00000040H
+
+; 139 : register __m256d c0 = _mm256_add_pd(left[i].f64_y[0], right[i].f64_y[0]);
+
+ 00068 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00070 49 8b 8d 58 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00077 48 03 c8 add rcx, rax
+ 0007a 48 8b c1 mov rax, rcx
+ 0007d b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00082 48 6b c9 00 imul rcx, rcx, 0
+ 00086 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0008e 4d 8b 85 50 02
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 00095 4c 03 c2 add r8, rdx
+ 00098 49 8b d0 mov rdx, r8
+ 0009b 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 000a1 4d 6b c0 00 imul r8, r8, 0
+ 000a5 c4 a1 7d 10 04
+ 02 vmovupd ymm0, YMMWORD PTR [rdx+r8]
+ 000ab c5 fd 58 04 08 vaddpd ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000b0 c5 fd 11 45 60 vmovupd YMMWORD PTR c0$3[rbp], ymm0
+
+; 140 : register __m256d c1 = _mm256_add_pd(left[i].f64_y[1], right[i].f64_y[1]);
+
+ 000b5 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000bd 49 8b 8d 58 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000c4 48 03 c8 add rcx, rax
+ 000c7 48 8b c1 mov rax, rcx
+ 000ca b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000cf 48 6b c9 01 imul rcx, rcx, 1
+ 000d3 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000db 4d 8b 85 50 02
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 000e2 4c 03 c2 add r8, rdx
+ 000e5 49 8b d0 mov rdx, r8
+ 000e8 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 000ee 4d 6b c0 01 imul r8, r8, 1
+ 000f2 c4 a1 7d 10 04
+ 02 vmovupd ymm0, YMMWORD PTR [rdx+r8]
+ 000f8 c5 fd 58 04 08 vaddpd ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000fd c5 fd 11 85 a0
+ 00 00 00 vmovupd YMMWORD PTR c1$4[rbp], ymm0
+
+; 141 : register __m256d c2 = _mm256_add_pd(left[i].f64_y[0], right[i].f64_y[0]);
+
+ 00105 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0010d 49 8b 8d 58 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00114 48 03 c8 add rcx, rax
+ 00117 48 8b c1 mov rax, rcx
+ 0011a b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0011f 48 6b c9 00 imul rcx, rcx, 0
+ 00123 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0012b 4d 8b 85 50 02
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 00132 4c 03 c2 add r8, rdx
+ 00135 49 8b d0 mov rdx, r8
+ 00138 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 0013e 4d 6b c0 00 imul r8, r8, 0
+ 00142 c4 a1 7d 10 04
+ 02 vmovupd ymm0, YMMWORD PTR [rdx+r8]
+ 00148 c5 fd 58 04 08 vaddpd ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 0014d c5 fd 11 85 e0
+ 00 00 00 vmovupd YMMWORD PTR c2$5[rbp], ymm0
+
+; 142 : register __m256d c3 = _mm256_add_pd(left[i].f64_y[1], right[i].f64_y[1]);
+
+ 00155 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0015d 49 8b 8d 58 02
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00164 48 03 c8 add rcx, rax
+ 00167 48 8b c1 mov rax, rcx
+ 0016a b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0016f 48 6b c9 01 imul rcx, rcx, 1
+ 00173 48 69 55 08 80
+ 00 00 00 imul rdx, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0017b 4d 8b 85 50 02
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 00182 4c 03 c2 add r8, rdx
+ 00185 49 8b d0 mov rdx, r8
+ 00188 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 0018e 4d 6b c0 01 imul r8, r8, 1
+ 00192 c4 a1 7d 10 04
+ 02 vmovupd ymm0, YMMWORD PTR [rdx+r8]
+ 00198 c5 fd 58 04 08 vaddpd ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 0019d c5 fd 11 85 20
+ 01 00 00 vmovupd YMMWORD PTR c3$6[rbp], ymm0
+
+; 143 : ans[i].f64_y[0] = c0;
+
+ 001a5 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001ad 49 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 001b4 48 03 c8 add rcx, rax
+ 001b7 48 8b c1 mov rax, rcx
+ 001ba b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 001bf 48 6b c9 00 imul rcx, rcx, 0
+ 001c3 c5 fd 10 45 60 vmovupd ymm0, YMMWORD PTR c0$3[rbp]
+ 001c8 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 144 : ans[i].f64_y[1] = c1;
+
+ 001cd 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001d5 49 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 001dc 48 03 c8 add rcx, rax
+ 001df 48 8b c1 mov rax, rcx
+ 001e2 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 001e7 48 6b c9 01 imul rcx, rcx, 1
+ 001eb c5 fd 10 85 a0
+ 00 00 00 vmovupd ymm0, YMMWORD PTR c1$4[rbp]
+ 001f3 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 145 : ans[i].f64_y[2] = c2;
+
+ 001f8 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00200 49 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00207 48 03 c8 add rcx, rax
+ 0020a 48 8b c1 mov rax, rcx
+ 0020d b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00212 48 6b c9 02 imul rcx, rcx, 2
+ 00216 c5 fd 10 85 e0
+ 00 00 00 vmovupd ymm0, YMMWORD PTR c2$5[rbp]
+ 0021e c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 146 : ans[i].f64_y[3] = c3;
+
+ 00223 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0022b 49 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00232 48 03 c8 add rcx, rax
+ 00235 48 8b c1 mov rax, rcx
+ 00238 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0023d 48 6b c9 03 imul rcx, rcx, 3
+ 00241 c5 fd 10 85 20
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c3$6[rbp]
+ 00249 c5 fd 11 04 08 vmovupd YMMWORD PTR [rax+rcx], ymm0
+
+; 147 : }
+
+ 0024e e9 f1 fd ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 148 : }
+
+ 00253 49 8d a5 30 02
+ 00 00 lea rsp, QWORD PTR [r13+560]
+ 0025a 5f pop rdi
+ 0025b 5d pop rbp
+ 0025c 41 5d pop r13
+ 0025e c3 ret 0
+double_buf_add_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT double_buf_add_sse
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 48
+c1$3 = 96
+c2$4 = 144
+c3$5 = 192
+c4$6 = 240
+c5$7 = 288
+c6$8 = 336
+c7$9 = 384
+left$ = 640
+right$ = 648
+ans$ = 656
+count$ = 664
+double_buf_add_sse PROC ; COMDAT
+
+; 105 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 88 02
+ 00 00 sub rsp, 648 ; 00000288H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 106 : for (size_t i = 0; i < count; i++) {
+
+ 0002f 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00037 eb 0b jmp SHORT $LN4@double_buf
+$LN2@double_buf:
+ 00039 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 0003d 48 ff c0 inc rax
+ 00040 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@double_buf:
+ 00044 48 8b 85 98 02
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 0004b 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0004f 0f 83 d1 03 00
+ 00 jae $LN3@double_buf
+
+; 107 : register __m128d c0 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[0]),
+
+ 00055 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0005d 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00064 48 03 c8 add rcx, rax
+ 00067 48 8b c1 mov rax, rcx
+ 0006a b9 10 00 00 00 mov ecx, 16
+ 0006f 48 6b c9 00 imul rcx, rcx, 0
+ 00073 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 00077 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0007f 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 00086 48 03 c8 add rcx, rax
+ 00089 48 8b c1 mov rax, rcx
+ 0008c b9 10 00 00 00 mov ecx, 16
+ 00091 48 6b c9 00 imul rcx, rcx, 0
+ 00095 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 00099 66 0f 58 c8 addpd xmm1, xmm0
+ 0009d 0f 28 c1 movaps xmm0, xmm1
+ 000a0 0f 29 45 30 movaps XMMWORD PTR c0$2[rbp], xmm0
+
+; 108 : _mm_castps_pd(right[i].f32_x[0]));
+; 109 : register __m128d c1 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[1]),
+
+ 000a4 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000ac 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000b3 48 03 c8 add rcx, rax
+ 000b6 48 8b c1 mov rax, rcx
+ 000b9 b9 10 00 00 00 mov ecx, 16
+ 000be 48 6b c9 01 imul rcx, rcx, 1
+ 000c2 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 000c6 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000ce 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 000d5 48 03 c8 add rcx, rax
+ 000d8 48 8b c1 mov rax, rcx
+ 000db b9 10 00 00 00 mov ecx, 16
+ 000e0 48 6b c9 01 imul rcx, rcx, 1
+ 000e4 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 000e8 66 0f 58 c8 addpd xmm1, xmm0
+ 000ec 0f 28 c1 movaps xmm0, xmm1
+ 000ef 0f 29 45 60 movaps XMMWORD PTR c1$3[rbp], xmm0
+
+; 110 : _mm_castps_pd(right[i].f32_x[1]));
+; 111 : register __m128d c2 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[2]),
+
+ 000f3 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 000fb 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00102 48 03 c8 add rcx, rax
+ 00105 48 8b c1 mov rax, rcx
+ 00108 b9 10 00 00 00 mov ecx, 16
+ 0010d 48 6b c9 02 imul rcx, rcx, 2
+ 00111 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 00115 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0011d 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 00124 48 03 c8 add rcx, rax
+ 00127 48 8b c1 mov rax, rcx
+ 0012a b9 10 00 00 00 mov ecx, 16
+ 0012f 48 6b c9 02 imul rcx, rcx, 2
+ 00133 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 00137 66 0f 58 c8 addpd xmm1, xmm0
+ 0013b 0f 28 c1 movaps xmm0, xmm1
+ 0013e 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c2$4[rbp], xmm0
+
+; 112 : _mm_castps_pd(right[i].f32_x[2]));
+; 113 : register __m128d c3 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[3]),
+
+ 00145 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0014d 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00154 48 03 c8 add rcx, rax
+ 00157 48 8b c1 mov rax, rcx
+ 0015a b9 10 00 00 00 mov ecx, 16
+ 0015f 48 6b c9 03 imul rcx, rcx, 3
+ 00163 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 00167 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0016f 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 00176 48 03 c8 add rcx, rax
+ 00179 48 8b c1 mov rax, rcx
+ 0017c b9 10 00 00 00 mov ecx, 16
+ 00181 48 6b c9 03 imul rcx, rcx, 3
+ 00185 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 00189 66 0f 58 c8 addpd xmm1, xmm0
+ 0018d 0f 28 c1 movaps xmm0, xmm1
+ 00190 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c3$5[rbp], xmm0
+
+; 114 : _mm_castps_pd(right[i].f32_x[3]));
+; 115 : register __m128d c4 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[4]),
+
+ 00197 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0019f 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 001a6 48 03 c8 add rcx, rax
+ 001a9 48 8b c1 mov rax, rcx
+ 001ac b9 10 00 00 00 mov ecx, 16
+ 001b1 48 6b c9 04 imul rcx, rcx, 4
+ 001b5 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 001b9 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001c1 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 001c8 48 03 c8 add rcx, rax
+ 001cb 48 8b c1 mov rax, rcx
+ 001ce b9 10 00 00 00 mov ecx, 16
+ 001d3 48 6b c9 04 imul rcx, rcx, 4
+ 001d7 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 001db 66 0f 58 c8 addpd xmm1, xmm0
+ 001df 0f 28 c1 movaps xmm0, xmm1
+ 001e2 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c4$6[rbp], xmm0
+
+; 116 : _mm_castps_pd(right[i].f32_x[4]));
+; 117 : register __m128d c5 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[5]),
+
+ 001e9 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 001f1 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 001f8 48 03 c8 add rcx, rax
+ 001fb 48 8b c1 mov rax, rcx
+ 001fe b9 10 00 00 00 mov ecx, 16
+ 00203 48 6b c9 05 imul rcx, rcx, 5
+ 00207 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 0020b 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00213 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 0021a 48 03 c8 add rcx, rax
+ 0021d 48 8b c1 mov rax, rcx
+ 00220 b9 10 00 00 00 mov ecx, 16
+ 00225 48 6b c9 05 imul rcx, rcx, 5
+ 00229 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 0022d 66 0f 58 c8 addpd xmm1, xmm0
+ 00231 0f 28 c1 movaps xmm0, xmm1
+ 00234 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c5$7[rbp], xmm0
+
+; 118 : _mm_castps_pd(right[i].f32_x[5]));
+; 119 : register __m128d c6 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[6]),
+
+ 0023b 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00243 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 0024a 48 03 c8 add rcx, rax
+ 0024d 48 8b c1 mov rax, rcx
+ 00250 b9 10 00 00 00 mov ecx, 16
+ 00255 48 6b c9 06 imul rcx, rcx, 6
+ 00259 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 0025d 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00265 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 0026c 48 03 c8 add rcx, rax
+ 0026f 48 8b c1 mov rax, rcx
+ 00272 b9 10 00 00 00 mov ecx, 16
+ 00277 48 6b c9 06 imul rcx, rcx, 6
+ 0027b 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 0027f 66 0f 58 c8 addpd xmm1, xmm0
+ 00283 0f 28 c1 movaps xmm0, xmm1
+ 00286 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c6$8[rbp], xmm0
+
+; 120 : _mm_castps_pd(right[i].f32_x[6]));
+; 121 : register __m128d c7 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[7]),
+
+ 0028d 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00295 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 0029c 48 03 c8 add rcx, rax
+ 0029f 48 8b c1 mov rax, rcx
+ 002a2 b9 10 00 00 00 mov ecx, 16
+ 002a7 48 6b c9 07 imul rcx, rcx, 7
+ 002ab 0f 10 04 08 movups xmm0, XMMWORD PTR [rax+rcx]
+ 002af 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 002b7 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 002be 48 03 c8 add rcx, rax
+ 002c1 48 8b c1 mov rax, rcx
+ 002c4 b9 10 00 00 00 mov ecx, 16
+ 002c9 48 6b c9 07 imul rcx, rcx, 7
+ 002cd 0f 10 0c 08 movups xmm1, XMMWORD PTR [rax+rcx]
+ 002d1 66 0f 58 c8 addpd xmm1, xmm0
+ 002d5 0f 28 c1 movaps xmm0, xmm1
+ 002d8 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c7$9[rbp], xmm0
+
+; 122 : _mm_castps_pd(right[i].f32_x[7]));
+; 123 :
+; 124 : ans[i].f32_x[0] = _mm_castpd_ps(c0);
+
+ 002df 0f 28 45 30 movaps xmm0, XMMWORD PTR c0$2[rbp]
+ 002e3 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 002eb 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 002f2 48 03 c8 add rcx, rax
+ 002f5 48 8b c1 mov rax, rcx
+ 002f8 b9 10 00 00 00 mov ecx, 16
+ 002fd 48 6b c9 00 imul rcx, rcx, 0
+ 00301 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 125 : ans[i].f32_x[1] = _mm_castpd_ps(c1);
+
+ 00305 0f 28 45 60 movaps xmm0, XMMWORD PTR c1$3[rbp]
+ 00309 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00311 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00318 48 03 c8 add rcx, rax
+ 0031b 48 8b c1 mov rax, rcx
+ 0031e b9 10 00 00 00 mov ecx, 16
+ 00323 48 6b c9 01 imul rcx, rcx, 1
+ 00327 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 126 : ans[i].f32_x[2] = _mm_castpd_ps(c2);
+
+ 0032b 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR c2$4[rbp]
+ 00332 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0033a 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00341 48 03 c8 add rcx, rax
+ 00344 48 8b c1 mov rax, rcx
+ 00347 b9 10 00 00 00 mov ecx, 16
+ 0034c 48 6b c9 02 imul rcx, rcx, 2
+ 00350 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 127 : ans[i].f32_x[3] = _mm_castpd_ps(c3);
+
+ 00354 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR c3$5[rbp]
+ 0035b 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00363 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0036a 48 03 c8 add rcx, rax
+ 0036d 48 8b c1 mov rax, rcx
+ 00370 b9 10 00 00 00 mov ecx, 16
+ 00375 48 6b c9 03 imul rcx, rcx, 3
+ 00379 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 128 : ans[i].f32_x[4] = _mm_castpd_ps(c4);
+
+ 0037d 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR c4$6[rbp]
+ 00384 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 0038c 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00393 48 03 c8 add rcx, rax
+ 00396 48 8b c1 mov rax, rcx
+ 00399 b9 10 00 00 00 mov ecx, 16
+ 0039e 48 6b c9 04 imul rcx, rcx, 4
+ 003a2 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 129 : ans[i].f32_x[5] = _mm_castpd_ps(c5);
+
+ 003a6 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR c5$7[rbp]
+ 003ad 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 003b5 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 003bc 48 03 c8 add rcx, rax
+ 003bf 48 8b c1 mov rax, rcx
+ 003c2 b9 10 00 00 00 mov ecx, 16
+ 003c7 48 6b c9 05 imul rcx, rcx, 5
+ 003cb 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 130 : ans[i].f32_x[6] = _mm_castpd_ps(c6);
+
+ 003cf 0f 28 85 50 01
+ 00 00 movaps xmm0, XMMWORD PTR c6$8[rbp]
+ 003d6 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 003de 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 003e5 48 03 c8 add rcx, rax
+ 003e8 48 8b c1 mov rax, rcx
+ 003eb b9 10 00 00 00 mov ecx, 16
+ 003f0 48 6b c9 06 imul rcx, rcx, 6
+ 003f4 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 131 : ans[i].f32_x[7] = _mm_castpd_ps(c7);
+
+ 003f8 0f 28 85 80 01
+ 00 00 movaps xmm0, XMMWORD PTR c7$9[rbp]
+ 003ff 48 69 45 08 80
+ 00 00 00 imul rax, QWORD PTR i$1[rbp], 128 ; 00000080H
+ 00407 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0040e 48 03 c8 add rcx, rax
+ 00411 48 8b c1 mov rax, rcx
+ 00414 b9 10 00 00 00 mov ecx, 16
+ 00419 48 6b c9 07 imul rcx, rcx, 7
+ 0041d 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 132 : }
+
+ 00421 e9 13 fc ff ff jmp $LN2@double_buf
+$LN3@double_buf:
+
+; 133 : }
+
+ 00426 48 8d a5 68 02
+ 00 00 lea rsp, QWORD PTR [rbp+616]
+ 0042d 5f pop rdi
+ 0042e 5d pop rbp
+ 0042f c3 ret 0
+double_buf_add_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_add_512
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 64
+left$ = 432
+right$ = 440
+ans$ = 448
+count$ = 456
+float_buf_add_512 PROC ; COMDAT
+
+; 98 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec b0 01
+ 00 00 sub rsp, 432 ; 000001b0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 99 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 0004f 49 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 73 7a jae SHORT $LN3@float_buf_
+
+; 100 : register __m512 c0 = _mm512_add_ps(left[i].f32_z[0], right[i].f32_z[0]);
+
+ 0005c 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00061 49 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00068 48 03 c8 add rcx, rax
+ 0006b 48 8b c1 mov rax, rcx
+ 0006e b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 00073 48 6b c9 00 imul rcx, rcx, 0
+ 00077 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0007c 4d 8b 85 b0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 00083 4c 03 c2 add r8, rdx
+ 00086 49 8b d0 mov rdx, r8
+ 00089 41 b8 40 00 00
+ 00 mov r8d, 64 ; 00000040H
+ 0008f 4d 6b c0 00 imul r8, r8, 0
+ 00093 62 b1 7c 48 10
+ 04 02 vmovups zmm0, ZMMWORD PTR [rdx+r8]
+ 0009a 62 f1 7c 48 58
+ 04 08 vaddps zmm0, zmm0, ZMMWORD PTR [rax+rcx]
+ 000a1 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR c0$2[rbp], zmm0
+
+; 101 : ans[i].f32_z[0] = c0;
+
+ 000a8 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000ad 49 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000b4 48 03 c8 add rcx, rax
+ 000b7 48 8b c1 mov rax, rcx
+ 000ba b9 40 00 00 00 mov ecx, 64 ; 00000040H
+ 000bf 48 6b c9 00 imul rcx, rcx, 0
+ 000c3 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR c0$2[rbp]
+ 000ca 62 f1 7c 48 11
+ 04 08 vmovups ZMMWORD PTR [rax+rcx], zmm0
+
+; 102 : }
+
+ 000d1 e9 6e ff ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 103 : }
+
+ 000d6 49 8d a5 90 01
+ 00 00 lea rsp, QWORD PTR [r13+400]
+ 000dd 5f pop rdi
+ 000de 5d pop rbp
+ 000df 41 5d pop r13
+ 000e1 c3 ret 0
+float_buf_add_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_add_avx
+_TEXT SEGMENT
+i$1 = 8
+s$2 = 40
+c0$3 = 96
+c1$4 = 160
+left$ = 464
+right$ = 472
+ans$ = 480
+count$ = 488
+float_buf_add_avx PROC ; COMDAT
+
+; 87 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec d0 01
+ 00 00 sub rsp, 464 ; 000001d0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 88 : for (size_t i = 0; i < count; i++) {
+
+ 0003a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00042 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00044 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 00048 48 ff c0 inc rax
+ 0004b 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 0004f 49 8b 85 e8 01
+ 00 00 mov rax, QWORD PTR count$[r13]
+ 00056 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0005a 0f 83 eb 00 00
+ 00 jae $LN3@float_buf_
+
+; 89 : size_t s = sizeof(MAT_KERNEL(float));
+
+ 00060 48 c7 45 28 40
+ 00 00 00 mov QWORD PTR s$2[rbp], 64 ; 00000040H
+
+; 90 : register __m256 c0 = _mm256_add_ps(left[i].f32_y[0], right[i].f32_y[0]);
+
+ 00068 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0006d 49 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00074 48 03 c8 add rcx, rax
+ 00077 48 8b c1 mov rax, rcx
+ 0007a b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 0007f 48 6b c9 00 imul rcx, rcx, 0
+ 00083 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00088 4d 8b 85 d0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 0008f 4c 03 c2 add r8, rdx
+ 00092 49 8b d0 mov rdx, r8
+ 00095 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 0009b 4d 6b c0 00 imul r8, r8, 0
+ 0009f c4 a1 7c 10 04
+ 02 vmovups ymm0, YMMWORD PTR [rdx+r8]
+ 000a5 c5 fc 58 04 08 vaddps ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000aa c5 fc 11 45 60 vmovups YMMWORD PTR c0$3[rbp], ymm0
+
+; 91 : register __m256 c1 = _mm256_add_ps(left[i].f32_y[1], right[i].f32_y[1]);
+
+ 000af 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000b4 49 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000bb 48 03 c8 add rcx, rax
+ 000be 48 8b c1 mov rax, rcx
+ 000c1 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 000c6 48 6b c9 01 imul rcx, rcx, 1
+ 000ca 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000cf 4d 8b 85 d0 01
+ 00 00 mov r8, QWORD PTR left$[r13]
+ 000d6 4c 03 c2 add r8, rdx
+ 000d9 49 8b d0 mov rdx, r8
+ 000dc 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 000e2 4d 6b c0 01 imul r8, r8, 1
+ 000e6 c4 a1 7c 10 04
+ 02 vmovups ymm0, YMMWORD PTR [rdx+r8]
+ 000ec c5 fc 58 04 08 vaddps ymm0, ymm0, YMMWORD PTR [rax+rcx]
+ 000f1 c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR c1$4[rbp], ymm0
+
+; 92 : ans[i].f32_y[0] = c0;
+
+ 000f9 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000fe 49 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00105 48 03 c8 add rcx, rax
+ 00108 48 8b c1 mov rax, rcx
+ 0010b b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00110 48 6b c9 00 imul rcx, rcx, 0
+ 00114 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR c0$3[rbp]
+ 00119 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 93 : ans[i].f32_y[1] = c1;
+
+ 0011e 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00123 49 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0012a 48 03 c8 add rcx, rax
+ 0012d 48 8b c1 mov rax, rcx
+ 00130 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00135 48 6b c9 01 imul rcx, rcx, 1
+ 00139 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR c1$4[rbp]
+ 00141 c5 fc 11 04 08 vmovups YMMWORD PTR [rax+rcx], ymm0
+
+; 94 : }
+
+ 00146 e9 f9 fe ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 95 : }
+
+ 0014b 49 8d a5 b0 01
+ 00 00 lea rsp, QWORD PTR [r13+432]
+ 00152 5f pop rdi
+ 00153 5d pop rbp
+ 00154 41 5d pop r13
+ 00156 c3 ret 0
+float_buf_add_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.bufop.x86.c
+; COMDAT float_buf_add_sse
+_TEXT SEGMENT
+i$1 = 8
+c0$2 = 48
+c1$3 = 96
+c2$4 = 144
+c3$5 = 192
+left$ = 448
+right$ = 456
+ans$ = 464
+count$ = 472
+float_buf_add_sse PROC ; COMDAT
+
+; 72 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec c8 01
+ 00 00 sub rsp, 456 ; 000001c8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__BAFF6ACF_m@bufop@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 73 : for (size_t i = 0; i < count; i++) {
+
+ 0002f 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00037 eb 0b jmp SHORT $LN4@float_buf_
+$LN2@float_buf_:
+ 00039 48 8b 45 08 mov rax, QWORD PTR i$1[rbp]
+ 0003d 48 ff c0 inc rax
+ 00040 48 89 45 08 mov QWORD PTR i$1[rbp], rax
+$LN4@float_buf_:
+ 00044 48 8b 85 d8 01
+ 00 00 mov rax, QWORD PTR count$[rbp]
+ 0004b 48 39 45 08 cmp QWORD PTR i$1[rbp], rax
+ 0004f 0f 83 ad 01 00
+ 00 jae $LN3@float_buf_
+
+; 74 : register __m128 c0 = _mm_add_ps(left[i].f32_x[0], right[i].f32_x[0]);
+
+ 00055 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0005a 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00061 48 03 c8 add rcx, rax
+ 00064 48 8b c1 mov rax, rcx
+ 00067 b9 10 00 00 00 mov ecx, 16
+ 0006c 48 6b c9 00 imul rcx, rcx, 0
+ 00070 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00075 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 0007c 4c 03 c2 add r8, rdx
+ 0007f 49 8b d0 mov rdx, r8
+ 00082 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00088 4d 6b c0 00 imul r8, r8, 0
+ 0008c 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00091 0f 58 04 08 addps xmm0, XMMWORD PTR [rax+rcx]
+ 00095 0f 29 45 30 movaps XMMWORD PTR c0$2[rbp], xmm0
+
+; 75 : register __m128 c1 = _mm_add_ps(left[i].f32_x[1], right[i].f32_x[1]);
+
+ 00099 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 0009e 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000a5 48 03 c8 add rcx, rax
+ 000a8 48 8b c1 mov rax, rcx
+ 000ab b9 10 00 00 00 mov ecx, 16
+ 000b0 48 6b c9 01 imul rcx, rcx, 1
+ 000b4 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000b9 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 000c0 4c 03 c2 add r8, rdx
+ 000c3 49 8b d0 mov rdx, r8
+ 000c6 41 b8 10 00 00
+ 00 mov r8d, 16
+ 000cc 4d 6b c0 01 imul r8, r8, 1
+ 000d0 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 000d5 0f 58 04 08 addps xmm0, XMMWORD PTR [rax+rcx]
+ 000d9 0f 29 45 60 movaps XMMWORD PTR c1$3[rbp], xmm0
+
+; 76 : register __m128 c2 = _mm_add_ps(left[i].f32_x[2], right[i].f32_x[2]);
+
+ 000dd 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000e2 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000e9 48 03 c8 add rcx, rax
+ 000ec 48 8b c1 mov rax, rcx
+ 000ef b9 10 00 00 00 mov ecx, 16
+ 000f4 48 6b c9 02 imul rcx, rcx, 2
+ 000f8 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 000fd 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 00104 4c 03 c2 add r8, rdx
+ 00107 49 8b d0 mov rdx, r8
+ 0010a 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00110 4d 6b c0 02 imul r8, r8, 2
+ 00114 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00119 0f 58 04 08 addps xmm0, XMMWORD PTR [rax+rcx]
+ 0011d 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c2$4[rbp], xmm0
+
+; 77 : register __m128 c3 = _mm_add_ps(left[i].f32_x[3], right[i].f32_x[3]);
+
+ 00124 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00129 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00130 48 03 c8 add rcx, rax
+ 00133 48 8b c1 mov rax, rcx
+ 00136 b9 10 00 00 00 mov ecx, 16
+ 0013b 48 6b c9 03 imul rcx, rcx, 3
+ 0013f 48 6b 55 08 40 imul rdx, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00144 4c 8b 85 c0 01
+ 00 00 mov r8, QWORD PTR left$[rbp]
+ 0014b 4c 03 c2 add r8, rdx
+ 0014e 49 8b d0 mov rdx, r8
+ 00151 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00157 4d 6b c0 03 imul r8, r8, 3
+ 0015b 42 0f 10 04 02 movups xmm0, XMMWORD PTR [rdx+r8]
+ 00160 0f 58 04 08 addps xmm0, XMMWORD PTR [rax+rcx]
+ 00164 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c3$5[rbp], xmm0
+
+; 78 :
+; 79 : ans[i].f32_x[0] = c0;
+
+ 0016b 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00170 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00177 48 03 c8 add rcx, rax
+ 0017a 48 8b c1 mov rax, rcx
+ 0017d b9 10 00 00 00 mov ecx, 16
+ 00182 48 6b c9 00 imul rcx, rcx, 0
+ 00186 0f 28 45 30 movaps xmm0, XMMWORD PTR c0$2[rbp]
+ 0018a 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 80 : ans[i].f32_x[1] = c1;
+
+ 0018e 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 00193 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0019a 48 03 c8 add rcx, rax
+ 0019d 48 8b c1 mov rax, rcx
+ 001a0 b9 10 00 00 00 mov ecx, 16
+ 001a5 48 6b c9 01 imul rcx, rcx, 1
+ 001a9 0f 28 45 60 movaps xmm0, XMMWORD PTR c1$3[rbp]
+ 001ad 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 81 : ans[i].f32_x[2] = c2;
+
+ 001b1 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 001b6 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 001bd 48 03 c8 add rcx, rax
+ 001c0 48 8b c1 mov rax, rcx
+ 001c3 b9 10 00 00 00 mov ecx, 16
+ 001c8 48 6b c9 02 imul rcx, rcx, 2
+ 001cc 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR c2$4[rbp]
+ 001d3 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 82 : ans[i].f32_x[3] = c3;
+
+ 001d7 48 6b 45 08 40 imul rax, QWORD PTR i$1[rbp], 64 ; 00000040H
+ 001dc 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 001e3 48 03 c8 add rcx, rax
+ 001e6 48 8b c1 mov rax, rcx
+ 001e9 b9 10 00 00 00 mov ecx, 16
+ 001ee 48 6b c9 03 imul rcx, rcx, 3
+ 001f2 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR c3$5[rbp]
+ 001f9 0f 11 04 08 movups XMMWORD PTR [rax+rcx], xmm0
+
+; 83 : }
+
+ 001fd e9 37 fe ff ff jmp $LN2@float_buf_
+$LN3@float_buf_:
+
+; 84 : }
+
+ 00202 48 8d a5 a8 01
+ 00 00 lea rsp, QWORD PTR [rbp+424]
+ 00209 5f pop rdi
+ 0020a 5d pop rbp
+ 0020b c3 ret 0
+float_buf_add_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/m.bufop.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/m.bufop.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..5c8a66e8
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.bufop.x86.nativecodeanalysis.sarif
@@ -0,0 +1,131 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/m.bufop.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "bd17622b768a820fa5d415bd891c8dc82b5fd0e9446a636d005fe6051d039678"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrincontext.x86.h"
+ },
+ "hashes": {
+ "sha-256": "bbc00ee7320b30ca1234dc7908e4695ff6d5bb2ba3224e4ffaed345010ba8f48"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.bufop.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/m.bufop.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.bufop.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.fma.x86.cod b/obj/StgSharp.Native/Debug/x64/m.fma.x86.cod
new file mode 100644
index 00000000..38429ec2
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.fma.x86.cod
@@ -0,0 +1,3337 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__CE29950A_sn_intrincontext@x86@h DB 01H
+__F8387F23_m@fma@x86@c DB 01H
+msvcjmc ENDS
+CONST SEGMENT
+?b01_shift@?1??float_kernel_fma_avx@@9@9 DD 00H ; `float_kernel_fma_avx'::`2'::b01_shift
+ DD 01H
+ DD 02H
+ DD 03H
+ DD 05H
+ DD 06H
+ DD 07H
+ DD 04H
+?b23_shift@?1??float_kernel_fma_avx@@9@9 DD 02H ; `float_kernel_fma_avx'::`2'::b23_shift
+ DD 03H
+ DD 00H
+ DD 01H
+ DD 07H
+ DD 04H
+ DD 05H
+ DD 06H
+?b01_shift@?1??float_kernel_fma_avx_fma@@9@9 DD 00H ; `float_kernel_fma_avx_fma'::`2'::b01_shift
+ DD 01H
+ DD 02H
+ DD 03H
+ DD 05H
+ DD 06H
+ DD 07H
+ DD 04H
+?b23_shift@?1??float_kernel_fma_avx_fma@@9@9 DD 02H ; `float_kernel_fma_avx_fma'::`2'::b23_shift
+ DD 03H
+ DD 00H
+ DD 01H
+ DD 07H
+ DD 04H
+ DD 05H
+ DD 06H
+?b_shift@?1??float_kernel_fma_512@@9@9 DD 00H ; `float_kernel_fma_512'::`2'::b_shift
+ DD 01H
+ DD 02H
+ DD 03H
+ DD 05H
+ DD 06H
+ DD 07H
+ DD 04H
+ DD 0aH
+ DD 0bH
+ DD 08H
+ DD 09H
+ DD 0fH
+ DD 0cH
+ DD 0dH
+ DD 0eH
+?b01_shift@?1??double_kernel_fma_512@@9@9 DQ 0000000000000000H ; `double_kernel_fma_512'::`2'::b01_shift
+ DQ 0000000000000001H
+ DQ 0000000000000002H
+ DQ 0000000000000003H
+ DQ 0000000000000005H
+ DQ 0000000000000006H
+ DQ 0000000000000007H
+ DQ 0000000000000004H
+?b23_shift@?1??double_kernel_fma_512@@9@9 DQ 0000000000000002H ; `double_kernel_fma_512'::`2'::b23_shift
+ DQ 0000000000000003H
+ DQ 0000000000000000H
+ DQ 0000000000000001H
+ DQ 0000000000000007H
+ DQ 0000000000000004H
+ DQ 0000000000000005H
+ DQ 0000000000000006H
+CONST ENDS
+PUBLIC float_kernel_fma_sse
+PUBLIC float_kernel_fma_avx
+PUBLIC float_kernel_fma_avx_fma
+PUBLIC float_kernel_fma_512
+PUBLIC double_kernel_fma_sse
+PUBLIC double_kernel_fma_avx
+PUBLIC double_kernel_fma_avx_fma
+PUBLIC double_kernel_fma_512
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_fma_sse DD imagerel $LN3
+ DD imagerel $LN3+1287
+ DD imagerel $unwind$float_kernel_fma_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_fma_avx DD imagerel $LN3
+ DD imagerel $LN3+855
+ DD imagerel $unwind$float_kernel_fma_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_fma_avx_fma DD imagerel $LN3
+ DD imagerel $LN3+863
+ DD imagerel $unwind$float_kernel_fma_avx_fma
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_fma_512 DD imagerel $LN3
+ DD imagerel $LN3+429
+ DD imagerel $unwind$float_kernel_fma_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_fma_sse DD imagerel $LN6
+ DD imagerel $LN6+788
+ DD imagerel $unwind$double_kernel_fma_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_fma_avx DD imagerel $LN3
+ DD imagerel $LN3+1251
+ DD imagerel $unwind$double_kernel_fma_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_fma_avx_fma DD imagerel $LN3
+ DD imagerel $LN3+1203
+ DD imagerel $unwind$double_kernel_fma_avx_fma
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_fma_512 DD imagerel $LN3
+ DD imagerel $LN3+837
+ DD imagerel $unwind$double_kernel_fma_512
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_fma_512 DD 02d062801H
+ DD 011a231fH
+ DD 0701300f6H
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_fma_avx_fma DD 02d062801H
+ DD 011a231fH
+ DD 070130082H
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_fma_avx DD 02d062801H
+ DD 011a231fH
+ DD 070130082H
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_fma_sse DD 025051d01H
+ DD 0118231dH
+ DD 07011004bH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_fma_512 DD 02d062801H
+ DD 011a231fH
+ DD 070130106H
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_fma_avx_fma DD 02d062801H
+ DD 011a231fH
+ DD 07013008aH
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_fma_avx DD 02d062801H
+ DD 011a231fH
+ DD 07013008aH
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_fma_sse DD 025051d01H
+ DD 0118231dH
+ DD 070110053H
+ DD 05010H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT double_kernel_fma_512
+_TEXT SEGMENT
+a01$ = 64
+a23$ = 192
+b01$ = 320
+b23$ = 448
+c01$ = 576
+c23$ = 704
+b01_perm$ = 832
+b23_perm$ = 960
+a12$ = 1088
+a30$ = 1216
+left$ = 1968
+right$ = 1976
+ans$ = 1984
+double_kernel_fma_512 PROC ; COMDAT
+
+; 321 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec b0 07
+ 00 00 sub rsp, 1968 ; 000007b0H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00024 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 322 : static const __m512i b01_shift = { .m512i_i64 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
+; 323 : static const __m512i b23_shift = { .m512i_i64 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
+; 324 :
+; 325 : register __m512d a01 = _mm512_load_pd((double *)&left->f64_z[0]);
+
+ 00035 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e 49 8b 8d b0 07
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00045 48 03 c8 add rcx, rax
+ 00048 48 8b c1 mov rax, rcx
+ 0004b 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 00051 62 f1 fd 48 11
+ 45 01 vmovupd ZMMWORD PTR a01$[rbp], zmm0
+
+; 326 : register __m512d a23 = _mm512_load_pd((double *)&left->f64_z[1]);
+
+ 00058 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 0005d 48 6b c0 01 imul rax, rax, 1
+ 00061 49 8b 8d b0 07
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00068 48 03 c8 add rcx, rax
+ 0006b 48 8b c1 mov rax, rcx
+ 0006e 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 00074 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR a23$[rbp], zmm0
+
+; 327 :
+; 328 : register __m512d b01 = _mm512_load_pd((double *)&right->f64_z[0]);
+
+ 0007b b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 00080 48 6b c0 00 imul rax, rax, 0
+ 00084 49 8b 8d b8 07
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0008b 48 03 c8 add rcx, rax
+ 0008e 48 8b c1 mov rax, rcx
+ 00091 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 00097 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR b01$[rbp], zmm0
+
+; 329 : register __m512d b23 = _mm512_load_pd((double *)&right->f64_z[1]);
+
+ 0009e b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 000a3 48 6b c0 01 imul rax, rax, 1
+ 000a7 49 8b 8d b8 07
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000ae 48 03 c8 add rcx, rax
+ 000b1 48 8b c1 mov rax, rcx
+ 000b4 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 000ba 62 f1 fd 48 11
+ 45 07 vmovupd ZMMWORD PTR b23$[rbp], zmm0
+
+; 330 : b01 = _mm512_permutexvar_pd(b01_shift, b01);
+
+ 000c1 62 f1 7e 48 6f
+ 05 00 00 00 00 vmovdqu32 zmm0, ZMMWORD PTR ?b01_shift@?1??double_kernel_fma_512@@9@9
+ 000cb 62 f2 fd 48 16
+ 45 05 vpermpd zmm0, zmm0, ZMMWORD PTR b01$[rbp]
+ 000d2 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR b01$[rbp], zmm0
+
+; 331 : b23 = _mm512_permutexvar_pd(b23_shift, b23);
+
+ 000d9 62 f1 7e 48 6f
+ 05 00 00 00 00 vmovdqu32 zmm0, ZMMWORD PTR ?b23_shift@?1??double_kernel_fma_512@@9@9
+ 000e3 62 f2 fd 48 16
+ 45 07 vpermpd zmm0, zmm0, ZMMWORD PTR b23$[rbp]
+ 000ea 62 f1 fd 48 11
+ 45 07 vmovupd ZMMWORD PTR b23$[rbp], zmm0
+
+; 332 :
+; 333 : register __m512d c01 = _mm512_load_pd((float *)&ans->f64_z[0]);
+
+ 000f1 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 000f6 48 6b c0 00 imul rax, rax, 0
+ 000fa 49 8b 8d c0 07
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00101 48 03 c8 add rcx, rax
+ 00104 48 8b c1 mov rax, rcx
+ 00107 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 0010d 62 f1 fd 48 11
+ 45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 334 : register __m512d c23 = _mm512_load_pd((float *)&ans->f64_z[1]);
+
+ 00114 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 00119 48 6b c0 01 imul rax, rax, 1
+ 0011d 49 8b 8d c0 07
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00124 48 03 c8 add rcx, rax
+ 00127 48 8b c1 mov rax, rcx
+ 0012a 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 00130 62 f1 fd 48 11
+ 45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 335 :
+; 336 : //group 0
+; 337 : register __m512d b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(0));
+
+ 00137 62 f1 fd 48 10
+ 45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
+ 0013e 62 f1 fd 48 c6
+ 45 05 00 vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 0
+ 00146 62 f1 fd 48 11
+ 45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
+
+; 338 : register __m512d b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(0));
+
+ 0014d 62 f1 fd 48 10
+ 45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
+ 00154 62 f1 fd 48 c6
+ 45 07 00 vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 0
+ 0015c 62 f1 fd 48 11
+ 45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
+
+; 339 : c01 = _mm512_fmadd_pd(a01, b01_perm, c01);
+
+ 00163 62 f1 fd 48 10
+ 45 01 vmovupd zmm0, ZMMWORD PTR a01$[rbp]
+ 0016a 62 f1 fd 48 10
+ 4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
+ 00171 62 f2 f5 48 a8
+ 45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 00178 62 f1 fd 48 11
+ 45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 340 : c23 = _mm512_fmadd_pd(a23, b23_perm, c23);
+
+ 0017f 62 f1 fd 48 10
+ 45 03 vmovupd zmm0, ZMMWORD PTR a23$[rbp]
+ 00186 62 f1 fd 48 10
+ 4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
+ 0018d 62 f2 f5 48 a8
+ 45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 00194 62 f1 fd 48 11
+ 45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 341 :
+; 342 : //group 2
+; 343 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(2));
+
+ 0019b 62 f1 fd 48 10
+ 45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
+ 001a2 62 f1 fd 48 c6
+ 45 05 aa vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 170 ; 000000aaH
+ 001aa 62 f1 fd 48 11
+ 45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
+
+; 344 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(2));
+
+ 001b1 62 f1 fd 48 10
+ 45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
+ 001b8 62 f1 fd 48 c6
+ 45 07 aa vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 170 ; 000000aaH
+ 001c0 62 f1 fd 48 11
+ 45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
+
+; 345 : c01 = _mm512_fmadd_pd(a23, b01_perm, c01);
+
+ 001c7 62 f1 fd 48 10
+ 45 03 vmovupd zmm0, ZMMWORD PTR a23$[rbp]
+ 001ce 62 f1 fd 48 10
+ 4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
+ 001d5 62 f2 f5 48 a8
+ 45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 001dc 62 f1 fd 48 11
+ 45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 346 : c23 = _mm512_fmadd_pd(a01, b23_perm, c23);
+
+ 001e3 62 f1 fd 48 10
+ 45 01 vmovupd zmm0, ZMMWORD PTR a01$[rbp]
+ 001ea 62 f1 fd 48 10
+ 4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
+ 001f1 62 f2 f5 48 a8
+ 45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 001f8 62 f1 fd 48 11
+ 45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 347 :
+; 348 : //group 1
+; 349 : register __m512d a12 = _mm512_shuffle_f64x2(a01, a23, _MM_SHUFFLE(1, 0, 3, 2));
+
+ 001ff 62 f1 fd 48 10
+ 45 01 vmovupd zmm0, ZMMWORD PTR a01$[rbp]
+ 00206 62 f3 fd 48 23
+ 45 03 4e vshuff64x2 zmm0, zmm0, ZMMWORD PTR a23$[rbp], 78 ; 0000004eH
+ 0020e 62 f1 fd 48 11
+ 45 11 vmovupd ZMMWORD PTR a12$[rbp], zmm0
+
+; 350 : register __m512d a30 = _mm512_shuffle_f64x2(a23, a01, _MM_SHUFFLE(1, 0, 3, 2));
+
+ 00215 62 f1 fd 48 10
+ 45 03 vmovupd zmm0, ZMMWORD PTR a23$[rbp]
+ 0021c 62 f3 fd 48 23
+ 45 01 4e vshuff64x2 zmm0, zmm0, ZMMWORD PTR a01$[rbp], 78 ; 0000004eH
+ 00224 62 f1 fd 48 11
+ 45 13 vmovupd ZMMWORD PTR a30$[rbp], zmm0
+
+; 351 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(1));
+
+ 0022b 62 f1 fd 48 10
+ 45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
+ 00232 62 f1 fd 48 c6
+ 45 05 55 vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 85 ; 00000055H
+ 0023a 62 f1 fd 48 11
+ 45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
+
+; 352 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(1));
+
+ 00241 62 f1 fd 48 10
+ 45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
+ 00248 62 f1 fd 48 c6
+ 45 07 55 vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 85 ; 00000055H
+ 00250 62 f1 fd 48 11
+ 45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
+
+; 353 : c01 = _mm512_fmadd_pd(a12, b01_perm, c01);
+
+ 00257 62 f1 fd 48 10
+ 45 11 vmovupd zmm0, ZMMWORD PTR a12$[rbp]
+ 0025e 62 f1 fd 48 10
+ 4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
+ 00265 62 f2 f5 48 a8
+ 45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 0026c 62 f1 fd 48 11
+ 45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 354 : c23 = _mm512_fmadd_pd(a30, b23_perm, c23);
+
+ 00273 62 f1 fd 48 10
+ 45 13 vmovupd zmm0, ZMMWORD PTR a30$[rbp]
+ 0027a 62 f1 fd 48 10
+ 4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
+ 00281 62 f2 f5 48 a8
+ 45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 00288 62 f1 fd 48 11
+ 45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 355 :
+; 356 : //group 3
+; 357 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(3));
+
+ 0028f 62 f1 fd 48 10
+ 45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
+ 00296 62 f1 fd 48 c6
+ 45 05 ff vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 255 ; 000000ffH
+ 0029e 62 f1 fd 48 11
+ 45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
+
+; 358 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(3));
+
+ 002a5 62 f1 fd 48 10
+ 45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
+ 002ac 62 f1 fd 48 c6
+ 45 07 ff vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 255 ; 000000ffH
+ 002b4 62 f1 fd 48 11
+ 45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
+
+; 359 : c01 = _mm512_fmadd_pd(a30, b01_perm, c01);
+
+ 002bb 62 f1 fd 48 10
+ 45 13 vmovupd zmm0, ZMMWORD PTR a30$[rbp]
+ 002c2 62 f1 fd 48 10
+ 4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
+ 002c9 62 f2 f5 48 a8
+ 45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 002d0 62 f1 fd 48 11
+ 45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 360 : c23 = _mm512_fmadd_pd(a12, b23_perm, c23);
+
+ 002d7 62 f1 fd 48 10
+ 45 11 vmovupd zmm0, ZMMWORD PTR a12$[rbp]
+ 002de 62 f1 fd 48 10
+ 4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
+ 002e5 62 f2 f5 48 a8
+ 45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 002ec 62 f1 fd 48 11
+ 45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 361 :
+; 362 : _mm512_store_pd((double *)&ans->f64_z[0], c01);
+
+ 002f3 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 002f8 48 6b c0 00 imul rax, rax, 0
+ 002fc 49 8b 8d c0 07
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00303 48 03 c8 add rcx, rax
+ 00306 48 8b c1 mov rax, rcx
+ 00309 62 f1 fd 48 10
+ 45 09 vmovupd zmm0, ZMMWORD PTR c01$[rbp]
+ 00310 62 f1 fd 48 11
+ 00 vmovupd ZMMWORD PTR [rax], zmm0
+
+; 363 : _mm512_store_pd((double *)&ans->f64_z[1], c23);
+
+ 00316 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 0031b 48 6b c0 01 imul rax, rax, 1
+ 0031f 49 8b 8d c0 07
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00326 48 03 c8 add rcx, rax
+ 00329 48 8b c1 mov rax, rcx
+ 0032c 62 f1 fd 48 10
+ 45 0b vmovupd zmm0, ZMMWORD PTR c23$[rbp]
+ 00333 62 f1 fd 48 11
+ 00 vmovupd ZMMWORD PTR [rax], zmm0
+
+; 364 : }
+
+ 00339 49 8d a5 90 07
+ 00 00 lea rsp, QWORD PTR [r13+1936]
+ 00340 5f pop rdi
+ 00341 5d pop rbp
+ 00342 41 5d pop r13
+ 00344 c3 ret 0
+double_kernel_fma_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT double_kernel_fma_avx_fma
+_TEXT SEGMENT
+a0$ = 32
+a1$ = 96
+a2$ = 160
+a3$ = 224
+b0$ = 288
+b1$ = 352
+b2$ = 416
+b3$ = 480
+ccol$ = 544
+left$ = 1040
+right$ = 1048
+ans$ = 1056
+double_kernel_fma_avx_fma PROC ; COMDAT
+
+; 277 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 10 04
+ 00 00 sub rsp, 1040 ; 00000410H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 278 : const __m256d a0 = _mm256_load_pd((double *)&left->f64_y[0]);
+
+ 00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00045 48 03 c8 add rcx, rax
+ 00048 48 8b c1 mov rax, rcx
+ 0004b c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0004f c5 fd 11 45 20 vmovupd YMMWORD PTR a0$[rbp], ymm0
+
+; 279 : const __m256d a1 = _mm256_load_pd((double *)&left->f64_y[1]);
+
+ 00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00059 48 6b c0 01 imul rax, rax, 1
+ 0005d 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00064 48 03 c8 add rcx, rax
+ 00067 48 8b c1 mov rax, rcx
+ 0006a c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0006e c5 fd 11 45 60 vmovupd YMMWORD PTR a1$[rbp], ymm0
+
+; 280 : const __m256d a2 = _mm256_load_pd((double *)&left->f64_y[2]);
+
+ 00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00078 48 6b c0 02 imul rax, rax, 2
+ 0007c 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00083 48 03 c8 add rcx, rax
+ 00086 48 8b c1 mov rax, rcx
+ 00089 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0008d c5 fd 11 85 a0
+ 00 00 00 vmovupd YMMWORD PTR a2$[rbp], ymm0
+
+; 281 : const __m256d a3 = _mm256_load_pd((double *)&left->f64_y[3]);
+
+ 00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0009a 48 6b c0 03 imul rax, rax, 3
+ 0009e 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 000a5 48 03 c8 add rcx, rax
+ 000a8 48 8b c1 mov rax, rcx
+ 000ab c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000af c5 fd 11 85 e0
+ 00 00 00 vmovupd YMMWORD PTR a3$[rbp], ymm0
+
+; 282 :
+; 283 : __m256d b0 = _mm256_load_pd((double *)&right->f64_y[0]);
+
+ 000b7 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000bc 48 6b c0 00 imul rax, rax, 0
+ 000c0 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000c7 48 03 c8 add rcx, rax
+ 000ca 48 8b c1 mov rax, rcx
+ 000cd c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000d1 c5 fd 11 85 20
+ 01 00 00 vmovupd YMMWORD PTR b0$[rbp], ymm0
+
+; 284 : __m256d b1 = _mm256_load_pd((double *)&right->f64_y[1]);
+
+ 000d9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000de 48 6b c0 01 imul rax, rax, 1
+ 000e2 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000e9 48 03 c8 add rcx, rax
+ 000ec 48 8b c1 mov rax, rcx
+ 000ef c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000f3 c5 fd 11 85 60
+ 01 00 00 vmovupd YMMWORD PTR b1$[rbp], ymm0
+
+; 285 : __m256d b2 = _mm256_load_pd((double *)&right->f64_y[2]);
+
+ 000fb b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00100 48 6b c0 02 imul rax, rax, 2
+ 00104 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0010b 48 03 c8 add rcx, rax
+ 0010e 48 8b c1 mov rax, rcx
+ 00111 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00115 c5 fd 11 85 a0
+ 01 00 00 vmovupd YMMWORD PTR b2$[rbp], ymm0
+
+; 286 : __m256d b3 = _mm256_load_pd((double *)&right->f64_y[3]);
+
+ 0011d b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00122 48 6b c0 03 imul rax, rax, 3
+ 00126 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0012d 48 03 c8 add rcx, rax
+ 00130 48 8b c1 mov rax, rcx
+ 00133 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00137 c5 fd 11 85 e0
+ 01 00 00 vmovupd YMMWORD PTR b3$[rbp], ymm0
+
+; 287 :
+; 288 : register __m256d ccol;
+; 289 :
+; 290 : /* Column 0 */
+; 291 : ccol = _mm256_load_pd((double *)&ans->f64_y[0]);
+
+ 0013f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00144 48 6b c0 00 imul rax, rax, 0
+ 00148 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0014f 48 03 c8 add rcx, rax
+ 00152 48 8b c1 mov rax, rcx
+ 00155 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00159 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 292 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b0, _FMA_SELECT(0)), ccol);
+
+ 00161 c4 e3 fd 01 85
+ 20 01 00 00 00 vpermpd ymm0, YMMWORD PTR b0$[rbp], 0
+ 0016b c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 00170 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00179 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0017d c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 293 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b0, _FMA_SELECT(1)), ccol);
+
+ 00185 c4 e3 fd 01 85
+ 20 01 00 00 55 vpermpd ymm0, YMMWORD PTR b0$[rbp], 85 ; 00000055H
+ 0018f c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 00194 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 0019d c5 fd 10 c1 vmovupd ymm0, ymm1
+ 001a1 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 294 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b0, _FMA_SELECT(2)), ccol);
+
+ 001a9 c4 e3 fd 01 85
+ 20 01 00 00 aa vpermpd ymm0, YMMWORD PTR b0$[rbp], 170 ; 000000aaH
+ 001b3 c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 001bb c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 001c4 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 001c8 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 295 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b0, _FMA_SELECT(3)), ccol);
+
+ 001d0 c4 e3 fd 01 85
+ 20 01 00 00 ff vpermpd ymm0, YMMWORD PTR b0$[rbp], 255 ; 000000ffH
+ 001da c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 001e2 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 001eb c5 fd 10 c1 vmovupd ymm0, ymm1
+ 001ef c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 296 : _mm256_store_pd((double *)&ans->f64_y[0], ccol);
+
+ 001f7 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001fc 48 6b c0 00 imul rax, rax, 0
+ 00200 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00207 48 03 c8 add rcx, rax
+ 0020a 48 8b c1 mov rax, rcx
+ 0020d c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 00215 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 297 : /* Column 1 */
+; 298 : ccol = _mm256_load_pd((double *)&ans->f64_y[1]);
+
+ 00219 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0021e 48 6b c0 01 imul rax, rax, 1
+ 00222 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00229 48 03 c8 add rcx, rax
+ 0022c 48 8b c1 mov rax, rcx
+ 0022f c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00233 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 299 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b1, _FMA_SELECT(0)), ccol);
+
+ 0023b c4 e3 fd 01 85
+ 60 01 00 00 00 vpermpd ymm0, YMMWORD PTR b1$[rbp], 0
+ 00245 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 0024a c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00253 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00257 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 300 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b1, _FMA_SELECT(1)), ccol);
+
+ 0025f c4 e3 fd 01 85
+ 60 01 00 00 55 vpermpd ymm0, YMMWORD PTR b1$[rbp], 85 ; 00000055H
+ 00269 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 0026e c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00277 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0027b c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 301 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b1, _FMA_SELECT(2)), ccol);
+
+ 00283 c4 e3 fd 01 85
+ 60 01 00 00 aa vpermpd ymm0, YMMWORD PTR b1$[rbp], 170 ; 000000aaH
+ 0028d c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 00295 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 0029e c5 fd 10 c1 vmovupd ymm0, ymm1
+ 002a2 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 302 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b1, _FMA_SELECT(3)), ccol);
+
+ 002aa c4 e3 fd 01 85
+ 60 01 00 00 ff vpermpd ymm0, YMMWORD PTR b1$[rbp], 255 ; 000000ffH
+ 002b4 c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 002bc c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 002c5 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 002c9 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 303 : _mm256_store_pd((double *)&ans->f64_y[1], ccol);
+
+ 002d1 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 002d6 48 6b c0 01 imul rax, rax, 1
+ 002da 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 002e1 48 03 c8 add rcx, rax
+ 002e4 48 8b c1 mov rax, rcx
+ 002e7 c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 002ef c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 304 : /* Column 2 */
+; 305 : ccol = _mm256_load_pd((double *)&ans->f64_y[2]);
+
+ 002f3 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 002f8 48 6b c0 02 imul rax, rax, 2
+ 002fc 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00303 48 03 c8 add rcx, rax
+ 00306 48 8b c1 mov rax, rcx
+ 00309 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0030d c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 306 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b2, _FMA_SELECT(0)), ccol);
+
+ 00315 c4 e3 fd 01 85
+ a0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b2$[rbp], 0
+ 0031f c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 00324 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 0032d c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00331 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 307 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b2, _FMA_SELECT(1)), ccol);
+
+ 00339 c4 e3 fd 01 85
+ a0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b2$[rbp], 85 ; 00000055H
+ 00343 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 00348 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00351 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00355 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 308 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b2, _FMA_SELECT(2)), ccol);
+
+ 0035d c4 e3 fd 01 85
+ a0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b2$[rbp], 170 ; 000000aaH
+ 00367 c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 0036f c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00378 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0037c c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 309 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b2, _FMA_SELECT(3)), ccol);
+
+ 00384 c4 e3 fd 01 85
+ a0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b2$[rbp], 255 ; 000000ffH
+ 0038e c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 00396 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 0039f c5 fd 10 c1 vmovupd ymm0, ymm1
+ 003a3 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 310 : _mm256_store_pd((double *)&ans->f64_y[2], ccol);
+
+ 003ab b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 003b0 48 6b c0 02 imul rax, rax, 2
+ 003b4 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 003bb 48 03 c8 add rcx, rax
+ 003be 48 8b c1 mov rax, rcx
+ 003c1 c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 003c9 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 311 : /* Column 3 */
+; 312 : ccol = _mm256_load_pd((double *)&ans->f64_y[3]);
+
+ 003cd b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 003d2 48 6b c0 03 imul rax, rax, 3
+ 003d6 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 003dd 48 03 c8 add rcx, rax
+ 003e0 48 8b c1 mov rax, rcx
+ 003e3 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 003e7 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 313 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b3, _FMA_SELECT(0)), ccol);
+
+ 003ef c4 e3 fd 01 85
+ e0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b3$[rbp], 0
+ 003f9 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 003fe c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00407 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0040b c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 314 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b3, _FMA_SELECT(1)), ccol);
+
+ 00413 c4 e3 fd 01 85
+ e0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b3$[rbp], 85 ; 00000055H
+ 0041d c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 00422 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 0042b c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0042f c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 315 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b3, _FMA_SELECT(2)), ccol);
+
+ 00437 c4 e3 fd 01 85
+ e0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b3$[rbp], 170 ; 000000aaH
+ 00441 c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 00449 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00452 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00456 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 316 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b3, _FMA_SELECT(3)), ccol);
+
+ 0045e c4 e3 fd 01 85
+ e0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b3$[rbp], 255 ; 000000ffH
+ 00468 c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 00470 c4 e2 fd a8 8d
+ 20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
+ 00479 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0047d c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 317 : _mm256_store_pd((double *)&ans->f64_y[3], ccol);
+
+ 00485 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0048a 48 6b c0 03 imul rax, rax, 3
+ 0048e 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00495 48 03 c8 add rcx, rax
+ 00498 48 8b c1 mov rax, rcx
+ 0049b c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 004a3 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 318 : }
+
+ 004a7 49 8d a5 f0 03
+ 00 00 lea rsp, QWORD PTR [r13+1008]
+ 004ae 5f pop rdi
+ 004af 5d pop rbp
+ 004b0 41 5d pop r13
+ 004b2 c3 ret 0
+double_kernel_fma_avx_fma ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT double_kernel_fma_avx
+_TEXT SEGMENT
+a0$ = 32
+a1$ = 96
+a2$ = 160
+a3$ = 224
+b0$ = 288
+b1$ = 352
+b2$ = 416
+b3$ = 480
+ccol$ = 544
+left$ = 1040
+right$ = 1048
+ans$ = 1056
+double_kernel_fma_avx PROC ; COMDAT
+
+; 233 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 10 04
+ 00 00 sub rsp, 1040 ; 00000410H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 234 : const __m256d a0 = _mm256_load_pd((double *)&left->f64_y[0]);
+
+ 00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00045 48 03 c8 add rcx, rax
+ 00048 48 8b c1 mov rax, rcx
+ 0004b c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0004f c5 fd 11 45 20 vmovupd YMMWORD PTR a0$[rbp], ymm0
+
+; 235 : const __m256d a1 = _mm256_load_pd((double *)&left->f64_y[1]);
+
+ 00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00059 48 6b c0 01 imul rax, rax, 1
+ 0005d 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00064 48 03 c8 add rcx, rax
+ 00067 48 8b c1 mov rax, rcx
+ 0006a c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0006e c5 fd 11 45 60 vmovupd YMMWORD PTR a1$[rbp], ymm0
+
+; 236 : const __m256d a2 = _mm256_load_pd((double *)&left->f64_y[2]);
+
+ 00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00078 48 6b c0 02 imul rax, rax, 2
+ 0007c 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00083 48 03 c8 add rcx, rax
+ 00086 48 8b c1 mov rax, rcx
+ 00089 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0008d c5 fd 11 85 a0
+ 00 00 00 vmovupd YMMWORD PTR a2$[rbp], ymm0
+
+; 237 : const __m256d a3 = _mm256_load_pd((double *)&left->f64_y[3]);
+
+ 00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0009a 48 6b c0 03 imul rax, rax, 3
+ 0009e 49 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 000a5 48 03 c8 add rcx, rax
+ 000a8 48 8b c1 mov rax, rcx
+ 000ab c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000af c5 fd 11 85 e0
+ 00 00 00 vmovupd YMMWORD PTR a3$[rbp], ymm0
+
+; 238 :
+; 239 : __m256d b0 = _mm256_load_pd((double *)&right->f64_y[0]);
+
+ 000b7 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000bc 48 6b c0 00 imul rax, rax, 0
+ 000c0 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000c7 48 03 c8 add rcx, rax
+ 000ca 48 8b c1 mov rax, rcx
+ 000cd c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000d1 c5 fd 11 85 20
+ 01 00 00 vmovupd YMMWORD PTR b0$[rbp], ymm0
+
+; 240 : __m256d b1 = _mm256_load_pd((double *)&right->f64_y[1]);
+
+ 000d9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000de 48 6b c0 01 imul rax, rax, 1
+ 000e2 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000e9 48 03 c8 add rcx, rax
+ 000ec 48 8b c1 mov rax, rcx
+ 000ef c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000f3 c5 fd 11 85 60
+ 01 00 00 vmovupd YMMWORD PTR b1$[rbp], ymm0
+
+; 241 : __m256d b2 = _mm256_load_pd((double *)&right->f64_y[2]);
+
+ 000fb b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00100 48 6b c0 02 imul rax, rax, 2
+ 00104 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0010b 48 03 c8 add rcx, rax
+ 0010e 48 8b c1 mov rax, rcx
+ 00111 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00115 c5 fd 11 85 a0
+ 01 00 00 vmovupd YMMWORD PTR b2$[rbp], ymm0
+
+; 242 : __m256d b3 = _mm256_load_pd((double *)&right->f64_y[3]);
+
+ 0011d b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00122 48 6b c0 03 imul rax, rax, 3
+ 00126 49 8b 8d 18 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0012d 48 03 c8 add rcx, rax
+ 00130 48 8b c1 mov rax, rcx
+ 00133 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00137 c5 fd 11 85 e0
+ 01 00 00 vmovupd YMMWORD PTR b3$[rbp], ymm0
+
+; 243 :
+; 244 : register __m256d ccol;
+; 245 :
+; 246 : /* Column 0 */
+; 247 : ccol = _mm256_load_pd((double *)&ans->f64_y[0]);
+
+ 0013f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00144 48 6b c0 00 imul rax, rax, 0
+ 00148 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0014f 48 03 c8 add rcx, rax
+ 00152 48 8b c1 mov rax, rcx
+ 00155 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00159 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 248 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b0, _FMA_SELECT(0))));
+
+ 00161 c4 e3 fd 01 85
+ 20 01 00 00 00 vpermpd ymm0, YMMWORD PTR b0$[rbp], 0
+ 0016b c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 00170 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00174 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 0017c c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00180 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 249 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b0, _FMA_SELECT(1))));
+
+ 00188 c4 e3 fd 01 85
+ 20 01 00 00 55 vpermpd ymm0, YMMWORD PTR b0$[rbp], 85 ; 00000055H
+ 00192 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 00197 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 0019b c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 001a3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 001a7 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 250 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b0, _FMA_SELECT(2))));
+
+ 001af c4 e3 fd 01 85
+ 20 01 00 00 aa vpermpd ymm0, YMMWORD PTR b0$[rbp], 170 ; 000000aaH
+ 001b9 c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 001c1 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 001c5 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 001cd c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 001d1 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 251 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b0, _FMA_SELECT(3))));
+
+ 001d9 c4 e3 fd 01 85
+ 20 01 00 00 ff vpermpd ymm0, YMMWORD PTR b0$[rbp], 255 ; 000000ffH
+ 001e3 c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 001eb c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 001ef c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 001f7 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 001fb c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 252 : _mm256_store_pd((double *)&ans->f64_y[0], ccol);
+
+ 00203 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00208 48 6b c0 00 imul rax, rax, 0
+ 0020c 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00213 48 03 c8 add rcx, rax
+ 00216 48 8b c1 mov rax, rcx
+ 00219 c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 00221 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 253 : /* Column 1 */
+; 254 : ccol = _mm256_load_pd((double *)&ans->f64_y[1]);
+
+ 00225 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0022a 48 6b c0 01 imul rax, rax, 1
+ 0022e 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00235 48 03 c8 add rcx, rax
+ 00238 48 8b c1 mov rax, rcx
+ 0023b c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0023f c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 255 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b1, _FMA_SELECT(0))));
+
+ 00247 c4 e3 fd 01 85
+ 60 01 00 00 00 vpermpd ymm0, YMMWORD PTR b1$[rbp], 0
+ 00251 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 00256 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 0025a c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 00262 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00266 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 256 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b1, _FMA_SELECT(1))));
+
+ 0026e c4 e3 fd 01 85
+ 60 01 00 00 55 vpermpd ymm0, YMMWORD PTR b1$[rbp], 85 ; 00000055H
+ 00278 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 0027d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00281 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 00289 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 0028d c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 257 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b1, _FMA_SELECT(2))));
+
+ 00295 c4 e3 fd 01 85
+ 60 01 00 00 aa vpermpd ymm0, YMMWORD PTR b1$[rbp], 170 ; 000000aaH
+ 0029f c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 002a7 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 002ab c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 002b3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 002b7 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 258 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b1, _FMA_SELECT(3))));
+
+ 002bf c4 e3 fd 01 85
+ 60 01 00 00 ff vpermpd ymm0, YMMWORD PTR b1$[rbp], 255 ; 000000ffH
+ 002c9 c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 002d1 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 002d5 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 002dd c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 002e1 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 259 : _mm256_store_pd((double *)&ans->f64_y[1], ccol);
+
+ 002e9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 002ee 48 6b c0 01 imul rax, rax, 1
+ 002f2 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 002f9 48 03 c8 add rcx, rax
+ 002fc 48 8b c1 mov rax, rcx
+ 002ff c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 00307 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 260 : /* Column 2 */
+; 261 : ccol = _mm256_load_pd((double *)&ans->f64_y[2]);
+
+ 0030b b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00310 48 6b c0 02 imul rax, rax, 2
+ 00314 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0031b 48 03 c8 add rcx, rax
+ 0031e 48 8b c1 mov rax, rcx
+ 00321 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00325 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 262 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b2, _FMA_SELECT(0))));
+
+ 0032d c4 e3 fd 01 85
+ a0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b2$[rbp], 0
+ 00337 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 0033c c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00340 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 00348 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 0034c c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 263 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b2, _FMA_SELECT(1))));
+
+ 00354 c4 e3 fd 01 85
+ a0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b2$[rbp], 85 ; 00000055H
+ 0035e c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 00363 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00367 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 0036f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00373 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 264 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b2, _FMA_SELECT(2))));
+
+ 0037b c4 e3 fd 01 85
+ a0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b2$[rbp], 170 ; 000000aaH
+ 00385 c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 0038d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00391 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 00399 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 0039d c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 265 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b2, _FMA_SELECT(3))));
+
+ 003a5 c4 e3 fd 01 85
+ a0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b2$[rbp], 255 ; 000000ffH
+ 003af c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 003b7 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 003bb c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 003c3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 003c7 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 266 : _mm256_store_pd((double *)&ans->f64_y[2], ccol);
+
+ 003cf b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 003d4 48 6b c0 02 imul rax, rax, 2
+ 003d8 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 003df 48 03 c8 add rcx, rax
+ 003e2 48 8b c1 mov rax, rcx
+ 003e5 c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 003ed c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 267 : /* Column 3 */
+; 268 : ccol = _mm256_load_pd((double *)&ans->f64_y[3]);
+
+ 003f1 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 003f6 48 6b c0 03 imul rax, rax, 3
+ 003fa 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00401 48 03 c8 add rcx, rax
+ 00404 48 8b c1 mov rax, rcx
+ 00407 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0040b c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 269 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b3, _FMA_SELECT(0))));
+
+ 00413 c4 e3 fd 01 85
+ e0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b3$[rbp], 0
+ 0041d c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
+ 00422 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00426 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 0042e c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00432 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 270 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b3, _FMA_SELECT(1))));
+
+ 0043a c4 e3 fd 01 85
+ e0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b3$[rbp], 85 ; 00000055H
+ 00444 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
+ 00449 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 0044d c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 00455 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00459 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 271 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b3, _FMA_SELECT(2))));
+
+ 00461 c4 e3 fd 01 85
+ e0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b3$[rbp], 170 ; 000000aaH
+ 0046b c5 fd 10 8d a0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
+ 00473 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00477 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 0047f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00483 c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 272 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b3, _FMA_SELECT(3))));
+
+ 0048b c4 e3 fd 01 85
+ e0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b3$[rbp], 255 ; 000000ffH
+ 00495 c5 fd 10 8d e0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
+ 0049d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 004a1 c5 fd 10 8d 20
+ 02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
+ 004a9 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 004ad c5 fd 11 85 20
+ 02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
+
+; 273 : _mm256_store_pd((double *)&ans->f64_y[3], ccol);
+
+ 004b5 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 004ba 48 6b c0 03 imul rax, rax, 3
+ 004be 49 8b 8d 20 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 004c5 48 03 c8 add rcx, rax
+ 004c8 48 8b c1 mov rax, rcx
+ 004cb c5 fd 10 85 20
+ 02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
+ 004d3 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 274 : }
+
+ 004d7 49 8d a5 f0 03
+ 00 00 lea rsp, QWORD PTR [r13+1008]
+ 004de 5f pop rdi
+ 004df 5d pop rbp
+ 004e0 41 5d pop r13
+ 004e2 c3 ret 0
+double_kernel_fma_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT double_kernel_fma_sse
+_TEXT SEGMENT
+col$1 = 4
+c_lo$2 = 48
+c_hi$3 = 96
+b_lo$4 = 144
+b_hi$5 = 192
+a_lo$6 = 240
+a_hi$7 = 288
+b$8 = 336
+left$ = 592
+right$ = 600
+ans$ = 608
+double_kernel_fma_sse PROC ; COMDAT
+
+; 189 : {
+
+$LN6:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 58 02
+ 00 00 sub rsp, 600 ; 00000258H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 190 : for (int col = 0; col < 4; ++col) {
+
+ 0002a c7 45 04 00 00
+ 00 00 mov DWORD PTR col$1[rbp], 0
+ 00031 eb 08 jmp SHORT $LN4@double_ker
+$LN2@double_ker:
+ 00033 8b 45 04 mov eax, DWORD PTR col$1[rbp]
+ 00036 ff c0 inc eax
+ 00038 89 45 04 mov DWORD PTR col$1[rbp], eax
+$LN4@double_ker:
+ 0003b 83 7d 04 04 cmp DWORD PTR col$1[rbp], 4
+ 0003f 0f 8d c5 02 00
+ 00 jge $LN3@double_ker
+
+; 191 : /* current answer column (two chunks: rows 0-1 and 2-3) */
+; 192 : register __m128d c_lo = _mm_load_pd(ans->f64_x + (col * 2 + 0));
+
+ 00045 8b 45 04 mov eax, DWORD PTR col$1[rbp]
+ 00048 03 c0 add eax, eax
+ 0004a 48 98 cdqe
+ 0004c 48 6b c0 10 imul rax, rax, 16
+ 00050 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00057 48 03 c8 add rcx, rax
+ 0005a 48 8b c1 mov rax, rcx
+ 0005d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00060 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
+
+; 193 : register __m128d c_hi = _mm_load_pd(ans->f64_x + (col * 2 + 1));
+
+ 00064 8b 45 04 mov eax, DWORD PTR col$1[rbp]
+ 00067 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
+ 0006b 48 98 cdqe
+ 0006d 48 6b c0 10 imul rax, rax, 16
+ 00071 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00078 48 03 c8 add rcx, rax
+ 0007b 48 8b c1 mov rax, rcx
+ 0007e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00081 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
+
+; 194 :
+; 195 : /* right matrix column split into two chunks */
+; 196 : register __m128d b_lo = _mm_load_pd(right + (2 * col + 0));
+
+ 00085 8b 45 04 mov eax, DWORD PTR col$1[rbp]
+ 00088 03 c0 add eax, eax
+ 0008a 48 98 cdqe
+ 0008c 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00093 48 8b 8d 58 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 0009a 48 03 c8 add rcx, rax
+ 0009d 48 8b c1 mov rax, rcx
+ 000a0 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000a3 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR b_lo$4[rbp], xmm0
+
+; 197 : register __m128d b_hi = _mm_load_pd(right + (2 * col + 1));
+
+ 000aa 8b 45 04 mov eax, DWORD PTR col$1[rbp]
+ 000ad 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
+ 000b1 48 98 cdqe
+ 000b3 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 000ba 48 8b 8d 58 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000c1 48 03 c8 add rcx, rax
+ 000c4 48 8b c1 mov rax, rcx
+ 000c7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000ca 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR b_hi$5[rbp], xmm0
+
+; 198 :
+; 199 : /* k = 0 */
+; 200 : register __m128d a_lo = _mm_load_pd(left + (0 * 2 + 0));
+
+ 000d1 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 000d8 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000db 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+
+; 201 : register __m128d a_hi = _mm_load_pd(left + (0 * 2 + 1));
+
+ 000e2 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 000e9 48 05 80 00 00
+ 00 add rax, 128 ; 00000080H
+ 000ef 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000f2 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+
+; 202 : register __m128d b = _mm_shuffle_pd(b_lo, b_lo, 0x0);
+
+ 000f9 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
+ 00100 66 0f c6 85 90
+ 00 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 0
+ 00109 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+
+; 203 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
+
+ 00110 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 00117 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 0011f 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
+ 00123 66 0f 58 c8 addpd xmm1, xmm0
+ 00127 0f 28 c1 movaps xmm0, xmm1
+ 0012a 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
+
+; 204 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
+
+ 0012e 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 00135 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 0013d 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
+ 00141 66 0f 58 c8 addpd xmm1, xmm0
+ 00145 0f 28 c1 movaps xmm0, xmm1
+ 00148 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
+
+; 205 :
+; 206 : /* k = 1 */
+; 207 : a_lo = _mm_load_pd(left + (1 * 2 + 0));
+
+ 0014c 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 00153 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 00159 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0015c 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+
+; 208 : a_hi = _mm_load_pd(left + (1 * 2 + 1));
+
+ 00163 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 0016a 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 00170 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00173 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+
+; 209 : b = _mm_shuffle_pd(b_lo, b_lo, 0x3);
+
+ 0017a 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
+ 00181 66 0f c6 85 90
+ 00 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 3
+ 0018a 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+
+; 210 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
+
+ 00191 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 00198 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 001a0 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
+ 001a4 66 0f 58 c8 addpd xmm1, xmm0
+ 001a8 0f 28 c1 movaps xmm0, xmm1
+ 001ab 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
+
+; 211 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
+
+ 001af 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 001b6 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 001be 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
+ 001c2 66 0f 58 c8 addpd xmm1, xmm0
+ 001c6 0f 28 c1 movaps xmm0, xmm1
+ 001c9 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
+
+; 212 :
+; 213 : /* k = 2 */
+; 214 : a_lo = _mm_load_pd(left + (1 * 2 + 0));
+
+ 001cd 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 001d4 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 001da 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001dd 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+
+; 215 : a_hi = _mm_load_pd(left + (1 * 2 + 1));
+
+ 001e4 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 001eb 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 001f1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001f4 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+
+; 216 : b = _mm_shuffle_pd(b_hi, b_hi, 0x0);
+
+ 001fb 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
+ 00202 66 0f c6 85 c0
+ 00 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 0
+ 0020b 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+
+; 217 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
+
+ 00212 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 00219 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 00221 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
+ 00225 66 0f 58 c8 addpd xmm1, xmm0
+ 00229 0f 28 c1 movaps xmm0, xmm1
+ 0022c 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
+
+; 218 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
+
+ 00230 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 00237 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 0023f 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
+ 00243 66 0f 58 c8 addpd xmm1, xmm0
+ 00247 0f 28 c1 movaps xmm0, xmm1
+ 0024a 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
+
+; 219 :
+; 220 : /* k = 3 */
+; 221 : a_lo = _mm_load_pd(left + (1 * 2 + 0));
+
+ 0024e 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 00255 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 0025b 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0025e 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+
+; 222 : a_hi = _mm_load_pd(left + (1 * 2 + 1));
+
+ 00265 48 8b 85 50 02
+ 00 00 mov rax, QWORD PTR left$[rbp]
+ 0026c 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 00272 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00275 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+
+; 223 : b = _mm_shuffle_pd(b_hi, b_hi, 0x3);
+
+ 0027c 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
+ 00283 66 0f c6 85 c0
+ 00 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 3
+ 0028c 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+
+; 224 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
+
+ 00293 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 0029a 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 002a2 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
+ 002a6 66 0f 58 c8 addpd xmm1, xmm0
+ 002aa 0f 28 c1 movaps xmm0, xmm1
+ 002ad 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
+
+; 225 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
+
+ 002b1 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 002b8 66 0f 59 85 50
+ 01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 002c0 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
+ 002c4 66 0f 58 c8 addpd xmm1, xmm0
+ 002c8 0f 28 c1 movaps xmm0, xmm1
+ 002cb 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
+
+; 226 :
+; 227 : ans->f64_x[col * 2 + 0] = c_lo;
+
+ 002cf 8b 45 04 mov eax, DWORD PTR col$1[rbp]
+ 002d2 03 c0 add eax, eax
+ 002d4 48 98 cdqe
+ 002d6 48 6b c0 10 imul rax, rax, 16
+ 002da 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 002e1 0f 28 45 30 movaps xmm0, XMMWORD PTR c_lo$2[rbp]
+ 002e5 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 228 : ans->f64_x[col * 2 + 1] = c_hi;
+
+ 002e9 8b 45 04 mov eax, DWORD PTR col$1[rbp]
+ 002ec 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
+ 002f0 48 98 cdqe
+ 002f2 48 6b c0 10 imul rax, rax, 16
+ 002f6 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 002fd 0f 28 45 60 movaps xmm0, XMMWORD PTR c_hi$3[rbp]
+ 00301 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 229 : }
+
+ 00305 e9 29 fd ff ff jmp $LN2@double_ker
+$LN3@double_ker:
+
+; 230 : }
+
+ 0030a 48 8d a5 38 02
+ 00 00 lea rsp, QWORD PTR [rbp+568]
+ 00311 5f pop rdi
+ 00312 5d pop rbp
+ 00313 c3 ret 0
+double_kernel_fma_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT float_kernel_fma_512
+_TEXT SEGMENT
+a$ = 64
+b$ = 192
+c$ = 320
+a_perm0$ = 448
+b_perm0$ = 576
+a_perm1$ = 704
+b_perm1$ = 832
+a_perm2$ = 960
+b_perm2$ = 1088
+a_perm3$ = 1216
+b_perm3$ = 1344
+left$ = 2096
+right$ = 2104
+ans$ = 2112
+float_kernel_fma_512 PROC ; COMDAT
+
+; 153 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 30 08
+ 00 00 sub rsp, 2096 ; 00000830H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00024 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 154 : static const __m512i b_shift = { .m512i_i32 = {
+; 155 : // shuff order
+; 156 : 0, 1, 2, 3, // col0
+; 157 : 5, 6, 7, 4, //col1
+; 158 : 10, 11, 8, 9, //col2
+; 159 : 15, 12, 13, 14 //col3
+; 160 : } };
+; 161 :
+; 162 : register __m512 a = _mm512_load_ps((float *)left);
+
+ 00035 49 8b 85 30 08
+ 00 00 mov rax, QWORD PTR left$[r13]
+ 0003c 62 f1 7c 48 10
+ 00 vmovups zmm0, ZMMWORD PTR [rax]
+ 00042 62 f1 7c 48 11
+ 45 01 vmovups ZMMWORD PTR a$[rbp], zmm0
+
+; 163 : register __m512 b = _mm512_load_ps((float *)right);
+
+ 00049 49 8b 85 38 08
+ 00 00 mov rax, QWORD PTR right$[r13]
+ 00050 62 f1 7c 48 10
+ 00 vmovups zmm0, ZMMWORD PTR [rax]
+ 00056 62 f1 7c 48 11
+ 45 03 vmovups ZMMWORD PTR b$[rbp], zmm0
+
+; 164 : register __m512 c = _mm512_load_ps((float *)ans);
+
+ 0005d 49 8b 85 40 08
+ 00 00 mov rax, QWORD PTR ans$[r13]
+ 00064 62 f1 7c 48 10
+ 00 vmovups zmm0, ZMMWORD PTR [rax]
+ 0006a 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 165 :
+; 166 : b = _mm512_permutexvar_ps(b_shift, b);
+
+ 00071 62 f1 7e 48 6f
+ 05 00 00 00 00 vmovdqu32 zmm0, ZMMWORD PTR ?b_shift@?1??float_kernel_fma_512@@9@9
+ 0007b 62 f2 7d 48 16
+ 45 03 vpermps zmm0, zmm0, ZMMWORD PTR b$[rbp]
+ 00082 62 f1 7c 48 11
+ 45 03 vmovups ZMMWORD PTR b$[rbp], zmm0
+
+; 167 : register __m512 a_perm0 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(3, 2, 1, 0));
+
+ 00089 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
+ 00090 62 f3 7d 48 23
+ 45 01 e4 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 228 ; 000000e4H
+ 00098 62 f1 7c 48 11
+ 45 07 vmovups ZMMWORD PTR a_perm0$[rbp], zmm0
+
+; 168 : register __m512 b_perm0 = _mm512_permute_ps(b, _FMA_SELECT(0));
+
+ 0009f 62 f3 7d 48 04
+ 45 03 00 vpermilps zmm0, ZMMWORD PTR b$[rbp], 0
+ 000a7 62 f1 7c 48 11
+ 45 09 vmovups ZMMWORD PTR b_perm0$[rbp], zmm0
+
+; 169 : c = _mm512_fmadd_ps(a_perm0, b_perm0, c);
+
+ 000ae 62 f1 7c 48 10
+ 45 07 vmovups zmm0, ZMMWORD PTR a_perm0$[rbp]
+ 000b5 62 f1 7c 48 10
+ 4d 09 vmovups zmm1, ZMMWORD PTR b_perm0$[rbp]
+ 000bc 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 000c3 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 170 :
+; 171 : register __m512 a_perm1 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(2, 1, 0, 3));
+
+ 000ca 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
+ 000d1 62 f3 7d 48 23
+ 45 01 93 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 147 ; 00000093H
+ 000d9 62 f1 7c 48 11
+ 45 0b vmovups ZMMWORD PTR a_perm1$[rbp], zmm0
+
+; 172 : register __m512 b_perm1 = _mm512_permute_ps(b, _FMA_SELECT(1));
+
+ 000e0 62 f3 7d 48 04
+ 45 03 55 vpermilps zmm0, ZMMWORD PTR b$[rbp], 85 ; 00000055H
+ 000e8 62 f1 7c 48 11
+ 45 0d vmovups ZMMWORD PTR b_perm1$[rbp], zmm0
+
+; 173 : c = _mm512_fmadd_ps(a_perm1, b_perm1, c);
+
+ 000ef 62 f1 7c 48 10
+ 45 0b vmovups zmm0, ZMMWORD PTR a_perm1$[rbp]
+ 000f6 62 f1 7c 48 10
+ 4d 0d vmovups zmm1, ZMMWORD PTR b_perm1$[rbp]
+ 000fd 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 00104 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 174 :
+; 175 : register __m512 a_perm2 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(1, 0, 3, 2));
+
+ 0010b 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
+ 00112 62 f3 7d 48 23
+ 45 01 4e vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 78 ; 0000004eH
+ 0011a 62 f1 7c 48 11
+ 45 0f vmovups ZMMWORD PTR a_perm2$[rbp], zmm0
+
+; 176 : register __m512 b_perm2 = _mm512_permute_ps(b, _FMA_SELECT(2));
+
+ 00121 62 f3 7d 48 04
+ 45 03 aa vpermilps zmm0, ZMMWORD PTR b$[rbp], 170 ; 000000aaH
+ 00129 62 f1 7c 48 11
+ 45 11 vmovups ZMMWORD PTR b_perm2$[rbp], zmm0
+
+; 177 : c = _mm512_fmadd_ps(a_perm2, b_perm2, c);
+
+ 00130 62 f1 7c 48 10
+ 45 0f vmovups zmm0, ZMMWORD PTR a_perm2$[rbp]
+ 00137 62 f1 7c 48 10
+ 4d 11 vmovups zmm1, ZMMWORD PTR b_perm2$[rbp]
+ 0013e 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 00145 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 178 :
+; 179 : register __m512 a_perm3 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(0, 3, 2, 1));
+
+ 0014c 62 f1 7c 48 10
+ 45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
+ 00153 62 f3 7d 48 23
+ 45 01 39 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 57 ; 00000039H
+ 0015b 62 f1 7c 48 11
+ 45 13 vmovups ZMMWORD PTR a_perm3$[rbp], zmm0
+
+; 180 : register __m512 b_perm3 = _mm512_permute_ps(b, _FMA_SELECT(3));
+
+ 00162 62 f3 7d 48 04
+ 45 03 ff vpermilps zmm0, ZMMWORD PTR b$[rbp], 255 ; 000000ffH
+ 0016a 62 f1 7c 48 11
+ 45 15 vmovups ZMMWORD PTR b_perm3$[rbp], zmm0
+
+; 181 : c = _mm512_fmadd_ps(a_perm3, b_perm3, c);
+
+ 00171 62 f1 7c 48 10
+ 45 13 vmovups zmm0, ZMMWORD PTR a_perm3$[rbp]
+ 00178 62 f1 7c 48 10
+ 4d 15 vmovups zmm1, ZMMWORD PTR b_perm3$[rbp]
+ 0017f 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 00186 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 182 :
+; 183 : _mm512_store_ps((float *)ans, c);
+
+ 0018d 49 8b 85 40 08
+ 00 00 mov rax, QWORD PTR ans$[r13]
+ 00194 62 f1 7c 48 10
+ 45 05 vmovups zmm0, ZMMWORD PTR c$[rbp]
+ 0019b 62 f1 7c 48 11
+ 00 vmovups ZMMWORD PTR [rax], zmm0
+
+; 184 : }
+
+ 001a1 49 8d a5 10 08
+ 00 00 lea rsp, QWORD PTR [r13+2064]
+ 001a8 5f pop rdi
+ 001a9 5d pop rbp
+ 001aa 41 5d pop r13
+ 001ac c3 ret 0
+float_kernel_fma_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT float_kernel_fma_avx_fma
+_TEXT SEGMENT
+a01$ = 32
+a23$ = 96
+b01$ = 160
+b23$ = 224
+c01$ = 288
+c23$ = 352
+b01_perm$ = 416
+b23_perm$ = 480
+a12$ = 544
+a30$ = 608
+left$ = 1104
+right$ = 1112
+ans$ = 1120
+float_kernel_fma_avx_fma PROC ; COMDAT
+
+; 107 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 50 04
+ 00 00 sub rsp, 1104 ; 00000450H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 108 : static const __m256i b01_shift = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
+; 109 : static const __m256i b23_shift = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
+; 110 :
+; 111 : register __m256 a01 = _mm256_load_ps((float *)&left->f32_y[0]);
+
+ 00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e 49 8b 8d 50 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00045 48 03 c8 add rcx, rax
+ 00048 48 8b c1 mov rax, rcx
+ 0004b c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 0004f c5 fc 11 45 20 vmovups YMMWORD PTR a01$[rbp], ymm0
+
+; 112 : register __m256 a23 = _mm256_load_ps((float *)&left->f32_y[1]);
+
+ 00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00059 48 6b c0 01 imul rax, rax, 1
+ 0005d 49 8b 8d 50 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00064 48 03 c8 add rcx, rax
+ 00067 48 8b c1 mov rax, rcx
+ 0006a c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 0006e c5 fc 11 45 60 vmovups YMMWORD PTR a23$[rbp], ymm0
+
+; 113 :
+; 114 : register __m256 b01 = _mm256_load_ps((float *)&right->f32_y[0]);
+
+ 00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00078 48 6b c0 00 imul rax, rax, 0
+ 0007c 49 8b 8d 58 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00083 48 03 c8 add rcx, rax
+ 00086 48 8b c1 mov rax, rcx
+ 00089 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 0008d c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
+
+; 115 : register __m256 b23 = _mm256_load_ps((float *)&right->f32_y[1]);
+
+ 00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0009a 48 6b c0 01 imul rax, rax, 1
+ 0009e 49 8b 8d 58 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000a5 48 03 c8 add rcx, rax
+ 000a8 48 8b c1 mov rax, rcx
+ 000ab c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 000af c5 fc 11 85 e0
+ 00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
+
+; 116 : b01 = _mm256_permutevar_ps(b01, b01_shift);
+
+ 000b7 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 000bf c4 e2 7d 0c 05
+ 00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b01_shift@?1??float_kernel_fma_avx_fma@@9@9
+ 000c8 c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
+
+; 117 : b23 = _mm256_permutevar_ps(b23, b23_shift);
+
+ 000d0 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 000d8 c4 e2 7d 0c 05
+ 00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b23_shift@?1??float_kernel_fma_avx_fma@@9@9
+ 000e1 c5 fc 11 85 e0
+ 00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
+
+; 118 :
+; 119 : register __m256 c01 = _mm256_load_ps((float *)&ans->f32_y[0]);
+
+ 000e9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000ee 48 6b c0 00 imul rax, rax, 0
+ 000f2 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000f9 48 03 c8 add rcx, rax
+ 000fc 48 8b c1 mov rax, rcx
+ 000ff c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 00103 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 120 : register __m256 c23 = _mm256_load_ps((float *)&ans->f32_y[1]);
+
+ 0010b b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00110 48 6b c0 01 imul rax, rax, 1
+ 00114 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0011b 48 03 c8 add rcx, rax
+ 0011e 48 8b c1 mov rax, rcx
+ 00121 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 00125 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 121 :
+; 122 : //group 0
+; 123 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
+
+ 0012d c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 00135 c5 fc c6 85 a0
+ 00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 0
+ 0013e c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 124 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
+
+ 00146 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 0014e c5 fc c6 85 e0
+ 00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 0
+ 00157 c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 125 : c01 = _mm256_fmadd_ps(a01, b01_perm, c01);
+
+ 0015f c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 00164 c5 fc 10 8d a0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
+ 0016c c4 e2 75 a8 85
+ 20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 00175 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 126 : c23 = _mm256_fmadd_ps(a23, b23_perm, c23);
+
+ 0017d c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
+ 00182 c5 fc 10 8d e0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
+ 0018a c4 e2 75 a8 85
+ 60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 00193 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 127 :
+; 128 : //group 2
+; 129 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
+
+ 0019b c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 001a3 c5 fc c6 85 a0
+ 00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 170 ; 000000aaH
+ 001ac c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 130 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
+
+ 001b4 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 001bc c5 fc c6 85 e0
+ 00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 170 ; 000000aaH
+ 001c5 c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 131 : c01 = _mm256_fmadd_ps(a23, b01_perm, c01);
+
+ 001cd c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
+ 001d2 c5 fc 10 8d a0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
+ 001da c4 e2 75 a8 85
+ 20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 001e3 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 132 : c23 = _mm256_fmadd_ps(a01, b23_perm, c23);
+
+ 001eb c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 001f0 c5 fc 10 8d e0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
+ 001f8 c4 e2 75 a8 85
+ 60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 00201 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 133 :
+; 134 : //group 1
+; 135 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
+
+ 00209 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 0020e c4 e3 7d 06 45
+ 60 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 33 ; 00000021H
+ 00215 c5 fc 11 85 20
+ 02 00 00 vmovups YMMWORD PTR a12$[rbp], ymm0
+
+; 136 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
+
+ 0021d c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 00222 c4 e3 7d 06 45
+ 60 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 48 ; 00000030H
+ 00229 c5 fc 11 85 60
+ 02 00 00 vmovups YMMWORD PTR a30$[rbp], ymm0
+
+; 137 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
+
+ 00231 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 00239 c5 fc c6 85 a0
+ 00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 85 ; 00000055H
+ 00242 c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 138 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
+
+ 0024a c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 00252 c5 fc c6 85 e0
+ 00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 85 ; 00000055H
+ 0025b c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 139 : c01 = _mm256_fmadd_ps(a12, b01_perm, c01);
+
+ 00263 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
+ 0026b c5 fc 10 8d a0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
+ 00273 c4 e2 75 a8 85
+ 20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 0027c c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 140 : c23 = _mm256_fmadd_ps(a30, b23_perm, c23);
+
+ 00284 c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
+ 0028c c5 fc 10 8d e0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
+ 00294 c4 e2 75 a8 85
+ 60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 0029d c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 141 :
+; 142 : //group 3
+; 143 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
+
+ 002a5 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 002ad c5 fc c6 85 a0
+ 00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 255 ; 000000ffH
+ 002b6 c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 144 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
+
+ 002be c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 002c6 c5 fc c6 85 e0
+ 00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 255 ; 000000ffH
+ 002cf c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 145 : c01 = _mm256_fmadd_ps(a30, b01_perm, c01);
+
+ 002d7 c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
+ 002df c5 fc 10 8d a0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
+ 002e7 c4 e2 75 a8 85
+ 20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 002f0 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 146 : c23 = _mm256_fmadd_ps(a12, b23_perm, c23);
+
+ 002f8 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
+ 00300 c5 fc 10 8d e0
+ 01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
+ 00308 c4 e2 75 a8 85
+ 60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 00311 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 147 :
+; 148 : ans->f32_y[0] = c01;
+
+ 00319 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0031e 48 6b c0 00 imul rax, rax, 0
+ 00322 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00329 c5 fc 10 85 20
+ 01 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
+ 00331 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
+
+; 149 : ans->f32_y[1] = c23;
+
+ 00336 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0033b 48 6b c0 01 imul rax, rax, 1
+ 0033f 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00346 c5 fc 10 85 60
+ 01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
+ 0034e c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
+
+; 150 : }
+
+ 00353 49 8d a5 30 04
+ 00 00 lea rsp, QWORD PTR [r13+1072]
+ 0035a 5f pop rdi
+ 0035b 5d pop rbp
+ 0035c 41 5d pop r13
+ 0035e c3 ret 0
+float_kernel_fma_avx_fma ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT float_kernel_fma_avx
+_TEXT SEGMENT
+a01$ = 32
+a23$ = 96
+b01$ = 160
+b23$ = 224
+c01$ = 288
+c23$ = 352
+b01_perm$ = 416
+b23_perm$ = 480
+a12$ = 544
+a30$ = 608
+left$ = 1104
+right$ = 1112
+ans$ = 1120
+float_kernel_fma_avx PROC ; COMDAT
+
+; 61 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 50 04
+ 00 00 sub rsp, 1104 ; 00000450H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 62 : static const __m256i b01_shift = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
+; 63 : static const __m256i b23_shift = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
+; 64 :
+; 65 : register __m256 a01 = _mm256_load_ps((float *)&left->f32_y[0]);
+
+ 00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e 49 8b 8d 50 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00045 48 03 c8 add rcx, rax
+ 00048 48 8b c1 mov rax, rcx
+ 0004b c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 0004f c5 fc 11 45 20 vmovups YMMWORD PTR a01$[rbp], ymm0
+
+; 66 : register __m256 a23 = _mm256_load_ps((float *)&left->f32_y[1]);
+
+ 00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00059 48 6b c0 01 imul rax, rax, 1
+ 0005d 49 8b 8d 50 04
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00064 48 03 c8 add rcx, rax
+ 00067 48 8b c1 mov rax, rcx
+ 0006a c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 0006e c5 fc 11 45 60 vmovups YMMWORD PTR a23$[rbp], ymm0
+
+; 67 :
+; 68 : register __m256 b01 = _mm256_load_ps((float *)&right->f32_y[0]);
+
+ 00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00078 48 6b c0 00 imul rax, rax, 0
+ 0007c 49 8b 8d 58 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00083 48 03 c8 add rcx, rax
+ 00086 48 8b c1 mov rax, rcx
+ 00089 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 0008d c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
+
+; 69 : register __m256 b23 = _mm256_load_ps((float *)&right->f32_y[1]);
+
+ 00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0009a 48 6b c0 01 imul rax, rax, 1
+ 0009e 49 8b 8d 58 04
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 000a5 48 03 c8 add rcx, rax
+ 000a8 48 8b c1 mov rax, rcx
+ 000ab c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 000af c5 fc 11 85 e0
+ 00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
+
+; 70 : b01 = _mm256_permutevar_ps(b01, b01_shift);
+
+ 000b7 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 000bf c4 e2 7d 0c 05
+ 00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b01_shift@?1??float_kernel_fma_avx@@9@9
+ 000c8 c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
+
+; 71 : b23 = _mm256_permutevar_ps(b23, b23_shift);
+
+ 000d0 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 000d8 c4 e2 7d 0c 05
+ 00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b23_shift@?1??float_kernel_fma_avx@@9@9
+ 000e1 c5 fc 11 85 e0
+ 00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
+
+; 72 :
+; 73 : register __m256 c01 = _mm256_load_ps((float *)&ans->f32_y[0]);
+
+ 000e9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000ee 48 6b c0 00 imul rax, rax, 0
+ 000f2 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000f9 48 03 c8 add rcx, rax
+ 000fc 48 8b c1 mov rax, rcx
+ 000ff c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 00103 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 74 : register __m256 c23 = _mm256_load_ps((float *)&ans->f32_y[1]);
+
+ 0010b b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00110 48 6b c0 01 imul rax, rax, 1
+ 00114 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0011b 48 03 c8 add rcx, rax
+ 0011e 48 8b c1 mov rax, rcx
+ 00121 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 00125 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 75 :
+; 76 : //group 0
+; 77 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
+
+ 0012d c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 00135 c5 fc c6 85 a0
+ 00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 0
+ 0013e c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 78 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
+
+ 00146 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 0014e c5 fc c6 85 e0
+ 00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 0
+ 00157 c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 79 : c01 = _mm256_add_ps(_mm256_mul_ps(a01, b01_perm), c01);
+
+ 0015f c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 00164 c5 fc 59 85 a0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
+ 0016c c5 fc 58 85 20
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 00174 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 80 : c23 = _mm256_add_ps(_mm256_mul_ps(a23, b23_perm), c23);
+
+ 0017c c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
+ 00181 c5 fc 59 85 e0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
+ 00189 c5 fc 58 85 60
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 00191 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 81 :
+; 82 : //group 2
+; 83 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
+
+ 00199 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 001a1 c5 fc c6 85 a0
+ 00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 170 ; 000000aaH
+ 001aa c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 84 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
+
+ 001b2 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 001ba c5 fc c6 85 e0
+ 00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 170 ; 000000aaH
+ 001c3 c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 85 : c01 = _mm256_add_ps(_mm256_mul_ps(a23, b01_perm), c01);
+
+ 001cb c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
+ 001d0 c5 fc 59 85 a0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
+ 001d8 c5 fc 58 85 20
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 001e0 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 86 : c23 = _mm256_add_ps(_mm256_mul_ps(a01, b23_perm), c23);
+
+ 001e8 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 001ed c5 fc 59 85 e0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
+ 001f5 c5 fc 58 85 60
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 001fd c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 87 :
+; 88 : //group 1
+; 89 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
+
+ 00205 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 0020a c4 e3 7d 06 45
+ 60 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 33 ; 00000021H
+ 00211 c5 fc 11 85 20
+ 02 00 00 vmovups YMMWORD PTR a12$[rbp], ymm0
+
+; 90 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
+
+ 00219 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
+ 0021e c4 e3 7d 06 45
+ 60 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 48 ; 00000030H
+ 00225 c5 fc 11 85 60
+ 02 00 00 vmovups YMMWORD PTR a30$[rbp], ymm0
+
+; 91 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
+
+ 0022d c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 00235 c5 fc c6 85 a0
+ 00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 85 ; 00000055H
+ 0023e c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 92 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
+
+ 00246 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 0024e c5 fc c6 85 e0
+ 00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 85 ; 00000055H
+ 00257 c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 93 : c01 = _mm256_add_ps(_mm256_mul_ps(a12, b01_perm), c01);
+
+ 0025f c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
+ 00267 c5 fc 59 85 a0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
+ 0026f c5 fc 58 85 20
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 00277 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 94 : c23 = _mm256_add_ps(_mm256_mul_ps(a30, b23_perm), c23);
+
+ 0027f c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
+ 00287 c5 fc 59 85 e0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
+ 0028f c5 fc 58 85 60
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 00297 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 95 :
+; 96 : //group 3
+; 97 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
+
+ 0029f c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
+ 002a7 c5 fc c6 85 a0
+ 00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 255 ; 000000ffH
+ 002b0 c5 fc 11 85 a0
+ 01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
+
+; 98 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
+
+ 002b8 c5 fc 10 85 e0
+ 00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
+ 002c0 c5 fc c6 85 e0
+ 00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 255 ; 000000ffH
+ 002c9 c5 fc 11 85 e0
+ 01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
+
+; 99 : c01 = _mm256_add_ps(_mm256_mul_ps(a30, b01_perm), c01);
+
+ 002d1 c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
+ 002d9 c5 fc 59 85 a0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
+ 002e1 c5 fc 58 85 20
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 002e9 c5 fc 11 85 20
+ 01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 100 : c23 = _mm256_add_ps(_mm256_mul_ps(a12, b23_perm), c23);
+
+ 002f1 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
+ 002f9 c5 fc 59 85 e0
+ 01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
+ 00301 c5 fc 58 85 60
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 00309 c5 fc 11 85 60
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 101 :
+; 102 : ans->f32_y[0] = c01;
+
+ 00311 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00316 48 6b c0 00 imul rax, rax, 0
+ 0031a 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00321 c5 fc 10 85 20
+ 01 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
+ 00329 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
+
+; 103 : ans->f32_y[1] = c23;
+
+ 0032e b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00333 48 6b c0 01 imul rax, rax, 1
+ 00337 49 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0033e c5 fc 10 85 60
+ 01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
+ 00346 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
+
+; 104 : }
+
+ 0034b 49 8d a5 30 04
+ 00 00 lea rsp, QWORD PTR [r13+1072]
+ 00352 5f pop rdi
+ 00353 5d pop rbp
+ 00354 41 5d pop r13
+ 00356 c3 ret 0
+float_kernel_fma_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
+; COMDAT float_kernel_fma_sse
+_TEXT SEGMENT
+a0$ = 16
+a1$ = 64
+a2$ = 112
+a3$ = 160
+c0$ = 208
+c1$ = 256
+c2$ = 304
+c3$ = 352
+bcol$ = 400
+left$ = 656
+right$ = 664
+ans$ = 672
+float_kernel_fma_sse PROC ; COMDAT
+
+; 13 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 98 02
+ 00 00 sub rsp, 664 ; 00000298H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 14 : const __m128 a0 = _mm_load_ps((float *)&left->f32_x[0]);
+
+ 0002a b8 10 00 00 00 mov eax, 16
+ 0002f 48 6b c0 00 imul rax, rax, 0
+ 00033 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 0003a 48 03 c8 add rcx, rax
+ 0003d 48 8b c1 mov rax, rcx
+ 00040 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00043 0f 29 45 10 movaps XMMWORD PTR a0$[rbp], xmm0
+
+; 15 : const __m128 a1 = _mm_load_ps((float *)&left->f32_x[1]);
+
+ 00047 b8 10 00 00 00 mov eax, 16
+ 0004c 48 6b c0 01 imul rax, rax, 1
+ 00050 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 00057 48 03 c8 add rcx, rax
+ 0005a 48 8b c1 mov rax, rcx
+ 0005d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00060 0f 29 45 40 movaps XMMWORD PTR a1$[rbp], xmm0
+
+; 16 : const __m128 a2 = _mm_load_ps((float *)&left->f32_x[2]);
+
+ 00064 b8 10 00 00 00 mov eax, 16
+ 00069 48 6b c0 02 imul rax, rax, 2
+ 0006d 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 00074 48 03 c8 add rcx, rax
+ 00077 48 8b c1 mov rax, rcx
+ 0007a 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0007d 0f 29 45 70 movaps XMMWORD PTR a2$[rbp], xmm0
+
+; 17 : const __m128 a3 = _mm_load_ps((float *)&left->f32_x[3]);
+
+ 00081 b8 10 00 00 00 mov eax, 16
+ 00086 48 6b c0 03 imul rax, rax, 3
+ 0008a 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 00091 48 03 c8 add rcx, rax
+ 00094 48 8b c1 mov rax, rcx
+ 00097 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0009a 0f 29 85 a0 00
+ 00 00 movaps XMMWORD PTR a3$[rbp], xmm0
+
+; 18 :
+; 19 : __m128 c0 = _mm_load_ps((float *)&ans->f32_x[0]);
+
+ 000a1 b8 10 00 00 00 mov eax, 16
+ 000a6 48 6b c0 00 imul rax, rax, 0
+ 000aa 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000b1 48 03 c8 add rcx, rax
+ 000b4 48 8b c1 mov rax, rcx
+ 000b7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000ba 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 20 : __m128 c1 = _mm_load_ps((float *)&ans->f32_x[1]);
+
+ 000c1 b8 10 00 00 00 mov eax, 16
+ 000c6 48 6b c0 01 imul rax, rax, 1
+ 000ca 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000d1 48 03 c8 add rcx, rax
+ 000d4 48 8b c1 mov rax, rcx
+ 000d7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000da 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 21 : __m128 c2 = _mm_load_ps((float *)&ans->f32_x[2]);
+
+ 000e1 b8 10 00 00 00 mov eax, 16
+ 000e6 48 6b c0 02 imul rax, rax, 2
+ 000ea 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000f1 48 03 c8 add rcx, rax
+ 000f4 48 8b c1 mov rax, rcx
+ 000f7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000fa 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 22 : __m128 c3 = _mm_load_ps((float *)&ans->f32_x[3]);
+
+ 00101 b8 10 00 00 00 mov eax, 16
+ 00106 48 6b c0 03 imul rax, rax, 3
+ 0010a 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00111 48 03 c8 add rcx, rax
+ 00114 48 8b c1 mov rax, rcx
+ 00117 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0011a 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 23 :
+; 24 : __m128 bcol;
+; 25 :
+; 26 : /* Column 0 */
+; 27 : bcol = _mm_load_ps((float *)&right->f32_x[0]);
+
+ 00121 b8 10 00 00 00 mov eax, 16
+ 00126 48 6b c0 00 imul rax, rax, 0
+ 0012a 48 8b 8d 98 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00131 48 03 c8 add rcx, rax
+ 00134 48 8b c1 mov rax, rcx
+ 00137 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0013a 0f 29 85 90 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 28 : c0 = _mm_add_ps(c0, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 00141 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00148 0f c6 85 90 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 00150 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
+ 00154 0f 59 c8 mulps xmm1, xmm0
+ 00157 0f 28 c1 movaps xmm0, xmm1
+ 0015a 0f 28 8d d0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 00161 0f 58 c8 addps xmm1, xmm0
+ 00164 0f 28 c1 movaps xmm0, xmm1
+ 00167 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 29 : c0 = _mm_add_ps(c0, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 0016e 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00175 0f c6 85 90 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 0017d 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
+ 00181 0f 59 c8 mulps xmm1, xmm0
+ 00184 0f 28 c1 movaps xmm0, xmm1
+ 00187 0f 28 8d d0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 0018e 0f 58 c8 addps xmm1, xmm0
+ 00191 0f 28 c1 movaps xmm0, xmm1
+ 00194 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 30 : c0 = _mm_add_ps(c0, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 0019b 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 001a2 0f c6 85 90 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 001aa 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
+ 001ae 0f 59 c8 mulps xmm1, xmm0
+ 001b1 0f 28 c1 movaps xmm0, xmm1
+ 001b4 0f 28 8d d0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 001bb 0f 58 c8 addps xmm1, xmm0
+ 001be 0f 28 c1 movaps xmm0, xmm1
+ 001c1 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 31 : c0 = _mm_add_ps(c0, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 001c8 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 001cf 0f c6 85 90 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 001d7 0f 28 8d a0 00
+ 00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
+ 001de 0f 59 c8 mulps xmm1, xmm0
+ 001e1 0f 28 c1 movaps xmm0, xmm1
+ 001e4 0f 28 8d d0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 001eb 0f 58 c8 addps xmm1, xmm0
+ 001ee 0f 28 c1 movaps xmm0, xmm1
+ 001f1 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 32 :
+; 33 : /* Column 1 */
+; 34 : bcol = _mm_load_ps((float *)&right->f32_x[1]);
+
+ 001f8 b8 10 00 00 00 mov eax, 16
+ 001fd 48 6b c0 01 imul rax, rax, 1
+ 00201 48 8b 8d 98 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00208 48 03 c8 add rcx, rax
+ 0020b 48 8b c1 mov rax, rcx
+ 0020e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00211 0f 29 85 90 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 35 : c1 = _mm_add_ps(c1, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 00218 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 0021f 0f c6 85 90 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 00227 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
+ 0022b 0f 59 c8 mulps xmm1, xmm0
+ 0022e 0f 28 c1 movaps xmm0, xmm1
+ 00231 0f 28 8d 00 01
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 00238 0f 58 c8 addps xmm1, xmm0
+ 0023b 0f 28 c1 movaps xmm0, xmm1
+ 0023e 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 36 : c1 = _mm_add_ps(c1, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 00245 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 0024c 0f c6 85 90 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 00254 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
+ 00258 0f 59 c8 mulps xmm1, xmm0
+ 0025b 0f 28 c1 movaps xmm0, xmm1
+ 0025e 0f 28 8d 00 01
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 00265 0f 58 c8 addps xmm1, xmm0
+ 00268 0f 28 c1 movaps xmm0, xmm1
+ 0026b 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 37 : c1 = _mm_add_ps(c1, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 00272 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00279 0f c6 85 90 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 00281 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
+ 00285 0f 59 c8 mulps xmm1, xmm0
+ 00288 0f 28 c1 movaps xmm0, xmm1
+ 0028b 0f 28 8d 00 01
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 00292 0f 58 c8 addps xmm1, xmm0
+ 00295 0f 28 c1 movaps xmm0, xmm1
+ 00298 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 38 : c1 = _mm_add_ps(c1, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 0029f 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 002a6 0f c6 85 90 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 002ae 0f 28 8d a0 00
+ 00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
+ 002b5 0f 59 c8 mulps xmm1, xmm0
+ 002b8 0f 28 c1 movaps xmm0, xmm1
+ 002bb 0f 28 8d 00 01
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 002c2 0f 58 c8 addps xmm1, xmm0
+ 002c5 0f 28 c1 movaps xmm0, xmm1
+ 002c8 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 39 :
+; 40 : /* Column 2 */
+; 41 : bcol = _mm_load_ps((float *)&right->f32_x[2]);
+
+ 002cf b8 10 00 00 00 mov eax, 16
+ 002d4 48 6b c0 02 imul rax, rax, 2
+ 002d8 48 8b 8d 98 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 002df 48 03 c8 add rcx, rax
+ 002e2 48 8b c1 mov rax, rcx
+ 002e5 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 002e8 0f 29 85 90 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 42 : c2 = _mm_add_ps(c2, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 002ef 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 002f6 0f c6 85 90 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 002fe 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
+ 00302 0f 59 c8 mulps xmm1, xmm0
+ 00305 0f 28 c1 movaps xmm0, xmm1
+ 00308 0f 28 8d 30 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 0030f 0f 58 c8 addps xmm1, xmm0
+ 00312 0f 28 c1 movaps xmm0, xmm1
+ 00315 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 43 : c2 = _mm_add_ps(c2, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 0031c 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00323 0f c6 85 90 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 0032b 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
+ 0032f 0f 59 c8 mulps xmm1, xmm0
+ 00332 0f 28 c1 movaps xmm0, xmm1
+ 00335 0f 28 8d 30 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 0033c 0f 58 c8 addps xmm1, xmm0
+ 0033f 0f 28 c1 movaps xmm0, xmm1
+ 00342 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 44 : c2 = _mm_add_ps(c2, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 00349 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00350 0f c6 85 90 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 00358 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
+ 0035c 0f 59 c8 mulps xmm1, xmm0
+ 0035f 0f 28 c1 movaps xmm0, xmm1
+ 00362 0f 28 8d 30 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 00369 0f 58 c8 addps xmm1, xmm0
+ 0036c 0f 28 c1 movaps xmm0, xmm1
+ 0036f 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 45 : c2 = _mm_add_ps(c2, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 00376 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 0037d 0f c6 85 90 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 00385 0f 28 8d a0 00
+ 00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
+ 0038c 0f 59 c8 mulps xmm1, xmm0
+ 0038f 0f 28 c1 movaps xmm0, xmm1
+ 00392 0f 28 8d 30 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 00399 0f 58 c8 addps xmm1, xmm0
+ 0039c 0f 28 c1 movaps xmm0, xmm1
+ 0039f 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 46 :
+; 47 : /* Column 3 */
+; 48 : bcol = _mm_load_ps((float *)&right->f32_x[3]);
+
+ 003a6 b8 10 00 00 00 mov eax, 16
+ 003ab 48 6b c0 03 imul rax, rax, 3
+ 003af 48 8b 8d 98 02
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 003b6 48 03 c8 add rcx, rax
+ 003b9 48 8b c1 mov rax, rcx
+ 003bc 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 003bf 0f 29 85 90 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 49 : c3 = _mm_add_ps(c3, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 003c6 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 003cd 0f c6 85 90 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 003d5 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
+ 003d9 0f 59 c8 mulps xmm1, xmm0
+ 003dc 0f 28 c1 movaps xmm0, xmm1
+ 003df 0f 28 8d 60 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 003e6 0f 58 c8 addps xmm1, xmm0
+ 003e9 0f 28 c1 movaps xmm0, xmm1
+ 003ec 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 50 : c3 = _mm_add_ps(c3, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 003f3 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 003fa 0f c6 85 90 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 00402 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
+ 00406 0f 59 c8 mulps xmm1, xmm0
+ 00409 0f 28 c1 movaps xmm0, xmm1
+ 0040c 0f 28 8d 60 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 00413 0f 58 c8 addps xmm1, xmm0
+ 00416 0f 28 c1 movaps xmm0, xmm1
+ 00419 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 51 : c3 = _mm_add_ps(c3, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 00420 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00427 0f c6 85 90 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 0042f 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
+ 00433 0f 59 c8 mulps xmm1, xmm0
+ 00436 0f 28 c1 movaps xmm0, xmm1
+ 00439 0f 28 8d 60 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 00440 0f 58 c8 addps xmm1, xmm0
+ 00443 0f 28 c1 movaps xmm0, xmm1
+ 00446 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 52 : c3 = _mm_add_ps(c3, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 0044d 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00454 0f c6 85 90 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 0045c 0f 28 8d a0 00
+ 00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
+ 00463 0f 59 c8 mulps xmm1, xmm0
+ 00466 0f 28 c1 movaps xmm0, xmm1
+ 00469 0f 28 8d 60 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 00470 0f 58 c8 addps xmm1, xmm0
+ 00473 0f 28 c1 movaps xmm0, xmm1
+ 00476 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 53 :
+; 54 : _mm_store_ps((float *)&ans->f32_x[0], c0);
+
+ 0047d b8 10 00 00 00 mov eax, 16
+ 00482 48 6b c0 00 imul rax, rax, 0
+ 00486 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0048d 48 03 c8 add rcx, rax
+ 00490 48 8b c1 mov rax, rcx
+ 00493 0f 28 85 d0 00
+ 00 00 movaps xmm0, XMMWORD PTR c0$[rbp]
+ 0049a 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 55 : _mm_store_ps((float *)&ans->f32_x[1], c1);
+
+ 0049d b8 10 00 00 00 mov eax, 16
+ 004a2 48 6b c0 01 imul rax, rax, 1
+ 004a6 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 004ad 48 03 c8 add rcx, rax
+ 004b0 48 8b c1 mov rax, rcx
+ 004b3 0f 28 85 00 01
+ 00 00 movaps xmm0, XMMWORD PTR c1$[rbp]
+ 004ba 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 56 : _mm_store_ps((float *)&ans->f32_x[2], c2);
+
+ 004bd b8 10 00 00 00 mov eax, 16
+ 004c2 48 6b c0 02 imul rax, rax, 2
+ 004c6 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 004cd 48 03 c8 add rcx, rax
+ 004d0 48 8b c1 mov rax, rcx
+ 004d3 0f 28 85 30 01
+ 00 00 movaps xmm0, XMMWORD PTR c2$[rbp]
+ 004da 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 57 : _mm_store_ps((float *)&ans->f32_x[3], c3);
+
+ 004dd b8 10 00 00 00 mov eax, 16
+ 004e2 48 6b c0 03 imul rax, rax, 3
+ 004e6 48 8b 8d a0 02
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 004ed 48 03 c8 add rcx, rax
+ 004f0 48 8b c1 mov rax, rcx
+ 004f3 0f 28 85 60 01
+ 00 00 movaps xmm0, XMMWORD PTR c3$[rbp]
+ 004fa 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 58 : }
+
+ 004fd 48 8d a5 78 02
+ 00 00 lea rsp, QWORD PTR [rbp+632]
+ 00504 5f pop rdi
+ 00505 5d pop rbp
+ 00506 c3 ret 0
+float_kernel_fma_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/m.fma.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/m.fma.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..6e3820f5
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.fma.x86.nativecodeanalysis.sarif
@@ -0,0 +1,131 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/m.fma.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "d5d32866676ab9055c1a430b3749e18f5affc21d1dc394e2b5a4897f0d63d02e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrincontext.x86.h"
+ },
+ "hashes": {
+ "sha-256": "bbc00ee7320b30ca1234dc7908e4695ff6d5bb2ba3224e4ffaed345010ba8f48"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.fma.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/m.fma.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.fma.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.cod b/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.cod
new file mode 100644
index 00000000..b3410461
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.cod
@@ -0,0 +1,4990 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__CE29950A_sn_intrincontext@x86@h DB 01H
+__31D20E98_m@fma_tile@x86@c DB 01H
+msvcjmc ENDS
+CONST SEGMENT
+?b01_shift_source@?1??float_kernel_tile_fma_avx@@9@9 DD 00H ; `float_kernel_tile_fma_avx'::`2'::b01_shift_source
+ DD 01H
+ DD 02H
+ DD 03H
+ DD 05H
+ DD 06H
+ DD 07H
+ DD 04H
+?b23_shift_source@?1??float_kernel_tile_fma_avx@@9@9 DD 02H ; `float_kernel_tile_fma_avx'::`2'::b23_shift_source
+ DD 03H
+ DD 00H
+ DD 01H
+ DD 07H
+ DD 04H
+ DD 05H
+ DD 06H
+?b01_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9 DD 00H ; `float_kernel_tile_fma_avx_fma'::`2'::b01_shift_source
+ DD 01H
+ DD 02H
+ DD 03H
+ DD 05H
+ DD 06H
+ DD 07H
+ DD 04H
+?b23_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9 DD 02H ; `float_kernel_tile_fma_avx_fma'::`2'::b23_shift_source
+ DD 03H
+ DD 00H
+ DD 01H
+ DD 07H
+ DD 04H
+ DD 05H
+ DD 06H
+?b_shift_source@?1??float_kernel_tile_fma_512@@9@9 DD 00H ; `float_kernel_tile_fma_512'::`2'::b_shift_source
+ DD 01H
+ DD 02H
+ DD 03H
+ DD 05H
+ DD 06H
+ DD 07H
+ DD 04H
+ DD 0aH
+ DD 0bH
+ DD 08H
+ DD 09H
+ DD 0fH
+ DD 0cH
+ DD 0dH
+ DD 0eH
+?b01_shift_source@?1??double_kernel_tile_fma_512@@9@9 DQ 0000000000000000H ; `double_kernel_tile_fma_512'::`2'::b01_shift_source
+ DQ 0000000000000001H
+ DQ 0000000000000002H
+ DQ 0000000000000003H
+ DQ 0000000000000005H
+ DQ 0000000000000006H
+ DQ 0000000000000007H
+ DQ 0000000000000004H
+?b23_shift_source@?1??double_kernel_tile_fma_512@@9@9 DQ 0000000000000002H ; `double_kernel_tile_fma_512'::`2'::b23_shift_source
+ DQ 0000000000000003H
+ DQ 0000000000000000H
+ DQ 0000000000000001H
+ DQ 0000000000000007H
+ DQ 0000000000000004H
+ DQ 0000000000000005H
+ DQ 0000000000000006H
+CONST ENDS
+PUBLIC float_kernel_tile_fma_sse
+PUBLIC float_kernel_tile_fma_avx
+PUBLIC float_kernel_tile_fma_avx_fma
+PUBLIC float_kernel_tile_fma_512
+PUBLIC double_kernel_tile_fma_sse
+PUBLIC double_kernel_tile_fma_avx
+PUBLIC double_kernel_tile_fma_avx_fma
+PUBLIC double_kernel_tile_fma_512
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_tile_fma_sse DD imagerel $LN6
+ DD imagerel $LN6+1596
+ DD imagerel $unwind$float_kernel_tile_fma_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_tile_fma_avx DD imagerel $LN6
+ DD imagerel $LN6+1188
+ DD imagerel $unwind$float_kernel_tile_fma_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_tile_fma_avx_fma DD imagerel $LN6
+ DD imagerel $LN6+1199
+ DD imagerel $unwind$float_kernel_tile_fma_avx_fma
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_tile_fma_512 DD imagerel $LN6
+ DD imagerel $LN6+715
+ DD imagerel $unwind$float_kernel_tile_fma_512
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_tile_fma_sse DD imagerel $LN18
+ DD imagerel $LN18+3061
+ DD imagerel $unwind$double_kernel_tile_fma_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_tile_fma_avx DD imagerel $LN6
+ DD imagerel $LN6+1554
+ DD imagerel $unwind$double_kernel_tile_fma_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_tile_fma_avx_fma DD imagerel $LN6
+ DD imagerel $LN6+1506
+ DD imagerel $unwind$double_kernel_tile_fma_avx_fma
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$double_kernel_tile_fma_512 DD imagerel $LN6
+ DD imagerel $LN6+1135
+ DD imagerel $unwind$double_kernel_tile_fma_512
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_tile_fma_512 DD 02d062d01H
+ DD 011f2324H
+ DD 070180146H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_tile_fma_avx_fma DD 02d062d01H
+ DD 011f2324H
+ DD 0701800a2H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_tile_fma_avx DD 02d062d01H
+ DD 011f2324H
+ DD 0701800a2H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$double_kernel_tile_fma_sse DD 025052201H
+ DD 011d2322H
+ DD 070160129H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_tile_fma_512 DD 02d062d01H
+ DD 011f2324H
+ DD 0701800b6H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_tile_fma_avx_fma DD 02d062d01H
+ DD 011f2324H
+ DD 0701800d2H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_tile_fma_avx DD 02d062d01H
+ DD 011f2324H
+ DD 0701800d2H
+ DD 0d0165017H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_tile_fma_sse DD 025052201H
+ DD 011d2322H
+ DD 07016008bH
+ DD 05015H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT double_kernel_tile_fma_512
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+ans_cur$ = 136
+c01$ = 192
+c23$ = 320
+b01_shift$ = 448
+b23_shift$ = 576
+k$1 = 664
+left_cur$2 = 696
+right_cur$3 = 728
+a01$4 = 768
+a23$5 = 896
+b01$6 = 1024
+b23$7 = 1152
+b01_perm$8 = 1280
+b23_perm$9 = 1408
+a12$10 = 1536
+a30$11 = 1664
+left$ = 2608
+right$ = 2616
+ans$ = 2624
+enumeration$ = 2632
+double_kernel_tile_fma_512 PROC ; COMDAT
+
+; 463 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 30 0a
+ 00 00 sub rsp, 2608 ; 00000a30H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 464 : static const __m512i b01_shift_source = { .m512i_i64 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
+; 465 : static const __m512i b23_shift_source = { .m512i_i64 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
+; 466 :
+; 467 : int i = enumeration->m128_i32[0];
+
+ 0003a b8 04 00 00 00 mov eax, 4
+ 0003f 48 6b c0 00 imul rax, rax, 0
+ 00043 49 8b 8d 48 0a
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0004d 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 468 : int j = enumeration->m128_i32[1];
+
+ 00050 b8 04 00 00 00 mov eax, 4
+ 00055 48 6b c0 01 imul rax, rax, 1
+ 00059 49 8b 8d 48 0a
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00063 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 469 : int commonK = enumeration->m128_i32[2];
+
+ 00066 b8 04 00 00 00 mov eax, 4
+ 0006b 48 6b c0 02 imul rax, rax, 2
+ 0006f 49 8b 8d 48 0a
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 470 : int ansHeight = enumeration->m128_i32[3];
+
+ 0007c b8 04 00 00 00 mov eax, 4
+ 00081 48 6b c0 03 imul rax, rax, 3
+ 00085 49 8b 8d 48 0a
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 471 :
+; 472 : MAT_KERNEL(double)
+; 473 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
+
+ 00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00099 03 45 24 add eax, DWORD PTR j$[rbp]
+ 0009c 48 98 cdqe
+ 0009e 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 000a5 49 8b 8d 40 0a
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000ac 48 03 c8 add rcx, rax
+ 000af 48 8b c1 mov rax, rcx
+ 000b2 48 89 85 88 00
+ 00 00 mov QWORD PTR ans_cur$[rbp], rax
+
+; 474 :
+; 475 : register __m512d c01 = _mm512_load_pd((double *)&ans->f64_z[0]);
+
+ 000b9 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 000be 48 6b c0 00 imul rax, rax, 0
+ 000c2 49 8b 8d 40 0a
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000c9 48 03 c8 add rcx, rax
+ 000cc 48 8b c1 mov rax, rcx
+ 000cf 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 000d5 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 476 : register __m512d c23 = _mm512_load_pd((double *)&ans->f64_z[1]);
+
+ 000dc b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 000e1 48 6b c0 01 imul rax, rax, 1
+ 000e5 49 8b 8d 40 0a
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000ec 48 03 c8 add rcx, rax
+ 000ef 48 8b c1 mov rax, rcx
+ 000f2 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 000f8 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 477 :
+; 478 : register __m512i b01_shift = _mm512_load_si512(&b01_shift_source);
+
+ 000ff 62 f1 7d 48 6f
+ 05 00 00 00 00 vmovdqa32 zmm0, ZMMWORD PTR ?b01_shift_source@?1??double_kernel_tile_fma_512@@9@9
+ 00109 62 f1 7e 48 7f
+ 45 07 vmovdqu32 ZMMWORD PTR b01_shift$[rbp], zmm0
+
+; 479 : register __m512i b23_shift = _mm512_load_si512(&b23_shift_source);
+
+ 00110 62 f1 7d 48 6f
+ 05 00 00 00 00 vmovdqa32 zmm0, ZMMWORD PTR ?b23_shift_source@?1??double_kernel_tile_fma_512@@9@9
+ 0011a 62 f1 7e 48 7f
+ 45 09 vmovdqu32 ZMMWORD PTR b23_shift$[rbp], zmm0
+
+; 480 :
+; 481 : for (size_t k = 0; k < commonK; k++) {
+
+ 00121 48 c7 85 98 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 0012c eb 11 jmp SHORT $LN4@double_ker
+$LN2@double_ker:
+ 0012e 48 8b 85 98 02
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 00135 48 ff c0 inc rax
+ 00138 48 89 85 98 02
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@double_ker:
+ 0013f 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 00143 48 39 85 98 02
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 0014a 0f 83 cd 02 00
+ 00 jae $LN3@double_ker
+
+; 482 : MAT_KERNEL(double)
+; 483 : const *left_cur = left + GET_INDEX(ansHeight, i, k), // GetKernelAddressUnsafe
+
+ 00150 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00153 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00157 48 98 cdqe
+ 00159 48 03 85 98 02
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00160 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00167 49 8b 8d 30 0a
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 0016e 48 03 c8 add rcx, rax
+ 00171 48 8b c1 mov rax, rcx
+ 00174 48 89 85 b8 02
+ 00 00 mov QWORD PTR left_cur$2[rbp], rax
+
+; 484 : const *right_cur =
+
+ 0017b 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 0017e 0f af 45 24 imul eax, DWORD PTR j$[rbp]
+ 00182 48 98 cdqe
+ 00184 48 03 85 98 02
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 0018b 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00192 49 8b 8d 38 0a
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00199 48 03 c8 add rcx, rax
+ 0019c 48 8b c1 mov rax, rcx
+ 0019f 48 89 85 d8 02
+ 00 00 mov QWORD PTR right_cur$3[rbp], rax
+
+; 485 : right + GET_INDEX(ansHeight, j, k); // GetKernelAddressUnsafe
+; 486 :
+; 487 : register __m512d a01 = _mm512_load_pd((double *)&left_cur->f64_z[0]);
+
+ 001a6 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 001ab 48 6b c0 00 imul rax, rax, 0
+ 001af 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR left_cur$2[rbp]
+ 001b6 48 03 c8 add rcx, rax
+ 001b9 48 8b c1 mov rax, rcx
+ 001bc 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 001c2 62 f1 fd 48 11
+ 45 0c vmovupd ZMMWORD PTR a01$4[rbp], zmm0
+
+; 488 : register __m512d a23 = _mm512_load_pd((double *)&left_cur->f64_z[1]);
+
+ 001c9 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 001ce 48 6b c0 01 imul rax, rax, 1
+ 001d2 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR left_cur$2[rbp]
+ 001d9 48 03 c8 add rcx, rax
+ 001dc 48 8b c1 mov rax, rcx
+ 001df 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 001e5 62 f1 fd 48 11
+ 45 0e vmovupd ZMMWORD PTR a23$5[rbp], zmm0
+
+; 489 :
+; 490 : register __m512d b01 = _mm512_load_pd((double *)&right_cur->f64_z[0]);
+
+ 001ec b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 001f1 48 6b c0 00 imul rax, rax, 0
+ 001f5 48 8b 8d d8 02
+ 00 00 mov rcx, QWORD PTR right_cur$3[rbp]
+ 001fc 48 03 c8 add rcx, rax
+ 001ff 48 8b c1 mov rax, rcx
+ 00202 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 00208 62 f1 fd 48 11
+ 45 10 vmovupd ZMMWORD PTR b01$6[rbp], zmm0
+
+; 491 : register __m512d b23 = _mm512_load_pd((double *)&right_cur->f64_z[1]);
+
+ 0020f b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 00214 48 6b c0 01 imul rax, rax, 1
+ 00218 48 8b 8d d8 02
+ 00 00 mov rcx, QWORD PTR right_cur$3[rbp]
+ 0021f 48 03 c8 add rcx, rax
+ 00222 48 8b c1 mov rax, rcx
+ 00225 62 f1 fd 48 10
+ 00 vmovupd zmm0, ZMMWORD PTR [rax]
+ 0022b 62 f1 fd 48 11
+ 45 12 vmovupd ZMMWORD PTR b23$7[rbp], zmm0
+
+; 492 : b01 = _mm512_permutexvar_pd(b01_shift, b01);
+
+ 00232 62 f1 7e 48 6f
+ 45 07 vmovdqu32 zmm0, ZMMWORD PTR b01_shift$[rbp]
+ 00239 62 f2 fd 48 16
+ 45 10 vpermpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp]
+ 00240 62 f1 fd 48 11
+ 45 10 vmovupd ZMMWORD PTR b01$6[rbp], zmm0
+
+; 493 : b23 = _mm512_permutexvar_pd(b23_shift, b23);
+
+ 00247 62 f1 7e 48 6f
+ 45 09 vmovdqu32 zmm0, ZMMWORD PTR b23_shift$[rbp]
+ 0024e 62 f2 fd 48 16
+ 45 12 vpermpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp]
+ 00255 62 f1 fd 48 11
+ 45 12 vmovupd ZMMWORD PTR b23$7[rbp], zmm0
+
+; 494 :
+; 495 : //group 0
+; 496 : register __m512d b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(0));
+
+ 0025c 62 f1 fd 48 10
+ 45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
+ 00263 62 f1 fd 48 c6
+ 45 10 00 vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 0
+ 0026b 62 f1 fd 48 11
+ 45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
+
+; 497 : register __m512d b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(0));
+
+ 00272 62 f1 fd 48 10
+ 45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
+ 00279 62 f1 fd 48 c6
+ 45 12 00 vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 0
+ 00281 62 f1 fd 48 11
+ 45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
+
+; 498 : c01 = _mm512_fmadd_pd(a01, b01_perm, c01);
+
+ 00288 62 f1 fd 48 10
+ 45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
+ 0028f 62 f1 fd 48 10
+ 4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
+ 00296 62 f2 f5 48 a8
+ 45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 0029d 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 499 : c23 = _mm512_fmadd_pd(a23, b23_perm, c23);
+
+ 002a4 62 f1 fd 48 10
+ 45 0e vmovupd zmm0, ZMMWORD PTR a23$5[rbp]
+ 002ab 62 f1 fd 48 10
+ 4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
+ 002b2 62 f2 f5 48 a8
+ 45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 002b9 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 500 :
+; 501 : //group 2
+; 502 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(2));
+
+ 002c0 62 f1 fd 48 10
+ 45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
+ 002c7 62 f1 fd 48 c6
+ 45 10 aa vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 170 ; 000000aaH
+ 002cf 62 f1 fd 48 11
+ 45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
+
+; 503 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(2));
+
+ 002d6 62 f1 fd 48 10
+ 45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
+ 002dd 62 f1 fd 48 c6
+ 45 12 aa vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 170 ; 000000aaH
+ 002e5 62 f1 fd 48 11
+ 45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
+
+; 504 : c01 = _mm512_fmadd_pd(a23, b01_perm, c01);
+
+ 002ec 62 f1 fd 48 10
+ 45 0e vmovupd zmm0, ZMMWORD PTR a23$5[rbp]
+ 002f3 62 f1 fd 48 10
+ 4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
+ 002fa 62 f2 f5 48 a8
+ 45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 00301 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 505 : c23 = _mm512_fmadd_pd(a01, b23_perm, c23);
+
+ 00308 62 f1 fd 48 10
+ 45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
+ 0030f 62 f1 fd 48 10
+ 4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
+ 00316 62 f2 f5 48 a8
+ 45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 0031d 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 506 :
+; 507 : //group 1
+; 508 : register __m512d a12 = _mm512_shuffle_f64x2(a01, a23, 0x21);
+
+ 00324 62 f1 fd 48 10
+ 45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
+ 0032b 62 f3 fd 48 23
+ 45 0e 21 vshuff64x2 zmm0, zmm0, ZMMWORD PTR a23$5[rbp], 33 ; 00000021H
+ 00333 62 f1 fd 48 11
+ 45 18 vmovupd ZMMWORD PTR a12$10[rbp], zmm0
+
+; 509 : register __m512d a30 = _mm512_shuffle_f64x2(a01, a23, 0x30);
+
+ 0033a 62 f1 fd 48 10
+ 45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
+ 00341 62 f3 fd 48 23
+ 45 0e 30 vshuff64x2 zmm0, zmm0, ZMMWORD PTR a23$5[rbp], 48 ; 00000030H
+ 00349 62 f1 fd 48 11
+ 45 1a vmovupd ZMMWORD PTR a30$11[rbp], zmm0
+
+; 510 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(1));
+
+ 00350 62 f1 fd 48 10
+ 45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
+ 00357 62 f1 fd 48 c6
+ 45 10 55 vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 85 ; 00000055H
+ 0035f 62 f1 fd 48 11
+ 45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
+
+; 511 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(1));
+
+ 00366 62 f1 fd 48 10
+ 45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
+ 0036d 62 f1 fd 48 c6
+ 45 12 55 vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 85 ; 00000055H
+ 00375 62 f1 fd 48 11
+ 45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
+
+; 512 : c01 = _mm512_fmadd_pd(a12, b01_perm, c01);
+
+ 0037c 62 f1 fd 48 10
+ 45 18 vmovupd zmm0, ZMMWORD PTR a12$10[rbp]
+ 00383 62 f1 fd 48 10
+ 4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
+ 0038a 62 f2 f5 48 a8
+ 45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 00391 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 513 : c23 = _mm512_fmadd_pd(a30, b23_perm, c23);
+
+ 00398 62 f1 fd 48 10
+ 45 1a vmovupd zmm0, ZMMWORD PTR a30$11[rbp]
+ 0039f 62 f1 fd 48 10
+ 4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
+ 003a6 62 f2 f5 48 a8
+ 45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 003ad 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 514 :
+; 515 : //group 3
+; 516 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(3));
+
+ 003b4 62 f1 fd 48 10
+ 45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
+ 003bb 62 f1 fd 48 c6
+ 45 10 ff vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 255 ; 000000ffH
+ 003c3 62 f1 fd 48 11
+ 45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
+
+; 517 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(3));
+
+ 003ca 62 f1 fd 48 10
+ 45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
+ 003d1 62 f1 fd 48 c6
+ 45 12 ff vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 255 ; 000000ffH
+ 003d9 62 f1 fd 48 11
+ 45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
+
+; 518 : c01 = _mm512_fmadd_pd(a30, b01_perm, c01);
+
+ 003e0 62 f1 fd 48 10
+ 45 1a vmovupd zmm0, ZMMWORD PTR a30$11[rbp]
+ 003e7 62 f1 fd 48 10
+ 4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
+ 003ee 62 f2 f5 48 a8
+ 45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
+ 003f5 62 f1 fd 48 11
+ 45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
+
+; 519 : c23 = _mm512_fmadd_pd(a12, b23_perm, c23);
+
+ 003fc 62 f1 fd 48 10
+ 45 18 vmovupd zmm0, ZMMWORD PTR a12$10[rbp]
+ 00403 62 f1 fd 48 10
+ 4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
+ 0040a 62 f2 f5 48 a8
+ 45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
+ 00411 62 f1 fd 48 11
+ 45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
+
+; 520 : }
+
+ 00418 e9 11 fd ff ff jmp $LN2@double_ker
+$LN3@double_ker:
+
+; 521 : _mm512_store_pd((double *)&ans_cur->f64_z[0], c01);
+
+ 0041d b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 00422 48 6b c0 00 imul rax, rax, 0
+ 00426 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0042d 48 03 c8 add rcx, rax
+ 00430 48 8b c1 mov rax, rcx
+ 00433 62 f1 fd 48 10
+ 45 03 vmovupd zmm0, ZMMWORD PTR c01$[rbp]
+ 0043a 62 f1 fd 48 11
+ 00 vmovupd ZMMWORD PTR [rax], zmm0
+
+; 522 : _mm512_store_pd((double *)&ans_cur->f64_z[1], c23);
+
+ 00440 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 00445 48 6b c0 01 imul rax, rax, 1
+ 00449 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 00450 48 03 c8 add rcx, rax
+ 00453 48 8b c1 mov rax, rcx
+ 00456 62 f1 fd 48 10
+ 45 05 vmovupd zmm0, ZMMWORD PTR c23$[rbp]
+ 0045d 62 f1 fd 48 11
+ 00 vmovupd ZMMWORD PTR [rax], zmm0
+
+; 523 : }
+
+ 00463 49 8d a5 10 0a
+ 00 00 lea rsp, QWORD PTR [r13+2576]
+ 0046a 5f pop rdi
+ 0046b 5d pop rbp
+ 0046c 41 5d pop r13
+ 0046e c3 ret 0
+double_kernel_tile_fma_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT double_kernel_tile_fma_avx_fma
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+ans_cur$ = 136
+c0$ = 192
+c1$ = 256
+c2$ = 320
+c3$ = 384
+bcol$ = 448
+k$1 = 504
+right_cur$2 = 536
+left_cur$3 = 568
+a0$4 = 608
+a1$5 = 672
+a2$6 = 736
+a3$7 = 800
+left$ = 1296
+right$ = 1304
+ans$ = 1312
+enumeration$ = 1320
+double_kernel_tile_fma_avx_fma PROC ; COMDAT
+
+; 401 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 10 05
+ 00 00 sub rsp, 1296 ; 00000510H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 402 : int i = enumeration->m128_i32[0];
+
+ 0003a b8 04 00 00 00 mov eax, 4
+ 0003f 48 6b c0 00 imul rax, rax, 0
+ 00043 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0004d 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 403 : int j = enumeration->m128_i32[1];
+
+ 00050 b8 04 00 00 00 mov eax, 4
+ 00055 48 6b c0 01 imul rax, rax, 1
+ 00059 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00063 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 404 : int commonK = enumeration->m128_i32[2];
+
+ 00066 b8 04 00 00 00 mov eax, 4
+ 0006b 48 6b c0 02 imul rax, rax, 2
+ 0006f 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 405 : int ansHeight = enumeration->m128_i32[3];
+
+ 0007c b8 04 00 00 00 mov eax, 4
+ 00081 48 6b c0 03 imul rax, rax, 3
+ 00085 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 406 :
+; 407 : MAT_KERNEL(double)
+; 408 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
+
+ 00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00099 03 45 24 add eax, DWORD PTR j$[rbp]
+ 0009c 48 98 cdqe
+ 0009e 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 000a5 49 8b 8d 20 05
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000ac 48 03 c8 add rcx, rax
+ 000af 48 8b c1 mov rax, rcx
+ 000b2 48 89 85 88 00
+ 00 00 mov QWORD PTR ans_cur$[rbp], rax
+
+; 409 :
+; 410 : register __m256d c0 = _mm256_load_pd((double *)&ans_cur->f64_y[0]);
+
+ 000b9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000be 48 6b c0 00 imul rax, rax, 0
+ 000c2 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000c9 48 03 c8 add rcx, rax
+ 000cc 48 8b c1 mov rax, rcx
+ 000cf c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000d3 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 411 : register __m256d c1 = _mm256_load_pd((double *)&ans_cur->f64_y[1]);
+
+ 000db b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000e0 48 6b c0 01 imul rax, rax, 1
+ 000e4 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000eb 48 03 c8 add rcx, rax
+ 000ee 48 8b c1 mov rax, rcx
+ 000f1 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000f5 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 412 : register __m256d c2 = _mm256_load_pd((double *)&ans_cur->f64_y[2]);
+
+ 000fd b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00102 48 6b c0 02 imul rax, rax, 2
+ 00106 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0010d 48 03 c8 add rcx, rax
+ 00110 48 8b c1 mov rax, rcx
+ 00113 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00117 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 413 : register __m256d c3 = _mm256_load_pd((double *)&ans_cur->f64_y[3]);
+
+ 0011f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00124 48 6b c0 03 imul rax, rax, 3
+ 00128 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0012f 48 03 c8 add rcx, rax
+ 00132 48 8b c1 mov rax, rcx
+ 00135 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00139 c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 414 : register __m256d bcol;
+; 415 :
+; 416 : for (size_t k = 0; k < commonK; k++) {
+
+ 00141 48 c7 85 f8 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 0014c eb 11 jmp SHORT $LN4@double_ker
+$LN2@double_ker:
+ 0014e 48 8b 85 f8 01
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 00155 48 ff c0 inc rax
+ 00158 48 89 85 f8 01
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@double_ker:
+ 0015f 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 00163 48 39 85 f8 01
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 0016a 0f 83 de 03 00
+ 00 jae $LN3@double_ker
+
+; 417 : MAT_KERNEL(double)
+; 418 : const *right_cur = right + GET_INDEX(commonK, i, k), // GetKernelAddressUnsafe
+
+ 00170 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
+ 00173 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00177 48 98 cdqe
+ 00179 48 03 85 f8 01
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00180 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00187 49 8b 8d 18 05
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0018e 48 03 c8 add rcx, rax
+ 00191 48 8b c1 mov rax, rcx
+ 00194 48 89 85 18 02
+ 00 00 mov QWORD PTR right_cur$2[rbp], rax
+
+; 419 : const *left_cur =
+
+ 0019b 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
+ 0019f 48 0f af 85 f8
+ 01 00 00 imul rax, QWORD PTR k$1[rbp]
+ 001a7 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
+ 001ab 48 03 c1 add rax, rcx
+ 001ae 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 001b5 49 8b 8d 10 05
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 001bc 48 03 c8 add rcx, rax
+ 001bf 48 8b c1 mov rax, rcx
+ 001c2 48 89 85 38 02
+ 00 00 mov QWORD PTR left_cur$3[rbp], rax
+
+; 420 : left + GET_INDEX(ansHeight, k, j); // GetKernelAddressUnsafe
+; 421 :
+; 422 : const __m256d a0 = _mm256_load_pd((double *)&left_cur->f64_y[0]);
+
+ 001c9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001ce 48 6b c0 00 imul rax, rax, 0
+ 001d2 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 001d9 48 03 c8 add rcx, rax
+ 001dc 48 8b c1 mov rax, rcx
+ 001df c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 001e3 c5 fd 11 85 60
+ 02 00 00 vmovupd YMMWORD PTR a0$4[rbp], ymm0
+
+; 423 : const __m256d a1 = _mm256_load_pd((double *)&left_cur->f64_y[1]);
+
+ 001eb b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001f0 48 6b c0 01 imul rax, rax, 1
+ 001f4 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 001fb 48 03 c8 add rcx, rax
+ 001fe 48 8b c1 mov rax, rcx
+ 00201 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00205 c5 fd 11 85 a0
+ 02 00 00 vmovupd YMMWORD PTR a1$5[rbp], ymm0
+
+; 424 : const __m256d a2 = _mm256_load_pd((double *)&left_cur->f64_y[2]);
+
+ 0020d b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00212 48 6b c0 02 imul rax, rax, 2
+ 00216 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 0021d 48 03 c8 add rcx, rax
+ 00220 48 8b c1 mov rax, rcx
+ 00223 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00227 c5 fd 11 85 e0
+ 02 00 00 vmovupd YMMWORD PTR a2$6[rbp], ymm0
+
+; 425 : const __m256d a3 = _mm256_load_pd((double *)&left_cur->f64_y[3]);
+
+ 0022f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00234 48 6b c0 03 imul rax, rax, 3
+ 00238 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 0023f 48 03 c8 add rcx, rax
+ 00242 48 8b c1 mov rax, rcx
+ 00245 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00249 c5 fd 11 85 20
+ 03 00 00 vmovupd YMMWORD PTR a3$7[rbp], ymm0
+
+; 426 :
+; 427 : /* Column 0 */
+; 428 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[0]);
+
+ 00251 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00256 48 6b c0 00 imul rax, rax, 0
+ 0025a 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 00261 48 03 c8 add rcx, rax
+ 00264 48 8b c1 mov rax, rcx
+ 00267 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0026b c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 429 : c0 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c0);
+
+ 00273 c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 0027d c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 00285 c4 e2 fd a8 8d
+ c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
+ 0028e c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00292 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 430 : c0 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c0);
+
+ 0029a c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 002a4 c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 002ac c4 e2 fd a8 8d
+ c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
+ 002b5 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 002b9 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 431 : c0 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c0);
+
+ 002c1 c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 002cb c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 002d3 c4 e2 fd a8 8d
+ c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
+ 002dc c5 fd 10 c1 vmovupd ymm0, ymm1
+ 002e0 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 432 : c0 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c0);
+
+ 002e8 c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 002f2 c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 002fa c4 e2 fd a8 8d
+ c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
+ 00303 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00307 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 433 :
+; 434 : /* Column 1 */
+; 435 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[1]);
+
+ 0030f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00314 48 6b c0 01 imul rax, rax, 1
+ 00318 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 0031f 48 03 c8 add rcx, rax
+ 00322 48 8b c1 mov rax, rcx
+ 00325 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00329 c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 436 : c1 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c1);
+
+ 00331 c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 0033b c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 00343 c4 e2 fd a8 8d
+ 00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
+ 0034c c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00350 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 437 : c1 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c1);
+
+ 00358 c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 00362 c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 0036a c4 e2 fd a8 8d
+ 00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
+ 00373 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00377 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 438 : c1 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c1);
+
+ 0037f c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 00389 c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 00391 c4 e2 fd a8 8d
+ 00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
+ 0039a c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0039e c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 439 : c1 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c1);
+
+ 003a6 c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 003b0 c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 003b8 c4 e2 fd a8 8d
+ 00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
+ 003c1 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 003c5 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 440 :
+; 441 : /* Column 2 */
+; 442 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[2]);
+
+ 003cd b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 003d2 48 6b c0 02 imul rax, rax, 2
+ 003d6 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 003dd 48 03 c8 add rcx, rax
+ 003e0 48 8b c1 mov rax, rcx
+ 003e3 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 003e7 c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 443 : c2 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c2);
+
+ 003ef c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 003f9 c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 00401 c4 e2 fd a8 8d
+ 40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
+ 0040a c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0040e c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 444 : c2 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c2);
+
+ 00416 c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 00420 c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 00428 c4 e2 fd a8 8d
+ 40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
+ 00431 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00435 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 445 : c2 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c2);
+
+ 0043d c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 00447 c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 0044f c4 e2 fd a8 8d
+ 40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
+ 00458 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0045c c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 446 : c2 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c2);
+
+ 00464 c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 0046e c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 00476 c4 e2 fd a8 8d
+ 40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
+ 0047f c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00483 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 447 :
+; 448 : /* Column 3 */
+; 449 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[3]);
+
+ 0048b b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00490 48 6b c0 03 imul rax, rax, 3
+ 00494 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 0049b 48 03 c8 add rcx, rax
+ 0049e 48 8b c1 mov rax, rcx
+ 004a1 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 004a5 c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 450 : c3 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c3);
+
+ 004ad c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 004b7 c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 004bf c4 e2 fd a8 8d
+ 80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
+ 004c8 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 004cc c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 451 : c3 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c3);
+
+ 004d4 c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 004de c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 004e6 c4 e2 fd a8 8d
+ 80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
+ 004ef c5 fd 10 c1 vmovupd ymm0, ymm1
+ 004f3 c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 452 : c3 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c3);
+
+ 004fb c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 00505 c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 0050d c4 e2 fd a8 8d
+ 80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
+ 00516 c5 fd 10 c1 vmovupd ymm0, ymm1
+ 0051a c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 453 : c3 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c3);
+
+ 00522 c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 0052c c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 00534 c4 e2 fd a8 8d
+ 80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
+ 0053d c5 fd 10 c1 vmovupd ymm0, ymm1
+ 00541 c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 454 : }
+
+ 00549 e9 00 fc ff ff jmp $LN2@double_ker
+$LN3@double_ker:
+
+; 455 :
+; 456 : _mm256_store_pd((double *)&ans_cur->f64_y[0], c0);
+
+ 0054e b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00553 48 6b c0 00 imul rax, rax, 0
+ 00557 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0055e 48 03 c8 add rcx, rax
+ 00561 48 8b c1 mov rax, rcx
+ 00564 c5 fd 10 85 c0
+ 00 00 00 vmovupd ymm0, YMMWORD PTR c0$[rbp]
+ 0056c c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 457 : _mm256_store_pd((double *)&ans_cur->f64_y[1], c1);
+
+ 00570 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00575 48 6b c0 01 imul rax, rax, 1
+ 00579 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 00580 48 03 c8 add rcx, rax
+ 00583 48 8b c1 mov rax, rcx
+ 00586 c5 fd 10 85 00
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c1$[rbp]
+ 0058e c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 458 : _mm256_store_pd((double *)&ans_cur->f64_y[2], c2);
+
+ 00592 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00597 48 6b c0 02 imul rax, rax, 2
+ 0059b 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 005a2 48 03 c8 add rcx, rax
+ 005a5 48 8b c1 mov rax, rcx
+ 005a8 c5 fd 10 85 40
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c2$[rbp]
+ 005b0 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 459 : _mm256_store_pd((double *)&ans_cur->f64_y[3], c3);
+
+ 005b4 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 005b9 48 6b c0 03 imul rax, rax, 3
+ 005bd 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 005c4 48 03 c8 add rcx, rax
+ 005c7 48 8b c1 mov rax, rcx
+ 005ca c5 fd 10 85 80
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c3$[rbp]
+ 005d2 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 460 : }
+
+ 005d6 49 8d a5 f0 04
+ 00 00 lea rsp, QWORD PTR [r13+1264]
+ 005dd 5f pop rdi
+ 005de 5d pop rbp
+ 005df 41 5d pop r13
+ 005e1 c3 ret 0
+double_kernel_tile_fma_avx_fma ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT double_kernel_tile_fma_avx
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+ans_cur$ = 136
+c0$ = 192
+c1$ = 256
+c2$ = 320
+c3$ = 384
+bcol$ = 448
+k$1 = 504
+right_cur$2 = 536
+left_cur$3 = 568
+a0$4 = 608
+a1$5 = 672
+a2$6 = 736
+a3$7 = 800
+left$ = 1296
+right$ = 1304
+ans$ = 1312
+enumeration$ = 1320
+double_kernel_tile_fma_avx PROC ; COMDAT
+
+; 323 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 10 05
+ 00 00 sub rsp, 1296 ; 00000510H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 324 : int i = enumeration->m128_i32[0];
+
+ 0003a b8 04 00 00 00 mov eax, 4
+ 0003f 48 6b c0 00 imul rax, rax, 0
+ 00043 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0004d 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 325 : int j = enumeration->m128_i32[1];
+
+ 00050 b8 04 00 00 00 mov eax, 4
+ 00055 48 6b c0 01 imul rax, rax, 1
+ 00059 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00063 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 326 : int commonK = enumeration->m128_i32[2];
+
+ 00066 b8 04 00 00 00 mov eax, 4
+ 0006b 48 6b c0 02 imul rax, rax, 2
+ 0006f 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 327 : int ansHeight = enumeration->m128_i32[3];
+
+ 0007c b8 04 00 00 00 mov eax, 4
+ 00081 48 6b c0 03 imul rax, rax, 3
+ 00085 49 8b 8d 28 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 328 :
+; 329 : MAT_KERNEL(double)
+; 330 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
+
+ 00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00099 03 45 24 add eax, DWORD PTR j$[rbp]
+ 0009c 48 98 cdqe
+ 0009e 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 000a5 49 8b 8d 20 05
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000ac 48 03 c8 add rcx, rax
+ 000af 48 8b c1 mov rax, rcx
+ 000b2 48 89 85 88 00
+ 00 00 mov QWORD PTR ans_cur$[rbp], rax
+
+; 331 :
+; 332 : register __m256d c0 = _mm256_load_pd((double *)&ans_cur->f64_y[0]);
+
+ 000b9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000be 48 6b c0 00 imul rax, rax, 0
+ 000c2 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000c9 48 03 c8 add rcx, rax
+ 000cc 48 8b c1 mov rax, rcx
+ 000cf c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000d3 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 333 : register __m256d c1 = _mm256_load_pd((double *)&ans_cur->f64_y[1]);
+
+ 000db b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000e0 48 6b c0 01 imul rax, rax, 1
+ 000e4 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000eb 48 03 c8 add rcx, rax
+ 000ee 48 8b c1 mov rax, rcx
+ 000f1 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 000f5 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 334 : register __m256d c2 = _mm256_load_pd((double *)&ans_cur->f64_y[2]);
+
+ 000fd b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00102 48 6b c0 02 imul rax, rax, 2
+ 00106 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0010d 48 03 c8 add rcx, rax
+ 00110 48 8b c1 mov rax, rcx
+ 00113 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00117 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 335 : register __m256d c3 = _mm256_load_pd((double *)&ans_cur->f64_y[3]);
+
+ 0011f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00124 48 6b c0 03 imul rax, rax, 3
+ 00128 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0012f 48 03 c8 add rcx, rax
+ 00132 48 8b c1 mov rax, rcx
+ 00135 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00139 c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 336 : register __m256d bcol;
+; 337 :
+; 338 : for (size_t k = 0; k < commonK; k++) {
+
+ 00141 48 c7 85 f8 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 0014c eb 11 jmp SHORT $LN4@double_ker
+$LN2@double_ker:
+ 0014e 48 8b 85 f8 01
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 00155 48 ff c0 inc rax
+ 00158 48 89 85 f8 01
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@double_ker:
+ 0015f 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 00163 48 39 85 f8 01
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 0016a 0f 83 0e 04 00
+ 00 jae $LN3@double_ker
+
+; 339 : MAT_KERNEL(double)
+; 340 : const *right_cur = right + GET_INDEX(commonK, i, k), // GetKernelAddressUnsafe
+
+ 00170 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
+ 00173 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00177 48 98 cdqe
+ 00179 48 03 85 f8 01
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00180 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00187 49 8b 8d 18 05
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0018e 48 03 c8 add rcx, rax
+ 00191 48 8b c1 mov rax, rcx
+ 00194 48 89 85 18 02
+ 00 00 mov QWORD PTR right_cur$2[rbp], rax
+
+; 341 : const *left_cur =
+
+ 0019b 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
+ 0019f 48 0f af 85 f8
+ 01 00 00 imul rax, QWORD PTR k$1[rbp]
+ 001a7 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
+ 001ab 48 03 c1 add rax, rcx
+ 001ae 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 001b5 49 8b 8d 10 05
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 001bc 48 03 c8 add rcx, rax
+ 001bf 48 8b c1 mov rax, rcx
+ 001c2 48 89 85 38 02
+ 00 00 mov QWORD PTR left_cur$3[rbp], rax
+
+; 342 : left + GET_INDEX(ansHeight, k, j); // GetKernelAddressUnsafe
+; 343 :
+; 344 : const __m256d a0 = _mm256_load_pd((double *)&left_cur->f64_y[0]);
+
+ 001c9 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001ce 48 6b c0 00 imul rax, rax, 0
+ 001d2 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 001d9 48 03 c8 add rcx, rax
+ 001dc 48 8b c1 mov rax, rcx
+ 001df c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 001e3 c5 fd 11 85 60
+ 02 00 00 vmovupd YMMWORD PTR a0$4[rbp], ymm0
+
+; 345 : const __m256d a1 = _mm256_load_pd((double *)&left_cur->f64_y[1]);
+
+ 001eb b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001f0 48 6b c0 01 imul rax, rax, 1
+ 001f4 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 001fb 48 03 c8 add rcx, rax
+ 001fe 48 8b c1 mov rax, rcx
+ 00201 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00205 c5 fd 11 85 a0
+ 02 00 00 vmovupd YMMWORD PTR a1$5[rbp], ymm0
+
+; 346 : const __m256d a2 = _mm256_load_pd((double *)&left_cur->f64_y[2]);
+
+ 0020d b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00212 48 6b c0 02 imul rax, rax, 2
+ 00216 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 0021d 48 03 c8 add rcx, rax
+ 00220 48 8b c1 mov rax, rcx
+ 00223 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00227 c5 fd 11 85 e0
+ 02 00 00 vmovupd YMMWORD PTR a2$6[rbp], ymm0
+
+; 347 : const __m256d a3 = _mm256_load_pd((double *)&left_cur->f64_y[3]);
+
+ 0022f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00234 48 6b c0 03 imul rax, rax, 3
+ 00238 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 0023f 48 03 c8 add rcx, rax
+ 00242 48 8b c1 mov rax, rcx
+ 00245 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00249 c5 fd 11 85 20
+ 03 00 00 vmovupd YMMWORD PTR a3$7[rbp], ymm0
+
+; 348 :
+; 349 : /* Column 0 */
+; 350 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[0]);
+
+ 00251 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00256 48 6b c0 00 imul rax, rax, 0
+ 0025a 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 00261 48 03 c8 add rcx, rax
+ 00264 48 8b c1 mov rax, rcx
+ 00267 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 0026b c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 351 : c0 = _mm256_add_pd(c0,
+
+ 00273 c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 0027d c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 00285 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00289 c5 fd 10 8d c0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
+ 00291 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00295 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 352 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
+; 353 : c0 = _mm256_add_pd(c0,
+
+ 0029d c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 002a7 c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 002af c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 002b3 c5 fd 10 8d c0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
+ 002bb c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 002bf c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 354 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
+; 355 : c0 = _mm256_add_pd(c0,
+
+ 002c7 c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 002d1 c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 002d9 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 002dd c5 fd 10 8d c0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
+ 002e5 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 002e9 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 356 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
+; 357 : c0 = _mm256_add_pd(c0,
+
+ 002f1 c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 002fb c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 00303 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00307 c5 fd 10 8d c0
+ 00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
+ 0030f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00313 c5 fd 11 85 c0
+ 00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
+
+; 358 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
+; 359 :
+; 360 : /* Column 1 */
+; 361 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[1]);
+
+ 0031b b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00320 48 6b c0 01 imul rax, rax, 1
+ 00324 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 0032b 48 03 c8 add rcx, rax
+ 0032e 48 8b c1 mov rax, rcx
+ 00331 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 00335 c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 362 : c1 = _mm256_add_pd(c1,
+
+ 0033d c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 00347 c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 0034f c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00353 c5 fd 10 8d 00
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
+ 0035b c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 0035f c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 363 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
+; 364 : c1 = _mm256_add_pd(c1,
+
+ 00367 c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 00371 c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 00379 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 0037d c5 fd 10 8d 00
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
+ 00385 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00389 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 365 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
+; 366 : c1 = _mm256_add_pd(c1,
+
+ 00391 c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 0039b c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 003a3 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 003a7 c5 fd 10 8d 00
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
+ 003af c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 003b3 c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 367 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
+; 368 : c1 = _mm256_add_pd(c1,
+
+ 003bb c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 003c5 c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 003cd c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 003d1 c5 fd 10 8d 00
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
+ 003d9 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 003dd c5 fd 11 85 00
+ 01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
+
+; 369 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
+; 370 :
+; 371 : /* Column 2 */
+; 372 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[2]);
+
+ 003e5 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 003ea 48 6b c0 02 imul rax, rax, 2
+ 003ee 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 003f5 48 03 c8 add rcx, rax
+ 003f8 48 8b c1 mov rax, rcx
+ 003fb c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 003ff c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 373 : c2 = _mm256_add_pd(c2,
+
+ 00407 c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 00411 c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 00419 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 0041d c5 fd 10 8d 40
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
+ 00425 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00429 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 374 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
+; 375 : c2 = _mm256_add_pd(c2,
+
+ 00431 c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 0043b c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 00443 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00447 c5 fd 10 8d 40
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
+ 0044f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00453 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 376 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
+; 377 : c2 = _mm256_add_pd(c2,
+
+ 0045b c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 00465 c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 0046d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00471 c5 fd 10 8d 40
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
+ 00479 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 0047d c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 378 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
+; 379 : c2 = _mm256_add_pd(c2,
+
+ 00485 c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 0048f c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 00497 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 0049b c5 fd 10 8d 40
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
+ 004a3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 004a7 c5 fd 11 85 40
+ 01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
+
+; 380 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
+; 381 :
+; 382 : /* Column 3 */
+; 383 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[3]);
+
+ 004af b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 004b4 48 6b c0 03 imul rax, rax, 3
+ 004b8 48 8b 8d 18 02
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 004bf 48 03 c8 add rcx, rax
+ 004c2 48 8b c1 mov rax, rcx
+ 004c5 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
+ 004c9 c5 fd 11 85 c0
+ 01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
+
+; 384 : c3 = _mm256_add_pd(c3,
+
+ 004d1 c4 e3 fd 01 85
+ c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
+ 004db c5 fd 10 8d 60
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
+ 004e3 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 004e7 c5 fd 10 8d 80
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
+ 004ef c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 004f3 c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 385 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
+; 386 : c3 = _mm256_add_pd(c3,
+
+ 004fb c4 e3 fd 01 85
+ c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 00505 c5 fd 10 8d a0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
+ 0050d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00511 c5 fd 10 8d 80
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
+ 00519 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 0051d c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 387 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
+; 388 : c3 = _mm256_add_pd(c3,
+
+ 00525 c4 e3 fd 01 85
+ c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 0052f c5 fd 10 8d e0
+ 02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
+ 00537 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 0053b c5 fd 10 8d 80
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
+ 00543 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00547 c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 389 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
+; 390 : c3 = _mm256_add_pd(c3,
+
+ 0054f c4 e3 fd 01 85
+ c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 00559 c5 fd 10 8d 20
+ 03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
+ 00561 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
+ 00565 c5 fd 10 8d 80
+ 01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
+ 0056d c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
+ 00571 c5 fd 11 85 80
+ 01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
+
+; 391 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
+; 392 : }
+
+ 00579 e9 d0 fb ff ff jmp $LN2@double_ker
+$LN3@double_ker:
+
+; 393 :
+; 394 : _mm256_store_pd((double *)&ans_cur->f64_y[0], c0);
+
+ 0057e b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00583 48 6b c0 00 imul rax, rax, 0
+ 00587 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0058e 48 03 c8 add rcx, rax
+ 00591 48 8b c1 mov rax, rcx
+ 00594 c5 fd 10 85 c0
+ 00 00 00 vmovupd ymm0, YMMWORD PTR c0$[rbp]
+ 0059c c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 395 : _mm256_store_pd((double *)&ans_cur->f64_y[1], c1);
+
+ 005a0 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 005a5 48 6b c0 01 imul rax, rax, 1
+ 005a9 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 005b0 48 03 c8 add rcx, rax
+ 005b3 48 8b c1 mov rax, rcx
+ 005b6 c5 fd 10 85 00
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c1$[rbp]
+ 005be c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 396 : _mm256_store_pd((double *)&ans_cur->f64_y[2], c2);
+
+ 005c2 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 005c7 48 6b c0 02 imul rax, rax, 2
+ 005cb 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 005d2 48 03 c8 add rcx, rax
+ 005d5 48 8b c1 mov rax, rcx
+ 005d8 c5 fd 10 85 40
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c2$[rbp]
+ 005e0 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 397 : _mm256_store_pd((double *)&ans_cur->f64_y[3], c3);
+
+ 005e4 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 005e9 48 6b c0 03 imul rax, rax, 3
+ 005ed 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 005f4 48 03 c8 add rcx, rax
+ 005f7 48 8b c1 mov rax, rcx
+ 005fa c5 fd 10 85 80
+ 01 00 00 vmovupd ymm0, YMMWORD PTR c3$[rbp]
+ 00602 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
+
+; 398 : }
+
+ 00606 49 8d a5 f0 04
+ 00 00 lea rsp, QWORD PTR [r13+1264]
+ 0060d 5f pop rdi
+ 0060e 5d pop rbp
+ 0060f 41 5d pop r13
+ 00611 c3 ret 0
+double_kernel_tile_fma_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT double_kernel_tile_fma_sse
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+c0_lo$ = 144
+c0_hi$ = 192
+c1_lo$ = 240
+c1_hi$ = 288
+c2_lo$ = 336
+c2_hi$ = 384
+c3_lo$ = 432
+c3_hi$ = 480
+k$1 = 520
+left_cur$2 = 552
+right_cur$3 = 584
+b_lo$4 = 624
+b_hi$5 = 672
+a_lo$6 = 720
+a_hi$7 = 768
+b$8 = 816
+b_lo$9 = 864
+b_hi$10 = 912
+a_lo$11 = 960
+a_hi$12 = 1008
+b$13 = 1056
+b_lo$14 = 1104
+b_hi$15 = 1152
+a_lo$16 = 1200
+a_hi$17 = 1248
+b$18 = 1296
+b_lo$19 = 1344
+b_hi$20 = 1392
+a_lo$21 = 1440
+a_hi$22 = 1488
+b$23 = 1536
+left$ = 2368
+right$ = 2376
+ans$ = 2384
+enumeration$ = 2392
+double_kernel_tile_fma_sse PROC ; COMDAT
+
+; 283 : {
+
+$LN18:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 09
+ 00 00 sub rsp, 2376 ; 00000948H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 284 : int i = enumeration->m128_i32[0];
+
+ 0002f b8 04 00 00 00 mov eax, 4
+ 00034 48 6b c0 00 imul rax, rax, 0
+ 00038 48 8b 8d 58 09
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 0003f 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00042 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 285 : int j = enumeration->m128_i32[1];
+
+ 00045 b8 04 00 00 00 mov eax, 4
+ 0004a 48 6b c0 01 imul rax, rax, 1
+ 0004e 48 8b 8d 58 09
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 00055 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00058 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 286 : int commonK = enumeration->m128_i32[2];
+
+ 0005b b8 04 00 00 00 mov eax, 4
+ 00060 48 6b c0 02 imul rax, rax, 2
+ 00064 48 8b 8d 58 09
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 0006b 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0006e 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 287 : int ansHeight = enumeration->m128_i32[3];
+
+ 00071 b8 04 00 00 00 mov eax, 4
+ 00076 48 6b c0 03 imul rax, rax, 3
+ 0007a 48 8b 8d 58 09
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 00081 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00084 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 288 :
+; 289 : register __m128d c0_lo = _mm_load_pd(ans->f64_x + (0 * 2 + 0));
+
+ 00087 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 0008e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00091 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
+
+; 290 : register __m128d c0_hi = _mm_load_pd(ans->f64_x + (0 * 2 + 1));
+
+ 00098 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 0009f 48 83 c0 10 add rax, 16
+ 000a3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000a6 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
+
+; 291 : register __m128d c1_lo = _mm_load_pd(ans->f64_x + (1 * 2 + 0));
+
+ 000ad 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000b4 48 83 c0 20 add rax, 32 ; 00000020H
+ 000b8 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000bb 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
+
+; 292 : register __m128d c1_hi = _mm_load_pd(ans->f64_x + (1 * 2 + 1));
+
+ 000c2 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000c9 48 83 c0 30 add rax, 48 ; 00000030H
+ 000cd 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000d0 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
+
+; 293 : register __m128d c2_lo = _mm_load_pd(ans->f64_x + (2 * 2 + 0));
+
+ 000d7 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000de 48 83 c0 40 add rax, 64 ; 00000040H
+ 000e2 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000e5 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
+
+; 294 : register __m128d c2_hi = _mm_load_pd(ans->f64_x + (2 * 2 + 1));
+
+ 000ec 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000f3 48 83 c0 50 add rax, 80 ; 00000050H
+ 000f7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000fa 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
+
+; 295 : register __m128d c3_lo = _mm_load_pd(ans->f64_x + (3 * 2 + 0));
+
+ 00101 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00108 48 83 c0 60 add rax, 96 ; 00000060H
+ 0010c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0010f 0f 29 85 b0 01
+ 00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
+
+; 296 : register __m128d c3_hi = _mm_load_pd(ans->f64_x + (3 * 2 + 1));
+
+ 00116 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 0011d 48 83 c0 70 add rax, 112 ; 00000070H
+ 00121 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00124 0f 29 85 e0 01
+ 00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
+
+; 297 :
+; 298 : for (size_t k = 0; k < commonK; k++) {
+
+ 0012b 48 c7 85 08 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 00136 eb 11 jmp SHORT $LN4@double_ker
+$LN2@double_ker:
+ 00138 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 0013f 48 ff c0 inc rax
+ 00142 48 89 85 08 02
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@double_ker:
+ 00149 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 0014d 48 39 85 08 02
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 00154 0f 83 ed 09 00
+ 00 jae $LN3@double_ker
+
+; 299 : MAT_KERNEL(double)
+; 300 : const *left_cur = left + GET_INDEX(ansHeight, i, k),
+
+ 0015a 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 0015d 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00161 48 98 cdqe
+ 00163 48 03 85 08 02
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 0016a 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00171 48 8b 8d 40 09
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 00178 48 03 c8 add rcx, rax
+ 0017b 48 8b c1 mov rax, rcx
+ 0017e 48 89 85 28 02
+ 00 00 mov QWORD PTR left_cur$2[rbp], rax
+
+; 301 : const *right_cur = right + GET_INDEX(commonK, j, k); // GetKernelAddressUnsafe
+
+ 00185 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
+ 00188 0f af 45 24 imul eax, DWORD PTR j$[rbp]
+ 0018c 48 98 cdqe
+ 0018e 48 03 85 08 02
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00195 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 0019c 48 8b 8d 48 09
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 001a3 48 03 c8 add rcx, rax
+ 001a6 48 8b c1 mov rax, rcx
+ 001a9 48 89 85 48 02
+ 00 00 mov QWORD PTR right_cur$3[rbp], rax
+$LN7@double_ker:
+
+; 302 :
+; 303 : DOUBLE_KERNEL_FMA_CYCLE(0);
+
+ 001b0 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 001b7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001ba 0f 29 85 70 02
+ 00 00 movaps XMMWORD PTR b_lo$4[rbp], xmm0
+ 001c1 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 001c8 48 05 80 00 00
+ 00 add rax, 128 ; 00000080H
+ 001ce 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001d1 0f 29 85 a0 02
+ 00 00 movaps XMMWORD PTR b_hi$5[rbp], xmm0
+ 001d8 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 001df 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001e2 0f 29 85 d0 02
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+ 001e9 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 001f0 48 05 80 00 00
+ 00 add rax, 128 ; 00000080H
+ 001f6 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001f9 0f 29 85 00 03
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+ 00200 0f 28 85 70 02
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
+ 00207 66 0f c6 85 70
+ 02 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 0
+ 00210 0f 29 85 30 03
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+ 00217 0f 28 85 d0 02
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 0021e 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 00226 0f 28 8d 90 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
+ 0022d 66 0f 58 c8 addpd xmm1, xmm0
+ 00231 0f 28 c1 movaps xmm0, xmm1
+ 00234 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
+ 0023b 0f 28 85 00 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 00242 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 0024a 0f 28 8d c0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
+ 00251 66 0f 58 c8 addpd xmm1, xmm0
+ 00255 0f 28 c1 movaps xmm0, xmm1
+ 00258 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
+ 0025f 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00266 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 0026c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0026f 0f 29 85 d0 02
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+ 00276 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 0027d 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 00283 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00286 0f 29 85 00 03
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+ 0028d 0f 28 85 70 02
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
+ 00294 66 0f c6 85 70
+ 02 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 3
+ 0029d 0f 29 85 30 03
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+ 002a4 0f 28 85 d0 02
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 002ab 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 002b3 0f 28 8d 90 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
+ 002ba 66 0f 58 c8 addpd xmm1, xmm0
+ 002be 0f 28 c1 movaps xmm0, xmm1
+ 002c1 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
+ 002c8 0f 28 85 00 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 002cf 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 002d7 0f 28 8d c0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
+ 002de 66 0f 58 c8 addpd xmm1, xmm0
+ 002e2 0f 28 c1 movaps xmm0, xmm1
+ 002e5 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
+ 002ec 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 002f3 48 05 00 02 00
+ 00 add rax, 512 ; 00000200H
+ 002f9 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 002fc 0f 29 85 d0 02
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+ 00303 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 0030a 48 05 80 02 00
+ 00 add rax, 640 ; 00000280H
+ 00310 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00313 0f 29 85 00 03
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+ 0031a 0f 28 85 a0 02
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
+ 00321 66 0f c6 85 a0
+ 02 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 0
+ 0032a 0f 29 85 30 03
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+ 00331 0f 28 85 d0 02
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 00338 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 00340 0f 28 8d 90 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
+ 00347 66 0f 58 c8 addpd xmm1, xmm0
+ 0034b 0f 28 c1 movaps xmm0, xmm1
+ 0034e 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
+ 00355 0f 28 85 00 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 0035c 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 00364 0f 28 8d c0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
+ 0036b 66 0f 58 c8 addpd xmm1, xmm0
+ 0036f 0f 28 c1 movaps xmm0, xmm1
+ 00372 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
+ 00379 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00380 48 05 00 03 00
+ 00 add rax, 768 ; 00000300H
+ 00386 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00389 0f 29 85 d0 02
+ 00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
+ 00390 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00397 48 05 80 03 00
+ 00 add rax, 896 ; 00000380H
+ 0039d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 003a0 0f 29 85 00 03
+ 00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
+ 003a7 0f 28 85 a0 02
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
+ 003ae 66 0f c6 85 a0
+ 02 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 3
+ 003b7 0f 29 85 30 03
+ 00 00 movaps XMMWORD PTR b$8[rbp], xmm0
+ 003be 0f 28 85 d0 02
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
+ 003c5 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 003cd 0f 28 8d 90 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
+ 003d4 66 0f 58 c8 addpd xmm1, xmm0
+ 003d8 0f 28 c1 movaps xmm0, xmm1
+ 003db 0f 29 85 90 00
+ 00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
+ 003e2 0f 28 85 00 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
+ 003e9 66 0f 59 85 30
+ 03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
+ 003f1 0f 28 8d c0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
+ 003f8 66 0f 58 c8 addpd xmm1, xmm0
+ 003fc 0f 28 c1 movaps xmm0, xmm1
+ 003ff 0f 29 85 c0 00
+ 00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
+ 00406 33 c0 xor eax, eax
+ 00408 85 c0 test eax, eax
+ 0040a 0f 85 a0 fd ff
+ ff jne $LN7@double_ker
+$LN10@double_ker:
+
+; 304 :
+; 305 : DOUBLE_KERNEL_FMA_CYCLE(1);
+
+ 00410 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 00417 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 0041d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00420 0f 29 85 60 03
+ 00 00 movaps XMMWORD PTR b_lo$9[rbp], xmm0
+ 00427 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 0042e 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 00434 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00437 0f 29 85 90 03
+ 00 00 movaps XMMWORD PTR b_hi$10[rbp], xmm0
+ 0043e 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00445 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00448 0f 29 85 c0 03
+ 00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
+ 0044f 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00456 48 05 80 00 00
+ 00 add rax, 128 ; 00000080H
+ 0045c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0045f 0f 29 85 f0 03
+ 00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
+ 00466 0f 28 85 60 03
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$9[rbp]
+ 0046d 66 0f c6 85 60
+ 03 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$9[rbp], 0
+ 00476 0f 29 85 20 04
+ 00 00 movaps XMMWORD PTR b$13[rbp], xmm0
+ 0047d 0f 28 85 c0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
+ 00484 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 0048c 0f 28 8d f0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
+ 00493 66 0f 58 c8 addpd xmm1, xmm0
+ 00497 0f 28 c1 movaps xmm0, xmm1
+ 0049a 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
+ 004a1 0f 28 85 f0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
+ 004a8 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 004b0 0f 28 8d 20 01
+ 00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
+ 004b7 66 0f 58 c8 addpd xmm1, xmm0
+ 004bb 0f 28 c1 movaps xmm0, xmm1
+ 004be 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
+ 004c5 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 004cc 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 004d2 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 004d5 0f 29 85 c0 03
+ 00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
+ 004dc 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 004e3 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 004e9 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 004ec 0f 29 85 f0 03
+ 00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
+ 004f3 0f 28 85 60 03
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$9[rbp]
+ 004fa 66 0f c6 85 60
+ 03 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$9[rbp], 3
+ 00503 0f 29 85 20 04
+ 00 00 movaps XMMWORD PTR b$13[rbp], xmm0
+ 0050a 0f 28 85 c0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
+ 00511 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 00519 0f 28 8d f0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
+ 00520 66 0f 58 c8 addpd xmm1, xmm0
+ 00524 0f 28 c1 movaps xmm0, xmm1
+ 00527 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
+ 0052e 0f 28 85 f0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
+ 00535 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 0053d 0f 28 8d 20 01
+ 00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
+ 00544 66 0f 58 c8 addpd xmm1, xmm0
+ 00548 0f 28 c1 movaps xmm0, xmm1
+ 0054b 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
+ 00552 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00559 48 05 00 02 00
+ 00 add rax, 512 ; 00000200H
+ 0055f 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00562 0f 29 85 c0 03
+ 00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
+ 00569 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00570 48 05 80 02 00
+ 00 add rax, 640 ; 00000280H
+ 00576 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00579 0f 29 85 f0 03
+ 00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
+ 00580 0f 28 85 90 03
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$10[rbp]
+ 00587 66 0f c6 85 90
+ 03 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$10[rbp], 0
+ 00590 0f 29 85 20 04
+ 00 00 movaps XMMWORD PTR b$13[rbp], xmm0
+ 00597 0f 28 85 c0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
+ 0059e 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 005a6 0f 28 8d f0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
+ 005ad 66 0f 58 c8 addpd xmm1, xmm0
+ 005b1 0f 28 c1 movaps xmm0, xmm1
+ 005b4 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
+ 005bb 0f 28 85 f0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
+ 005c2 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 005ca 0f 28 8d 20 01
+ 00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
+ 005d1 66 0f 58 c8 addpd xmm1, xmm0
+ 005d5 0f 28 c1 movaps xmm0, xmm1
+ 005d8 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
+ 005df 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 005e6 48 05 00 03 00
+ 00 add rax, 768 ; 00000300H
+ 005ec 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 005ef 0f 29 85 c0 03
+ 00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
+ 005f6 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 005fd 48 05 80 03 00
+ 00 add rax, 896 ; 00000380H
+ 00603 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00606 0f 29 85 f0 03
+ 00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
+ 0060d 0f 28 85 90 03
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$10[rbp]
+ 00614 66 0f c6 85 90
+ 03 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$10[rbp], 3
+ 0061d 0f 29 85 20 04
+ 00 00 movaps XMMWORD PTR b$13[rbp], xmm0
+ 00624 0f 28 85 c0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
+ 0062b 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 00633 0f 28 8d f0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
+ 0063a 66 0f 58 c8 addpd xmm1, xmm0
+ 0063e 0f 28 c1 movaps xmm0, xmm1
+ 00641 0f 29 85 f0 00
+ 00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
+ 00648 0f 28 85 f0 03
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
+ 0064f 66 0f 59 85 20
+ 04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
+ 00657 0f 28 8d 20 01
+ 00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
+ 0065e 66 0f 58 c8 addpd xmm1, xmm0
+ 00662 0f 28 c1 movaps xmm0, xmm1
+ 00665 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
+ 0066c 33 c0 xor eax, eax
+ 0066e 85 c0 test eax, eax
+ 00670 0f 85 9a fd ff
+ ff jne $LN10@double_ker
+$LN13@double_ker:
+
+; 306 :
+; 307 : DOUBLE_KERNEL_FMA_CYCLE(2);
+
+ 00676 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 0067d 48 05 00 02 00
+ 00 add rax, 512 ; 00000200H
+ 00683 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00686 0f 29 85 50 04
+ 00 00 movaps XMMWORD PTR b_lo$14[rbp], xmm0
+ 0068d 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 00694 48 05 80 02 00
+ 00 add rax, 640 ; 00000280H
+ 0069a 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0069d 0f 29 85 80 04
+ 00 00 movaps XMMWORD PTR b_hi$15[rbp], xmm0
+ 006a4 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 006ab 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 006ae 0f 29 85 b0 04
+ 00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
+ 006b5 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 006bc 48 05 80 00 00
+ 00 add rax, 128 ; 00000080H
+ 006c2 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 006c5 0f 29 85 e0 04
+ 00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
+ 006cc 0f 28 85 50 04
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$14[rbp]
+ 006d3 66 0f c6 85 50
+ 04 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$14[rbp], 0
+ 006dc 0f 29 85 10 05
+ 00 00 movaps XMMWORD PTR b$18[rbp], xmm0
+ 006e3 0f 28 85 b0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
+ 006ea 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 006f2 0f 28 8d 50 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
+ 006f9 66 0f 58 c8 addpd xmm1, xmm0
+ 006fd 0f 28 c1 movaps xmm0, xmm1
+ 00700 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
+ 00707 0f 28 85 e0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
+ 0070e 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 00716 0f 28 8d 80 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
+ 0071d 66 0f 58 c8 addpd xmm1, xmm0
+ 00721 0f 28 c1 movaps xmm0, xmm1
+ 00724 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
+ 0072b 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00732 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 00738 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0073b 0f 29 85 b0 04
+ 00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
+ 00742 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00749 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 0074f 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00752 0f 29 85 e0 04
+ 00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
+ 00759 0f 28 85 50 04
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$14[rbp]
+ 00760 66 0f c6 85 50
+ 04 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$14[rbp], 3
+ 00769 0f 29 85 10 05
+ 00 00 movaps XMMWORD PTR b$18[rbp], xmm0
+ 00770 0f 28 85 b0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
+ 00777 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 0077f 0f 28 8d 50 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
+ 00786 66 0f 58 c8 addpd xmm1, xmm0
+ 0078a 0f 28 c1 movaps xmm0, xmm1
+ 0078d 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
+ 00794 0f 28 85 e0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
+ 0079b 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 007a3 0f 28 8d 80 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
+ 007aa 66 0f 58 c8 addpd xmm1, xmm0
+ 007ae 0f 28 c1 movaps xmm0, xmm1
+ 007b1 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
+ 007b8 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 007bf 48 05 00 02 00
+ 00 add rax, 512 ; 00000200H
+ 007c5 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 007c8 0f 29 85 b0 04
+ 00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
+ 007cf 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 007d6 48 05 80 02 00
+ 00 add rax, 640 ; 00000280H
+ 007dc 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 007df 0f 29 85 e0 04
+ 00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
+ 007e6 0f 28 85 80 04
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$15[rbp]
+ 007ed 66 0f c6 85 80
+ 04 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$15[rbp], 0
+ 007f6 0f 29 85 10 05
+ 00 00 movaps XMMWORD PTR b$18[rbp], xmm0
+ 007fd 0f 28 85 b0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
+ 00804 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 0080c 0f 28 8d 50 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
+ 00813 66 0f 58 c8 addpd xmm1, xmm0
+ 00817 0f 28 c1 movaps xmm0, xmm1
+ 0081a 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
+ 00821 0f 28 85 e0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
+ 00828 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 00830 0f 28 8d 80 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
+ 00837 66 0f 58 c8 addpd xmm1, xmm0
+ 0083b 0f 28 c1 movaps xmm0, xmm1
+ 0083e 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
+ 00845 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 0084c 48 05 00 03 00
+ 00 add rax, 768 ; 00000300H
+ 00852 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00855 0f 29 85 b0 04
+ 00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
+ 0085c 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00863 48 05 80 03 00
+ 00 add rax, 896 ; 00000380H
+ 00869 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0086c 0f 29 85 e0 04
+ 00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
+ 00873 0f 28 85 80 04
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$15[rbp]
+ 0087a 66 0f c6 85 80
+ 04 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$15[rbp], 3
+ 00883 0f 29 85 10 05
+ 00 00 movaps XMMWORD PTR b$18[rbp], xmm0
+ 0088a 0f 28 85 b0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
+ 00891 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 00899 0f 28 8d 50 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
+ 008a0 66 0f 58 c8 addpd xmm1, xmm0
+ 008a4 0f 28 c1 movaps xmm0, xmm1
+ 008a7 0f 29 85 50 01
+ 00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
+ 008ae 0f 28 85 e0 04
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
+ 008b5 66 0f 59 85 10
+ 05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
+ 008bd 0f 28 8d 80 01
+ 00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
+ 008c4 66 0f 58 c8 addpd xmm1, xmm0
+ 008c8 0f 28 c1 movaps xmm0, xmm1
+ 008cb 0f 29 85 80 01
+ 00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
+ 008d2 33 c0 xor eax, eax
+ 008d4 85 c0 test eax, eax
+ 008d6 0f 85 9a fd ff
+ ff jne $LN13@double_ker
+$LN16@double_ker:
+
+; 308 :
+; 309 : DOUBLE_KERNEL_FMA_CYCLE(3);
+
+ 008dc 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 008e3 48 05 00 03 00
+ 00 add rax, 768 ; 00000300H
+ 008e9 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 008ec 0f 29 85 40 05
+ 00 00 movaps XMMWORD PTR b_lo$19[rbp], xmm0
+ 008f3 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 008fa 48 05 80 03 00
+ 00 add rax, 896 ; 00000380H
+ 00900 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00903 0f 29 85 70 05
+ 00 00 movaps XMMWORD PTR b_hi$20[rbp], xmm0
+ 0090a 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00911 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00914 0f 29 85 a0 05
+ 00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
+ 0091b 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00922 48 05 80 00 00
+ 00 add rax, 128 ; 00000080H
+ 00928 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0092b 0f 29 85 d0 05
+ 00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
+ 00932 0f 28 85 40 05
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$19[rbp]
+ 00939 66 0f c6 85 40
+ 05 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$19[rbp], 0
+ 00942 0f 29 85 00 06
+ 00 00 movaps XMMWORD PTR b$23[rbp], xmm0
+ 00949 0f 28 85 a0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
+ 00950 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 00958 0f 28 8d b0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
+ 0095f 66 0f 58 c8 addpd xmm1, xmm0
+ 00963 0f 28 c1 movaps xmm0, xmm1
+ 00966 0f 29 85 b0 01
+ 00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
+ 0096d 0f 28 85 d0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
+ 00974 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 0097c 0f 28 8d e0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
+ 00983 66 0f 58 c8 addpd xmm1, xmm0
+ 00987 0f 28 c1 movaps xmm0, xmm1
+ 0098a 0f 29 85 e0 01
+ 00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
+ 00991 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00998 48 05 00 01 00
+ 00 add rax, 256 ; 00000100H
+ 0099e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 009a1 0f 29 85 a0 05
+ 00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
+ 009a8 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 009af 48 05 80 01 00
+ 00 add rax, 384 ; 00000180H
+ 009b5 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 009b8 0f 29 85 d0 05
+ 00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
+ 009bf 0f 28 85 40 05
+ 00 00 movaps xmm0, XMMWORD PTR b_lo$19[rbp]
+ 009c6 66 0f c6 85 40
+ 05 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$19[rbp], 3
+ 009cf 0f 29 85 00 06
+ 00 00 movaps XMMWORD PTR b$23[rbp], xmm0
+ 009d6 0f 28 85 a0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
+ 009dd 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 009e5 0f 28 8d b0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
+ 009ec 66 0f 58 c8 addpd xmm1, xmm0
+ 009f0 0f 28 c1 movaps xmm0, xmm1
+ 009f3 0f 29 85 b0 01
+ 00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
+ 009fa 0f 28 85 d0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
+ 00a01 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 00a09 0f 28 8d e0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
+ 00a10 66 0f 58 c8 addpd xmm1, xmm0
+ 00a14 0f 28 c1 movaps xmm0, xmm1
+ 00a17 0f 29 85 e0 01
+ 00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
+ 00a1e 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00a25 48 05 00 02 00
+ 00 add rax, 512 ; 00000200H
+ 00a2b 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00a2e 0f 29 85 a0 05
+ 00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
+ 00a35 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00a3c 48 05 80 02 00
+ 00 add rax, 640 ; 00000280H
+ 00a42 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00a45 0f 29 85 d0 05
+ 00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
+ 00a4c 0f 28 85 70 05
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$20[rbp]
+ 00a53 66 0f c6 85 70
+ 05 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$20[rbp], 0
+ 00a5c 0f 29 85 00 06
+ 00 00 movaps XMMWORD PTR b$23[rbp], xmm0
+ 00a63 0f 28 85 a0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
+ 00a6a 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 00a72 0f 28 8d b0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
+ 00a79 66 0f 58 c8 addpd xmm1, xmm0
+ 00a7d 0f 28 c1 movaps xmm0, xmm1
+ 00a80 0f 29 85 b0 01
+ 00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
+ 00a87 0f 28 85 d0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
+ 00a8e 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 00a96 0f 28 8d e0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
+ 00a9d 66 0f 58 c8 addpd xmm1, xmm0
+ 00aa1 0f 28 c1 movaps xmm0, xmm1
+ 00aa4 0f 29 85 e0 01
+ 00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
+ 00aab 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00ab2 48 05 00 03 00
+ 00 add rax, 768 ; 00000300H
+ 00ab8 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00abb 0f 29 85 a0 05
+ 00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
+ 00ac2 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00ac9 48 05 80 03 00
+ 00 add rax, 896 ; 00000380H
+ 00acf 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00ad2 0f 29 85 d0 05
+ 00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
+ 00ad9 0f 28 85 70 05
+ 00 00 movaps xmm0, XMMWORD PTR b_hi$20[rbp]
+ 00ae0 66 0f c6 85 70
+ 05 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$20[rbp], 3
+ 00ae9 0f 29 85 00 06
+ 00 00 movaps XMMWORD PTR b$23[rbp], xmm0
+ 00af0 0f 28 85 a0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
+ 00af7 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 00aff 0f 28 8d b0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
+ 00b06 66 0f 58 c8 addpd xmm1, xmm0
+ 00b0a 0f 28 c1 movaps xmm0, xmm1
+ 00b0d 0f 29 85 b0 01
+ 00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
+ 00b14 0f 28 85 d0 05
+ 00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
+ 00b1b 66 0f 59 85 00
+ 06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
+ 00b23 0f 28 8d e0 01
+ 00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
+ 00b2a 66 0f 58 c8 addpd xmm1, xmm0
+ 00b2e 0f 28 c1 movaps xmm0, xmm1
+ 00b31 0f 29 85 e0 01
+ 00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
+ 00b38 33 c0 xor eax, eax
+ 00b3a 85 c0 test eax, eax
+ 00b3c 0f 85 9a fd ff
+ ff jne $LN16@double_ker
+
+; 310 : }
+
+ 00b42 e9 f1 f5 ff ff jmp $LN2@double_ker
+$LN3@double_ker:
+
+; 311 :
+; 312 : _mm_store_pd(ans->f64_x + (0 * 2 + 0), c0_lo);
+
+ 00b47 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00b4e 0f 28 85 90 00
+ 00 00 movaps xmm0, XMMWORD PTR c0_lo$[rbp]
+ 00b55 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 313 : _mm_store_pd(ans->f64_x + (0 * 2 + 1), c0_hi);
+
+ 00b58 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00b5f 48 83 c0 10 add rax, 16
+ 00b63 0f 28 85 c0 00
+ 00 00 movaps xmm0, XMMWORD PTR c0_hi$[rbp]
+ 00b6a 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 314 : _mm_store_pd(ans->f64_x + (1 * 2 + 0), c1_lo);
+
+ 00b6d 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00b74 48 83 c0 20 add rax, 32 ; 00000020H
+ 00b78 0f 28 85 f0 00
+ 00 00 movaps xmm0, XMMWORD PTR c1_lo$[rbp]
+ 00b7f 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 315 : _mm_store_pd(ans->f64_x + (1 * 2 + 1), c1_hi);
+
+ 00b82 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00b89 48 83 c0 30 add rax, 48 ; 00000030H
+ 00b8d 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR c1_hi$[rbp]
+ 00b94 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 316 : _mm_store_pd(ans->f64_x + (2 * 2 + 0), c2_lo);
+
+ 00b97 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00b9e 48 83 c0 40 add rax, 64 ; 00000040H
+ 00ba2 0f 28 85 50 01
+ 00 00 movaps xmm0, XMMWORD PTR c2_lo$[rbp]
+ 00ba9 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 317 : _mm_store_pd(ans->f64_x + (2 * 2 + 1), c2_hi);
+
+ 00bac 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00bb3 48 83 c0 50 add rax, 80 ; 00000050H
+ 00bb7 0f 28 85 80 01
+ 00 00 movaps xmm0, XMMWORD PTR c2_hi$[rbp]
+ 00bbe 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 318 : _mm_store_pd(ans->f64_x + (3 * 2 + 0), c3_lo);
+
+ 00bc1 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00bc8 48 83 c0 60 add rax, 96 ; 00000060H
+ 00bcc 0f 28 85 b0 01
+ 00 00 movaps xmm0, XMMWORD PTR c3_lo$[rbp]
+ 00bd3 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 319 : _mm_store_pd(ans->f64_x + (3 * 2 + 1), c3_hi);
+
+ 00bd6 48 8b 85 50 09
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00bdd 48 83 c0 70 add rax, 112 ; 00000070H
+ 00be1 0f 28 85 e0 01
+ 00 00 movaps xmm0, XMMWORD PTR c3_hi$[rbp]
+ 00be8 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 320 : }
+
+ 00beb 48 8d a5 28 09
+ 00 00 lea rsp, QWORD PTR [rbp+2344]
+ 00bf2 5f pop rdi
+ 00bf3 5d pop rbp
+ 00bf4 c3 ret 0
+double_kernel_tile_fma_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT float_kernel_tile_fma_512
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+b_shift$ = 192
+c$ = 320
+k$1 = 408
+left_cur$2 = 440
+right_cur$3 = 472
+a$4 = 512
+b$5 = 640
+a_perm$6 = 768
+b_perm$7 = 896
+left$ = 1456
+right$ = 1464
+ans$ = 1472
+enumeration$ = 1480
+float_kernel_tile_fma_512 PROC ; COMDAT
+
+; 203 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec b0 05
+ 00 00 sub rsp, 1456 ; 000005b0H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 204 : static const __m512i b_shift_source = { .m512i_i32 = {
+; 205 : // shuff order
+; 206 : 0, 1, 2, 3, // col0
+; 207 : 5, 6, 7, 4, //col1
+; 208 : 10, 11, 8, 9, //col2
+; 209 : 15, 12, 13, 14 //col3
+; 210 : } };
+; 211 : int i = enumeration->m128_i32[0];
+
+ 0003a b8 04 00 00 00 mov eax, 4
+ 0003f 48 6b c0 00 imul rax, rax, 0
+ 00043 49 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0004d 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 212 : int j = enumeration->m128_i32[1];
+
+ 00050 b8 04 00 00 00 mov eax, 4
+ 00055 48 6b c0 01 imul rax, rax, 1
+ 00059 49 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00063 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 213 : int commonK = enumeration->m128_i32[2];
+
+ 00066 b8 04 00 00 00 mov eax, 4
+ 0006b 48 6b c0 02 imul rax, rax, 2
+ 0006f 49 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 214 : int ansHeight = enumeration->m128_i32[3];
+
+ 0007c b8 04 00 00 00 mov eax, 4
+ 00081 48 6b c0 03 imul rax, rax, 3
+ 00085 49 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 215 :
+; 216 : register __m512i b_shift = _mm512_load_si512(&b_shift_source);
+
+ 00092 62 f1 7d 48 6f
+ 05 00 00 00 00 vmovdqa32 zmm0, ZMMWORD PTR ?b_shift_source@?1??float_kernel_tile_fma_512@@9@9
+ 0009c 62 f1 7e 48 7f
+ 45 03 vmovdqu32 ZMMWORD PTR b_shift$[rbp], zmm0
+
+; 217 : register __m512 c = _mm512_load_ps((float *)(ans + GET_INDEX(ansHeight, i, j)));
+
+ 000a3 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 000a6 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 000aa 03 45 24 add eax, DWORD PTR j$[rbp]
+ 000ad 48 98 cdqe
+ 000af 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 000b3 49 8b 8d c0 05
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000ba 48 03 c8 add rcx, rax
+ 000bd 48 8b c1 mov rax, rcx
+ 000c0 62 f1 7c 48 10
+ 00 vmovups zmm0, ZMMWORD PTR [rax]
+ 000c6 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 218 : for (size_t k = 0; k < commonK; k++) {
+
+ 000cd 48 c7 85 98 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 000d8 eb 11 jmp SHORT $LN4@float_kern
+$LN2@float_kern:
+ 000da 48 8b 85 98 01
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 000e1 48 ff c0 inc rax
+ 000e4 48 89 85 98 01
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@float_kern:
+ 000eb 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 000ef 48 39 85 98 01
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 000f6 0f 83 99 01 00
+ 00 jae $LN3@float_kern
+
+; 219 : MAT_KERNEL(double) *const left_cur = left + GET_INDEX(ansHeight, k, j),
+
+ 000fc 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
+ 00100 48 0f af 85 98
+ 01 00 00 imul rax, QWORD PTR k$1[rbp]
+ 00108 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
+ 0010c 48 03 c1 add rax, rcx
+ 0010f 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00113 49 8b 8d b0 05
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 0011a 48 03 c8 add rcx, rax
+ 0011d 48 8b c1 mov rax, rcx
+ 00120 48 89 85 b8 01
+ 00 00 mov QWORD PTR left_cur$2[rbp], rax
+
+; 220 : const *right_cur =
+
+ 00127 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
+ 0012a 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 0012e 48 98 cdqe
+ 00130 48 03 85 98 01
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00137 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 0013b 49 8b 8d b8 05
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 00142 48 03 c8 add rcx, rax
+ 00145 48 8b c1 mov rax, rcx
+ 00148 48 89 85 d8 01
+ 00 00 mov QWORD PTR right_cur$3[rbp], rax
+
+; 221 : right + GET_INDEX(commonK, i,
+; 222 : k); // GetKernelAddressUnsafe
+; 223 :
+; 224 : register __m512 a = _mm512_load_ps((float *)left_cur);
+
+ 0014f 48 8b 85 b8 01
+ 00 00 mov rax, QWORD PTR left_cur$2[rbp]
+ 00156 62 f1 7c 48 10
+ 00 vmovups zmm0, ZMMWORD PTR [rax]
+ 0015c 62 f1 7c 48 11
+ 45 08 vmovups ZMMWORD PTR a$4[rbp], zmm0
+
+; 225 : register __m512 b = _mm512_load_ps((float *)right_cur);
+
+ 00163 48 8b 85 d8 01
+ 00 00 mov rax, QWORD PTR right_cur$3[rbp]
+ 0016a 62 f1 7c 48 10
+ 00 vmovups zmm0, ZMMWORD PTR [rax]
+ 00170 62 f1 7c 48 11
+ 45 0a vmovups ZMMWORD PTR b$5[rbp], zmm0
+
+; 226 :
+; 227 : b = _mm512_permutexvar_ps(b_shift, b);
+
+ 00177 62 f1 7e 48 6f
+ 45 03 vmovdqu32 zmm0, ZMMWORD PTR b_shift$[rbp]
+ 0017e 62 f2 7d 48 16
+ 45 0a vpermps zmm0, zmm0, ZMMWORD PTR b$5[rbp]
+ 00185 62 f1 7c 48 11
+ 45 0a vmovups ZMMWORD PTR b$5[rbp], zmm0
+
+; 228 : register __m512 a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(3, 2, 1, 0));
+
+ 0018c 62 f1 7c 48 10
+ 45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
+ 00193 62 f3 7d 48 23
+ 45 08 e4 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 228 ; 000000e4H
+ 0019b 62 f1 7c 48 11
+ 45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
+
+; 229 : register __m512 b_perm = _mm512_permute_ps(b, _FMA_SELECT(0));
+
+ 001a2 62 f3 7d 48 04
+ 45 0a 00 vpermilps zmm0, ZMMWORD PTR b$5[rbp], 0
+ 001aa 62 f1 7c 48 11
+ 45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
+
+; 230 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
+
+ 001b1 62 f1 7c 48 10
+ 45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
+ 001b8 62 f1 7c 48 10
+ 4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
+ 001bf 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 001c6 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 231 :
+; 232 : a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(2, 1, 0, 3));
+
+ 001cd 62 f1 7c 48 10
+ 45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
+ 001d4 62 f3 7d 48 23
+ 45 08 93 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 147 ; 00000093H
+ 001dc 62 f1 7c 48 11
+ 45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
+
+; 233 : b_perm = _mm512_permute_ps(b, _FMA_SELECT(1));
+
+ 001e3 62 f3 7d 48 04
+ 45 0a 55 vpermilps zmm0, ZMMWORD PTR b$5[rbp], 85 ; 00000055H
+ 001eb 62 f1 7c 48 11
+ 45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
+
+; 234 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
+
+ 001f2 62 f1 7c 48 10
+ 45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
+ 001f9 62 f1 7c 48 10
+ 4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
+ 00200 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 00207 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 235 :
+; 236 : a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(1, 0, 3, 2));
+
+ 0020e 62 f1 7c 48 10
+ 45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
+ 00215 62 f3 7d 48 23
+ 45 08 4e vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 78 ; 0000004eH
+ 0021d 62 f1 7c 48 11
+ 45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
+
+; 237 : b_perm = _mm512_permute_ps(b, _FMA_SELECT(2));
+
+ 00224 62 f3 7d 48 04
+ 45 0a aa vpermilps zmm0, ZMMWORD PTR b$5[rbp], 170 ; 000000aaH
+ 0022c 62 f1 7c 48 11
+ 45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
+
+; 238 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
+
+ 00233 62 f1 7c 48 10
+ 45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
+ 0023a 62 f1 7c 48 10
+ 4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
+ 00241 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 00248 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 239 :
+; 240 : a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(0, 3, 2, 1));
+
+ 0024f 62 f1 7c 48 10
+ 45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
+ 00256 62 f3 7d 48 23
+ 45 08 39 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 57 ; 00000039H
+ 0025e 62 f1 7c 48 11
+ 45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
+
+; 241 : b_perm = _mm512_permute_ps(b, _FMA_SELECT(3));
+
+ 00265 62 f3 7d 48 04
+ 45 0a ff vpermilps zmm0, ZMMWORD PTR b$5[rbp], 255 ; 000000ffH
+ 0026d 62 f1 7c 48 11
+ 45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
+
+; 242 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
+
+ 00274 62 f1 7c 48 10
+ 45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
+ 0027b 62 f1 7c 48 10
+ 4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
+ 00282 62 f2 75 48 a8
+ 45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
+ 00289 62 f1 7c 48 11
+ 45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
+
+; 243 : }
+
+ 00290 e9 45 fe ff ff jmp $LN2@float_kern
+$LN3@float_kern:
+
+; 244 :
+; 245 : _mm512_store_ps((float *)(ans + GET_INDEX(ansHeight, i, j)), c);
+
+ 00295 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00298 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 0029c 03 45 24 add eax, DWORD PTR j$[rbp]
+ 0029f 48 98 cdqe
+ 002a1 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 002a5 49 8b 8d c0 05
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 002ac 48 03 c8 add rcx, rax
+ 002af 48 8b c1 mov rax, rcx
+ 002b2 62 f1 7c 48 10
+ 45 05 vmovups zmm0, ZMMWORD PTR c$[rbp]
+ 002b9 62 f1 7c 48 11
+ 00 vmovups ZMMWORD PTR [rax], zmm0
+
+; 246 : }
+
+ 002bf 49 8d a5 90 05
+ 00 00 lea rsp, QWORD PTR [r13+1424]
+ 002c6 5f pop rdi
+ 002c7 5d pop rbp
+ 002c8 41 5d pop r13
+ 002ca c3 ret 0
+float_kernel_tile_fma_512 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT float_kernel_tile_fma_avx_fma
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+ans_cur$ = 136
+c01$ = 192
+c23$ = 256
+b01_shift$ = 320
+b23_shift$ = 384
+k$1 = 440
+left_cur$2 = 472
+right_cur$3 = 504
+a01$4 = 544
+a23$5 = 608
+b01$6 = 672
+b23$7 = 736
+b01_perm$8 = 800
+b23_perm$9 = 864
+a12$10 = 928
+a30$11 = 992
+left$ = 1680
+right$ = 1688
+ans$ = 1696
+enumeration$ = 1704
+float_kernel_tile_fma_avx_fma PROC ; COMDAT
+
+; 140 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 90 06
+ 00 00 sub rsp, 1680 ; 00000690H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 141 : static const __m256i b01_shift_source = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
+; 142 : static const __m256i b23_shift_source = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
+; 143 :
+; 144 : int i = enumeration->m128_i32[0];
+
+ 0003a b8 04 00 00 00 mov eax, 4
+ 0003f 48 6b c0 00 imul rax, rax, 0
+ 00043 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0004d 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 145 : int j = enumeration->m128_i32[1];
+
+ 00050 b8 04 00 00 00 mov eax, 4
+ 00055 48 6b c0 01 imul rax, rax, 1
+ 00059 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00063 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 146 : int commonK = enumeration->m128_i32[2];
+
+ 00066 b8 04 00 00 00 mov eax, 4
+ 0006b 48 6b c0 02 imul rax, rax, 2
+ 0006f 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 147 : int ansHeight = enumeration->m128_i32[3];
+
+ 0007c b8 04 00 00 00 mov eax, 4
+ 00081 48 6b c0 03 imul rax, rax, 3
+ 00085 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 148 :
+; 149 : MAT_KERNEL(float)
+; 150 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
+
+ 00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00099 03 45 24 add eax, DWORD PTR j$[rbp]
+ 0009c 48 98 cdqe
+ 0009e 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 000a2 49 8b 8d a0 06
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000a9 48 03 c8 add rcx, rax
+ 000ac 48 8b c1 mov rax, rcx
+ 000af 48 89 85 88 00
+ 00 00 mov QWORD PTR ans_cur$[rbp], rax
+
+; 151 :
+; 152 : register __m256 c01 = _mm256_load_ps((float *)&ans_cur->f32_y[0]);
+
+ 000b6 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000bb 48 6b c0 00 imul rax, rax, 0
+ 000bf 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000c6 48 03 c8 add rcx, rax
+ 000c9 48 8b c1 mov rax, rcx
+ 000cc c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 000d0 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 153 : register __m256 c23 = _mm256_load_ps((float *)&ans_cur->f32_y[1]);
+
+ 000d8 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000dd 48 6b c0 01 imul rax, rax, 1
+ 000e1 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000e8 48 03 c8 add rcx, rax
+ 000eb 48 8b c1 mov rax, rcx
+ 000ee c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 000f2 c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 154 :
+; 155 : register __m256i b01_shift = _mm256_load_si256(&b01_shift_source);
+
+ 000fa c5 fd 6f 05 00
+ 00 00 00 vmovdqa ymm0, YMMWORD PTR ?b01_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9
+ 00102 c5 fe 7f 85 40
+ 01 00 00 vmovdqu YMMWORD PTR b01_shift$[rbp], ymm0
+
+; 156 : register __m256i b23_shift = _mm256_load_si256(&b23_shift_source);
+
+ 0010a c5 fd 6f 05 00
+ 00 00 00 vmovdqa ymm0, YMMWORD PTR ?b23_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9
+ 00112 c5 fe 7f 85 80
+ 01 00 00 vmovdqu YMMWORD PTR b23_shift$[rbp], ymm0
+
+; 157 :
+; 158 : for (size_t k = 0; k < commonK; k++) {
+
+ 0011a 48 c7 85 b8 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 00125 eb 11 jmp SHORT $LN4@float_kern
+$LN2@float_kern:
+ 00127 48 8b 85 b8 01
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 0012e 48 ff c0 inc rax
+ 00131 48 89 85 b8 01
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@float_kern:
+ 00138 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 0013c 48 39 85 b8 01
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 00143 0f 83 16 03 00
+ 00 jae $LN3@float_kern
+
+; 159 : MAT_KERNEL(float)
+; 160 : const *left_cur = left + GET_INDEX(ansHeight, k, j), // GetKernelAddressUnsafe
+
+ 00149 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
+ 0014d 48 0f af 85 b8
+ 01 00 00 imul rax, QWORD PTR k$1[rbp]
+ 00155 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
+ 00159 48 03 c1 add rax, rcx
+ 0015c 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00160 49 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00167 48 03 c8 add rcx, rax
+ 0016a 48 8b c1 mov rax, rcx
+ 0016d 48 89 85 d8 01
+ 00 00 mov QWORD PTR left_cur$2[rbp], rax
+
+; 161 : const *right_cur =
+
+ 00174 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
+ 00177 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 0017b 48 98 cdqe
+ 0017d 48 03 85 b8 01
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00184 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00188 49 8b 8d 98 06
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0018f 48 03 c8 add rcx, rax
+ 00192 48 8b c1 mov rax, rcx
+ 00195 48 89 85 f8 01
+ 00 00 mov QWORD PTR right_cur$3[rbp], rax
+
+; 162 : right + GET_INDEX(commonK, i, k); // GetKernelAddressUnsafe
+; 163 :
+; 164 : register __m256 a01 = _mm256_load_ps((float *)&left_cur->f32_y[0]);
+
+ 0019c b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001a1 48 6b c0 00 imul rax, rax, 0
+ 001a5 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$2[rbp]
+ 001ac 48 03 c8 add rcx, rax
+ 001af 48 8b c1 mov rax, rcx
+ 001b2 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 001b6 c5 fc 11 85 20
+ 02 00 00 vmovups YMMWORD PTR a01$4[rbp], ymm0
+
+; 165 : register __m256 a23 = _mm256_load_ps((float *)&left_cur->f32_y[1]);
+
+ 001be b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001c3 48 6b c0 01 imul rax, rax, 1
+ 001c7 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$2[rbp]
+ 001ce 48 03 c8 add rcx, rax
+ 001d1 48 8b c1 mov rax, rcx
+ 001d4 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 001d8 c5 fc 11 85 60
+ 02 00 00 vmovups YMMWORD PTR a23$5[rbp], ymm0
+
+; 166 :
+; 167 : register __m256 b01 = _mm256_load_ps((float *)&right_cur->f32_y[0]);
+
+ 001e0 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001e5 48 6b c0 00 imul rax, rax, 0
+ 001e9 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR right_cur$3[rbp]
+ 001f0 48 03 c8 add rcx, rax
+ 001f3 48 8b c1 mov rax, rcx
+ 001f6 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 001fa c5 fc 11 85 a0
+ 02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
+
+; 168 : register __m256 b23 = _mm256_load_ps((float *)&right_cur->f32_y[1]);
+
+ 00202 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00207 48 6b c0 01 imul rax, rax, 1
+ 0020b 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR right_cur$3[rbp]
+ 00212 48 03 c8 add rcx, rax
+ 00215 48 8b c1 mov rax, rcx
+ 00218 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 0021c c5 fc 11 85 e0
+ 02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
+
+; 169 : b01 = _mm256_permutevar_ps(b01, b01_shift);
+
+ 00224 c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 0022c c4 e2 7d 0c 85
+ 40 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b01_shift$[rbp]
+ 00235 c5 fc 11 85 a0
+ 02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
+
+; 170 : b23 = _mm256_permutevar_ps(b23, b23_shift);
+
+ 0023d c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 00245 c4 e2 7d 0c 85
+ 80 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b23_shift$[rbp]
+ 0024e c5 fc 11 85 e0
+ 02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
+
+; 171 :
+; 172 : //group 0
+; 173 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
+
+ 00256 c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 0025e c5 fc c6 85 a0
+ 02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 0
+ 00267 c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 174 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
+
+ 0026f c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 00277 c5 fc c6 85 e0
+ 02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 0
+ 00280 c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 175 : c01 = _mm256_fmadd_ps(a01, b01_perm, c01);
+
+ 00288 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 00290 c5 fc 10 8d 20
+ 03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
+ 00298 c4 e2 75 a8 85
+ c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 002a1 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 176 : c23 = _mm256_fmadd_ps(a23, b23_perm, c23);
+
+ 002a9 c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
+ 002b1 c5 fc 10 8d 60
+ 03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
+ 002b9 c4 e2 75 a8 85
+ 00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 002c2 c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 177 :
+; 178 : //group 2
+; 179 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
+
+ 002ca c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 002d2 c5 fc c6 85 a0
+ 02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 170 ; 000000aaH
+ 002db c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 180 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
+
+ 002e3 c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 002eb c5 fc c6 85 e0
+ 02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 170 ; 000000aaH
+ 002f4 c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 181 : c01 = _mm256_fmadd_ps(a23, b01_perm, c01);
+
+ 002fc c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
+ 00304 c5 fc 10 8d 20
+ 03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
+ 0030c c4 e2 75 a8 85
+ c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 00315 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 182 : c23 = _mm256_fmadd_ps(a01, b23_perm, c23);
+
+ 0031d c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 00325 c5 fc 10 8d 60
+ 03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
+ 0032d c4 e2 75 a8 85
+ 00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 00336 c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 183 :
+; 184 : //group 1
+; 185 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
+
+ 0033e c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 00346 c4 e3 7d 06 85
+ 60 02 00 00 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 33 ; 00000021H
+ 00350 c5 fc 11 85 a0
+ 03 00 00 vmovups YMMWORD PTR a12$10[rbp], ymm0
+
+; 186 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
+
+ 00358 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 00360 c4 e3 7d 06 85
+ 60 02 00 00 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 48 ; 00000030H
+ 0036a c5 fc 11 85 e0
+ 03 00 00 vmovups YMMWORD PTR a30$11[rbp], ymm0
+
+; 187 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
+
+ 00372 c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 0037a c5 fc c6 85 a0
+ 02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 85 ; 00000055H
+ 00383 c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 188 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
+
+ 0038b c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 00393 c5 fc c6 85 e0
+ 02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 85 ; 00000055H
+ 0039c c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 189 : c01 = _mm256_fmadd_ps(a12, b01_perm, c01);
+
+ 003a4 c5 fc 10 85 a0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
+ 003ac c5 fc 10 8d 20
+ 03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
+ 003b4 c4 e2 75 a8 85
+ c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 003bd c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 190 : c23 = _mm256_fmadd_ps(a30, b23_perm, c23);
+
+ 003c5 c5 fc 10 85 e0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
+ 003cd c5 fc 10 8d 60
+ 03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
+ 003d5 c4 e2 75 a8 85
+ 00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 003de c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 191 :
+; 192 : //group 3
+; 193 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
+
+ 003e6 c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 003ee c5 fc c6 85 a0
+ 02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 255 ; 000000ffH
+ 003f7 c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 194 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
+
+ 003ff c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 00407 c5 fc c6 85 e0
+ 02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 255 ; 000000ffH
+ 00410 c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 195 : c01 = _mm256_fmadd_ps(a30, b01_perm, c01);
+
+ 00418 c5 fc 10 85 e0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
+ 00420 c5 fc 10 8d 20
+ 03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
+ 00428 c4 e2 75 a8 85
+ c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
+ 00431 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 196 : c23 = _mm256_fmadd_ps(a12, b23_perm, c23);
+
+ 00439 c5 fc 10 85 a0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
+ 00441 c5 fc 10 8d 60
+ 03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
+ 00449 c4 e2 75 a8 85
+ 00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
+ 00452 c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 197 : }
+
+ 0045a e9 c8 fc ff ff jmp $LN2@float_kern
+$LN3@float_kern:
+
+; 198 : _mm256_store_ps((float *)&ans_cur->f32_y[0], c01);
+
+ 0045f b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00464 48 6b c0 00 imul rax, rax, 0
+ 00468 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0046f 48 03 c8 add rcx, rax
+ 00472 48 8b c1 mov rax, rcx
+ 00475 c5 fc 10 85 c0
+ 00 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
+ 0047d c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
+
+; 199 : _mm256_store_ps((float *)&ans_cur->f32_y[1], c23);
+
+ 00481 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00486 48 6b c0 01 imul rax, rax, 1
+ 0048a 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 00491 48 03 c8 add rcx, rax
+ 00494 48 8b c1 mov rax, rcx
+ 00497 c5 fc 10 85 00
+ 01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
+ 0049f c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
+
+; 200 : }
+
+ 004a3 49 8d a5 70 06
+ 00 00 lea rsp, QWORD PTR [r13+1648]
+ 004aa 5f pop rdi
+ 004ab 5d pop rbp
+ 004ac 41 5d pop r13
+ 004ae c3 ret 0
+float_kernel_tile_fma_avx_fma ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT float_kernel_tile_fma_avx
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+ans_cur$ = 136
+c01$ = 192
+c23$ = 256
+b01_shift$ = 320
+b23_shift$ = 384
+k$1 = 440
+left_cur$2 = 472
+right_cur$3 = 504
+a01$4 = 544
+a23$5 = 608
+b01$6 = 672
+b23$7 = 736
+b01_perm$8 = 800
+b23_perm$9 = 864
+a12$10 = 928
+a30$11 = 992
+left$ = 1680
+right$ = 1688
+ans$ = 1696
+enumeration$ = 1704
+float_kernel_tile_fma_avx PROC ; COMDAT
+
+; 77 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 90 06
+ 00 00 sub rsp, 1680 ; 00000690H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 0002d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00039 90 npad 1
+
+; 78 : static const __m256i b01_shift_source = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
+; 79 : static const __m256i b23_shift_source = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
+; 80 :
+; 81 : int i = enumeration->m128_i32[0];
+
+ 0003a b8 04 00 00 00 mov eax, 4
+ 0003f 48 6b c0 00 imul rax, rax, 0
+ 00043 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0004d 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 82 : int j = enumeration->m128_i32[1];
+
+ 00050 b8 04 00 00 00 mov eax, 4
+ 00055 48 6b c0 01 imul rax, rax, 1
+ 00059 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00063 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 83 : int commonK = enumeration->m128_i32[2];
+
+ 00066 b8 04 00 00 00 mov eax, 4
+ 0006b 48 6b c0 02 imul rax, rax, 2
+ 0006f 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 84 : int ansHeight = enumeration->m128_i32[3];
+
+ 0007c b8 04 00 00 00 mov eax, 4
+ 00081 48 6b c0 03 imul rax, rax, 3
+ 00085 49 8b 8d a8 06
+ 00 00 mov rcx, QWORD PTR enumeration$[r13]
+ 0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 85 :
+; 86 : MAT_KERNEL(float)
+; 87 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
+
+ 00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00099 03 45 24 add eax, DWORD PTR j$[rbp]
+ 0009c 48 98 cdqe
+ 0009e 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 000a2 49 8b 8d a0 06
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000a9 48 03 c8 add rcx, rax
+ 000ac 48 8b c1 mov rax, rcx
+ 000af 48 89 85 88 00
+ 00 00 mov QWORD PTR ans_cur$[rbp], rax
+
+; 88 :
+; 89 : register __m256 c01 = _mm256_load_ps((float *)&ans->f32_y[0]);
+
+ 000b6 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000bb 48 6b c0 00 imul rax, rax, 0
+ 000bf 49 8b 8d a0 06
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000c6 48 03 c8 add rcx, rax
+ 000c9 48 8b c1 mov rax, rcx
+ 000cc c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 000d0 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 90 : register __m256 c23 = _mm256_load_ps((float *)&ans->f32_y[1]);
+
+ 000d8 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000dd 48 6b c0 01 imul rax, rax, 1
+ 000e1 49 8b 8d a0 06
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 000e8 48 03 c8 add rcx, rax
+ 000eb 48 8b c1 mov rax, rcx
+ 000ee c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 000f2 c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 91 :
+; 92 : register __m256i b01_shift = _mm256_load_si256(&b01_shift_source);
+
+ 000fa c5 fd 6f 05 00
+ 00 00 00 vmovdqa ymm0, YMMWORD PTR ?b01_shift_source@?1??float_kernel_tile_fma_avx@@9@9
+ 00102 c5 fe 7f 85 40
+ 01 00 00 vmovdqu YMMWORD PTR b01_shift$[rbp], ymm0
+
+; 93 : register __m256i b23_shift = _mm256_load_si256(&b23_shift_source);
+
+ 0010a c5 fd 6f 05 00
+ 00 00 00 vmovdqa ymm0, YMMWORD PTR ?b23_shift_source@?1??float_kernel_tile_fma_avx@@9@9
+ 00112 c5 fe 7f 85 80
+ 01 00 00 vmovdqu YMMWORD PTR b23_shift$[rbp], ymm0
+
+; 94 :
+; 95 : for (size_t k = 0; k < commonK; k++) {
+
+ 0011a 48 c7 85 b8 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 00125 eb 11 jmp SHORT $LN4@float_kern
+$LN2@float_kern:
+ 00127 48 8b 85 b8 01
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 0012e 48 ff c0 inc rax
+ 00131 48 89 85 b8 01
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@float_kern:
+ 00138 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 0013c 48 39 85 b8 01
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 00143 0f 83 0b 03 00
+ 00 jae $LN3@float_kern
+
+; 96 : MAT_KERNEL(float)
+; 97 : const *left_cur = left + GET_INDEX(ansHeight, i, k), // GetKernelAddressUnsafe
+
+ 00149 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 0014c 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00150 48 98 cdqe
+ 00152 48 03 85 b8 01
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00159 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 0015d 49 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR left$[r13]
+ 00164 48 03 c8 add rcx, rax
+ 00167 48 8b c1 mov rax, rcx
+ 0016a 48 89 85 d8 01
+ 00 00 mov QWORD PTR left_cur$2[rbp], rax
+
+; 98 : const *right_cur =
+
+ 00171 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 00174 0f af 45 24 imul eax, DWORD PTR j$[rbp]
+ 00178 48 98 cdqe
+ 0017a 48 03 85 b8 01
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 00181 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00185 49 8b 8d 98 06
+ 00 00 mov rcx, QWORD PTR right$[r13]
+ 0018c 48 03 c8 add rcx, rax
+ 0018f 48 8b c1 mov rax, rcx
+ 00192 48 89 85 f8 01
+ 00 00 mov QWORD PTR right_cur$3[rbp], rax
+
+; 99 : right + GET_INDEX(ansHeight, j, k); // GetKernelAddressUnsafe
+; 100 :
+; 101 : register __m256 a01 = _mm256_load_ps((float *)&left_cur->f32_y[0]);
+
+ 00199 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0019e 48 6b c0 00 imul rax, rax, 0
+ 001a2 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$2[rbp]
+ 001a9 48 03 c8 add rcx, rax
+ 001ac 48 8b c1 mov rax, rcx
+ 001af c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 001b3 c5 fc 11 85 20
+ 02 00 00 vmovups YMMWORD PTR a01$4[rbp], ymm0
+
+; 102 : register __m256 a23 = _mm256_load_ps((float *)&left_cur->f32_y[1]);
+
+ 001bb b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001c0 48 6b c0 01 imul rax, rax, 1
+ 001c4 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$2[rbp]
+ 001cb 48 03 c8 add rcx, rax
+ 001ce 48 8b c1 mov rax, rcx
+ 001d1 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 001d5 c5 fc 11 85 60
+ 02 00 00 vmovups YMMWORD PTR a23$5[rbp], ymm0
+
+; 103 :
+; 104 : register __m256 b01 = _mm256_load_ps((float *)&right_cur->f32_y[0]);
+
+ 001dd b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 001e2 48 6b c0 00 imul rax, rax, 0
+ 001e6 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR right_cur$3[rbp]
+ 001ed 48 03 c8 add rcx, rax
+ 001f0 48 8b c1 mov rax, rcx
+ 001f3 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 001f7 c5 fc 11 85 a0
+ 02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
+
+; 105 : register __m256 b23 = _mm256_load_ps((float *)&right_cur->f32_y[1]);
+
+ 001ff b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00204 48 6b c0 01 imul rax, rax, 1
+ 00208 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR right_cur$3[rbp]
+ 0020f 48 03 c8 add rcx, rax
+ 00212 48 8b c1 mov rax, rcx
+ 00215 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
+ 00219 c5 fc 11 85 e0
+ 02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
+
+; 106 : b01 = _mm256_permutevar_ps(b01, b01_shift);
+
+ 00221 c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 00229 c4 e2 7d 0c 85
+ 40 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b01_shift$[rbp]
+ 00232 c5 fc 11 85 a0
+ 02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
+
+; 107 : b23 = _mm256_permutevar_ps(b23, b23_shift);
+
+ 0023a c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 00242 c4 e2 7d 0c 85
+ 80 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b23_shift$[rbp]
+ 0024b c5 fc 11 85 e0
+ 02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
+
+; 108 :
+; 109 : //group 0
+; 110 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
+
+ 00253 c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 0025b c5 fc c6 85 a0
+ 02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 0
+ 00264 c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 111 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
+
+ 0026c c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 00274 c5 fc c6 85 e0
+ 02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 0
+ 0027d c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 112 : c01 = _mm256_add_ps(_mm256_mul_ps(a01, b01_perm), c01);
+
+ 00285 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 0028d c5 fc 59 85 20
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
+ 00295 c5 fc 58 85 c0
+ 00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 0029d c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 113 : c23 = _mm256_add_ps(_mm256_mul_ps(a23, b23_perm), c23);
+
+ 002a5 c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
+ 002ad c5 fc 59 85 60
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
+ 002b5 c5 fc 58 85 00
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 002bd c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 114 :
+; 115 : //group 2
+; 116 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
+
+ 002c5 c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 002cd c5 fc c6 85 a0
+ 02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 170 ; 000000aaH
+ 002d6 c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 117 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
+
+ 002de c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 002e6 c5 fc c6 85 e0
+ 02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 170 ; 000000aaH
+ 002ef c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 118 : c01 = _mm256_add_ps(_mm256_mul_ps(a23, b01_perm), c01);
+
+ 002f7 c5 fc 10 85 60
+ 02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
+ 002ff c5 fc 59 85 20
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
+ 00307 c5 fc 58 85 c0
+ 00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 0030f c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 119 : c23 = _mm256_add_ps(_mm256_mul_ps(a01, b23_perm), c23);
+
+ 00317 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 0031f c5 fc 59 85 60
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
+ 00327 c5 fc 58 85 00
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 0032f c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 120 :
+; 121 : //group 1
+; 122 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
+
+ 00337 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 0033f c4 e3 7d 06 85
+ 60 02 00 00 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 33 ; 00000021H
+ 00349 c5 fc 11 85 a0
+ 03 00 00 vmovups YMMWORD PTR a12$10[rbp], ymm0
+
+; 123 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
+
+ 00351 c5 fc 10 85 20
+ 02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
+ 00359 c4 e3 7d 06 85
+ 60 02 00 00 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 48 ; 00000030H
+ 00363 c5 fc 11 85 e0
+ 03 00 00 vmovups YMMWORD PTR a30$11[rbp], ymm0
+
+; 124 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
+
+ 0036b c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 00373 c5 fc c6 85 a0
+ 02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 85 ; 00000055H
+ 0037c c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 125 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
+
+ 00384 c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 0038c c5 fc c6 85 e0
+ 02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 85 ; 00000055H
+ 00395 c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 126 : c01 = _mm256_add_ps(_mm256_mul_ps(a12, b01_perm), c01);
+
+ 0039d c5 fc 10 85 a0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
+ 003a5 c5 fc 59 85 20
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
+ 003ad c5 fc 58 85 c0
+ 00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 003b5 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 127 : c23 = _mm256_add_ps(_mm256_mul_ps(a30, b23_perm), c23);
+
+ 003bd c5 fc 10 85 e0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
+ 003c5 c5 fc 59 85 60
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
+ 003cd c5 fc 58 85 00
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 003d5 c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 128 :
+; 129 : //group 3
+; 130 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
+
+ 003dd c5 fc 10 85 a0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
+ 003e5 c5 fc c6 85 a0
+ 02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 255 ; 000000ffH
+ 003ee c5 fc 11 85 20
+ 03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
+
+; 131 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
+
+ 003f6 c5 fc 10 85 e0
+ 02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
+ 003fe c5 fc c6 85 e0
+ 02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 255 ; 000000ffH
+ 00407 c5 fc 11 85 60
+ 03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
+
+; 132 : c01 = _mm256_add_ps(_mm256_mul_ps(a30, b01_perm), c01);
+
+ 0040f c5 fc 10 85 e0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
+ 00417 c5 fc 59 85 20
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
+ 0041f c5 fc 58 85 c0
+ 00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
+ 00427 c5 fc 11 85 c0
+ 00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
+
+; 133 : c23 = _mm256_add_ps(_mm256_mul_ps(a12, b23_perm), c23);
+
+ 0042f c5 fc 10 85 a0
+ 03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
+ 00437 c5 fc 59 85 60
+ 03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
+ 0043f c5 fc 58 85 00
+ 01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
+ 00447 c5 fc 11 85 00
+ 01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
+
+; 134 : }
+
+ 0044f e9 d3 fc ff ff jmp $LN2@float_kern
+$LN3@float_kern:
+
+; 135 : _mm256_store_ps((float *)&ans_cur->f32_y[0], c01);
+
+ 00454 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 00459 48 6b c0 00 imul rax, rax, 0
+ 0045d 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 00464 48 03 c8 add rcx, rax
+ 00467 48 8b c1 mov rax, rcx
+ 0046a c5 fc 10 85 c0
+ 00 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
+ 00472 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
+
+; 136 : _mm256_store_ps((float *)&ans_cur->f32_y[1], c23);
+
+ 00476 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0047b 48 6b c0 01 imul rax, rax, 1
+ 0047f 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 00486 48 03 c8 add rcx, rax
+ 00489 48 8b c1 mov rax, rcx
+ 0048c c5 fc 10 85 00
+ 01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
+ 00494 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
+
+; 137 : }
+
+ 00498 49 8d a5 70 06
+ 00 00 lea rsp, QWORD PTR [r13+1648]
+ 0049f 5f pop rdi
+ 004a0 5d pop rbp
+ 004a1 41 5d pop r13
+ 004a3 c3 ret 0
+float_kernel_tile_fma_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
+; COMDAT float_kernel_tile_fma_sse
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+commonK$ = 68
+ansHeight$ = 100
+ans_cur$ = 136
+c0$ = 176
+c1$ = 224
+c2$ = 272
+c3$ = 320
+bcol$ = 368
+k$1 = 408
+right_cur$2 = 440
+left_cur$3 = 472
+a0$4 = 512
+a1$5 = 560
+a2$6 = 608
+a3$7 = 656
+left$ = 1104
+right$ = 1112
+ans$ = 1120
+enumeration$ = 1128
+float_kernel_tile_fma_sse PROC ; COMDAT
+
+; 15 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 58 04
+ 00 00 sub rsp, 1112 ; 00000458H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 16 : int i = enumeration->m128_i32[0];
+
+ 0002f b8 04 00 00 00 mov eax, 4
+ 00034 48 6b c0 00 imul rax, rax, 0
+ 00038 48 8b 8d 68 04
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 0003f 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00042 89 45 04 mov DWORD PTR i$[rbp], eax
+
+; 17 : int j = enumeration->m128_i32[1];
+
+ 00045 b8 04 00 00 00 mov eax, 4
+ 0004a 48 6b c0 01 imul rax, rax, 1
+ 0004e 48 8b 8d 68 04
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 00055 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00058 89 45 24 mov DWORD PTR j$[rbp], eax
+
+; 18 : int commonK = enumeration->m128_i32[2];
+
+ 0005b b8 04 00 00 00 mov eax, 4
+ 00060 48 6b c0 02 imul rax, rax, 2
+ 00064 48 8b 8d 68 04
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 0006b 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0006e 89 45 44 mov DWORD PTR commonK$[rbp], eax
+
+; 19 : int ansHeight = enumeration->m128_i32[3];
+
+ 00071 b8 04 00 00 00 mov eax, 4
+ 00076 48 6b c0 03 imul rax, rax, 3
+ 0007a 48 8b 8d 68 04
+ 00 00 mov rcx, QWORD PTR enumeration$[rbp]
+ 00081 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00084 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
+
+; 20 :
+; 21 : MAT_KERNEL(float)
+; 22 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
+
+ 00087 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
+ 0008a 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 0008e 03 45 24 add eax, DWORD PTR j$[rbp]
+ 00091 48 98 cdqe
+ 00093 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00097 48 8b 8d 60 04
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0009e 48 03 c8 add rcx, rax
+ 000a1 48 8b c1 mov rax, rcx
+ 000a4 48 89 85 88 00
+ 00 00 mov QWORD PTR ans_cur$[rbp], rax
+
+; 23 :
+; 24 : register __m128 c0 = _mm_load_ps((float *)&ans_cur->f32_x[0]);
+
+ 000ab b8 10 00 00 00 mov eax, 16
+ 000b0 48 6b c0 00 imul rax, rax, 0
+ 000b4 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000bb 48 03 c8 add rcx, rax
+ 000be 48 8b c1 mov rax, rcx
+ 000c1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000c4 0f 29 85 b0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 25 : register __m128 c1 = _mm_load_ps((float *)&ans_cur->f32_x[1]);
+
+ 000cb b8 10 00 00 00 mov eax, 16
+ 000d0 48 6b c0 01 imul rax, rax, 1
+ 000d4 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000db 48 03 c8 add rcx, rax
+ 000de 48 8b c1 mov rax, rcx
+ 000e1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000e4 0f 29 85 e0 00
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 26 : register __m128 c2 = _mm_load_ps((float *)&ans_cur->f32_x[2]);
+
+ 000eb b8 10 00 00 00 mov eax, 16
+ 000f0 48 6b c0 02 imul rax, rax, 2
+ 000f4 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 000fb 48 03 c8 add rcx, rax
+ 000fe 48 8b c1 mov rax, rcx
+ 00101 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00104 0f 29 85 10 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 27 : register __m128 c3 = _mm_load_ps((float *)&ans_cur->f32_x[3]);
+
+ 0010b b8 10 00 00 00 mov eax, 16
+ 00110 48 6b c0 03 imul rax, rax, 3
+ 00114 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 0011b 48 03 c8 add rcx, rax
+ 0011e 48 8b c1 mov rax, rcx
+ 00121 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00124 0f 29 85 40 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 28 : register __m128 bcol;
+; 29 :
+; 30 : for (size_t k = 0; k < commonK; k++) {
+
+ 0012b 48 c7 85 98 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR k$1[rbp], 0
+ 00136 eb 11 jmp SHORT $LN4@float_kern
+$LN2@float_kern:
+ 00138 48 8b 85 98 01
+ 00 00 mov rax, QWORD PTR k$1[rbp]
+ 0013f 48 ff c0 inc rax
+ 00142 48 89 85 98 01
+ 00 00 mov QWORD PTR k$1[rbp], rax
+$LN4@float_kern:
+ 00149 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
+ 0014d 48 39 85 98 01
+ 00 00 cmp QWORD PTR k$1[rbp], rax
+ 00154 0f 83 58 04 00
+ 00 jae $LN3@float_kern
+
+; 31 : MAT_KERNEL(float)
+; 32 : const *right_cur = right + GET_INDEX(commonK, i, k), // GetKernelAddressUnsafe
+
+ 0015a 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
+ 0015d 0f af 45 04 imul eax, DWORD PTR i$[rbp]
+ 00161 48 98 cdqe
+ 00163 48 03 85 98 01
+ 00 00 add rax, QWORD PTR k$1[rbp]
+ 0016a 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 0016e 48 8b 8d 58 04
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00175 48 03 c8 add rcx, rax
+ 00178 48 8b c1 mov rax, rcx
+ 0017b 48 89 85 b8 01
+ 00 00 mov QWORD PTR right_cur$2[rbp], rax
+
+; 33 : const *left_cur =
+
+ 00182 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
+ 00186 48 0f af 85 98
+ 01 00 00 imul rax, QWORD PTR k$1[rbp]
+ 0018e 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
+ 00192 48 03 c1 add rax, rcx
+ 00195 48 6b c0 40 imul rax, rax, 64 ; 00000040H
+ 00199 48 8b 8d 50 04
+ 00 00 mov rcx, QWORD PTR left$[rbp]
+ 001a0 48 03 c8 add rcx, rax
+ 001a3 48 8b c1 mov rax, rcx
+ 001a6 48 89 85 d8 01
+ 00 00 mov QWORD PTR left_cur$3[rbp], rax
+
+; 34 : left + GET_INDEX(ansHeight, k, j); // GetKernelAddressUnsafe
+; 35 :
+; 36 : const __m128 a0 = _mm_load_ps((float *)&left_cur->f32_x[0]);
+
+ 001ad b8 10 00 00 00 mov eax, 16
+ 001b2 48 6b c0 00 imul rax, rax, 0
+ 001b6 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 001bd 48 03 c8 add rcx, rax
+ 001c0 48 8b c1 mov rax, rcx
+ 001c3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001c6 0f 29 85 00 02
+ 00 00 movaps XMMWORD PTR a0$4[rbp], xmm0
+
+; 37 : const __m128 a1 = _mm_load_ps((float *)&left_cur->f32_x[1]);
+
+ 001cd b8 10 00 00 00 mov eax, 16
+ 001d2 48 6b c0 01 imul rax, rax, 1
+ 001d6 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 001dd 48 03 c8 add rcx, rax
+ 001e0 48 8b c1 mov rax, rcx
+ 001e3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 001e6 0f 29 85 30 02
+ 00 00 movaps XMMWORD PTR a1$5[rbp], xmm0
+
+; 38 : const __m128 a2 = _mm_load_ps((float *)&left_cur->f32_x[2]);
+
+ 001ed b8 10 00 00 00 mov eax, 16
+ 001f2 48 6b c0 02 imul rax, rax, 2
+ 001f6 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 001fd 48 03 c8 add rcx, rax
+ 00200 48 8b c1 mov rax, rcx
+ 00203 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00206 0f 29 85 60 02
+ 00 00 movaps XMMWORD PTR a2$6[rbp], xmm0
+
+; 39 : const __m128 a3 = _mm_load_ps((float *)&left_cur->f32_x[3]);
+
+ 0020d b8 10 00 00 00 mov eax, 16
+ 00212 48 6b c0 03 imul rax, rax, 3
+ 00216 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR left_cur$3[rbp]
+ 0021d 48 03 c8 add rcx, rax
+ 00220 48 8b c1 mov rax, rcx
+ 00223 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00226 0f 29 85 90 02
+ 00 00 movaps XMMWORD PTR a3$7[rbp], xmm0
+
+; 40 :
+; 41 : /* Column 0 */
+; 42 : bcol = _mm_load_ps((float *)&right_cur->f32_x[0]);
+
+ 0022d b8 10 00 00 00 mov eax, 16
+ 00232 48 6b c0 00 imul rax, rax, 0
+ 00236 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 0023d 48 03 c8 add rcx, rax
+ 00240 48 8b c1 mov rax, rcx
+ 00243 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00246 0f 29 85 70 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 43 : c0 = _mm_add_ps(c0, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 0024d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00254 0f c6 85 70 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 0025c 0f 28 8d 00 02
+ 00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
+ 00263 0f 59 c8 mulps xmm1, xmm0
+ 00266 0f 28 c1 movaps xmm0, xmm1
+ 00269 0f 28 8d b0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 00270 0f 58 c8 addps xmm1, xmm0
+ 00273 0f 28 c1 movaps xmm0, xmm1
+ 00276 0f 29 85 b0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 44 : c0 = _mm_add_ps(c0, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 0027d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00284 0f c6 85 70 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 0028c 0f 28 8d 30 02
+ 00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
+ 00293 0f 59 c8 mulps xmm1, xmm0
+ 00296 0f 28 c1 movaps xmm0, xmm1
+ 00299 0f 28 8d b0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 002a0 0f 58 c8 addps xmm1, xmm0
+ 002a3 0f 28 c1 movaps xmm0, xmm1
+ 002a6 0f 29 85 b0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 45 : c0 = _mm_add_ps(c0, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 002ad 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 002b4 0f c6 85 70 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 002bc 0f 28 8d 60 02
+ 00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
+ 002c3 0f 59 c8 mulps xmm1, xmm0
+ 002c6 0f 28 c1 movaps xmm0, xmm1
+ 002c9 0f 28 8d b0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 002d0 0f 58 c8 addps xmm1, xmm0
+ 002d3 0f 28 c1 movaps xmm0, xmm1
+ 002d6 0f 29 85 b0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 46 : c0 = _mm_add_ps(c0, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 002dd 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 002e4 0f c6 85 70 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 002ec 0f 28 8d 90 02
+ 00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
+ 002f3 0f 59 c8 mulps xmm1, xmm0
+ 002f6 0f 28 c1 movaps xmm0, xmm1
+ 002f9 0f 28 8d b0 00
+ 00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
+ 00300 0f 58 c8 addps xmm1, xmm0
+ 00303 0f 28 c1 movaps xmm0, xmm1
+ 00306 0f 29 85 b0 00
+ 00 00 movaps XMMWORD PTR c0$[rbp], xmm0
+
+; 47 :
+; 48 : /* Column 1 */
+; 49 : bcol = _mm_load_ps((float *)&right_cur->f32_x[1]);
+
+ 0030d b8 10 00 00 00 mov eax, 16
+ 00312 48 6b c0 01 imul rax, rax, 1
+ 00316 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 0031d 48 03 c8 add rcx, rax
+ 00320 48 8b c1 mov rax, rcx
+ 00323 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00326 0f 29 85 70 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 50 : c1 = _mm_add_ps(c1, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 0032d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00334 0f c6 85 70 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 0033c 0f 28 8d 00 02
+ 00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
+ 00343 0f 59 c8 mulps xmm1, xmm0
+ 00346 0f 28 c1 movaps xmm0, xmm1
+ 00349 0f 28 8d e0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 00350 0f 58 c8 addps xmm1, xmm0
+ 00353 0f 28 c1 movaps xmm0, xmm1
+ 00356 0f 29 85 e0 00
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 51 : c1 = _mm_add_ps(c1, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 0035d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00364 0f c6 85 70 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 0036c 0f 28 8d 30 02
+ 00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
+ 00373 0f 59 c8 mulps xmm1, xmm0
+ 00376 0f 28 c1 movaps xmm0, xmm1
+ 00379 0f 28 8d e0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 00380 0f 58 c8 addps xmm1, xmm0
+ 00383 0f 28 c1 movaps xmm0, xmm1
+ 00386 0f 29 85 e0 00
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 52 : c1 = _mm_add_ps(c1, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 0038d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00394 0f c6 85 70 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 0039c 0f 28 8d 60 02
+ 00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
+ 003a3 0f 59 c8 mulps xmm1, xmm0
+ 003a6 0f 28 c1 movaps xmm0, xmm1
+ 003a9 0f 28 8d e0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 003b0 0f 58 c8 addps xmm1, xmm0
+ 003b3 0f 28 c1 movaps xmm0, xmm1
+ 003b6 0f 29 85 e0 00
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 53 : c1 = _mm_add_ps(c1, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 003bd 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 003c4 0f c6 85 70 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 003cc 0f 28 8d 90 02
+ 00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
+ 003d3 0f 59 c8 mulps xmm1, xmm0
+ 003d6 0f 28 c1 movaps xmm0, xmm1
+ 003d9 0f 28 8d e0 00
+ 00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
+ 003e0 0f 58 c8 addps xmm1, xmm0
+ 003e3 0f 28 c1 movaps xmm0, xmm1
+ 003e6 0f 29 85 e0 00
+ 00 00 movaps XMMWORD PTR c1$[rbp], xmm0
+
+; 54 :
+; 55 : /* Column 2 */
+; 56 : bcol = _mm_load_ps((float *)&right_cur->f32_x[2]);
+
+ 003ed b8 10 00 00 00 mov eax, 16
+ 003f2 48 6b c0 02 imul rax, rax, 2
+ 003f6 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 003fd 48 03 c8 add rcx, rax
+ 00400 48 8b c1 mov rax, rcx
+ 00403 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00406 0f 29 85 70 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 57 : c2 = _mm_add_ps(c2, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 0040d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00414 0f c6 85 70 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 0041c 0f 28 8d 00 02
+ 00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
+ 00423 0f 59 c8 mulps xmm1, xmm0
+ 00426 0f 28 c1 movaps xmm0, xmm1
+ 00429 0f 28 8d 10 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 00430 0f 58 c8 addps xmm1, xmm0
+ 00433 0f 28 c1 movaps xmm0, xmm1
+ 00436 0f 29 85 10 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 58 : c2 = _mm_add_ps(c2, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 0043d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00444 0f c6 85 70 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 0044c 0f 28 8d 30 02
+ 00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
+ 00453 0f 59 c8 mulps xmm1, xmm0
+ 00456 0f 28 c1 movaps xmm0, xmm1
+ 00459 0f 28 8d 10 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 00460 0f 58 c8 addps xmm1, xmm0
+ 00463 0f 28 c1 movaps xmm0, xmm1
+ 00466 0f 29 85 10 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 59 : c2 = _mm_add_ps(c2, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 0046d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00474 0f c6 85 70 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 0047c 0f 28 8d 60 02
+ 00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
+ 00483 0f 59 c8 mulps xmm1, xmm0
+ 00486 0f 28 c1 movaps xmm0, xmm1
+ 00489 0f 28 8d 10 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 00490 0f 58 c8 addps xmm1, xmm0
+ 00493 0f 28 c1 movaps xmm0, xmm1
+ 00496 0f 29 85 10 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 60 : c2 = _mm_add_ps(c2, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 0049d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 004a4 0f c6 85 70 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 004ac 0f 28 8d 90 02
+ 00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
+ 004b3 0f 59 c8 mulps xmm1, xmm0
+ 004b6 0f 28 c1 movaps xmm0, xmm1
+ 004b9 0f 28 8d 10 01
+ 00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
+ 004c0 0f 58 c8 addps xmm1, xmm0
+ 004c3 0f 28 c1 movaps xmm0, xmm1
+ 004c6 0f 29 85 10 01
+ 00 00 movaps XMMWORD PTR c2$[rbp], xmm0
+
+; 61 :
+; 62 : /* Column 3 */
+; 63 : bcol = _mm_load_ps((float *)&right_cur->f32_x[3]);
+
+ 004cd b8 10 00 00 00 mov eax, 16
+ 004d2 48 6b c0 03 imul rax, rax, 3
+ 004d6 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR right_cur$2[rbp]
+ 004dd 48 03 c8 add rcx, rax
+ 004e0 48 8b c1 mov rax, rcx
+ 004e3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 004e6 0f 29 85 70 01
+ 00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
+
+; 64 : c3 = _mm_add_ps(c3, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
+
+ 004ed 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 004f4 0f c6 85 70 01
+ 00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
+ 004fc 0f 28 8d 00 02
+ 00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
+ 00503 0f 59 c8 mulps xmm1, xmm0
+ 00506 0f 28 c1 movaps xmm0, xmm1
+ 00509 0f 28 8d 40 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 00510 0f 58 c8 addps xmm1, xmm0
+ 00513 0f 28 c1 movaps xmm0, xmm1
+ 00516 0f 29 85 40 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 65 : c3 = _mm_add_ps(c3, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
+
+ 0051d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00524 0f c6 85 70 01
+ 00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
+ 0052c 0f 28 8d 30 02
+ 00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
+ 00533 0f 59 c8 mulps xmm1, xmm0
+ 00536 0f 28 c1 movaps xmm0, xmm1
+ 00539 0f 28 8d 40 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 00540 0f 58 c8 addps xmm1, xmm0
+ 00543 0f 28 c1 movaps xmm0, xmm1
+ 00546 0f 29 85 40 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 66 : c3 = _mm_add_ps(c3, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
+
+ 0054d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00554 0f c6 85 70 01
+ 00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
+ 0055c 0f 28 8d 60 02
+ 00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
+ 00563 0f 59 c8 mulps xmm1, xmm0
+ 00566 0f 28 c1 movaps xmm0, xmm1
+ 00569 0f 28 8d 40 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 00570 0f 58 c8 addps xmm1, xmm0
+ 00573 0f 28 c1 movaps xmm0, xmm1
+ 00576 0f 29 85 40 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 67 : c3 = _mm_add_ps(c3, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
+
+ 0057d 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
+ 00584 0f c6 85 70 01
+ 00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
+ 0058c 0f 28 8d 90 02
+ 00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
+ 00593 0f 59 c8 mulps xmm1, xmm0
+ 00596 0f 28 c1 movaps xmm0, xmm1
+ 00599 0f 28 8d 40 01
+ 00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
+ 005a0 0f 58 c8 addps xmm1, xmm0
+ 005a3 0f 28 c1 movaps xmm0, xmm1
+ 005a6 0f 29 85 40 01
+ 00 00 movaps XMMWORD PTR c3$[rbp], xmm0
+
+; 68 : }
+
+ 005ad e9 86 fb ff ff jmp $LN2@float_kern
+$LN3@float_kern:
+
+; 69 :
+; 70 : _mm_store_ps((float *)&ans_cur->f32_x[0], c0);
+
+ 005b2 b8 10 00 00 00 mov eax, 16
+ 005b7 48 6b c0 00 imul rax, rax, 0
+ 005bb 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 005c2 48 03 c8 add rcx, rax
+ 005c5 48 8b c1 mov rax, rcx
+ 005c8 0f 28 85 b0 00
+ 00 00 movaps xmm0, XMMWORD PTR c0$[rbp]
+ 005cf 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 71 : _mm_store_ps((float *)&ans_cur->f32_x[1], c1);
+
+ 005d2 b8 10 00 00 00 mov eax, 16
+ 005d7 48 6b c0 01 imul rax, rax, 1
+ 005db 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 005e2 48 03 c8 add rcx, rax
+ 005e5 48 8b c1 mov rax, rcx
+ 005e8 0f 28 85 e0 00
+ 00 00 movaps xmm0, XMMWORD PTR c1$[rbp]
+ 005ef 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 72 : _mm_store_ps((float *)&ans_cur->f32_x[2], c2);
+
+ 005f2 b8 10 00 00 00 mov eax, 16
+ 005f7 48 6b c0 02 imul rax, rax, 2
+ 005fb 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 00602 48 03 c8 add rcx, rax
+ 00605 48 8b c1 mov rax, rcx
+ 00608 0f 28 85 10 01
+ 00 00 movaps xmm0, XMMWORD PTR c2$[rbp]
+ 0060f 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 73 : _mm_store_ps((float *)&ans_cur->f32_x[3], c3);
+
+ 00612 b8 10 00 00 00 mov eax, 16
+ 00617 48 6b c0 03 imul rax, rax, 3
+ 0061b 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR ans_cur$[rbp]
+ 00622 48 03 c8 add rcx, rax
+ 00625 48 8b c1 mov rax, rcx
+ 00628 0f 28 85 40 01
+ 00 00 movaps xmm0, XMMWORD PTR c3$[rbp]
+ 0062f 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 74 : }
+
+ 00632 48 8d a5 38 04
+ 00 00 lea rsp, QWORD PTR [rbp+1080]
+ 00639 5f pop rdi
+ 0063a 5d pop rbp
+ 0063b c3 ret 0
+float_kernel_tile_fma_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..6450b268
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.nativecodeanalysis.sarif
@@ -0,0 +1,131 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/m.fma_tile.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "847e77a8f1e5cfe756b7c5b91299cb08c2688d335ff57dc6599363fb75217480"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrincontext.x86.h"
+ },
+ "hashes": {
+ "sha-256": "bbc00ee7320b30ca1234dc7908e4695ff6d5bb2ba3224e4ffaed345010ba8f48"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.fma_tile.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.solve.x86.cod b/obj/StgSharp.Native/Debug/x64/m.solve.x86.cod
new file mode 100644
index 00000000..56b7eb17
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.solve.x86.cod
@@ -0,0 +1,2012 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__1D9A7FA2_corecrt_math@h DB 01H
+__2E93F1C0_math@h DB 01H
+__26377312_m@solve@x86@c DB 01H
+msvcjmc ENDS
+CONST SEGMENT
+quality_threshold DD 0358637bdr ; 1e-06
+ ORG $+12
+?tiny_source@?1??float_kernel_quality_sse@@9@9 DD 0358637bdr ; 1e-06 ; `float_kernel_quality_sse'::`2'::tiny_source
+ DD 0358637bdr ; 1e-06
+ DD 0358637bdr ; 1e-06
+ DD 0358637bdr ; 1e-06
+CONST ENDS
+PUBLIC fabsf
+PUBLIC float_kernel_try_plu_sse
+PUBLIC float_kernel_quality_sse
+PUBLIC __JustMyCode_Default
+PUBLIC __real@00000000
+PUBLIC __real@2b8cbccc
+PUBLIC __real@3f800000
+EXTRN fabs:PROC
+EXTRN _RTC_CheckStackVars:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+EXTRN __GSHandlerCheck:PROC
+EXTRN __security_check_cookie:PROC
+EXTRN __security_cookie:QWORD
+EXTRN _fltused:DWORD
+; COMDAT pdata
+pdata SEGMENT
+$pdata$fabsf DD imagerel $LN3
+ DD imagerel $LN3+60
+ DD imagerel $unwind$fabsf
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_try_plu_sse DD imagerel $LN31
+ DD imagerel $LN31+1633
+ DD imagerel $unwind$float_kernel_try_plu_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$float_kernel_quality_sse DD imagerel $LN40
+ DD imagerel $LN40+2560
+ DD imagerel $unwind$float_kernel_quality_sse
+pdata ENDS
+; COMDAT __real@3f800000
+CONST SEGMENT
+__real@3f800000 DD 03f800000r ; 1
+CONST ENDS
+; COMDAT __real@2b8cbccc
+CONST SEGMENT
+__real@2b8cbccc DD 02b8cbcccr ; 1e-12
+CONST ENDS
+; COMDAT __real@00000000
+CONST SEGMENT
+__real@00000000 DD 000000000r ; 0
+CONST ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 03bH
+ DW 09e7H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_quality_sse DD 025054219H
+ DD 01132318H
+ DD 0700c017fH
+ DD 0500bH
+ DD imagerel __GSHandlerCheck
+ DD 0be8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+float_kernel_quality_sse$rtcName$0 DB 073H
+ DB 065H
+ DB 06cH
+ DB 066H
+ DB 05fH
+ DB 064H
+ DB 06fH
+ DB 074H
+ DB 05fH
+ DB 073H
+ DB 072H
+ DB 063H
+ DB 00H
+ ORG $+3
+float_kernel_quality_sse$rtcName$1 DB 063H
+ DB 072H
+ DB 06fH
+ DB 073H
+ DB 073H
+ DB 05fH
+ DB 064H
+ DB 06fH
+ DB 074H
+ DB 05fH
+ DB 073H
+ DB 072H
+ DB 063H
+ DB 00H
+ ORG $+2
+float_kernel_quality_sse$rtcVarDesc DD 0470H
+ DD 020H
+ DQ FLAT:float_kernel_quality_sse$rtcName$1
+ DD 0120H
+ DD 010H
+ DQ FLAT:float_kernel_quality_sse$rtcName$0
+ ORG $+96
+float_kernel_quality_sse$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:float_kernel_quality_sse$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 050H
+ DW 0646H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$float_kernel_try_plu_sse DD 02d065719H
+ DD 011f2324H
+ DD 0701800aaH
+ DD 0d0165017H
+ DD imagerel __GSHandlerCheck
+ DD 04ecH
+ DD 060H
+ DD 040H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+float_kernel_try_plu_sse$rtcName$0 DB 061H
+ DB 00H
+ ORG $+14
+float_kernel_try_plu_sse$rtcVarDesc DD 0e0H
+ DD 040H
+ DQ FLAT:float_kernel_try_plu_sse$rtcName$0
+ ORG $+48
+float_kernel_try_plu_sse$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:float_kernel_try_plu_sse$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$fabsf DD 035051401H
+ DD 010f3314H
+ DD 07008001fH
+ DD 05007H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c
+; COMDAT float_kernel_quality_sse
+_TEXT SEGMENT
+tiny$ = 16
+col0$ = 64
+col1$ = 112
+col2$ = 160
+col3$ = 208
+self_dot_src$ = 256
+_p$5 = 304
+_t$6 = 352
+_p$7 = 400
+_t$8 = 448
+_p$9 = 496
+_t$10 = 544
+_p$11 = 592
+_t$12 = 640
+self_dot$ = 688
+max$ = 736
+_t$13 = 784
+col_shuff_1$ = 832
+col_shuff_2$ = 880
+col_shuff_3$ = 928
+min$ = 976
+min0$ = 1024
+quality$ = 1060
+cross_dot_src$ = 1104
+_p$14 = 1168
+_t$15 = 1216
+_p$16 = 1264
+_t$17 = 1312
+_p$18 = 1360
+_t$19 = 1408
+_p$20 = 1456
+_t$21 = 1504
+_p$22 = 1552
+_t$23 = 1600
+_p$24 = 1648
+_t$25 = 1696
+cross_dot_0$ = 1744
+cross_dot_1$ = 1792
+base_0$ = 1840
+base_1$ = 1888
+relation_0$ = 1936
+relation_1$ = 1984
+_t$26 = 2032
+tv142 = 3012
+tv164 = 3012
+tv186 = 3012
+tv208 = 3012
+tv255 = 3012
+tv286 = 3012
+tv311 = 3012
+tv368 = 3012
+tv393 = 3012
+tv418 = 3012
+tv443 = 3012
+tv514 = 3012
+__$ArrayPad$ = 3016
+right$ = 3056
+ans$ = 3064
+float_kernel_quality_sse PROC ; COMDAT
+
+; 115 : {
+
+$LN40:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec f8 0b
+ 00 00 sub rsp, 3064 ; 00000bf8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001d b9 06 02 00 00 mov ecx, 518 ; 00000206H
+ 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00027 f3 ab rep stosd
+ 00029 48 8b 8c 24 18
+ 0c 00 00 mov rcx, QWORD PTR [rsp+3096]
+ 00031 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00038 48 33 c5 xor rax, rbp
+ 0003b 48 89 85 c8 0b
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00042 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__26377312_m@solve@x86@c
+ 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004e 90 npad 1
+
+; 116 : static const __m128 tiny_source = { .m128_f32 = { 1e-6f, 1e-6f, 1e-6f, 1e-6f } };
+; 117 :
+; 118 : register __m128 tiny = _mm_load_ps(tiny_source.m128_f32);
+
+ 0004f 0f 28 05 00 00
+ 00 00 movaps xmm0, XMMWORD PTR ?tiny_source@?1??float_kernel_quality_sse@@9@9
+ 00056 0f 29 45 10 movaps XMMWORD PTR tiny$[rbp], xmm0
+
+; 119 :
+; 120 : register __m128 col0 = _mm_load_ps((float *)&right->f32_x[0]);
+
+ 0005a b8 10 00 00 00 mov eax, 16
+ 0005f 48 6b c0 00 imul rax, rax, 0
+ 00063 48 8b 8d f0 0b
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 0006a 48 03 c8 add rcx, rax
+ 0006d 48 8b c1 mov rax, rcx
+ 00070 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00073 0f 29 45 40 movaps XMMWORD PTR col0$[rbp], xmm0
+
+; 121 : register __m128 col1 = _mm_load_ps((float *)&right->f32_x[1]);
+
+ 00077 b8 10 00 00 00 mov eax, 16
+ 0007c 48 6b c0 01 imul rax, rax, 1
+ 00080 48 8b 8d f0 0b
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 00087 48 03 c8 add rcx, rax
+ 0008a 48 8b c1 mov rax, rcx
+ 0008d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00090 0f 29 45 70 movaps XMMWORD PTR col1$[rbp], xmm0
+
+; 122 : register __m128 col2 = _mm_load_ps((float *)&right->f32_x[2]);
+
+ 00094 b8 10 00 00 00 mov eax, 16
+ 00099 48 6b c0 02 imul rax, rax, 2
+ 0009d 48 8b 8d f0 0b
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000a4 48 03 c8 add rcx, rax
+ 000a7 48 8b c1 mov rax, rcx
+ 000aa 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000ad 0f 29 85 a0 00
+ 00 00 movaps XMMWORD PTR col2$[rbp], xmm0
+
+; 123 : register __m128 col3 = _mm_load_ps((float *)&right->f32_x[3]);
+
+ 000b4 b8 10 00 00 00 mov eax, 16
+ 000b9 48 6b c0 03 imul rax, rax, 3
+ 000bd 48 8b 8d f0 0b
+ 00 00 mov rcx, QWORD PTR right$[rbp]
+ 000c4 48 03 c8 add rcx, rax
+ 000c7 48 8b c1 mov rax, rcx
+ 000ca 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 000cd 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR col3$[rbp], xmm0
+
+; 124 :
+; 125 : __m128 self_dot_src = { 0 };
+
+ 000d4 48 8d 85 00 01
+ 00 00 lea rax, QWORD PTR self_dot_src$[rbp]
+ 000db 48 8b f8 mov rdi, rax
+ 000de 33 c0 xor eax, eax
+ 000e0 b9 10 00 00 00 mov ecx, 16
+ 000e5 f3 aa rep stosb
+$LN4@float_kern:
+
+; 126 : // try in reigister mix later
+; 127 : DOT_F32_SSE(col0, col0, self_dot_src.m128_f32[0]);
+
+ 000e7 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
+ 000eb 0f 59 45 40 mulps xmm0, XMMWORD PTR col0$[rbp]
+ 000ef 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR _p$5[rbp], xmm0
+ 000f6 0f 28 85 30 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
+ 000fd 0f c6 85 30 01
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$5[rbp], 177 ; 000000b1H
+ 00105 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR _t$6[rbp], xmm0
+ 0010c 0f 28 85 30 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
+ 00113 0f 58 85 60 01
+ 00 00 addps xmm0, XMMWORD PTR _t$6[rbp]
+ 0011a 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR _p$5[rbp], xmm0
+ 00121 0f 28 85 30 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
+ 00128 0f 28 8d 60 01
+ 00 00 movaps xmm1, XMMWORD PTR _t$6[rbp]
+ 0012f 0f 12 c8 movhlps xmm1, xmm0
+ 00132 0f 28 c1 movaps xmm0, xmm1
+ 00135 0f 29 85 60 01
+ 00 00 movaps XMMWORD PTR _t$6[rbp], xmm0
+ 0013c 0f 28 85 30 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
+ 00143 f3 0f 58 85 60
+ 01 00 00 addss xmm0, DWORD PTR _t$6[rbp]
+ 0014b f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv142[rbp], xmm0
+ 00153 b8 04 00 00 00 mov eax, 4
+ 00158 48 6b c0 00 imul rax, rax, 0
+ 0015c f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv142[rbp]
+ 00164 f3 0f 11 84 05
+ 00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
+ 0016d 33 c0 xor eax, eax
+ 0016f 85 c0 test eax, eax
+ 00171 0f 85 70 ff ff
+ ff jne $LN4@float_kern
+$LN7@float_kern:
+
+; 128 : DOT_F32_SSE(col1, col1, self_dot_src.m128_f32[1]);
+
+ 00177 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
+ 0017b 0f 59 45 70 mulps xmm0, XMMWORD PTR col1$[rbp]
+ 0017f 0f 29 85 90 01
+ 00 00 movaps XMMWORD PTR _p$7[rbp], xmm0
+ 00186 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
+ 0018d 0f c6 85 90 01
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$7[rbp], 177 ; 000000b1H
+ 00195 0f 29 85 c0 01
+ 00 00 movaps XMMWORD PTR _t$8[rbp], xmm0
+ 0019c 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
+ 001a3 0f 58 85 c0 01
+ 00 00 addps xmm0, XMMWORD PTR _t$8[rbp]
+ 001aa 0f 29 85 90 01
+ 00 00 movaps XMMWORD PTR _p$7[rbp], xmm0
+ 001b1 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
+ 001b8 0f 28 8d c0 01
+ 00 00 movaps xmm1, XMMWORD PTR _t$8[rbp]
+ 001bf 0f 12 c8 movhlps xmm1, xmm0
+ 001c2 0f 28 c1 movaps xmm0, xmm1
+ 001c5 0f 29 85 c0 01
+ 00 00 movaps XMMWORD PTR _t$8[rbp], xmm0
+ 001cc 0f 28 85 90 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
+ 001d3 f3 0f 58 85 c0
+ 01 00 00 addss xmm0, DWORD PTR _t$8[rbp]
+ 001db f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv164[rbp], xmm0
+ 001e3 b8 04 00 00 00 mov eax, 4
+ 001e8 48 6b c0 01 imul rax, rax, 1
+ 001ec f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv164[rbp]
+ 001f4 f3 0f 11 84 05
+ 00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
+ 001fd 33 c0 xor eax, eax
+ 001ff 85 c0 test eax, eax
+ 00201 0f 85 70 ff ff
+ ff jne $LN7@float_kern
+$LN10@float_kern:
+
+; 129 : DOT_F32_SSE(col2, col2, self_dot_src.m128_f32[2]);
+
+ 00207 0f 28 85 a0 00
+ 00 00 movaps xmm0, XMMWORD PTR col2$[rbp]
+ 0020e 0f 59 85 a0 00
+ 00 00 mulps xmm0, XMMWORD PTR col2$[rbp]
+ 00215 0f 29 85 f0 01
+ 00 00 movaps XMMWORD PTR _p$9[rbp], xmm0
+ 0021c 0f 28 85 f0 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
+ 00223 0f c6 85 f0 01
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$9[rbp], 177 ; 000000b1H
+ 0022b 0f 29 85 20 02
+ 00 00 movaps XMMWORD PTR _t$10[rbp], xmm0
+ 00232 0f 28 85 f0 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
+ 00239 0f 58 85 20 02
+ 00 00 addps xmm0, XMMWORD PTR _t$10[rbp]
+ 00240 0f 29 85 f0 01
+ 00 00 movaps XMMWORD PTR _p$9[rbp], xmm0
+ 00247 0f 28 85 f0 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
+ 0024e 0f 28 8d 20 02
+ 00 00 movaps xmm1, XMMWORD PTR _t$10[rbp]
+ 00255 0f 12 c8 movhlps xmm1, xmm0
+ 00258 0f 28 c1 movaps xmm0, xmm1
+ 0025b 0f 29 85 20 02
+ 00 00 movaps XMMWORD PTR _t$10[rbp], xmm0
+ 00262 0f 28 85 f0 01
+ 00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
+ 00269 f3 0f 58 85 20
+ 02 00 00 addss xmm0, DWORD PTR _t$10[rbp]
+ 00271 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv186[rbp], xmm0
+ 00279 b8 04 00 00 00 mov eax, 4
+ 0027e 48 6b c0 02 imul rax, rax, 2
+ 00282 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv186[rbp]
+ 0028a f3 0f 11 84 05
+ 00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
+ 00293 33 c0 xor eax, eax
+ 00295 85 c0 test eax, eax
+ 00297 0f 85 6a ff ff
+ ff jne $LN10@float_kern
+$LN13@float_kern:
+
+; 130 : DOT_F32_SSE(col3, col3, self_dot_src.m128_f32[3]);
+
+ 0029d 0f 28 85 d0 00
+ 00 00 movaps xmm0, XMMWORD PTR col3$[rbp]
+ 002a4 0f 59 85 d0 00
+ 00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
+ 002ab 0f 29 85 50 02
+ 00 00 movaps XMMWORD PTR _p$11[rbp], xmm0
+ 002b2 0f 28 85 50 02
+ 00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
+ 002b9 0f c6 85 50 02
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$11[rbp], 177 ; 000000b1H
+ 002c1 0f 29 85 80 02
+ 00 00 movaps XMMWORD PTR _t$12[rbp], xmm0
+ 002c8 0f 28 85 50 02
+ 00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
+ 002cf 0f 58 85 80 02
+ 00 00 addps xmm0, XMMWORD PTR _t$12[rbp]
+ 002d6 0f 29 85 50 02
+ 00 00 movaps XMMWORD PTR _p$11[rbp], xmm0
+ 002dd 0f 28 85 50 02
+ 00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
+ 002e4 0f 28 8d 80 02
+ 00 00 movaps xmm1, XMMWORD PTR _t$12[rbp]
+ 002eb 0f 12 c8 movhlps xmm1, xmm0
+ 002ee 0f 28 c1 movaps xmm0, xmm1
+ 002f1 0f 29 85 80 02
+ 00 00 movaps XMMWORD PTR _t$12[rbp], xmm0
+ 002f8 0f 28 85 50 02
+ 00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
+ 002ff f3 0f 58 85 80
+ 02 00 00 addss xmm0, DWORD PTR _t$12[rbp]
+ 00307 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv208[rbp], xmm0
+ 0030f b8 04 00 00 00 mov eax, 4
+ 00314 48 6b c0 03 imul rax, rax, 3
+ 00318 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv208[rbp]
+ 00320 f3 0f 11 84 05
+ 00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
+ 00329 33 c0 xor eax, eax
+ 0032b 85 c0 test eax, eax
+ 0032d 0f 85 6a ff ff
+ ff jne $LN13@float_kern
+
+; 131 :
+; 132 : register __m128 self_dot = _mm_load_ps(self_dot_src.m128_f32);
+
+ 00333 0f 28 85 00 01
+ 00 00 movaps xmm0, XMMWORD PTR self_dot_src$[rbp]
+ 0033a 0f 29 85 b0 02
+ 00 00 movaps XMMWORD PTR self_dot$[rbp], xmm0
+$LN16@float_kern:
+
+; 133 :
+; 134 : register __m128 max;
+; 135 : FIND_MAX_F32_SSE(self_dot, max);
+
+ 00341 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 00348 0f 28 8d b0 02
+ 00 00 movaps xmm1, XMMWORD PTR self_dot$[rbp]
+ 0034f 0f 12 c8 movhlps xmm1, xmm0
+ 00352 0f 28 c1 movaps xmm0, xmm1
+ 00355 0f 29 85 10 03
+ 00 00 movaps XMMWORD PTR _t$13[rbp], xmm0
+ 0035c 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 00363 0f 5f 85 10 03
+ 00 00 maxps xmm0, XMMWORD PTR _t$13[rbp]
+ 0036a 0f 29 85 b0 02
+ 00 00 movaps XMMWORD PTR self_dot$[rbp], xmm0
+ 00371 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 00378 0f c6 85 b0 02
+ 00 00 b1 shufps xmm0, XMMWORD PTR self_dot$[rbp], 177 ; 000000b1H
+ 00380 0f 29 85 10 03
+ 00 00 movaps XMMWORD PTR _t$13[rbp], xmm0
+ 00387 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 0038e 0f 5f 85 10 03
+ 00 00 maxps xmm0, XMMWORD PTR _t$13[rbp]
+ 00395 0f 29 85 e0 02
+ 00 00 movaps XMMWORD PTR max$[rbp], xmm0
+ 0039c 33 c0 xor eax, eax
+ 0039e 85 c0 test eax, eax
+ 003a0 75 9f jne SHORT $LN16@float_kern
+
+; 136 : //float norm = _mm_cvtss_f32(max);
+; 137 :
+; 138 : // min on cross
+; 139 : register __m128 col_shuff_1 = _mm_shuffle_ps(col1, col1, _MM_SHUFFLE(0, 3, 2, 1));
+
+ 003a2 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
+ 003a6 0f c6 45 70 39 shufps xmm0, XMMWORD PTR col1$[rbp], 57 ; 00000039H
+ 003ab 0f 29 85 40 03
+ 00 00 movaps XMMWORD PTR col_shuff_1$[rbp], xmm0
+
+; 140 : register __m128 col_shuff_2 = _mm_shuffle_ps(col2, col2, _MM_SHUFFLE(1, 0, 3, 2));
+
+ 003b2 0f 28 85 a0 00
+ 00 00 movaps xmm0, XMMWORD PTR col2$[rbp]
+ 003b9 0f c6 85 a0 00
+ 00 00 4e shufps xmm0, XMMWORD PTR col2$[rbp], 78 ; 0000004eH
+ 003c1 0f 29 85 70 03
+ 00 00 movaps XMMWORD PTR col_shuff_2$[rbp], xmm0
+
+; 141 : register __m128 col_shuff_3 = _mm_shuffle_ps(col3, col3, _MM_SHUFFLE(2, 1, 0, 3));
+
+ 003c8 0f 28 85 d0 00
+ 00 00 movaps xmm0, XMMWORD PTR col3$[rbp]
+ 003cf 0f c6 85 d0 00
+ 00 00 93 shufps xmm0, XMMWORD PTR col3$[rbp], 147 ; 00000093H
+ 003d7 0f 29 85 a0 03
+ 00 00 movaps XMMWORD PTR col_shuff_3$[rbp], xmm0
+
+; 142 : register __m128 min = _mm_min_ps(col0, col_shuff_1);
+
+ 003de 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
+ 003e2 0f 5d 85 40 03
+ 00 00 minps xmm0, XMMWORD PTR col_shuff_1$[rbp]
+ 003e9 0f 29 85 d0 03
+ 00 00 movaps XMMWORD PTR min$[rbp], xmm0
+
+; 143 : register __m128 min0 = _mm_min_ps(col_shuff_2, col_shuff_3);
+
+ 003f0 0f 28 85 70 03
+ 00 00 movaps xmm0, XMMWORD PTR col_shuff_2$[rbp]
+ 003f7 0f 5d 85 a0 03
+ 00 00 minps xmm0, XMMWORD PTR col_shuff_3$[rbp]
+ 003fe 0f 29 85 00 04
+ 00 00 movaps XMMWORD PTR min0$[rbp], xmm0
+
+; 144 : min = _mm_min_ps(min, min0);
+
+ 00405 0f 28 85 d0 03
+ 00 00 movaps xmm0, XMMWORD PTR min$[rbp]
+ 0040c 0f 5d 85 00 04
+ 00 00 minps xmm0, XMMWORD PTR min0$[rbp]
+ 00413 0f 29 85 d0 03
+ 00 00 movaps XMMWORD PTR min$[rbp], xmm0
+
+; 145 :
+; 146 : float quality = _mm_cvtss_f32(_mm_div_ps(min, _mm_add_ps(max, tiny)));
+
+ 0041a 0f 28 85 e0 02
+ 00 00 movaps xmm0, XMMWORD PTR max$[rbp]
+ 00421 0f 58 45 10 addps xmm0, XMMWORD PTR tiny$[rbp]
+ 00425 0f 28 8d d0 03
+ 00 00 movaps xmm1, XMMWORD PTR min$[rbp]
+ 0042c 0f 5e c8 divps xmm1, xmm0
+ 0042f 0f 28 c1 movaps xmm0, xmm1
+ 00432 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv255[rbp], xmm0
+ 0043a f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv255[rbp]
+ 00442 f3 0f 11 85 24
+ 04 00 00 movss DWORD PTR quality$[rbp], xmm0
+
+; 147 : ans->f32_x[0].m128_f32[0] = quality;
+
+ 0044a b8 10 00 00 00 mov eax, 16
+ 0044f 48 6b c0 00 imul rax, rax, 0
+ 00453 48 8b 8d f8 0b
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0045a 48 03 c8 add rcx, rax
+ 0045d 48 8b c1 mov rax, rcx
+ 00460 b9 04 00 00 00 mov ecx, 4
+ 00465 48 6b c9 00 imul rcx, rcx, 0
+ 00469 f3 0f 10 85 24
+ 04 00 00 movss xmm0, DWORD PTR quality$[rbp]
+ 00471 f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+
+; 148 : if (quality < quality_threshold) {
+
+ 00476 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR quality_threshold
+ 0047e 0f 2f 85 24 04
+ 00 00 comiss xmm0, DWORD PTR quality$[rbp]
+ 00485 76 05 jbe SHORT $LN38@float_kern
+
+; 149 : return;
+
+ 00487 e9 4b 05 00 00 jmp $LN1@float_kern
+$LN38@float_kern:
+$LN19@float_kern:
+
+; 150 : }
+; 151 :
+; 152 : __m128 cross_dot_src[2];
+; 153 : DOT_F32_SSE(col0, col1, cross_dot_src[0].m128_f32[0]);
+
+ 0048c 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
+ 00490 0f 59 45 70 mulps xmm0, XMMWORD PTR col1$[rbp]
+ 00494 0f 29 85 90 04
+ 00 00 movaps XMMWORD PTR _p$14[rbp], xmm0
+ 0049b 0f 28 85 90 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
+ 004a2 0f c6 85 90 04
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$14[rbp], 177 ; 000000b1H
+ 004aa 0f 29 85 c0 04
+ 00 00 movaps XMMWORD PTR _t$15[rbp], xmm0
+ 004b1 0f 28 85 90 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
+ 004b8 0f 58 85 c0 04
+ 00 00 addps xmm0, XMMWORD PTR _t$15[rbp]
+ 004bf 0f 29 85 90 04
+ 00 00 movaps XMMWORD PTR _p$14[rbp], xmm0
+ 004c6 0f 28 85 90 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
+ 004cd 0f 28 8d c0 04
+ 00 00 movaps xmm1, XMMWORD PTR _t$15[rbp]
+ 004d4 0f 12 c8 movhlps xmm1, xmm0
+ 004d7 0f 28 c1 movaps xmm0, xmm1
+ 004da 0f 29 85 c0 04
+ 00 00 movaps XMMWORD PTR _t$15[rbp], xmm0
+ 004e1 0f 28 85 90 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
+ 004e8 f3 0f 58 85 c0
+ 04 00 00 addss xmm0, DWORD PTR _t$15[rbp]
+ 004f0 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv286[rbp], xmm0
+ 004f8 b8 10 00 00 00 mov eax, 16
+ 004fd 48 6b c0 00 imul rax, rax, 0
+ 00501 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 00509 b9 04 00 00 00 mov ecx, 4
+ 0050e 48 6b c9 00 imul rcx, rcx, 0
+ 00512 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv286[rbp]
+ 0051a f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+ 0051f 33 c0 xor eax, eax
+ 00521 85 c0 test eax, eax
+ 00523 0f 85 63 ff ff
+ ff jne $LN19@float_kern
+$LN22@float_kern:
+
+; 154 : DOT_F32_SSE(col0, col2, cross_dot_src[0].m128_f32[1]);
+
+ 00529 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
+ 0052d 0f 59 85 a0 00
+ 00 00 mulps xmm0, XMMWORD PTR col2$[rbp]
+ 00534 0f 29 85 f0 04
+ 00 00 movaps XMMWORD PTR _p$16[rbp], xmm0
+ 0053b 0f 28 85 f0 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
+ 00542 0f c6 85 f0 04
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$16[rbp], 177 ; 000000b1H
+ 0054a 0f 29 85 20 05
+ 00 00 movaps XMMWORD PTR _t$17[rbp], xmm0
+ 00551 0f 28 85 f0 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
+ 00558 0f 58 85 20 05
+ 00 00 addps xmm0, XMMWORD PTR _t$17[rbp]
+ 0055f 0f 29 85 f0 04
+ 00 00 movaps XMMWORD PTR _p$16[rbp], xmm0
+ 00566 0f 28 85 f0 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
+ 0056d 0f 28 8d 20 05
+ 00 00 movaps xmm1, XMMWORD PTR _t$17[rbp]
+ 00574 0f 12 c8 movhlps xmm1, xmm0
+ 00577 0f 28 c1 movaps xmm0, xmm1
+ 0057a 0f 29 85 20 05
+ 00 00 movaps XMMWORD PTR _t$17[rbp], xmm0
+ 00581 0f 28 85 f0 04
+ 00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
+ 00588 f3 0f 58 85 20
+ 05 00 00 addss xmm0, DWORD PTR _t$17[rbp]
+ 00590 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv311[rbp], xmm0
+ 00598 b8 10 00 00 00 mov eax, 16
+ 0059d 48 6b c0 00 imul rax, rax, 0
+ 005a1 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 005a9 b9 04 00 00 00 mov ecx, 4
+ 005ae 48 6b c9 01 imul rcx, rcx, 1
+ 005b2 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv311[rbp]
+ 005ba f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+ 005bf 33 c0 xor eax, eax
+ 005c1 85 c0 test eax, eax
+ 005c3 0f 85 60 ff ff
+ ff jne $LN22@float_kern
+$LN25@float_kern:
+
+; 155 : DOT_F32_SSE(col0, col3, cross_dot_src[0].m128_f32[2]);
+
+ 005c9 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
+ 005cd 0f 59 85 d0 00
+ 00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
+ 005d4 0f 29 85 50 05
+ 00 00 movaps XMMWORD PTR _p$18[rbp], xmm0
+ 005db 0f 28 85 50 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
+ 005e2 0f c6 85 50 05
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$18[rbp], 177 ; 000000b1H
+ 005ea 0f 29 85 80 05
+ 00 00 movaps XMMWORD PTR _t$19[rbp], xmm0
+ 005f1 0f 28 85 50 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
+ 005f8 0f 58 85 80 05
+ 00 00 addps xmm0, XMMWORD PTR _t$19[rbp]
+ 005ff 0f 29 85 50 05
+ 00 00 movaps XMMWORD PTR _p$18[rbp], xmm0
+ 00606 0f 28 85 50 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
+ 0060d 0f 28 8d 80 05
+ 00 00 movaps xmm1, XMMWORD PTR _t$19[rbp]
+ 00614 0f 12 c8 movhlps xmm1, xmm0
+ 00617 0f 28 c1 movaps xmm0, xmm1
+ 0061a 0f 29 85 80 05
+ 00 00 movaps XMMWORD PTR _t$19[rbp], xmm0
+ 00621 0f 28 85 50 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
+ 00628 f3 0f 58 85 80
+ 05 00 00 addss xmm0, DWORD PTR _t$19[rbp]
+ 00630 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv368[rbp], xmm0
+ 00638 b8 10 00 00 00 mov eax, 16
+ 0063d 48 6b c0 00 imul rax, rax, 0
+ 00641 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 00649 b9 04 00 00 00 mov ecx, 4
+ 0064e 48 6b c9 02 imul rcx, rcx, 2
+ 00652 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv368[rbp]
+ 0065a f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+ 0065f 33 c0 xor eax, eax
+ 00661 85 c0 test eax, eax
+ 00663 0f 85 60 ff ff
+ ff jne $LN25@float_kern
+$LN28@float_kern:
+
+; 156 : DOT_F32_SSE(col1, col2, cross_dot_src[0].m128_f32[3]);
+
+ 00669 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
+ 0066d 0f 59 85 a0 00
+ 00 00 mulps xmm0, XMMWORD PTR col2$[rbp]
+ 00674 0f 29 85 b0 05
+ 00 00 movaps XMMWORD PTR _p$20[rbp], xmm0
+ 0067b 0f 28 85 b0 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
+ 00682 0f c6 85 b0 05
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$20[rbp], 177 ; 000000b1H
+ 0068a 0f 29 85 e0 05
+ 00 00 movaps XMMWORD PTR _t$21[rbp], xmm0
+ 00691 0f 28 85 b0 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
+ 00698 0f 58 85 e0 05
+ 00 00 addps xmm0, XMMWORD PTR _t$21[rbp]
+ 0069f 0f 29 85 b0 05
+ 00 00 movaps XMMWORD PTR _p$20[rbp], xmm0
+ 006a6 0f 28 85 b0 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
+ 006ad 0f 28 8d e0 05
+ 00 00 movaps xmm1, XMMWORD PTR _t$21[rbp]
+ 006b4 0f 12 c8 movhlps xmm1, xmm0
+ 006b7 0f 28 c1 movaps xmm0, xmm1
+ 006ba 0f 29 85 e0 05
+ 00 00 movaps XMMWORD PTR _t$21[rbp], xmm0
+ 006c1 0f 28 85 b0 05
+ 00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
+ 006c8 f3 0f 58 85 e0
+ 05 00 00 addss xmm0, DWORD PTR _t$21[rbp]
+ 006d0 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv393[rbp], xmm0
+ 006d8 b8 10 00 00 00 mov eax, 16
+ 006dd 48 6b c0 00 imul rax, rax, 0
+ 006e1 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 006e9 b9 04 00 00 00 mov ecx, 4
+ 006ee 48 6b c9 03 imul rcx, rcx, 3
+ 006f2 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv393[rbp]
+ 006fa f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+ 006ff 33 c0 xor eax, eax
+ 00701 85 c0 test eax, eax
+ 00703 0f 85 60 ff ff
+ ff jne $LN28@float_kern
+$LN31@float_kern:
+
+; 157 : DOT_F32_SSE(col1, col3, cross_dot_src[1].m128_f32[0]);
+
+ 00709 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
+ 0070d 0f 59 85 d0 00
+ 00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
+ 00714 0f 29 85 10 06
+ 00 00 movaps XMMWORD PTR _p$22[rbp], xmm0
+ 0071b 0f 28 85 10 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
+ 00722 0f c6 85 10 06
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$22[rbp], 177 ; 000000b1H
+ 0072a 0f 29 85 40 06
+ 00 00 movaps XMMWORD PTR _t$23[rbp], xmm0
+ 00731 0f 28 85 10 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
+ 00738 0f 58 85 40 06
+ 00 00 addps xmm0, XMMWORD PTR _t$23[rbp]
+ 0073f 0f 29 85 10 06
+ 00 00 movaps XMMWORD PTR _p$22[rbp], xmm0
+ 00746 0f 28 85 10 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
+ 0074d 0f 28 8d 40 06
+ 00 00 movaps xmm1, XMMWORD PTR _t$23[rbp]
+ 00754 0f 12 c8 movhlps xmm1, xmm0
+ 00757 0f 28 c1 movaps xmm0, xmm1
+ 0075a 0f 29 85 40 06
+ 00 00 movaps XMMWORD PTR _t$23[rbp], xmm0
+ 00761 0f 28 85 10 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
+ 00768 f3 0f 58 85 40
+ 06 00 00 addss xmm0, DWORD PTR _t$23[rbp]
+ 00770 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv418[rbp], xmm0
+ 00778 b8 10 00 00 00 mov eax, 16
+ 0077d 48 6b c0 01 imul rax, rax, 1
+ 00781 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 00789 b9 04 00 00 00 mov ecx, 4
+ 0078e 48 6b c9 00 imul rcx, rcx, 0
+ 00792 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv418[rbp]
+ 0079a f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+ 0079f 33 c0 xor eax, eax
+ 007a1 85 c0 test eax, eax
+ 007a3 0f 85 60 ff ff
+ ff jne $LN31@float_kern
+$LN34@float_kern:
+
+; 158 : DOT_F32_SSE(col2, col3, cross_dot_src[1].m128_f32[1]);
+
+ 007a9 0f 28 85 a0 00
+ 00 00 movaps xmm0, XMMWORD PTR col2$[rbp]
+ 007b0 0f 59 85 d0 00
+ 00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
+ 007b7 0f 29 85 70 06
+ 00 00 movaps XMMWORD PTR _p$24[rbp], xmm0
+ 007be 0f 28 85 70 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
+ 007c5 0f c6 85 70 06
+ 00 00 b1 shufps xmm0, XMMWORD PTR _p$24[rbp], 177 ; 000000b1H
+ 007cd 0f 29 85 a0 06
+ 00 00 movaps XMMWORD PTR _t$25[rbp], xmm0
+ 007d4 0f 28 85 70 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
+ 007db 0f 58 85 a0 06
+ 00 00 addps xmm0, XMMWORD PTR _t$25[rbp]
+ 007e2 0f 29 85 70 06
+ 00 00 movaps XMMWORD PTR _p$24[rbp], xmm0
+ 007e9 0f 28 85 70 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
+ 007f0 0f 28 8d a0 06
+ 00 00 movaps xmm1, XMMWORD PTR _t$25[rbp]
+ 007f7 0f 12 c8 movhlps xmm1, xmm0
+ 007fa 0f 28 c1 movaps xmm0, xmm1
+ 007fd 0f 29 85 a0 06
+ 00 00 movaps XMMWORD PTR _t$25[rbp], xmm0
+ 00804 0f 28 85 70 06
+ 00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
+ 0080b f3 0f 58 85 a0
+ 06 00 00 addss xmm0, DWORD PTR _t$25[rbp]
+ 00813 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv443[rbp], xmm0
+ 0081b b8 10 00 00 00 mov eax, 16
+ 00820 48 6b c0 01 imul rax, rax, 1
+ 00824 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 0082c b9 04 00 00 00 mov ecx, 4
+ 00831 48 6b c9 01 imul rcx, rcx, 1
+ 00835 f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv443[rbp]
+ 0083d f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+ 00842 33 c0 xor eax, eax
+ 00844 85 c0 test eax, eax
+ 00846 0f 85 5d ff ff
+ ff jne $LN34@float_kern
+
+; 159 :
+; 160 : register __m128 cross_dot_0 = _mm_load_ps(cross_dot_src[0].m128_f32);
+
+ 0084c b8 10 00 00 00 mov eax, 16
+ 00851 48 6b c0 00 imul rax, rax, 0
+ 00855 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 0085d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00860 0f 29 85 d0 06
+ 00 00 movaps XMMWORD PTR cross_dot_0$[rbp], xmm0
+
+; 161 : register __m128 cross_dot_1 = _mm_load_ps(cross_dot_src[1].m128_f32);
+
+ 00867 b8 10 00 00 00 mov eax, 16
+ 0086c 48 6b c0 01 imul rax, rax, 1
+ 00870 48 8d 84 05 50
+ 04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
+ 00878 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0087b 0f 29 85 00 07
+ 00 00 movaps XMMWORD PTR cross_dot_1$[rbp], xmm0
+
+; 162 :
+; 163 : register __m128 base_0 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(1, 0, 0, 0));
+
+ 00882 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 00889 0f c6 85 b0 02
+ 00 00 40 shufps xmm0, XMMWORD PTR self_dot$[rbp], 64 ; 00000040H
+ 00891 0f 29 85 30 07
+ 00 00 movaps XMMWORD PTR base_0$[rbp], xmm0
+
+; 164 : register __m128 base_1 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(3, 3, 2, 1));
+
+ 00898 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 0089f 0f c6 85 b0 02
+ 00 00 f9 shufps xmm0, XMMWORD PTR self_dot$[rbp], 249 ; 000000f9H
+ 008a7 0f 29 85 60 07
+ 00 00 movaps XMMWORD PTR base_1$[rbp], xmm0
+
+; 165 :
+; 166 : register __m128 relation_0 =
+
+ 008ae 0f 28 85 30 07
+ 00 00 movaps xmm0, XMMWORD PTR base_0$[rbp]
+ 008b5 0f 59 85 60 07
+ 00 00 mulps xmm0, XMMWORD PTR base_1$[rbp]
+ 008bc 0f 58 45 10 addps xmm0, XMMWORD PTR tiny$[rbp]
+ 008c0 0f 28 8d d0 06
+ 00 00 movaps xmm1, XMMWORD PTR cross_dot_0$[rbp]
+ 008c7 0f 5e c8 divps xmm1, xmm0
+ 008ca 0f 28 c1 movaps xmm0, xmm1
+ 008cd 0f 29 85 90 07
+ 00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
+
+; 167 : _mm_div_ps(cross_dot_0, _mm_add_ps(_mm_mul_ps(base_0, base_1), tiny));
+; 168 :
+; 169 : base_0 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(2, 3, 2, 1));
+
+ 008d4 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 008db 0f c6 85 b0 02
+ 00 00 b9 shufps xmm0, XMMWORD PTR self_dot$[rbp], 185 ; 000000b9H
+ 008e3 0f 29 85 30 07
+ 00 00 movaps XMMWORD PTR base_0$[rbp], xmm0
+
+; 170 : base_1 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(3, 3, 3, 3));
+
+ 008ea 0f 28 85 b0 02
+ 00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
+ 008f1 0f c6 85 b0 02
+ 00 00 ff shufps xmm0, XMMWORD PTR self_dot$[rbp], 255 ; 000000ffH
+ 008f9 0f 29 85 60 07
+ 00 00 movaps XMMWORD PTR base_1$[rbp], xmm0
+
+; 171 :
+; 172 : register __m128 relation_1 =
+
+ 00900 0f 28 85 30 07
+ 00 00 movaps xmm0, XMMWORD PTR base_0$[rbp]
+ 00907 0f 59 85 60 07
+ 00 00 mulps xmm0, XMMWORD PTR base_1$[rbp]
+ 0090e 0f 58 45 10 addps xmm0, XMMWORD PTR tiny$[rbp]
+ 00912 0f 28 8d d0 06
+ 00 00 movaps xmm1, XMMWORD PTR cross_dot_0$[rbp]
+ 00919 0f 5e c8 divps xmm1, xmm0
+ 0091c 0f 28 c1 movaps xmm0, xmm1
+ 0091f 0f 29 85 c0 07
+ 00 00 movaps XMMWORD PTR relation_1$[rbp], xmm0
+
+; 173 : _mm_div_ps(cross_dot_0, _mm_add_ps(_mm_mul_ps(base_0, base_1), tiny));
+; 174 :
+; 175 : relation_0 = _mm_max_ps(relation_0, relation_1);
+
+ 00926 0f 28 85 90 07
+ 00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
+ 0092d 0f 5f 85 c0 07
+ 00 00 maxps xmm0, XMMWORD PTR relation_1$[rbp]
+ 00934 0f 29 85 90 07
+ 00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
+$LN37@float_kern:
+
+; 176 : FIND_MAX_F32_SSE(relation_0, relation_0);
+
+ 0093b 0f 28 85 90 07
+ 00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
+ 00942 0f 28 8d 90 07
+ 00 00 movaps xmm1, XMMWORD PTR relation_0$[rbp]
+ 00949 0f 12 c8 movhlps xmm1, xmm0
+ 0094c 0f 28 c1 movaps xmm0, xmm1
+ 0094f 0f 29 85 f0 07
+ 00 00 movaps XMMWORD PTR _t$26[rbp], xmm0
+ 00956 0f 28 85 90 07
+ 00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
+ 0095d 0f 5f 85 f0 07
+ 00 00 maxps xmm0, XMMWORD PTR _t$26[rbp]
+ 00964 0f 29 85 90 07
+ 00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
+ 0096b 0f 28 85 90 07
+ 00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
+ 00972 0f c6 85 90 07
+ 00 00 b1 shufps xmm0, XMMWORD PTR relation_0$[rbp], 177 ; 000000b1H
+ 0097a 0f 29 85 f0 07
+ 00 00 movaps XMMWORD PTR _t$26[rbp], xmm0
+ 00981 0f 28 85 90 07
+ 00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
+ 00988 0f 5f 85 f0 07
+ 00 00 maxps xmm0, XMMWORD PTR _t$26[rbp]
+ 0098f 0f 29 85 90 07
+ 00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
+ 00996 33 c0 xor eax, eax
+ 00998 85 c0 test eax, eax
+ 0099a 75 9f jne SHORT $LN37@float_kern
+
+; 177 : ans->f32_x[0].m128_f32[1] = _mm_cvtss_f32(relation_0);
+
+ 0099c 0f 28 85 90 07
+ 00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
+ 009a3 f3 0f 11 85 c4
+ 0b 00 00 movss DWORD PTR tv514[rbp], xmm0
+ 009ab b8 10 00 00 00 mov eax, 16
+ 009b0 48 6b c0 00 imul rax, rax, 0
+ 009b4 48 8b 8d f8 0b
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 009bb 48 03 c8 add rcx, rax
+ 009be 48 8b c1 mov rax, rcx
+ 009c1 b9 04 00 00 00 mov ecx, 4
+ 009c6 48 6b c9 01 imul rcx, rcx, 1
+ 009ca f3 0f 10 85 c4
+ 0b 00 00 movss xmm0, DWORD PTR tv514[rbp]
+ 009d2 f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
+$LN1@float_kern:
+
+; 178 : }
+
+ 009d7 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 009db 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_quality_sse$rtcFrameData
+ 009e2 e8 00 00 00 00 call _RTC_CheckStackVars
+ 009e7 48 8b 8d c8 0b
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 009ee 48 33 cd xor rcx, rbp
+ 009f1 e8 00 00 00 00 call __security_check_cookie
+ 009f6 48 8d a5 d8 0b
+ 00 00 lea rsp, QWORD PTR [rbp+3032]
+ 009fd 5f pop rdi
+ 009fe 5d pop rbp
+ 009ff c3 ret 0
+float_kernel_quality_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c
+; COMDAT float_kernel_try_plu_sse
+_TEXT SEGMENT
+upper$ = 8
+lower$ = 40
+source$ = 72
+pivot$ = 104
+success$ = 136
+a$ = 192
+z$ = 288
+c$4 = 324
+col$5 = 368
+eps$ = 404
+k$6 = 436
+p$7 = 468
+maxabs$8 = 500
+r$9 = 532
+v$10 = 564
+c$11 = 596
+tmp$12 = 628
+tmpi$13 = 660
+pivot_val$14 = 692
+r$15 = 724
+factor$16 = 756
+c$17 = 788
+c$18 = 820
+d$19 = 852
+__$ArrayPad$ = 1256
+left$ = 1360
+right$ = 1368
+ans$ = 1376
+scalar$ = 1384
+float_kernel_try_plu_sse PROC ; COMDAT
+
+; 11 : {
+
+$LN31:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 41 55 push r13
+ 00016 55 push rbp
+ 00017 57 push rdi
+ 00018 48 81 ec 50 05
+ 00 00 sub rsp, 1360 ; 00000550H
+ 0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
+ 00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
+ 0002d 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00032 b9 ec 00 00 00 mov ecx, 236 ; 000000ecH
+ 00037 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 0003c f3 ab rep stosd
+ 0003e 48 8b 8c 24 78
+ 05 00 00 mov rcx, QWORD PTR [rsp+1400]
+ 00046 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 0004d 49 33 c5 xor rax, r13
+ 00050 48 89 85 e8 04
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00057 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__26377312_m@solve@x86@c
+ 0005e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00063 90 npad 1
+
+; 12 : /* Aliases */
+; 13 : MAT_KERNEL(float) *upper = left; /* U */
+
+ 00064 49 8b 85 50 05
+ 00 00 mov rax, QWORD PTR left$[r13]
+ 0006b 48 89 45 08 mov QWORD PTR upper$[rbp], rax
+
+; 14 : MAT_KERNEL(float) *lower = right; /* L (unit diag) */
+
+ 0006f 49 8b 85 58 05
+ 00 00 mov rax, QWORD PTR right$[r13]
+ 00076 48 89 45 28 mov QWORD PTR lower$[rbp], rax
+
+; 15 : MAT_KERNEL(float) *source = ans; /* A */
+
+ 0007a 49 8b 85 60 05
+ 00 00 mov rax, QWORD PTR ans$[r13]
+ 00081 48 89 45 48 mov QWORD PTR source$[rbp], rax
+
+; 16 : unsigned char *pivot = (unsigned char *)&scalar->data[0]; /* length = 4 */
+
+ 00085 b8 08 00 00 00 mov eax, 8
+ 0008a 48 6b c0 00 imul rax, rax, 0
+ 0008e 49 8b 8d 68 05
+ 00 00 mov rcx, QWORD PTR scalar$[r13]
+ 00095 48 03 c8 add rcx, rax
+ 00098 48 8b c1 mov rax, rcx
+ 0009b 48 89 45 68 mov QWORD PTR pivot$[rbp], rax
+
+; 17 : int *success = (int *)&scalar->data[1];
+
+ 0009f b8 08 00 00 00 mov eax, 8
+ 000a4 48 6b c0 01 imul rax, rax, 1
+ 000a8 49 8b 8d 68 05
+ 00 00 mov rcx, QWORD PTR scalar$[r13]
+ 000af 48 03 c8 add rcx, rax
+ 000b2 48 8b c1 mov rax, rcx
+ 000b5 48 89 85 88 00
+ 00 00 mov QWORD PTR success$[rbp], rax
+
+; 18 :
+; 19 : /* Init permutation and outputs */
+; 20 : pivot[0] = 0;
+
+ 000bc b8 01 00 00 00 mov eax, 1
+ 000c1 48 6b c0 00 imul rax, rax, 0
+ 000c5 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
+ 000c9 c6 04 01 00 mov BYTE PTR [rcx+rax], 0
+
+; 21 : pivot[1] = 1;
+
+ 000cd b8 01 00 00 00 mov eax, 1
+ 000d2 48 6b c0 01 imul rax, rax, 1
+ 000d6 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
+ 000da c6 04 01 01 mov BYTE PTR [rcx+rax], 1
+
+; 22 : pivot[2] = 2;
+
+ 000de b8 01 00 00 00 mov eax, 1
+ 000e3 48 6b c0 02 imul rax, rax, 2
+ 000e7 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
+ 000eb c6 04 01 02 mov BYTE PTR [rcx+rax], 2
+
+; 23 : pivot[3] = 3;
+
+ 000ef b8 01 00 00 00 mov eax, 1
+ 000f4 48 6b c0 03 imul rax, rax, 3
+ 000f8 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
+ 000fc c6 04 01 03 mov BYTE PTR [rcx+rax], 3
+
+; 24 : *success = 1;
+
+ 00100 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR success$[rbp]
+ 00107 c7 00 01 00 00
+ 00 mov DWORD PTR [rax], 1
+
+; 25 :
+; 26 : /* Working copy of A in column-major a[col][row], load via SIMD view */
+; 27 : MAT_KERNEL(float) a;
+; 28 : const __m128 z = _mm_setzero_ps();
+
+ 0010d 0f 57 c0 xorps xmm0, xmm0
+ 00110 0f 29 85 20 01
+ 00 00 movaps XMMWORD PTR z$[rbp], xmm0
+
+; 29 : for (int c = 0; c < 4; ++c) {
+
+ 00117 c7 85 44 01 00
+ 00 00 00 00 00 mov DWORD PTR c$4[rbp], 0
+ 00121 eb 0e jmp SHORT $LN4@float_kern
+$LN2@float_kern:
+ 00123 8b 85 44 01 00
+ 00 mov eax, DWORD PTR c$4[rbp]
+ 00129 ff c0 inc eax
+ 0012b 89 85 44 01 00
+ 00 mov DWORD PTR c$4[rbp], eax
+$LN4@float_kern:
+ 00131 83 bd 44 01 00
+ 00 04 cmp DWORD PTR c$4[rbp], 4
+ 00138 7d 7f jge SHORT $LN3@float_kern
+
+; 30 : __m128 col = _mm_load_ps((float *)&source->f32_x[c]);
+
+ 0013a 48 63 85 44 01
+ 00 00 movsxd rax, DWORD PTR c$4[rbp]
+ 00141 48 6b c0 10 imul rax, rax, 16
+ 00145 48 8b 4d 48 mov rcx, QWORD PTR source$[rbp]
+ 00149 48 03 c8 add rcx, rax
+ 0014c 48 8b c1 mov rax, rcx
+ 0014f 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 00152 0f 29 85 70 01
+ 00 00 movaps XMMWORD PTR col$5[rbp], xmm0
+
+; 31 : _mm_storeu_ps((float *)&a.f32_x[c], col);
+
+ 00159 48 63 85 44 01
+ 00 00 movsxd rax, DWORD PTR c$4[rbp]
+ 00160 48 6b c0 10 imul rax, rax, 16
+ 00164 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 0016c 0f 28 85 70 01
+ 00 00 movaps xmm0, XMMWORD PTR col$5[rbp]
+ 00173 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 32 : _mm_store_ps((float *)&upper->f32_x[c], z);
+
+ 00176 48 63 85 44 01
+ 00 00 movsxd rax, DWORD PTR c$4[rbp]
+ 0017d 48 6b c0 10 imul rax, rax, 16
+ 00181 48 8b 4d 08 mov rcx, QWORD PTR upper$[rbp]
+ 00185 48 03 c8 add rcx, rax
+ 00188 48 8b c1 mov rax, rcx
+ 0018b 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR z$[rbp]
+ 00192 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 33 : _mm_store_ps((float *)&lower->f32_x[c], z);
+
+ 00195 48 63 85 44 01
+ 00 00 movsxd rax, DWORD PTR c$4[rbp]
+ 0019c 48 6b c0 10 imul rax, rax, 16
+ 001a0 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
+ 001a4 48 03 c8 add rcx, rax
+ 001a7 48 8b c1 mov rax, rcx
+ 001aa 0f 28 85 20 01
+ 00 00 movaps xmm0, XMMWORD PTR z$[rbp]
+ 001b1 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 34 : }
+
+ 001b4 e9 6a ff ff ff jmp $LN2@float_kern
+$LN3@float_kern:
+
+; 35 :
+; 36 : const float eps = 1e-12f;
+
+ 001b9 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@2b8cbccc
+ 001c1 f3 0f 11 85 94
+ 01 00 00 movss DWORD PTR eps$[rbp], xmm0
+
+; 37 :
+; 38 : for (int k = 0; k < 4; ++k) {
+
+ 001c9 c7 85 b4 01 00
+ 00 00 00 00 00 mov DWORD PTR k$6[rbp], 0
+ 001d3 eb 0e jmp SHORT $LN7@float_kern
+$LN5@float_kern:
+ 001d5 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR k$6[rbp]
+ 001db ff c0 inc eax
+ 001dd 89 85 b4 01 00
+ 00 mov DWORD PTR k$6[rbp], eax
+$LN7@float_kern:
+ 001e3 83 bd b4 01 00
+ 00 04 cmp DWORD PTR k$6[rbp], 4
+ 001ea 0f 8d cc 03 00
+ 00 jge $LN6@float_kern
+
+; 39 : /* Pivot search on column k, rows k..3 */
+; 40 : int p = k;
+
+ 001f0 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR k$6[rbp]
+ 001f6 89 85 d4 01 00
+ 00 mov DWORD PTR p$7[rbp], eax
+
+; 41 : float maxabs = fabsf(a.m[k][p]);
+
+ 001fc 48 63 85 b4 01
+ 00 00 movsxd rax, DWORD PTR k$6[rbp]
+ 00203 48 6b c0 10 imul rax, rax, 16
+ 00207 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 0020f 48 63 8d d4 01
+ 00 00 movsxd rcx, DWORD PTR p$7[rbp]
+ 00216 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 0021b e8 00 00 00 00 call fabsf
+ 00220 f3 0f 11 85 f4
+ 01 00 00 movss DWORD PTR maxabs$8[rbp], xmm0
+
+; 42 : for (int r = k + 1; r < 4; ++r) {
+
+ 00228 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR k$6[rbp]
+ 0022e ff c0 inc eax
+ 00230 89 85 14 02 00
+ 00 mov DWORD PTR r$9[rbp], eax
+ 00236 eb 0e jmp SHORT $LN10@float_kern
+$LN8@float_kern:
+ 00238 8b 85 14 02 00
+ 00 mov eax, DWORD PTR r$9[rbp]
+ 0023e ff c0 inc eax
+ 00240 89 85 14 02 00
+ 00 mov DWORD PTR r$9[rbp], eax
+$LN10@float_kern:
+ 00246 83 bd 14 02 00
+ 00 04 cmp DWORD PTR r$9[rbp], 4
+ 0024d 7d 5b jge SHORT $LN9@float_kern
+
+; 43 : float v = fabsf(a.m[k][r]);
+
+ 0024f 48 63 85 b4 01
+ 00 00 movsxd rax, DWORD PTR k$6[rbp]
+ 00256 48 6b c0 10 imul rax, rax, 16
+ 0025a 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 00262 48 63 8d 14 02
+ 00 00 movsxd rcx, DWORD PTR r$9[rbp]
+ 00269 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 0026e e8 00 00 00 00 call fabsf
+ 00273 f3 0f 11 85 34
+ 02 00 00 movss DWORD PTR v$10[rbp], xmm0
+
+; 44 : if (v > maxabs) {
+
+ 0027b f3 0f 10 85 34
+ 02 00 00 movss xmm0, DWORD PTR v$10[rbp]
+ 00283 0f 2f 85 f4 01
+ 00 00 comiss xmm0, DWORD PTR maxabs$8[rbp]
+ 0028a 76 1c jbe SHORT $LN26@float_kern
+
+; 45 : maxabs = v;
+
+ 0028c f3 0f 10 85 34
+ 02 00 00 movss xmm0, DWORD PTR v$10[rbp]
+ 00294 f3 0f 11 85 f4
+ 01 00 00 movss DWORD PTR maxabs$8[rbp], xmm0
+
+; 46 : p = r;
+
+ 0029c 8b 85 14 02 00
+ 00 mov eax, DWORD PTR r$9[rbp]
+ 002a2 89 85 d4 01 00
+ 00 mov DWORD PTR p$7[rbp], eax
+$LN26@float_kern:
+
+; 47 : }
+; 48 : }
+
+ 002a8 eb 8e jmp SHORT $LN8@float_kern
+$LN9@float_kern:
+
+; 49 :
+; 50 : if (maxabs < eps) {
+
+ 002aa f3 0f 10 85 94
+ 01 00 00 movss xmm0, DWORD PTR eps$[rbp]
+ 002b2 0f 2f 85 f4 01
+ 00 00 comiss xmm0, DWORD PTR maxabs$8[rbp]
+ 002b9 76 12 jbe SHORT $LN27@float_kern
+
+; 51 : *success = 0;
+
+ 002bb 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR success$[rbp]
+ 002c2 c7 00 00 00 00
+ 00 mov DWORD PTR [rax], 0
+
+; 52 : /* leave outputs zeroed */
+; 53 : return;
+
+ 002c8 e9 69 03 00 00 jmp $LN1@float_kern
+$LN27@float_kern:
+
+; 54 : }
+; 55 :
+; 56 : /* Swap rows if needed */
+; 57 : if (p != k) {
+
+ 002cd 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR k$6[rbp]
+ 002d3 39 85 d4 01 00
+ 00 cmp DWORD PTR p$7[rbp], eax
+ 002d9 0f 84 01 01 00
+ 00 je $LN28@float_kern
+
+; 58 : for (int c = 0; c < 4; ++c) {
+
+ 002df c7 85 54 02 00
+ 00 00 00 00 00 mov DWORD PTR c$11[rbp], 0
+ 002e9 eb 0e jmp SHORT $LN13@float_kern
+$LN11@float_kern:
+ 002eb 8b 85 54 02 00
+ 00 mov eax, DWORD PTR c$11[rbp]
+ 002f1 ff c0 inc eax
+ 002f3 89 85 54 02 00
+ 00 mov DWORD PTR c$11[rbp], eax
+$LN13@float_kern:
+ 002f9 83 bd 54 02 00
+ 00 04 cmp DWORD PTR c$11[rbp], 4
+ 00300 0f 8d 92 00 00
+ 00 jge $LN12@float_kern
+
+; 59 : float tmp = a.m[c][k];
+
+ 00306 48 63 85 54 02
+ 00 00 movsxd rax, DWORD PTR c$11[rbp]
+ 0030d 48 6b c0 10 imul rax, rax, 16
+ 00311 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 00319 48 63 8d b4 01
+ 00 00 movsxd rcx, DWORD PTR k$6[rbp]
+ 00320 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 00325 f3 0f 11 85 74
+ 02 00 00 movss DWORD PTR tmp$12[rbp], xmm0
+
+; 60 : a.m[c][k] = a.m[c][p];
+
+ 0032d 48 63 85 54 02
+ 00 00 movsxd rax, DWORD PTR c$11[rbp]
+ 00334 48 6b c0 10 imul rax, rax, 16
+ 00338 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 00340 48 63 8d d4 01
+ 00 00 movsxd rcx, DWORD PTR p$7[rbp]
+ 00347 48 63 95 54 02
+ 00 00 movsxd rdx, DWORD PTR c$11[rbp]
+ 0034e 48 6b d2 10 imul rdx, rdx, 16
+ 00352 48 8d 94 15 c0
+ 00 00 00 lea rdx, QWORD PTR a$[rbp+rdx]
+ 0035a 4c 63 85 b4 01
+ 00 00 movsxd r8, DWORD PTR k$6[rbp]
+ 00361 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 00366 f3 42 0f 11 04
+ 82 movss DWORD PTR [rdx+r8*4], xmm0
+
+; 61 : a.m[c][p] = tmp;
+
+ 0036c 48 63 85 54 02
+ 00 00 movsxd rax, DWORD PTR c$11[rbp]
+ 00373 48 6b c0 10 imul rax, rax, 16
+ 00377 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 0037f 48 63 8d d4 01
+ 00 00 movsxd rcx, DWORD PTR p$7[rbp]
+ 00386 f3 0f 10 85 74
+ 02 00 00 movss xmm0, DWORD PTR tmp$12[rbp]
+ 0038e f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
+
+; 62 : }
+
+ 00393 e9 53 ff ff ff jmp $LN11@float_kern
+$LN12@float_kern:
+
+; 63 : unsigned char tmpi = pivot[k];
+
+ 00398 48 63 85 b4 01
+ 00 00 movsxd rax, DWORD PTR k$6[rbp]
+ 0039f 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
+ 003a3 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 003a7 88 85 94 02 00
+ 00 mov BYTE PTR tmpi$13[rbp], al
+
+; 64 : pivot[k] = pivot[p];
+
+ 003ad 48 63 85 d4 01
+ 00 00 movsxd rax, DWORD PTR p$7[rbp]
+ 003b4 48 63 8d b4 01
+ 00 00 movsxd rcx, DWORD PTR k$6[rbp]
+ 003bb 48 8b 55 68 mov rdx, QWORD PTR pivot$[rbp]
+ 003bf 4c 8b 45 68 mov r8, QWORD PTR pivot$[rbp]
+ 003c3 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 003c8 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 65 : pivot[p] = tmpi;
+
+ 003cb 48 63 85 d4 01
+ 00 00 movsxd rax, DWORD PTR p$7[rbp]
+ 003d2 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
+ 003d6 0f b6 95 94 02
+ 00 00 movzx edx, BYTE PTR tmpi$13[rbp]
+ 003dd 88 14 01 mov BYTE PTR [rcx+rax], dl
+$LN28@float_kern:
+
+; 66 : }
+; 67 :
+; 68 : float pivot_val = a.m[k][k];
+
+ 003e0 48 63 85 b4 01
+ 00 00 movsxd rax, DWORD PTR k$6[rbp]
+ 003e7 48 6b c0 10 imul rax, rax, 16
+ 003eb 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 003f3 48 63 8d b4 01
+ 00 00 movsxd rcx, DWORD PTR k$6[rbp]
+ 003fa f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 003ff f3 0f 11 85 b4
+ 02 00 00 movss DWORD PTR pivot_val$14[rbp], xmm0
+
+; 69 :
+; 70 : /* Eliminate below pivot: store multipliers in L column k */
+; 71 : for (int r = k + 1; r < 4; ++r) {
+
+ 00407 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR k$6[rbp]
+ 0040d ff c0 inc eax
+ 0040f 89 85 d4 02 00
+ 00 mov DWORD PTR r$15[rbp], eax
+ 00415 eb 0e jmp SHORT $LN16@float_kern
+$LN14@float_kern:
+ 00417 8b 85 d4 02 00
+ 00 mov eax, DWORD PTR r$15[rbp]
+ 0041d ff c0 inc eax
+ 0041f 89 85 d4 02 00
+ 00 mov DWORD PTR r$15[rbp], eax
+$LN16@float_kern:
+ 00425 83 bd d4 02 00
+ 00 04 cmp DWORD PTR r$15[rbp], 4
+ 0042c 0f 8d f4 00 00
+ 00 jge $LN15@float_kern
+
+; 72 : float factor = a.m[k][r] / pivot_val;
+
+ 00432 48 63 85 b4 01
+ 00 00 movsxd rax, DWORD PTR k$6[rbp]
+ 00439 48 6b c0 10 imul rax, rax, 16
+ 0043d 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 00445 48 63 8d d4 02
+ 00 00 movsxd rcx, DWORD PTR r$15[rbp]
+ 0044c f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 00451 f3 0f 5e 85 b4
+ 02 00 00 divss xmm0, DWORD PTR pivot_val$14[rbp]
+ 00459 f3 0f 11 85 f4
+ 02 00 00 movss DWORD PTR factor$16[rbp], xmm0
+
+; 73 : lower->m[k][r] = factor;
+
+ 00461 48 63 85 b4 01
+ 00 00 movsxd rax, DWORD PTR k$6[rbp]
+ 00468 48 6b c0 10 imul rax, rax, 16
+ 0046c 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
+ 00470 48 03 c8 add rcx, rax
+ 00473 48 8b c1 mov rax, rcx
+ 00476 48 63 8d d4 02
+ 00 00 movsxd rcx, DWORD PTR r$15[rbp]
+ 0047d f3 0f 10 85 f4
+ 02 00 00 movss xmm0, DWORD PTR factor$16[rbp]
+ 00485 f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
+
+; 74 : for (int c = k; c < 4; ++c) {
+
+ 0048a 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR k$6[rbp]
+ 00490 89 85 14 03 00
+ 00 mov DWORD PTR c$17[rbp], eax
+ 00496 eb 0e jmp SHORT $LN19@float_kern
+$LN17@float_kern:
+ 00498 8b 85 14 03 00
+ 00 mov eax, DWORD PTR c$17[rbp]
+ 0049e ff c0 inc eax
+ 004a0 89 85 14 03 00
+ 00 mov DWORD PTR c$17[rbp], eax
+$LN19@float_kern:
+ 004a6 83 bd 14 03 00
+ 00 04 cmp DWORD PTR c$17[rbp], 4
+ 004ad 7d 72 jge SHORT $LN18@float_kern
+
+; 75 : a.m[c][r] -= factor * a.m[c][k];
+
+ 004af 48 63 85 14 03
+ 00 00 movsxd rax, DWORD PTR c$17[rbp]
+ 004b6 48 6b c0 10 imul rax, rax, 16
+ 004ba 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 004c2 48 63 8d d4 02
+ 00 00 movsxd rcx, DWORD PTR r$15[rbp]
+ 004c9 48 63 95 14 03
+ 00 00 movsxd rdx, DWORD PTR c$17[rbp]
+ 004d0 48 6b d2 10 imul rdx, rdx, 16
+ 004d4 48 8d 94 15 c0
+ 00 00 00 lea rdx, QWORD PTR a$[rbp+rdx]
+ 004dc 4c 63 85 b4 01
+ 00 00 movsxd r8, DWORD PTR k$6[rbp]
+ 004e3 f3 0f 10 85 f4
+ 02 00 00 movss xmm0, DWORD PTR factor$16[rbp]
+ 004eb f3 42 0f 59 04
+ 82 mulss xmm0, DWORD PTR [rdx+r8*4]
+ 004f1 f3 0f 10 0c 88 movss xmm1, DWORD PTR [rax+rcx*4]
+ 004f6 f3 0f 5c c8 subss xmm1, xmm0
+ 004fa 0f 28 c1 movaps xmm0, xmm1
+ 004fd 48 63 85 d4 02
+ 00 00 movsxd rax, DWORD PTR r$15[rbp]
+ 00504 48 63 8d 14 03
+ 00 00 movsxd rcx, DWORD PTR c$17[rbp]
+ 0050b 48 6b c9 10 imul rcx, rcx, 16
+ 0050f 48 8d 8c 0d c0
+ 00 00 00 lea rcx, QWORD PTR a$[rbp+rcx]
+ 00517 f3 0f 11 04 81 movss DWORD PTR [rcx+rax*4], xmm0
+
+; 76 : }
+
+ 0051c e9 77 ff ff ff jmp $LN17@float_kern
+$LN18@float_kern:
+
+; 77 : }
+
+ 00521 e9 f1 fe ff ff jmp $LN14@float_kern
+$LN15@float_kern:
+
+; 78 :
+; 79 : /* Set U row k (columns k..3) and L diagonal */
+; 80 : lower->m[k][k] = 1.0f;
+
+ 00526 48 63 85 b4 01
+ 00 00 movsxd rax, DWORD PTR k$6[rbp]
+ 0052d 48 6b c0 10 imul rax, rax, 16
+ 00531 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
+ 00535 48 03 c8 add rcx, rax
+ 00538 48 8b c1 mov rax, rcx
+ 0053b 48 63 8d b4 01
+ 00 00 movsxd rcx, DWORD PTR k$6[rbp]
+ 00542 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 0054a f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
+
+; 81 : for (int c = k; c < 4; ++c) {
+
+ 0054f 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR k$6[rbp]
+ 00555 89 85 34 03 00
+ 00 mov DWORD PTR c$18[rbp], eax
+ 0055b eb 0e jmp SHORT $LN22@float_kern
+$LN20@float_kern:
+ 0055d 8b 85 34 03 00
+ 00 mov eax, DWORD PTR c$18[rbp]
+ 00563 ff c0 inc eax
+ 00565 89 85 34 03 00
+ 00 mov DWORD PTR c$18[rbp], eax
+$LN22@float_kern:
+ 0056b 83 bd 34 03 00
+ 00 04 cmp DWORD PTR c$18[rbp], 4
+ 00572 7d 43 jge SHORT $LN21@float_kern
+
+; 82 : upper->m[c][k] = a.m[c][k];
+
+ 00574 48 63 85 34 03
+ 00 00 movsxd rax, DWORD PTR c$18[rbp]
+ 0057b 48 6b c0 10 imul rax, rax, 16
+ 0057f 48 8d 84 05 c0
+ 00 00 00 lea rax, QWORD PTR a$[rbp+rax]
+ 00587 48 63 8d b4 01
+ 00 00 movsxd rcx, DWORD PTR k$6[rbp]
+ 0058e 48 63 95 34 03
+ 00 00 movsxd rdx, DWORD PTR c$18[rbp]
+ 00595 48 6b d2 10 imul rdx, rdx, 16
+ 00599 4c 8b 45 08 mov r8, QWORD PTR upper$[rbp]
+ 0059d 4c 03 c2 add r8, rdx
+ 005a0 49 8b d0 mov rdx, r8
+ 005a3 4c 63 85 b4 01
+ 00 00 movsxd r8, DWORD PTR k$6[rbp]
+ 005aa f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 005af f3 42 0f 11 04
+ 82 movss DWORD PTR [rdx+r8*4], xmm0
+
+; 83 : }
+
+ 005b5 eb a6 jmp SHORT $LN20@float_kern
+$LN21@float_kern:
+
+; 84 : }
+
+ 005b7 e9 19 fc ff ff jmp $LN5@float_kern
+$LN6@float_kern:
+
+; 85 :
+; 86 : /* Ensure remaining diagonal ones for L */
+; 87 : for (int d = 0; d < 4; ++d) {
+
+ 005bc c7 85 54 03 00
+ 00 00 00 00 00 mov DWORD PTR d$19[rbp], 0
+ 005c6 eb 0e jmp SHORT $LN25@float_kern
+$LN23@float_kern:
+ 005c8 8b 85 54 03 00
+ 00 mov eax, DWORD PTR d$19[rbp]
+ 005ce ff c0 inc eax
+ 005d0 89 85 54 03 00
+ 00 mov DWORD PTR d$19[rbp], eax
+$LN25@float_kern:
+ 005d6 83 bd 54 03 00
+ 00 04 cmp DWORD PTR d$19[rbp], 4
+ 005dd 7d 57 jge SHORT $LN24@float_kern
+
+; 88 : if (lower->m[d][d] == 0.0f)
+
+ 005df 48 63 85 54 03
+ 00 00 movsxd rax, DWORD PTR d$19[rbp]
+ 005e6 48 6b c0 10 imul rax, rax, 16
+ 005ea 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
+ 005ee 48 03 c8 add rcx, rax
+ 005f1 48 8b c1 mov rax, rcx
+ 005f4 48 63 8d 54 03
+ 00 00 movsxd rcx, DWORD PTR d$19[rbp]
+ 005fb f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
+ 00600 0f 2e 05 00 00
+ 00 00 ucomiss xmm0, DWORD PTR __real@00000000
+ 00607 7a 2b jp SHORT $LN29@float_kern
+ 00609 75 29 jne SHORT $LN29@float_kern
+
+; 89 : lower->m[d][d] = 1.0f;
+
+ 0060b 48 63 85 54 03
+ 00 00 movsxd rax, DWORD PTR d$19[rbp]
+ 00612 48 6b c0 10 imul rax, rax, 16
+ 00616 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
+ 0061a 48 03 c8 add rcx, rax
+ 0061d 48 8b c1 mov rax, rcx
+ 00620 48 63 8d 54 03
+ 00 00 movsxd rcx, DWORD PTR d$19[rbp]
+ 00627 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 0062f f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
+$LN29@float_kern:
+
+; 90 : }
+
+ 00634 eb 92 jmp SHORT $LN23@float_kern
+$LN24@float_kern:
+$LN1@float_kern:
+
+; 91 : }
+
+ 00636 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0063a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:float_kernel_try_plu_sse$rtcFrameData
+ 00641 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00646 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0064d 49 33 cd xor rcx, r13
+ 00650 e8 00 00 00 00 call __security_check_cookie
+ 00655 49 8d a5 30 05
+ 00 00 lea rsp, QWORD PTR [r13+1328]
+ 0065c 5f pop rdi
+ 0065d 5d pop rbp
+ 0065e 41 5d pop r13
+ 00660 c3 ret 0
+float_kernel_try_plu_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt\corecrt_math.h
+; COMDAT fabsf
+_TEXT SEGMENT
+_X$ = 224
+fabsf PROC ; COMDAT
+
+; 710 : {
+
+$LN3:
+ 00000 f3 0f 11 44 24
+ 08 movss DWORD PTR [rsp+8], xmm0
+ 00006 55 push rbp
+ 00007 57 push rdi
+ 00008 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000f 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00014 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__1D9A7FA2_corecrt_math@h
+ 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00020 90 npad 1
+
+; 711 : return (float)fabs(_X);
+
+ 00021 f3 0f 5a 85 e0
+ 00 00 00 cvtss2sd xmm0, DWORD PTR _X$[rbp]
+ 00029 e8 00 00 00 00 call fabs
+ 0002e f2 0f 5a c0 cvtsd2ss xmm0, xmm0
+
+; 712 : }
+
+ 00032 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00039 5f pop rdi
+ 0003a 5d pop rbp
+ 0003b c3 ret 0
+fabsf ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/m.solve.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/m.solve.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..f4d7fd42
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.solve.x86.nativecodeanalysis.sarif
@@ -0,0 +1,123 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/m.solve.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "9d1606a097ad294dd51d794305f8d235e1f24f022a4cc02f7589b02648ef8274"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.solve.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/m.solve.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/m.solve.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/m.solve.x86.obj b/obj/StgSharp.Native/Debug/x64/m.solve.x86.obj
new file mode 100644
index 00000000..7fa72601
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/m.solve.x86.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/m.solve.x86.sbr b/obj/StgSharp.Native/Debug/x64/m.solve.x86.sbr
new file mode 100644
index 00000000..f6c00dbb
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/m.solve.x86.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/s.factorial.x86.cod b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.cod
new file mode 100644
index 00000000..2f2fbd0d
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.cod
@@ -0,0 +1,391 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+PUBLIC facIncrement
+PUBLIC facBase
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__F49407C4_sn_intrinsic@matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__25E8D284_s@factorial@x86@c DB 01H
+msvcjmc ENDS
+_DATA SEGMENT
+facIncrement DB 04H
+ DB 04H
+ DB 04H
+ DB 04H
+ ORG $+12
+facBase DB 01H
+ DB 02H
+ DB 03H
+ DB 04H
+ ORG $+12
+_DATA ENDS
+PUBLIC factorial_simd_sse
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_CheckStackVars:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$factorial_simd_sse DD imagerel $LN9
+ DD imagerel $LN9+377
+ DD imagerel $unwind$factorial_simd_sse
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$factorial_simd_sse DD 025052a01H
+ DD 010d2312H
+ DD 07006003dH
+ DD 05005H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+factorial_simd_sse$rtcName$0 DB 062H
+ DB 061H
+ DB 073H
+ DB 065H
+ DB 052H
+ DB 065H
+ DB 073H
+ DB 075H
+ DB 06cH
+ DB 074H
+ DB 00H
+ ORG $+5
+factorial_simd_sse$rtcVarDesc DD 030H
+ DD 010H
+ DQ FLAT:factorial_simd_sse$rtcName$0
+ ORG $+48
+factorial_simd_sse$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:factorial_simd_sse$rtcVarDesc
+CONST ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\s.factorial.x86.c
+; COMDAT factorial_simd_sse
+_TEXT SEGMENT
+baseResult$ = 16
+facBaseLocal$ = 64
+cycle$ = 100
+rest$ = 132
+i$4 = 168
+result$ = 200
+i$5 = 232
+n$ = 480
+factorial_simd_sse PROC ; COMDAT
+
+; 12 : {
+
+$LN9:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00017 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0001c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00021 f3 ab rep stosd
+ 00023 8b 8c 24 08 02
+ 00 00 mov ecx, DWORD PTR [rsp+520]
+ 0002a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__25E8D284_s@factorial@x86@c
+ 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00036 90 npad 1
+
+; 13 : __m128i baseResult = facBase;
+
+ 00037 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR facBase
+ 0003f 66 0f 7f 45 10 movdqa XMMWORD PTR baseResult$[rbp], xmm0
+
+; 14 : __m128i facBaseLocal = facBase;
+
+ 00044 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR facBase
+ 0004c 66 0f 7f 45 40 movdqa XMMWORD PTR facBaseLocal$[rbp], xmm0
+
+; 15 : const int cycle = (n - 3) >> 2;
+
+ 00051 8b 85 e0 01 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00057 83 e8 03 sub eax, 3
+ 0005a c1 f8 02 sar eax, 2
+ 0005d 89 45 64 mov DWORD PTR cycle$[rbp], eax
+
+; 16 : const uint32_t rest = (cycle << 2) + 1;
+
+ 00060 8b 45 64 mov eax, DWORD PTR cycle$[rbp]
+ 00063 8d 04 85 01 00
+ 00 00 lea eax, DWORD PTR [rax*4+1]
+ 0006a 89 85 84 00 00
+ 00 mov DWORD PTR rest$[rbp], eax
+
+; 17 : for (size_t i = 0; i < cycle; i++) {
+
+ 00070 48 c7 85 a8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$4[rbp], 0
+ 0007b eb 11 jmp SHORT $LN4@factorial_
+$LN2@factorial_:
+ 0007d 48 8b 85 a8 00
+ 00 00 mov rax, QWORD PTR i$4[rbp]
+ 00084 48 ff c0 inc rax
+ 00087 48 89 85 a8 00
+ 00 00 mov QWORD PTR i$4[rbp], rax
+$LN4@factorial_:
+ 0008e 48 63 45 64 movsxd rax, DWORD PTR cycle$[rbp]
+ 00092 48 39 85 a8 00
+ 00 00 cmp QWORD PTR i$4[rbp], rax
+ 00099 73 24 jae SHORT $LN3@factorial_
+
+; 18 : facBaseLocal = _mm_add_epi32(facBaseLocal, facIncrement);
+
+ 0009b 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR facBaseLocal$[rbp]
+ 000a0 66 0f fe 05 00
+ 00 00 00 paddd xmm0, XMMWORD PTR facIncrement
+ 000a8 66 0f 7f 45 40 movdqa XMMWORD PTR facBaseLocal$[rbp], xmm0
+
+; 19 : baseResult = _mm_mullo_epi32(baseResult, facBaseLocal);
+
+ 000ad 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR baseResult$[rbp]
+ 000b2 66 0f 38 40 45
+ 40 pmulld xmm0, XMMWORD PTR facBaseLocal$[rbp]
+ 000b8 66 0f 7f 45 10 movdqa XMMWORD PTR baseResult$[rbp], xmm0
+
+; 20 : }
+
+ 000bd eb be jmp SHORT $LN2@factorial_
+$LN3@factorial_:
+
+; 21 : uint64_t result = (uint64_t)baseResult.m128i_i32[0] * (uint64_t)baseResult.m128i_i32[1] *
+
+ 000bf b8 04 00 00 00 mov eax, 4
+ 000c4 48 6b c0 00 imul rax, rax, 0
+ 000c8 48 63 44 05 10 movsxd rax, DWORD PTR baseResult$[rbp+rax]
+ 000cd b9 04 00 00 00 mov ecx, 4
+ 000d2 48 6b c9 01 imul rcx, rcx, 1
+ 000d6 48 63 4c 0d 10 movsxd rcx, DWORD PTR baseResult$[rbp+rcx]
+ 000db 48 0f af c1 imul rax, rcx
+ 000df b9 04 00 00 00 mov ecx, 4
+ 000e4 48 6b c9 02 imul rcx, rcx, 2
+ 000e8 48 63 4c 0d 10 movsxd rcx, DWORD PTR baseResult$[rbp+rcx]
+ 000ed 48 0f af c1 imul rax, rcx
+ 000f1 b9 04 00 00 00 mov ecx, 4
+ 000f6 48 6b c9 03 imul rcx, rcx, 3
+ 000fa 48 63 4c 0d 10 movsxd rcx, DWORD PTR baseResult$[rbp+rcx]
+ 000ff 48 0f af c1 imul rax, rcx
+ 00103 48 89 85 c8 00
+ 00 00 mov QWORD PTR result$[rbp], rax
+
+; 22 : (uint64_t)baseResult.m128i_i32[2] * (uint64_t)baseResult.m128i_i32[3];
+; 23 : for (uint64_t i = rest; i < n; i++) {
+
+ 0010a 8b 85 84 00 00
+ 00 mov eax, DWORD PTR rest$[rbp]
+ 00110 48 89 85 e8 00
+ 00 00 mov QWORD PTR i$5[rbp], rax
+ 00117 eb 11 jmp SHORT $LN7@factorial_
+$LN5@factorial_:
+ 00119 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR i$5[rbp]
+ 00120 48 ff c0 inc rax
+ 00123 48 89 85 e8 00
+ 00 00 mov QWORD PTR i$5[rbp], rax
+$LN7@factorial_:
+ 0012a 48 63 85 e0 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 00131 48 39 85 e8 00
+ 00 00 cmp QWORD PTR i$5[rbp], rax
+ 00138 73 18 jae SHORT $LN6@factorial_
+
+; 24 : result *= i;
+
+ 0013a 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR result$[rbp]
+ 00141 48 0f af 85 e8
+ 00 00 00 imul rax, QWORD PTR i$5[rbp]
+ 00149 48 89 85 c8 00
+ 00 00 mov QWORD PTR result$[rbp], rax
+
+; 25 : }
+
+ 00150 eb c7 jmp SHORT $LN5@factorial_
+$LN6@factorial_:
+
+; 26 : return result;
+
+ 00152 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR result$[rbp]
+
+; 27 : }
+
+ 00159 48 8b f8 mov rdi, rax
+ 0015c 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00160 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:factorial_simd_sse$rtcFrameData
+ 00167 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0016c 48 8b c7 mov rax, rdi
+ 0016f 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 00176 5f pop rdi
+ 00177 5d pop rbp
+ 00178 c3 ret 0
+factorial_simd_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/s.factorial.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..9cc11a54
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.nativecodeanalysis.sarif
@@ -0,0 +1,123 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/s.factorial.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "4f98c39b091ae9de0aedda2e7b832d7bcc63c2cfa4bbcc4e68abde1b642edba8"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "94ca202415b5a633ad79580db19ae2b7def151b2e3f5d2dcaa341cfe934a5b0c"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/s.factorial.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/s.factorial.x86.obj b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.obj
new file mode 100644
index 00000000..bd807d20
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/s.factorial.x86.sbr b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.sbr
new file mode 100644
index 00000000..69d3f94e
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/s.factorial.x86.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/s.hash.x86.cod b/obj/StgSharp.Native/Debug/x64/s.hash.x86.cod
new file mode 100644
index 00000000..8a23a938
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/s.hash.x86.cod
@@ -0,0 +1,534 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__F49407C4_sn_intrinsic@matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__47ACF5AF_s@hash@x86@c DB 01H
+msvcjmc ENDS
+PUBLIC city_hash_simplify_sse
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$city_hash_simplify_sse DD imagerel $LN25
+ DD imagerel $LN25+632
+ DD imagerel $unwind$city_hash_simplify_sse
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$city_hash_simplify_sse DD 025051701H
+ DD 01122317H
+ DD 0700b0043H
+ DD 0500aH
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\s.hash.x86.c
+; COMDAT city_hash_simplify_sse
+_TEXT SEGMENT
+hash$ = 4
+size$ = 36
+end$ = 72
+ptr$ = 104
+last$1 = 136
+last_128$2 = 168
+last_32$3 = 200
+hash64$4 = 232
+vec$5 = 272
+str$ = 528
+length$ = 536
+city_hash_simplify_sse PROC ; COMDAT
+
+; 9 : {
+
+$LN25:
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 18 02
+ 00 00 sub rsp, 536 ; 00000218H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__47ACF5AF_s@hash@x86@c
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 10 : uint32_t hash = length, size = length << 1;
+
+ 00024 8b 85 18 02 00
+ 00 mov eax, DWORD PTR length$[rbp]
+ 0002a 89 45 04 mov DWORD PTR hash$[rbp], eax
+ 0002d 8b 85 18 02 00
+ 00 mov eax, DWORD PTR length$[rbp]
+ 00033 d1 e0 shl eax, 1
+ 00035 89 45 24 mov DWORD PTR size$[rbp], eax
+
+; 11 : byte *end = str + size, *ptr = str;
+
+ 00038 8b 45 24 mov eax, DWORD PTR size$[rbp]
+ 0003b 48 8b 8d 10 02
+ 00 00 mov rcx, QWORD PTR str$[rbp]
+ 00042 48 03 c8 add rcx, rax
+ 00045 48 8b c1 mov rax, rcx
+ 00048 48 89 45 48 mov QWORD PTR end$[rbp], rax
+ 0004c 48 8b 85 10 02
+ 00 00 mov rax, QWORD PTR str$[rbp]
+ 00053 48 89 45 68 mov QWORD PTR ptr$[rbp], rax
+
+; 12 :
+; 13 : if (size < 4) {
+
+ 00057 83 7d 24 04 cmp DWORD PTR size$[rbp], 4
+ 0005b 73 35 jae SHORT $LN20@city_hash_
+
+; 14 : for (; ptr < end; ptr += 2) {
+
+ 0005d eb 0c jmp SHORT $LN4@city_hash_
+$LN2@city_hash_:
+ 0005f 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 00063 48 83 c0 02 add rax, 2
+ 00067 48 89 45 68 mov QWORD PTR ptr$[rbp], rax
+$LN4@city_hash_:
+ 0006b 48 8b 45 48 mov rax, QWORD PTR end$[rbp]
+ 0006f 48 39 45 68 cmp QWORD PTR ptr$[rbp], rax
+ 00073 73 18 jae SHORT $LN3@city_hash_
+
+; 15 : hash = _mm_crc32_u16(hash, *ptr);
+
+ 00075 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 00079 66 0f be 00 movsx ax, BYTE PTR [rax]
+ 0007d 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 00080 66 f2 0f 38 f1
+ c8 crc32 ecx, ax
+ 00086 8b c1 mov eax, ecx
+ 00088 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 16 : }
+
+ 0008b eb d2 jmp SHORT $LN2@city_hash_
+$LN3@city_hash_:
+
+; 17 : } else if (size < 16) {
+
+ 0008d e9 95 01 00 00 jmp $LN21@city_hash_
+$LN20@city_hash_:
+ 00092 83 7d 24 10 cmp DWORD PTR size$[rbp], 16
+ 00096 73 6e jae SHORT $LN22@city_hash_
+
+; 18 : byte *last = end - 4;
+
+ 00098 48 8b 45 48 mov rax, QWORD PTR end$[rbp]
+ 0009c 48 83 e8 04 sub rax, 4
+ 000a0 48 89 85 88 00
+ 00 00 mov QWORD PTR last$1[rbp], rax
+
+; 19 : for (; ptr < end; ptr += 4) {
+
+ 000a7 eb 0c jmp SHORT $LN7@city_hash_
+$LN5@city_hash_:
+ 000a9 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 000ad 48 83 c0 04 add rax, 4
+ 000b1 48 89 45 68 mov QWORD PTR ptr$[rbp], rax
+$LN7@city_hash_:
+ 000b5 48 8b 45 48 mov rax, QWORD PTR end$[rbp]
+ 000b9 48 39 45 68 cmp QWORD PTR ptr$[rbp], rax
+ 000bd 73 13 jae SHORT $LN6@city_hash_
+
+; 20 : hash = _mm_crc32_u32(hash, *(uint32_t *)ptr);
+
+ 000bf 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 000c3 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 000c6 f2 0f 38 f1 08 crc32 ecx, DWORD PTR [rax]
+ 000cb 8b c1 mov eax, ecx
+ 000cd 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 21 : }
+
+ 000d0 eb d7 jmp SHORT $LN5@city_hash_
+$LN6@city_hash_:
+
+; 22 : for (; ptr < end; ptr++) {
+
+ 000d2 eb 0b jmp SHORT $LN10@city_hash_
+$LN8@city_hash_:
+ 000d4 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 000d8 48 ff c0 inc rax
+ 000db 48 89 45 68 mov QWORD PTR ptr$[rbp], rax
+$LN10@city_hash_:
+ 000df 48 8b 45 48 mov rax, QWORD PTR end$[rbp]
+ 000e3 48 39 45 68 cmp QWORD PTR ptr$[rbp], rax
+ 000e7 73 18 jae SHORT $LN9@city_hash_
+
+; 23 : hash = _mm_crc32_u16(hash, *ptr);
+
+ 000e9 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 000ed 66 0f be 00 movsx ax, BYTE PTR [rax]
+ 000f1 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 000f4 66 f2 0f 38 f1
+ c8 crc32 ecx, ax
+ 000fa 8b c1 mov eax, ecx
+ 000fc 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 24 : }
+
+ 000ff eb d3 jmp SHORT $LN8@city_hash_
+$LN9@city_hash_:
+
+; 25 : } else {
+
+ 00101 e9 21 01 00 00 jmp $LN23@city_hash_
+$LN22@city_hash_:
+
+; 26 : byte *last_128 = end - 16;
+
+ 00106 48 8b 45 48 mov rax, QWORD PTR end$[rbp]
+ 0010a 48 83 e8 10 sub rax, 16
+ 0010e 48 89 85 a8 00
+ 00 00 mov QWORD PTR last_128$2[rbp], rax
+
+; 27 : byte *last_32 = end - 4;
+
+ 00115 48 8b 45 48 mov rax, QWORD PTR end$[rbp]
+ 00119 48 83 e8 04 sub rax, 4
+ 0011d 48 89 85 c8 00
+ 00 00 mov QWORD PTR last_32$3[rbp], rax
+
+; 28 : uint64_t hash64 = size;
+
+ 00124 8b 45 24 mov eax, DWORD PTR size$[rbp]
+ 00127 48 89 85 e8 00
+ 00 00 mov QWORD PTR hash64$4[rbp], rax
+
+; 29 : for (; ptr < last_128; ptr += 16) {
+
+ 0012e eb 0c jmp SHORT $LN13@city_hash_
+$LN11@city_hash_:
+ 00130 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 00134 48 83 c0 10 add rax, 16
+ 00138 48 89 45 68 mov QWORD PTR ptr$[rbp], rax
+$LN13@city_hash_:
+ 0013c 48 8b 85 a8 00
+ 00 00 mov rax, QWORD PTR last_128$2[rbp]
+ 00143 48 39 45 68 cmp QWORD PTR ptr$[rbp], rax
+ 00147 73 5e jae SHORT $LN12@city_hash_
+
+; 30 : __m128i vec = _mm_loadu_si32((int *)ptr);
+
+ 00149 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 0014d 66 0f 6e 00 movd xmm0, DWORD PTR [rax]
+ 00151 66 0f 7f 85 10
+ 01 00 00 movdqa XMMWORD PTR vec$5[rbp], xmm0
+
+; 31 : hash64 = _mm_crc32_u64(hash64, _mm_extract_epi64(vec, 0));
+
+ 00159 66 0f 6f 85 10
+ 01 00 00 movdqa xmm0, XMMWORD PTR vec$5[rbp]
+ 00161 66 48 0f 3a 16
+ c0 00 pextrq rax, xmm0, 0
+ 00168 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR hash64$4[rbp]
+ 0016f f2 48 0f 38 f1
+ c8 crc32 rcx, rax
+ 00175 48 8b c1 mov rax, rcx
+ 00178 48 89 85 e8 00
+ 00 00 mov QWORD PTR hash64$4[rbp], rax
+
+; 32 : hash64 = _mm_crc32_u64(hash64, _mm_extract_epi64(vec, 1));
+
+ 0017f 66 0f 6f 85 10
+ 01 00 00 movdqa xmm0, XMMWORD PTR vec$5[rbp]
+ 00187 66 48 0f 3a 16
+ c0 01 pextrq rax, xmm0, 1
+ 0018e 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR hash64$4[rbp]
+ 00195 f2 48 0f 38 f1
+ c8 crc32 rcx, rax
+ 0019b 48 8b c1 mov rax, rcx
+ 0019e 48 89 85 e8 00
+ 00 00 mov QWORD PTR hash64$4[rbp], rax
+
+; 33 : }
+
+ 001a5 eb 89 jmp SHORT $LN11@city_hash_
+$LN12@city_hash_:
+
+; 34 : hash = _mm_crc32_u8(hash, hash64);
+
+ 001a7 8b 45 04 mov eax, DWORD PTR hash$[rbp]
+ 001aa f2 0f 38 f0 85
+ e8 00 00 00 crc32 eax, BYTE PTR hash64$4[rbp]
+ 001b3 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 35 : hash = _mm_crc32_u8(hash, hash64 >> 32);
+
+ 001b6 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR hash64$4[rbp]
+ 001bd 48 c1 e8 20 shr rax, 32 ; 00000020H
+ 001c1 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 001c4 f2 0f 38 f0 c8 crc32 ecx, al
+ 001c9 8b c1 mov eax, ecx
+ 001cb 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 36 : for (; ptr < last_32; ptr += 4) {
+
+ 001ce eb 0c jmp SHORT $LN16@city_hash_
+$LN14@city_hash_:
+ 001d0 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 001d4 48 83 c0 04 add rax, 4
+ 001d8 48 89 45 68 mov QWORD PTR ptr$[rbp], rax
+$LN16@city_hash_:
+ 001dc 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR last_32$3[rbp]
+ 001e3 48 39 45 68 cmp QWORD PTR ptr$[rbp], rax
+ 001e7 73 13 jae SHORT $LN15@city_hash_
+
+; 37 : hash = _mm_crc32_u32(hash, *(uint32_t *)ptr);
+
+ 001e9 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 001ed 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 001f0 f2 0f 38 f1 08 crc32 ecx, DWORD PTR [rax]
+ 001f5 8b c1 mov eax, ecx
+ 001f7 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 38 : }
+
+ 001fa eb d4 jmp SHORT $LN14@city_hash_
+$LN15@city_hash_:
+
+; 39 : for (; ptr < end; ptr += 2) {
+
+ 001fc eb 0c jmp SHORT $LN19@city_hash_
+$LN17@city_hash_:
+ 001fe 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 00202 48 83 c0 02 add rax, 2
+ 00206 48 89 45 68 mov QWORD PTR ptr$[rbp], rax
+$LN19@city_hash_:
+ 0020a 48 8b 45 48 mov rax, QWORD PTR end$[rbp]
+ 0020e 48 39 45 68 cmp QWORD PTR ptr$[rbp], rax
+ 00212 73 13 jae SHORT $LN18@city_hash_
+
+; 40 : hash = _mm_crc32_u8(hash, *ptr);
+
+ 00214 48 8b 45 68 mov rax, QWORD PTR ptr$[rbp]
+ 00218 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 0021b f2 0f 38 f0 08 crc32 ecx, BYTE PTR [rax]
+ 00220 8b c1 mov eax, ecx
+ 00222 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 41 : }
+
+ 00225 eb d7 jmp SHORT $LN17@city_hash_
+$LN18@city_hash_:
+$LN23@city_hash_:
+$LN21@city_hash_:
+
+; 42 : }
+; 43 : hash ^= hash >> 16;
+
+ 00227 8b 45 04 mov eax, DWORD PTR hash$[rbp]
+ 0022a c1 e8 10 shr eax, 16
+ 0022d 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 00230 33 c8 xor ecx, eax
+ 00232 8b c1 mov eax, ecx
+ 00234 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 44 : hash *= 0x85ebca6b;
+
+ 00237 69 45 04 6b ca
+ eb 85 imul eax, DWORD PTR hash$[rbp], -2048144789 ; 85ebca6bH
+ 0023e 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 45 : hash ^= hash >> 13;
+
+ 00241 8b 45 04 mov eax, DWORD PTR hash$[rbp]
+ 00244 c1 e8 0d shr eax, 13
+ 00247 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 0024a 33 c8 xor ecx, eax
+ 0024c 8b c1 mov eax, ecx
+ 0024e 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 46 : hash *= 0xc2b2ae35;
+
+ 00251 69 45 04 35 ae
+ b2 c2 imul eax, DWORD PTR hash$[rbp], -1028477387 ; c2b2ae35H
+ 00258 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 47 : hash ^= hash >> 16;
+
+ 0025b 8b 45 04 mov eax, DWORD PTR hash$[rbp]
+ 0025e c1 e8 10 shr eax, 16
+ 00261 8b 4d 04 mov ecx, DWORD PTR hash$[rbp]
+ 00264 33 c8 xor ecx, eax
+ 00266 8b c1 mov eax, ecx
+ 00268 89 45 04 mov DWORD PTR hash$[rbp], eax
+
+; 48 : return hash;
+
+ 0026b 8b 45 04 mov eax, DWORD PTR hash$[rbp]
+
+; 49 : }
+
+ 0026e 48 8d a5 f8 01
+ 00 00 lea rsp, QWORD PTR [rbp+504]
+ 00275 5f pop rdi
+ 00276 5d pop rbp
+ 00277 c3 ret 0
+city_hash_simplify_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/s.hash.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/s.hash.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..dd41b452
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/s.hash.x86.nativecodeanalysis.sarif
@@ -0,0 +1,123 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/s.hash.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "fc02339eab2d607b51ac1425e894ee670f6112aeefbc8fa64ef74094789cf0d6"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "94ca202415b5a633ad79580db19ae2b7def151b2e3f5d2dcaa341cfe934a5b0c"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/s.hash.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/s.hash.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/s.hash.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/s.hash.x86.obj b/obj/StgSharp.Native/Debug/x64/s.hash.x86.obj
new file mode 100644
index 00000000..45254b65
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/s.hash.x86.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/s.hash.x86.sbr b/obj/StgSharp.Native/Debug/x64/s.hash.x86.sbr
new file mode 100644
index 00000000..b979ca73
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/s.hash.x86.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/simdid.x86.cod b/obj/StgSharp.Native/Debug/x64/simdid.x86.cod
new file mode 100644
index 00000000..358d977b
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/simdid.x86.cod
@@ -0,0 +1,2501 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__CE29950A_sn_intrincontext@x86@h DB 01H
+__3EBA305F_simdid@x86@c DB 01H
+msvcjmc ENDS
+PUBLIC sn_get_simd_level_global
+PUBLIC sn_get_simd_level_local
+PUBLIC __JustMyCode_Default
+PUBLIC ??_C@_0N@IGLDKOMM@HygonGenuine@ ; `string'
+PUBLIC ??_C@_0N@FFJGBINN@AuthenticAMD@ ; `string'
+PUBLIC ??_C@_0N@BDDFKIGD@GenuineIntel@ ; `string'
+PUBLIC ??_C@_0N@DHAFJCOO@CentaurHauls@ ; `string'
+PUBLIC ??_C@_0N@BDNCIKNF@?5?5Shanghai?5?5@ ; `string'
+EXTRN __report_rangecheckfailure:PROC
+EXTRN memcmp:PROC
+EXTRN strcmp:PROC
+EXTRN _RTC_CheckStackVars:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+EXTRN __GSHandlerCheck:PROC
+EXTRN __security_check_cookie:PROC
+EXTRN __security_cookie:QWORD
+_BSS SEGMENT
+global_simdid DQ 01H DUP (?)
+_BSS ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$sn_get_simd_level_global DD imagerel $LN4
+ DD imagerel $LN4+76
+ DD imagerel $unwind$sn_get_simd_level_global
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$sn_get_simd_level_local DD imagerel $LN98
+ DD imagerel $LN98+3276
+ DD imagerel $unwind$sn_get_simd_level_local
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$get_cpuid DD imagerel get_cpuid
+ DD imagerel get_cpuid+250
+ DD imagerel $unwind$get_cpuid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$xgetbv_has_xmm_ymm DD imagerel xgetbv_has_xmm_ymm
+ DD imagerel xgetbv_has_xmm_ymm+99
+ DD imagerel $unwind$xgetbv_has_xmm_ymm
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$xgetbv_has_avx512_state DD imagerel xgetbv_has_avx512_state
+ DD imagerel xgetbv_has_avx512_state+113
+ DD imagerel $unwind$xgetbv_has_avx512_state
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$amd_avx512_impl DD imagerel amd_avx512_impl
+ DD imagerel amd_avx512_impl+75
+ DD imagerel $unwind$amd_avx512_impl
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$is_amd_glue_ymm DD imagerel is_amd_glue_ymm
+ DD imagerel is_amd_glue_ymm+277
+ DD imagerel $unwind$is_amd_glue_ymm
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT ??_C@_0N@BDNCIKNF@?5?5Shanghai?5?5@
+CONST SEGMENT
+??_C@_0N@BDNCIKNF@?5?5Shanghai?5?5@ DB ' Shanghai ', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@DHAFJCOO@CentaurHauls@
+CONST SEGMENT
+??_C@_0N@DHAFJCOO@CentaurHauls@ DB 'CentaurHauls', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@BDDFKIGD@GenuineIntel@
+CONST SEGMENT
+??_C@_0N@BDDFKIGD@GenuineIntel@ DB 'GenuineIntel', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@FFJGBINN@AuthenticAMD@
+CONST SEGMENT
+??_C@_0N@FFJGBINN@AuthenticAMD@ DB 'AuthenticAMD', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@IGLDKOMM@HygonGenuine@
+CONST SEGMENT
+??_C@_0N@IGLDKOMM@HygonGenuine@ DB 'HygonGenuine', 00H ; `string'
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$is_amd_glue_ymm DD 025051701H
+ DD 01122317H
+ DD 0700b0035H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$amd_avx512_impl DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$xgetbv_has_avx512_state DD 025050f01H
+ DD 010a230fH
+ DD 070030025H
+ DD 05002H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$xgetbv_has_xmm_ymm DD 025050f01H
+ DD 010a230fH
+ DD 070030021H
+ DD 05002H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 043H
+ DB 0e0H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$get_cpuid DD 025064a19H
+ DD 011c2321H
+ DD 070150022H
+ DD 050133014H
+ DD imagerel __GSHandlerCheck
+ DD 0108H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+get_cpuid$rtcName$0 DB 072H
+ DB 065H
+ DB 067H
+ DB 073H
+ DB 00H
+ ORG $+11
+get_cpuid$rtcVarDesc DD 028H
+ DD 010H
+ DQ FLAT:get_cpuid$rtcName$0
+ ORG $+48
+get_cpuid$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:get_cpuid$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 02aH
+ DW 0cb3H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$sn_get_simd_level_local DD 035053119H
+ DD 010a330fH
+ DD 070030143H
+ DD 05002H
+ DD imagerel __GSHandlerCheck
+ DD 0a08H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+sn_get_simd_level_local$rtcName$0 DB 05fH
+ DB 073H
+ DB 069H
+ DB 06dH
+ DB 064H
+ DB 069H
+ DB 064H
+ DB 00H
+sn_get_simd_level_local$rtcName$1 DB 065H
+ DB 061H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$2 DB 065H
+ DB 062H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$3 DB 065H
+ DB 063H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$4 DB 065H
+ DB 064H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$5 DB 076H
+ DB 065H
+ DB 06eH
+ DB 064H
+ DB 06fH
+ DB 072H
+ DB 00H
+ ORG $+1
+sn_get_simd_level_local$rtcName$6 DB 061H
+ DB 031H
+ DB 030H
+ DB 05fH
+ DB 065H
+ DB 061H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$7 DB 061H
+ DB 031H
+ DB 030H
+ DB 05fH
+ DB 065H
+ DB 062H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$8 DB 061H
+ DB 031H
+ DB 030H
+ DB 05fH
+ DB 065H
+ DB 063H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$9 DB 061H
+ DB 031H
+ DB 030H
+ DB 05fH
+ DB 065H
+ DB 064H
+ DB 078H
+ DB 00H
+sn_get_simd_level_local$rtcName$10 DB 068H
+ DB 05fH
+ DB 065H
+ DB 061H
+ DB 078H
+ DB 00H
+ ORG $+2
+sn_get_simd_level_local$rtcName$11 DB 068H
+ DB 05fH
+ DB 065H
+ DB 062H
+ DB 078H
+ DB 00H
+ ORG $+2
+sn_get_simd_level_local$rtcName$12 DB 068H
+ DB 05fH
+ DB 065H
+ DB 063H
+ DB 078H
+ DB 00H
+ ORG $+2
+sn_get_simd_level_local$rtcName$13 DB 068H
+ DB 05fH
+ DB 065H
+ DB 064H
+ DB 078H
+ DB 00H
+ ORG $+2
+sn_get_simd_level_local$rtcVarDesc DD 06a4H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$13
+ DD 0684H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$12
+ DD 0664H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$11
+ DD 0644H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$10
+ DD 05e4H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$9
+ DD 05c4H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$8
+ DD 05a4H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$7
+ DD 0584H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$6
+ DD 0d8H
+ DD 0dH
+ DQ FLAT:sn_get_simd_level_local$rtcName$5
+ DD 0b4H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$4
+ DD 094H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$3
+ DD 074H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$2
+ DD 054H
+ DD 04H
+ DQ FLAT:sn_get_simd_level_local$rtcName$1
+ DD 038H
+ DD 08H
+ DQ FLAT:sn_get_simd_level_local$rtcName$0
+ ORG $+672
+sn_get_simd_level_local$rtcFrameData DD 0eH
+ DD 00H
+ DQ FLAT:sn_get_simd_level_local$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$sn_get_simd_level_global DD 025050f01H
+ DD 010a230fH
+ DD 07003001dH
+ DD 05002H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c
+; COMDAT is_amd_glue_ymm
+_TEXT SEGMENT
+base_fam$ = 4
+ext_fam$ = 36
+disp_fam$ = 68
+base_mdl$ = 100
+ext_mdl$ = 132
+disp_mdl$ = 164
+tv78 = 372
+tv87 = 372
+vendor$ = 416
+cpuid1_eax$ = 424
+is_amd_glue_ymm PROC ; COMDAT
+
+; 76 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec a8 01
+ 00 00 sub rsp, 424 ; 000001a8H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__3EBA305F_simdid@x86@c
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 77 : if (strcmp(vendor, "HygonGenuine") == 0)
+
+ 00024 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0N@IGLDKOMM@HygonGenuine@
+ 0002b 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR vendor$[rbp]
+ 00032 e8 00 00 00 00 call strcmp
+ 00037 85 c0 test eax, eax
+ 00039 75 0a jne SHORT $LN2@is_amd_glu
+
+; 78 : return 1; /* Hygon is Zen1-based; always split YMM */
+
+ 0003b b8 01 00 00 00 mov eax, 1
+ 00040 e9 c6 00 00 00 jmp $LN1@is_amd_glu
+$LN2@is_amd_glu:
+
+; 79 : if (strcmp(vendor, "AuthenticAMD") != 0)
+
+ 00045 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0N@FFJGBINN@AuthenticAMD@
+ 0004c 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR vendor$[rbp]
+ 00053 e8 00 00 00 00 call strcmp
+ 00058 85 c0 test eax, eax
+ 0005a 74 07 je SHORT $LN3@is_amd_glu
+
+; 80 : return 0;
+
+ 0005c 33 c0 xor eax, eax
+ 0005e e9 a8 00 00 00 jmp $LN1@is_amd_glu
+$LN3@is_amd_glu:
+
+; 81 : int base_fam = (cpuid1_eax >> 8) & 0xF;
+
+ 00063 8b 85 a8 01 00
+ 00 mov eax, DWORD PTR cpuid1_eax$[rbp]
+ 00069 c1 f8 08 sar eax, 8
+ 0006c 83 e0 0f and eax, 15
+ 0006f 89 45 04 mov DWORD PTR base_fam$[rbp], eax
+
+; 82 : int ext_fam = (cpuid1_eax >> 20) & 0xFF;
+
+ 00072 8b 85 a8 01 00
+ 00 mov eax, DWORD PTR cpuid1_eax$[rbp]
+ 00078 c1 f8 14 sar eax, 20
+ 0007b 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00080 89 45 24 mov DWORD PTR ext_fam$[rbp], eax
+
+; 83 : int disp_fam = (base_fam < 0xF) ? base_fam : (base_fam + ext_fam);
+
+ 00083 83 7d 04 0f cmp DWORD PTR base_fam$[rbp], 15
+ 00087 7d 0b jge SHORT $LN5@is_amd_glu
+ 00089 8b 45 04 mov eax, DWORD PTR base_fam$[rbp]
+ 0008c 89 85 74 01 00
+ 00 mov DWORD PTR tv78[rbp], eax
+ 00092 eb 10 jmp SHORT $LN6@is_amd_glu
+$LN5@is_amd_glu:
+ 00094 8b 45 24 mov eax, DWORD PTR ext_fam$[rbp]
+ 00097 8b 4d 04 mov ecx, DWORD PTR base_fam$[rbp]
+ 0009a 03 c8 add ecx, eax
+ 0009c 8b c1 mov eax, ecx
+ 0009e 89 85 74 01 00
+ 00 mov DWORD PTR tv78[rbp], eax
+$LN6@is_amd_glu:
+ 000a4 8b 85 74 01 00
+ 00 mov eax, DWORD PTR tv78[rbp]
+ 000aa 89 45 44 mov DWORD PTR disp_fam$[rbp], eax
+
+; 84 : int base_mdl = (cpuid1_eax >> 4) & 0xF;
+
+ 000ad 8b 85 a8 01 00
+ 00 mov eax, DWORD PTR cpuid1_eax$[rbp]
+ 000b3 c1 f8 04 sar eax, 4
+ 000b6 83 e0 0f and eax, 15
+ 000b9 89 45 64 mov DWORD PTR base_mdl$[rbp], eax
+
+; 85 : int ext_mdl = (cpuid1_eax >> 16) & 0xF;
+
+ 000bc 8b 85 a8 01 00
+ 00 mov eax, DWORD PTR cpuid1_eax$[rbp]
+ 000c2 c1 f8 10 sar eax, 16
+ 000c5 83 e0 0f and eax, 15
+ 000c8 89 85 84 00 00
+ 00 mov DWORD PTR ext_mdl$[rbp], eax
+
+; 86 : int disp_mdl = (ext_mdl << 4) | base_mdl;
+
+ 000ce 8b 85 84 00 00
+ 00 mov eax, DWORD PTR ext_mdl$[rbp]
+ 000d4 c1 e0 04 shl eax, 4
+ 000d7 0b 45 64 or eax, DWORD PTR base_mdl$[rbp]
+ 000da 89 85 a4 00 00
+ 00 mov DWORD PTR disp_mdl$[rbp], eax
+
+; 87 : return (disp_fam == 0x17) && (disp_mdl < 0x30); /* Zen1/Zen+ */
+
+ 000e0 83 7d 44 17 cmp DWORD PTR disp_fam$[rbp], 23
+ 000e4 75 15 jne SHORT $LN7@is_amd_glu
+ 000e6 83 bd a4 00 00
+ 00 30 cmp DWORD PTR disp_mdl$[rbp], 48 ; 00000030H
+ 000ed 7d 0c jge SHORT $LN7@is_amd_glu
+ 000ef c7 85 74 01 00
+ 00 01 00 00 00 mov DWORD PTR tv87[rbp], 1
+ 000f9 eb 0a jmp SHORT $LN8@is_amd_glu
+$LN7@is_amd_glu:
+ 000fb c7 85 74 01 00
+ 00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
+$LN8@is_amd_glu:
+ 00105 8b 85 74 01 00
+ 00 mov eax, DWORD PTR tv87[rbp]
+$LN1@is_amd_glu:
+
+; 88 : }
+
+ 0010b 48 8d a5 88 01
+ 00 00 lea rsp, QWORD PTR [rbp+392]
+ 00112 5f pop rdi
+ 00113 5d pop rbp
+ 00114 c3 ret 0
+is_amd_glue_ymm ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c
+; COMDAT amd_avx512_impl
+_TEXT SEGMENT
+family$ = 224
+amd_avx512_impl PROC ; COMDAT
+
+; 65 : {
+
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__3EBA305F_simdid@x86@c
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 66 : if (family == 0x19) return SIMDID_AVX512_IMPL_DUAL;
+
+ 0001f 83 bd e0 00 00
+ 00 19 cmp DWORD PTR family$[rbp], 25
+ 00026 75 07 jne SHORT $LN2@amd_avx512
+ 00028 b8 40 00 00 00 mov eax, 64 ; 00000040H
+ 0002d eb 12 jmp SHORT $LN1@amd_avx512
+$LN2@amd_avx512:
+
+; 67 : if (family >= 0x1A) return SIMDID_AVX512_IMPL_NATIVE;
+
+ 0002f 83 bd e0 00 00
+ 00 1a cmp DWORD PTR family$[rbp], 26
+ 00036 7c 07 jl SHORT $LN3@amd_avx512
+ 00038 b8 80 00 00 00 mov eax, 128 ; 00000080H
+ 0003d eb 02 jmp SHORT $LN1@amd_avx512
+$LN3@amd_avx512:
+
+; 68 : return SIMDID_AVX512_IMPL_UNKNOWN;
+
+ 0003f 33 c0 xor eax, eax
+$LN1@amd_avx512:
+
+; 69 : }
+
+ 00041 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00048 5f pop rdi
+ 00049 5d pop rbp
+ 0004a c3 ret 0
+amd_avx512_impl ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c
+; COMDAT xgetbv_has_avx512_state
+_TEXT SEGMENT
+mask$ = 8
+xcr0$ = 40
+tv68 = 244
+xgetbv_has_avx512_state PROC ; COMDAT
+
+; 49 : {
+
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0000f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__3EBA305F_simdid@x86@c
+ 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001b 90 npad 1
+
+; 50 : const unsigned long long mask = (1ull << 0) | (1ull << 1) | (1ull << 2) | (1ull << 5) |
+
+ 0001c 48 c7 45 08 67
+ 00 00 00 mov QWORD PTR mask$[rbp], 103 ; 00000067H
+
+; 51 : (1ull << 6);
+; 52 : #if defined(_MSC_VER)
+; 53 : unsigned __int64 xcr0 = _xgetbv(0);
+
+ 00024 33 c9 xor ecx, ecx
+ 00026 0f 01 d0 xgetbv
+ 00029 48 c1 e2 20 shl rdx, 32 ; 00000020H
+ 0002d 48 0b d0 or rdx, rax
+ 00030 48 8b c2 mov rax, rdx
+ 00033 48 89 45 28 mov QWORD PTR xcr0$[rbp], rax
+
+; 54 : #else
+; 55 : unsigned long long xcr0 = __builtin_ia32_xgetbv(0);
+; 56 : #endif
+; 57 : return ((xcr0 & mask) == mask);
+
+ 00037 48 8b 45 08 mov rax, QWORD PTR mask$[rbp]
+ 0003b 48 8b 4d 28 mov rcx, QWORD PTR xcr0$[rbp]
+ 0003f 48 23 c8 and rcx, rax
+ 00042 48 8b c1 mov rax, rcx
+ 00045 48 3b 45 08 cmp rax, QWORD PTR mask$[rbp]
+ 00049 75 0c jne SHORT $LN3@xgetbv_has
+ 0004b c7 85 f4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
+ 00055 eb 0a jmp SHORT $LN4@xgetbv_has
+$LN3@xgetbv_has:
+ 00057 c7 85 f4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
+$LN4@xgetbv_has:
+ 00061 8b 85 f4 00 00
+ 00 mov eax, DWORD PTR tv68[rbp]
+
+; 58 : }
+
+ 00067 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 0006e 5f pop rdi
+ 0006f 5d pop rbp
+ 00070 c3 ret 0
+xgetbv_has_avx512_state ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c
+; COMDAT xgetbv_has_xmm_ymm
+_TEXT SEGMENT
+xcr0$ = 8
+tv68 = 212
+xgetbv_has_xmm_ymm PROC ; COMDAT
+
+; 39 : {
+
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0000f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__3EBA305F_simdid@x86@c
+ 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001b 90 npad 1
+
+; 40 : #if defined(_MSC_VER)
+; 41 : unsigned __int64 xcr0 = _xgetbv(0);
+
+ 0001c 33 c9 xor ecx, ecx
+ 0001e 0f 01 d0 xgetbv
+ 00021 48 c1 e2 20 shl rdx, 32 ; 00000020H
+ 00025 48 0b d0 or rdx, rax
+ 00028 48 8b c2 mov rax, rdx
+ 0002b 48 89 45 08 mov QWORD PTR xcr0$[rbp], rax
+
+; 42 : #else
+; 43 : unsigned long long xcr0 = __builtin_ia32_xgetbv(0);
+; 44 : #endif
+; 45 : return ((xcr0 & 0x6) == 0x6);
+
+ 0002f 48 8b 45 08 mov rax, QWORD PTR xcr0$[rbp]
+ 00033 48 83 e0 06 and rax, 6
+ 00037 48 83 f8 06 cmp rax, 6
+ 0003b 75 0c jne SHORT $LN3@xgetbv_has
+ 0003d c7 85 d4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
+ 00047 eb 0a jmp SHORT $LN4@xgetbv_has
+$LN3@xgetbv_has:
+ 00049 c7 85 d4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
+$LN4@xgetbv_has:
+ 00053 8b 85 d4 00 00
+ 00 mov eax, DWORD PTR tv68[rbp]
+
+; 46 : }
+
+ 00059 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00060 5f pop rdi
+ 00061 5d pop rbp
+ 00062 c3 ret 0
+xgetbv_has_xmm_ymm ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c
+; COMDAT get_cpuid
+_TEXT SEGMENT
+regs$ = 8
+__$ArrayPad$ = 232
+leaf$ = 272
+subleaf$ = 280
+eax$ = 288
+ebx$ = 296
+ecx$ = 304
+edx$ = 312
+get_cpuid PROC ; COMDAT
+
+; 20 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00012 55 push rbp
+ 00013 53 push rbx
+ 00014 57 push rdi
+ 00015 48 81 ec 10 01
+ 00 00 sub rsp, 272 ; 00000110H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00026 b9 0c 00 00 00 mov ecx, 12
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 8b 8c 24 38 01
+ 00 00 mov ecx, DWORD PTR [rsp+312]
+ 00039 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00040 48 33 c5 xor rax, rbp
+ 00043 48 89 85 e8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__3EBA305F_simdid@x86@c
+ 00051 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00056 90 npad 1
+
+; 21 : #if defined(_MSC_VER)
+; 22 : int regs[4];
+; 23 : __cpuidex(regs, leaf, subleaf);
+
+ 00057 8b 85 10 01 00
+ 00 mov eax, DWORD PTR leaf$[rbp]
+ 0005d 8b 8d 18 01 00
+ 00 mov ecx, DWORD PTR subleaf$[rbp]
+ 00063 0f a2 cpuid
+ 00065 4c 8d 45 08 lea r8, QWORD PTR regs$[rbp]
+ 00069 41 89 00 mov DWORD PTR [r8], eax
+ 0006c 41 89 58 04 mov DWORD PTR [r8+4], ebx
+ 00070 41 89 48 08 mov DWORD PTR [r8+8], ecx
+ 00074 41 89 50 0c mov DWORD PTR [r8+12], edx
+
+; 24 : *eax = regs[0];
+
+ 00078 b8 04 00 00 00 mov eax, 4
+ 0007d 48 6b c0 00 imul rax, rax, 0
+ 00081 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR eax$[rbp]
+ 00088 8b 44 05 08 mov eax, DWORD PTR regs$[rbp+rax]
+ 0008c 89 01 mov DWORD PTR [rcx], eax
+
+; 25 : *ebx = regs[1];
+
+ 0008e b8 04 00 00 00 mov eax, 4
+ 00093 48 6b c0 01 imul rax, rax, 1
+ 00097 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR ebx$[rbp]
+ 0009e 8b 44 05 08 mov eax, DWORD PTR regs$[rbp+rax]
+ 000a2 89 01 mov DWORD PTR [rcx], eax
+
+; 26 : *ecx = regs[2];
+
+ 000a4 b8 04 00 00 00 mov eax, 4
+ 000a9 48 6b c0 02 imul rax, rax, 2
+ 000ad 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR ecx$[rbp]
+ 000b4 8b 44 05 08 mov eax, DWORD PTR regs$[rbp+rax]
+ 000b8 89 01 mov DWORD PTR [rcx], eax
+
+; 27 : *edx = regs[3];
+
+ 000ba b8 04 00 00 00 mov eax, 4
+ 000bf 48 6b c0 03 imul rax, rax, 3
+ 000c3 48 8b 8d 38 01
+ 00 00 mov rcx, QWORD PTR edx$[rbp]
+ 000ca 8b 44 05 08 mov eax, DWORD PTR regs$[rbp+rax]
+ 000ce 89 01 mov DWORD PTR [rcx], eax
+
+; 28 : #else
+; 29 : unsigned int a, b, c, d;
+; 30 : __cpuid_count((unsigned int)leaf, (unsigned int)subleaf, a, b, c, d);
+; 31 : *eax = (int)a;
+; 32 : *ebx = (int)b;
+; 33 : *ecx = (int)c;
+; 34 : *edx = (int)d;
+; 35 : #endif
+; 36 : }
+
+ 000d0 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 000d4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:get_cpuid$rtcFrameData
+ 000db e8 00 00 00 00 call _RTC_CheckStackVars
+ 000e0 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000e7 48 33 cd xor rcx, rbp
+ 000ea e8 00 00 00 00 call __security_check_cookie
+ 000ef 48 8d a5 f0 00
+ 00 00 lea rsp, QWORD PTR [rbp+240]
+ 000f6 5f pop rdi
+ 000f7 5b pop rbx
+ 000f8 5d pop rbp
+ 000f9 c3 ret 0
+get_cpuid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c
+; COMDAT sn_get_simd_level_local
+_TEXT SEGMENT
+_simdid$ = 8
+eax$ = 36
+ebx$ = 68
+ecx$ = 100
+edx$ = 132
+vendor$ = 168
+is_intel$ = 212
+is_amd$ = 244
+is_hygon$ = 276
+is_via$ = 308
+cpuid1_eax$ = 340
+family$ = 372
+model$ = 404
+has_sse42$ = 436
+has_avx$ = 468
+has_osxsave$ = 500
+has_fma$ = 532
+has_f16c$ = 564
+root$ = 600
+manu$ = 632
+main_lvl$ = 664
+avx512_bits$ = 696
+amx_bits$ = 728
+avx_bits$ = 760
+avx10_bits$ = 792
+has_hybrid$ = 820
+has_bmi1$17 = 852
+has_bmi2$18 = 884
+has_avx2$19 = 916
+has_avx512f$20 = 948
+has_avx512dq$21 = 980
+has_avx512bw$22 = 1012
+has_avx512vl$23 = 1044
+has_avx512_vnni$24 = 1076
+has_vbmi$25 = 1108
+has_vbmi2$26 = 1140
+has_amx_tile$27 = 1172
+has_amx_int8$28 = 1204
+has_amx_bf16$29 = 1236
+has_bf16$30 = 1268
+has_fp16$31 = 1300
+has_avx10$32 = 1332
+a10_eax$33 = 1364
+a10_ebx$34 = 1396
+a10_ecx$35 = 1428
+a10_edx$36 = 1460
+avx10_ver$37 = 1492
+uarch_bits$ = 1528
+h_eax$38 = 1556
+h_ebx$39 = 1588
+h_ecx$40 = 1620
+h_edx$41 = 1652
+core_type$42 = 1684
+$T43 = 2488
+tv208 = 2500
+tv282 = 2500
+tv285 = 2500
+tv170 = 2500
+tv167 = 2500
+tv164 = 2500
+tv161 = 2500
+tv158 = 2500
+tv139 = 2500
+tv129 = 2500
+tv87 = 2500
+tv178 = 2500
+tv202 = 2500
+tv205 = 2500
+tv288 = 2500
+tv211 = 2500
+tv214 = 2500
+tv217 = 2500
+tv220 = 2500
+tv223 = 2500
+tv92 = 2500
+tv258 = 2500
+tv261 = 2500
+tv264 = 2500
+tv267 = 2500
+tv270 = 2500
+tv273 = 2500
+tv176 = 2504
+tv174 = 2508
+tv172 = 2512
+__$ArrayPad$ = 2520
+sn_get_simd_level_local PROC ; COMDAT
+
+; 91 : {
+
+$LN98:
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec 18 0a
+ 00 00 sub rsp, 2584 ; 00000a18H
+ 0000a 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 0000f 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00014 b9 ba 01 00 00 mov ecx, 442 ; 000001baH
+ 00019 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 0001e f3 ab rep stosd
+ 00020 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00027 48 33 c5 xor rax, rbp
+ 0002a 48 89 85 d8 09
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00031 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__3EBA305F_simdid@x86@c
+ 00038 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0003d 90 npad 1
+
+; 92 : SIMDID _simdid = { 0 };
+
+ 0003e 48 8d 45 08 lea rax, QWORD PTR _simdid$[rbp]
+ 00042 48 8b f8 mov rdi, rax
+ 00045 33 c0 xor eax, eax
+ 00047 b9 08 00 00 00 mov ecx, 8
+ 0004c f3 aa rep stosb
+
+; 93 :
+; 94 : int eax = 0, ebx = 0, ecx = 0, edx = 0;
+
+ 0004e c7 45 24 00 00
+ 00 00 mov DWORD PTR eax$[rbp], 0
+ 00055 c7 45 44 00 00
+ 00 00 mov DWORD PTR ebx$[rbp], 0
+ 0005c c7 45 64 00 00
+ 00 00 mov DWORD PTR ecx$[rbp], 0
+ 00063 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR edx$[rbp], 0
+
+; 95 :
+; 96 : /* Vendor */
+; 97 : get_cpuid(0, 0, &eax, &ebx, &ecx, &edx);
+
+ 0006d 48 8d 85 84 00
+ 00 00 lea rax, QWORD PTR edx$[rbp]
+ 00074 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00079 48 8d 45 64 lea rax, QWORD PTR ecx$[rbp]
+ 0007d 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 00082 4c 8d 4d 44 lea r9, QWORD PTR ebx$[rbp]
+ 00086 4c 8d 45 24 lea r8, QWORD PTR eax$[rbp]
+ 0008a 33 d2 xor edx, edx
+ 0008c 33 c9 xor ecx, ecx
+ 0008e e8 00 00 00 00 call get_cpuid
+ 00093 90 npad 1
+
+; 98 : char vendor[13];
+; 99 : ((int *)vendor)[0] = ebx;
+
+ 00094 b8 04 00 00 00 mov eax, 4
+ 00099 48 6b c0 00 imul rax, rax, 0
+ 0009d 8b 4d 44 mov ecx, DWORD PTR ebx$[rbp]
+ 000a0 89 8c 05 a8 00
+ 00 00 mov DWORD PTR vendor$[rbp+rax], ecx
+
+; 100 : ((int *)vendor)[1] = edx;
+
+ 000a7 b8 04 00 00 00 mov eax, 4
+ 000ac 48 6b c0 01 imul rax, rax, 1
+ 000b0 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR edx$[rbp]
+ 000b6 89 8c 05 a8 00
+ 00 00 mov DWORD PTR vendor$[rbp+rax], ecx
+
+; 101 : ((int *)vendor)[2] = ecx;
+
+ 000bd b8 04 00 00 00 mov eax, 4
+ 000c2 48 6b c0 02 imul rax, rax, 2
+ 000c6 8b 4d 64 mov ecx, DWORD PTR ecx$[rbp]
+ 000c9 89 8c 05 a8 00
+ 00 00 mov DWORD PTR vendor$[rbp+rax], ecx
+
+; 102 : vendor[12] = '\0';
+
+ 000d0 b8 01 00 00 00 mov eax, 1
+ 000d5 48 6b c0 0c imul rax, rax, 12
+ 000d9 48 89 85 b8 09
+ 00 00 mov QWORD PTR $T43[rbp], rax
+ 000e0 48 83 bd b8 09
+ 00 00 0d cmp QWORD PTR $T43[rbp], 13
+ 000e8 73 02 jae SHORT $LN36@sn_get_sim
+ 000ea eb 06 jmp SHORT $LN37@sn_get_sim
+$LN36@sn_get_sim:
+ 000ec e8 00 00 00 00 call __report_rangecheckfailure
+ 000f1 90 npad 1
+$LN37@sn_get_sim:
+ 000f2 48 8b 85 b8 09
+ 00 00 mov rax, QWORD PTR $T43[rbp]
+ 000f9 c6 84 05 a8 00
+ 00 00 00 mov BYTE PTR vendor$[rbp+rax], 0
+
+; 103 : const int is_intel = (strcmp(vendor, "GenuineIntel") == 0);
+
+ 00101 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0N@BDDFKIGD@GenuineIntel@
+ 00108 48 8d 8d a8 00
+ 00 00 lea rcx, QWORD PTR vendor$[rbp]
+ 0010f e8 00 00 00 00 call strcmp
+ 00114 85 c0 test eax, eax
+ 00116 75 0c jne SHORT $LN38@sn_get_sim
+ 00118 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv87[rbp], 1
+ 00122 eb 0a jmp SHORT $LN39@sn_get_sim
+$LN38@sn_get_sim:
+ 00124 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
+$LN39@sn_get_sim:
+ 0012e 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv87[rbp]
+ 00134 89 85 d4 00 00
+ 00 mov DWORD PTR is_intel$[rbp], eax
+
+; 104 : const int is_amd = (strcmp(vendor, "AuthenticAMD") == 0);
+
+ 0013a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0N@FFJGBINN@AuthenticAMD@
+ 00141 48 8d 8d a8 00
+ 00 00 lea rcx, QWORD PTR vendor$[rbp]
+ 00148 e8 00 00 00 00 call strcmp
+ 0014d 85 c0 test eax, eax
+ 0014f 75 0c jne SHORT $LN40@sn_get_sim
+ 00151 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv92[rbp], 1
+ 0015b eb 0a jmp SHORT $LN41@sn_get_sim
+$LN40@sn_get_sim:
+ 0015d c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv92[rbp], 0
+$LN41@sn_get_sim:
+ 00167 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv92[rbp]
+ 0016d 89 85 f4 00 00
+ 00 mov DWORD PTR is_amd$[rbp], eax
+
+; 105 : const int is_hygon = (strcmp(vendor, "HygonGenuine") == 0); /* 海光: separate from AMD */
+
+ 00173 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0N@IGLDKOMM@HygonGenuine@
+ 0017a 48 8d 8d a8 00
+ 00 00 lea rcx, QWORD PTR vendor$[rbp]
+ 00181 e8 00 00 00 00 call strcmp
+ 00186 85 c0 test eax, eax
+ 00188 75 0c jne SHORT $LN42@sn_get_sim
+ 0018a c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv129[rbp], 1
+ 00194 eb 0a jmp SHORT $LN43@sn_get_sim
+$LN42@sn_get_sim:
+ 00196 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv129[rbp], 0
+$LN43@sn_get_sim:
+ 001a0 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv129[rbp]
+ 001a6 89 85 14 01 00
+ 00 mov DWORD PTR is_hygon$[rbp], eax
+
+; 106 : const int is_via = (strcmp(vendor, "CentaurHauls") == 0) ||
+
+ 001ac 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0N@DHAFJCOO@CentaurHauls@
+ 001b3 48 8d 8d a8 00
+ 00 00 lea rcx, QWORD PTR vendor$[rbp]
+ 001ba e8 00 00 00 00 call strcmp
+ 001bf 85 c0 test eax, eax
+ 001c1 74 29 je SHORT $LN44@sn_get_sim
+ 001c3 41 b8 0c 00 00
+ 00 mov r8d, 12
+ 001c9 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0N@BDNCIKNF@?5?5Shanghai?5?5@
+ 001d0 48 8d 8d a8 00
+ 00 00 lea rcx, QWORD PTR vendor$[rbp]
+ 001d7 e8 00 00 00 00 call memcmp
+ 001dc 85 c0 test eax, eax
+ 001de 74 0c je SHORT $LN44@sn_get_sim
+ 001e0 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv139[rbp], 0
+ 001ea eb 0a jmp SHORT $LN45@sn_get_sim
+$LN44@sn_get_sim:
+ 001ec c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv139[rbp], 1
+$LN45@sn_get_sim:
+ 001f6 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv139[rbp]
+ 001fc 89 85 34 01 00
+ 00 mov DWORD PTR is_via$[rbp], eax
+
+; 107 : (memcmp(vendor, " Shanghai ", 12) == 0); /* VIA / Zhaoxin */
+; 108 :
+; 109 : /* CPUID.1 */
+; 110 : get_cpuid(1, 0, &eax, &ebx, &ecx, &edx);
+
+ 00202 48 8d 85 84 00
+ 00 00 lea rax, QWORD PTR edx$[rbp]
+ 00209 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 0020e 48 8d 45 64 lea rax, QWORD PTR ecx$[rbp]
+ 00212 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 00217 4c 8d 4d 44 lea r9, QWORD PTR ebx$[rbp]
+ 0021b 4c 8d 45 24 lea r8, QWORD PTR eax$[rbp]
+ 0021f 33 d2 xor edx, edx
+ 00221 b9 01 00 00 00 mov ecx, 1
+ 00226 e8 00 00 00 00 call get_cpuid
+ 0022b 90 npad 1
+
+; 111 : int cpuid1_eax = eax; /* saved for Zen1/Zen+ glue-YMM detection */
+
+ 0022c 8b 45 24 mov eax, DWORD PTR eax$[rbp]
+ 0022f 89 85 54 01 00
+ 00 mov DWORD PTR cpuid1_eax$[rbp], eax
+
+; 112 : int family = ((eax >> 8) & 0xF) + ((eax >> 20) & 0xFF0);
+
+ 00235 8b 45 24 mov eax, DWORD PTR eax$[rbp]
+ 00238 c1 f8 08 sar eax, 8
+ 0023b 83 e0 0f and eax, 15
+ 0023e 8b 4d 24 mov ecx, DWORD PTR eax$[rbp]
+ 00241 c1 f9 14 sar ecx, 20
+ 00244 81 e1 f0 0f 00
+ 00 and ecx, 4080 ; 00000ff0H
+ 0024a 03 c1 add eax, ecx
+ 0024c 89 85 74 01 00
+ 00 mov DWORD PTR family$[rbp], eax
+
+; 113 : int model = ((eax >> 4) & 0xF) | ((eax >> 12) & 0xF0);
+
+ 00252 8b 45 24 mov eax, DWORD PTR eax$[rbp]
+ 00255 c1 f8 04 sar eax, 4
+ 00258 83 e0 0f and eax, 15
+ 0025b 8b 4d 24 mov ecx, DWORD PTR eax$[rbp]
+ 0025e c1 f9 0c sar ecx, 12
+ 00261 81 e1 f0 00 00
+ 00 and ecx, 240 ; 000000f0H
+ 00267 0b c1 or eax, ecx
+ 00269 89 85 94 01 00
+ 00 mov DWORD PTR model$[rbp], eax
+
+; 114 :
+; 115 : int has_sse42 = (ecx & (1 << 20)) != 0;
+
+ 0026f 8b 45 64 mov eax, DWORD PTR ecx$[rbp]
+ 00272 25 00 00 10 00 and eax, 1048576 ; 00100000H
+ 00277 85 c0 test eax, eax
+ 00279 74 0c je SHORT $LN46@sn_get_sim
+ 0027b c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv158[rbp], 1
+ 00285 eb 0a jmp SHORT $LN47@sn_get_sim
+$LN46@sn_get_sim:
+ 00287 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv158[rbp], 0
+$LN47@sn_get_sim:
+ 00291 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv158[rbp]
+ 00297 89 85 b4 01 00
+ 00 mov DWORD PTR has_sse42$[rbp], eax
+
+; 116 : int has_avx = (ecx & (1 << 28)) != 0;
+
+ 0029d 8b 45 64 mov eax, DWORD PTR ecx$[rbp]
+ 002a0 25 00 00 00 10 and eax, 268435456 ; 10000000H
+ 002a5 85 c0 test eax, eax
+ 002a7 74 0c je SHORT $LN48@sn_get_sim
+ 002a9 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv161[rbp], 1
+ 002b3 eb 0a jmp SHORT $LN49@sn_get_sim
+$LN48@sn_get_sim:
+ 002b5 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv161[rbp], 0
+$LN49@sn_get_sim:
+ 002bf 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv161[rbp]
+ 002c5 89 85 d4 01 00
+ 00 mov DWORD PTR has_avx$[rbp], eax
+
+; 117 : int has_osxsave = (ecx & (1 << 27)) != 0;
+
+ 002cb 8b 45 64 mov eax, DWORD PTR ecx$[rbp]
+ 002ce 25 00 00 00 08 and eax, 134217728 ; 08000000H
+ 002d3 85 c0 test eax, eax
+ 002d5 74 0c je SHORT $LN50@sn_get_sim
+ 002d7 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv164[rbp], 1
+ 002e1 eb 0a jmp SHORT $LN51@sn_get_sim
+$LN50@sn_get_sim:
+ 002e3 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv164[rbp], 0
+$LN51@sn_get_sim:
+ 002ed 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv164[rbp]
+ 002f3 89 85 f4 01 00
+ 00 mov DWORD PTR has_osxsave$[rbp], eax
+
+; 118 : int has_fma = (ecx & (1 << 12)) != 0;
+
+ 002f9 8b 45 64 mov eax, DWORD PTR ecx$[rbp]
+ 002fc 25 00 10 00 00 and eax, 4096 ; 00001000H
+ 00301 85 c0 test eax, eax
+ 00303 74 0c je SHORT $LN52@sn_get_sim
+ 00305 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv167[rbp], 1
+ 0030f eb 0a jmp SHORT $LN53@sn_get_sim
+$LN52@sn_get_sim:
+ 00311 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv167[rbp], 0
+$LN53@sn_get_sim:
+ 0031b 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv167[rbp]
+ 00321 89 85 14 02 00
+ 00 mov DWORD PTR has_fma$[rbp], eax
+
+; 119 : int has_f16c = (ecx & (1 << 29)) != 0;
+
+ 00327 8b 45 64 mov eax, DWORD PTR ecx$[rbp]
+ 0032a 25 00 00 00 20 and eax, 536870912 ; 20000000H
+ 0032f 85 c0 test eax, eax
+ 00331 74 0c je SHORT $LN54@sn_get_sim
+ 00333 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv170[rbp], 1
+ 0033d eb 0a jmp SHORT $LN55@sn_get_sim
+$LN54@sn_get_sim:
+ 0033f c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv170[rbp], 0
+$LN55@sn_get_sim:
+ 00349 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv170[rbp]
+ 0034f 89 85 34 02 00
+ 00 mov DWORD PTR has_f16c$[rbp], eax
+
+; 120 :
+; 121 : uint64_t root = SIMDID_PACK_ROOT(SIMDID_ROOT_X86_64);
+
+ 00355 48 c7 85 58 02
+ 00 00 01 00 00
+ 00 mov QWORD PTR root$[rbp], 1
+
+; 122 : uint64_t manu = SIMDID_PACK_MANU(is_intel ? SIMDID_MANU_INTEL :
+
+ 00360 83 bd d4 00 00
+ 00 00 cmp DWORD PTR is_intel$[rbp], 0
+ 00367 74 0c je SHORT $LN62@sn_get_sim
+ 00369 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv178[rbp], 1
+ 00373 eb 6d jmp SHORT $LN63@sn_get_sim
+$LN62@sn_get_sim:
+ 00375 83 bd f4 00 00
+ 00 00 cmp DWORD PTR is_amd$[rbp], 0
+ 0037c 74 0c je SHORT $LN60@sn_get_sim
+ 0037e c7 85 c8 09 00
+ 00 02 00 00 00 mov DWORD PTR tv176[rbp], 2
+ 00388 eb 4c jmp SHORT $LN61@sn_get_sim
+$LN60@sn_get_sim:
+ 0038a 83 bd 14 01 00
+ 00 00 cmp DWORD PTR is_hygon$[rbp], 0
+ 00391 74 0c je SHORT $LN58@sn_get_sim
+ 00393 c7 85 cc 09 00
+ 00 04 00 00 00 mov DWORD PTR tv174[rbp], 4
+ 0039d eb 2b jmp SHORT $LN59@sn_get_sim
+$LN58@sn_get_sim:
+ 0039f 83 bd 34 01 00
+ 00 00 cmp DWORD PTR is_via$[rbp], 0
+ 003a6 74 0c je SHORT $LN56@sn_get_sim
+ 003a8 c7 85 d0 09 00
+ 00 03 00 00 00 mov DWORD PTR tv172[rbp], 3
+ 003b2 eb 0a jmp SHORT $LN57@sn_get_sim
+$LN56@sn_get_sim:
+ 003b4 c7 85 d0 09 00
+ 00 00 00 00 00 mov DWORD PTR tv172[rbp], 0
+$LN57@sn_get_sim:
+ 003be 8b 85 d0 09 00
+ 00 mov eax, DWORD PTR tv172[rbp]
+ 003c4 89 85 cc 09 00
+ 00 mov DWORD PTR tv174[rbp], eax
+$LN59@sn_get_sim:
+ 003ca 8b 85 cc 09 00
+ 00 mov eax, DWORD PTR tv174[rbp]
+ 003d0 89 85 c8 09 00
+ 00 mov DWORD PTR tv176[rbp], eax
+$LN61@sn_get_sim:
+ 003d6 8b 85 c8 09 00
+ 00 mov eax, DWORD PTR tv176[rbp]
+ 003dc 89 85 c4 09 00
+ 00 mov DWORD PTR tv178[rbp], eax
+$LN63@sn_get_sim:
+ 003e2 48 63 85 c4 09
+ 00 00 movsxd rax, DWORD PTR tv178[rbp]
+ 003e9 48 83 e0 0f and rax, 15
+ 003ed 48 c1 e0 04 shl rax, 4
+ 003f1 48 89 85 78 02
+ 00 00 mov QWORD PTR manu$[rbp], rax
+
+; 123 : is_amd ? SIMDID_MANU_AMD :
+; 124 : is_hygon ? SIMDID_MANU_HYGON :
+; 125 : is_via ? SIMDID_MANU_VIA :
+; 126 : SIMDID_MANU_UNKNOWN);
+; 127 : uint64_t main_lvl = SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_NONE);
+
+ 003f8 48 c7 85 98 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR main_lvl$[rbp], 0
+
+; 128 : uint64_t avx512_bits = 0;
+
+ 00403 48 c7 85 b8 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR avx512_bits$[rbp], 0
+
+; 129 : uint64_t amx_bits = 0;
+
+ 0040e 48 c7 85 d8 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR amx_bits$[rbp], 0
+
+; 130 : uint64_t avx_bits = 0;
+
+ 00419 48 c7 85 f8 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR avx_bits$[rbp], 0
+
+; 131 : uint64_t avx10_bits = 0;
+
+ 00424 48 c7 85 18 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR avx10_bits$[rbp], 0
+
+; 132 : int has_hybrid = 0; /* filled from CPUID.7.0 EDX[15] when AVX present */
+
+ 0042f c7 85 34 03 00
+ 00 00 00 00 00 mov DWORD PTR has_hybrid$[rbp], 0
+
+; 133 :
+; 134 : /* Baseline main level */
+; 135 : if (has_sse42)
+
+ 00439 83 bd b4 01 00
+ 00 00 cmp DWORD PTR has_sse42$[rbp], 0
+ 00440 74 0b je SHORT $LN2@sn_get_sim
+
+; 136 : main_lvl = SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_SSE);
+
+ 00442 48 c7 85 98 02
+ 00 00 00 01 00
+ 00 mov QWORD PTR main_lvl$[rbp], 256 ; 00000100H
+$LN2@sn_get_sim:
+
+; 137 :
+; 138 : if (has_avx && has_osxsave && xgetbv_has_xmm_ymm()) {
+
+ 0044d 83 bd d4 01 00
+ 00 00 cmp DWORD PTR has_avx$[rbp], 0
+ 00454 0f 84 af 06 00
+ 00 je $LN3@sn_get_sim
+ 0045a 83 bd f4 01 00
+ 00 00 cmp DWORD PTR has_osxsave$[rbp], 0
+ 00461 0f 84 a2 06 00
+ 00 je $LN3@sn_get_sim
+ 00467 e8 00 00 00 00 call xgetbv_has_xmm_ymm
+ 0046c 85 c0 test eax, eax
+ 0046e 0f 84 95 06 00
+ 00 je $LN3@sn_get_sim
+
+; 139 : avx_bits |= SIMDID_AVX;
+
+ 00474 48 8b 85 f8 02
+ 00 00 mov rax, QWORD PTR avx_bits$[rbp]
+ 0047b 48 83 c8 01 or rax, 1
+ 0047f 48 89 85 f8 02
+ 00 00 mov QWORD PTR avx_bits$[rbp], rax
+
+; 140 :
+; 141 : /* Glued/split-lane YMM: early AMD Zen1/Zen+, Hygon, and VIA/Zhaoxin */
+; 142 : if (is_amd_glue_ymm(vendor, cpuid1_eax) || is_via)
+
+ 00486 8b 95 54 01 00
+ 00 mov edx, DWORD PTR cpuid1_eax$[rbp]
+ 0048c 48 8d 8d a8 00
+ 00 00 lea rcx, QWORD PTR vendor$[rbp]
+ 00493 e8 00 00 00 00 call is_amd_glue_ymm
+ 00498 85 c0 test eax, eax
+ 0049a 75 09 jne SHORT $LN5@sn_get_sim
+ 0049c 83 bd 34 01 00
+ 00 00 cmp DWORD PTR is_via$[rbp], 0
+ 004a3 74 12 je SHORT $LN4@sn_get_sim
+$LN5@sn_get_sim:
+
+; 143 : avx_bits |= SIMDID_AVX_DUAL;
+
+ 004a5 48 8b 85 f8 02
+ 00 00 mov rax, QWORD PTR avx_bits$[rbp]
+ 004ac 48 83 c8 10 or rax, 16
+ 004b0 48 89 85 f8 02
+ 00 00 mov QWORD PTR avx_bits$[rbp], rax
+$LN4@sn_get_sim:
+
+; 144 :
+; 145 : /* CPUID.7.0 */
+; 146 : get_cpuid(7, 0, &eax, &ebx, &ecx, &edx);
+
+ 004b7 48 8d 85 84 00
+ 00 00 lea rax, QWORD PTR edx$[rbp]
+ 004be 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 004c3 48 8d 45 64 lea rax, QWORD PTR ecx$[rbp]
+ 004c7 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 004cc 4c 8d 4d 44 lea r9, QWORD PTR ebx$[rbp]
+ 004d0 4c 8d 45 24 lea r8, QWORD PTR eax$[rbp]
+ 004d4 33 d2 xor edx, edx
+ 004d6 b9 07 00 00 00 mov ecx, 7
+ 004db e8 00 00 00 00 call get_cpuid
+ 004e0 90 npad 1
+
+; 147 : const int has_bmi1 = (ebx & (1 << 3)) != 0;
+
+ 004e1 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 004e4 83 e0 08 and eax, 8
+ 004e7 85 c0 test eax, eax
+ 004e9 74 0c je SHORT $LN64@sn_get_sim
+ 004eb c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv202[rbp], 1
+ 004f5 eb 0a jmp SHORT $LN65@sn_get_sim
+$LN64@sn_get_sim:
+ 004f7 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv202[rbp], 0
+$LN65@sn_get_sim:
+ 00501 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv202[rbp]
+ 00507 89 85 54 03 00
+ 00 mov DWORD PTR has_bmi1$17[rbp], eax
+
+; 148 : const int has_bmi2 = (ebx & (1 << 8)) != 0;
+
+ 0050d 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 00510 25 00 01 00 00 and eax, 256 ; 00000100H
+ 00515 85 c0 test eax, eax
+ 00517 74 0c je SHORT $LN66@sn_get_sim
+ 00519 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv205[rbp], 1
+ 00523 eb 0a jmp SHORT $LN67@sn_get_sim
+$LN66@sn_get_sim:
+ 00525 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv205[rbp], 0
+$LN67@sn_get_sim:
+ 0052f 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv205[rbp]
+ 00535 89 85 74 03 00
+ 00 mov DWORD PTR has_bmi2$18[rbp], eax
+
+; 149 : const int has_avx2 = (ebx & (1 << 5)) != 0;
+
+ 0053b 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 0053e 83 e0 20 and eax, 32 ; 00000020H
+ 00541 85 c0 test eax, eax
+ 00543 74 0c je SHORT $LN68@sn_get_sim
+ 00545 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv208[rbp], 1
+ 0054f eb 0a jmp SHORT $LN69@sn_get_sim
+$LN68@sn_get_sim:
+ 00551 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv208[rbp], 0
+$LN69@sn_get_sim:
+ 0055b 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv208[rbp]
+ 00561 89 85 94 03 00
+ 00 mov DWORD PTR has_avx2$19[rbp], eax
+
+; 150 : const int has_avx512f = (ebx & (1 << 16)) != 0;
+
+ 00567 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 0056a 25 00 00 01 00 and eax, 65536 ; 00010000H
+ 0056f 85 c0 test eax, eax
+ 00571 74 0c je SHORT $LN70@sn_get_sim
+ 00573 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv211[rbp], 1
+ 0057d eb 0a jmp SHORT $LN71@sn_get_sim
+$LN70@sn_get_sim:
+ 0057f c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv211[rbp], 0
+$LN71@sn_get_sim:
+ 00589 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv211[rbp]
+ 0058f 89 85 b4 03 00
+ 00 mov DWORD PTR has_avx512f$20[rbp], eax
+
+; 151 : const int has_avx512dq = (ebx & (1 << 17)) != 0;
+
+ 00595 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 00598 25 00 00 02 00 and eax, 131072 ; 00020000H
+ 0059d 85 c0 test eax, eax
+ 0059f 74 0c je SHORT $LN72@sn_get_sim
+ 005a1 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv214[rbp], 1
+ 005ab eb 0a jmp SHORT $LN73@sn_get_sim
+$LN72@sn_get_sim:
+ 005ad c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv214[rbp], 0
+$LN73@sn_get_sim:
+ 005b7 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv214[rbp]
+ 005bd 89 85 d4 03 00
+ 00 mov DWORD PTR has_avx512dq$21[rbp], eax
+
+; 152 : const int has_avx512bw = (ebx & (1 << 30)) != 0;
+
+ 005c3 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 005c6 25 00 00 00 40 and eax, 1073741824 ; 40000000H
+ 005cb 85 c0 test eax, eax
+ 005cd 74 0c je SHORT $LN74@sn_get_sim
+ 005cf c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv217[rbp], 1
+ 005d9 eb 0a jmp SHORT $LN75@sn_get_sim
+$LN74@sn_get_sim:
+ 005db c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv217[rbp], 0
+$LN75@sn_get_sim:
+ 005e5 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv217[rbp]
+ 005eb 89 85 f4 03 00
+ 00 mov DWORD PTR has_avx512bw$22[rbp], eax
+
+; 153 : const int has_avx512vl = (ebx & (1u << 31)) != 0;
+
+ 005f1 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 005f4 25 00 00 00 80 and eax, -2147483648 ; 80000000H
+ 005f9 85 c0 test eax, eax
+ 005fb 74 0c je SHORT $LN76@sn_get_sim
+ 005fd c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv220[rbp], 1
+ 00607 eb 0a jmp SHORT $LN77@sn_get_sim
+$LN76@sn_get_sim:
+ 00609 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv220[rbp], 0
+$LN77@sn_get_sim:
+ 00613 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv220[rbp]
+ 00619 89 85 14 04 00
+ 00 mov DWORD PTR has_avx512vl$23[rbp], eax
+
+; 154 : const int has_avx512_vnni = (ebx & (1 << 11)) != 0;
+
+ 0061f 8b 45 44 mov eax, DWORD PTR ebx$[rbp]
+ 00622 25 00 08 00 00 and eax, 2048 ; 00000800H
+ 00627 85 c0 test eax, eax
+ 00629 74 0c je SHORT $LN78@sn_get_sim
+ 0062b c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv223[rbp], 1
+ 00635 eb 0a jmp SHORT $LN79@sn_get_sim
+$LN78@sn_get_sim:
+ 00637 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv223[rbp], 0
+$LN79@sn_get_sim:
+ 00641 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv223[rbp]
+ 00647 89 85 34 04 00
+ 00 mov DWORD PTR has_avx512_vnni$24[rbp], eax
+
+; 155 : const int has_vbmi = (ecx & (1 << 1)) != 0;
+
+ 0064d 8b 45 64 mov eax, DWORD PTR ecx$[rbp]
+ 00650 83 e0 02 and eax, 2
+ 00653 85 c0 test eax, eax
+ 00655 74 0c je SHORT $LN80@sn_get_sim
+ 00657 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv258[rbp], 1
+ 00661 eb 0a jmp SHORT $LN81@sn_get_sim
+$LN80@sn_get_sim:
+ 00663 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv258[rbp], 0
+$LN81@sn_get_sim:
+ 0066d 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv258[rbp]
+ 00673 89 85 54 04 00
+ 00 mov DWORD PTR has_vbmi$25[rbp], eax
+
+; 156 : const int has_vbmi2 = (ecx & (1 << 6)) != 0;
+
+ 00679 8b 45 64 mov eax, DWORD PTR ecx$[rbp]
+ 0067c 83 e0 40 and eax, 64 ; 00000040H
+ 0067f 85 c0 test eax, eax
+ 00681 74 0c je SHORT $LN82@sn_get_sim
+ 00683 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv261[rbp], 1
+ 0068d eb 0a jmp SHORT $LN83@sn_get_sim
+$LN82@sn_get_sim:
+ 0068f c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv261[rbp], 0
+$LN83@sn_get_sim:
+ 00699 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv261[rbp]
+ 0069f 89 85 74 04 00
+ 00 mov DWORD PTR has_vbmi2$26[rbp], eax
+
+; 157 :
+; 158 : /* AMX in leaf 7 subleaf 0 EDX bits 24/25/26 — capture before
+; 159 : overwriting regs with subleaf 1 */
+; 160 : const int has_amx_tile = (edx & (1 << 24)) != 0;
+
+ 006a5 8b 85 84 00 00
+ 00 mov eax, DWORD PTR edx$[rbp]
+ 006ab 25 00 00 00 01 and eax, 16777216 ; 01000000H
+ 006b0 85 c0 test eax, eax
+ 006b2 74 0c je SHORT $LN84@sn_get_sim
+ 006b4 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv264[rbp], 1
+ 006be eb 0a jmp SHORT $LN85@sn_get_sim
+$LN84@sn_get_sim:
+ 006c0 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv264[rbp], 0
+$LN85@sn_get_sim:
+ 006ca 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv264[rbp]
+ 006d0 89 85 94 04 00
+ 00 mov DWORD PTR has_amx_tile$27[rbp], eax
+
+; 161 : const int has_amx_int8 = (edx & (1 << 25)) != 0;
+
+ 006d6 8b 85 84 00 00
+ 00 mov eax, DWORD PTR edx$[rbp]
+ 006dc 25 00 00 00 02 and eax, 33554432 ; 02000000H
+ 006e1 85 c0 test eax, eax
+ 006e3 74 0c je SHORT $LN86@sn_get_sim
+ 006e5 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv267[rbp], 1
+ 006ef eb 0a jmp SHORT $LN87@sn_get_sim
+$LN86@sn_get_sim:
+ 006f1 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv267[rbp], 0
+$LN87@sn_get_sim:
+ 006fb 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv267[rbp]
+ 00701 89 85 b4 04 00
+ 00 mov DWORD PTR has_amx_int8$28[rbp], eax
+
+; 162 : const int has_amx_bf16 = (edx & (1 << 22)) != 0;
+
+ 00707 8b 85 84 00 00
+ 00 mov eax, DWORD PTR edx$[rbp]
+ 0070d 25 00 00 40 00 and eax, 4194304 ; 00400000H
+ 00712 85 c0 test eax, eax
+ 00714 74 0c je SHORT $LN88@sn_get_sim
+ 00716 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv270[rbp], 1
+ 00720 eb 0a jmp SHORT $LN89@sn_get_sim
+$LN88@sn_get_sim:
+ 00722 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv270[rbp], 0
+$LN89@sn_get_sim:
+ 0072c 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv270[rbp]
+ 00732 89 85 d4 04 00
+ 00 mov DWORD PTR has_amx_bf16$29[rbp], eax
+
+; 163 : has_hybrid = (edx & (1 << 15)) != 0; /* Intel hybrid core topology */
+
+ 00738 8b 85 84 00 00
+ 00 mov eax, DWORD PTR edx$[rbp]
+ 0073e 25 00 80 00 00 and eax, 32768 ; 00008000H
+ 00743 85 c0 test eax, eax
+ 00745 74 0c je SHORT $LN90@sn_get_sim
+ 00747 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv273[rbp], 1
+ 00751 eb 0a jmp SHORT $LN91@sn_get_sim
+$LN90@sn_get_sim:
+ 00753 c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv273[rbp], 0
+$LN91@sn_get_sim:
+ 0075d 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv273[rbp]
+ 00763 89 85 34 03 00
+ 00 mov DWORD PTR has_hybrid$[rbp], eax
+
+; 164 :
+; 165 : /* leaf 7, subleaf 1 for BF16/FP16/AVX10 convergence */
+; 166 : get_cpuid(7, 1, &eax, &ebx, &ecx, &edx);
+
+ 00769 48 8d 85 84 00
+ 00 00 lea rax, QWORD PTR edx$[rbp]
+ 00770 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00775 48 8d 45 64 lea rax, QWORD PTR ecx$[rbp]
+ 00779 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 0077e 4c 8d 4d 44 lea r9, QWORD PTR ebx$[rbp]
+ 00782 4c 8d 45 24 lea r8, QWORD PTR eax$[rbp]
+ 00786 ba 01 00 00 00 mov edx, 1
+ 0078b b9 07 00 00 00 mov ecx, 7
+ 00790 e8 00 00 00 00 call get_cpuid
+ 00795 90 npad 1
+
+; 167 : const int has_bf16 = (eax & (1 << 5)) != 0; /* AVX512_BF16 */
+
+ 00796 8b 45 24 mov eax, DWORD PTR eax$[rbp]
+ 00799 83 e0 20 and eax, 32 ; 00000020H
+ 0079c 85 c0 test eax, eax
+ 0079e 74 0c je SHORT $LN92@sn_get_sim
+ 007a0 c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv282[rbp], 1
+ 007aa eb 0a jmp SHORT $LN93@sn_get_sim
+$LN92@sn_get_sim:
+ 007ac c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv282[rbp], 0
+$LN93@sn_get_sim:
+ 007b6 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv282[rbp]
+ 007bc 89 85 f4 04 00
+ 00 mov DWORD PTR has_bf16$30[rbp], eax
+
+; 168 : const int has_fp16 = (eax & (1 << 23)) != 0; /* AVX512_FP16 */
+
+ 007c2 8b 45 24 mov eax, DWORD PTR eax$[rbp]
+ 007c5 25 00 00 80 00 and eax, 8388608 ; 00800000H
+ 007ca 85 c0 test eax, eax
+ 007cc 74 0c je SHORT $LN94@sn_get_sim
+ 007ce c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv285[rbp], 1
+ 007d8 eb 0a jmp SHORT $LN95@sn_get_sim
+$LN94@sn_get_sim:
+ 007da c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv285[rbp], 0
+$LN95@sn_get_sim:
+ 007e4 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv285[rbp]
+ 007ea 89 85 14 05 00
+ 00 mov DWORD PTR has_fp16$31[rbp], eax
+
+; 169 : const int has_avx10 = (edx & (1 << 19)) != 0; /* AVX10 convergence */
+
+ 007f0 8b 85 84 00 00
+ 00 mov eax, DWORD PTR edx$[rbp]
+ 007f6 25 00 00 08 00 and eax, 524288 ; 00080000H
+ 007fb 85 c0 test eax, eax
+ 007fd 74 0c je SHORT $LN96@sn_get_sim
+ 007ff c7 85 c4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv288[rbp], 1
+ 00809 eb 0a jmp SHORT $LN97@sn_get_sim
+$LN96@sn_get_sim:
+ 0080b c7 85 c4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv288[rbp], 0
+$LN97@sn_get_sim:
+ 00815 8b 85 c4 09 00
+ 00 mov eax, DWORD PTR tv288[rbp]
+ 0081b 89 85 34 05 00
+ 00 mov DWORD PTR has_avx10$32[rbp], eax
+
+; 170 :
+; 171 : if (has_avx2) {
+
+ 00821 83 bd 94 03 00
+ 00 00 cmp DWORD PTR has_avx2$19[rbp], 0
+ 00828 74 53 je SHORT $LN6@sn_get_sim
+
+; 172 : avx_bits |= SIMDID_AVX2;
+
+ 0082a 48 8b 85 f8 02
+ 00 00 mov rax, QWORD PTR avx_bits$[rbp]
+ 00831 48 83 c8 02 or rax, 2
+ 00835 48 89 85 f8 02
+ 00 00 mov QWORD PTR avx_bits$[rbp], rax
+
+; 173 : if (has_fma)
+
+ 0083c 83 bd 14 02 00
+ 00 00 cmp DWORD PTR has_fma$[rbp], 0
+ 00843 74 12 je SHORT $LN7@sn_get_sim
+
+; 174 : avx_bits |= SIMDID_AVX_FMA;
+
+ 00845 48 8b 85 f8 02
+ 00 00 mov rax, QWORD PTR avx_bits$[rbp]
+ 0084c 48 83 c8 04 or rax, 4
+ 00850 48 89 85 f8 02
+ 00 00 mov QWORD PTR avx_bits$[rbp], rax
+$LN7@sn_get_sim:
+
+; 175 : if (has_f16c)
+
+ 00857 83 bd 34 02 00
+ 00 00 cmp DWORD PTR has_f16c$[rbp], 0
+ 0085e 74 12 je SHORT $LN8@sn_get_sim
+
+; 176 : avx_bits |= SIMDID_AVX_F16C;
+
+ 00860 48 8b 85 f8 02
+ 00 00 mov rax, QWORD PTR avx_bits$[rbp]
+ 00867 48 83 c8 08 or rax, 8
+ 0086b 48 89 85 f8 02
+ 00 00 mov QWORD PTR avx_bits$[rbp], rax
+$LN8@sn_get_sim:
+
+; 177 :
+; 178 : main_lvl = SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX2);
+
+ 00872 48 c7 85 98 02
+ 00 00 00 02 00
+ 00 mov QWORD PTR main_lvl$[rbp], 512 ; 00000200H
+$LN6@sn_get_sim:
+
+; 179 : }
+; 180 :
+; 181 : if (has_avx512f && xgetbv_has_avx512_state()) {
+
+ 0087d 83 bd b4 03 00
+ 00 00 cmp DWORD PTR has_avx512f$20[rbp], 0
+ 00884 0f 84 7f 02 00
+ 00 je $LN9@sn_get_sim
+ 0088a e8 00 00 00 00 call xgetbv_has_avx512_state
+ 0088f 85 c0 test eax, eax
+ 00891 0f 84 72 02 00
+ 00 je $LN9@sn_get_sim
+
+; 182 : /* Ensure base subset present */
+; 183 : if (has_avx512bw && has_avx512vl && has_avx512dq) {
+
+ 00897 83 bd f4 03 00
+ 00 00 cmp DWORD PTR has_avx512bw$22[rbp], 0
+ 0089e 74 24 je SHORT $LN10@sn_get_sim
+ 008a0 83 bd 14 04 00
+ 00 00 cmp DWORD PTR has_avx512vl$23[rbp], 0
+ 008a7 74 1b je SHORT $LN10@sn_get_sim
+ 008a9 83 bd d4 03 00
+ 00 00 cmp DWORD PTR has_avx512dq$21[rbp], 0
+ 008b0 74 12 je SHORT $LN10@sn_get_sim
+
+; 184 : avx512_bits |= SIMDID_AVX512_BASE;
+
+ 008b2 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 008b9 48 83 c8 10 or rax, 16
+ 008bd 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+$LN10@sn_get_sim:
+
+; 185 : }
+; 186 : if (has_avx512_vnni)
+
+ 008c4 83 bd 34 04 00
+ 00 00 cmp DWORD PTR has_avx512_vnni$24[rbp], 0
+ 008cb 74 13 je SHORT $LN11@sn_get_sim
+
+; 187 : avx512_bits |= SIMDID_AVX512_VNNI;
+
+ 008cd 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 008d4 48 0f ba e8 0b bts rax, 11
+ 008d9 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+$LN11@sn_get_sim:
+
+; 188 : if (has_bf16)
+
+ 008e0 83 bd f4 04 00
+ 00 00 cmp DWORD PTR has_bf16$30[rbp], 0
+ 008e7 74 13 je SHORT $LN12@sn_get_sim
+
+; 189 : avx512_bits |= SIMDID_AVX512_BF16;
+
+ 008e9 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 008f0 48 0f ba e8 0c bts rax, 12
+ 008f5 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+$LN12@sn_get_sim:
+
+; 190 : if (has_fp16)
+
+ 008fc 83 bd 14 05 00
+ 00 00 cmp DWORD PTR has_fp16$31[rbp], 0
+ 00903 74 13 je SHORT $LN13@sn_get_sim
+
+; 191 : avx512_bits |= SIMDID_AVX512_FP16;
+
+ 00905 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 0090c 48 0f ba e8 0d bts rax, 13
+ 00911 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+$LN13@sn_get_sim:
+
+; 192 : if (has_vbmi)
+
+ 00918 83 bd 54 04 00
+ 00 00 cmp DWORD PTR has_vbmi$25[rbp], 0
+ 0091f 74 13 je SHORT $LN14@sn_get_sim
+
+; 193 : avx512_bits |= SIMDID_AVX512_VBMI;
+
+ 00921 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 00928 48 0f ba e8 09 bts rax, 9
+ 0092d 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+$LN14@sn_get_sim:
+
+; 194 : if (has_vbmi2)
+
+ 00934 83 bd 74 04 00
+ 00 00 cmp DWORD PTR has_vbmi2$26[rbp], 0
+ 0093b 74 13 je SHORT $LN15@sn_get_sim
+
+; 195 : avx512_bits |= SIMDID_AVX512_VBMI2;
+
+ 0093d 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 00944 48 0f ba e8 0a bts rax, 10
+ 00949 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+$LN15@sn_get_sim:
+
+; 196 :
+; 197 : /* Execution-width classification:
+; 198 : * Intel all → NATIVE (genuine 512-bit ALU; SKX dual-port is native)
+; 199 : * AMD Zen4 → DUAL (dual-pump 256-bit, Family 0x19)
+; 200 : * AMD Zen5+ → NATIVE (native 512-bit, Family >= 0x1A)
+; 201 : * Hygon/VIA/unknown → UNKNOWN (conservative) */
+; 202 : if (is_intel)
+
+ 00950 83 bd d4 00 00
+ 00 00 cmp DWORD PTR is_intel$[rbp], 0
+ 00957 74 15 je SHORT $LN16@sn_get_sim
+
+; 203 : avx512_bits |= SIMDID_AVX512_IMPL_NATIVE;
+
+ 00959 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 00960 48 0f ba e8 07 bts rax, 7
+ 00965 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+ 0096c eb 38 jmp SHORT $LN17@sn_get_sim
+$LN16@sn_get_sim:
+
+; 204 : else if (is_amd)
+
+ 0096e 83 bd f4 00 00
+ 00 00 cmp DWORD PTR is_amd$[rbp], 0
+ 00975 74 21 je SHORT $LN18@sn_get_sim
+
+; 205 : avx512_bits |= amd_avx512_impl(family);
+
+ 00977 8b 8d 74 01 00
+ 00 mov ecx, DWORD PTR family$[rbp]
+ 0097d e8 00 00 00 00 call amd_avx512_impl
+ 00982 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR avx512_bits$[rbp]
+ 00989 48 0b c8 or rcx, rax
+ 0098c 48 8b c1 mov rax, rcx
+ 0098f 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+ 00996 eb 0e jmp SHORT $LN19@sn_get_sim
+$LN18@sn_get_sim:
+
+; 206 : else
+; 207 : avx512_bits |= SIMDID_AVX512_IMPL_UNKNOWN;
+
+ 00998 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 0099f 48 89 85 b8 02
+ 00 00 mov QWORD PTR avx512_bits$[rbp], rax
+$LN19@sn_get_sim:
+$LN17@sn_get_sim:
+
+; 208 :
+; 209 : /* main level for AVX512 */
+; 210 : main_lvl = SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX512);
+
+ 009a6 48 c7 85 98 02
+ 00 00 00 03 00
+ 00 mov QWORD PTR main_lvl$[rbp], 768 ; 00000300H
+
+; 211 :
+; 212 : /* AMX promotion if present */
+; 213 : if (has_amx_tile) {
+
+ 009b1 83 bd 94 04 00
+ 00 00 cmp DWORD PTR has_amx_tile$27[rbp], 0
+ 009b8 74 53 je SHORT $LN20@sn_get_sim
+
+; 214 : amx_bits |= SIMDID_AMX_TILE;
+
+ 009ba 48 8b 85 d8 02
+ 00 00 mov rax, QWORD PTR amx_bits$[rbp]
+ 009c1 48 83 c8 01 or rax, 1
+ 009c5 48 89 85 d8 02
+ 00 00 mov QWORD PTR amx_bits$[rbp], rax
+
+; 215 : if (has_amx_int8)
+
+ 009cc 83 bd b4 04 00
+ 00 00 cmp DWORD PTR has_amx_int8$28[rbp], 0
+ 009d3 74 12 je SHORT $LN21@sn_get_sim
+
+; 216 : amx_bits |= SIMDID_AMX_INT8;
+
+ 009d5 48 8b 85 d8 02
+ 00 00 mov rax, QWORD PTR amx_bits$[rbp]
+ 009dc 48 83 c8 02 or rax, 2
+ 009e0 48 89 85 d8 02
+ 00 00 mov QWORD PTR amx_bits$[rbp], rax
+$LN21@sn_get_sim:
+
+; 217 : if (has_amx_bf16)
+
+ 009e7 83 bd d4 04 00
+ 00 00 cmp DWORD PTR has_amx_bf16$29[rbp], 0
+ 009ee 74 12 je SHORT $LN22@sn_get_sim
+
+; 218 : amx_bits |= SIMDID_AMX_BF16;
+
+ 009f0 48 8b 85 d8 02
+ 00 00 mov rax, QWORD PTR amx_bits$[rbp]
+ 009f7 48 83 c8 04 or rax, 4
+ 009fb 48 89 85 d8 02
+ 00 00 mov QWORD PTR amx_bits$[rbp], rax
+$LN22@sn_get_sim:
+
+; 219 : main_lvl = SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AMX);
+
+ 00a02 48 c7 85 98 02
+ 00 00 00 04 00
+ 00 mov QWORD PTR main_lvl$[rbp], 1024 ; 00000400H
+$LN20@sn_get_sim:
+
+; 220 : }
+; 221 :
+; 222 : /* AVX10 detection — requires AVX10 convergence bit
+; 223 : (leaf 7 subleaf 1 EDX[19]) and leaf 0x24 */
+; 224 : if (has_avx10) {
+
+ 00a0d 83 bd 34 05 00
+ 00 00 cmp DWORD PTR has_avx10$32[rbp], 0
+ 00a14 0f 84 ef 00 00
+ 00 je $LN23@sn_get_sim
+
+; 225 : int a10_eax = 0, a10_ebx = 0, a10_ecx = 0, a10_edx = 0;
+
+ 00a1a c7 85 54 05 00
+ 00 00 00 00 00 mov DWORD PTR a10_eax$33[rbp], 0
+ 00a24 c7 85 74 05 00
+ 00 00 00 00 00 mov DWORD PTR a10_ebx$34[rbp], 0
+ 00a2e c7 85 94 05 00
+ 00 00 00 00 00 mov DWORD PTR a10_ecx$35[rbp], 0
+ 00a38 c7 85 b4 05 00
+ 00 00 00 00 00 mov DWORD PTR a10_edx$36[rbp], 0
+
+; 226 : get_cpuid(0x24, 0, &a10_eax, &a10_ebx, &a10_ecx, &a10_edx);
+
+ 00a42 48 8d 85 b4 05
+ 00 00 lea rax, QWORD PTR a10_edx$36[rbp]
+ 00a49 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00a4e 48 8d 85 94 05
+ 00 00 lea rax, QWORD PTR a10_ecx$35[rbp]
+ 00a55 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 00a5a 4c 8d 8d 74 05
+ 00 00 lea r9, QWORD PTR a10_ebx$34[rbp]
+ 00a61 4c 8d 85 54 05
+ 00 00 lea r8, QWORD PTR a10_eax$33[rbp]
+ 00a68 33 d2 xor edx, edx
+ 00a6a b9 24 00 00 00 mov ecx, 36 ; 00000024H
+ 00a6f e8 00 00 00 00 call get_cpuid
+ 00a74 90 npad 1
+
+; 227 : const int avx10_ver = a10_ebx & 0xFF;
+
+ 00a75 8b 85 74 05 00
+ 00 mov eax, DWORD PTR a10_ebx$34[rbp]
+ 00a7b 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00a80 89 85 d4 05 00
+ 00 mov DWORD PTR avx10_ver$37[rbp], eax
+
+; 228 : if (avx10_ver >= 1) {
+
+ 00a86 83 bd d4 05 00
+ 00 01 cmp DWORD PTR avx10_ver$37[rbp], 1
+ 00a8d 7c 7a jl SHORT $LN24@sn_get_sim
+
+; 229 : avx10_bits |= SIMDID_AVX10 | SIMDID_AVX10_V1;
+
+ 00a8f 48 8b 85 18 03
+ 00 00 mov rax, QWORD PTR avx10_bits$[rbp]
+ 00a96 48 83 c8 03 or rax, 3
+ 00a9a 48 89 85 18 03
+ 00 00 mov QWORD PTR avx10_bits$[rbp], rax
+
+; 230 : if (avx10_ver >= 2)
+
+ 00aa1 83 bd d4 05 00
+ 00 02 cmp DWORD PTR avx10_ver$37[rbp], 2
+ 00aa8 7c 12 jl SHORT $LN25@sn_get_sim
+
+; 231 : avx10_bits |= SIMDID_AVX10_V2;
+
+ 00aaa 48 8b 85 18 03
+ 00 00 mov rax, QWORD PTR avx10_bits$[rbp]
+ 00ab1 48 83 c8 04 or rax, 4
+ 00ab5 48 89 85 18 03
+ 00 00 mov QWORD PTR avx10_bits$[rbp], rax
+$LN25@sn_get_sim:
+
+; 232 : if (a10_ebx & (1 << 17))
+
+ 00abc 8b 85 74 05 00
+ 00 mov eax, DWORD PTR a10_ebx$34[rbp]
+ 00ac2 25 00 00 02 00 and eax, 131072 ; 00020000H
+ 00ac7 85 c0 test eax, eax
+ 00ac9 74 12 je SHORT $LN26@sn_get_sim
+
+; 233 : avx10_bits |= SIMDID_AVX10_256W;
+
+ 00acb 48 8b 85 18 03
+ 00 00 mov rax, QWORD PTR avx10_bits$[rbp]
+ 00ad2 48 83 c8 08 or rax, 8
+ 00ad6 48 89 85 18 03
+ 00 00 mov QWORD PTR avx10_bits$[rbp], rax
+$LN26@sn_get_sim:
+
+; 234 : if (a10_ebx & (1 << 18))
+
+ 00add 8b 85 74 05 00
+ 00 mov eax, DWORD PTR a10_ebx$34[rbp]
+ 00ae3 25 00 00 04 00 and eax, 262144 ; 00040000H
+ 00ae8 85 c0 test eax, eax
+ 00aea 74 12 je SHORT $LN27@sn_get_sim
+
+; 235 : avx10_bits |= SIMDID_AVX10_512W;
+
+ 00aec 48 8b 85 18 03
+ 00 00 mov rax, QWORD PTR avx10_bits$[rbp]
+ 00af3 48 83 c8 10 or rax, 16
+ 00af7 48 89 85 18 03
+ 00 00 mov QWORD PTR avx10_bits$[rbp], rax
+$LN27@sn_get_sim:
+
+; 236 : main_lvl = SIMDID_PACK_MAIN(SIMDID_MAIN_LVL_AVX10);
+
+ 00afe 48 c7 85 98 02
+ 00 00 00 05 00
+ 00 mov QWORD PTR main_lvl$[rbp], 1280 ; 00000500H
+$LN24@sn_get_sim:
+$LN23@sn_get_sim:
+$LN9@sn_get_sim:
+$LN3@sn_get_sim:
+
+; 237 : }
+; 238 : }
+; 239 : }
+; 240 : }
+; 241 :
+; 242 : /* uArchHi: hybrid core topology and SIMD-dual summary */
+; 243 : uint64_t uarch_bits = 0;
+
+ 00b09 48 c7 85 f8 05
+ 00 00 00 00 00
+ 00 mov QWORD PTR uarch_bits$[rbp], 0
+
+; 244 : if (has_hybrid) {
+
+ 00b14 83 bd 34 03 00
+ 00 00 cmp DWORD PTR has_hybrid$[rbp], 0
+ 00b1b 0f 84 a9 00 00
+ 00 je $LN28@sn_get_sim
+
+; 245 : int h_eax = 0, h_ebx = 0, h_ecx = 0, h_edx = 0;
+
+ 00b21 c7 85 14 06 00
+ 00 00 00 00 00 mov DWORD PTR h_eax$38[rbp], 0
+ 00b2b c7 85 34 06 00
+ 00 00 00 00 00 mov DWORD PTR h_ebx$39[rbp], 0
+ 00b35 c7 85 54 06 00
+ 00 00 00 00 00 mov DWORD PTR h_ecx$40[rbp], 0
+ 00b3f c7 85 74 06 00
+ 00 00 00 00 00 mov DWORD PTR h_edx$41[rbp], 0
+
+; 246 : get_cpuid(0x1A, 0, &h_eax, &h_ebx, &h_ecx, &h_edx);
+
+ 00b49 48 8d 85 74 06
+ 00 00 lea rax, QWORD PTR h_edx$41[rbp]
+ 00b50 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00b55 48 8d 85 54 06
+ 00 00 lea rax, QWORD PTR h_ecx$40[rbp]
+ 00b5c 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 00b61 4c 8d 8d 34 06
+ 00 00 lea r9, QWORD PTR h_ebx$39[rbp]
+ 00b68 4c 8d 85 14 06
+ 00 00 lea r8, QWORD PTR h_eax$38[rbp]
+ 00b6f 33 d2 xor edx, edx
+ 00b71 b9 1a 00 00 00 mov ecx, 26
+ 00b76 e8 00 00 00 00 call get_cpuid
+ 00b7b 90 npad 1
+
+; 247 : unsigned core_type = (unsigned)(h_eax >> 24) & 0xFFU;
+
+ 00b7c 8b 85 14 06 00
+ 00 mov eax, DWORD PTR h_eax$38[rbp]
+ 00b82 c1 f8 18 sar eax, 24
+ 00b85 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00b8a 89 85 94 06 00
+ 00 mov DWORD PTR core_type$42[rbp], eax
+
+; 248 : if (core_type == 0x40) /* Intel Core / P-core → 10 */
+
+ 00b90 83 bd 94 06 00
+ 00 40 cmp DWORD PTR core_type$42[rbp], 64 ; 00000040H
+ 00b97 75 14 jne SHORT $LN30@sn_get_sim
+
+; 249 : uarch_bits |= SIMDID_UARCH_HYBRID_P;
+
+ 00b99 48 8b 85 f8 05
+ 00 00 mov rax, QWORD PTR uarch_bits$[rbp]
+ 00ba0 48 83 c8 02 or rax, 2
+ 00ba4 48 89 85 f8 05
+ 00 00 mov QWORD PTR uarch_bits$[rbp], rax
+ 00bab eb 1b jmp SHORT $LN31@sn_get_sim
+$LN30@sn_get_sim:
+
+; 250 : else if (core_type == 0x20) /* Intel Atom / E-core → 01 */
+
+ 00bad 83 bd 94 06 00
+ 00 20 cmp DWORD PTR core_type$42[rbp], 32 ; 00000020H
+ 00bb4 75 12 jne SHORT $LN32@sn_get_sim
+
+; 251 : uarch_bits |= SIMDID_UARCH_HYBRID_E;
+
+ 00bb6 48 8b 85 f8 05
+ 00 00 mov rax, QWORD PTR uarch_bits$[rbp]
+ 00bbd 48 83 c8 01 or rax, 1
+ 00bc1 48 89 85 f8 05
+ 00 00 mov QWORD PTR uarch_bits$[rbp], rax
+$LN32@sn_get_sim:
+$LN31@sn_get_sim:
+
+; 252 : /* else unknown hybrid core type → topology stays 00 */
+; 253 : } else {
+
+ 00bc8 eb 12 jmp SHORT $LN29@sn_get_sim
+$LN28@sn_get_sim:
+
+; 254 : /* Confirmed non-hybrid (unified) → set both bits = 11 (numerically strongest) */
+; 255 : uarch_bits |= SIMDID_UARCH_HYBRID_P | SIMDID_UARCH_HYBRID_E;
+
+ 00bca 48 8b 85 f8 05
+ 00 00 mov rax, QWORD PTR uarch_bits$[rbp]
+ 00bd1 48 83 c8 03 or rax, 3
+ 00bd5 48 89 85 f8 05
+ 00 00 mov QWORD PTR uarch_bits$[rbp], rax
+$LN29@sn_get_sim:
+
+; 256 : }
+; 257 : if ((avx_bits & SIMDID_AVX_DUAL) ||
+
+ 00bdc 48 8b 85 f8 02
+ 00 00 mov rax, QWORD PTR avx_bits$[rbp]
+ 00be3 48 83 e0 10 and rax, 16
+ 00be7 48 85 c0 test rax, rax
+ 00bea 75 13 jne SHORT $LN34@sn_get_sim
+ 00bec 48 8b 85 b8 02
+ 00 00 mov rax, QWORD PTR avx512_bits$[rbp]
+ 00bf3 48 25 c0 00 00
+ 00 and rax, 192 ; 000000c0H
+ 00bf9 48 83 f8 40 cmp rax, 64 ; 00000040H
+ 00bfd 75 12 jne SHORT $LN33@sn_get_sim
+$LN34@sn_get_sim:
+
+; 258 : ((avx512_bits & SIMDID_AVX512_IMPL_MASK) == SIMDID_AVX512_IMPL_DUAL))
+; 259 : uarch_bits |= SIMDID_UARCH_SIMD_DUAL;
+
+ 00bff 48 8b 85 f8 05
+ 00 00 mov rax, QWORD PTR uarch_bits$[rbp]
+ 00c06 48 83 c8 04 or rax, 4
+ 00c0a 48 89 85 f8 05
+ 00 00 mov QWORD PTR uarch_bits$[rbp], rax
+$LN33@sn_get_sim:
+
+; 260 :
+; 261 : _simdid.mask = root | manu | main_lvl | SIMDID_PACK_AVX512(avx512_bits) |
+
+ 00c11 48 8b 85 78 02
+ 00 00 mov rax, QWORD PTR manu$[rbp]
+ 00c18 48 8b 8d 58 02
+ 00 00 mov rcx, QWORD PTR root$[rbp]
+ 00c1f 48 0b c8 or rcx, rax
+ 00c22 48 8b c1 mov rax, rcx
+ 00c25 48 0b 85 98 02
+ 00 00 or rax, QWORD PTR main_lvl$[rbp]
+ 00c2c 48 8b 8d b8 02
+ 00 00 mov rcx, QWORD PTR avx512_bits$[rbp]
+ 00c33 48 81 e1 ff ff
+ 00 00 and rcx, 65535 ; 0000ffffH
+ 00c3a 48 c1 e1 10 shl rcx, 16
+ 00c3e 48 0b c1 or rax, rcx
+ 00c41 48 8b 8d d8 02
+ 00 00 mov rcx, QWORD PTR amx_bits$[rbp]
+ 00c48 48 81 e1 ff 00
+ 00 00 and rcx, 255 ; 000000ffH
+ 00c4f 48 c1 e1 20 shl rcx, 32 ; 00000020H
+ 00c53 48 0b c1 or rax, rcx
+ 00c56 48 8b 8d f8 02
+ 00 00 mov rcx, QWORD PTR avx_bits$[rbp]
+ 00c5d 48 81 e1 ff 00
+ 00 00 and rcx, 255 ; 000000ffH
+ 00c64 48 c1 e1 28 shl rcx, 40 ; 00000028H
+ 00c68 48 0b c1 or rax, rcx
+ 00c6b 48 8b 8d 18 03
+ 00 00 mov rcx, QWORD PTR avx10_bits$[rbp]
+ 00c72 48 81 e1 ff 00
+ 00 00 and rcx, 255 ; 000000ffH
+ 00c79 48 c1 e1 30 shl rcx, 48 ; 00000030H
+ 00c7d 48 0b c1 or rax, rcx
+ 00c80 48 8b 8d f8 05
+ 00 00 mov rcx, QWORD PTR uarch_bits$[rbp]
+ 00c87 48 81 e1 ff 00
+ 00 00 and rcx, 255 ; 000000ffH
+ 00c8e 48 c1 e1 38 shl rcx, 56 ; 00000038H
+ 00c92 48 0b c1 or rax, rcx
+ 00c95 48 89 45 08 mov QWORD PTR _simdid$[rbp], rax
+
+; 262 : SIMDID_PACK_AMX(amx_bits) | SIMDID_PACK_AVX(avx_bits) |
+; 263 : SIMDID_PACK_AVX10(avx10_bits) | SIMDID_PACK_UARCH(uarch_bits);
+; 264 : return _simdid;
+
+ 00c99 48 8b 45 08 mov rax, QWORD PTR _simdid$[rbp]
+$LN35@sn_get_sim:
+
+; 265 : }
+
+ 00c9d 48 8b f8 mov rdi, rax
+ 00ca0 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00ca4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:sn_get_simd_level_local$rtcFrameData
+ 00cab e8 00 00 00 00 call _RTC_CheckStackVars
+ 00cb0 48 8b c7 mov rax, rdi
+ 00cb3 48 8b 8d d8 09
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00cba 48 33 cd xor rcx, rbp
+ 00cbd e8 00 00 00 00 call __security_check_cookie
+ 00cc2 48 8d a5 e8 09
+ 00 00 lea rsp, QWORD PTR [rbp+2536]
+ 00cc9 5f pop rdi
+ 00cca 5d pop rbp
+ 00ccb c3 ret 0
+sn_get_simd_level_local ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid.x86.c
+; COMDAT sn_get_simd_level_global
+_TEXT SEGMENT
+sn_get_simd_level_global PROC ; COMDAT
+
+; 268 : {
+
+$LN4:
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0000f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__3EBA305F_simdid@x86@c
+ 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001b 90 npad 1
+
+; 269 : if (global_simdid.mask) {
+
+ 0001c 48 83 3d 00 00
+ 00 00 00 cmp QWORD PTR global_simdid, 0
+ 00024 74 09 je SHORT $LN2@sn_get_sim
+
+; 270 : return global_simdid;
+
+ 00026 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR global_simdid
+ 0002d eb 13 jmp SHORT $LN1@sn_get_sim
+$LN2@sn_get_sim:
+
+; 271 : }
+; 272 : global_simdid = sn_get_simd_level_local();
+
+ 0002f e8 00 00 00 00 call sn_get_simd_level_local
+ 00034 48 89 05 00 00
+ 00 00 mov QWORD PTR global_simdid, rax
+
+; 273 : return global_simdid;
+
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR global_simdid
+$LN1@sn_get_sim:
+
+; 274 : }
+
+ 00042 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00049 5f pop rdi
+ 0004a 5d pop rbp
+ 0004b c3 ret 0
+sn_get_simd_level_global ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/simdid.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/simdid.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..61214b9e
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/simdid.x86.nativecodeanalysis.sarif
@@ -0,0 +1,131 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/simdid.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "d9174088608cc4c8eb2d0f790c5283b2045576d75b8c11769f241c4fa59392ae"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrincontext.x86.h"
+ },
+ "hashes": {
+ "sha-256": "bbc00ee7320b30ca1234dc7908e4695ff6d5bb2ba3224e4ffaed345010ba8f48"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/simdid.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/simdid.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/simdid.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.cod b/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.cod
new file mode 100644
index 00000000..b2122638
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.cod
@@ -0,0 +1,1259 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__E2EC0CAF_sn_matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__CE29950A_sn_intrincontext@x86@h DB 01H
+__36E6045D_simdid_compare@x86@c DB 01H
+msvcjmc ENDS
+CONST SEGMENT
+impl_strength_table DD 01H
+ DD 00H
+ DD 02H
+ DD 01H
+CONST ENDS
+PUBLIC sn_get_unite_simd
+PUBLIC sn_compare_simd
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_CheckStackVars:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$sn_get_unite_simd DD imagerel $LN9
+ DD imagerel $LN9+899
+ DD imagerel $unwind$sn_get_unite_simd
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$sn_compare_simd DD imagerel $LN34
+ DD imagerel $LN34+1037
+ DD imagerel $unwind$sn_compare_simd
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$popcount16 DD imagerel popcount16
+ DD imagerel popcount16+100
+ DD imagerel $unwind$popcount16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$impl_strength DD imagerel impl_strength
+ DD imagerel impl_strength+71
+ DD imagerel $unwind$impl_strength
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$impl_strength DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$popcount16 DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$sn_compare_simd DD 025051801H
+ DD 01132318H
+ DD 0700c0085H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$sn_get_unite_simd DD 025053101H
+ DD 01132318H
+ DD 0700c005dH
+ DD 0500bH
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+sn_get_unite_simd$rtcName$0 DB 06fH
+ DB 075H
+ DB 074H
+ DB 00H
+ ORG $+12
+sn_get_unite_simd$rtcVarDesc DD 028H
+ DD 08H
+ DQ FLAT:sn_get_unite_simd$rtcName$0
+ ORG $+48
+sn_get_unite_simd$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:sn_get_unite_simd$rtcVarDesc
+CONST ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid_compare.x86.c
+; COMDAT impl_strength
+_TEXT SEGMENT
+impl$ = 4
+avx512$ = 256
+impl_strength PROC ; COMDAT
+
+; 48 : {
+
+ 00000 66 89 4c 24 08 mov WORD PTR [rsp+8], cx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__36E6045D_simdid_compare@x86@c
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 49 : unsigned impl = (avx512 >> SIMDID_AVX512_IMPL_SHIFT) & 0x3u;
+
+ 00020 0f b7 85 00 01
+ 00 00 movzx eax, WORD PTR avx512$[rbp]
+ 00027 c1 f8 06 sar eax, 6
+ 0002a 83 e0 03 and eax, 3
+ 0002d 89 45 04 mov DWORD PTR impl$[rbp], eax
+
+; 50 : return impl_strength_table[impl];
+
+ 00030 8b 45 04 mov eax, DWORD PTR impl$[rbp]
+ 00033 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:impl_strength_table
+ 0003a 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+
+; 51 : }
+
+ 0003d 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00044 5f pop rdi
+ 00045 5d pop rbp
+ 00046 c3 ret 0
+impl_strength ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid_compare.x86.c
+; COMDAT popcount16
+_TEXT SEGMENT
+c$ = 4
+v$ = 256
+popcount16 PROC ; COMDAT
+
+; 33 : {
+
+ 00000 66 89 4c 24 08 mov WORD PTR [rsp+8], cx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__36E6045D_simdid_compare@x86@c
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 34 : int c = 0;
+
+ 00020 c7 45 04 00 00
+ 00 00 mov DWORD PTR c$[rbp], 0
+$LN2@popcount16:
+
+; 35 : while (v) {
+
+ 00027 0f b7 85 00 01
+ 00 00 movzx eax, WORD PTR v$[rbp]
+ 0002e 85 c0 test eax, eax
+ 00030 74 25 je SHORT $LN3@popcount16
+
+; 36 : v &= v - 1;
+
+ 00032 0f b7 85 00 01
+ 00 00 movzx eax, WORD PTR v$[rbp]
+ 00039 ff c8 dec eax
+ 0003b 0f b7 8d 00 01
+ 00 00 movzx ecx, WORD PTR v$[rbp]
+ 00042 23 c8 and ecx, eax
+ 00044 8b c1 mov eax, ecx
+ 00046 66 89 85 00 01
+ 00 00 mov WORD PTR v$[rbp], ax
+
+; 37 : c++;
+
+ 0004d 8b 45 04 mov eax, DWORD PTR c$[rbp]
+ 00050 ff c0 inc eax
+ 00052 89 45 04 mov DWORD PTR c$[rbp], eax
+
+; 38 : }
+
+ 00055 eb d0 jmp SHORT $LN2@popcount16
+$LN3@popcount16:
+
+; 39 : return c;
+
+ 00057 8b 45 04 mov eax, DWORD PTR c$[rbp]
+
+; 40 : }
+
+ 0005a 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00061 5f pop rdi
+ 00062 5d pop rbp
+ 00063 c3 ret 0
+popcount16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid_compare.x86.c
+; COMDAT sn_compare_simd
+_TEXT SEGMENT
+lm$ = 4
+rm$ = 36
+la$1 = 68
+ra$2 = 100
+l512$3 = 132
+r512$4 = 164
+lb$5 = 196
+rb$6 = 228
+drop$7 = 260
+ext_mask$8 = 292
+lp$9 = 324
+rp$10 = 356
+ls$11 = 388
+rs$12 = 420
+lu$ = 452
+ru$ = 484
+lt$ = 516
+rt$ = 548
+ld$ = 580
+rd$ = 612
+tv191 = 1012
+tv72 = 1012
+tv82 = 1012
+tv137 = 1012
+tv141 = 1012
+tv144 = 1012
+tv164 = 1012
+tv171 = 1012
+tv182 = 1012
+tv185 = 1012
+tv188 = 1012
+left$ = 1056
+right$ = 1064
+sn_compare_simd PROC ; COMDAT
+
+; 157 : {
+
+$LN34:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 28 04
+ 00 00 sub rsp, 1064 ; 00000428H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__36E6045D_simdid_compare@x86@c
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 158 : /* 1. MainLevel */
+; 159 : unsigned lm = FIELD_MAIN(left);
+
+ 00025 b8 01 00 00 00 mov eax, 1
+ 0002a 48 6b c0 01 imul rax, rax, 1
+ 0002e 0f b6 84 05 20
+ 04 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 00036 89 45 04 mov DWORD PTR lm$[rbp], eax
+
+; 160 : unsigned rm = FIELD_MAIN(right);
+
+ 00039 b8 01 00 00 00 mov eax, 1
+ 0003e 48 6b c0 01 imul rax, rax, 1
+ 00042 0f b6 84 05 28
+ 04 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 0004a 89 45 24 mov DWORD PTR rm$[rbp], eax
+
+; 161 : if (lm != rm)
+
+ 0004d 8b 45 24 mov eax, DWORD PTR rm$[rbp]
+ 00050 39 45 04 cmp DWORD PTR lm$[rbp], eax
+ 00053 74 29 je SHORT $LN2@sn_compare
+
+; 162 : return lm > rm ? 1 : -1;
+
+ 00055 8b 45 24 mov eax, DWORD PTR rm$[rbp]
+ 00058 39 45 04 cmp DWORD PTR lm$[rbp], eax
+ 0005b 76 0c jbe SHORT $LN12@sn_compare
+ 0005d c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv72[rbp], 1
+ 00067 eb 0a jmp SHORT $LN13@sn_compare
+$LN12@sn_compare:
+ 00069 c7 85 f4 03 00
+ 00 ff ff ff ff mov DWORD PTR tv72[rbp], -1
+$LN13@sn_compare:
+ 00073 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv72[rbp]
+ 00079 e9 85 03 00 00 jmp $LN1@sn_compare
+$LN2@sn_compare:
+
+; 163 :
+; 164 : /* 2. AVX10 width (only when MainLevel == AVX10) */
+; 165 : if (lm >= SIMDID_MAIN_LVL_AVX10) {
+
+ 0007e 83 7d 04 05 cmp DWORD PTR lm$[rbp], 5
+ 00082 72 59 jb SHORT $LN3@sn_compare
+
+; 166 : unsigned la = FIELD_AVX10(left);
+
+ 00084 b8 01 00 00 00 mov eax, 1
+ 00089 48 6b c0 06 imul rax, rax, 6
+ 0008d 0f b6 84 05 20
+ 04 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 00095 89 45 44 mov DWORD PTR la$1[rbp], eax
+
+; 167 : unsigned ra = FIELD_AVX10(right);
+
+ 00098 b8 01 00 00 00 mov eax, 1
+ 0009d 48 6b c0 06 imul rax, rax, 6
+ 000a1 0f b6 84 05 28
+ 04 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 000a9 89 45 64 mov DWORD PTR ra$2[rbp], eax
+
+; 168 : if (la != ra)
+
+ 000ac 8b 45 64 mov eax, DWORD PTR ra$2[rbp]
+ 000af 39 45 44 cmp DWORD PTR la$1[rbp], eax
+ 000b2 74 29 je SHORT $LN4@sn_compare
+
+; 169 : return la > ra ? 1 : -1;
+
+ 000b4 8b 45 64 mov eax, DWORD PTR ra$2[rbp]
+ 000b7 39 45 44 cmp DWORD PTR la$1[rbp], eax
+ 000ba 76 0c jbe SHORT $LN14@sn_compare
+ 000bc c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv82[rbp], 1
+ 000c6 eb 0a jmp SHORT $LN15@sn_compare
+$LN14@sn_compare:
+ 000c8 c7 85 f4 03 00
+ 00 ff ff ff ff mov DWORD PTR tv82[rbp], -1
+$LN15@sn_compare:
+ 000d2 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv82[rbp]
+ 000d8 e9 26 03 00 00 jmp $LN1@sn_compare
+$LN4@sn_compare:
+$LN3@sn_compare:
+
+; 170 : }
+; 171 :
+; 172 : /* 3. AVX512 BASE (only when MainLevel >= AVX512) */
+; 173 : if (lm >= SIMDID_MAIN_LVL_AVX512) {
+
+ 000dd 83 7d 04 03 cmp DWORD PTR lm$[rbp], 3
+ 000e1 0f 82 fe 01 00
+ 00 jb $LN5@sn_compare
+
+; 174 : uint16_t l512 = FIELD_AVX512(left);
+
+ 000e7 b8 01 00 00 00 mov eax, 1
+ 000ec 48 6b c0 02 imul rax, rax, 2
+ 000f0 0f b6 84 05 20
+ 04 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 000f8 b9 01 00 00 00 mov ecx, 1
+ 000fd 48 6b c9 03 imul rcx, rcx, 3
+ 00101 0f b6 8c 0d 20
+ 04 00 00 movzx ecx, BYTE PTR left$[rbp+rcx]
+ 00109 c1 e1 08 shl ecx, 8
+ 0010c 0b c1 or eax, ecx
+ 0010e 66 89 85 84 00
+ 00 00 mov WORD PTR l512$3[rbp], ax
+
+; 175 : uint16_t r512 = FIELD_AVX512(right);
+
+ 00115 b8 01 00 00 00 mov eax, 1
+ 0011a 48 6b c0 02 imul rax, rax, 2
+ 0011e 0f b6 84 05 28
+ 04 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 00126 b9 01 00 00 00 mov ecx, 1
+ 0012b 48 6b c9 03 imul rcx, rcx, 3
+ 0012f 0f b6 8c 0d 28
+ 04 00 00 movzx ecx, BYTE PTR right$[rbp+rcx]
+ 00137 c1 e1 08 shl ecx, 8
+ 0013a 0b c1 or eax, ecx
+ 0013c 66 89 85 a4 00
+ 00 00 mov WORD PTR r512$4[rbp], ax
+
+; 176 :
+; 177 : int lb = (l512 & SIMDID_AVX512_BASE) != 0;
+
+ 00143 0f b7 85 84 00
+ 00 00 movzx eax, WORD PTR l512$3[rbp]
+ 0014a 83 e0 10 and eax, 16
+ 0014d 85 c0 test eax, eax
+ 0014f 74 0c je SHORT $LN16@sn_compare
+ 00151 c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv137[rbp], 1
+ 0015b eb 0a jmp SHORT $LN17@sn_compare
+$LN16@sn_compare:
+ 0015d c7 85 f4 03 00
+ 00 00 00 00 00 mov DWORD PTR tv137[rbp], 0
+$LN17@sn_compare:
+ 00167 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv137[rbp]
+ 0016d 89 85 c4 00 00
+ 00 mov DWORD PTR lb$5[rbp], eax
+
+; 178 : int rb = (r512 & SIMDID_AVX512_BASE) != 0;
+
+ 00173 0f b7 85 a4 00
+ 00 00 movzx eax, WORD PTR r512$4[rbp]
+ 0017a 83 e0 10 and eax, 16
+ 0017d 85 c0 test eax, eax
+ 0017f 74 0c je SHORT $LN18@sn_compare
+ 00181 c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv141[rbp], 1
+ 0018b eb 0a jmp SHORT $LN19@sn_compare
+$LN18@sn_compare:
+ 0018d c7 85 f4 03 00
+ 00 00 00 00 00 mov DWORD PTR tv141[rbp], 0
+$LN19@sn_compare:
+ 00197 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv141[rbp]
+ 0019d 89 85 e4 00 00
+ 00 mov DWORD PTR rb$6[rbp], eax
+
+; 179 : if (lb != rb)
+
+ 001a3 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR rb$6[rbp]
+ 001a9 39 85 c4 00 00
+ 00 cmp DWORD PTR lb$5[rbp], eax
+ 001af 74 2f je SHORT $LN6@sn_compare
+
+; 180 : return lb > rb ? 1 : -1;
+
+ 001b1 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR rb$6[rbp]
+ 001b7 39 85 c4 00 00
+ 00 cmp DWORD PTR lb$5[rbp], eax
+ 001bd 7e 0c jle SHORT $LN20@sn_compare
+ 001bf c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv144[rbp], 1
+ 001c9 eb 0a jmp SHORT $LN21@sn_compare
+$LN20@sn_compare:
+ 001cb c7 85 f4 03 00
+ 00 ff ff ff ff mov DWORD PTR tv144[rbp], -1
+$LN21@sn_compare:
+ 001d5 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv144[rbp]
+ 001db e9 23 02 00 00 jmp $LN1@sn_compare
+$LN6@sn_compare:
+
+; 181 :
+; 182 : // 4. Extension popcount (mask out BASE + IMPL + reserved low nibble)
+; 183 : int drop = ~(SIMDID_AVX512_BASE | SIMDID_AVX512_IMPL_MASK | 0x000Fu);
+
+ 001e0 c7 85 04 01 00
+ 00 20 ff ff ff mov DWORD PTR drop$7[rbp], -224 ; ffffffffffffff20H
+
+; 184 : uint16_t ext_mask = drop & (l512 | r512); /* only consider bits set in either */
+
+ 001ea 0f b7 85 84 00
+ 00 00 movzx eax, WORD PTR l512$3[rbp]
+ 001f1 0f b7 8d a4 00
+ 00 00 movzx ecx, WORD PTR r512$4[rbp]
+ 001f8 0b c1 or eax, ecx
+ 001fa 8b 8d 04 01 00
+ 00 mov ecx, DWORD PTR drop$7[rbp]
+ 00200 23 c8 and ecx, eax
+ 00202 8b c1 mov eax, ecx
+ 00204 66 89 85 24 01
+ 00 00 mov WORD PTR ext_mask$8[rbp], ax
+
+; 185 : int lp = popcount16(l512 & ext_mask);
+
+ 0020b 0f b7 85 84 00
+ 00 00 movzx eax, WORD PTR l512$3[rbp]
+ 00212 0f b7 8d 24 01
+ 00 00 movzx ecx, WORD PTR ext_mask$8[rbp]
+ 00219 23 c1 and eax, ecx
+ 0021b 0f b7 c8 movzx ecx, ax
+ 0021e e8 00 00 00 00 call popcount16
+ 00223 89 85 44 01 00
+ 00 mov DWORD PTR lp$9[rbp], eax
+
+; 186 : int rp = popcount16(r512 & ext_mask);
+
+ 00229 0f b7 85 a4 00
+ 00 00 movzx eax, WORD PTR r512$4[rbp]
+ 00230 0f b7 8d 24 01
+ 00 00 movzx ecx, WORD PTR ext_mask$8[rbp]
+ 00237 23 c1 and eax, ecx
+ 00239 0f b7 c8 movzx ecx, ax
+ 0023c e8 00 00 00 00 call popcount16
+ 00241 89 85 64 01 00
+ 00 mov DWORD PTR rp$10[rbp], eax
+
+; 187 : if (lp != rp)
+
+ 00247 8b 85 64 01 00
+ 00 mov eax, DWORD PTR rp$10[rbp]
+ 0024d 39 85 44 01 00
+ 00 cmp DWORD PTR lp$9[rbp], eax
+ 00253 74 2f je SHORT $LN7@sn_compare
+
+; 188 : return lp > rp ? 1 : -1;
+
+ 00255 8b 85 64 01 00
+ 00 mov eax, DWORD PTR rp$10[rbp]
+ 0025b 39 85 44 01 00
+ 00 cmp DWORD PTR lp$9[rbp], eax
+ 00261 7e 0c jle SHORT $LN22@sn_compare
+ 00263 c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv164[rbp], 1
+ 0026d eb 0a jmp SHORT $LN23@sn_compare
+$LN22@sn_compare:
+ 0026f c7 85 f4 03 00
+ 00 ff ff ff ff mov DWORD PTR tv164[rbp], -1
+$LN23@sn_compare:
+ 00279 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv164[rbp]
+ 0027f e9 7f 01 00 00 jmp $LN1@sn_compare
+$LN7@sn_compare:
+
+; 189 :
+; 190 : /* 5. IMPL strength */
+; 191 : int ls = impl_strength(l512);
+
+ 00284 0f b7 8d 84 00
+ 00 00 movzx ecx, WORD PTR l512$3[rbp]
+ 0028b e8 00 00 00 00 call impl_strength
+ 00290 89 85 84 01 00
+ 00 mov DWORD PTR ls$11[rbp], eax
+
+; 192 : int rs = impl_strength(r512);
+
+ 00296 0f b7 8d a4 00
+ 00 00 movzx ecx, WORD PTR r512$4[rbp]
+ 0029d e8 00 00 00 00 call impl_strength
+ 002a2 89 85 a4 01 00
+ 00 mov DWORD PTR rs$12[rbp], eax
+
+; 193 : if (ls != rs)
+
+ 002a8 8b 85 a4 01 00
+ 00 mov eax, DWORD PTR rs$12[rbp]
+ 002ae 39 85 84 01 00
+ 00 cmp DWORD PTR ls$11[rbp], eax
+ 002b4 74 2f je SHORT $LN8@sn_compare
+
+; 194 : return ls > rs ? 1 : -1;
+
+ 002b6 8b 85 a4 01 00
+ 00 mov eax, DWORD PTR rs$12[rbp]
+ 002bc 39 85 84 01 00
+ 00 cmp DWORD PTR ls$11[rbp], eax
+ 002c2 7e 0c jle SHORT $LN24@sn_compare
+ 002c4 c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv171[rbp], 1
+ 002ce eb 0a jmp SHORT $LN25@sn_compare
+$LN24@sn_compare:
+ 002d0 c7 85 f4 03 00
+ 00 ff ff ff ff mov DWORD PTR tv171[rbp], -1
+$LN25@sn_compare:
+ 002da 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv171[rbp]
+ 002e0 e9 1e 01 00 00 jmp $LN1@sn_compare
+$LN8@sn_compare:
+$LN5@sn_compare:
+
+; 195 : }
+; 196 :
+; 197 : /* 6. uArchHi topology bits [1..0]: unified(3) > P(2) > E(1) > unknown(0) */
+; 198 : unsigned lu = FIELD_UARCH(left);
+
+ 002e5 b8 01 00 00 00 mov eax, 1
+ 002ea 48 6b c0 07 imul rax, rax, 7
+ 002ee 0f b6 84 05 20
+ 04 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 002f6 89 85 c4 01 00
+ 00 mov DWORD PTR lu$[rbp], eax
+
+; 199 : unsigned ru = FIELD_UARCH(right);
+
+ 002fc b8 01 00 00 00 mov eax, 1
+ 00301 48 6b c0 07 imul rax, rax, 7
+ 00305 0f b6 84 05 28
+ 04 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 0030d 89 85 e4 01 00
+ 00 mov DWORD PTR ru$[rbp], eax
+
+; 200 : unsigned lt = lu & 0x3u;
+
+ 00313 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR lu$[rbp]
+ 00319 83 e0 03 and eax, 3
+ 0031c 89 85 04 02 00
+ 00 mov DWORD PTR lt$[rbp], eax
+
+; 201 : unsigned rt = ru & 0x3u;
+
+ 00322 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR ru$[rbp]
+ 00328 83 e0 03 and eax, 3
+ 0032b 89 85 24 02 00
+ 00 mov DWORD PTR rt$[rbp], eax
+
+; 202 : if (lt != rt)
+
+ 00331 8b 85 24 02 00
+ 00 mov eax, DWORD PTR rt$[rbp]
+ 00337 39 85 04 02 00
+ 00 cmp DWORD PTR lt$[rbp], eax
+ 0033d 74 2f je SHORT $LN9@sn_compare
+
+; 203 : return lt > rt ? 1 : -1;
+
+ 0033f 8b 85 24 02 00
+ 00 mov eax, DWORD PTR rt$[rbp]
+ 00345 39 85 04 02 00
+ 00 cmp DWORD PTR lt$[rbp], eax
+ 0034b 76 0c jbe SHORT $LN26@sn_compare
+ 0034d c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv182[rbp], 1
+ 00357 eb 0a jmp SHORT $LN27@sn_compare
+$LN26@sn_compare:
+ 00359 c7 85 f4 03 00
+ 00 ff ff ff ff mov DWORD PTR tv182[rbp], -1
+$LN27@sn_compare:
+ 00363 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv182[rbp]
+ 00369 e9 95 00 00 00 jmp $LN1@sn_compare
+$LN9@sn_compare:
+
+; 204 :
+; 205 : /* 7. uArchHi SIMD_DUAL: non-dual (SIMD_DUAL=0) > dual (SIMD_DUAL=1) */
+; 206 : int ld = (lu & SIMDID_UARCH_SIMD_DUAL) != 0;
+
+ 0036e 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR lu$[rbp]
+ 00374 83 e0 04 and eax, 4
+ 00377 85 c0 test eax, eax
+ 00379 74 0c je SHORT $LN28@sn_compare
+ 0037b c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv185[rbp], 1
+ 00385 eb 0a jmp SHORT $LN29@sn_compare
+$LN28@sn_compare:
+ 00387 c7 85 f4 03 00
+ 00 00 00 00 00 mov DWORD PTR tv185[rbp], 0
+$LN29@sn_compare:
+ 00391 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv185[rbp]
+ 00397 89 85 44 02 00
+ 00 mov DWORD PTR ld$[rbp], eax
+
+; 207 : int rd = (ru & SIMDID_UARCH_SIMD_DUAL) != 0;
+
+ 0039d 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR ru$[rbp]
+ 003a3 83 e0 04 and eax, 4
+ 003a6 85 c0 test eax, eax
+ 003a8 74 0c je SHORT $LN30@sn_compare
+ 003aa c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv188[rbp], 1
+ 003b4 eb 0a jmp SHORT $LN31@sn_compare
+$LN30@sn_compare:
+ 003b6 c7 85 f4 03 00
+ 00 00 00 00 00 mov DWORD PTR tv188[rbp], 0
+$LN31@sn_compare:
+ 003c0 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv188[rbp]
+ 003c6 89 85 64 02 00
+ 00 mov DWORD PTR rd$[rbp], eax
+
+; 208 : if (ld != rd)
+
+ 003cc 8b 85 64 02 00
+ 00 mov eax, DWORD PTR rd$[rbp]
+ 003d2 39 85 44 02 00
+ 00 cmp DWORD PTR ld$[rbp], eax
+ 003d8 74 27 je SHORT $LN10@sn_compare
+
+; 209 : return ld ? -1 : 1; /* non-dual is stronger */
+
+ 003da 83 bd 44 02 00
+ 00 00 cmp DWORD PTR ld$[rbp], 0
+ 003e1 74 0c je SHORT $LN32@sn_compare
+ 003e3 c7 85 f4 03 00
+ 00 ff ff ff ff mov DWORD PTR tv191[rbp], -1
+ 003ed eb 0a jmp SHORT $LN33@sn_compare
+$LN32@sn_compare:
+ 003ef c7 85 f4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv191[rbp], 1
+$LN33@sn_compare:
+ 003f9 8b 85 f4 03 00
+ 00 mov eax, DWORD PTR tv191[rbp]
+ 003ff eb 02 jmp SHORT $LN1@sn_compare
+$LN10@sn_compare:
+
+; 210 :
+; 211 : return 0;
+
+ 00401 33 c0 xor eax, eax
+$LN1@sn_compare:
+
+; 212 : }
+
+ 00403 48 8d a5 08 04
+ 00 00 lea rsp, QWORD PTR [rbp+1032]
+ 0040a 5f pop rdi
+ 0040b 5d pop rbp
+ 0040c c3 ret 0
+sn_compare_simd ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\simdid_compare.x86.c
+; COMDAT sn_get_unite_simd
+_TEXT SEGMENT
+out$ = 8
+lb0$ = 36
+rb0$ = 68
+lm$ = 100
+rm$ = 132
+l512$ = 164
+r512$ = 196
+merged$ = 228
+ls$ = 260
+rs$ = 292
+s$ = 324
+weak_impl$ = 356
+lu$ = 388
+ru$ = 420
+topo$ = 452
+dual$ = 484
+tv74 = 692
+tv87 = 692
+tv150 = 692
+left$ = 736
+right$ = 744
+sn_get_unite_simd PROC ; COMDAT
+
+; 67 : {
+
+$LN9:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 02
+ 00 00 sub rsp, 744 ; 000002e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001d b9 82 00 00 00 mov ecx, 130 ; 00000082H
+ 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00027 f3 ab rep stosd
+ 00029 48 8b 8c 24 08
+ 03 00 00 mov rcx, QWORD PTR [rsp+776]
+ 00031 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__36E6045D_simdid_compare@x86@c
+ 00038 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0003d 90 npad 1
+
+; 68 : SIMDID out;
+; 69 : out.mask = 0;
+
+ 0003e 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR out$[rbp], 0
+
+; 70 :
+; 71 : /* Root + Manufacture (byte 0): prefer left (same arch assumed) */
+; 72 : unsigned char lb0 = (unsigned char)left.make_byte[0];
+
+ 00046 b8 01 00 00 00 mov eax, 1
+ 0004b 48 6b c0 00 imul rax, rax, 0
+ 0004f 0f b6 84 05 e0
+ 02 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 00057 88 45 24 mov BYTE PTR lb0$[rbp], al
+
+; 73 : unsigned char rb0 = (unsigned char)right.make_byte[0];
+
+ 0005a b8 01 00 00 00 mov eax, 1
+ 0005f 48 6b c0 00 imul rax, rax, 0
+ 00063 0f b6 84 05 e8
+ 02 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 0006b 88 45 44 mov BYTE PTR rb0$[rbp], al
+
+; 74 : out.make_byte[0] = (char)(lb0 ? lb0 : rb0);
+
+ 0006e 0f b6 45 24 movzx eax, BYTE PTR lb0$[rbp]
+ 00072 85 c0 test eax, eax
+ 00074 74 0c je SHORT $LN3@sn_get_uni
+ 00076 0f b6 45 24 movzx eax, BYTE PTR lb0$[rbp]
+ 0007a 89 85 b4 02 00
+ 00 mov DWORD PTR tv74[rbp], eax
+ 00080 eb 0a jmp SHORT $LN4@sn_get_uni
+$LN3@sn_get_uni:
+ 00082 0f b6 45 44 movzx eax, BYTE PTR rb0$[rbp]
+ 00086 89 85 b4 02 00
+ 00 mov DWORD PTR tv74[rbp], eax
+$LN4@sn_get_uni:
+ 0008c b8 01 00 00 00 mov eax, 1
+ 00091 48 6b c0 00 imul rax, rax, 0
+ 00095 0f b6 8d b4 02
+ 00 00 movzx ecx, BYTE PTR tv74[rbp]
+ 0009c 88 4c 05 08 mov BYTE PTR out$[rbp+rax], cl
+
+; 75 :
+; 76 : /* MainLevel (byte 1): min */
+; 77 : unsigned char lm = FIELD_MAIN(left);
+
+ 000a0 b8 01 00 00 00 mov eax, 1
+ 000a5 48 6b c0 01 imul rax, rax, 1
+ 000a9 0f b6 84 05 e0
+ 02 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 000b1 88 45 64 mov BYTE PTR lm$[rbp], al
+
+; 78 : unsigned char rm = FIELD_MAIN(right);
+
+ 000b4 b8 01 00 00 00 mov eax, 1
+ 000b9 48 6b c0 01 imul rax, rax, 1
+ 000bd 0f b6 84 05 e8
+ 02 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 000c5 88 85 84 00 00
+ 00 mov BYTE PTR rm$[rbp], al
+
+; 79 : out.make_byte[1] = (char)(lm < rm ? lm : rm);
+
+ 000cb 0f b6 45 64 movzx eax, BYTE PTR lm$[rbp]
+ 000cf 0f b6 8d 84 00
+ 00 00 movzx ecx, BYTE PTR rm$[rbp]
+ 000d6 3b c1 cmp eax, ecx
+ 000d8 7d 0c jge SHORT $LN5@sn_get_uni
+ 000da 0f b6 45 64 movzx eax, BYTE PTR lm$[rbp]
+ 000de 89 85 b4 02 00
+ 00 mov DWORD PTR tv87[rbp], eax
+ 000e4 eb 0d jmp SHORT $LN6@sn_get_uni
+$LN5@sn_get_uni:
+ 000e6 0f b6 85 84 00
+ 00 00 movzx eax, BYTE PTR rm$[rbp]
+ 000ed 89 85 b4 02 00
+ 00 mov DWORD PTR tv87[rbp], eax
+$LN6@sn_get_uni:
+ 000f3 b8 01 00 00 00 mov eax, 1
+ 000f8 48 6b c0 01 imul rax, rax, 1
+ 000fc 0f b6 8d b4 02
+ 00 00 movzx ecx, BYTE PTR tv87[rbp]
+ 00103 88 4c 05 08 mov BYTE PTR out$[rbp+rax], cl
+
+; 80 :
+; 81 : /* AVX512 features (bytes 2-3): AND all bits, then fix IMPL to weaker */
+; 82 : uint16_t l512 = FIELD_AVX512(left);
+
+ 00107 b8 01 00 00 00 mov eax, 1
+ 0010c 48 6b c0 02 imul rax, rax, 2
+ 00110 0f b6 84 05 e0
+ 02 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 00118 b9 01 00 00 00 mov ecx, 1
+ 0011d 48 6b c9 03 imul rcx, rcx, 3
+ 00121 0f b6 8c 0d e0
+ 02 00 00 movzx ecx, BYTE PTR left$[rbp+rcx]
+ 00129 c1 e1 08 shl ecx, 8
+ 0012c 0b c1 or eax, ecx
+ 0012e 66 89 85 a4 00
+ 00 00 mov WORD PTR l512$[rbp], ax
+
+; 83 : uint16_t r512 = FIELD_AVX512(right);
+
+ 00135 b8 01 00 00 00 mov eax, 1
+ 0013a 48 6b c0 02 imul rax, rax, 2
+ 0013e 0f b6 84 05 e8
+ 02 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 00146 b9 01 00 00 00 mov ecx, 1
+ 0014b 48 6b c9 03 imul rcx, rcx, 3
+ 0014f 0f b6 8c 0d e8
+ 02 00 00 movzx ecx, BYTE PTR right$[rbp+rcx]
+ 00157 c1 e1 08 shl ecx, 8
+ 0015a 0b c1 or eax, ecx
+ 0015c 66 89 85 c4 00
+ 00 00 mov WORD PTR r512$[rbp], ax
+
+; 84 : uint16_t merged = l512 & r512;
+
+ 00163 0f b7 85 a4 00
+ 00 00 movzx eax, WORD PTR l512$[rbp]
+ 0016a 0f b7 8d c4 00
+ 00 00 movzx ecx, WORD PTR r512$[rbp]
+ 00171 23 c1 and eax, ecx
+ 00173 66 89 85 e4 00
+ 00 00 mov WORD PTR merged$[rbp], ax
+
+; 85 :
+; 86 : /* Clear the IMPL field, then set the weaker one */
+; 87 : int ls = impl_strength(l512);
+
+ 0017a 0f b7 8d a4 00
+ 00 00 movzx ecx, WORD PTR l512$[rbp]
+ 00181 e8 00 00 00 00 call impl_strength
+ 00186 89 85 04 01 00
+ 00 mov DWORD PTR ls$[rbp], eax
+
+; 88 : int rs = impl_strength(r512);
+
+ 0018c 0f b7 8d c4 00
+ 00 00 movzx ecx, WORD PTR r512$[rbp]
+ 00193 e8 00 00 00 00 call impl_strength
+ 00198 89 85 24 01 00
+ 00 mov DWORD PTR rs$[rbp], eax
+
+; 89 : int s = (ls <= rs) ? l512 : r512; /* pick the one with weaker strength ordinal */
+
+ 0019e 8b 85 24 01 00
+ 00 mov eax, DWORD PTR rs$[rbp]
+ 001a4 39 85 04 01 00
+ 00 cmp DWORD PTR ls$[rbp], eax
+ 001aa 7f 0f jg SHORT $LN7@sn_get_uni
+ 001ac 0f b7 85 a4 00
+ 00 00 movzx eax, WORD PTR l512$[rbp]
+ 001b3 89 85 b4 02 00
+ 00 mov DWORD PTR tv150[rbp], eax
+ 001b9 eb 0d jmp SHORT $LN8@sn_get_uni
+$LN7@sn_get_uni:
+ 001bb 0f b7 85 c4 00
+ 00 00 movzx eax, WORD PTR r512$[rbp]
+ 001c2 89 85 b4 02 00
+ 00 mov DWORD PTR tv150[rbp], eax
+$LN8@sn_get_uni:
+ 001c8 8b 85 b4 02 00
+ 00 mov eax, DWORD PTR tv150[rbp]
+ 001ce 89 85 44 01 00
+ 00 mov DWORD PTR s$[rbp], eax
+
+; 90 : unsigned weak_impl = (s >> SIMDID_AVX512_IMPL_SHIFT) & 0x3u;
+
+ 001d4 8b 85 44 01 00
+ 00 mov eax, DWORD PTR s$[rbp]
+ 001da c1 f8 06 sar eax, 6
+ 001dd 83 e0 03 and eax, 3
+ 001e0 89 85 64 01 00
+ 00 mov DWORD PTR weak_impl$[rbp], eax
+
+; 91 : merged &= ~(uint16_t)SIMDID_AVX512_IMPL_MASK;
+
+ 001e6 0f b7 85 e4 00
+ 00 00 movzx eax, WORD PTR merged$[rbp]
+ 001ed 25 3f ff ff ff and eax, -193 ; ffffffffffffff3fH
+ 001f2 66 89 85 e4 00
+ 00 00 mov WORD PTR merged$[rbp], ax
+
+; 92 : merged |= (uint16_t)(weak_impl << SIMDID_AVX512_IMPL_SHIFT);
+
+ 001f9 8b 85 64 01 00
+ 00 mov eax, DWORD PTR weak_impl$[rbp]
+ 001ff c1 e0 06 shl eax, 6
+ 00202 0f b7 c0 movzx eax, ax
+ 00205 0f b7 8d e4 00
+ 00 00 movzx ecx, WORD PTR merged$[rbp]
+ 0020c 0b c8 or ecx, eax
+ 0020e 8b c1 mov eax, ecx
+ 00210 66 89 85 e4 00
+ 00 00 mov WORD PTR merged$[rbp], ax
+
+; 93 : out.make_byte[2] = (char)(merged & 0xFF);
+
+ 00217 0f b7 85 e4 00
+ 00 00 movzx eax, WORD PTR merged$[rbp]
+ 0021e 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00223 b9 01 00 00 00 mov ecx, 1
+ 00228 48 6b c9 02 imul rcx, rcx, 2
+ 0022c 88 44 0d 08 mov BYTE PTR out$[rbp+rcx], al
+
+; 94 : out.make_byte[3] = (char)((merged >> 8) & 0xFF);
+
+ 00230 0f b7 85 e4 00
+ 00 00 movzx eax, WORD PTR merged$[rbp]
+ 00237 c1 f8 08 sar eax, 8
+ 0023a 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 0023f b9 01 00 00 00 mov ecx, 1
+ 00244 48 6b c9 03 imul rcx, rcx, 3
+ 00248 88 44 0d 08 mov BYTE PTR out$[rbp+rcx], al
+
+; 95 :
+; 96 : /* AMX (byte 4): AND */
+; 97 : out.make_byte[4] = left.make_byte[4] & right.make_byte[4];
+
+ 0024c b8 01 00 00 00 mov eax, 1
+ 00251 48 6b c0 04 imul rax, rax, 4
+ 00255 0f be 84 05 e0
+ 02 00 00 movsx eax, BYTE PTR left$[rbp+rax]
+ 0025d b9 01 00 00 00 mov ecx, 1
+ 00262 48 6b c9 04 imul rcx, rcx, 4
+ 00266 0f be 8c 0d e8
+ 02 00 00 movsx ecx, BYTE PTR right$[rbp+rcx]
+ 0026e 23 c1 and eax, ecx
+ 00270 b9 01 00 00 00 mov ecx, 1
+ 00275 48 6b c9 04 imul rcx, rcx, 4
+ 00279 88 44 0d 08 mov BYTE PTR out$[rbp+rcx], al
+
+; 98 :
+; 99 : /* AVX (byte 5): AND */
+; 100 : out.make_byte[5] = left.make_byte[5] & right.make_byte[5];
+
+ 0027d b8 01 00 00 00 mov eax, 1
+ 00282 48 6b c0 05 imul rax, rax, 5
+ 00286 0f be 84 05 e0
+ 02 00 00 movsx eax, BYTE PTR left$[rbp+rax]
+ 0028e b9 01 00 00 00 mov ecx, 1
+ 00293 48 6b c9 05 imul rcx, rcx, 5
+ 00297 0f be 8c 0d e8
+ 02 00 00 movsx ecx, BYTE PTR right$[rbp+rcx]
+ 0029f 23 c1 and eax, ecx
+ 002a1 b9 01 00 00 00 mov ecx, 1
+ 002a6 48 6b c9 05 imul rcx, rcx, 5
+ 002aa 88 44 0d 08 mov BYTE PTR out$[rbp+rcx], al
+
+; 101 :
+; 102 : /* AVX10 (byte 6): AND */
+; 103 : out.make_byte[6] = left.make_byte[6] & right.make_byte[6];
+
+ 002ae b8 01 00 00 00 mov eax, 1
+ 002b3 48 6b c0 06 imul rax, rax, 6
+ 002b7 0f be 84 05 e0
+ 02 00 00 movsx eax, BYTE PTR left$[rbp+rax]
+ 002bf b9 01 00 00 00 mov ecx, 1
+ 002c4 48 6b c9 06 imul rcx, rcx, 6
+ 002c8 0f be 8c 0d e8
+ 02 00 00 movsx ecx, BYTE PTR right$[rbp+rcx]
+ 002d0 23 c1 and eax, ecx
+ 002d2 b9 01 00 00 00 mov ecx, 1
+ 002d7 48 6b c9 06 imul rcx, rcx, 6
+ 002db 88 44 0d 08 mov BYTE PTR out$[rbp+rcx], al
+
+; 104 :
+; 105 : /* uArchHi (byte 7):
+; 106 : * topology bits [1..0]: AND — conservative intersection (weaker topology wins)
+; 107 : * SIMD_DUAL bit [2]: OR — dual if either core is dual */
+; 108 : unsigned char lu = FIELD_UARCH(left);
+
+ 002df b8 01 00 00 00 mov eax, 1
+ 002e4 48 6b c0 07 imul rax, rax, 7
+ 002e8 0f b6 84 05 e0
+ 02 00 00 movzx eax, BYTE PTR left$[rbp+rax]
+ 002f0 88 85 84 01 00
+ 00 mov BYTE PTR lu$[rbp], al
+
+; 109 : unsigned char ru = FIELD_UARCH(right);
+
+ 002f6 b8 01 00 00 00 mov eax, 1
+ 002fb 48 6b c0 07 imul rax, rax, 7
+ 002ff 0f b6 84 05 e8
+ 02 00 00 movzx eax, BYTE PTR right$[rbp+rax]
+ 00307 88 85 a4 01 00
+ 00 mov BYTE PTR ru$[rbp], al
+
+; 110 : unsigned char topo = (lu & 0x3u) & (ru & 0x3u);
+
+ 0030d 0f b6 85 84 01
+ 00 00 movzx eax, BYTE PTR lu$[rbp]
+ 00314 83 e0 03 and eax, 3
+ 00317 0f b6 8d a4 01
+ 00 00 movzx ecx, BYTE PTR ru$[rbp]
+ 0031e 83 e1 03 and ecx, 3
+ 00321 23 c1 and eax, ecx
+ 00323 88 85 c4 01 00
+ 00 mov BYTE PTR topo$[rbp], al
+
+; 111 : unsigned char dual = (lu | ru) & (unsigned char)SIMDID_UARCH_SIMD_DUAL;
+
+ 00329 0f b6 85 84 01
+ 00 00 movzx eax, BYTE PTR lu$[rbp]
+ 00330 0f b6 8d a4 01
+ 00 00 movzx ecx, BYTE PTR ru$[rbp]
+ 00337 0b c1 or eax, ecx
+ 00339 83 e0 04 and eax, 4
+ 0033c 88 85 e4 01 00
+ 00 mov BYTE PTR dual$[rbp], al
+
+; 112 : out.make_byte[7] = (char)(topo | dual);
+
+ 00342 0f b6 85 c4 01
+ 00 00 movzx eax, BYTE PTR topo$[rbp]
+ 00349 0f b6 8d e4 01
+ 00 00 movzx ecx, BYTE PTR dual$[rbp]
+ 00350 0b c1 or eax, ecx
+ 00352 b9 01 00 00 00 mov ecx, 1
+ 00357 48 6b c9 07 imul rcx, rcx, 7
+ 0035b 88 44 0d 08 mov BYTE PTR out$[rbp+rcx], al
+
+; 113 :
+; 114 : return out;
+
+ 0035f 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
+
+; 115 : }
+
+ 00363 48 8b f8 mov rdi, rax
+ 00366 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0036a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:sn_get_unite_simd$rtcFrameData
+ 00371 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00376 48 8b c7 mov rax, rdi
+ 00379 48 8d a5 c8 02
+ 00 00 lea rsp, QWORD PTR [rbp+712]
+ 00380 5f pop rdi
+ 00381 5d pop rbp
+ 00382 c3 ret 0
+sn_get_unite_simd ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.nativecodeanalysis.sarif
new file mode 100644
index 00000000..eb8550d5
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.nativecodeanalysis.sarif
@@ -0,0 +1,131 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/simdid_compare.x86.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "80f3864f5d1a767b85eda0a48b55079b4e877e333133bbbb762072c5abb9dc33"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "8a0f03b014c6d2740a21a13df48b1951932be000152771363cd554748facde0d"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "4da90105811ba902ad984b406834cf36cf43862047957dad5471c0b24d221ace"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrincontext.x86.h"
+ },
+ "hashes": {
+ "sha-256": "bbc00ee7320b30ca1234dc7908e4695ff6d5bb2ba3224e4ffaed345010ba8f48"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/simdid_compare.x86.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/sn_native.cod b/obj/StgSharp.Native/Debug/x64/sn_native.cod
new file mode 100644
index 00000000..f64a6869
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/sn_native.cod
@@ -0,0 +1,61743 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__1D9A7FA2_corecrt_math@h DB 01H
+__2E93F1C0_math@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__73BBCC60_sn_native@c DB 01H
+msvcjmc ENDS
+CONST SEGMENT
+stbi__bmask DD 00H
+ DD 01H
+ DD 03H
+ DD 07H
+ DD 0fH
+ DD 01fH
+ DD 03fH
+ DD 07fH
+ DD 0ffH
+ DD 01ffH
+ DD 03ffH
+ DD 07ffH
+ DD 0fffH
+ DD 01fffH
+ DD 03fffH
+ DD 07fffH
+ DD 0ffffH
+?rgb@?5??stbi__process_frame_header@@9@9 DB 052H ; `stbi__process_frame_header'::`6'::rgb
+ DB 047H
+ DB 042H
+ ORG $+9
+stbi__jbias DD 00H
+ DD 0ffffffffH
+ DD 0fffffffdH
+ DD 0fffffff9H
+ DD 0fffffff1H
+ DD 0ffffffe1H
+ DD 0ffffffc1H
+ DD 0ffffff81H
+ DD 0ffffff01H
+ DD 0fffffe01H
+ DD 0fffffc01H
+ DD 0fffff801H
+ DD 0fffff001H
+ DD 0ffffe001H
+ DD 0ffffc001H
+ DD 0ffff8001H
+stbi__jpeg_dezigzag DB 00H
+ DB 01H
+ DB 08H
+ DB 010H
+ DB 09H
+ DB 02H
+ DB 03H
+ DB 0aH
+ DB 011H
+ DB 018H
+ DB 020H
+ DB 019H
+ DB 012H
+ DB 0bH
+ DB 04H
+ DB 05H
+ DB 0cH
+ DB 013H
+ DB 01aH
+ DB 021H
+ DB 028H
+ DB 030H
+ DB 029H
+ DB 022H
+ DB 01bH
+ DB 014H
+ DB 0dH
+ DB 06H
+ DB 07H
+ DB 0eH
+ DB 015H
+ DB 01cH
+ DB 023H
+ DB 02aH
+ DB 031H
+ DB 038H
+ DB 039H
+ DB 032H
+ DB 02bH
+ DB 024H
+ DB 01dH
+ DB 016H
+ DB 0fH
+ DB 017H
+ DB 01eH
+ DB 025H
+ DB 02cH
+ DB 033H
+ DB 03aH
+ DB 03bH
+ DB 034H
+ DB 02dH
+ DB 026H
+ DB 01fH
+ DB 027H
+ DB 02eH
+ DB 035H
+ DB 03cH
+ DB 03dH
+ DB 036H
+ DB 02fH
+ DB 037H
+ DB 03eH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ DB 03fH
+ ORG $+1
+?tag@?O@??stbi__process_marker@@9@9 DB 04aH ; `stbi__process_marker'::`14'::tag
+ DB 046H
+ DB 049H
+ DB 046H
+ DB 00H
+ ORG $+3
+?tag@?BA@??stbi__process_marker@@9@9 DB 041H ; `stbi__process_marker'::`16'::tag
+ DB 064H
+ DB 06fH
+ DB 062H
+ DB 065H
+ DB 00H
+ ORG $+2
+stbi__zlength_base DD 03H
+ DD 04H
+ DD 05H
+ DD 06H
+ DD 07H
+ DD 08H
+ DD 09H
+ DD 0aH
+ DD 0bH
+ DD 0dH
+ DD 0fH
+ DD 011H
+ DD 013H
+ DD 017H
+ DD 01bH
+ DD 01fH
+ DD 023H
+ DD 02bH
+ DD 033H
+ DD 03bH
+ DD 043H
+ DD 053H
+ DD 063H
+ DD 073H
+ DD 083H
+ DD 0a3H
+ DD 0c3H
+ DD 0e3H
+ DD 0102H
+ DD 00H
+ DD 00H
+ ORG $+4
+stbi__zlength_extra DD 00H
+ DD 00H
+ DD 00H
+ DD 00H
+ DD 00H
+ DD 00H
+ DD 00H
+ DD 00H
+ DD 01H
+ DD 01H
+ DD 01H
+ DD 01H
+ DD 02H
+ DD 02H
+ DD 02H
+ DD 02H
+ DD 03H
+ DD 03H
+ DD 03H
+ DD 03H
+ DD 04H
+ DD 04H
+ DD 04H
+ DD 04H
+ DD 05H
+ DD 05H
+ DD 05H
+ DD 05H
+ DD 00H
+ DD 00H
+ DD 00H
+ ORG $+4
+stbi__zdist_base DD 01H
+ DD 02H
+ DD 03H
+ DD 04H
+ DD 05H
+ DD 07H
+ DD 09H
+ DD 0dH
+ DD 011H
+ DD 019H
+ DD 021H
+ DD 031H
+ DD 041H
+ DD 061H
+ DD 081H
+ DD 0c1H
+ DD 0101H
+ DD 0181H
+ DD 0201H
+ DD 0301H
+ DD 0401H
+ DD 0601H
+ DD 0801H
+ DD 0c01H
+ DD 01001H
+ DD 01801H
+ DD 02001H
+ DD 03001H
+ DD 04001H
+ DD 06001H
+ DD 00H
+ DD 00H
+stbi__zdist_extra DD 00H
+ DD 00H
+ DD 00H
+ DD 00H
+ DD 01H
+ DD 01H
+ DD 02H
+ DD 02H
+ DD 03H
+ DD 03H
+ DD 04H
+ DD 04H
+ DD 05H
+ DD 05H
+ DD 06H
+ DD 06H
+ DD 07H
+ DD 07H
+ DD 08H
+ DD 08H
+ DD 09H
+ DD 09H
+ DD 0aH
+ DD 0aH
+ DD 0bH
+ DD 0bH
+ DD 0cH
+ DD 0cH
+ DD 0dH
+ DD 0dH
+ ORG $+8
+?length_dezigzag@?1??stbi__compute_huffman_codes@@9@9 DB 010H ; `stbi__compute_huffman_codes'::`2'::length_dezigzag
+ DB 011H
+ DB 012H
+ DB 00H
+ DB 08H
+ DB 07H
+ DB 09H
+ DB 06H
+ DB 0aH
+ DB 05H
+ DB 0bH
+ DB 04H
+ DB 0cH
+ DB 03H
+ DB 0dH
+ DB 02H
+ DB 0eH
+ DB 01H
+ DB 0fH
+ ORG $+13
+stbi__zdefault_length DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 09H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 07H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+ DB 08H
+stbi__zdefault_distance DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+ DB 05H
+?png_sig@?1??stbi__check_png_header@@9@9 DB 089H ; `stbi__check_png_header'::`2'::png_sig
+ DB 050H
+ DB 04eH
+ DB 047H
+ DB 0dH
+ DB 0aH
+ DB 01aH
+ DB 0aH
+stbi__depth_scale_table DB 00H
+ DB 0ffH
+ DB 055H
+ DB 00H
+ DB 011H
+ DB 00H
+ DB 00H
+ DB 00H
+ DB 01H
+CONST ENDS
+PUBLIC stbi_load_from_memory
+PUBLIC stbi_load_from_callbacks
+PUBLIC stbi_load
+PUBLIC stbi_load_from_file
+PUBLIC stbi_load_gif_from_memory
+PUBLIC stbi_load_16_from_memory
+PUBLIC stbi_load_16_from_callbacks
+PUBLIC stbi_load_16
+PUBLIC stbi_load_from_file_16
+PUBLIC stbi_loadf_from_memory
+PUBLIC stbi_loadf_from_callbacks
+PUBLIC stbi_loadf
+PUBLIC stbi_loadf_from_file
+PUBLIC stbi_hdr_to_ldr_gamma
+PUBLIC stbi_hdr_to_ldr_scale
+PUBLIC stbi_ldr_to_hdr_gamma
+PUBLIC stbi_ldr_to_hdr_scale
+PUBLIC stbi_is_hdr_from_callbacks
+PUBLIC stbi_is_hdr_from_memory
+PUBLIC stbi_is_hdr
+PUBLIC stbi_is_hdr_from_file
+PUBLIC stbi_failure_reason
+PUBLIC stbi_image_free
+PUBLIC stbi_info_from_memory
+PUBLIC stbi_info_from_callbacks
+PUBLIC stbi_is_16_bit_from_memory
+PUBLIC stbi_is_16_bit_from_callbacks
+PUBLIC stbi_info
+PUBLIC stbi_info_from_file
+PUBLIC stbi_is_16_bit
+PUBLIC stbi_is_16_bit_from_file
+PUBLIC stbi_set_unpremultiply_on_load
+PUBLIC stbi_convert_iphone_png_to_rgb
+PUBLIC stbi_set_flip_vertically_on_load
+PUBLIC stbi_set_unpremultiply_on_load_thread
+PUBLIC stbi_convert_iphone_png_to_rgb_thread
+PUBLIC stbi_set_flip_vertically_on_load_thread
+PUBLIC stbi_zlib_decode_malloc_guesssize
+PUBLIC stbi_zlib_decode_malloc_guesssize_headerflag
+PUBLIC stbi_zlib_decode_malloc
+PUBLIC stbi_zlib_decode_buffer
+PUBLIC stbi_zlib_decode_noheader_malloc
+PUBLIC stbi_zlib_decode_noheader_buffer
+PUBLIC glCheckShaderStat
+PUBLIC initGL
+PUBLIC linkShaderProgram
+PUBLIC loadImageData
+PUBLIC loadGlfuncDefault
+PUBLIC unloadImageData
+PUBLIC readLog
+PUBLIC __JustMyCode_Default
+PUBLIC ??_C@_0BD@CBEDEJPH@unknown?5image?5type@ ; `string'
+PUBLIC ??_C@_08NOGIMCHF@outofmem@ ; `string'
+PUBLIC ??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ ; `string'
+PUBLIC ??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@ ; `string'
+PUBLIC ??_C@_02JDPG@rb@ ; `string'
+PUBLIC ??_C@_0M@JPDHFAGK@can?8t?5fopen@ ; `string'
+PUBLIC ??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@ ; `string'
+PUBLIC ??_C@_13COJANIEC@?$AA0@ ; `string'
+PUBLIC ??_C@_0M@MHDBFHD@unsupported@ ; `string'
+PUBLIC ??_C@_0O@DEFOLMLB@bad?5size?5list@ ; `string'
+PUBLIC ??_C@_0BB@FOKGPEKG@bad?5code?5lengths@ ; `string'
+PUBLIC ??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@ ; `string'
+PUBLIC ??_C@_0BB@IIMLINA@bad?5huffman?5code@ ; `string'
+PUBLIC ??_C@_09IFDKCGFO@bad?5delta@ ; `string'
+PUBLIC ??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ ; `string'
+PUBLIC ??_C@_0BA@KLNDOKJD@expected?5marker@ ; `string'
+PUBLIC ??_C@_0M@LPHNODCG@bad?5DRI?5len@ ; `string'
+PUBLIC ??_C@_0N@BOFJCHAP@bad?5DQT?5type@ ; `string'
+PUBLIC ??_C@_0O@CNHKKDIM@bad?5DQT?5table@ ; `string'
+PUBLIC ??_C@_0P@JLGKOCGN@bad?5DHT?5header@ ; `string'
+PUBLIC ??_C@_0M@CICAFFCH@bad?5COM?5len@ ; `string'
+PUBLIC ??_C@_0M@EENLKPDI@bad?5APP?5len@ ; `string'
+PUBLIC ??_C@_0P@NNGPHMMK@unknown?5marker@ ; `string'
+PUBLIC ??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@ ; `string'
+PUBLIC ??_C@_0M@GNEHAHOH@bad?5SOS?5len@ ; `string'
+PUBLIC ??_C@_0M@NOCCBFAC@bad?5DC?5huff@ ; `string'
+PUBLIC ??_C@_0M@JGMCBLGG@bad?5AC?5huff@ ; `string'
+PUBLIC ??_C@_07EEJOMGGP@bad?5SOS@ ; `string'
+PUBLIC ??_C@_0M@DOFMJEMP@bad?5SOF?5len@ ; `string'
+PUBLIC ??_C@_0L@BCINMEBJ@only?58?9bit@ ; `string'
+PUBLIC ??_C@_0BB@LNEGOMA@no?5header?5height@ ; `string'
+PUBLIC ??_C@_07BIDACDEF@0?5width@ ; `string'
+PUBLIC ??_C@_09OJDLMMBJ@too?5large@ ; `string'
+PUBLIC ??_C@_0BE@DAPHADHL@bad?5component?5count@ ; `string'
+PUBLIC ??_C@_05BLPKENEJ@bad?5H@ ; `string'
+PUBLIC ??_C@_05MPLLHCJG@bad?5V@ ; `string'
+PUBLIC ??_C@_06LJIHDFHI@bad?5TQ@ ; `string'
+PUBLIC ??_C@_06CLMBLEP@no?5SOI@ ; `string'
+PUBLIC ??_C@_06IFCEAHIA@no?5SOF@ ; `string'
+PUBLIC ??_C@_0M@EPMOIECP@bad?5DNL?5len@ ; `string'
+PUBLIC ??_C@_0P@PNCLKCLJ@bad?5DNL?5height@ ; `string'
+PUBLIC ??_C@_0N@KBPNPPBJ@bad?5req_comp@ ; `string'
+PUBLIC ??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@ ; `string'
+PUBLIC ??_C@_09EOHLEIKL@bad?5sizes@ ; `string'
+PUBLIC ??_C@_0BA@MDNKOBMC@bad?5codelengths@ ; `string'
+PUBLIC ??_C@_0BE@IBFIPFO@output?5buffer?5limit@ ; `string'
+PUBLIC ??_C@_0P@CLDJCNKP@unexpected?5end@ ; `string'
+PUBLIC ??_C@_08DIAPIMGJ@bad?5dist@ ; `string'
+PUBLIC ??_C@_0N@IECDHMDI@zlib?5corrupt@ ; `string'
+PUBLIC ??_C@_0BB@PIPBCKIA@read?5past?5buffer@ ; `string'
+PUBLIC ??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ ; `string'
+PUBLIC ??_C@_0P@DOGMHEBI@no?5preset?5dict@ ; `string'
+PUBLIC ??_C@_0BA@MCNBDLPD@bad?5compression@ ; `string'
+PUBLIC ??_C@_0M@DMDNBACF@bad?5png?5sig@ ; `string'
+PUBLIC ??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@ ; `string'
+PUBLIC ??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@ ; `string'
+PUBLIC ??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ ; `string'
+PUBLIC ??_C@_0P@FBBCPGMN@invalid?5filter@ ; `string'
+PUBLIC ??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@ ; `string'
+PUBLIC ??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@ ; `string'
+PUBLIC ??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@ ; `string'
+PUBLIC ??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@ ; `string'
+PUBLIC ??_C@_0O@KBHBNJOK@multiple?5IHDR@ ; `string'
+PUBLIC ??_C@_0N@POJLKMKK@bad?5IHDR?5len@ ; `string'
+PUBLIC ??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@ ; `string'
+PUBLIC ??_C@_09MBBNGCKB@bad?5ctype@ ; `string'
+PUBLIC ??_C@_0BA@MDMBDDFG@bad?5comp?5method@ ; `string'
+PUBLIC ??_C@_0BC@GHLIKKMD@bad?5filter?5method@ ; `string'
+PUBLIC ??_C@_0BF@JCGDPBAA@bad?5interlace?5method@ ; `string'
+PUBLIC ??_C@_0O@FNFBHCOO@0?9pixel?5image@ ; `string'
+PUBLIC ??_C@_0P@JEAFOMAF@first?5not?5IHDR@ ; `string'
+PUBLIC ??_C@_0N@JCPAJAKB@invalid?5PLTE@ ; `string'
+PUBLIC ??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@ ; `string'
+PUBLIC ??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@ ; `string'
+PUBLIC ??_C@_0N@KDLCCKCH@bad?5tRNS?5len@ ; `string'
+PUBLIC ??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@ ; `string'
+PUBLIC ??_C@_07CKIELOEH@no?5PLTE@ ; `string'
+PUBLIC ??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ ; `string'
+PUBLIC ??_C@_09MNNCNKEO@outofdata@ ; `string'
+PUBLIC ??_C@_07MLPECBNA@no?5IDAT@ ; `string'
+PUBLIC ??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ ; `string'
+PUBLIC ??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@ ; `string'
+PUBLIC ??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@ ; `string'
+PUBLIC ??_C@_07IANEBNLB@not?5BMP@ ; `string'
+PUBLIC ??_C@_07IEJCHBDI@bad?5BMP@ ; `string'
+PUBLIC ??_C@_0M@KHBIBJBG@unknown?5BMP@ ; `string'
+PUBLIC ??_C@_07IMHMNOIB@BMP?5RLE@ ; `string'
+PUBLIC ??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@ ; `string'
+PUBLIC ??_C@_0L@PJHPAMCH@bad?5header@ ; `string'
+PUBLIC ??_C@_0L@JDPIFELH@bad?5offset@ ; `string'
+PUBLIC ??_C@_07MALOAKCI@invalid@ ; `string'
+PUBLIC ??_C@_07JNJHIMGH@bad?5bpp@ ; `string'
+PUBLIC ??_C@_09DAEBACAB@bad?5masks@ ; `string'
+PUBLIC ??_C@_0L@DMAPJJO@bad?5format@ ; `string'
+PUBLIC ??_C@_0M@ILLOCNCO@bad?5palette@ ; `string'
+PUBLIC ??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@ ; `string'
+PUBLIC ??_C@_07ECNCNLIK@not?5PSD@ ; `string'
+PUBLIC ??_C@_0O@CHBCDKKC@wrong?5version@ ; `string'
+PUBLIC ??_C@_0BE@PJBNGDBE@wrong?5channel?5count@ ; `string'
+PUBLIC ??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@ ; `string'
+PUBLIC ??_C@_0BD@IOGGBMNK@wrong?5color?5format@ ; `string'
+PUBLIC ??_C@_07DPPMCAKL@corrupt@ ; `string'
+PUBLIC ??_C@_04KBFEPHFH@S?$IA?v4@ ; `string'
+PUBLIC ??_C@_04ELNJHLFH@PICT@ ; `string'
+PUBLIC ??_C@_08GGMBIFE@bad?5file@ ; `string'
+PUBLIC ??_C@_07KMJLPAII@not?5GIF@ ; `string'
+PUBLIC ??_C@_00CNPNBAHC@@ ; `string'
+PUBLIC ??_C@_0O@MGDACKOJ@no?5clear?5code@ ; `string'
+PUBLIC ??_C@_0P@GJNJCPDJ@too?5many?5codes@ ; `string'
+PUBLIC ??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@ ; `string'
+PUBLIC ??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@ ; `string'
+PUBLIC ??_C@_0BE@NAMJKDNF@missing?5color?5table@ ; `string'
+PUBLIC ??_C@_0N@DJABBOOH@unknown?5code@ ; `string'
+PUBLIC ??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@ ; `string'
+PUBLIC ??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@ ; `string'
+PUBLIC ??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@ ; `string'
+PUBLIC ??_C@_06NDOKKIDJ@?$CD?$DPRGBE@ ; `string'
+PUBLIC ??_C@_07NCIOKENI@not?5HDR@ ; `string'
+PUBLIC ??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@ ; `string'
+PUBLIC ??_C@_0BD@NKJFFLKL@unsupported?5format@ ; `string'
+PUBLIC ??_C@_03HKAKGGJN@?9Y?5@ ; `string'
+PUBLIC ??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@ ; `string'
+PUBLIC ??_C@_03FOKDFDHG@?$CLX?5@ ; `string'
+PUBLIC ??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@ ; `string'
+PUBLIC ??_C@_07IDKIDMGJ@bad?5PNM@ ; `string'
+PUBLIC ??_C@_0BH@OBINMOBC@integer?5parse?5overflow@ ; `string'
+PUBLIC ??_C@_0O@MKGNGALN@invalid?5width@ ; `string'
+PUBLIC ??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ ; `string'
+PUBLIC ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ ; `string'
+PUBLIC __real@3f000000
+PUBLIC __real@3f800000
+PUBLIC __real@3ff0000000000000
+PUBLIC __real@40400000
+PUBLIC __real@437f0000
+PUBLIC __real@477fff00
+PUBLIC __xmm@00000200000002000000020000000200
+PUBLIC __xmm@00080008000800080008000800080008
+PUBLIC __xmm@00ff00ff00ff00ff00ff00ff00ff00ff
+PUBLIC __xmm@01010000010100000101000001010000
+PUBLIC __xmm@08a914e808a914e808a914e808a914e8
+PUBLIC __xmm@11c8e09e11c8e09e11c8e09e11c8e09e
+PUBLIC __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3
+PUBLIC __xmm@12d0046b12d0046b12d0046b12d0046b
+PUBLIC __xmm@166f166f166f166f166f166f166f166f
+PUBLIC __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a
+PUBLIC __xmm@80808080808080808080808080808080
+PUBLIC __xmm@e09ee565e09ee565e09ee565e09ee565
+PUBLIC __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0
+PUBLIC __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9
+PUBLIC __xmm@f493f493f493f493f493f493f493f493
+PUBLIC __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d
+PUBLIC __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e
+EXTRN __report_rangecheckfailure:PROC
+EXTRN __imp_free:PROC
+EXTRN __imp_malloc:PROC
+EXTRN __imp_realloc:PROC
+EXTRN memcpy:PROC
+EXTRN memset:PROC
+EXTRN __imp_strcpy_s:PROC
+EXTRN strcmp:PROC
+EXTRN __imp_strncmp:PROC
+EXTRN __imp_fopen_s:PROC
+EXTRN __imp_fclose:PROC
+EXTRN __imp_feof:PROC
+EXTRN __imp_ferror:PROC
+EXTRN __imp_fgetc:PROC
+EXTRN __imp_fread:PROC
+EXTRN __imp_fseek:PROC
+EXTRN __imp_ftell:PROC
+EXTRN __imp_ungetc:PROC
+EXTRN abs:PROC
+EXTRN _lrotl:PROC
+EXTRN __imp_strtol:PROC
+EXTRN pow:PROC
+EXTRN __imp_ldexp:PROC
+EXTRN __imp__wassert:PROC
+EXTRN glfwWindowHint:PROC
+EXTRN glfwGetProcAddress:PROC
+EXTRN _RTC_CheckStackVars:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+EXTRN __GSHandlerCheck:PROC
+EXTRN __chkstk:PROC
+EXTRN __security_check_cookie:PROC
+EXTRN __ImageBase:BYTE
+EXTRN __security_cookie:QWORD
+EXTRN _fltused:DWORD
+EXTRN _tls_index:DWORD
+_TLS SEGMENT
+stbi__g_failure_reason DQ 01H DUP (?)
+_TLS ENDS
+_BSS SEGMENT
+stbi__vertically_flip_on_load_global DD 01H DUP (?)
+_BSS ENDS
+_TLS SEGMENT
+stbi__vertically_flip_on_load_local DD 01H DUP (?)
+stbi__vertically_flip_on_load_set DD 01H DUP (?)
+_TLS ENDS
+_BSS SEGMENT
+stbi__unpremultiply_on_load_global DD 01H DUP (?)
+stbi__de_iphone_flag_global DD 01H DUP (?)
+_BSS ENDS
+_TLS SEGMENT
+stbi__unpremultiply_on_load_local DD 01H DUP (?)
+stbi__unpremultiply_on_load_set DD 01H DUP (?)
+stbi__de_iphone_flag_local DD 01H DUP (?)
+stbi__de_iphone_flag_set DD 01H DUP (?)
+_TLS ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_from_memory DD imagerel $LN3
+ DD imagerel $LN3+199
+ DD imagerel $unwind$stbi_load_from_memory
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_from_callbacks DD imagerel $LN3
+ DD imagerel $LN3+200
+ DD imagerel $unwind$stbi_load_from_callbacks
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load DD imagerel $LN6
+ DD imagerel $LN6+195
+ DD imagerel $unwind$stbi_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_from_file DD imagerel $LN4
+ DD imagerel $LN4+252
+ DD imagerel $unwind$stbi_load_from_file
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_gif_from_memory DD imagerel $LN6
+ DD imagerel $LN6+373
+ DD imagerel $unwind$stbi_load_gif_from_memory
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_16_from_memory DD imagerel $LN3
+ DD imagerel $LN3+199
+ DD imagerel $unwind$stbi_load_16_from_memory
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_16_from_callbacks DD imagerel $LN3
+ DD imagerel $LN3+200
+ DD imagerel $unwind$stbi_load_16_from_callbacks
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_16 DD imagerel $LN6
+ DD imagerel $LN6+195
+ DD imagerel $unwind$stbi_load_16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_load_from_file_16 DD imagerel $LN4
+ DD imagerel $LN4+252
+ DD imagerel $unwind$stbi_load_from_file_16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_loadf_from_memory DD imagerel $LN3
+ DD imagerel $LN3+199
+ DD imagerel $unwind$stbi_loadf_from_memory
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_loadf_from_callbacks DD imagerel $LN3
+ DD imagerel $LN3+200
+ DD imagerel $unwind$stbi_loadf_from_callbacks
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_loadf DD imagerel $LN6
+ DD imagerel $LN6+195
+ DD imagerel $unwind$stbi_loadf
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_loadf_from_file DD imagerel $LN3
+ DD imagerel $LN3+193
+ DD imagerel $unwind$stbi_loadf_from_file
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_hdr_to_ldr_gamma DD imagerel $LN3
+ DD imagerel $LN3+67
+ DD imagerel $unwind$stbi_hdr_to_ldr_gamma
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_hdr_to_ldr_scale DD imagerel $LN3
+ DD imagerel $LN3+67
+ DD imagerel $unwind$stbi_hdr_to_ldr_scale
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_ldr_to_hdr_gamma DD imagerel $LN3
+ DD imagerel $LN3+59
+ DD imagerel $unwind$stbi_ldr_to_hdr_gamma
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_ldr_to_hdr_scale DD imagerel $LN3
+ DD imagerel $LN3+59
+ DD imagerel $unwind$stbi_ldr_to_hdr_scale
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_hdr_from_callbacks DD imagerel $LN3
+ DD imagerel $LN3+159
+ DD imagerel $unwind$stbi_is_hdr_from_callbacks
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_hdr_from_memory DD imagerel $LN3
+ DD imagerel $LN3+158
+ DD imagerel $unwind$stbi_is_hdr_from_memory
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_hdr DD imagerel $LN4
+ DD imagerel $LN4+105
+ DD imagerel $unwind$stbi_is_hdr
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_hdr_from_file DD imagerel $LN3
+ DD imagerel $LN3+187
+ DD imagerel $unwind$stbi_is_hdr_from_file
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_failure_reason DD imagerel $LN3
+ DD imagerel $LN3+68
+ DD imagerel $unwind$stbi_failure_reason
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_image_free DD imagerel $LN3
+ DD imagerel $LN3+56
+ DD imagerel $unwind$stbi_image_free
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_info_from_memory DD imagerel $LN3
+ DD imagerel $LN3+189
+ DD imagerel $unwind$stbi_info_from_memory
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_info_from_callbacks DD imagerel $LN3
+ DD imagerel $LN3+190
+ DD imagerel $unwind$stbi_info_from_callbacks
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_16_bit_from_memory DD imagerel $LN3
+ DD imagerel $LN3+158
+ DD imagerel $unwind$stbi_is_16_bit_from_memory
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_16_bit_from_callbacks DD imagerel $LN3
+ DD imagerel $LN3+159
+ DD imagerel $unwind$stbi_is_16_bit_from_callbacks
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_info DD imagerel $LN4
+ DD imagerel $LN4+148
+ DD imagerel $unwind$stbi_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_info_from_file DD imagerel $LN3
+ DD imagerel $LN3+229
+ DD imagerel $unwind$stbi_info_from_file
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_16_bit DD imagerel $LN4
+ DD imagerel $LN4+112
+ DD imagerel $unwind$stbi_is_16_bit
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_is_16_bit_from_file DD imagerel $LN3
+ DD imagerel $LN3+193
+ DD imagerel $unwind$stbi_is_16_bit_from_file
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_set_unpremultiply_on_load DD imagerel $LN3
+ DD imagerel $LN3+53
+ DD imagerel $unwind$stbi_set_unpremultiply_on_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_convert_iphone_png_to_rgb DD imagerel $LN3
+ DD imagerel $LN3+53
+ DD imagerel $unwind$stbi_convert_iphone_png_to_rgb
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_set_flip_vertically_on_load DD imagerel $LN3
+ DD imagerel $LN3+53
+ DD imagerel $unwind$stbi_set_flip_vertically_on_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_set_unpremultiply_on_load_thread DD imagerel $LN3
+ DD imagerel $LN3+109
+ DD imagerel $unwind$stbi_set_unpremultiply_on_load_thread
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_convert_iphone_png_to_rgb_thread DD imagerel $LN3
+ DD imagerel $LN3+109
+ DD imagerel $unwind$stbi_convert_iphone_png_to_rgb_thread
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_set_flip_vertically_on_load_thread DD imagerel $LN3
+ DD imagerel $LN3+109
+ DD imagerel $unwind$stbi_set_flip_vertically_on_load_thread
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_zlib_decode_malloc_guesssize DD imagerel $LN7
+ DD imagerel $LN7+310
+ DD imagerel $unwind$stbi_zlib_decode_malloc_guesssize
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_zlib_decode_malloc_guesssize_headerflag DD imagerel $LN7
+ DD imagerel $LN7+312
+ DD imagerel $unwind$stbi_zlib_decode_malloc_guesssize_headerflag
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_zlib_decode_malloc DD imagerel $LN3
+ DD imagerel $LN3+82
+ DD imagerel $unwind$stbi_zlib_decode_malloc
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_zlib_decode_buffer DD imagerel $LN5
+ DD imagerel $LN5+237
+ DD imagerel $unwind$stbi_zlib_decode_buffer
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_zlib_decode_noheader_malloc DD imagerel $LN7
+ DD imagerel $LN7+299
+ DD imagerel $unwind$stbi_zlib_decode_noheader_malloc
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi_zlib_decode_noheader_buffer DD imagerel $LN5
+ DD imagerel $LN5+237
+ DD imagerel $unwind$stbi_zlib_decode_noheader_buffer
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__cpuid3 DD imagerel stbi__cpuid3
+ DD imagerel stbi__cpuid3+150
+ DD imagerel $unwind$stbi__cpuid3
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__sse2_available DD imagerel stbi__sse2_available
+ DD imagerel stbi__sse2_available+87
+ DD imagerel $unwind$stbi__sse2_available
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__refill_buffer DD imagerel stbi__refill_buffer
+ DD imagerel stbi__refill_buffer+292
+ DD imagerel $unwind$stbi__refill_buffer
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__start_mem DD imagerel stbi__start_mem
+ DD imagerel stbi__start_mem+206
+ DD imagerel $unwind$stbi__start_mem
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__start_callbacks DD imagerel stbi__start_callbacks
+ DD imagerel stbi__start_callbacks+243
+ DD imagerel $unwind$stbi__start_callbacks
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__stdio_read DD imagerel stbi__stdio_read
+ DD imagerel stbi__stdio_read+87
+ DD imagerel $unwind$stbi__stdio_read
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__stdio_skip DD imagerel stbi__stdio_skip
+ DD imagerel stbi__stdio_skip+111
+ DD imagerel $unwind$stbi__stdio_skip
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__stdio_eof DD imagerel stbi__stdio_eof
+ DD imagerel stbi__stdio_eof+104
+ DD imagerel $unwind$stbi__stdio_eof
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__start_file DD imagerel stbi__start_file
+ DD imagerel stbi__start_file+74
+ DD imagerel $unwind$stbi__start_file
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__rewind DD imagerel stbi__rewind
+ DD imagerel stbi__rewind+98
+ DD imagerel $unwind$stbi__rewind
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_test DD imagerel stbi__jpeg_test
+ DD imagerel stbi__jpeg_test+163
+ DD imagerel $unwind$stbi__jpeg_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_load DD imagerel stbi__jpeg_load
+ DD imagerel stbi__jpeg_load+228
+ DD imagerel $unwind$stbi__jpeg_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_info DD imagerel stbi__jpeg_info
+ DD imagerel stbi__jpeg_info+171
+ DD imagerel $unwind$stbi__jpeg_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__png_test DD imagerel stbi__png_test
+ DD imagerel stbi__png_test+73
+ DD imagerel $unwind$stbi__png_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__png_load DD imagerel stbi__png_load
+ DD imagerel stbi__png_load+199
+ DD imagerel $unwind$stbi__png_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__png_info DD imagerel stbi__png_info
+ DD imagerel stbi__png_info+177
+ DD imagerel $unwind$stbi__png_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__png_is16 DD imagerel stbi__png_is16
+ DD imagerel stbi__png_is16+182
+ DD imagerel $unwind$stbi__png_is16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bmp_test DD imagerel stbi__bmp_test
+ DD imagerel stbi__bmp_test+73
+ DD imagerel $unwind$stbi__bmp_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bmp_load DD imagerel stbi__bmp_load
+ DD imagerel stbi__bmp_load+4929
+ DD imagerel $unwind$stbi__bmp_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bmp_info DD imagerel stbi__bmp_info
+ DD imagerel stbi__bmp_info+335
+ DD imagerel $unwind$stbi__bmp_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__tga_test DD imagerel stbi__tga_test
+ DD imagerel stbi__tga_test+401
+ DD imagerel $unwind$stbi__tga_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__tga_load DD imagerel stbi__tga_load
+ DD imagerel stbi__tga_load+3012
+ DD imagerel $unwind$stbi__tga_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__tga_info DD imagerel stbi__tga_info
+ DD imagerel stbi__tga_info+726
+ DD imagerel $unwind$stbi__tga_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__psd_test DD imagerel stbi__psd_test
+ DD imagerel stbi__psd_test+108
+ DD imagerel $unwind$stbi__psd_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__psd_load DD imagerel stbi__psd_load
+ DD imagerel stbi__psd_load+3127
+ DD imagerel $unwind$stbi__psd_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__psd_info DD imagerel stbi__psd_info
+ DD imagerel stbi__psd_info+478
+ DD imagerel $unwind$stbi__psd_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__psd_is16 DD imagerel stbi__psd_is16
+ DD imagerel stbi__psd_is16+249
+ DD imagerel $unwind$stbi__psd_is16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__hdr_test DD imagerel stbi__hdr_test
+ DD imagerel stbi__hdr_test+121
+ DD imagerel $unwind$stbi__hdr_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__hdr_load DD imagerel stbi__hdr_load
+ DD imagerel stbi__hdr_load+2654
+ DD imagerel $unwind$stbi__hdr_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__hdr_info DD imagerel stbi__hdr_info
+ DD imagerel stbi__hdr_info+640
+ DD imagerel $unwind$stbi__hdr_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pic_test DD imagerel stbi__pic_test
+ DD imagerel stbi__pic_test+73
+ DD imagerel $unwind$stbi__pic_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pic_load DD imagerel stbi__pic_load
+ DD imagerel stbi__pic_load+793
+ DD imagerel $unwind$stbi__pic_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pic_info DD imagerel stbi__pic_info
+ DD imagerel stbi__pic_info+707
+ DD imagerel $unwind$stbi__pic_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_test DD imagerel stbi__gif_test
+ DD imagerel stbi__gif_test+73
+ DD imagerel $unwind$stbi__gif_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_load DD imagerel stbi__gif_load
+ DD imagerel stbi__gif_load+363
+ DD imagerel $unwind$stbi__gif_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__load_gif_main DD imagerel stbi__load_gif_main
+ DD imagerel stbi__load_gif_main+1131
+ DD imagerel $unwind$stbi__load_gif_main
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_info DD imagerel stbi__gif_info
+ DD imagerel stbi__gif_info+90
+ DD imagerel $unwind$stbi__gif_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_test DD imagerel stbi__pnm_test
+ DD imagerel stbi__pnm_test+121
+ DD imagerel $unwind$stbi__pnm_test
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_load DD imagerel stbi__pnm_load
+ DD imagerel stbi__pnm_load+906
+ DD imagerel $unwind$stbi__pnm_load
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_info DD imagerel stbi__pnm_info
+ DD imagerel stbi__pnm_info+585
+ DD imagerel $unwind$stbi__pnm_info
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_is16 DD imagerel stbi__pnm_is16
+ DD imagerel stbi__pnm_is16+76
+ DD imagerel $unwind$stbi__pnm_is16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__err DD imagerel stbi__err
+ DD imagerel stbi__err+81
+ DD imagerel $unwind$stbi__err
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__malloc DD imagerel stbi__malloc
+ DD imagerel stbi__malloc+55
+ DD imagerel $unwind$stbi__malloc
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__addsizes_valid DD imagerel stbi__addsizes_valid
+ DD imagerel stbi__addsizes_valid+105
+ DD imagerel $unwind$stbi__addsizes_valid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__mul2sizes_valid DD imagerel stbi__mul2sizes_valid
+ DD imagerel stbi__mul2sizes_valid+131
+ DD imagerel $unwind$stbi__mul2sizes_valid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__mad2sizes_valid DD imagerel stbi__mad2sizes_valid
+ DD imagerel stbi__mad2sizes_valid+129
+ DD imagerel $unwind$stbi__mad2sizes_valid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__mad3sizes_valid DD imagerel stbi__mad3sizes_valid
+ DD imagerel stbi__mad3sizes_valid+171
+ DD imagerel $unwind$stbi__mad3sizes_valid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__mad4sizes_valid DD imagerel stbi__mad4sizes_valid
+ DD imagerel stbi__mad4sizes_valid+215
+ DD imagerel $unwind$stbi__mad4sizes_valid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__malloc_mad2 DD imagerel stbi__malloc_mad2
+ DD imagerel stbi__malloc_mad2+111
+ DD imagerel $unwind$stbi__malloc_mad2
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__malloc_mad3 DD imagerel stbi__malloc_mad3
+ DD imagerel stbi__malloc_mad3+130
+ DD imagerel $unwind$stbi__malloc_mad3
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__malloc_mad4 DD imagerel stbi__malloc_mad4
+ DD imagerel stbi__malloc_mad4+147
+ DD imagerel $unwind$stbi__malloc_mad4
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__addints_valid DD imagerel stbi__addints_valid
+ DD imagerel stbi__addints_valid+242
+ DD imagerel $unwind$stbi__addints_valid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__mul2shorts_valid DD imagerel stbi__mul2shorts_valid
+ DD imagerel stbi__mul2shorts_valid+306
+ DD imagerel $unwind$stbi__mul2shorts_valid
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__ldr_to_hdr DD imagerel stbi__ldr_to_hdr
+ DD imagerel stbi__ldr_to_hdr+539
+ DD imagerel $unwind$stbi__ldr_to_hdr
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__hdr_to_ldr DD imagerel stbi__hdr_to_ldr
+ DD imagerel stbi__hdr_to_ldr+647
+ DD imagerel $unwind$stbi__hdr_to_ldr
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__load_main DD imagerel stbi__load_main
+ DD imagerel stbi__load_main+935
+ DD imagerel $unwind$stbi__load_main
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__convert_16_to_8 DD imagerel stbi__convert_16_to_8
+ DD imagerel stbi__convert_16_to_8+230
+ DD imagerel $unwind$stbi__convert_16_to_8
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__convert_8_to_16 DD imagerel stbi__convert_8_to_16
+ DD imagerel stbi__convert_8_to_16+246
+ DD imagerel $unwind$stbi__convert_8_to_16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__vertical_flip DD imagerel stbi__vertical_flip
+ DD imagerel stbi__vertical_flip+515
+ DD imagerel $unwind$stbi__vertical_flip
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__vertical_flip_slices DD imagerel stbi__vertical_flip_slices
+ DD imagerel stbi__vertical_flip_slices+168
+ DD imagerel $unwind$stbi__vertical_flip_slices
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__load_and_postprocess_8bit DD imagerel stbi__load_and_postprocess_8bit
+ DD imagerel stbi__load_and_postprocess_8bit+518
+ DD imagerel $unwind$stbi__load_and_postprocess_8bit
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__load_and_postprocess_16bit DD imagerel stbi__load_and_postprocess_16bit
+ DD imagerel stbi__load_and_postprocess_16bit+524
+ DD imagerel $unwind$stbi__load_and_postprocess_16bit
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__float_postprocess DD imagerel stbi__float_postprocess
+ DD imagerel stbi__float_postprocess+247
+ DD imagerel $unwind$stbi__float_postprocess
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__fopen DD imagerel stbi__fopen
+ DD imagerel stbi__fopen+166
+ DD imagerel $unwind$stbi__fopen
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__loadf_main DD imagerel stbi__loadf_main
+ DD imagerel stbi__loadf_main+441
+ DD imagerel $unwind$stbi__loadf_main
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__get8 DD imagerel stbi__get8
+ DD imagerel stbi__get8+226
+ DD imagerel $unwind$stbi__get8
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__at_eof DD imagerel stbi__at_eof
+ DD imagerel stbi__at_eof+163
+ DD imagerel $unwind$stbi__at_eof
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__skip DD imagerel stbi__skip
+ DD imagerel stbi__skip+263
+ DD imagerel $unwind$stbi__skip
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__getn DD imagerel stbi__getn
+ DD imagerel stbi__getn+415
+ DD imagerel $unwind$stbi__getn
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__get16be DD imagerel stbi__get16be
+ DD imagerel stbi__get16be+97
+ DD imagerel $unwind$stbi__get16be
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__get32be DD imagerel stbi__get32be
+ DD imagerel stbi__get32be+91
+ DD imagerel $unwind$stbi__get32be
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__get16le DD imagerel stbi__get16le
+ DD imagerel stbi__get16le+85
+ DD imagerel $unwind$stbi__get16le
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__get32le DD imagerel stbi__get32le
+ DD imagerel stbi__get32le+85
+ DD imagerel $unwind$stbi__get32le
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__compute_y DD imagerel stbi__compute_y
+ DD imagerel stbi__compute_y+81
+ DD imagerel $unwind$stbi__compute_y
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__convert_format DD imagerel stbi__convert_format
+ DD imagerel stbi__convert_format+2752
+ DD imagerel $unwind$stbi__convert_format
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__compute_y_16 DD imagerel stbi__compute_y_16
+ DD imagerel stbi__compute_y_16+81
+ DD imagerel $unwind$stbi__compute_y_16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__convert_format16 DD imagerel stbi__convert_format16
+ DD imagerel stbi__convert_format16+2804
+ DD imagerel $unwind$stbi__convert_format16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__build_huffman DD imagerel stbi__build_huffman
+ DD imagerel stbi__build_huffman+698
+ DD imagerel $unwind$stbi__build_huffman
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__build_fast_ac DD imagerel stbi__build_fast_ac
+ DD imagerel stbi__build_fast_ac+440
+ DD imagerel $unwind$stbi__build_fast_ac
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__grow_buffer_unsafe DD imagerel stbi__grow_buffer_unsafe
+ DD imagerel stbi__grow_buffer_unsafe+314
+ DD imagerel $unwind$stbi__grow_buffer_unsafe
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_huff_decode DD imagerel stbi__jpeg_huff_decode
+ DD imagerel stbi__jpeg_huff_decode+758
+ DD imagerel $unwind$stbi__jpeg_huff_decode
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__extend_receive DD imagerel stbi__extend_receive
+ DD imagerel stbi__extend_receive+285
+ DD imagerel $unwind$stbi__extend_receive
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_get_bits DD imagerel stbi__jpeg_get_bits
+ DD imagerel stbi__jpeg_get_bits+238
+ DD imagerel $unwind$stbi__jpeg_get_bits
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_get_bit DD imagerel stbi__jpeg_get_bit
+ DD imagerel stbi__jpeg_get_bit+171
+ DD imagerel $unwind$stbi__jpeg_get_bit
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_decode_block DD imagerel stbi__jpeg_decode_block
+ DD imagerel stbi__jpeg_decode_block+988
+ DD imagerel $unwind$stbi__jpeg_decode_block
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_decode_block_prog_dc DD imagerel stbi__jpeg_decode_block_prog_dc
+ DD imagerel stbi__jpeg_decode_block_prog_dc+591
+ DD imagerel $unwind$stbi__jpeg_decode_block_prog_dc
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_decode_block_prog_ac DD imagerel stbi__jpeg_decode_block_prog_ac
+ DD imagerel stbi__jpeg_decode_block_prog_ac+1743
+ DD imagerel $unwind$stbi__jpeg_decode_block_prog_ac
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__clamp DD imagerel stbi__clamp
+ DD imagerel stbi__clamp+89
+ DD imagerel $unwind$stbi__clamp
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__idct_block DD imagerel stbi__idct_block
+ DD imagerel stbi__idct_block+3189
+ DD imagerel $unwind$stbi__idct_block
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__idct_simd DD imagerel stbi__idct_simd
+ DD imagerel stbi__idct_simd+5983
+ DD imagerel $unwind$stbi__idct_simd
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__get_marker DD imagerel stbi__get_marker
+ DD imagerel stbi__get_marker+168
+ DD imagerel $unwind$stbi__get_marker
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_reset DD imagerel stbi__jpeg_reset
+ DD imagerel stbi__jpeg_reset+298
+ DD imagerel $unwind$stbi__jpeg_reset
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__parse_entropy_coded_data DD imagerel stbi__parse_entropy_coded_data
+ DD imagerel stbi__parse_entropy_coded_data+3244
+ DD imagerel $unwind$stbi__parse_entropy_coded_data
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_dequantize DD imagerel stbi__jpeg_dequantize
+ DD imagerel stbi__jpeg_dequantize+120
+ DD imagerel $unwind$stbi__jpeg_dequantize
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_finish DD imagerel stbi__jpeg_finish
+ DD imagerel stbi__jpeg_finish+495
+ DD imagerel $unwind$stbi__jpeg_finish
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__process_marker DD imagerel stbi__process_marker
+ DD imagerel stbi__process_marker+1908
+ DD imagerel $unwind$stbi__process_marker
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__process_scan_header DD imagerel stbi__process_scan_header
+ DD imagerel stbi__process_scan_header+906
+ DD imagerel $unwind$stbi__process_scan_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__free_jpeg_components DD imagerel stbi__free_jpeg_components
+ DD imagerel stbi__free_jpeg_components+397
+ DD imagerel $unwind$stbi__free_jpeg_components
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__process_frame_header DD imagerel stbi__process_frame_header
+ DD imagerel stbi__process_frame_header+2436
+ DD imagerel $unwind$stbi__process_frame_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__decode_jpeg_header DD imagerel stbi__decode_jpeg_header
+ DD imagerel stbi__decode_jpeg_header+398
+ DD imagerel $unwind$stbi__decode_jpeg_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__skip_jpeg_junk_at_end DD imagerel stbi__skip_jpeg_junk_at_end
+ DD imagerel stbi__skip_jpeg_junk_at_end+162
+ DD imagerel $unwind$stbi__skip_jpeg_junk_at_end
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__decode_jpeg_image DD imagerel stbi__decode_jpeg_image
+ DD imagerel stbi__decode_jpeg_image+561
+ DD imagerel $unwind$stbi__decode_jpeg_image
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$resample_row_1 DD imagerel resample_row_1
+ DD imagerel resample_row_1+64
+ DD imagerel $unwind$resample_row_1
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__resample_row_v_2 DD imagerel stbi__resample_row_v_2
+ DD imagerel stbi__resample_row_v_2+148
+ DD imagerel $unwind$stbi__resample_row_v_2
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__resample_row_h_2 DD imagerel stbi__resample_row_h_2
+ DD imagerel stbi__resample_row_h_2+522
+ DD imagerel $unwind$stbi__resample_row_h_2
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__resample_row_hv_2 DD imagerel stbi__resample_row_hv_2
+ DD imagerel stbi__resample_row_hv_2+444
+ DD imagerel $unwind$stbi__resample_row_hv_2
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__resample_row_hv_2_simd DD imagerel stbi__resample_row_hv_2_simd
+ DD imagerel stbi__resample_row_hv_2_simd+1193
+ DD imagerel $unwind$stbi__resample_row_hv_2_simd
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__resample_row_generic DD imagerel stbi__resample_row_generic
+ DD imagerel stbi__resample_row_generic+166
+ DD imagerel $unwind$stbi__resample_row_generic
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__YCbCr_to_RGB_row DD imagerel stbi__YCbCr_to_RGB_row
+ DD imagerel stbi__YCbCr_to_RGB_row+510
+ DD imagerel $unwind$stbi__YCbCr_to_RGB_row
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__YCbCr_to_RGB_simd DD imagerel stbi__YCbCr_to_RGB_simd
+ DD imagerel stbi__YCbCr_to_RGB_simd+1391
+ DD imagerel $unwind$stbi__YCbCr_to_RGB_simd
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__setup_jpeg DD imagerel stbi__setup_jpeg
+ DD imagerel stbi__setup_jpeg+177
+ DD imagerel $unwind$stbi__setup_jpeg
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__cleanup_jpeg DD imagerel stbi__cleanup_jpeg
+ DD imagerel stbi__cleanup_jpeg+71
+ DD imagerel $unwind$stbi__cleanup_jpeg
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__blinn_8x8 DD imagerel stbi__blinn_8x8
+ DD imagerel stbi__blinn_8x8+86
+ DD imagerel $unwind$stbi__blinn_8x8
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$load_jpeg_image DD imagerel load_jpeg_image
+ DD imagerel load_jpeg_image+4825
+ DD imagerel $unwind$load_jpeg_image
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__jpeg_info_raw DD imagerel stbi__jpeg_info_raw
+ DD imagerel stbi__jpeg_info_raw+232
+ DD imagerel $unwind$stbi__jpeg_info_raw
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bitreverse16 DD imagerel stbi__bitreverse16
+ DD imagerel stbi__bitreverse16+193
+ DD imagerel $unwind$stbi__bitreverse16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bit_reverse DD imagerel stbi__bit_reverse
+ DD imagerel stbi__bit_reverse+106
+ DD imagerel $unwind$stbi__bit_reverse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__zbuild_huffman DD imagerel stbi__zbuild_huffman
+ DD imagerel stbi__zbuild_huffman+963
+ DD imagerel $unwind$stbi__zbuild_huffman
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__zeof DD imagerel stbi__zeof
+ DD imagerel stbi__zeof+93
+ DD imagerel $unwind$stbi__zeof
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__zget8 DD imagerel stbi__zget8
+ DD imagerel stbi__zget8+119
+ DD imagerel $unwind$stbi__zget8
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__fill_bits DD imagerel stbi__fill_bits
+ DD imagerel stbi__fill_bits+200
+ DD imagerel $unwind$stbi__fill_bits
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__zreceive DD imagerel stbi__zreceive
+ DD imagerel stbi__zreceive+200
+ DD imagerel $unwind$stbi__zreceive
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__zhuffman_decode_slowpath DD imagerel stbi__zhuffman_decode_slowpath
+ DD imagerel stbi__zhuffman_decode_slowpath+324
+ DD imagerel $unwind$stbi__zhuffman_decode_slowpath
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__zhuffman_decode DD imagerel stbi__zhuffman_decode
+ DD imagerel stbi__zhuffman_decode+295
+ DD imagerel $unwind$stbi__zhuffman_decode
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__zexpand DD imagerel stbi__zexpand
+ DD imagerel stbi__zexpand+361
+ DD imagerel $unwind$stbi__zexpand
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__parse_huffman_block DD imagerel stbi__parse_huffman_block
+ DD imagerel stbi__parse_huffman_block+804
+ DD imagerel $unwind$stbi__parse_huffman_block
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__compute_huffman_codes DD imagerel stbi__compute_huffman_codes
+ DD imagerel stbi__compute_huffman_codes+949
+ DD imagerel $unwind$stbi__compute_huffman_codes
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__parse_uncompressed_block DD imagerel stbi__parse_uncompressed_block
+ DD imagerel stbi__parse_uncompressed_block+603
+ DD imagerel $unwind$stbi__parse_uncompressed_block
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__parse_zlib_header DD imagerel stbi__parse_zlib_header
+ DD imagerel stbi__parse_zlib_header+204
+ DD imagerel $unwind$stbi__parse_zlib_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__parse_zlib DD imagerel stbi__parse_zlib
+ DD imagerel stbi__parse_zlib+357
+ DD imagerel $unwind$stbi__parse_zlib
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__do_zlib DD imagerel stbi__do_zlib
+ DD imagerel stbi__do_zlib+158
+ DD imagerel $unwind$stbi__do_zlib
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__get_chunk_header DD imagerel stbi__get_chunk_header
+ DD imagerel stbi__get_chunk_header+123
+ DD imagerel $unwind$stbi__get_chunk_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__check_png_header DD imagerel stbi__check_png_header
+ DD imagerel stbi__check_png_header+120
+ DD imagerel $unwind$stbi__check_png_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__paeth DD imagerel stbi__paeth
+ DD imagerel stbi__paeth+262
+ DD imagerel $unwind$stbi__paeth
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__create_png_alpha_expand8 DD imagerel stbi__create_png_alpha_expand8
+ DD imagerel stbi__create_png_alpha_expand8+374
+ DD imagerel $unwind$stbi__create_png_alpha_expand8
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__create_png_image_raw DD imagerel stbi__create_png_image_raw
+ DD imagerel stbi__create_png_image_raw+3488
+ DD imagerel $unwind$stbi__create_png_image_raw
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__create_png_image DD imagerel stbi__create_png_image
+ DD imagerel stbi__create_png_image+1308
+ DD imagerel $unwind$stbi__create_png_image
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__compute_transparency DD imagerel stbi__compute_transparency
+ DD imagerel stbi__compute_transparency+478
+ DD imagerel $unwind$stbi__compute_transparency
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__compute_transparency16 DD imagerel stbi__compute_transparency16
+ DD imagerel stbi__compute_transparency16+481
+ DD imagerel $unwind$stbi__compute_transparency16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__expand_png_palette DD imagerel stbi__expand_png_palette
+ DD imagerel stbi__expand_png_palette+614
+ DD imagerel $unwind$stbi__expand_png_palette
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__de_iphone DD imagerel stbi__de_iphone
+ DD imagerel stbi__de_iphone+823
+ DD imagerel $unwind$stbi__de_iphone
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__parse_png_file DD imagerel stbi__parse_png_file
+ DD imagerel stbi__parse_png_file+3816
+ DD imagerel $unwind$stbi__parse_png_file
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__do_png DD imagerel stbi__do_png
+ DD imagerel stbi__do_png+693
+ DD imagerel $unwind$stbi__do_png
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__png_info_raw DD imagerel stbi__png_info_raw
+ DD imagerel stbi__png_info_raw+201
+ DD imagerel $unwind$stbi__png_info_raw
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bmp_test_raw DD imagerel stbi__bmp_test_raw
+ DD imagerel stbi__bmp_test_raw+227
+ DD imagerel $unwind$stbi__bmp_test_raw
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__high_bit DD imagerel stbi__high_bit
+ DD imagerel stbi__high_bit+225
+ DD imagerel $unwind$stbi__high_bit
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bitcount DD imagerel stbi__bitcount
+ DD imagerel stbi__bitcount+199
+ DD imagerel $unwind$stbi__bitcount
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__shiftsigned DD imagerel stbi__shiftsigned
+ DD imagerel stbi__shiftsigned+268
+ DD imagerel $unwind$stbi__shiftsigned
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bmp_set_mask_defaults DD imagerel stbi__bmp_set_mask_defaults
+ DD imagerel stbi__bmp_set_mask_defaults+286
+ DD imagerel $unwind$stbi__bmp_set_mask_defaults
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__bmp_parse_header DD imagerel stbi__bmp_parse_header
+ DD imagerel stbi__bmp_parse_header+1594
+ DD imagerel $unwind$stbi__bmp_parse_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__tga_get_comp DD imagerel stbi__tga_get_comp
+ DD imagerel stbi__tga_get_comp+204
+ DD imagerel $unwind$stbi__tga_get_comp
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__tga_read_rgb16 DD imagerel stbi__tga_read_rgb16
+ DD imagerel stbi__tga_read_rgb16+225
+ DD imagerel $unwind$stbi__tga_read_rgb16
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__psd_decode_rle DD imagerel stbi__psd_decode_rle
+ DD imagerel stbi__psd_decode_rle+336
+ DD imagerel $unwind$stbi__psd_decode_rle
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pic_is4 DD imagerel stbi__pic_is4
+ DD imagerel stbi__pic_is4+115
+ DD imagerel $unwind$stbi__pic_is4
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pic_test_core DD imagerel stbi__pic_test_core
+ DD imagerel stbi__pic_test_core+139
+ DD imagerel $unwind$stbi__pic_test_core
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__readval DD imagerel stbi__readval
+ DD imagerel stbi__readval+209
+ DD imagerel $unwind$stbi__readval
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__copyval DD imagerel stbi__copyval
+ DD imagerel stbi__copyval+138
+ DD imagerel $unwind$stbi__copyval
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pic_load_core DD imagerel stbi__pic_load_core
+ DD imagerel stbi__pic_load_core+1805
+ DD imagerel $unwind$stbi__pic_load_core
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_test_raw DD imagerel stbi__gif_test_raw
+ DD imagerel stbi__gif_test_raw+189
+ DD imagerel $unwind$stbi__gif_test_raw
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_parse_colortable DD imagerel stbi__gif_parse_colortable
+ DD imagerel stbi__gif_parse_colortable+278
+ DD imagerel $unwind$stbi__gif_parse_colortable
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_header DD imagerel stbi__gif_header
+ DD imagerel stbi__gif_header+609
+ DD imagerel $unwind$stbi__gif_header
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_info_raw DD imagerel stbi__gif_info_raw
+ DD imagerel stbi__gif_info_raw+223
+ DD imagerel $unwind$stbi__gif_info_raw
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__out_gif_code DD imagerel stbi__out_gif_code
+ DD imagerel stbi__out_gif_code+753
+ DD imagerel $unwind$stbi__out_gif_code
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__process_gif_raster DD imagerel stbi__process_gif_raster
+ DD imagerel stbi__process_gif_raster+1264
+ DD imagerel $unwind$stbi__process_gif_raster
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__gif_load_next DD imagerel stbi__gif_load_next
+ DD imagerel stbi__gif_load_next+2528
+ DD imagerel $unwind$stbi__gif_load_next
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__load_gif_main_outofmem DD imagerel stbi__load_gif_main_outofmem
+ DD imagerel stbi__load_gif_main_outofmem+217
+ DD imagerel $unwind$stbi__load_gif_main_outofmem
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__hdr_test_core DD imagerel stbi__hdr_test_core
+ DD imagerel stbi__hdr_test_core+141
+ DD imagerel $unwind$stbi__hdr_test_core
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__hdr_gettoken DD imagerel stbi__hdr_gettoken
+ DD imagerel stbi__hdr_gettoken+212
+ DD imagerel $unwind$stbi__hdr_gettoken
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__hdr_convert DD imagerel stbi__hdr_convert
+ DD imagerel stbi__hdr_convert+690
+ DD imagerel $unwind$stbi__hdr_convert
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_isspace DD imagerel stbi__pnm_isspace
+ DD imagerel stbi__pnm_isspace+141
+ DD imagerel $unwind$stbi__pnm_isspace
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_skip_whitespace DD imagerel stbi__pnm_skip_whitespace
+ DD imagerel stbi__pnm_skip_whitespace+212
+ DD imagerel $unwind$stbi__pnm_skip_whitespace
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_isdigit DD imagerel stbi__pnm_isdigit
+ DD imagerel stbi__pnm_isdigit+93
+ DD imagerel $unwind$stbi__pnm_isdigit
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__pnm_getinteger DD imagerel stbi__pnm_getinteger
+ DD imagerel stbi__pnm_getinteger+183
+ DD imagerel $unwind$stbi__pnm_getinteger
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__info_main DD imagerel stbi__info_main
+ DD imagerel stbi__info_main+483
+ DD imagerel $unwind$stbi__info_main
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$stbi__is_16_main DD imagerel stbi__is_16_main
+ DD imagerel stbi__is_16_main+113
+ DD imagerel $unwind$stbi__is_16_main
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$glCheckShaderStat DD imagerel $LN4
+ DD imagerel $LN4+232
+ DD imagerel $unwind$glCheckShaderStat
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$initGL DD imagerel $LN3
+ DD imagerel $LN3+111
+ DD imagerel $unwind$initGL
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$linkShaderProgram DD imagerel $LN5
+ DD imagerel $LN5+227
+ DD imagerel $unwind$linkShaderProgram
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$loadImageData DD imagerel $LN4
+ DD imagerel $LN4+143
+ DD imagerel $unwind$loadImageData
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$loadGlfuncDefault DD imagerel $LN7
+ DD imagerel $LN7+160
+ DD imagerel $unwind$loadGlfuncDefault
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$unloadImageData DD imagerel $LN3
+ DD imagerel $LN3+60
+ DD imagerel $unwind$unloadImageData
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$readLog DD imagerel $LN5
+ DD imagerel $LN5+103
+ DD imagerel $unwind$readLog
+pdata ENDS
+; COMDAT __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e
+CONST SEGMENT
+__xmm@fa7efa7efa7efa7efa7efa7efa7efa7e DB '~', 0faH, '~', 0faH, '~', 0faH
+ DB '~', 0faH, '~', 0faH, '~', 0faH, '~', 0faH, '~', 0faH
+CONST ENDS
+; COMDAT __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d
+CONST SEGMENT
+__xmm@f9c31a9df9c31a9df9c31a9df9c31a9d DB 09dH, 01aH, 0c3H, 0f9H, 09dH, 01aH
+ DB 0c3H, 0f9H, 09dH, 01aH, 0c3H, 0f9H, 09dH, 01aH, 0c3H, 0f9H
+CONST ENDS
+; COMDAT __xmm@f493f493f493f493f493f493f493f493
+CONST SEGMENT
+__xmm@f493f493f493f493f493f493f493f493 DB 093H, 0f4H, 093H, 0f4H, 093H, 0f4H
+ DB 093H, 0f4H, 093H, 0f4H, 093H, 0f4H, 093H, 0f4H, 093H, 0f4H
+CONST ENDS
+; COMDAT __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9
+CONST SEGMENT
+__xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 DB 0a9H, 08H, 01aH, 0ebH, 0a9H, 08H
+ DB 01aH, 0ebH, 0a9H, 08H, 01aH, 0ebH, 0a9H, 08H, 01aH, 0ebH
+CONST ENDS
+; COMDAT __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0
+CONST SEGMENT
+__xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 DB 0d0H, 012H, 0cfH, 0e9H, 0d0H, 012H
+ DB 0cfH, 0e9H, 0d0H, 012H, 0cfH, 0e9H, 0d0H, 012H, 0cfH, 0e9H
+CONST ENDS
+; COMDAT __xmm@e09ee565e09ee565e09ee565e09ee565
+CONST SEGMENT
+__xmm@e09ee565e09ee565e09ee565e09ee565 DB 'e', 0e5H, 09eH, 0e0H, 'e', 0e5H
+ DB 09eH, 0e0H, 'e', 0e5H, 09eH, 0e0H, 'e', 0e5H, 09eH, 0e0H
+CONST ENDS
+; COMDAT __xmm@80808080808080808080808080808080
+CONST SEGMENT
+__xmm@80808080808080808080808080808080 DB 080H, 080H, 080H, 080H, 080H, 080H
+ DB 080H, 080H, 080H, 080H, 080H, 080H, 080H, 080H, 080H, 080H
+CONST ENDS
+; COMDAT __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a
+CONST SEGMENT
+__xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a DB 'Z', 01cH, 'Z', 01cH, 'Z', 01cH
+ DB 'Z', 01cH, 'Z', 01cH, 'Z', 01cH, 'Z', 01cH, 'Z', 01cH
+CONST ENDS
+; COMDAT __xmm@166f166f166f166f166f166f166f166f
+CONST SEGMENT
+__xmm@166f166f166f166f166f166f166f166f DB 'o', 016H, 'o', 016H, 'o', 016H
+ DB 'o', 016H, 'o', 016H, 'o', 016H, 'o', 016H, 'o', 016H
+CONST ENDS
+; COMDAT __xmm@12d0046b12d0046b12d0046b12d0046b
+CONST SEGMENT
+__xmm@12d0046b12d0046b12d0046b12d0046b DB 'k', 04H, 0d0H, 012H, 'k', 04H, 0d0H
+ DB 012H, 'k', 04H, 0d0H, 012H, 'k', 04H, 0d0H, 012H
+CONST ENDS
+; COMDAT __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3
+CONST SEGMENT
+__xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 DB 0c3H, 0f9H, 0c8H, 011H, 0c3H, 0f9H
+ DB 0c8H, 011H, 0c3H, 0f9H, 0c8H, 011H, 0c3H, 0f9H, 0c8H, 011H
+CONST ENDS
+; COMDAT __xmm@11c8e09e11c8e09e11c8e09e11c8e09e
+CONST SEGMENT
+__xmm@11c8e09e11c8e09e11c8e09e11c8e09e DB 09eH, 0e0H, 0c8H, 011H, 09eH, 0e0H
+ DB 0c8H, 011H, 09eH, 0e0H, 0c8H, 011H, 09eH, 0e0H, 0c8H, 011H
+CONST ENDS
+; COMDAT __xmm@08a914e808a914e808a914e808a914e8
+CONST SEGMENT
+__xmm@08a914e808a914e808a914e808a914e8 DB 0e8H, 014H, 0a9H, 08H, 0e8H, 014H
+ DB 0a9H, 08H, 0e8H, 014H, 0a9H, 08H, 0e8H, 014H, 0a9H, 08H
+CONST ENDS
+; COMDAT __xmm@01010000010100000101000001010000
+CONST SEGMENT
+__xmm@01010000010100000101000001010000 DB 00H, 00H, 01H, 01H, 00H, 00H, 01H
+ DB 01H, 00H, 00H, 01H, 01H, 00H, 00H, 01H, 01H
+CONST ENDS
+; COMDAT __xmm@00ff00ff00ff00ff00ff00ff00ff00ff
+CONST SEGMENT
+__xmm@00ff00ff00ff00ff00ff00ff00ff00ff DB 0ffH, 00H, 0ffH, 00H, 0ffH, 00H
+ DB 0ffH, 00H, 0ffH, 00H, 0ffH, 00H, 0ffH, 00H, 0ffH, 00H
+CONST ENDS
+; COMDAT __xmm@00080008000800080008000800080008
+CONST SEGMENT
+__xmm@00080008000800080008000800080008 DB 08H, 00H, 08H, 00H, 08H, 00H, 08H
+ DB 00H, 08H, 00H, 08H, 00H, 08H, 00H, 08H, 00H
+CONST ENDS
+; COMDAT __xmm@00000200000002000000020000000200
+CONST SEGMENT
+__xmm@00000200000002000000020000000200 DB 00H, 02H, 00H, 00H, 00H, 02H, 00H
+ DB 00H, 00H, 02H, 00H, 00H, 00H, 02H, 00H, 00H
+CONST ENDS
+; COMDAT __real@477fff00
+CONST SEGMENT
+__real@477fff00 DD 0477fff00r ; 65535
+CONST ENDS
+; COMDAT __real@437f0000
+CONST SEGMENT
+__real@437f0000 DD 0437f0000r ; 255
+CONST ENDS
+; COMDAT __real@40400000
+CONST SEGMENT
+__real@40400000 DD 040400000r ; 3
+CONST ENDS
+; COMDAT __real@3ff0000000000000
+CONST SEGMENT
+__real@3ff0000000000000 DQ 03ff0000000000000r ; 1
+CONST ENDS
+; COMDAT __real@3f800000
+CONST SEGMENT
+__real@3f800000 DD 03f800000r ; 1
+CONST ENDS
+; COMDAT __real@3f000000
+CONST SEGMENT
+__real@3f000000 DD 03f000000r ; 0.5
+CONST ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@
+CONST SEGMENT
+??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ DB 'Failed to load Op'
+ DB 'enGL api:', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@
+CONST SEGMENT
+??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ DB 'max value > 65535', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0O@MKGNGALN@invalid?5width@
+CONST SEGMENT
+??_C@_0O@MKGNGALN@invalid?5width@ DB 'invalid width', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BH@OBINMOBC@integer?5parse?5overflow@
+CONST SEGMENT
+??_C@_0BH@OBINMOBC@integer?5parse?5overflow@ DB 'integer parse overflow', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07IDKIDMGJ@bad?5PNM@
+CONST SEGMENT
+??_C@_07IDKIDMGJ@bad?5PNM@ DB 'bad PNM', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@
+CONST SEGMENT
+??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@ DB 'invalid decode'
+ DB 'd scanline length', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_03FOKDFDHG@?$CLX?5@
+CONST SEGMENT
+??_C@_03FOKDFDHG@?$CLX?5@ DB '+X ', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@
+CONST SEGMENT
+??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@ DB 'unsupported data layout'
+ DB 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_03HKAKGGJN@?9Y?5@
+CONST SEGMENT
+??_C@_03HKAKGGJN@?9Y?5@ DB '-Y ', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BD@NKJFFLKL@unsupported?5format@
+CONST SEGMENT
+??_C@_0BD@NKJFFLKL@unsupported?5format@ DB 'unsupported format', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@
+CONST SEGMENT
+??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@ DB 'FORMAT=32-bit_rle_rgbe'
+ DB 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07NCIOKENI@not?5HDR@
+CONST SEGMENT
+??_C@_07NCIOKENI@not?5HDR@ DB 'not HDR', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_06NDOKKIDJ@?$CD?$DPRGBE@
+CONST SEGMENT
+??_C@_06NDOKKIDJ@?$CD?$DPRGBE@ DB '#?RGBE', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@
+CONST SEGMENT
+??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@ DB '#?RADIANCE', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@
+CONST SEGMENT
+??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@ DB '#?RGBE', 0aH, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@
+CONST SEGMENT
+??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@ DB '#?RADIANCE', 0aH, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@DJABBOOH@unknown?5code@
+CONST SEGMENT
+??_C@_0N@DJABBOOH@unknown?5code@ DB 'unknown code', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BE@NAMJKDNF@missing?5color?5table@
+CONST SEGMENT
+??_C@_0BE@NAMJKDNF@missing?5color?5table@ DB 'missing color table', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@
+CONST SEGMENT
+??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@ DB 'bad Image Descriptor', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@
+CONST SEGMENT
+??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@ DB 'illegal code in raster', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@GJNJCPDJ@too?5many?5codes@
+CONST SEGMENT
+??_C@_0P@GJNJCPDJ@too?5many?5codes@ DB 'too many codes', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0O@MGDACKOJ@no?5clear?5code@
+CONST SEGMENT
+??_C@_0O@MGDACKOJ@no?5clear?5code@ DB 'no clear code', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_00CNPNBAHC@@
+CONST SEGMENT
+??_C@_00CNPNBAHC@@ DB 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07KMJLPAII@not?5GIF@
+CONST SEGMENT
+??_C@_07KMJLPAII@not?5GIF@ DB 'not GIF', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_08GGMBIFE@bad?5file@
+CONST SEGMENT
+??_C@_08GGMBIFE@bad?5file@ DB 'bad file', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_04ELNJHLFH@PICT@
+CONST SEGMENT
+??_C@_04ELNJHLFH@PICT@ DB 'PICT', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_04KBFEPHFH@S?$IA?v4@
+CONST SEGMENT
+??_C@_04KBFEPHFH@S?$IA?v4@ DB 'S', 080H, 0f6H, '4', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07DPPMCAKL@corrupt@
+CONST SEGMENT
+??_C@_07DPPMCAKL@corrupt@ DB 'corrupt', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BD@IOGGBMNK@wrong?5color?5format@
+CONST SEGMENT
+??_C@_0BD@IOGGBMNK@wrong?5color?5format@ DB 'wrong color format', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@
+CONST SEGMENT
+??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@ DB 'unsupported bit depth', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BE@PJBNGDBE@wrong?5channel?5count@
+CONST SEGMENT
+??_C@_0BE@PJBNGDBE@wrong?5channel?5count@ DB 'wrong channel count', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0O@CHBCDKKC@wrong?5version@
+CONST SEGMENT
+??_C@_0O@CHBCDKKC@wrong?5version@ DB 'wrong version', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07ECNCNLIK@not?5PSD@
+CONST SEGMENT
+??_C@_07ECNCNLIK@not?5PSD@ DB 'not PSD', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@
+CONST SEGMENT
+??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@ DB 't'
+ DB 00H, 'g', 00H, 'a', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H
+ DB 'p', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, 'S', 00H, 'T'
+ DB 00H, 'B', 00H, 'I', 00H, '_', 00H, 'r', 00H, 'g', 00H, 'b', 00H
+ DB 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@ILLOCNCO@bad?5palette@
+CONST SEGMENT
+??_C@_0M@ILLOCNCO@bad?5palette@ DB 'bad palette', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0L@DMAPJJO@bad?5format@
+CONST SEGMENT
+??_C@_0L@DMAPJJO@bad?5format@ DB 'bad format', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_09DAEBACAB@bad?5masks@
+CONST SEGMENT
+??_C@_09DAEBACAB@bad?5masks@ DB 'bad masks', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07JNJHIMGH@bad?5bpp@
+CONST SEGMENT
+??_C@_07JNJHIMGH@bad?5bpp@ DB 'bad bpp', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07MALOAKCI@invalid@
+CONST SEGMENT
+??_C@_07MALOAKCI@invalid@ DB 'invalid', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0L@JDPIFELH@bad?5offset@
+CONST SEGMENT
+??_C@_0L@JDPIFELH@bad?5offset@ DB 'bad offset', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0L@PJHPAMCH@bad?5header@
+CONST SEGMENT
+??_C@_0L@PJHPAMCH@bad?5header@ DB 'bad header', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@
+CONST SEGMENT
+??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@ DB 'BMP JPEG/PNG', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07IMHMNOIB@BMP?5RLE@
+CONST SEGMENT
+??_C@_07IMHMNOIB@BMP?5RLE@ DB 'BMP RLE', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@KHBIBJBG@unknown?5BMP@
+CONST SEGMENT
+??_C@_0M@KHBIBJBG@unknown?5BMP@ DB 'unknown BMP', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07IEJCHBDI@bad?5BMP@
+CONST SEGMENT
+??_C@_07IEJCHBDI@bad?5BMP@ DB 'bad BMP', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07IANEBNLB@not?5BMP@
+CONST SEGMENT
+??_C@_07IANEBNLB@not?5BMP@ DB 'not BMP', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@
+CONST SEGMENT
+??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@ DB 'b'
+ DB 00H, 'i', 00H, 't', 00H, 's', 00H, ' ', 00H, '>', 00H, '=', 00H
+ DB ' ', 00H, '0', 00H, ' ', 00H, '&', 00H, '&', 00H, ' ', 00H, 'b'
+ DB 00H, 'i', 00H, 't', 00H, 's', 00H, ' ', 00H, '<', 00H, '=', 00H
+ DB ' ', 00H, '8', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@
+CONST SEGMENT
+??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@ DB 'v', 00H, ' '
+ DB 00H, '<', 00H, ' ', 00H, '2', 00H, '5', 00H, '6', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@
+CONST SEGMENT
+??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ DB 'bad bits_per_channel', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07MLPECBNA@no?5IDAT@
+CONST SEGMENT
+??_C@_07MLPECBNA@no?5IDAT@ DB 'no IDAT', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_09MNNCNKEO@outofdata@
+CONST SEGMENT
+??_C@_09MNNCNKEO@outofdata@ DB 'outofdata', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@PLHGLONG@IDAT?5size?5limit@
+CONST SEGMENT
+??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ DB 'IDAT size limit', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07CKIELOEH@no?5PLTE@
+CONST SEGMENT
+??_C@_07CKIELOEH@no?5PLTE@ DB 'no PLTE', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@
+CONST SEGMENT
+??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@ DB 'tRNS with alpha', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@KDLCCKCH@bad?5tRNS?5len@
+CONST SEGMENT
+??_C@_0N@KDLCCKCH@bad?5tRNS?5len@ DB 'bad tRNS len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@
+CONST SEGMENT
+??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@ DB 'tRNS before PLTE', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@
+CONST SEGMENT
+??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@ DB 'tRNS after IDAT', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@JCPAJAKB@invalid?5PLTE@
+CONST SEGMENT
+??_C@_0N@JCPAJAKB@invalid?5PLTE@ DB 'invalid PLTE', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@JEAFOMAF@first?5not?5IHDR@
+CONST SEGMENT
+??_C@_0P@JEAFOMAF@first?5not?5IHDR@ DB 'first not IHDR', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0O@FNFBHCOO@0?9pixel?5image@
+CONST SEGMENT
+??_C@_0O@FNFBHCOO@0?9pixel?5image@ DB '0-pixel image', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BF@JCGDPBAA@bad?5interlace?5method@
+CONST SEGMENT
+??_C@_0BF@JCGDPBAA@bad?5interlace?5method@ DB 'bad interlace method', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BC@GHLIKKMD@bad?5filter?5method@
+CONST SEGMENT
+??_C@_0BC@GHLIKKMD@bad?5filter?5method@ DB 'bad filter method', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@MDMBDDFG@bad?5comp?5method@
+CONST SEGMENT
+??_C@_0BA@MDMBDDFG@bad?5comp?5method@ DB 'bad comp method', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_09MBBNGCKB@bad?5ctype@
+CONST SEGMENT
+??_C@_09MBBNGCKB@bad?5ctype@ DB 'bad ctype', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@
+CONST SEGMENT
+??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@ DB '1/2/4/8/16-bit only', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@POJLKMKK@bad?5IHDR?5len@
+CONST SEGMENT
+??_C@_0N@POJLKMKK@bad?5IHDR?5len@ DB 'bad IHDR len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0O@KBHBNJOK@multiple?5IHDR@
+CONST SEGMENT
+??_C@_0O@KBHBNJOK@multiple?5IHDR@ DB 'multiple IHDR', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@
+CONST SEGMENT
+??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@ DB 's'
+ DB 00H, '-', 00H, '>', 00H, 'i', 00H, 'm', 00H, 'g', 00H, '_', 00H
+ DB 'o', 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H, '='
+ DB 00H, '=', 00H, ' ', 00H, '4', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@
+CONST SEGMENT
+??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@ DB 'o'
+ DB 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H, '=', 00H
+ DB '=', 00H, ' ', 00H, '2', 00H, ' ', 00H, '|', 00H, '|', 00H, ' '
+ DB 00H, 'o', 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H
+ DB '=', 00H, '=', 00H, ' ', 00H, '4', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@
+CONST SEGMENT
+??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@ DB 'i'
+ DB 00H, 'm', 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '+', 00H
+ DB ' ', 00H, '1', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, 'o'
+ DB 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@
+CONST SEGMENT
+??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@ DB 'd'
+ DB 00H, 'e', 00H, 'p', 00H, 't', 00H, 'h', 00H, ' ', 00H, '=', 00H
+ DB '=', 00H, ' ', 00H, '1', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@FBBCPGMN@invalid?5filter@
+CONST SEGMENT
+??_C@_0P@FBBCPGMN@invalid?5filter@ DB 'invalid filter', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BC@BHMPBBMG@not?5enough?5pixels@
+CONST SEGMENT
+??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ DB 'not enough pixels', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@
+CONST SEGMENT
+??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@ DB 'o'
+ DB 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' ', 00H, '=', 00H
+ DB '=', 00H, ' ', 00H, 's', 00H, '-', 00H, '>', 00H, 'i', 00H, 'm'
+ DB 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '|', 00H, '|', 00H
+ DB ' ', 00H, 'o', 00H, 'u', 00H, 't', 00H, '_', 00H, 'n', 00H, ' '
+ DB 00H, '=', 00H, '=', 00H, ' ', 00H, 's', 00H, '-', 00H, '>', 00H
+ DB 'i', 00H, 'm', 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '+'
+ DB 00H, ' ', 00H, '1', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@
+CONST SEGMENT
+??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@ DB 'i'
+ DB 00H, 'm', 00H, 'g', 00H, '_', 00H, 'n', 00H, ' ', 00H, '=', 00H
+ DB '=', 00H, ' ', 00H, '3', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@DMDNBACF@bad?5png?5sig@
+CONST SEGMENT
+??_C@_0M@DMDNBACF@bad?5png?5sig@ DB 'bad png sig', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@MCNBDLPD@bad?5compression@
+CONST SEGMENT
+??_C@_0BA@MCNBDLPD@bad?5compression@ DB 'bad compression', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@DOGMHEBI@no?5preset?5dict@
+CONST SEGMENT
+??_C@_0P@DOGMHEBI@no?5preset?5dict@ DB 'no preset dict', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@OBKOPAFL@bad?5zlib?5header@
+CONST SEGMENT
+??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ DB 'bad zlib header', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BB@PIPBCKIA@read?5past?5buffer@
+CONST SEGMENT
+??_C@_0BB@PIPBCKIA@read?5past?5buffer@ DB 'read past buffer', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@IECDHMDI@zlib?5corrupt@
+CONST SEGMENT
+??_C@_0N@IECDHMDI@zlib?5corrupt@ DB 'zlib corrupt', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_08DIAPIMGJ@bad?5dist@
+CONST SEGMENT
+??_C@_08DIAPIMGJ@bad?5dist@ DB 'bad dist', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@CLDJCNKP@unexpected?5end@
+CONST SEGMENT
+??_C@_0P@CLDJCNKP@unexpected?5end@ DB 'unexpected end', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BE@IBFIPFO@output?5buffer?5limit@
+CONST SEGMENT
+??_C@_0BE@IBFIPFO@output?5buffer?5limit@ DB 'output buffer limit', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@MDNKOBMC@bad?5codelengths@
+CONST SEGMENT
+??_C@_0BA@MDNKOBMC@bad?5codelengths@ DB 'bad codelengths', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_09EOHLEIKL@bad?5sizes@
+CONST SEGMENT
+??_C@_09EOHLEIKL@bad?5sizes@ DB 'bad sizes', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@
+CONST SEGMENT
+??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@ DB 'b'
+ DB 00H, 'i', 00H, 't', 00H, 's', 00H, ' ', 00H, '<', 00H, '=', 00H
+ DB ' ', 00H, '1', 00H, '6', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@KBPNPPBJ@bad?5req_comp@
+CONST SEGMENT
+??_C@_0N@KBPNPPBJ@bad?5req_comp@ DB 'bad req_comp', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@PNCLKCLJ@bad?5DNL?5height@
+CONST SEGMENT
+??_C@_0P@PNCLKCLJ@bad?5DNL?5height@ DB 'bad DNL height', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@EPMOIECP@bad?5DNL?5len@
+CONST SEGMENT
+??_C@_0M@EPMOIECP@bad?5DNL?5len@ DB 'bad DNL len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_06IFCEAHIA@no?5SOF@
+CONST SEGMENT
+??_C@_06IFCEAHIA@no?5SOF@ DB 'no SOF', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_06CLMBLEP@no?5SOI@
+CONST SEGMENT
+??_C@_06CLMBLEP@no?5SOI@ DB 'no SOI', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_06LJIHDFHI@bad?5TQ@
+CONST SEGMENT
+??_C@_06LJIHDFHI@bad?5TQ@ DB 'bad TQ', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_05MPLLHCJG@bad?5V@
+CONST SEGMENT
+??_C@_05MPLLHCJG@bad?5V@ DB 'bad V', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_05BLPKENEJ@bad?5H@
+CONST SEGMENT
+??_C@_05BLPKENEJ@bad?5H@ DB 'bad H', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BE@DAPHADHL@bad?5component?5count@
+CONST SEGMENT
+??_C@_0BE@DAPHADHL@bad?5component?5count@ DB 'bad component count', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_09OJDLMMBJ@too?5large@
+CONST SEGMENT
+??_C@_09OJDLMMBJ@too?5large@ DB 'too large', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07BIDACDEF@0?5width@
+CONST SEGMENT
+??_C@_07BIDACDEF@0?5width@ DB '0 width', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BB@LNEGOMA@no?5header?5height@
+CONST SEGMENT
+??_C@_0BB@LNEGOMA@no?5header?5height@ DB 'no header height', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0L@BCINMEBJ@only?58?9bit@
+CONST SEGMENT
+??_C@_0L@BCINMEBJ@only?58?9bit@ DB 'only 8-bit', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@DOFMJEMP@bad?5SOF?5len@
+CONST SEGMENT
+??_C@_0M@DOFMJEMP@bad?5SOF?5len@ DB 'bad SOF len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_07EEJOMGGP@bad?5SOS@
+CONST SEGMENT
+??_C@_07EEJOMGGP@bad?5SOS@ DB 'bad SOS', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@JGMCBLGG@bad?5AC?5huff@
+CONST SEGMENT
+??_C@_0M@JGMCBLGG@bad?5AC?5huff@ DB 'bad AC huff', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@NOCCBFAC@bad?5DC?5huff@
+CONST SEGMENT
+??_C@_0M@NOCCBFAC@bad?5DC?5huff@ DB 'bad DC huff', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@GNEHAHOH@bad?5SOS?5len@
+CONST SEGMENT
+??_C@_0M@GNEHAHOH@bad?5SOS?5len@ DB 'bad SOS len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@
+CONST SEGMENT
+??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@ DB 'bad SOS component coun'
+ DB 't', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@NNGPHMMK@unknown?5marker@
+CONST SEGMENT
+??_C@_0P@NNGPHMMK@unknown?5marker@ DB 'unknown marker', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@EENLKPDI@bad?5APP?5len@
+CONST SEGMENT
+??_C@_0M@EENLKPDI@bad?5APP?5len@ DB 'bad APP len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@CICAFFCH@bad?5COM?5len@
+CONST SEGMENT
+??_C@_0M@CICAFFCH@bad?5COM?5len@ DB 'bad COM len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0P@JLGKOCGN@bad?5DHT?5header@
+CONST SEGMENT
+??_C@_0P@JLGKOCGN@bad?5DHT?5header@ DB 'bad DHT header', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0O@CNHKKDIM@bad?5DQT?5table@
+CONST SEGMENT
+??_C@_0O@CNHKKDIM@bad?5DQT?5table@ DB 'bad DQT table', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0N@BOFJCHAP@bad?5DQT?5type@
+CONST SEGMENT
+??_C@_0N@BOFJCHAP@bad?5DQT?5type@ DB 'bad DQT type', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@LPHNODCG@bad?5DRI?5len@
+CONST SEGMENT
+??_C@_0M@LPHNODCG@bad?5DRI?5len@ DB 'bad DRI len', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BA@KLNDOKJD@expected?5marker@
+CONST SEGMENT
+??_C@_0BA@KLNDOKJD@expected?5marker@ DB 'expected marker', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
+CONST SEGMENT
+??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ DB 'can''t merge dc and ac'
+ DB 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_09IFDKCGFO@bad?5delta@
+CONST SEGMENT
+??_C@_09IFDKCGFO@bad?5delta@ DB 'bad delta', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BB@IIMLINA@bad?5huffman?5code@
+CONST SEGMENT
+??_C@_0BB@IIMLINA@bad?5huffman?5code@ DB 'bad huffman code', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@
+CONST SEGMENT
+??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@ DB '('
+ DB 00H, '(', 00H, '(', 00H, 'j', 00H, '-', 00H, '>', 00H, 'c', 00H
+ DB 'o', 00H, 'd', 00H, 'e', 00H, '_', 00H, 'b', 00H, 'u', 00H, 'f'
+ DB 00H, 'f', 00H, 'e', 00H, 'r', 00H, ')', 00H, ' ', 00H, '>', 00H
+ DB '>', 00H, ' ', 00H, '(', 00H, '3', 00H, '2', 00H, ' ', 00H, '-'
+ DB 00H, ' ', 00H, 'h', 00H, '-', 00H, '>', 00H, 's', 00H, 'i', 00H
+ DB 'z', 00H, 'e', 00H, '[', 00H, 'c', 00H, ']', 00H, ')', 00H, ')'
+ DB 00H, ' ', 00H, '&', 00H, ' ', 00H, 's', 00H, 't', 00H, 'b', 00H
+ DB 'i', 00H, '_', 00H, '_', 00H, 'b', 00H, 'm', 00H, 'a', 00H, 's'
+ DB 00H, 'k', 00H, '[', 00H, 'h', 00H, '-', 00H, '>', 00H, 's', 00H
+ DB 'i', 00H, 'z', 00H, 'e', 00H, '[', 00H, 'c', 00H, ']', 00H, ']'
+ DB 00H, ')', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, 'h', 00H
+ DB '-', 00H, '>', 00H, 'c', 00H, 'o', 00H, 'd', 00H, 'e', 00H, '['
+ DB 00H, 'c', 00H, ']', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BB@FOKGPEKG@bad?5code?5lengths@
+CONST SEGMENT
+??_C@_0BB@FOKGPEKG@bad?5code?5lengths@ DB 'bad code lengths', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0O@DEFOLMLB@bad?5size?5list@
+CONST SEGMENT
+??_C@_0O@DEFOLMLB@bad?5size?5list@ DB 'bad size list', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@MHDBFHD@unsupported@
+CONST SEGMENT
+??_C@_0M@MHDBFHD@unsupported@ DB 'unsupported', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_13COJANIEC@?$AA0@
+CONST SEGMENT
+??_C@_13COJANIEC@?$AA0@ DB '0', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@
+CONST SEGMENT
+??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@ DB 'r'
+ DB 00H, 'e', 00H, 'q', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H
+ DB 'p', 00H, ' ', 00H, '>', 00H, '=', 00H, ' ', 00H, '1', 00H, ' '
+ DB 00H, '&', 00H, '&', 00H, ' ', 00H, 'r', 00H, 'e', 00H, 'q', 00H
+ DB '_', 00H, 'c', 00H, 'o', 00H, 'm', 00H, 'p', 00H, ' ', 00H, '<'
+ DB 00H, '=', 00H, ' ', 00H, '4', 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0M@JPDHFAGK@can?8t?5fopen@
+CONST SEGMENT
+??_C@_0M@JPDHFAGK@can?8t?5fopen@ DB 'can''t fopen', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_02JDPG@rb@
+CONST SEGMENT
+??_C@_02JDPG@rb@ DB 'rb', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@
+CONST SEGMENT
+??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@ DB 'r'
+ DB 00H, 'i', 00H, '.', 00H, 'b', 00H, 'i', 00H, 't', 00H, 's', 00H
+ DB '_', 00H, 'p', 00H, 'e', 00H, 'r', 00H, '_', 00H, 'c', 00H, 'h'
+ DB 00H, 'a', 00H, 'n', 00H, 'n', 00H, 'e', 00H, 'l', 00H, ' ', 00H
+ DB '=', 00H, '=', 00H, ' ', 00H, '8', 00H, ' ', 00H, '|', 00H, '|'
+ DB 00H, ' ', 00H, 'r', 00H, 'i', 00H, '.', 00H, 'b', 00H, 'i', 00H
+ DB 't', 00H, 's', 00H, '_', 00H, 'p', 00H, 'e', 00H, 'r', 00H, '_'
+ DB 00H, 'c', 00H, 'h', 00H, 'a', 00H, 'n', 00H, 'n', 00H, 'e', 00H
+ DB 'l', 00H, ' ', 00H, '=', 00H, '=', 00H, ' ', 00H, '1', 00H, '6'
+ DB 00H, 00H, 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+CONST SEGMENT
+??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ DB 'D'
+ DB 00H, ':', 00H, '\', 00H, 'p', 00H, 'l', 00H, 'a', 00H, 't', 00H
+ DB 'f', 00H, 'o', 00H, 'r', 00H, 'm', 00H, '-', 00H, 'd', 00H, 'e'
+ DB 00H, 'v', 00H, '\', 00H, 'S', 00H, 't', 00H, 'g', 00H, 'S', 00H
+ DB 'h', 00H, 'a', 00H, 'r', 00H, 'p', 00H, '.', 00H, 'N', 00H, 'a'
+ DB 00H, 't', 00H, 'i', 00H, 'v', 00H, 'e', 00H, '\', 00H, 'l', 00H
+ DB 'i', 00H, 'b', 00H, '\', 00H, 's', 00H, 't', 00H, 'b', 00H, 'i'
+ DB 00H, '\', 00H, 's', 00H, 't', 00H, 'b', 00H, '_', 00H, 'i', 00H
+ DB 'm', 00H, 'a', 00H, 'g', 00H, 'e', 00H, '.', 00H, 'h', 00H, 00H
+ DB 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_08NOGIMCHF@outofmem@
+CONST SEGMENT
+??_C@_08NOGIMCHF@outofmem@ DB 'outofmem', 00H ; `string'
+CONST ENDS
+; COMDAT ??_C@_0BD@CBEDEJPH@unknown?5image?5type@
+CONST SEGMENT
+??_C@_0BD@CBEDEJPH@unknown?5image?5type@ DB 'unknown image type', 00H ; `string'
+CONST ENDS
+_DATA SEGMENT
+stbi__stdio_callbacks DQ FLAT:stbi__stdio_read
+ DQ FLAT:stbi__stdio_skip
+ DQ FLAT:stbi__stdio_eof
+stbi__l2h_gamma DD 0400ccccdr ; 2.2
+stbi__l2h_scale DD 03f800000r ; 1
+stbi__h2l_gamma_i DD 03ee8ba2er ; 0.454545
+stbi__h2l_scale_i DD 03f800000r ; 1
+first_row_filter DB 00H
+ DB 01H
+ DB 00H
+ DB 05H
+ DB 01H
+ ORG $+3
+?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 DB 'XXXX PNG chunk not kno'
+ DB 'wn', 00H ; `stbi__parse_png_file'::`31'::invalid_chunk
+ ORG $+7
+?mul_table@?1??stbi__shiftsigned@@9@9 DD 00H ; `stbi__shiftsigned'::`2'::mul_table
+ DD 0ffH
+ DD 055H
+ DD 049H
+ DD 011H
+ DD 021H
+ DD 041H
+ DD 081H
+ DD 01H
+ ORG $+4
+?shift_table@?1??stbi__shiftsigned@@9@9 DD 00H ; `stbi__shiftsigned'::`2'::shift_table
+ DD 00H
+ DD 00H
+ DD 01H
+ DD 00H
+ DD 02H
+ DD 04H
+ DD 06H
+ DD 00H
+_DATA ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$readLog DD 025050f01H
+ DD 010a230fH
+ DD 070030021H
+ DD 05002H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$unloadImageData DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$loadGlfuncDefault DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$loadImageData DD 035051d01H
+ DD 0118331dH
+ DD 07011001fH
+ DD 05010H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 03aH
+ DB 0caH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$linkShaderProgram DD 025054119H
+ DD 01122317H
+ DD 0700b0021H
+ DD 0500aH
+ DD imagerel __GSHandlerCheck
+ DD 0f8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+linkShaderProgram$rtcName$0 DB 073H
+ DB 075H
+ DB 063H
+ DB 063H
+ DB 065H
+ DB 073H
+ DB 073H
+ DB 00H
+ ORG $+8
+linkShaderProgram$rtcVarDesc DD 024H
+ DD 04H
+ DQ FLAT:linkShaderProgram$rtcName$0
+ ORG $+48
+linkShaderProgram$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:linkShaderProgram$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$initGL DD 025051601H
+ DD 01112316H
+ DD 0700a001dH
+ DD 05009H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0cfH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$glCheckShaderStat DD 025054c19H
+ DD 011d2322H
+ DD 070160021H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0f8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+glCheckShaderStat$rtcName$0 DB 073H
+ DB 074H
+ DB 061H
+ DB 074H
+ DB 00H
+ ORG $+11
+glCheckShaderStat$rtcVarDesc DD 024H
+ DD 04H
+ DQ FLAT:glCheckShaderStat$rtcName$0
+ ORG $+48
+glCheckShaderStat$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:glCheckShaderStat$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__is_16_main DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__info_main DD 025052201H
+ DD 011d2322H
+ DD 07016001dH
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_getinteger DD 025051801H
+ DD 01132318H
+ DD 0700c0021H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_isdigit DD 025051201H
+ DD 010d2312H
+ DD 07006001fH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_skip_whitespace DD 025051801H
+ DD 01132318H
+ DD 0700c001dH
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_isspace DD 025051201H
+ DD 010d2312H
+ DD 07006001fH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__hdr_convert DD 025051d01H
+ DD 0118231dH
+ DD 070110021H
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__hdr_gettoken DD 025051801H
+ DD 01132318H
+ DD 0700c0025H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__hdr_test_core DD 025051801H
+ DD 01132318H
+ DD 0700c0021H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__load_gif_main_outofmem DD 025051d01H
+ DD 0118231dH
+ DD 07011001fH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_load_next DD 025052201H
+ DD 011d2322H
+ DD 07016004dH
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__process_gif_raster DD 025051801H
+ DD 01132318H
+ DD 0700c0051H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__out_gif_code DD 025051801H
+ DD 01132318H
+ DD 0700c0029H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_info_raw DD 025052201H
+ DD 011d2322H
+ DD 070160021H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_header DD 025052201H
+ DD 011d2322H
+ DD 070160021H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_parse_colortable DD 025052201H
+ DD 011d2322H
+ DD 070160021H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_test_raw DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 044H
+ DW 06f4H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pic_load_core DD 025054b19H
+ DD 011c2321H
+ DD 070150083H
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 0400H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__pic_load_core$rtcName$0 DB 070H
+ DB 061H
+ DB 063H
+ DB 06bH
+ DB 065H
+ DB 074H
+ DB 073H
+ DB 00H
+stbi__pic_load_core$rtcName$1 DB 076H
+ DB 061H
+ DB 06cH
+ DB 075H
+ DB 065H
+ DB 00H
+ ORG $+2
+stbi__pic_load_core$rtcName$2 DB 076H
+ DB 061H
+ DB 06cH
+ DB 075H
+ DB 065H
+ DB 00H
+ ORG $+10
+stbi__pic_load_core$rtcVarDesc DD 0264H
+ DD 04H
+ DQ FLAT:stbi__pic_load_core$rtcName$2
+ DD 01e4H
+ DD 04H
+ DQ FLAT:stbi__pic_load_core$rtcName$1
+ DD 0a8H
+ DD 01eH
+ DQ FLAT:stbi__pic_load_core$rtcName$0
+ ORG $+144
+stbi__pic_load_core$rtcFrameData DD 03H
+ DD 00H
+ DQ FLAT:stbi__pic_load_core$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__copyval DD 025051c01H
+ DD 0117231cH
+ DD 070100025H
+ DD 0500fH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__readval DD 025051c01H
+ DD 0117231cH
+ DD 070100025H
+ DD 0500fH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pic_test_core DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pic_is4 DD 025051801H
+ DD 01132318H
+ DD 0700c0021H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__psd_decode_rle DD 025051d01H
+ DD 0118231dH
+ DD 07011002dH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__tga_read_rgb16 DD 025051801H
+ DD 01132318H
+ DD 0700c0031H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__tga_get_comp DD 025051b01H
+ DD 0116231bH
+ DD 0700f001fH
+ DD 0500eH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bmp_parse_header DD 025051801H
+ DD 01132318H
+ DD 0700c0029H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bmp_set_mask_defaults DD 025051701H
+ DD 01122317H
+ DD 0700b001dH
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__shiftsigned DD 025051b01H
+ DD 0116231bH
+ DD 0700f001dH
+ DD 0500eH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bitcount DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__high_bit DD 025051201H
+ DD 010d2312H
+ DD 070060021H
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bmp_test_raw DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__png_info_raw DD 025052201H
+ DD 011d2322H
+ DD 07016001dH
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__do_png DD 035052201H
+ DD 011d3322H
+ DD 070160023H
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 03fH
+ DW 0ecfH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__parse_png_file DD 045054619H
+ DD 0117431cH
+ DD 070100143H
+ DD 0500fH
+ DD imagerel __GSHandlerCheck
+ DD 0a00H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__parse_png_file$rtcName$0 DB 070H
+ DB 061H
+ DB 06cH
+ DB 065H
+ DB 074H
+ DB 074H
+ DB 065H
+ DB 00H
+stbi__parse_png_file$rtcName$1 DB 074H
+ DB 063H
+ DB 00H
+ ORG $+1
+stbi__parse_png_file$rtcName$2 DB 074H
+ DB 063H
+ DB 031H
+ DB 036H
+ DB 00H
+ ORG $+3
+stbi__parse_png_file$rtcName$3 DB 063H
+ DB 00H
+ ORG $+2
+stbi__parse_png_file$rtcName$4 DB 072H
+ DB 061H
+ DB 077H
+ DB 05fH
+ DB 06cH
+ DB 065H
+ DB 06eH
+ DB 00H
+stbi__parse_png_file$rtcVarDesc DD 06c4H
+ DD 04H
+ DQ FLAT:stbi__parse_png_file$rtcName$4
+ DD 0628H
+ DD 08H
+ DQ FLAT:stbi__parse_png_file$rtcName$3
+ DD 04c4H
+ DD 06H
+ DQ FLAT:stbi__parse_png_file$rtcName$2
+ DD 04a4H
+ DD 03H
+ DQ FLAT:stbi__parse_png_file$rtcName$1
+ DD 050H
+ DD 0400H
+ DQ FLAT:stbi__parse_png_file$rtcName$0
+ ORG $+240
+stbi__parse_png_file$rtcFrameData DD 05H
+ DD 00H
+ DQ FLAT:stbi__parse_png_file$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__de_iphone DD 025051301H
+ DD 010e2313H
+ DD 070070041H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__expand_png_palette DD 025052201H
+ DD 011d2322H
+ DD 070160039H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__compute_transparency16 DD 025051d01H
+ DD 0118231dH
+ DD 07011002dH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__compute_transparency DD 025051d01H
+ DD 0118231dH
+ DD 07011002dH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__create_png_image DD 045053b01H
+ DD 011d4322H
+ DD 070160085H
+ DD 05015H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__create_png_image$rtcName$0 DB 078H
+ DB 06fH
+ DB 072H
+ DB 069H
+ DB 067H
+ DB 00H
+ ORG $+2
+stbi__create_png_image$rtcName$1 DB 079H
+ DB 06fH
+ DB 072H
+ DB 069H
+ DB 067H
+ DB 00H
+ ORG $+2
+stbi__create_png_image$rtcName$2 DB 078H
+ DB 073H
+ DB 070H
+ DB 063H
+ DB 00H
+ ORG $+3
+stbi__create_png_image$rtcName$3 DB 079H
+ DB 073H
+ DB 070H
+ DB 063H
+ DB 00H
+ ORG $+3
+stbi__create_png_image$rtcVarDesc DD 0188H
+ DD 01cH
+ DQ FLAT:stbi__create_png_image$rtcName$3
+ DD 0148H
+ DD 01cH
+ DQ FLAT:stbi__create_png_image$rtcName$2
+ DD 0108H
+ DD 01cH
+ DQ FLAT:stbi__create_png_image$rtcName$1
+ DD 0c8H
+ DD 01cH
+ DQ FLAT:stbi__create_png_image$rtcName$0
+ ORG $+192
+stbi__create_png_image$rtcFrameData DD 04H
+ DD 00H
+ DQ FLAT:stbi__create_png_image$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__create_png_image_raw DD 025052201H
+ DD 011d2322H
+ DD 07016009dH
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__create_png_alpha_expand8 DD 025052201H
+ DD 011d2322H
+ DD 070160021H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__paeth DD 025051b01H
+ DD 0116231bH
+ DD 0700f0031H
+ DD 0500eH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__check_png_header DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__get_chunk_header DD 025052c01H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__get_chunk_header$rtcName$0 DB 063H
+ DB 00H
+ ORG $+14
+stbi__get_chunk_header$rtcVarDesc DD 028H
+ DD 08H
+ DQ FLAT:stbi__get_chunk_header$rtcName$0
+ ORG $+48
+stbi__get_chunk_header$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__get_chunk_header$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__do_zlib DD 025052201H
+ DD 011d2322H
+ DD 07016001dH
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__parse_zlib DD 025051701H
+ DD 01122317H
+ DD 0700b0025H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__parse_zlib_header DD 025051301H
+ DD 010e2313H
+ DD 070070029H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__parse_uncompressed_block DD 025052c01H
+ DD 010e2313H
+ DD 07007002dH
+ DD 05006H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__parse_uncompressed_block$rtcName$0 DB 068H
+ DB 065H
+ DB 061H
+ DB 064H
+ DB 065H
+ DB 072H
+ DB 00H
+ ORG $+9
+stbi__parse_uncompressed_block$rtcVarDesc DD 024H
+ DD 04H
+ DQ FLAT:stbi__parse_uncompressed_block$rtcName$0
+ ORG $+48
+stbi__parse_uncompressed_block$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__parse_uncompressed_block$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 03cH
+ DW 039cH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__compute_huffman_codes DD 025054319H
+ DD 01142319H
+ DD 070070201H
+ DD 05006H
+ DD imagerel __GSHandlerCheck
+ DD 0ff0H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__compute_huffman_codes$rtcName$0 DB 07aH
+ DB 05fH
+ DB 063H
+ DB 06fH
+ DB 064H
+ DB 065H
+ DB 06cH
+ DB 065H
+ DB 06eH
+ DB 067H
+ DB 074H
+ DB 068H
+ DB 00H
+ ORG $+3
+stbi__compute_huffman_codes$rtcName$1 DB 06cH
+ DB 065H
+ DB 06eH
+ DB 063H
+ DB 06fH
+ DB 064H
+ DB 065H
+ DB 073H
+ DB 00H
+ ORG $+7
+stbi__compute_huffman_codes$rtcName$2 DB 063H
+ DB 06fH
+ DB 064H
+ DB 065H
+ DB 06cH
+ DB 065H
+ DB 06eH
+ DB 067H
+ DB 074H
+ DB 068H
+ DB 05fH
+ DB 073H
+ DB 069H
+ DB 07aH
+ DB 065H
+ DB 073H
+ DB 00H
+ ORG $+15
+stbi__compute_huffman_codes$rtcVarDesc DD 0a28H
+ DD 013H
+ DQ FLAT:stbi__compute_huffman_codes$rtcName$2
+ DD 0840H
+ DD 01c7H
+ DQ FLAT:stbi__compute_huffman_codes$rtcName$1
+ DD 030H
+ DD 07e4H
+ DQ FLAT:stbi__compute_huffman_codes$rtcName$0
+ ORG $+144
+stbi__compute_huffman_codes$rtcFrameData DD 03H
+ DD 00H
+ DQ FLAT:stbi__compute_huffman_codes$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__parse_huffman_block DD 025051301H
+ DD 010e2313H
+ DD 070070035H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__zexpand DD 025051d01H
+ DD 0118231dH
+ DD 07011002dH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__zhuffman_decode DD 025051801H
+ DD 01132318H
+ DD 0700c0025H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__zhuffman_decode_slowpath DD 025051801H
+ DD 01132318H
+ DD 0700c0029H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__zreceive DD 025051701H
+ DD 01122317H
+ DD 0700b0021H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__fill_bits DD 025051301H
+ DD 010e2313H
+ DD 07007001fH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__zget8 DD 025051301H
+ DD 010e2313H
+ DD 07007001fH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__zeof DD 025051301H
+ DD 010e2313H
+ DD 07007001fH
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 040H
+ DW 03aaH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__zbuild_huffman DD 025054719H
+ DD 0118231dH
+ DD 070110053H
+ DD 05010H
+ DD imagerel __GSHandlerCheck
+ DD 0288H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__zbuild_huffman$rtcName$0 DB 06eH
+ DB 065H
+ DB 078H
+ DB 074H
+ DB 05fH
+ DB 063H
+ DB 06fH
+ DB 064H
+ DB 065H
+ DB 00H
+ ORG $+2
+stbi__zbuild_huffman$rtcName$1 DB 073H
+ DB 069H
+ DB 07aH
+ DB 065H
+ DB 073H
+ DB 00H
+ ORG $+14
+stbi__zbuild_huffman$rtcVarDesc DD 0f0H
+ DD 044H
+ DQ FLAT:stbi__zbuild_huffman$rtcName$1
+ DD 090H
+ DD 040H
+ DQ FLAT:stbi__zbuild_huffman$rtcName$0
+ ORG $+96
+stbi__zbuild_huffman$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:stbi__zbuild_huffman$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bit_reverse DD 025051601H
+ DD 01112316H
+ DD 0700a001dH
+ DD 05009H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bitreverse16 DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_info_raw DD 025052201H
+ DD 011d2322H
+ DD 07016001fH
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 012c0H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$load_jpeg_image DD 035054c19H
+ DD 011d3322H
+ DD 0701600a9H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0538H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+load_jpeg_image$rtcName$0 DB 063H
+ DB 06fH
+ DB 075H
+ DB 074H
+ DB 070H
+ DB 075H
+ DB 074H
+ DB 00H
+load_jpeg_image$rtcName$1 DB 072H
+ DB 065H
+ DB 073H
+ DB 05fH
+ DB 063H
+ DB 06fH
+ DB 06dH
+ DB 070H
+ DB 00H
+ ORG $+15
+load_jpeg_image$rtcVarDesc DD 0160H
+ DD 0c0H
+ DQ FLAT:load_jpeg_image$rtcName$1
+ DD 0118H
+ DD 020H
+ DQ FLAT:load_jpeg_image$rtcName$0
+ ORG $+96
+load_jpeg_image$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:load_jpeg_image$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__blinn_8x8 DD 025051601H
+ DD 01112316H
+ DD 0700a0021H
+ DD 05009H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__cleanup_jpeg DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__setup_jpeg DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__YCbCr_to_RGB_simd DD 025052201H
+ DD 011d2322H
+ DD 070160147H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__YCbCr_to_RGB_row DD 025052201H
+ DD 011d2322H
+ DD 070160039H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__resample_row_generic DD 025052201H
+ DD 011d2322H
+ DD 070160025H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__resample_row_hv_2_simd DD 025052201H
+ DD 011d2322H
+ DD 0701600e9H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__resample_row_hv_2 DD 025052201H
+ DD 011d2322H
+ DD 070160029H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__resample_row_h_2 DD 025052201H
+ DD 011d2322H
+ DD 070160029H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__resample_row_v_2 DD 025052201H
+ DD 011d2322H
+ DD 070160021H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$resample_row_1 DD 025052201H
+ DD 011d2322H
+ DD 07016001dH
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__decode_jpeg_image DD 025051301H
+ DD 010e2313H
+ DD 070070029H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__skip_jpeg_junk_at_end DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__decode_jpeg_header DD 025051701H
+ DD 01122317H
+ DD 0700b0021H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__process_frame_header DD 025051701H
+ DD 01122317H
+ DD 0700b003dH
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__free_jpeg_components DD 025051c01H
+ DD 0117231cH
+ DD 070100021H
+ DD 0500fH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__process_scan_header DD 025051301H
+ DD 010e2313H
+ DD 070070035H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 03aH
+ DW 075bH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__process_marker DD 025054119H
+ DD 01122317H
+ DD 0700b0081H
+ DD 0500aH
+ DD imagerel __GSHandlerCheck
+ DD 03f8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__process_marker$rtcName$0 DB 073H
+ DB 069H
+ DB 07aH
+ DB 065H
+ DB 073H
+ DB 00H
+ ORG $+10
+stbi__process_marker$rtcVarDesc DD 0110H
+ DD 040H
+ DQ FLAT:stbi__process_marker$rtcName$0
+ ORG $+48
+stbi__process_marker$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__process_marker$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_finish DD 025051301H
+ DD 010e2313H
+ DD 070070035H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_dequantize DD 025051801H
+ DD 01132318H
+ DD 0700c0021H
+ DD 0500bH
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 036H
+ DW 0c93H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__parse_entropy_coded_data DD 045053d19H
+ DD 010e4313H
+ DD 0700700f5H
+ DD 05006H
+ DD imagerel __GSHandlerCheck
+ DD 0798H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__parse_entropy_coded_data$rtcName$0 DB 064H
+ DB 061H
+ DB 074H
+ DB 061H
+ DB 00H
+ ORG $+3
+stbi__parse_entropy_coded_data$rtcName$1 DB 064H
+ DB 061H
+ DB 074H
+ DB 061H
+ DB 00H
+ ORG $+3
+stbi__parse_entropy_coded_data$rtcVarDesc DD 0250H
+ DD 080H
+ DQ FLAT:stbi__parse_entropy_coded_data$rtcName$1
+ DD 090H
+ DD 080H
+ DQ FLAT:stbi__parse_entropy_coded_data$rtcName$0
+ ORG $+96
+stbi__parse_entropy_coded_data$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:stbi__parse_entropy_coded_data$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_reset DD 025051301H
+ DD 010e2313H
+ DD 07007001fH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__get_marker DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__idct_simd DD 025052201H
+ DD 011d2322H
+ DD 0701004afH
+ DD 0500fH
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 03fH
+ DW 0c5cH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__idct_block DD 025054619H
+ DD 0117231cH
+ DD 0701000edH
+ DD 0500fH
+ DD imagerel __GSHandlerCheck
+ DD 0758H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__idct_block$rtcName$0 DB 076H
+ DB 061H
+ DB 06cH
+ DB 00H
+ ORG $+12
+stbi__idct_block$rtcVarDesc DD 050H
+ DD 0100H
+ DQ FLAT:stbi__idct_block$rtcName$0
+ ORG $+48
+stbi__idct_block$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__idct_block$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__clamp DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_decode_block_prog_ac DD 025052201H
+ DD 011d2322H
+ DD 070160051H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_decode_block_prog_dc DD 025052201H
+ DD 011d2322H
+ DD 070160029H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_decode_block DD 025052201H
+ DD 011d2322H
+ DD 070160041H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_get_bit DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_get_bits DD 025051701H
+ DD 01122317H
+ DD 0700b0021H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__extend_receive DD 025051701H
+ DD 01122317H
+ DD 0700b0025H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_huff_decode DD 025051801H
+ DD 01132318H
+ DD 0700c002dH
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__grow_buffer_unsafe DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__build_fast_ac DD 025051801H
+ DD 01132318H
+ DD 0700c003dH
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__build_huffman DD 025051801H
+ DD 01132318H
+ DD 0700c0039H
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__convert_format16 DD 025052101H
+ DD 011c2321H
+ DD 070150031H
+ DD 05014H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__compute_y_16 DD 025051b01H
+ DD 0116231bH
+ DD 0700f001dH
+ DD 0500eH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__convert_format DD 025052101H
+ DD 011c2321H
+ DD 070150031H
+ DD 05014H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__compute_y DD 025051b01H
+ DD 0116231bH
+ DD 0700f001dH
+ DD 0500eH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__get32le DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__get16le DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__get32be DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__get16be DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__getn DD 025051d01H
+ DD 0118231dH
+ DD 070110029H
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__skip DD 025051701H
+ DD 01122317H
+ DD 0700b0021H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__at_eof DD 025051301H
+ DD 010e2313H
+ DD 07007001fH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__get8 DD 025051301H
+ DD 010e2313H
+ DD 07007001fH
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 01a0H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__loadf_main DD 035054c19H
+ DD 011d3322H
+ DD 07016002fH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0160H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__loadf_main$rtcName$0 DB 072H
+ DB 069H
+ DB 00H
+ ORG $+13
+stbi__loadf_main$rtcVarDesc DD 058H
+ DD 0cH
+ DQ FLAT:stbi__loadf_main$rtcName$0
+ ORG $+48
+stbi__loadf_main$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__loadf_main$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 03bH
+ DB 08dH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__fopen DD 025054219H
+ DD 01132318H
+ DD 0700c0021H
+ DD 0500bH
+ DD imagerel __GSHandlerCheck
+ DD 0f8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__fopen$rtcName$0 DB 066H
+ DB 00H
+ ORG $+14
+stbi__fopen$rtcVarDesc DD 028H
+ DD 08H
+ DQ FLAT:stbi__fopen$rtcName$0
+ ORG $+48
+stbi__fopen$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__fopen$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__float_postprocess DD 025052201H
+ DD 011d2322H
+ DD 070160021H
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 01f3H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__load_and_postprocess_16bit DD 045054c19H
+ DD 011d4322H
+ DD 07016002fH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0168H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__load_and_postprocess_16bit$rtcName$0 DB 072H
+ DB 069H
+ DB 00H
+ ORG $+13
+stbi__load_and_postprocess_16bit$rtcVarDesc DD 048H
+ DD 0cH
+ DQ FLAT:stbi__load_and_postprocess_16bit$rtcName$0
+ ORG $+48
+stbi__load_and_postprocess_16bit$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__load_and_postprocess_16bit$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 01edH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__load_and_postprocess_8bit DD 045054c19H
+ DD 011d4322H
+ DD 07016002fH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0168H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__load_and_postprocess_8bit$rtcName$0 DB 072H
+ DB 069H
+ DB 00H
+ ORG $+13
+stbi__load_and_postprocess_8bit$rtcVarDesc DD 048H
+ DD 0cH
+ DQ FLAT:stbi__load_and_postprocess_8bit$rtcName$0
+ ORG $+48
+stbi__load_and_postprocess_8bit$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__load_and_postprocess_8bit$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__vertical_flip_slices DD 025052101H
+ DD 011c2321H
+ DD 070150029H
+ DD 05014H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 044H
+ DW 01eaH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__vertical_flip DD 025054b19H
+ DD 011c2321H
+ DD 07015019fH
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 0ce0H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__vertical_flip$rtcName$0 DB 074H
+ DB 065H
+ DB 06dH
+ DB 070H
+ DB 00H
+ ORG $+11
+stbi__vertical_flip$rtcVarDesc DD 070H
+ DD 0800H
+ DQ FLAT:stbi__vertical_flip$rtcName$0
+ ORG $+48
+stbi__vertical_flip$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__vertical_flip$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__convert_8_to_16 DD 025052101H
+ DD 011c2321H
+ DD 070150029H
+ DD 05014H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__convert_16_to_8 DD 025052101H
+ DD 011c2321H
+ DD 070150029H
+ DD 05014H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__load_main DD 045052201H
+ DD 011d4322H
+ DD 070160025H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__hdr_to_ldr DD 025052101H
+ DD 011c2321H
+ DD 070150035H
+ DD 05014H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__ldr_to_hdr DD 035052101H
+ DD 011c3321H
+ DD 07015002fH
+ DD 05014H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__mul2shorts_valid DD 025051601H
+ DD 01112316H
+ DD 0700a001fH
+ DD 05009H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__addints_valid DD 025051601H
+ DD 01112316H
+ DD 0700a001fH
+ DD 05009H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__malloc_mad4 DD 035052001H
+ DD 011b3320H
+ DD 07014001fH
+ DD 05013H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__malloc_mad3 DD 025052001H
+ DD 011b2320H
+ DD 07014001dH
+ DD 05013H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__malloc_mad2 DD 025051b01H
+ DD 0116231bH
+ DD 0700f001dH
+ DD 0500eH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__mad4sizes_valid DD 025052001H
+ DD 011b2320H
+ DD 07014001fH
+ DD 05013H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__mad3sizes_valid DD 025052001H
+ DD 011b2320H
+ DD 07014001fH
+ DD 05013H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__mad2sizes_valid DD 025051b01H
+ DD 0116231bH
+ DD 0700f001fH
+ DD 0500eH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__mul2sizes_valid DD 025051601H
+ DD 01112316H
+ DD 0700a001fH
+ DD 05009H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__addsizes_valid DD 025051601H
+ DD 01112316H
+ DD 0700a001fH
+ DD 05009H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__malloc DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__err DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_is16 DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 0230H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_info DD 025054c19H
+ DD 011d2322H
+ DD 070160031H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0178H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__pnm_info$rtcName$0 DB 064H
+ DB 075H
+ DB 06dH
+ DB 06dH
+ DB 079H
+ DB 00H
+ ORG $+2
+stbi__pnm_info$rtcName$1 DB 063H
+ DB 00H
+ ORG $+6
+stbi__pnm_info$rtcVarDesc DD 064H
+ DD 01H
+ DQ FLAT:stbi__pnm_info$rtcName$1
+ DD 044H
+ DD 04H
+ DQ FLAT:stbi__pnm_info$rtcName$0
+ ORG $+96
+stbi__pnm_info$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:stbi__pnm_info$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_load DD 035052201H
+ DD 011d3322H
+ DD 070160023H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pnm_test DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_info DD 025052201H
+ DD 011d2322H
+ DD 07016001dH
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 04bH
+ DW 0452H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__load_gif_main DD 035055219H
+ DD 01233328H
+ DD 0701611ffH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 08fe0H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__load_gif_main$rtcName$0 DB 067H
+ DB 00H
+ ORG $+14
+stbi__load_gif_main$rtcVarDesc DD 0c0H
+ DD 08870H
+ DQ FLAT:stbi__load_gif_main$rtcName$0
+ ORG $+48
+stbi__load_gif_main$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__load_gif_main$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 04bH
+ DW 0152H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_load DD 035055219H
+ DD 01233328H
+ DD 0701611ddH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 08ed8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__gif_load$rtcName$0 DB 067H
+ DB 00H
+ ORG $+14
+stbi__gif_load$rtcVarDesc DD 060H
+ DD 08870H
+ DQ FLAT:stbi__gif_load$rtcName$0
+ ORG $+48
+stbi__gif_load$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__gif_load$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__gif_test DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 02aaH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pic_info DD 025054c19H
+ DD 011d2322H
+ DD 070160039H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 01b8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__pic_info$rtcName$0 DB 064H
+ DB 075H
+ DB 06dH
+ DB 06dH
+ DB 079H
+ DB 00H
+ ORG $+2
+stbi__pic_info$rtcName$1 DB 070H
+ DB 061H
+ DB 063H
+ DB 06bH
+ DB 065H
+ DB 074H
+ DB 073H
+ DB 00H
+stbi__pic_info$rtcVarDesc DD 0a8H
+ DD 01eH
+ DQ FLAT:stbi__pic_info$rtcName$1
+ DD 084H
+ DD 04H
+ DQ FLAT:stbi__pic_info$rtcName$0
+ ORG $+96
+stbi__pic_info$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:stbi__pic_info$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 0300H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pic_load DD 035054c19H
+ DD 011d3322H
+ DD 070160035H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0190H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__pic_load$rtcName$0 DB 069H
+ DB 06eH
+ DB 074H
+ DB 065H
+ DB 072H
+ DB 06eH
+ DB 061H
+ DB 06cH
+ DB 05fH
+ DB 063H
+ DB 06fH
+ DB 06dH
+ DB 070H
+ DB 00H
+ ORG $+2
+stbi__pic_load$rtcVarDesc DD 0b4H
+ DD 04H
+ DQ FLAT:stbi__pic_load$rtcName$0
+ ORG $+48
+stbi__pic_load$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__pic_load$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__pic_test DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 0267H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__hdr_info DD 025054c19H
+ DD 011d2322H
+ DD 0701600ddH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 06d8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__hdr_info$rtcName$0 DB 062H
+ DB 075H
+ DB 066H
+ DB 066H
+ DB 065H
+ DB 072H
+ DB 00H
+ ORG $+1
+stbi__hdr_info$rtcName$1 DB 074H
+ DB 06fH
+ DB 06bH
+ DB 065H
+ DB 06eH
+ DB 00H
+ ORG $+2
+stbi__hdr_info$rtcName$2 DB 064H
+ DB 075H
+ DB 06dH
+ DB 06dH
+ DB 079H
+ DB 00H
+ ORG $+10
+stbi__hdr_info$rtcVarDesc DD 0484H
+ DD 04H
+ DQ FLAT:stbi__hdr_info$rtcName$2
+ DD 0448H
+ DD 08H
+ DQ FLAT:stbi__hdr_info$rtcName$1
+ DD 030H
+ DD 0400H
+ DQ FLAT:stbi__hdr_info$rtcName$0
+ ORG $+144
+stbi__hdr_info$rtcFrameData DD 03H
+ DD 00H
+ DQ FLAT:stbi__hdr_info$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 0a45H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__hdr_load DD 035054c19H
+ DD 011d3322H
+ DD 070160139H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 09b0H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__hdr_load$rtcName$0 DB 062H
+ DB 075H
+ DB 066H
+ DB 066H
+ DB 065H
+ DB 072H
+ DB 00H
+ ORG $+1
+stbi__hdr_load$rtcName$1 DB 074H
+ DB 06fH
+ DB 06bH
+ DB 065H
+ DB 06eH
+ DB 00H
+ ORG $+2
+stbi__hdr_load$rtcName$2 DB 072H
+ DB 067H
+ DB 062H
+ DB 065H
+ DB 00H
+ ORG $+3
+stbi__hdr_load$rtcName$3 DB 072H
+ DB 067H
+ DB 062H
+ DB 065H
+ DB 00H
+ ORG $+3
+stbi__hdr_load$rtcVarDesc DD 0674H
+ DD 04H
+ DQ FLAT:stbi__hdr_load$rtcName$3
+ DD 0654H
+ DD 04H
+ DQ FLAT:stbi__hdr_load$rtcName$2
+ DD 0458H
+ DD 08H
+ DQ FLAT:stbi__hdr_load$rtcName$1
+ DD 040H
+ DD 0400H
+ DQ FLAT:stbi__hdr_load$rtcName$0
+ ORG $+192
+stbi__hdr_load$rtcFrameData DD 04H
+ DD 00H
+ DQ FLAT:stbi__hdr_load$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__hdr_test DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__psd_is16 DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 01c5H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__psd_info DD 025054c19H
+ DD 011d2322H
+ DD 070160029H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0138H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__psd_info$rtcName$0 DB 064H
+ DB 075H
+ DB 06dH
+ DB 06dH
+ DB 079H
+ DB 00H
+ ORG $+10
+stbi__psd_info$rtcVarDesc DD 044H
+ DD 04H
+ DQ FLAT:stbi__psd_info$rtcName$0
+ ORG $+48
+stbi__psd_info$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__psd_info$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__psd_load DD 035052201H
+ DD 011d3322H
+ DD 070160097H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__psd_test DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__tga_info DD 025052201H
+ DD 011d2322H
+ DD 07016003dH
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 0babH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__tga_load DD 035054c19H
+ DD 011d3322H
+ DD 0701600d5H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0690H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__tga_load$rtcName$0 DB 074H
+ DB 067H
+ DB 061H
+ DB 05fH
+ DB 072H
+ DB 067H
+ DB 062H
+ DB 031H
+ DB 036H
+ DB 00H
+ ORG $+6
+stbi__tga_load$rtcName$1 DB 072H
+ DB 061H
+ DB 077H
+ DB 05fH
+ DB 064H
+ DB 061H
+ DB 074H
+ DB 061H
+ DB 00H
+ ORG $+7
+stbi__tga_load$rtcVarDesc DD 0294H
+ DD 04H
+ DQ FLAT:stbi__tga_load$rtcName$1
+ DD 01d4H
+ DD 04H
+ DQ FLAT:stbi__tga_load$rtcName$0
+ ORG $+96
+stbi__tga_load$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:stbi__tga_load$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__tga_test DD 025051301H
+ DD 010e2313H
+ DD 070070029H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 0136H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bmp_info DD 025054c19H
+ DD 011d2322H
+ DD 070160029H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0138H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__bmp_info$rtcName$0 DB 069H
+ DB 06eH
+ DB 066H
+ DB 06fH
+ DB 00H
+ ORG $+11
+stbi__bmp_info$rtcVarDesc DD 048H
+ DD 024H
+ DQ FLAT:stbi__bmp_info$rtcName$0
+ ORG $+48
+stbi__bmp_info$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__bmp_info$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 01328H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bmp_load DD 035054c19H
+ DD 011d3322H
+ DD 0701601a9H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0d30H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__bmp_load$rtcName$0 DB 070H
+ DB 061H
+ DB 06cH
+ DB 00H
+stbi__bmp_load$rtcName$1 DB 069H
+ DB 06eH
+ DB 066H
+ DB 06fH
+ DB 00H
+ ORG $+7
+stbi__bmp_load$rtcVarDesc DD 05f8H
+ DD 024H
+ DQ FLAT:stbi__bmp_load$rtcName$1
+ DD 0100H
+ DD 0400H
+ DQ FLAT:stbi__bmp_load$rtcName$0
+ ORG $+96
+stbi__bmp_load$rtcFrameData DD 02H
+ DD 00H
+ DQ FLAT:stbi__bmp_load$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__bmp_test DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 036H
+ DB 09dH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__png_is16 DD 025053d19H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+ DD imagerel __GSHandlerCheck
+ DD 0118H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__png_is16$rtcName$0 DB 070H
+ DB 00H
+ ORG $+14
+stbi__png_is16$rtcVarDesc DD 028H
+ DD 028H
+ DQ FLAT:stbi__png_is16$rtcName$0
+ ORG $+48
+stbi__png_is16$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__png_is16$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 098H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__png_info DD 025054c19H
+ DD 011d2322H
+ DD 070160025H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0118H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__png_info$rtcName$0 DB 070H
+ DB 00H
+ ORG $+14
+stbi__png_info$rtcVarDesc DD 028H
+ DD 028H
+ DQ FLAT:stbi__png_info$rtcName$0
+ ORG $+48
+stbi__png_info$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__png_info$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0aeH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__png_load DD 035054c19H
+ DD 011d3322H
+ DD 070160027H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0128H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__png_load$rtcName$0 DB 070H
+ DB 00H
+ ORG $+14
+stbi__png_load$rtcVarDesc DD 038H
+ DD 028H
+ DQ FLAT:stbi__png_load$rtcName$0
+ ORG $+48
+stbi__png_load$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__png_load$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__png_test DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_info DD 025052201H
+ DD 011d2322H
+ DD 070160025H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_load DD 035052201H
+ DD 011d3322H
+ DD 070160027H
+ DD 05015H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__jpeg_test DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__rewind DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__start_file DD 025051801H
+ DD 01132318H
+ DD 0700c001dH
+ DD 0500bH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__stdio_eof DD 025051301H
+ DD 010e2313H
+ DD 07007001fH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__stdio_skip DD 025051701H
+ DD 01122317H
+ DD 0700b0021H
+ DD 0500aH
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__stdio_read DD 025051d01H
+ DD 0118231dH
+ DD 07011001dH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__start_callbacks DD 025061e01H
+ DD 0119231eH
+ DD 07012001eH
+ DD 050106011H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__start_mem DD 025051d01H
+ DD 0118231dH
+ DD 07011001fH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__refill_buffer DD 025051301H
+ DD 010e2313H
+ DD 070070021H
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__sse2_available DD 025050f01H
+ DD 010a230fH
+ DD 070030021H
+ DD 05002H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 02bH
+ DB 07cH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi__cpuid3 DD 025063219H
+ DD 010b2310H
+ DD 070040022H
+ DD 050023003H
+ DD imagerel __GSHandlerCheck
+ DD 0108H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi__cpuid3$rtcName$0 DB 069H
+ DB 06eH
+ DB 066H
+ DB 06fH
+ DB 00H
+ ORG $+11
+stbi__cpuid3$rtcVarDesc DD 028H
+ DD 010H
+ DQ FLAT:stbi__cpuid3$rtcName$0
+ ORG $+48
+stbi__cpuid3$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi__cpuid3$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 04aH
+ DB 0d4H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_zlib_decode_noheader_buffer DD 035055119H
+ DD 01223327H
+ DD 0701502cdH
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01658H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_zlib_decode_noheader_buffer$rtcName$0 DB 061H
+ DB 00H
+ ORG $+14
+stbi_zlib_decode_noheader_buffer$rtcVarDesc DD 040H
+ DD 01008H
+ DQ FLAT:stbi_zlib_decode_noheader_buffer$rtcName$0
+ ORG $+48
+stbi_zlib_decode_noheader_buffer$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_zlib_decode_noheader_buffer$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 045H
+ DW 0112H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_zlib_decode_noheader_malloc DD 035054c19H
+ DD 011d3322H
+ DD 0701002d1H
+ DD 0500fH
+ DD imagerel __GSHandlerCheck
+ DD 01678H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_zlib_decode_noheader_malloc$rtcName$0 DB 061H
+ DB 00H
+ ORG $+14
+stbi_zlib_decode_noheader_malloc$rtcVarDesc DD 040H
+ DD 01008H
+ DQ FLAT:stbi_zlib_decode_noheader_malloc$rtcName$0
+ ORG $+48
+stbi_zlib_decode_noheader_malloc$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_zlib_decode_noheader_malloc$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 04aH
+ DB 0d4H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_zlib_decode_buffer DD 035055119H
+ DD 01223327H
+ DD 0701502cdH
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01658H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_zlib_decode_buffer$rtcName$0 DB 061H
+ DB 00H
+ ORG $+14
+stbi_zlib_decode_buffer$rtcVarDesc DD 040H
+ DD 01008H
+ DQ FLAT:stbi_zlib_decode_buffer$rtcName$0
+ ORG $+48
+stbi_zlib_decode_buffer$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_zlib_decode_buffer$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_zlib_decode_malloc DD 025051c01H
+ DD 0117231cH
+ DD 07010001dH
+ DD 0500fH
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 04aH
+ DW 011fH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_zlib_decode_malloc_guesssize_headerflag DD 035055119H
+ DD 01223327H
+ DD 0701502d1H
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01678H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_zlib_decode_malloc_guesssize_headerflag$rtcName$0 DB 061H
+ DB 00H
+ ORG $+14
+stbi_zlib_decode_malloc_guesssize_headerflag$rtcVarDesc DD 040H
+ DD 01008H
+ DQ FLAT:stbi_zlib_decode_malloc_guesssize_headerflag$rtcName$0
+ ORG $+48
+stbi_zlib_decode_malloc_guesssize_headerflag$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_zlib_decode_malloc_guesssize_headerflag$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 04aH
+ DW 011dH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_zlib_decode_malloc_guesssize DD 035055119H
+ DD 01223327H
+ DD 0701502d1H
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01678H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_zlib_decode_malloc_guesssize$rtcName$0 DB 061H
+ DB 00H
+ ORG $+14
+stbi_zlib_decode_malloc_guesssize$rtcVarDesc DD 040H
+ DD 01008H
+ DQ FLAT:stbi_zlib_decode_malloc_guesssize$rtcName$0
+ ORG $+48
+stbi_zlib_decode_malloc_guesssize$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_zlib_decode_malloc_guesssize$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_set_flip_vertically_on_load_thread DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_convert_iphone_png_to_rgb_thread DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_set_unpremultiply_on_load_thread DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_set_flip_vertically_on_load DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_convert_iphone_png_to_rgb DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_set_unpremultiply_on_load DD 025051201H
+ DD 010d2312H
+ DD 07006001dH
+ DD 05005H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 036H
+ DB 0a8H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_16_bit_from_file DD 025053d19H
+ DD 010e2313H
+ DD 070070045H
+ DD 05006H
+ DD imagerel __GSHandlerCheck
+ DD 0218H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_is_16_bit_from_file$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_is_16_bit_from_file$rtcVarDesc DD 050H
+ DD 0e0H
+ DQ FLAT:stbi_is_16_bit_from_file$rtcName$0
+ ORG $+48
+stbi_is_16_bit_from_file$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_is_16_bit_from_file$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_16_bit DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0ccH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_info_from_file DD 025054c19H
+ DD 011d2322H
+ DD 070160045H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0218H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_info_from_file$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_info_from_file$rtcVarDesc DD 050H
+ DD 0e0H
+ DQ FLAT:stbi_info_from_file$rtcName$0
+ ORG $+48
+stbi_info_from_file$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_info_from_file$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_info DD 025052201H
+ DD 011d2322H
+ DD 070160025H
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 03bH
+ DB 086H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_16_bit_from_callbacks DD 025054219H
+ DD 01132318H
+ DD 0700c003dH
+ DD 0500bH
+ DD imagerel __GSHandlerCheck
+ DD 01d8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_is_16_bit_from_callbacks$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_is_16_bit_from_callbacks$rtcVarDesc DD 030H
+ DD 0e0H
+ DQ FLAT:stbi_is_16_bit_from_callbacks$rtcName$0
+ ORG $+48
+stbi_is_16_bit_from_callbacks$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_is_16_bit_from_callbacks$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 03aH
+ DB 085H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_16_bit_from_memory DD 025054119H
+ DD 01122317H
+ DD 0700b003dH
+ DD 0500aH
+ DD imagerel __GSHandlerCheck
+ DD 01d8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_is_16_bit_from_memory$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_is_16_bit_from_memory$rtcVarDesc DD 030H
+ DD 0e0H
+ DQ FLAT:stbi_is_16_bit_from_memory$rtcName$0
+ ORG $+48
+stbi_is_16_bit_from_memory$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_is_16_bit_from_memory$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0a5H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_info_from_callbacks DD 025054c19H
+ DD 011d2322H
+ DD 07016003dH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 01d8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_info_from_callbacks$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_info_from_callbacks$rtcVarDesc DD 030H
+ DD 0e0H
+ DQ FLAT:stbi_info_from_callbacks$rtcName$0
+ ORG $+48
+stbi_info_from_callbacks$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_info_from_callbacks$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 044H
+ DB 0a4H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_info_from_memory DD 025054b19H
+ DD 011c2321H
+ DD 07015003dH
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01d8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_info_from_memory$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_info_from_memory$rtcVarDesc DD 030H
+ DD 0e0H
+ DQ FLAT:stbi_info_from_memory$rtcName$0
+ ORG $+48
+stbi_info_from_memory$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_info_from_memory$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_image_free DD 025051301H
+ DD 010e2313H
+ DD 07007001dH
+ DD 05006H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_failure_reason DD 025050f01H
+ DD 010a230fH
+ DD 07003001dH
+ DD 05002H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 036H
+ DB 0a2H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_hdr_from_file DD 025053d19H
+ DD 010e2313H
+ DD 070070045H
+ DD 05006H
+ DD imagerel __GSHandlerCheck
+ DD 0218H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_is_hdr_from_file$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_is_hdr_from_file$rtcVarDesc DD 070H
+ DD 0e0H
+ DQ FLAT:stbi_is_hdr_from_file$rtcName$0
+ ORG $+48
+stbi_is_hdr_from_file$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_is_hdr_from_file$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_hdr DD 025051301H
+ DD 010e2313H
+ DD 070070025H
+ DD 05006H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 03aH
+ DB 085H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_hdr_from_memory DD 025054119H
+ DD 01122317H
+ DD 0700b003dH
+ DD 0500aH
+ DD imagerel __GSHandlerCheck
+ DD 01d8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_is_hdr_from_memory$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_is_hdr_from_memory$rtcVarDesc DD 030H
+ DD 0e0H
+ DQ FLAT:stbi_is_hdr_from_memory$rtcName$0
+ ORG $+48
+stbi_is_hdr_from_memory$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_is_hdr_from_memory$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 03bH
+ DB 086H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_is_hdr_from_callbacks DD 025054219H
+ DD 01132318H
+ DD 0700c003dH
+ DD 0500bH
+ DD imagerel __GSHandlerCheck
+ DD 01d8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_is_hdr_from_callbacks$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_is_hdr_from_callbacks$rtcVarDesc DD 030H
+ DD 0e0H
+ DQ FLAT:stbi_is_hdr_from_callbacks$rtcName$0
+ ORG $+48
+stbi_is_hdr_from_callbacks$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_is_hdr_from_callbacks$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_ldr_to_hdr_scale DD 025051401H
+ DD 010f2314H
+ DD 07008001dH
+ DD 05007H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_ldr_to_hdr_gamma DD 025051401H
+ DD 010f2314H
+ DD 07008001dH
+ DD 05007H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_hdr_to_ldr_scale DD 025051401H
+ DD 010f2314H
+ DD 07008001dH
+ DD 05007H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_hdr_to_ldr_gamma DD 025051401H
+ DD 010f2314H
+ DD 07008001dH
+ DD 05007H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0a8H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_loadf_from_file DD 035054c19H
+ DD 011d3322H
+ DD 07016003fH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 01e8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_loadf_from_file$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_loadf_from_file$rtcVarDesc DD 040H
+ DD 0e0H
+ DQ FLAT:stbi_loadf_from_file$rtcName$0
+ ORG $+48
+stbi_loadf_from_file$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_loadf_from_file$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_loadf DD 035052201H
+ DD 011d3322H
+ DD 070160027H
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0afH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_loadf_from_callbacks DD 035054c19H
+ DD 011d3322H
+ DD 07016003fH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 01e8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_loadf_from_callbacks$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_loadf_from_callbacks$rtcVarDesc DD 040H
+ DD 0e0H
+ DQ FLAT:stbi_loadf_from_callbacks$rtcName$0
+ ORG $+48
+stbi_loadf_from_callbacks$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_loadf_from_callbacks$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 044H
+ DB 0aeH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_loadf_from_memory DD 035054b19H
+ DD 011c3321H
+ DD 07015003fH
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01e8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_loadf_from_memory$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_loadf_from_memory$rtcVarDesc DD 040H
+ DD 0e0H
+ DQ FLAT:stbi_loadf_from_memory$rtcName$0
+ ORG $+48
+stbi_loadf_from_memory$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_loadf_from_memory$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0e3H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_from_file_16 DD 035054c19H
+ DD 011d3322H
+ DD 070160043H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0208H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_load_from_file_16$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_load_from_file_16$rtcVarDesc DD 060H
+ DD 0e0H
+ DQ FLAT:stbi_load_from_file_16$rtcName$0
+ ORG $+48
+stbi_load_from_file_16$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_load_from_file_16$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_16 DD 035052201H
+ DD 011d3322H
+ DD 070160027H
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0afH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_16_from_callbacks DD 035054c19H
+ DD 011d3322H
+ DD 07016003fH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 01e8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_load_16_from_callbacks$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_load_16_from_callbacks$rtcVarDesc DD 040H
+ DD 0e0H
+ DQ FLAT:stbi_load_16_from_callbacks$rtcName$0
+ ORG $+48
+stbi_load_16_from_callbacks$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_load_16_from_callbacks$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 044H
+ DB 0aeH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_16_from_memory DD 035054b19H
+ DD 011c3321H
+ DD 07015003fH
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01e8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_load_16_from_memory$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_load_16_from_memory$rtcVarDesc DD 040H
+ DD 0e0H
+ DQ FLAT:stbi_load_16_from_memory$rtcName$0
+ ORG $+48
+stbi_load_16_from_memory$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_load_16_from_memory$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 044H
+ DW 015cH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_gif_from_memory DD 045054b19H
+ DD 011c4321H
+ DD 070150045H
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 0218H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_load_gif_from_memory$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_load_gif_from_memory$rtcVarDesc DD 070H
+ DD 0e0H
+ DQ FLAT:stbi_load_gif_from_memory$rtcName$0
+ ORG $+48
+stbi_load_gif_from_memory$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_load_gif_from_memory$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0e3H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_from_file DD 035054c19H
+ DD 011d3322H
+ DD 070160043H
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 0208H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_load_from_file$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_load_from_file$rtcVarDesc DD 060H
+ DD 0e0H
+ DQ FLAT:stbi_load_from_file$rtcName$0
+ ORG $+48
+stbi_load_from_file$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_load_from_file$rtcVarDesc
+CONST ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load DD 035052201H
+ DD 011d3322H
+ DD 070160027H
+ DD 05015H
+xdata ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 045H
+ DB 0afH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_from_callbacks DD 035054c19H
+ DD 011d3322H
+ DD 07016003fH
+ DD 05015H
+ DD imagerel __GSHandlerCheck
+ DD 01e8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_load_from_callbacks$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_load_from_callbacks$rtcVarDesc DD 040H
+ DD 0e0H
+ DQ FLAT:stbi_load_from_callbacks$rtcName$0
+ ORG $+48
+stbi_load_from_callbacks$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_load_from_callbacks$rtcVarDesc
+CONST ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DB 044H
+ DB 0aeH
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$stbi_load_from_memory DD 035054b19H
+ DD 011c3321H
+ DD 07015003fH
+ DD 05014H
+ DD imagerel __GSHandlerCheck
+ DD 01e8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+stbi_load_from_memory$rtcName$0 DB 073H
+ DB 00H
+ ORG $+14
+stbi_load_from_memory$rtcVarDesc DD 040H
+ DD 0e0H
+ DQ FLAT:stbi_load_from_memory$rtcName$0
+ ORG $+48
+stbi_load_from_memory$rtcFrameData DD 01H
+ DD 00H
+ DQ FLAT:stbi_load_from_memory$rtcVarDesc
+CONST ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
+; COMDAT readLog
+_TEXT SEGMENT
+$T1 = 200
+readLog PROC ; COMDAT
+
+; 74 : {
+
+$LN5:
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0000f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
+ 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001b 90 npad 1
+
+; 75 : infolog[511] = '\0';
+
+ 0001c b8 01 00 00 00 mov eax, 1
+ 00021 48 69 c0 ff 01
+ 00 00 imul rax, rax, 511 ; 000001ffH
+ 00028 48 89 85 c8 00
+ 00 00 mov QWORD PTR $T1[rbp], rax
+ 0002f 48 81 bd c8 00
+ 00 00 00 02 00
+ 00 cmp QWORD PTR $T1[rbp], 512 ; 00000200H
+ 0003a 73 02 jae SHORT $LN3@readLog
+ 0003c eb 06 jmp SHORT $LN4@readLog
+$LN3@readLog:
+ 0003e e8 00 00 00 00 call __report_rangecheckfailure
+ 00043 90 npad 1
+$LN4@readLog:
+ 00044 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:infolog
+ 0004b 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR $T1[rbp]
+ 00052 c6 04 08 00 mov BYTE PTR [rax+rcx], 0
+
+; 76 : return infolog;
+
+ 00056 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:infolog
+$LN2@readLog:
+
+; 77 : }
+
+ 0005d 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00064 5f pop rdi
+ 00065 5d pop rbp
+ 00066 c3 ret 0
+readLog ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
+; COMDAT unloadImageData
+_TEXT SEGMENT
+out$ = 224
+unloadImageData PROC ; COMDAT
+
+; 69 : {
+
+$LN3:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 70 : free(out->pixelPtr);
+
+ 00020 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 00027 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
+ 0002b ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00031 90 npad 1
+
+; 71 : }
+
+ 00032 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00039 5f pop rdi
+ 0003a 5d pop rbp
+ 0003b c3 ret 0
+unloadImageData ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
+; COMDAT loadGlfuncDefault
+_TEXT SEGMENT
+ret$ = 8
+i$1 = 40
+procName$ = 288
+loadGlfuncDefault PROC ; COMDAT
+
+; 34 : {
+
+$LN7:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 35 : void *ret = glfwGetProcAddress(procName);
+
+ 00020 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR procName$[rbp]
+ 00027 e8 00 00 00 00 call glfwGetProcAddress
+ 0002c 48 89 45 08 mov QWORD PTR ret$[rbp], rax
+
+; 36 : // printf("%llu\n", (uint64_t)ret);
+; 37 : if (ret == NULL) {
+
+ 00030 48 83 7d 08 00 cmp QWORD PTR ret$[rbp], 0
+ 00035 75 5b jne SHORT $LN5@loadGlfunc
+
+; 38 : strcpy_s(infolog, 30, "Failed to load OpenGL api:");
+
+ 00037 4c 8d 05 00 00
+ 00 00 lea r8, OFFSET FLAT:??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@
+ 0003e ba 1e 00 00 00 mov edx, 30
+ 00043 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:infolog
+ 0004a ff 15 00 00 00
+ 00 call QWORD PTR __imp_strcpy_s
+ 00050 90 npad 1
+
+; 39 : for (size_t i = 0; i < sizeof(procName); i++) {
+
+ 00051 48 c7 45 28 00
+ 00 00 00 mov QWORD PTR i$1[rbp], 0
+ 00059 eb 0b jmp SHORT $LN4@loadGlfunc
+$LN2@loadGlfunc:
+ 0005b 48 8b 45 28 mov rax, QWORD PTR i$1[rbp]
+ 0005f 48 ff c0 inc rax
+ 00062 48 89 45 28 mov QWORD PTR i$1[rbp], rax
+$LN4@loadGlfunc:
+ 00066 48 83 7d 28 08 cmp QWORD PTR i$1[rbp], 8
+ 0006b 73 25 jae SHORT $LN3@loadGlfunc
+
+; 40 : infolog[30 + i] = procName[i];
+
+ 0006d 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:infolog
+ 00074 48 8b 4d 28 mov rcx, QWORD PTR i$1[rbp]
+ 00078 48 8b 95 20 01
+ 00 00 mov rdx, QWORD PTR procName$[rbp]
+ 0007f 48 03 d1 add rdx, rcx
+ 00082 48 8b ca mov rcx, rdx
+ 00085 48 8b 55 28 mov rdx, QWORD PTR i$1[rbp]
+ 00089 0f b6 09 movzx ecx, BYTE PTR [rcx]
+ 0008c 88 4c 10 1e mov BYTE PTR [rax+rdx+30], cl
+
+; 41 : }
+
+ 00090 eb c9 jmp SHORT $LN2@loadGlfunc
+$LN3@loadGlfunc:
+$LN5@loadGlfunc:
+
+; 42 : //printf("%s\n", infolog);
+; 43 : }
+; 44 : return (GLFWglproc)ret;
+
+ 00092 48 8b 45 08 mov rax, QWORD PTR ret$[rbp]
+
+; 45 : }
+
+ 00096 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 0009d 5f pop rdi
+ 0009e 5d pop rbp
+ 0009f c3 ret 0
+loadGlfuncDefault ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
+; COMDAT loadImageData
+_TEXT SEGMENT
+location$ = 224
+out$ = 232
+loader$ = 240
+loadImageData PROC ; COMDAT
+
+; 62 : {
+
+$LN4:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 63 : if (loader == NULL) {
+
+ 0002a 48 83 bd f0 00
+ 00 00 00 cmp QWORD PTR loader$[rbp], 0
+ 00032 75 0e jne SHORT $LN2@loadImageD
+
+; 64 : loader = stbi_load;
+
+ 00034 48 8d 05 00 00
+ 00 00 lea rax, OFFSET FLAT:stbi_load
+ 0003b 48 89 85 f0 00
+ 00 00 mov QWORD PTR loader$[rbp], rax
+$LN2@loadImageD:
+
+; 65 : }
+; 66 : out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0);
+
+ 00042 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 00049 48 83 c0 08 add rax, 8
+ 0004d 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00054 48 83 c1 04 add rcx, 4
+ 00058 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 0005f c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 00067 4c 8b c8 mov r9, rax
+ 0006a 4c 8b c1 mov r8, rcx
+ 0006d 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR location$[rbp]
+ 00074 ff 95 f0 00 00
+ 00 call QWORD PTR loader$[rbp]
+ 0007a 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00081 48 89 41 10 mov QWORD PTR [rcx+16], rax
+
+; 67 : }
+
+ 00085 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0008c 5f pop rdi
+ 0008d 5d pop rbp
+ 0008e c3 ret 0
+loadImageData ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
+; COMDAT linkShaderProgram
+_TEXT SEGMENT
+success$ = 4
+__$ArrayPad$ = 216
+context$ = 256
+shaderProgram$ = 264
+linkShaderProgram PROC ; COMDAT
+
+; 48 : {
+
+$LN5:
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001c b9 0a 00 00 00 mov ecx, 10
+ 00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00026 f3 ab rep stosd
+ 00028 48 8b 8c 24 28
+ 01 00 00 mov rcx, QWORD PTR [rsp+296]
+ 00030 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00037 48 33 c5 xor rax, rbp
+ 0003a 48 89 85 d8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00041 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
+ 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004d 90 npad 1
+
+; 49 : context->LinkProgram(shaderProgram);
+
+ 0004e 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR shaderProgram$[rbp]
+ 00054 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 0005b ff 90 70 0a 00
+ 00 call QWORD PTR [rax+2672]
+ 00061 90 npad 1
+
+; 50 :
+; 51 : int success;
+; 52 : context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
+
+ 00062 4c 8d 45 04 lea r8, QWORD PTR success$[rbp]
+ 00066 ba 82 8b 00 00 mov edx, 35714 ; 00008b82H
+ 0006b 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR shaderProgram$[rbp]
+ 00071 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 00078 ff 90 90 07 00
+ 00 call QWORD PTR [rax+1936]
+ 0007e 90 npad 1
+
+; 53 : if (!success) {
+
+ 0007f 83 7d 04 00 cmp DWORD PTR success$[rbp], 0
+ 00083 75 29 jne SHORT $LN2@linkShader
+
+; 54 : context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog);
+
+ 00085 4c 8d 0d 00 00
+ 00 00 lea r9, OFFSET FLAT:infolog
+ 0008c 45 33 c0 xor r8d, r8d
+ 0008f ba 00 02 00 00 mov edx, 512 ; 00000200H
+ 00094 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR shaderProgram$[rbp]
+ 0009a 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 000a1 ff 90 40 07 00
+ 00 call QWORD PTR [rax+1856]
+ 000a7 90 npad 1
+
+; 55 : return 0;
+
+ 000a8 33 c0 xor eax, eax
+ 000aa eb 08 jmp SHORT $LN1@linkShader
+
+; 56 : } else {
+
+ 000ac eb 06 jmp SHORT $LN3@linkShader
+$LN2@linkShader:
+
+; 57 : return shaderProgram;
+
+ 000ae 8b 85 08 01 00
+ 00 mov eax, DWORD PTR shaderProgram$[rbp]
+$LN3@linkShader:
+$LN1@linkShader:
+
+; 58 : }
+; 59 : }
+
+ 000b4 48 8b f8 mov rdi, rax
+ 000b7 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 000bb 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:linkShaderProgram$rtcFrameData
+ 000c2 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000c7 48 8b c7 mov rax, rdi
+ 000ca 48 8b 8d d8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000d1 48 33 cd xor rcx, rbp
+ 000d4 e8 00 00 00 00 call __security_check_cookie
+ 000d9 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000e0 5f pop rdi
+ 000e1 5d pop rbp
+ 000e2 c3 ret 0
+linkShaderProgram ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
+; COMDAT initGL
+_TEXT SEGMENT
+majorVersion$ = 224
+minorVersion$ = 232
+initGL PROC ; COMDAT
+
+; 26 : {
+
+$LN3:
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00008 55 push rbp
+ 00009 57 push rdi
+ 0000a 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00016 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
+ 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00022 90 npad 1
+
+; 27 : glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion);
+
+ 00023 8b 95 e0 00 00
+ 00 mov edx, DWORD PTR majorVersion$[rbp]
+ 00029 b9 02 20 02 00 mov ecx, 139266 ; 00022002H
+ 0002e e8 00 00 00 00 call glfwWindowHint
+ 00033 90 npad 1
+
+; 28 : glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion);
+
+ 00034 8b 95 e8 00 00
+ 00 mov edx, DWORD PTR minorVersion$[rbp]
+ 0003a b9 03 20 02 00 mov ecx, 139267 ; 00022003H
+ 0003f e8 00 00 00 00 call glfwWindowHint
+ 00044 90 npad 1
+
+; 29 : glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
+
+ 00045 ba 01 20 03 00 mov edx, 204801 ; 00032001H
+ 0004a b9 08 20 02 00 mov ecx, 139272 ; 00022008H
+ 0004f e8 00 00 00 00 call glfwWindowHint
+ 00054 90 npad 1
+
+; 30 : glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
+
+ 00055 ba 01 00 00 00 mov edx, 1
+ 0005a b9 03 00 02 00 mov ecx, 131075 ; 00020003H
+ 0005f e8 00 00 00 00 call glfwWindowHint
+ 00064 90 npad 1
+
+; 31 : }
+
+ 00065 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0006c 5f pop rdi
+ 0006d 5d pop rbp
+ 0006e c3 ret 0
+initGL ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\sn_native.c
+; COMDAT glCheckShaderStat
+_TEXT SEGMENT
+stat$ = 4
+__$ArrayPad$ = 216
+context$ = 256
+shaderHandle$ = 264
+key$ = 272
+logRef$ = 280
+glCheckShaderStat PROC ; COMDAT
+
+; 15 : {
+
+$LN4:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 0a 00 00 00 mov ecx, 10
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 28
+ 01 00 00 mov rcx, QWORD PTR [rsp+296]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 d8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__73BBCC60_sn_native@c
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 16 : int stat = 0;
+
+ 00059 c7 45 04 00 00
+ 00 00 mov DWORD PTR stat$[rbp], 0
+
+; 17 : context->GetShaderiv(shaderHandle, key, &stat);
+
+ 00060 4c 8d 45 04 lea r8, QWORD PTR stat$[rbp]
+ 00064 8b 95 10 01 00
+ 00 mov edx, DWORD PTR key$[rbp]
+ 0006a 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR shaderHandle$[rbp]
+ 00070 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 00077 ff 90 28 08 00
+ 00 call QWORD PTR [rax+2088]
+ 0007d 90 npad 1
+
+; 18 : if (!stat) {
+
+ 0007e 83 7d 04 00 cmp DWORD PTR stat$[rbp], 0
+ 00082 75 23 jne SHORT $LN2@glCheckSha
+
+; 19 : context->GetShaderInfoLog(shaderHandle, 512, NULL, infolog);
+
+ 00084 4c 8d 0d 00 00
+ 00 00 lea r9, OFFSET FLAT:infolog
+ 0008b 45 33 c0 xor r8d, r8d
+ 0008e ba 00 02 00 00 mov edx, 512 ; 00000200H
+ 00093 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR shaderHandle$[rbp]
+ 00099 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR context$[rbp]
+ 000a0 ff 90 10 08 00
+ 00 call QWORD PTR [rax+2064]
+ 000a6 90 npad 1
+$LN2@glCheckSha:
+
+; 20 : }
+; 21 : *logRef = infolog;
+
+ 000a7 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR logRef$[rbp]
+ 000ae 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:infolog
+ 000b5 48 89 08 mov QWORD PTR [rax], rcx
+
+; 22 : return stat;
+
+ 000b8 8b 45 04 mov eax, DWORD PTR stat$[rbp]
+
+; 23 : }
+
+ 000bb 8b f8 mov edi, eax
+ 000bd 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 000c1 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:glCheckShaderStat$rtcFrameData
+ 000c8 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000cd 8b c7 mov eax, edi
+ 000cf 48 8b 8d d8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000d6 48 33 cd xor rcx, rbp
+ 000d9 e8 00 00 00 00 call __security_check_cookie
+ 000de 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000e5 5f pop rdi
+ 000e6 5d pop rbp
+ 000e7 c3 ret 0
+glCheckShaderStat ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__is_16_main
+_TEXT SEGMENT
+s$ = 224
+stbi__is_16_main PROC ; COMDAT
+
+; 8610 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 8611 : #ifndef STBI_NO_PNG
+; 8612 : if (stbi__png_is16(s))
+
+ 00020 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__png_is16
+ 0002c 85 c0 test eax, eax
+ 0002e 74 07 je SHORT $LN2@stbi__is_1
+
+; 8613 : return 1;
+
+ 00030 b8 01 00 00 00 mov eax, 1
+ 00035 eb 30 jmp SHORT $LN1@stbi__is_1
+$LN2@stbi__is_1:
+
+; 8614 : #endif
+; 8615 :
+; 8616 : #ifndef STBI_NO_PSD
+; 8617 : if (stbi__psd_is16(s))
+
+ 00037 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0003e e8 00 00 00 00 call stbi__psd_is16
+ 00043 85 c0 test eax, eax
+ 00045 74 07 je SHORT $LN3@stbi__is_1
+
+; 8618 : return 1;
+
+ 00047 b8 01 00 00 00 mov eax, 1
+ 0004c eb 19 jmp SHORT $LN1@stbi__is_1
+$LN3@stbi__is_1:
+
+; 8619 : #endif
+; 8620 :
+; 8621 : #ifndef STBI_NO_PNM
+; 8622 : if (stbi__pnm_is16(s))
+
+ 0004e 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00055 e8 00 00 00 00 call stbi__pnm_is16
+ 0005a 85 c0 test eax, eax
+ 0005c 74 07 je SHORT $LN4@stbi__is_1
+
+; 8623 : return 1;
+
+ 0005e b8 01 00 00 00 mov eax, 1
+ 00063 eb 02 jmp SHORT $LN1@stbi__is_1
+$LN4@stbi__is_1:
+
+; 8624 : #endif
+; 8625 : return 0;
+
+ 00065 33 c0 xor eax, eax
+$LN1@stbi__is_1:
+
+; 8626 : }
+
+ 00067 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0006e 5f pop rdi
+ 0006f 5d pop rbp
+ 00070 c3 ret 0
+stbi__is_16_main ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__info_main
+_TEXT SEGMENT
+s$ = 224
+x$ = 232
+y$ = 240
+comp$ = 248
+stbi__info_main PROC ; COMDAT
+
+; 8560 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 8561 : #ifndef STBI_NO_JPEG
+; 8562 : if (stbi__jpeg_info(s, x, y, comp))
+
+ 0002f 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00036 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0003d 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00044 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004b e8 00 00 00 00 call stbi__jpeg_info
+ 00050 85 c0 test eax, eax
+ 00052 74 0a je SHORT $LN2@stbi__info
+
+; 8563 : return 1;
+
+ 00054 b8 01 00 00 00 mov eax, 1
+ 00059 e9 7b 01 00 00 jmp $LN1@stbi__info
+$LN2@stbi__info:
+
+; 8564 : #endif
+; 8565 :
+; 8566 : #ifndef STBI_NO_PNG
+; 8567 : if (stbi__png_info(s, x, y, comp))
+
+ 0005e 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00065 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0006c 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00073 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0007a e8 00 00 00 00 call stbi__png_info
+ 0007f 85 c0 test eax, eax
+ 00081 74 0a je SHORT $LN3@stbi__info
+
+; 8568 : return 1;
+
+ 00083 b8 01 00 00 00 mov eax, 1
+ 00088 e9 4c 01 00 00 jmp $LN1@stbi__info
+$LN3@stbi__info:
+
+; 8569 : #endif
+; 8570 :
+; 8571 : #ifndef STBI_NO_GIF
+; 8572 : if (stbi__gif_info(s, x, y, comp))
+
+ 0008d 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00094 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0009b 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 000a2 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a9 e8 00 00 00 00 call stbi__gif_info
+ 000ae 85 c0 test eax, eax
+ 000b0 74 0a je SHORT $LN4@stbi__info
+
+; 8573 : return 1;
+
+ 000b2 b8 01 00 00 00 mov eax, 1
+ 000b7 e9 1d 01 00 00 jmp $LN1@stbi__info
+$LN4@stbi__info:
+
+; 8574 : #endif
+; 8575 :
+; 8576 : #ifndef STBI_NO_BMP
+; 8577 : if (stbi__bmp_info(s, x, y, comp))
+
+ 000bc 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 000c3 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 000ca 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 000d1 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000d8 e8 00 00 00 00 call stbi__bmp_info
+ 000dd 85 c0 test eax, eax
+ 000df 74 0a je SHORT $LN5@stbi__info
+
+; 8578 : return 1;
+
+ 000e1 b8 01 00 00 00 mov eax, 1
+ 000e6 e9 ee 00 00 00 jmp $LN1@stbi__info
+$LN5@stbi__info:
+
+; 8579 : #endif
+; 8580 :
+; 8581 : #ifndef STBI_NO_PSD
+; 8582 : if (stbi__psd_info(s, x, y, comp))
+
+ 000eb 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 000f2 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 000f9 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00100 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00107 e8 00 00 00 00 call stbi__psd_info
+ 0010c 85 c0 test eax, eax
+ 0010e 74 0a je SHORT $LN6@stbi__info
+
+; 8583 : return 1;
+
+ 00110 b8 01 00 00 00 mov eax, 1
+ 00115 e9 bf 00 00 00 jmp $LN1@stbi__info
+$LN6@stbi__info:
+
+; 8584 : #endif
+; 8585 :
+; 8586 : #ifndef STBI_NO_PIC
+; 8587 : if (stbi__pic_info(s, x, y, comp))
+
+ 0011a 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00121 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00128 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0012f 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00136 e8 00 00 00 00 call stbi__pic_info
+ 0013b 85 c0 test eax, eax
+ 0013d 74 0a je SHORT $LN7@stbi__info
+
+; 8588 : return 1;
+
+ 0013f b8 01 00 00 00 mov eax, 1
+ 00144 e9 90 00 00 00 jmp $LN1@stbi__info
+$LN7@stbi__info:
+
+; 8589 : #endif
+; 8590 :
+; 8591 : #ifndef STBI_NO_PNM
+; 8592 : if (stbi__pnm_info(s, x, y, comp))
+
+ 00149 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00150 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00157 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0015e 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00165 e8 00 00 00 00 call stbi__pnm_info
+ 0016a 85 c0 test eax, eax
+ 0016c 74 07 je SHORT $LN8@stbi__info
+
+; 8593 : return 1;
+
+ 0016e b8 01 00 00 00 mov eax, 1
+ 00173 eb 64 jmp SHORT $LN1@stbi__info
+$LN8@stbi__info:
+
+; 8594 : #endif
+; 8595 :
+; 8596 : #ifndef STBI_NO_HDR
+; 8597 : if (stbi__hdr_info(s, x, y, comp))
+
+ 00175 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0017c 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00183 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0018a 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00191 e8 00 00 00 00 call stbi__hdr_info
+ 00196 85 c0 test eax, eax
+ 00198 74 07 je SHORT $LN9@stbi__info
+
+; 8598 : return 1;
+
+ 0019a b8 01 00 00 00 mov eax, 1
+ 0019f eb 38 jmp SHORT $LN1@stbi__info
+$LN9@stbi__info:
+
+; 8599 : #endif
+; 8600 :
+; 8601 : // test tga last because it's a crappy test!
+; 8602 : #ifndef STBI_NO_TGA
+; 8603 : if (stbi__tga_info(s, x, y, comp))
+
+ 001a1 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 001a8 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 001af 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 001b6 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001bd e8 00 00 00 00 call stbi__tga_info
+ 001c2 85 c0 test eax, eax
+ 001c4 74 07 je SHORT $LN10@stbi__info
+
+; 8604 : return 1;
+
+ 001c6 b8 01 00 00 00 mov eax, 1
+ 001cb eb 0c jmp SHORT $LN1@stbi__info
+$LN10@stbi__info:
+
+; 8605 : #endif
+; 8606 : return stbi__err("unknown image type", "Image not of any known type, or corrupt");
+
+ 001cd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@CBEDEJPH@unknown?5image?5type@
+ 001d4 e8 00 00 00 00 call stbi__err
+$LN1@stbi__info:
+
+; 8607 : }
+
+ 001d9 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 001e0 5f pop rdi
+ 001e1 5d pop rbp
+ 001e2 c3 ret 0
+stbi__info_main ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_getinteger
+_TEXT SEGMENT
+value$ = 4
+s$ = 256
+c$ = 264
+stbi__pnm_getinteger PROC ; COMDAT
+
+; 8489 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 8490 : int value = 0;
+
+ 00025 c7 45 04 00 00
+ 00 00 mov DWORD PTR value$[rbp], 0
+$LN2@stbi__pnm_:
+
+; 8491 :
+; 8492 : while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) {
+
+ 0002c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00033 e8 00 00 00 00 call stbi__at_eof
+ 00038 85 c0 test eax, eax
+ 0003a 75 6e jne SHORT $LN3@stbi__pnm_
+ 0003c 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR c$[rbp]
+ 00043 0f b6 08 movzx ecx, BYTE PTR [rax]
+ 00046 e8 00 00 00 00 call stbi__pnm_isdigit
+ 0004b 85 c0 test eax, eax
+ 0004d 74 5b je SHORT $LN3@stbi__pnm_
+
+; 8493 : value = value * 10 + (*c - '0');
+
+ 0004f 6b 45 04 0a imul eax, DWORD PTR value$[rbp], 10
+ 00053 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR c$[rbp]
+ 0005a 0f be 09 movsx ecx, BYTE PTR [rcx]
+ 0005d 8d 44 08 d0 lea eax, DWORD PTR [rax+rcx-48]
+ 00061 89 45 04 mov DWORD PTR value$[rbp], eax
+
+; 8494 : *c = (char)stbi__get8(s);
+
+ 00064 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__get8
+ 00070 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR c$[rbp]
+ 00077 88 01 mov BYTE PTR [rcx], al
+
+; 8495 : if ((value > 214748364) || (value == 214748364 && *c > '7'))
+
+ 00079 81 7d 04 cc cc
+ cc 0c cmp DWORD PTR value$[rbp], 214748364 ; 0cccccccH
+ 00080 7f 18 jg SHORT $LN5@stbi__pnm_
+ 00082 81 7d 04 cc cc
+ cc 0c cmp DWORD PTR value$[rbp], 214748364 ; 0cccccccH
+ 00089 75 1d jne SHORT $LN4@stbi__pnm_
+ 0008b 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR c$[rbp]
+ 00092 0f be 00 movsx eax, BYTE PTR [rax]
+ 00095 83 f8 37 cmp eax, 55 ; 00000037H
+ 00098 7e 0e jle SHORT $LN4@stbi__pnm_
+$LN5@stbi__pnm_:
+
+; 8496 : return stbi__err(
+
+ 0009a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BH@OBINMOBC@integer?5parse?5overflow@
+ 000a1 e8 00 00 00 00 call stbi__err
+ 000a6 eb 05 jmp SHORT $LN1@stbi__pnm_
+$LN4@stbi__pnm_:
+
+; 8497 : "integer parse overflow",
+; 8498 : "Parsing an integer in the PPM header overflowed a 32-bit int");
+; 8499 : }
+
+ 000a8 eb 82 jmp SHORT $LN2@stbi__pnm_
+$LN3@stbi__pnm_:
+
+; 8500 :
+; 8501 : return value;
+
+ 000aa 8b 45 04 mov eax, DWORD PTR value$[rbp]
+$LN1@stbi__pnm_:
+
+; 8502 : }
+
+ 000ad 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000b4 5f pop rdi
+ 000b5 5d pop rbp
+ 000b6 c3 ret 0
+stbi__pnm_getinteger ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_isdigit
+_TEXT SEGMENT
+tv68 = 192
+c$ = 240
+stbi__pnm_isdigit PROC ; COMDAT
+
+; 8484 : {
+
+ 00000 88 4c 24 08 mov BYTE PTR [rsp+8], cl
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 8485 : return c >= '0' && c <= '9';
+
+ 0001f 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 00026 83 f8 30 cmp eax, 48 ; 00000030H
+ 00029 7c 18 jl SHORT $LN3@stbi__pnm_
+ 0002b 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 00032 83 f8 39 cmp eax, 57 ; 00000039H
+ 00035 7f 0c jg SHORT $LN3@stbi__pnm_
+ 00037 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
+ 00041 eb 0a jmp SHORT $LN4@stbi__pnm_
+$LN3@stbi__pnm_:
+ 00043 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
+$LN4@stbi__pnm_:
+ 0004d 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv68[rbp]
+
+; 8486 : }
+
+ 00053 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 0005a 5f pop rdi
+ 0005b 5d pop rbp
+ 0005c c3 ret 0
+stbi__pnm_isdigit ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_skip_whitespace
+_TEXT SEGMENT
+s$ = 224
+c$ = 232
+stbi__pnm_skip_whitespace PROC ; COMDAT
+
+; 8470 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+$LN2@stbi__pnm_:
+$LN5@stbi__pnm_:
+
+; 8471 : for (;;) {
+; 8472 : while (!stbi__at_eof(s) && stbi__pnm_isspace(*c))
+
+ 00025 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002c e8 00 00 00 00 call stbi__at_eof
+ 00031 85 c0 test eax, eax
+ 00033 75 2a jne SHORT $LN6@stbi__pnm_
+ 00035 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR c$[rbp]
+ 0003c 0f b6 08 movzx ecx, BYTE PTR [rax]
+ 0003f e8 00 00 00 00 call stbi__pnm_isspace
+ 00044 85 c0 test eax, eax
+ 00046 74 17 je SHORT $LN6@stbi__pnm_
+
+; 8473 : *c = (char)stbi__get8(s);
+
+ 00048 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004f e8 00 00 00 00 call stbi__get8
+ 00054 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR c$[rbp]
+ 0005b 88 01 mov BYTE PTR [rcx], al
+ 0005d eb c6 jmp SHORT $LN5@stbi__pnm_
+$LN6@stbi__pnm_:
+
+; 8474 :
+; 8475 : if (stbi__at_eof(s) || *c != '#')
+
+ 0005f 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00066 e8 00 00 00 00 call stbi__at_eof
+ 0006b 85 c0 test eax, eax
+ 0006d 75 0f jne SHORT $LN10@stbi__pnm_
+ 0006f 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR c$[rbp]
+ 00076 0f be 00 movsx eax, BYTE PTR [rax]
+ 00079 83 f8 23 cmp eax, 35 ; 00000023H
+ 0007c 74 02 je SHORT $LN9@stbi__pnm_
+$LN10@stbi__pnm_:
+
+; 8476 : break;
+
+ 0007e eb 4a jmp SHORT $LN3@stbi__pnm_
+$LN9@stbi__pnm_:
+$LN7@stbi__pnm_:
+
+; 8477 :
+; 8478 : while (!stbi__at_eof(s) && *c != '\n' && *c != '\r')
+
+ 00080 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00087 e8 00 00 00 00 call stbi__at_eof
+ 0008c 85 c0 test eax, eax
+ 0008e 75 35 jne SHORT $LN8@stbi__pnm_
+ 00090 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR c$[rbp]
+ 00097 0f be 00 movsx eax, BYTE PTR [rax]
+ 0009a 83 f8 0a cmp eax, 10
+ 0009d 74 26 je SHORT $LN8@stbi__pnm_
+ 0009f 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR c$[rbp]
+ 000a6 0f be 00 movsx eax, BYTE PTR [rax]
+ 000a9 83 f8 0d cmp eax, 13
+ 000ac 74 17 je SHORT $LN8@stbi__pnm_
+
+; 8479 : *c = (char)stbi__get8(s);
+
+ 000ae 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000b5 e8 00 00 00 00 call stbi__get8
+ 000ba 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR c$[rbp]
+ 000c1 88 01 mov BYTE PTR [rcx], al
+ 000c3 eb bb jmp SHORT $LN7@stbi__pnm_
+$LN8@stbi__pnm_:
+
+; 8480 : }
+
+ 000c5 e9 5b ff ff ff jmp $LN2@stbi__pnm_
+$LN3@stbi__pnm_:
+
+; 8481 : }
+
+ 000ca 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 000d1 5f pop rdi
+ 000d2 5d pop rbp
+ 000d3 c3 ret 0
+stbi__pnm_skip_whitespace ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_isspace
+_TEXT SEGMENT
+tv76 = 192
+c$ = 240
+stbi__pnm_isspace PROC ; COMDAT
+
+; 8465 : {
+
+ 00000 88 4c 24 08 mov BYTE PTR [rsp+8], cl
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 8466 : return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
+
+ 0001f 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 00026 83 f8 20 cmp eax, 32 ; 00000020H
+ 00029 74 48 je SHORT $LN3@stbi__pnm_
+ 0002b 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 00032 83 f8 09 cmp eax, 9
+ 00035 74 3c je SHORT $LN3@stbi__pnm_
+ 00037 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 0003e 83 f8 0a cmp eax, 10
+ 00041 74 30 je SHORT $LN3@stbi__pnm_
+ 00043 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 0004a 83 f8 0b cmp eax, 11
+ 0004d 74 24 je SHORT $LN3@stbi__pnm_
+ 0004f 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 00056 83 f8 0c cmp eax, 12
+ 00059 74 18 je SHORT $LN3@stbi__pnm_
+ 0005b 0f be 85 f0 00
+ 00 00 movsx eax, BYTE PTR c$[rbp]
+ 00062 83 f8 0d cmp eax, 13
+ 00065 74 0c je SHORT $LN3@stbi__pnm_
+ 00067 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv76[rbp], 0
+ 00071 eb 0a jmp SHORT $LN4@stbi__pnm_
+$LN3@stbi__pnm_:
+ 00073 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv76[rbp], 1
+$LN4@stbi__pnm_:
+ 0007d 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv76[rbp]
+
+; 8467 : }
+
+ 00083 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 0008a 5f pop rdi
+ 0008b 5d pop rbp
+ 0008c c3 ret 0
+stbi__pnm_isspace ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__hdr_convert
+_TEXT SEGMENT
+f1$1 = 4
+tv152 = 212
+output$ = 256
+input$ = 264
+req_comp$ = 272
+stbi__hdr_convert PROC ; COMDAT
+
+; 7996 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 7997 : if (input[3] != 0) {
+
+ 0002a b8 01 00 00 00 mov eax, 1
+ 0002f 48 6b c0 03 imul rax, rax, 3
+ 00033 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR input$[rbp]
+ 0003a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0003e 85 c0 test eax, eax
+ 00040 0f 84 8d 01 00
+ 00 je $LN4@stbi__hdr_
+
+; 7998 : float f1;
+; 7999 : // Exponent
+; 8000 : f1 = (float)ldexp(1.0f, input[3] - (int)(128 + 8));
+
+ 00046 b8 01 00 00 00 mov eax, 1
+ 0004b 48 6b c0 03 imul rax, rax, 3
+ 0004f 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR input$[rbp]
+ 00056 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0005a 2d 88 00 00 00 sub eax, 136 ; 00000088H
+ 0005f 8b d0 mov edx, eax
+ 00061 f2 0f 10 05 00
+ 00 00 00 movsd xmm0, QWORD PTR __real@3ff0000000000000
+ 00069 ff 15 00 00 00
+ 00 call QWORD PTR __imp_ldexp
+ 0006f f2 0f 5a c0 cvtsd2ss xmm0, xmm0
+ 00073 f3 0f 11 45 04 movss DWORD PTR f1$1[rbp], xmm0
+
+; 8001 : if (req_comp <= 2)
+
+ 00078 83 bd 10 01 00
+ 00 02 cmp DWORD PTR req_comp$[rbp], 2
+ 0007f 7f 6b jg SHORT $LN6@stbi__hdr_
+
+; 8002 : output[0] = (input[0] + input[1] + input[2]) * f1 / 3;
+
+ 00081 b8 01 00 00 00 mov eax, 1
+ 00086 48 6b c0 00 imul rax, rax, 0
+ 0008a 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR input$[rbp]
+ 00091 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00095 b9 01 00 00 00 mov ecx, 1
+ 0009a 48 6b c9 01 imul rcx, rcx, 1
+ 0009e 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR input$[rbp]
+ 000a5 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000a9 03 c1 add eax, ecx
+ 000ab b9 01 00 00 00 mov ecx, 1
+ 000b0 48 6b c9 02 imul rcx, rcx, 2
+ 000b4 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR input$[rbp]
+ 000bb 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000bf 03 c1 add eax, ecx
+ 000c1 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 000c5 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
+ 000ca f3 0f 5e 05 00
+ 00 00 00 divss xmm0, DWORD PTR __real@40400000
+ 000d2 b8 04 00 00 00 mov eax, 4
+ 000d7 48 6b c0 00 imul rax, rax, 0
+ 000db 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 000e2 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+ 000e7 e9 96 00 00 00 jmp $LN7@stbi__hdr_
+$LN6@stbi__hdr_:
+
+; 8003 : else {
+; 8004 : output[0] = input[0] * f1;
+
+ 000ec b8 01 00 00 00 mov eax, 1
+ 000f1 48 6b c0 00 imul rax, rax, 0
+ 000f5 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR input$[rbp]
+ 000fc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00100 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00104 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
+ 00109 b8 04 00 00 00 mov eax, 4
+ 0010e 48 6b c0 00 imul rax, rax, 0
+ 00112 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 00119 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+
+; 8005 : output[1] = input[1] * f1;
+
+ 0011e b8 01 00 00 00 mov eax, 1
+ 00123 48 6b c0 01 imul rax, rax, 1
+ 00127 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR input$[rbp]
+ 0012e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00132 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00136 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
+ 0013b b8 04 00 00 00 mov eax, 4
+ 00140 48 6b c0 01 imul rax, rax, 1
+ 00144 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 0014b f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+
+; 8006 : output[2] = input[2] * f1;
+
+ 00150 b8 01 00 00 00 mov eax, 1
+ 00155 48 6b c0 02 imul rax, rax, 2
+ 00159 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR input$[rbp]
+ 00160 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00164 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00168 f3 0f 59 45 04 mulss xmm0, DWORD PTR f1$1[rbp]
+ 0016d b8 04 00 00 00 mov eax, 4
+ 00172 48 6b c0 02 imul rax, rax, 2
+ 00176 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 0017d f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+$LN7@stbi__hdr_:
+
+; 8007 : }
+; 8008 : if (req_comp == 2)
+
+ 00182 83 bd 10 01 00
+ 00 02 cmp DWORD PTR req_comp$[rbp], 2
+ 00189 75 1d jne SHORT $LN8@stbi__hdr_
+
+; 8009 : output[1] = 1;
+
+ 0018b b8 04 00 00 00 mov eax, 4
+ 00190 48 6b c0 01 imul rax, rax, 1
+ 00194 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 0019b f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 001a3 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+$LN8@stbi__hdr_:
+
+; 8010 : if (req_comp == 4)
+
+ 001a8 83 bd 10 01 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 001af 75 1d jne SHORT $LN9@stbi__hdr_
+
+; 8011 : output[3] = 1;
+
+ 001b1 b8 04 00 00 00 mov eax, 4
+ 001b6 48 6b c0 03 imul rax, rax, 3
+ 001ba 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 001c1 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 001c9 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+$LN9@stbi__hdr_:
+
+; 8012 : } else {
+
+ 001ce e9 d5 00 00 00 jmp $LN5@stbi__hdr_
+$LN4@stbi__hdr_:
+
+; 8013 : switch (req_comp) {
+
+ 001d3 8b 85 10 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 001d9 89 85 d4 00 00
+ 00 mov DWORD PTR tv152[rbp], eax
+ 001df 83 bd d4 00 00
+ 00 01 cmp DWORD PTR tv152[rbp], 1
+ 001e6 0f 84 a4 00 00
+ 00 je $LN13@stbi__hdr_
+ 001ec 83 bd d4 00 00
+ 00 02 cmp DWORD PTR tv152[rbp], 2
+ 001f3 74 7e je SHORT $LN12@stbi__hdr_
+ 001f5 83 bd d4 00 00
+ 00 03 cmp DWORD PTR tv152[rbp], 3
+ 001fc 74 2b je SHORT $LN11@stbi__hdr_
+ 001fe 83 bd d4 00 00
+ 00 04 cmp DWORD PTR tv152[rbp], 4
+ 00205 74 05 je SHORT $LN10@stbi__hdr_
+ 00207 e9 9c 00 00 00 jmp $LN2@stbi__hdr_
+$LN10@stbi__hdr_:
+
+; 8014 : case 4:
+; 8015 : output[3] = 1; /* fallthrough */
+
+ 0020c b8 04 00 00 00 mov eax, 4
+ 00211 48 6b c0 03 imul rax, rax, 3
+ 00215 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 0021c f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 00224 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+$LN11@stbi__hdr_:
+
+; 8016 : case 3:
+; 8017 : output[0] = output[1] = output[2] = 0;
+
+ 00229 b8 04 00 00 00 mov eax, 4
+ 0022e 48 6b c0 02 imul rax, rax, 2
+ 00232 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 00239 0f 57 c0 xorps xmm0, xmm0
+ 0023c f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+ 00241 b8 04 00 00 00 mov eax, 4
+ 00246 48 6b c0 01 imul rax, rax, 1
+ 0024a 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 00251 0f 57 c0 xorps xmm0, xmm0
+ 00254 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+ 00259 b8 04 00 00 00 mov eax, 4
+ 0025e 48 6b c0 00 imul rax, rax, 0
+ 00262 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 00269 0f 57 c0 xorps xmm0, xmm0
+ 0026c f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+
+; 8018 : break;
+
+ 00271 eb 35 jmp SHORT $LN2@stbi__hdr_
+$LN12@stbi__hdr_:
+
+; 8019 : case 2:
+; 8020 : output[1] = 1; /* fallthrough */
+
+ 00273 b8 04 00 00 00 mov eax, 4
+ 00278 48 6b c0 01 imul rax, rax, 1
+ 0027c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 00283 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 0028b f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+$LN13@stbi__hdr_:
+
+; 8021 : case 1:
+; 8022 : output[0] = 0;
+
+ 00290 b8 04 00 00 00 mov eax, 4
+ 00295 48 6b c0 00 imul rax, rax, 0
+ 00299 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR output$[rbp]
+ 002a0 0f 57 c0 xorps xmm0, xmm0
+ 002a3 f3 0f 11 04 01 movss DWORD PTR [rcx+rax], xmm0
+$LN2@stbi__hdr_:
+$LN5@stbi__hdr_:
+
+; 8023 : break;
+; 8024 : }
+; 8025 : }
+; 8026 : }
+
+ 002a8 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 002af 5f pop rdi
+ 002b0 5d pop rbp
+ 002b1 c3 ret 0
+stbi__hdr_convert ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__hdr_gettoken
+_TEXT SEGMENT
+len$ = 4
+c$ = 36
+z$ = 288
+buffer$ = 296
+stbi__hdr_gettoken PROC ; COMDAT
+
+; 7974 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 7975 : int len = 0;
+
+ 00025 c7 45 04 00 00
+ 00 00 mov DWORD PTR len$[rbp], 0
+
+; 7976 : char c = '\0';
+
+ 0002c c6 45 24 00 mov BYTE PTR c$[rbp], 0
+
+; 7977 :
+; 7978 : c = (char)stbi__get8(z);
+
+ 00030 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00037 e8 00 00 00 00 call stbi__get8
+ 0003c 88 45 24 mov BYTE PTR c$[rbp], al
+$LN2@stbi__hdr_:
+
+; 7979 :
+; 7980 : while (!stbi__at_eof(z) && c != '\n') {
+
+ 0003f 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00046 e8 00 00 00 00 call stbi__at_eof
+ 0004b 85 c0 test eax, eax
+ 0004d 75 65 jne SHORT $LN3@stbi__hdr_
+ 0004f 0f be 45 24 movsx eax, BYTE PTR c$[rbp]
+ 00053 83 f8 0a cmp eax, 10
+ 00056 74 5c je SHORT $LN3@stbi__hdr_
+
+; 7981 : buffer[len++] = c;
+
+ 00058 48 63 45 04 movsxd rax, DWORD PTR len$[rbp]
+ 0005c 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 00063 0f b6 55 24 movzx edx, BYTE PTR c$[rbp]
+ 00067 88 14 01 mov BYTE PTR [rcx+rax], dl
+ 0006a 8b 45 04 mov eax, DWORD PTR len$[rbp]
+ 0006d ff c0 inc eax
+ 0006f 89 45 04 mov DWORD PTR len$[rbp], eax
+
+; 7982 : if (len == STBI__HDR_BUFLEN - 1) {
+
+ 00072 81 7d 04 ff 03
+ 00 00 cmp DWORD PTR len$[rbp], 1023 ; 000003ffH
+ 00079 75 28 jne SHORT $LN6@stbi__hdr_
+$LN4@stbi__hdr_:
+
+; 7983 : // flush to end of line
+; 7984 : while (!stbi__at_eof(z) && stbi__get8(z) != '\n')
+
+ 0007b 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00082 e8 00 00 00 00 call stbi__at_eof
+ 00087 85 c0 test eax, eax
+ 00089 75 16 jne SHORT $LN5@stbi__hdr_
+ 0008b 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00092 e8 00 00 00 00 call stbi__get8
+ 00097 0f b6 c0 movzx eax, al
+ 0009a 83 f8 0a cmp eax, 10
+ 0009d 74 02 je SHORT $LN5@stbi__hdr_
+
+; 7985 : ;
+
+ 0009f eb da jmp SHORT $LN4@stbi__hdr_
+$LN5@stbi__hdr_:
+
+; 7986 : break;
+
+ 000a1 eb 11 jmp SHORT $LN3@stbi__hdr_
+$LN6@stbi__hdr_:
+
+; 7987 : }
+; 7988 : c = (char)stbi__get8(z);
+
+ 000a3 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000aa e8 00 00 00 00 call stbi__get8
+ 000af 88 45 24 mov BYTE PTR c$[rbp], al
+
+; 7989 : }
+
+ 000b2 eb 8b jmp SHORT $LN2@stbi__hdr_
+$LN3@stbi__hdr_:
+
+; 7990 :
+; 7991 : buffer[len] = 0;
+
+ 000b4 48 63 45 04 movsxd rax, DWORD PTR len$[rbp]
+ 000b8 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 000bf c6 04 01 00 mov BYTE PTR [rcx+rax], 0
+
+; 7992 : return buffer;
+
+ 000c3 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR buffer$[rbp]
+
+; 7993 : }
+
+ 000ca 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000d1 5f pop rdi
+ 000d2 5d pop rbp
+ 000d3 c3 ret 0
+stbi__hdr_gettoken ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__hdr_test_core
+_TEXT SEGMENT
+i$ = 4
+s$ = 256
+signature$ = 264
+stbi__hdr_test_core PROC ; COMDAT
+
+; 7952 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 7953 : int i;
+; 7954 : for (i = 0; signature[i]; ++i)
+
+ 00025 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0002c eb 08 jmp SHORT $LN4@stbi__hdr_
+$LN2@stbi__hdr_:
+ 0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00031 ff c0 inc eax
+ 00033 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__hdr_:
+ 00036 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0003a 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR signature$[rbp]
+ 00041 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
+ 00045 85 c0 test eax, eax
+ 00047 74 28 je SHORT $LN3@stbi__hdr_
+
+; 7955 : if (stbi__get8(s) != signature[i])
+
+ 00049 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00050 e8 00 00 00 00 call stbi__get8
+ 00055 0f b6 c0 movzx eax, al
+ 00058 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 0005c 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR signature$[rbp]
+ 00063 0f be 0c 0a movsx ecx, BYTE PTR [rdx+rcx]
+ 00067 3b c1 cmp eax, ecx
+ 00069 74 04 je SHORT $LN5@stbi__hdr_
+
+; 7956 : return 0;
+
+ 0006b 33 c0 xor eax, eax
+ 0006d eb 14 jmp SHORT $LN1@stbi__hdr_
+$LN5@stbi__hdr_:
+ 0006f eb bd jmp SHORT $LN2@stbi__hdr_
+$LN3@stbi__hdr_:
+
+; 7957 : stbi__rewind(s);
+
+ 00071 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00078 e8 00 00 00 00 call stbi__rewind
+ 0007d 90 npad 1
+
+; 7958 : return 1;
+
+ 0007e b8 01 00 00 00 mov eax, 1
+$LN1@stbi__hdr_:
+
+; 7959 : }
+
+ 00083 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 0008a 5f pop rdi
+ 0008b 5d pop rbp
+ 0008c c3 ret 0
+stbi__hdr_test_core ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__load_gif_main_outofmem
+_TEXT SEGMENT
+tv78 = 192
+g$ = 240
+out$ = 248
+delays$ = 256
+stbi__load_gif_main_outofmem PROC ; COMDAT
+
+; 7805 : {
+
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 7806 : STBI_FREE(g->out);
+
+ 0002a 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00031 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
+ 00035 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0003b 90 npad 1
+
+; 7807 : STBI_FREE(g->history);
+
+ 0003c 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00043 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
+ 00047 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0004d 90 npad 1
+
+; 7808 : STBI_FREE(g->background);
+
+ 0004e 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00055 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
+ 00059 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0005f 90 npad 1
+
+; 7809 :
+; 7810 : if (out)
+
+ 00060 48 83 bd f8 00
+ 00 00 00 cmp QWORD PTR out$[rbp], 0
+ 00068 74 0e je SHORT $LN2@stbi__load
+
+; 7811 : STBI_FREE(out);
+
+ 0006a 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00071 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00077 90 npad 1
+$LN2@stbi__load:
+
+; 7812 : if (delays && *delays)
+
+ 00078 48 83 bd 00 01
+ 00 00 00 cmp QWORD PTR delays$[rbp], 0
+ 00080 74 1e je SHORT $LN3@stbi__load
+ 00082 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR delays$[rbp]
+ 00089 48 83 38 00 cmp QWORD PTR [rax], 0
+ 0008d 74 11 je SHORT $LN3@stbi__load
+
+; 7813 : STBI_FREE(*delays);
+
+ 0008f 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR delays$[rbp]
+ 00096 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00099 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0009f 90 npad 1
+$LN3@stbi__load:
+
+; 7814 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 000a0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 000a7 e8 00 00 00 00 call stbi__err
+ 000ac 85 c0 test eax, eax
+ 000ae 74 0d je SHORT $LN5@stbi__load
+ 000b0 48 c7 85 c0 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv78[rbp], 0
+ 000bb eb 0b jmp SHORT $LN6@stbi__load
+$LN5@stbi__load:
+ 000bd 48 c7 85 c0 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv78[rbp], 0
+$LN6@stbi__load:
+ 000c8 48 8b 85 c0 00
+ 00 00 mov rax, QWORD PTR tv78[rbp]
+
+; 7815 : }
+
+ 000cf 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000d6 5f pop rdi
+ 000d7 5d pop rbp
+ 000d8 c3 ret 0
+stbi__load_gif_main_outofmem ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_load_next
+_TEXT SEGMENT
+dispose$ = 4
+first_frame$ = 36
+pi$ = 68
+pcount$ = 100
+tag$1 = 132
+x$2 = 164
+y$3 = 196
+w$4 = 228
+h$5 = 260
+o$6 = 296
+len$7 = 324
+ext$8 = 356
+tv232 = 564
+tv296 = 564
+tv83 = 568
+tv142 = 568
+tv250 = 568
+tv315 = 568
+tv409 = 568
+tv578 = 568
+s$ = 608
+g$ = 616
+comp$ = 624
+req_comp$ = 632
+two_back$ = 640
+stbi__gif_load_next PROC ; COMDAT
+
+; 7622 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 68 02
+ 00 00 sub rsp, 616 ; 00000268H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 7623 : int dispose;
+; 7624 : int first_frame;
+; 7625 : int pi;
+; 7626 : int pcount;
+; 7627 : STBI_NOTUSED(req_comp);
+; 7628 :
+; 7629 : // on first frame, any non-written pixels get the background colour (non-transparent)
+; 7630 : first_frame = 0;
+
+ 0002f c7 45 24 00 00
+ 00 00 mov DWORD PTR first_frame$[rbp], 0
+
+; 7631 : if (g->out == 0) {
+
+ 00036 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0003d 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
+ 00042 0f 85 a5 01 00
+ 00 jne $LN18@stbi__gif_
+
+; 7632 : if (!stbi__gif_header(s, g, comp, 0))
+
+ 00048 45 33 c9 xor r9d, r9d
+ 0004b 4c 8b 85 70 02
+ 00 00 mov r8, QWORD PTR comp$[rbp]
+ 00052 48 8b 95 68 02
+ 00 00 mov rdx, QWORD PTR g$[rbp]
+ 00059 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00060 e8 00 00 00 00 call stbi__gif_header
+ 00065 85 c0 test eax, eax
+ 00067 75 07 jne SHORT $LN20@stbi__gif_
+
+; 7633 : return 0; // stbi__g_failure_reason set by stbi__gif_header
+
+ 00069 33 c0 xor eax, eax
+ 0006b e9 66 09 00 00 jmp $LN1@stbi__gif_
+$LN20@stbi__gif_:
+
+; 7634 : if (!stbi__mad3sizes_valid(4, g->w, g->h, 0))
+
+ 00070 45 33 c9 xor r9d, r9d
+ 00073 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0007a 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
+ 0007e 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00085 8b 10 mov edx, DWORD PTR [rax]
+ 00087 b9 04 00 00 00 mov ecx, 4
+ 0008c e8 00 00 00 00 call stbi__mad3sizes_valid
+ 00091 85 c0 test eax, eax
+ 00093 75 34 jne SHORT $LN21@stbi__gif_
+
+; 7635 : return stbi__errpuc("too large", "GIF image is too large");
+
+ 00095 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 0009c e8 00 00 00 00 call stbi__err
+ 000a1 85 c0 test eax, eax
+ 000a3 74 0d je SHORT $LN55@stbi__gif_
+ 000a5 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv83[rbp], 0
+ 000b0 eb 0b jmp SHORT $LN56@stbi__gif_
+$LN55@stbi__gif_:
+ 000b2 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv83[rbp], 0
+$LN56@stbi__gif_:
+ 000bd 48 8b 85 38 02
+ 00 00 mov rax, QWORD PTR tv83[rbp]
+ 000c4 e9 0d 09 00 00 jmp $LN1@stbi__gif_
+$LN21@stbi__gif_:
+
+; 7636 : pcount = g->w * g->h;
+
+ 000c9 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 000d0 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 000d7 8b 00 mov eax, DWORD PTR [rax]
+ 000d9 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 000dd 89 45 64 mov DWORD PTR pcount$[rbp], eax
+
+; 7637 : g->out = (stbi_uc *)stbi__malloc(4 * pcount);
+
+ 000e0 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
+ 000e3 c1 e0 02 shl eax, 2
+ 000e6 48 98 cdqe
+ 000e8 48 8b c8 mov rcx, rax
+ 000eb e8 00 00 00 00 call stbi__malloc
+ 000f0 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 000f7 48 89 41 08 mov QWORD PTR [rcx+8], rax
+
+; 7638 : g->background = (stbi_uc *)stbi__malloc(4 * pcount);
+
+ 000fb 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
+ 000fe c1 e0 02 shl eax, 2
+ 00101 48 98 cdqe
+ 00103 48 8b c8 mov rcx, rax
+ 00106 e8 00 00 00 00 call stbi__malloc
+ 0010b 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00112 48 89 41 10 mov QWORD PTR [rcx+16], rax
+
+; 7639 : g->history = (stbi_uc *)stbi__malloc(pcount);
+
+ 00116 48 63 45 64 movsxd rax, DWORD PTR pcount$[rbp]
+ 0011a 48 8b c8 mov rcx, rax
+ 0011d e8 00 00 00 00 call stbi__malloc
+ 00122 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00129 48 89 41 18 mov QWORD PTR [rcx+24], rax
+
+; 7640 : if (!g->out || !g->background || !g->history)
+
+ 0012d 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00134 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
+ 00139 74 1c je SHORT $LN23@stbi__gif_
+ 0013b 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00142 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
+ 00147 74 0e je SHORT $LN23@stbi__gif_
+ 00149 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00150 48 83 78 18 00 cmp QWORD PTR [rax+24], 0
+ 00155 75 34 jne SHORT $LN22@stbi__gif_
+$LN23@stbi__gif_:
+
+; 7641 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 00157 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0015e e8 00 00 00 00 call stbi__err
+ 00163 85 c0 test eax, eax
+ 00165 74 0d je SHORT $LN57@stbi__gif_
+ 00167 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv142[rbp], 0
+ 00172 eb 0b jmp SHORT $LN58@stbi__gif_
+$LN57@stbi__gif_:
+ 00174 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv142[rbp], 0
+$LN58@stbi__gif_:
+ 0017f 48 8b 85 38 02
+ 00 00 mov rax, QWORD PTR tv142[rbp]
+ 00186 e9 4b 08 00 00 jmp $LN1@stbi__gif_
+$LN22@stbi__gif_:
+
+; 7642 :
+; 7643 : // image is treated as "transparent" at the start - ie, nothing overwrites the current background;
+; 7644 : // background colour is only used for pixels that are not rendered first frame, after that "background"
+; 7645 : // color refers to the color that was there the previous frame.
+; 7646 : memset(g->out, 0x00, 4 * pcount);
+
+ 0018b 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
+ 0018e c1 e0 02 shl eax, 2
+ 00191 48 98 cdqe
+ 00193 4c 8b c0 mov r8, rax
+ 00196 33 d2 xor edx, edx
+ 00198 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0019f 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
+ 001a3 e8 00 00 00 00 call memset
+ 001a8 90 npad 1
+
+; 7647 : memset(g->background, 0x00,
+
+ 001a9 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
+ 001ac c1 e0 02 shl eax, 2
+ 001af 48 98 cdqe
+ 001b1 4c 8b c0 mov r8, rax
+ 001b4 33 d2 xor edx, edx
+ 001b6 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001bd 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
+ 001c1 e8 00 00 00 00 call memset
+ 001c6 90 npad 1
+
+; 7648 : 4 * pcount); // state of the background (starts transparent)
+; 7649 : memset(g->history, 0x00, pcount); // pixels that were affected previous frame
+
+ 001c7 48 63 45 64 movsxd rax, DWORD PTR pcount$[rbp]
+ 001cb 4c 8b c0 mov r8, rax
+ 001ce 33 d2 xor edx, edx
+ 001d0 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001d7 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
+ 001db e8 00 00 00 00 call memset
+ 001e0 90 npad 1
+
+; 7650 : first_frame = 1;
+
+ 001e1 c7 45 24 01 00
+ 00 00 mov DWORD PTR first_frame$[rbp], 1
+
+; 7651 : } else {
+
+ 001e8 e9 6b 01 00 00 jmp $LN19@stbi__gif_
+$LN18@stbi__gif_:
+
+; 7652 : // second frame - how do we dispose of the previous one?
+; 7653 : dispose = (g->eflags & 0x1C) >> 2;
+
+ 001ed 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001f4 8b 40 30 mov eax, DWORD PTR [rax+48]
+ 001f7 83 e0 1c and eax, 28
+ 001fa c1 f8 02 sar eax, 2
+ 001fd 89 45 04 mov DWORD PTR dispose$[rbp], eax
+
+; 7654 : pcount = g->w * g->h;
+
+ 00200 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00207 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0020e 8b 00 mov eax, DWORD PTR [rax]
+ 00210 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 00214 89 45 64 mov DWORD PTR pcount$[rbp], eax
+
+; 7655 :
+; 7656 : if ((dispose == 3) && (two_back == 0)) {
+
+ 00217 83 7d 04 03 cmp DWORD PTR dispose$[rbp], 3
+ 0021b 75 11 jne SHORT $LN24@stbi__gif_
+ 0021d 48 83 bd 80 02
+ 00 00 00 cmp QWORD PTR two_back$[rbp], 0
+ 00225 75 07 jne SHORT $LN24@stbi__gif_
+
+; 7657 : dispose =
+
+ 00227 c7 45 04 02 00
+ 00 00 mov DWORD PTR dispose$[rbp], 2
+$LN24@stbi__gif_:
+
+; 7658 : 2; // if I don't have an image to revert back to, default to the old background
+; 7659 : }
+; 7660 :
+; 7661 : if (dispose == 3) { // use previous graphic
+
+ 0022e 83 7d 04 03 cmp DWORD PTR dispose$[rbp], 3
+ 00232 75 72 jne SHORT $LN25@stbi__gif_
+
+; 7662 : for (pi = 0; pi < pcount; ++pi) {
+
+ 00234 c7 45 44 00 00
+ 00 00 mov DWORD PTR pi$[rbp], 0
+ 0023b eb 08 jmp SHORT $LN4@stbi__gif_
+$LN2@stbi__gif_:
+ 0023d 8b 45 44 mov eax, DWORD PTR pi$[rbp]
+ 00240 ff c0 inc eax
+ 00242 89 45 44 mov DWORD PTR pi$[rbp], eax
+$LN4@stbi__gif_:
+ 00245 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
+ 00248 39 45 44 cmp DWORD PTR pi$[rbp], eax
+ 0024b 7d 57 jge SHORT $LN3@stbi__gif_
+
+; 7663 : if (g->history[pi]) {
+
+ 0024d 48 63 45 44 movsxd rax, DWORD PTR pi$[rbp]
+ 00251 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00258 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
+ 0025c 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00260 85 c0 test eax, eax
+ 00262 74 3e je SHORT $LN27@stbi__gif_
+
+; 7664 : memcpy(&g->out[pi * 4], &two_back[pi * 4], 4);
+
+ 00264 8b 45 44 mov eax, DWORD PTR pi$[rbp]
+ 00267 c1 e0 02 shl eax, 2
+ 0026a 48 98 cdqe
+ 0026c 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR two_back$[rbp]
+ 00273 48 03 c8 add rcx, rax
+ 00276 48 8b c1 mov rax, rcx
+ 00279 8b 4d 44 mov ecx, DWORD PTR pi$[rbp]
+ 0027c c1 e1 02 shl ecx, 2
+ 0027f 48 63 c9 movsxd rcx, ecx
+ 00282 48 8b 95 68 02
+ 00 00 mov rdx, QWORD PTR g$[rbp]
+ 00289 48 8b 52 08 mov rdx, QWORD PTR [rdx+8]
+ 0028d 48 03 d1 add rdx, rcx
+ 00290 48 8b ca mov rcx, rdx
+ 00293 41 b8 04 00 00
+ 00 mov r8d, 4
+ 00299 48 8b d0 mov rdx, rax
+ 0029c e8 00 00 00 00 call memcpy
+ 002a1 90 npad 1
+$LN27@stbi__gif_:
+
+; 7665 : }
+; 7666 : }
+
+ 002a2 eb 99 jmp SHORT $LN2@stbi__gif_
+$LN3@stbi__gif_:
+
+; 7667 : } else if (dispose == 2) {
+
+ 002a4 eb 7a jmp SHORT $LN26@stbi__gif_
+$LN25@stbi__gif_:
+ 002a6 83 7d 04 02 cmp DWORD PTR dispose$[rbp], 2
+ 002aa 75 74 jne SHORT $LN28@stbi__gif_
+
+; 7668 : // restore what was changed last frame to background before that frame;
+; 7669 : for (pi = 0; pi < pcount; ++pi) {
+
+ 002ac c7 45 44 00 00
+ 00 00 mov DWORD PTR pi$[rbp], 0
+ 002b3 eb 08 jmp SHORT $LN7@stbi__gif_
+$LN5@stbi__gif_:
+ 002b5 8b 45 44 mov eax, DWORD PTR pi$[rbp]
+ 002b8 ff c0 inc eax
+ 002ba 89 45 44 mov DWORD PTR pi$[rbp], eax
+$LN7@stbi__gif_:
+ 002bd 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
+ 002c0 39 45 44 cmp DWORD PTR pi$[rbp], eax
+ 002c3 7d 5b jge SHORT $LN6@stbi__gif_
+
+; 7670 : if (g->history[pi]) {
+
+ 002c5 48 63 45 44 movsxd rax, DWORD PTR pi$[rbp]
+ 002c9 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 002d0 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
+ 002d4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 002d8 85 c0 test eax, eax
+ 002da 74 42 je SHORT $LN30@stbi__gif_
+
+; 7671 : memcpy(&g->out[pi * 4], &g->background[pi * 4], 4);
+
+ 002dc 8b 45 44 mov eax, DWORD PTR pi$[rbp]
+ 002df c1 e0 02 shl eax, 2
+ 002e2 48 98 cdqe
+ 002e4 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 002eb 48 8b 49 10 mov rcx, QWORD PTR [rcx+16]
+ 002ef 48 03 c8 add rcx, rax
+ 002f2 48 8b c1 mov rax, rcx
+ 002f5 8b 4d 44 mov ecx, DWORD PTR pi$[rbp]
+ 002f8 c1 e1 02 shl ecx, 2
+ 002fb 48 63 c9 movsxd rcx, ecx
+ 002fe 48 8b 95 68 02
+ 00 00 mov rdx, QWORD PTR g$[rbp]
+ 00305 48 8b 52 08 mov rdx, QWORD PTR [rdx+8]
+ 00309 48 03 d1 add rdx, rcx
+ 0030c 48 8b ca mov rcx, rdx
+ 0030f 41 b8 04 00 00
+ 00 mov r8d, 4
+ 00315 48 8b d0 mov rdx, rax
+ 00318 e8 00 00 00 00 call memcpy
+ 0031d 90 npad 1
+$LN30@stbi__gif_:
+
+; 7672 : }
+; 7673 : }
+
+ 0031e eb 95 jmp SHORT $LN5@stbi__gif_
+$LN6@stbi__gif_:
+$LN28@stbi__gif_:
+$LN26@stbi__gif_:
+
+; 7674 : } else {
+; 7675 : // This is a non-disposal case eithe way, so just
+; 7676 : // leave the pixels as is, and they will become the new background
+; 7677 : // 1: do not dispose
+; 7678 : // 0: not specified.
+; 7679 : }
+; 7680 :
+; 7681 : // background is what out is after the undoing of the previou frame;
+; 7682 : memcpy(g->background, g->out, 4 * g->w * g->h);
+
+ 00320 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00327 8b 00 mov eax, DWORD PTR [rax]
+ 00329 c1 e0 02 shl eax, 2
+ 0032c 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00333 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 00337 48 98 cdqe
+ 00339 4c 8b c0 mov r8, rax
+ 0033c 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00343 48 8b 50 08 mov rdx, QWORD PTR [rax+8]
+ 00347 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0034e 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
+ 00352 e8 00 00 00 00 call memcpy
+ 00357 90 npad 1
+$LN19@stbi__gif_:
+
+; 7683 : }
+; 7684 :
+; 7685 : // clear my history;
+; 7686 : memset(g->history, 0x00, g->w * g->h); // pixels that were affected previous frame
+
+ 00358 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0035f 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00366 8b 00 mov eax, DWORD PTR [rax]
+ 00368 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 0036c 48 98 cdqe
+ 0036e 4c 8b c0 mov r8, rax
+ 00371 33 d2 xor edx, edx
+ 00373 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0037a 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
+ 0037e e8 00 00 00 00 call memset
+ 00383 90 npad 1
+$LN8@stbi__gif_:
+
+; 7687 :
+; 7688 : for (;;) {
+; 7689 : int tag = stbi__get8(s);
+
+ 00384 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0038b e8 00 00 00 00 call stbi__get8
+ 00390 0f b6 c0 movzx eax, al
+ 00393 89 85 84 00 00
+ 00 mov DWORD PTR tag$1[rbp], eax
+
+; 7690 : switch (tag) {
+
+ 00399 8b 85 84 00 00
+ 00 mov eax, DWORD PTR tag$1[rbp]
+ 0039f 89 85 34 02 00
+ 00 mov DWORD PTR tv232[rbp], eax
+ 003a5 83 bd 34 02 00
+ 00 21 cmp DWORD PTR tv232[rbp], 33 ; 00000021H
+ 003ac 0f 84 6f 04 00
+ 00 je $LN44@stbi__gif_
+ 003b2 83 bd 34 02 00
+ 00 2c cmp DWORD PTR tv232[rbp], 44 ; 0000002cH
+ 003b9 74 12 je SHORT $LN31@stbi__gif_
+ 003bb 83 bd 34 02 00
+ 00 3b cmp DWORD PTR tv232[rbp], 59 ; 0000003bH
+ 003c2 0f 84 cf 05 00
+ 00 je $LN52@stbi__gif_
+ 003c8 e9 d3 05 00 00 jmp $LN53@stbi__gif_
+$LN31@stbi__gif_:
+
+; 7691 : case 0x2C: /* Image Descriptor */
+; 7692 : {
+; 7693 : stbi__int32 x, y, w, h;
+; 7694 : stbi_uc *o;
+; 7695 :
+; 7696 : x = stbi__get16le(s);
+
+ 003cd 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003d4 e8 00 00 00 00 call stbi__get16le
+ 003d9 89 85 a4 00 00
+ 00 mov DWORD PTR x$2[rbp], eax
+
+; 7697 : y = stbi__get16le(s);
+
+ 003df 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003e6 e8 00 00 00 00 call stbi__get16le
+ 003eb 89 85 c4 00 00
+ 00 mov DWORD PTR y$3[rbp], eax
+
+; 7698 : w = stbi__get16le(s);
+
+ 003f1 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003f8 e8 00 00 00 00 call stbi__get16le
+ 003fd 89 85 e4 00 00
+ 00 mov DWORD PTR w$4[rbp], eax
+
+; 7699 : h = stbi__get16le(s);
+
+ 00403 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0040a e8 00 00 00 00 call stbi__get16le
+ 0040f 89 85 04 01 00
+ 00 mov DWORD PTR h$5[rbp], eax
+
+; 7700 : if (((x + w) > (g->w)) || ((y + h) > (g->h)))
+
+ 00415 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR w$4[rbp]
+ 0041b 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR x$2[rbp]
+ 00421 03 c8 add ecx, eax
+ 00423 8b c1 mov eax, ecx
+ 00425 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0042c 3b 01 cmp eax, DWORD PTR [rcx]
+ 0042e 7f 1c jg SHORT $LN33@stbi__gif_
+ 00430 8b 85 04 01 00
+ 00 mov eax, DWORD PTR h$5[rbp]
+ 00436 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR y$3[rbp]
+ 0043c 03 c8 add ecx, eax
+ 0043e 8b c1 mov eax, ecx
+ 00440 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00447 3b 41 04 cmp eax, DWORD PTR [rcx+4]
+ 0044a 7e 34 jle SHORT $LN32@stbi__gif_
+$LN33@stbi__gif_:
+
+; 7701 : return stbi__errpuc("bad Image Descriptor", "Corrupt GIF");
+
+ 0044c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@
+ 00453 e8 00 00 00 00 call stbi__err
+ 00458 85 c0 test eax, eax
+ 0045a 74 0d je SHORT $LN59@stbi__gif_
+ 0045c 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv250[rbp], 0
+ 00467 eb 0b jmp SHORT $LN60@stbi__gif_
+$LN59@stbi__gif_:
+ 00469 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv250[rbp], 0
+$LN60@stbi__gif_:
+ 00474 48 8b 85 38 02
+ 00 00 mov rax, QWORD PTR tv250[rbp]
+ 0047b e9 56 05 00 00 jmp $LN1@stbi__gif_
+$LN32@stbi__gif_:
+
+; 7702 :
+; 7703 : g->line_size = g->w * 4;
+
+ 00480 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00487 8b 00 mov eax, DWORD PTR [rax]
+ 00489 c1 e0 02 shl eax, 2
+ 0048c 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00493 89 81 64 88 00
+ 00 mov DWORD PTR [rcx+34916], eax
+
+; 7704 : g->start_x = x * 4;
+
+ 00499 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR x$2[rbp]
+ 0049f c1 e0 02 shl eax, 2
+ 004a2 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 004a9 89 81 4c 88 00
+ 00 mov DWORD PTR [rcx+34892], eax
+
+; 7705 : g->start_y = y * g->line_size;
+
+ 004af 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 004b6 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR y$3[rbp]
+ 004bc 0f af 88 64 88
+ 00 00 imul ecx, DWORD PTR [rax+34916]
+ 004c3 8b c1 mov eax, ecx
+ 004c5 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 004cc 89 81 50 88 00
+ 00 mov DWORD PTR [rcx+34896], eax
+
+; 7706 : g->max_x = g->start_x + w * 4;
+
+ 004d2 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 004d9 8b 80 4c 88 00
+ 00 mov eax, DWORD PTR [rax+34892]
+ 004df 8b 8d e4 00 00
+ 00 mov ecx, DWORD PTR w$4[rbp]
+ 004e5 8d 04 88 lea eax, DWORD PTR [rax+rcx*4]
+ 004e8 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 004ef 89 81 54 88 00
+ 00 mov DWORD PTR [rcx+34900], eax
+
+; 7707 : g->max_y = g->start_y + h * g->line_size;
+
+ 004f5 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 004fc 8b 8d 04 01 00
+ 00 mov ecx, DWORD PTR h$5[rbp]
+ 00502 0f af 88 64 88
+ 00 00 imul ecx, DWORD PTR [rax+34916]
+ 00509 8b c1 mov eax, ecx
+ 0050b 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00512 03 81 50 88 00
+ 00 add eax, DWORD PTR [rcx+34896]
+ 00518 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0051f 89 81 58 88 00
+ 00 mov DWORD PTR [rcx+34904], eax
+
+; 7708 : g->cur_x = g->start_x;
+
+ 00525 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0052c 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00533 8b 89 4c 88 00
+ 00 mov ecx, DWORD PTR [rcx+34892]
+ 00539 89 88 5c 88 00
+ 00 mov DWORD PTR [rax+34908], ecx
+
+; 7709 : g->cur_y = g->start_y;
+
+ 0053f 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00546 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0054d 8b 89 50 88 00
+ 00 mov ecx, DWORD PTR [rcx+34896]
+ 00553 89 88 60 88 00
+ 00 mov DWORD PTR [rax+34912], ecx
+
+; 7710 :
+; 7711 : // if the width of the specified rectangle is 0, that means
+; 7712 : // we may not see *any* pixels or the image is malformed;
+; 7713 : // to make sure this is caught, move the current y down to
+; 7714 : // max_y (which is what out_gif_code checks).
+; 7715 : if (w == 0)
+
+ 00559 83 bd e4 00 00
+ 00 00 cmp DWORD PTR w$4[rbp], 0
+ 00560 75 1a jne SHORT $LN34@stbi__gif_
+
+; 7716 : g->cur_y = g->max_y;
+
+ 00562 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00569 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00570 8b 89 58 88 00
+ 00 mov ecx, DWORD PTR [rcx+34904]
+ 00576 89 88 60 88 00
+ 00 mov DWORD PTR [rax+34912], ecx
+$LN34@stbi__gif_:
+
+; 7717 :
+; 7718 : g->lflags = stbi__get8(s);
+
+ 0057c 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00583 e8 00 00 00 00 call stbi__get8
+ 00588 0f b6 c0 movzx eax, al
+ 0058b 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00592 89 81 48 88 00
+ 00 mov DWORD PTR [rcx+34888], eax
+
+; 7719 :
+; 7720 : if (g->lflags & 0x40) {
+
+ 00598 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0059f 8b 80 48 88 00
+ 00 mov eax, DWORD PTR [rax+34888]
+ 005a5 83 e0 40 and eax, 64 ; 00000040H
+ 005a8 85 c0 test eax, eax
+ 005aa 74 30 je SHORT $LN35@stbi__gif_
+
+; 7721 : g->step = 8 * g->line_size; // first interlaced spacing
+
+ 005ac 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 005b3 8b 80 64 88 00
+ 00 mov eax, DWORD PTR [rax+34916]
+ 005b9 c1 e0 03 shl eax, 3
+ 005bc 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 005c3 89 81 44 88 00
+ 00 mov DWORD PTR [rcx+34884], eax
+
+; 7722 : g->parse = 3;
+
+ 005c9 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 005d0 c7 80 40 88 00
+ 00 03 00 00 00 mov DWORD PTR [rax+34880], 3
+
+; 7723 : } else {
+
+ 005da eb 2b jmp SHORT $LN36@stbi__gif_
+$LN35@stbi__gif_:
+
+; 7724 : g->step = g->line_size;
+
+ 005dc 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 005e3 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 005ea 8b 89 64 88 00
+ 00 mov ecx, DWORD PTR [rcx+34916]
+ 005f0 89 88 44 88 00
+ 00 mov DWORD PTR [rax+34884], ecx
+
+; 7725 : g->parse = 0;
+
+ 005f6 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 005fd c7 80 40 88 00
+ 00 00 00 00 00 mov DWORD PTR [rax+34880], 0
+$LN36@stbi__gif_:
+
+; 7726 : }
+; 7727 :
+; 7728 : if (g->lflags & 0x80) {
+
+ 00607 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0060e 8b 80 48 88 00
+ 00 mov eax, DWORD PTR [rax+34888]
+ 00614 25 80 00 00 00 and eax, 128 ; 00000080H
+ 00619 85 c0 test eax, eax
+ 0061b 0f 84 98 00 00
+ 00 je $LN37@stbi__gif_
+
+; 7729 : stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7),
+
+ 00621 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00628 8b 40 30 mov eax, DWORD PTR [rax+48]
+ 0062b 83 e0 01 and eax, 1
+ 0062e 85 c0 test eax, eax
+ 00630 74 12 je SHORT $LN61@stbi__gif_
+ 00632 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00639 8b 40 2c mov eax, DWORD PTR [rax+44]
+ 0063c 89 85 34 02 00
+ 00 mov DWORD PTR tv296[rbp], eax
+ 00642 eb 0a jmp SHORT $LN62@stbi__gif_
+$LN61@stbi__gif_:
+ 00644 c7 85 34 02 00
+ 00 ff ff ff ff mov DWORD PTR tv296[rbp], -1
+$LN62@stbi__gif_:
+ 0064e 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00655 8b 80 48 88 00
+ 00 mov eax, DWORD PTR [rax+34888]
+ 0065b 83 e0 07 and eax, 7
+ 0065e b9 02 00 00 00 mov ecx, 2
+ 00663 89 8d 38 02 00
+ 00 mov DWORD PTR tv578[rbp], ecx
+ 00669 0f b6 c8 movzx ecx, al
+ 0066c 8b 85 38 02 00
+ 00 mov eax, DWORD PTR tv578[rbp]
+ 00672 d3 e0 shl eax, cl
+ 00674 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0067b 48 81 c1 34 04
+ 00 00 add rcx, 1076 ; 00000434H
+ 00682 44 8b 8d 34 02
+ 00 00 mov r9d, DWORD PTR tv296[rbp]
+ 00689 44 8b c0 mov r8d, eax
+ 0068c 48 8b d1 mov rdx, rcx
+ 0068f 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00696 e8 00 00 00 00 call stbi__gif_parse_colortable
+ 0069b 90 npad 1
+
+; 7730 : g->eflags & 0x01 ? g->transparent : -1);
+; 7731 : g->color_table = (stbi_uc *)g->lpal;
+
+ 0069c 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 006a3 48 05 34 04 00
+ 00 add rax, 1076 ; 00000434H
+ 006a9 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 006b0 48 89 81 38 88
+ 00 00 mov QWORD PTR [rcx+34872], rax
+ 006b7 eb 62 jmp SHORT $LN38@stbi__gif_
+$LN37@stbi__gif_:
+
+; 7732 : } else if (g->flags & 0x80) {
+
+ 006b9 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 006c0 8b 40 20 mov eax, DWORD PTR [rax+32]
+ 006c3 25 80 00 00 00 and eax, 128 ; 00000080H
+ 006c8 85 c0 test eax, eax
+ 006ca 74 1b je SHORT $LN39@stbi__gif_
+
+; 7733 : g->color_table = (stbi_uc *)g->pal;
+
+ 006cc 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 006d3 48 83 c0 34 add rax, 52 ; 00000034H
+ 006d7 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 006de 48 89 81 38 88
+ 00 00 mov QWORD PTR [rcx+34872], rax
+
+; 7734 : } else
+
+ 006e5 eb 34 jmp SHORT $LN40@stbi__gif_
+$LN39@stbi__gif_:
+
+; 7735 : return stbi__errpuc("missing color table", "Corrupt GIF");
+
+ 006e7 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BE@NAMJKDNF@missing?5color?5table@
+ 006ee e8 00 00 00 00 call stbi__err
+ 006f3 85 c0 test eax, eax
+ 006f5 74 0d je SHORT $LN63@stbi__gif_
+ 006f7 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv315[rbp], 0
+ 00702 eb 0b jmp SHORT $LN64@stbi__gif_
+$LN63@stbi__gif_:
+ 00704 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv315[rbp], 0
+$LN64@stbi__gif_:
+ 0070f 48 8b 85 38 02
+ 00 00 mov rax, QWORD PTR tv315[rbp]
+ 00716 e9 bb 02 00 00 jmp $LN1@stbi__gif_
+$LN40@stbi__gif_:
+$LN38@stbi__gif_:
+
+; 7736 :
+; 7737 : o = stbi__process_gif_raster(s, g);
+
+ 0071b 48 8b 95 68 02
+ 00 00 mov rdx, QWORD PTR g$[rbp]
+ 00722 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00729 e8 00 00 00 00 call stbi__process_gif_raster
+ 0072e 48 89 85 28 01
+ 00 00 mov QWORD PTR o$6[rbp], rax
+
+; 7738 : if (!o)
+
+ 00735 48 83 bd 28 01
+ 00 00 00 cmp QWORD PTR o$6[rbp], 0
+ 0073d 75 07 jne SHORT $LN41@stbi__gif_
+
+; 7739 : return NULL;
+
+ 0073f 33 c0 xor eax, eax
+ 00741 e9 90 02 00 00 jmp $LN1@stbi__gif_
+$LN41@stbi__gif_:
+
+; 7740 :
+; 7741 : // if this was the first frame,
+; 7742 : pcount = g->w * g->h;
+
+ 00746 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0074d 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00754 8b 00 mov eax, DWORD PTR [rax]
+ 00756 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 0075a 89 45 64 mov DWORD PTR pcount$[rbp], eax
+
+; 7743 : if (first_frame && (g->bgindex > 0)) {
+
+ 0075d 83 7d 24 00 cmp DWORD PTR first_frame$[rbp], 0
+ 00761 0f 84 ae 00 00
+ 00 je $LN42@stbi__gif_
+ 00767 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0076e 83 78 24 00 cmp DWORD PTR [rax+36], 0
+ 00772 0f 8e 9d 00 00
+ 00 jle $LN42@stbi__gif_
+
+; 7744 : // if first frame, any pixel not drawn to gets the background color
+; 7745 : for (pi = 0; pi < pcount; ++pi) {
+
+ 00778 c7 45 44 00 00
+ 00 00 mov DWORD PTR pi$[rbp], 0
+ 0077f eb 08 jmp SHORT $LN15@stbi__gif_
+$LN13@stbi__gif_:
+ 00781 8b 45 44 mov eax, DWORD PTR pi$[rbp]
+ 00784 ff c0 inc eax
+ 00786 89 45 44 mov DWORD PTR pi$[rbp], eax
+$LN15@stbi__gif_:
+ 00789 8b 45 64 mov eax, DWORD PTR pcount$[rbp]
+ 0078c 39 45 44 cmp DWORD PTR pi$[rbp], eax
+ 0078f 0f 8d 80 00 00
+ 00 jge $LN14@stbi__gif_
+
+; 7746 : if (g->history[pi] == 0) {
+
+ 00795 48 63 45 44 movsxd rax, DWORD PTR pi$[rbp]
+ 00799 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 007a0 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
+ 007a4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 007a8 85 c0 test eax, eax
+ 007aa 75 64 jne SHORT $LN43@stbi__gif_
+
+; 7747 : g->pal[g->bgindex][3] =
+
+ 007ac 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 007b3 48 63 40 24 movsxd rax, DWORD PTR [rax+36]
+ 007b7 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 007be 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
+ 007c3 b9 01 00 00 00 mov ecx, 1
+ 007c8 48 6b c9 03 imul rcx, rcx, 3
+ 007cc c6 04 08 ff mov BYTE PTR [rax+rcx], 255 ; 000000ffH
+
+; 7748 : 255; // just in case it was made transparent, undo that; It will be reset next frame if need be;
+; 7749 : memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4);
+
+ 007d0 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 007d7 48 63 40 24 movsxd rax, DWORD PTR [rax+36]
+ 007db 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 007e2 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
+ 007e7 8b 4d 44 mov ecx, DWORD PTR pi$[rbp]
+ 007ea c1 e1 02 shl ecx, 2
+ 007ed 48 63 c9 movsxd rcx, ecx
+ 007f0 48 8b 95 68 02
+ 00 00 mov rdx, QWORD PTR g$[rbp]
+ 007f7 48 8b 52 08 mov rdx, QWORD PTR [rdx+8]
+ 007fb 48 03 d1 add rdx, rcx
+ 007fe 48 8b ca mov rcx, rdx
+ 00801 41 b8 04 00 00
+ 00 mov r8d, 4
+ 00807 48 8b d0 mov rdx, rax
+ 0080a e8 00 00 00 00 call memcpy
+ 0080f 90 npad 1
+$LN43@stbi__gif_:
+
+; 7750 : }
+; 7751 : }
+
+ 00810 e9 6c ff ff ff jmp $LN13@stbi__gif_
+$LN14@stbi__gif_:
+$LN42@stbi__gif_:
+
+; 7752 : }
+; 7753 :
+; 7754 : return o;
+
+ 00815 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR o$6[rbp]
+ 0081c e9 b5 01 00 00 jmp $LN1@stbi__gif_
+$LN44@stbi__gif_:
+
+; 7755 : }
+; 7756 :
+; 7757 : case 0x21: // Comment Extension.
+; 7758 : {
+; 7759 : int len;
+; 7760 : int ext = stbi__get8(s);
+
+ 00821 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00828 e8 00 00 00 00 call stbi__get8
+ 0082d 0f b6 c0 movzx eax, al
+ 00830 89 85 64 01 00
+ 00 mov DWORD PTR ext$8[rbp], eax
+
+; 7761 : if (ext == 0xF9) { // Graphic Control Extension.
+
+ 00836 81 bd 64 01 00
+ 00 f9 00 00 00 cmp DWORD PTR ext$8[rbp], 249 ; 000000f9H
+ 00840 0f 85 1c 01 00
+ 00 jne $LN45@stbi__gif_
+
+; 7762 : len = stbi__get8(s);
+
+ 00846 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0084d e8 00 00 00 00 call stbi__get8
+ 00852 0f b6 c0 movzx eax, al
+ 00855 89 85 44 01 00
+ 00 mov DWORD PTR len$7[rbp], eax
+
+; 7763 : if (len == 4) {
+
+ 0085b 83 bd 44 01 00
+ 00 04 cmp DWORD PTR len$7[rbp], 4
+ 00862 0f 85 e5 00 00
+ 00 jne $LN46@stbi__gif_
+
+; 7764 : g->eflags = stbi__get8(s);
+
+ 00868 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0086f e8 00 00 00 00 call stbi__get8
+ 00874 0f b6 c0 movzx eax, al
+ 00877 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0087e 89 41 30 mov DWORD PTR [rcx+48], eax
+
+; 7765 : g->delay =
+
+ 00881 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00888 e8 00 00 00 00 call stbi__get16le
+ 0088d 6b c0 0a imul eax, eax, 10
+ 00890 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00897 89 81 68 88 00
+ 00 mov DWORD PTR [rcx+34920], eax
+
+; 7766 : 10 *
+; 7767 : stbi__get16le(
+; 7768 : s); // delay - 1/100th of a second, saving as 1/1000ths.
+; 7769 :
+; 7770 : // unset old transparent
+; 7771 : if (g->transparent >= 0) {
+
+ 0089d 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 008a4 83 78 2c 00 cmp DWORD PTR [rax+44], 0
+ 008a8 7c 24 jl SHORT $LN48@stbi__gif_
+
+; 7772 : g->pal[g->transparent][3] = 255;
+
+ 008aa 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 008b1 48 63 40 2c movsxd rax, DWORD PTR [rax+44]
+ 008b5 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 008bc 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
+ 008c1 b9 01 00 00 00 mov ecx, 1
+ 008c6 48 6b c9 03 imul rcx, rcx, 3
+ 008ca c6 04 08 ff mov BYTE PTR [rax+rcx], 255 ; 000000ffH
+$LN48@stbi__gif_:
+
+; 7773 : }
+; 7774 : if (g->eflags & 0x01) {
+
+ 008ce 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 008d5 8b 40 30 mov eax, DWORD PTR [rax+48]
+ 008d8 83 e0 01 and eax, 1
+ 008db 85 c0 test eax, eax
+ 008dd 74 4c je SHORT $LN49@stbi__gif_
+
+; 7775 : g->transparent = stbi__get8(s);
+
+ 008df 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 008e6 e8 00 00 00 00 call stbi__get8
+ 008eb 0f b6 c0 movzx eax, al
+ 008ee 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 008f5 89 41 2c mov DWORD PTR [rcx+44], eax
+
+; 7776 : if (g->transparent >= 0) {
+
+ 008f8 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 008ff 83 78 2c 00 cmp DWORD PTR [rax+44], 0
+ 00903 7c 24 jl SHORT $LN51@stbi__gif_
+
+; 7777 : g->pal[g->transparent][3] = 0;
+
+ 00905 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0090c 48 63 40 2c movsxd rax, DWORD PTR [rax+44]
+ 00910 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00917 48 8d 44 81 34 lea rax, QWORD PTR [rcx+rax*4+52]
+ 0091c b9 01 00 00 00 mov ecx, 1
+ 00921 48 6b c9 03 imul rcx, rcx, 3
+ 00925 c6 04 08 00 mov BYTE PTR [rax+rcx], 0
+$LN51@stbi__gif_:
+
+; 7778 : }
+; 7779 : } else {
+
+ 00929 eb 20 jmp SHORT $LN50@stbi__gif_
+$LN49@stbi__gif_:
+
+; 7780 : // don't need transparent
+; 7781 : stbi__skip(s, 1);
+
+ 0092b ba 01 00 00 00 mov edx, 1
+ 00930 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00937 e8 00 00 00 00 call stbi__skip
+ 0093c 90 npad 1
+
+; 7782 : g->transparent = -1;
+
+ 0093d 48 8b 85 68 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00944 c7 40 2c ff ff
+ ff ff mov DWORD PTR [rax+44], -1
+$LN50@stbi__gif_:
+
+; 7783 : }
+; 7784 : } else {
+
+ 0094b eb 15 jmp SHORT $LN47@stbi__gif_
+$LN46@stbi__gif_:
+
+; 7785 : stbi__skip(s, len);
+
+ 0094d 8b 95 44 01 00
+ 00 mov edx, DWORD PTR len$7[rbp]
+ 00953 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0095a e8 00 00 00 00 call stbi__skip
+ 0095f 90 npad 1
+
+; 7786 : break;
+
+ 00960 eb 6f jmp SHORT $LN11@stbi__gif_
+$LN47@stbi__gif_:
+$LN45@stbi__gif_:
+$LN16@stbi__gif_:
+
+; 7787 : }
+; 7788 : }
+; 7789 : while ((len = stbi__get8(s)) != 0) {
+
+ 00962 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00969 e8 00 00 00 00 call stbi__get8
+ 0096e 0f b6 c0 movzx eax, al
+ 00971 89 85 44 01 00
+ 00 mov DWORD PTR len$7[rbp], eax
+ 00977 83 bd 44 01 00
+ 00 00 cmp DWORD PTR len$7[rbp], 0
+ 0097e 74 15 je SHORT $LN17@stbi__gif_
+
+; 7790 : stbi__skip(s, len);
+
+ 00980 8b 95 44 01 00
+ 00 mov edx, DWORD PTR len$7[rbp]
+ 00986 48 8b 8d 60 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0098d e8 00 00 00 00 call stbi__skip
+ 00992 90 npad 1
+
+; 7791 : }
+
+ 00993 eb cd jmp SHORT $LN16@stbi__gif_
+$LN17@stbi__gif_:
+
+; 7792 : break;
+
+ 00995 eb 3a jmp SHORT $LN11@stbi__gif_
+$LN52@stbi__gif_:
+
+; 7793 : }
+; 7794 :
+; 7795 : case 0x3B: // gif stream termination code
+; 7796 : return (stbi_uc *)s; // using '1' causes warning on some compilers
+
+ 00997 48 8b 85 60 02
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0099e eb 36 jmp SHORT $LN1@stbi__gif_
+$LN53@stbi__gif_:
+
+; 7797 :
+; 7798 : default:
+; 7799 : return stbi__errpuc("unknown code", "Corrupt GIF");
+
+ 009a0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@DJABBOOH@unknown?5code@
+ 009a7 e8 00 00 00 00 call stbi__err
+ 009ac 85 c0 test eax, eax
+ 009ae 74 0d je SHORT $LN65@stbi__gif_
+ 009b0 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv409[rbp], 0
+ 009bb eb 0b jmp SHORT $LN66@stbi__gif_
+$LN65@stbi__gif_:
+ 009bd 48 c7 85 38 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv409[rbp], 0
+$LN66@stbi__gif_:
+ 009c8 48 8b 85 38 02
+ 00 00 mov rax, QWORD PTR tv409[rbp]
+ 009cf eb 05 jmp SHORT $LN1@stbi__gif_
+$LN11@stbi__gif_:
+
+; 7800 : }
+; 7801 : }
+
+ 009d1 e9 ae f9 ff ff jmp $LN8@stbi__gif_
+$LN1@stbi__gif_:
+
+; 7802 : }
+
+ 009d6 48 8d a5 48 02
+ 00 00 lea rsp, QWORD PTR [rbp+584]
+ 009dd 5f pop rdi
+ 009de 5d pop rbp
+ 009df c3 ret 0
+stbi__gif_load_next ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__process_gif_raster
+_TEXT SEGMENT
+lzw_cs$ = 4
+len$ = 36
+init_code$ = 68
+first$ = 100
+codesize$ = 132
+codemask$ = 164
+avail$ = 196
+oldcode$ = 228
+bits$ = 260
+valid_bits$ = 292
+clear$ = 324
+p$ = 360
+code$1 = 388
+tv192 = 596
+tv242 = 596
+tv246 = 596
+tv273 = 596
+tv297 = 596
+tv163 = 600
+tv174 = 600
+tv198 = 600
+tv210 = 600
+s$ = 640
+g$ = 648
+stbi__process_gif_raster PROC ; COMDAT
+
+; 7530 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 88 02
+ 00 00 sub rsp, 648 ; 00000288H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 7531 : stbi_uc lzw_cs;
+; 7532 : stbi__int32 len, init_code;
+; 7533 : stbi__uint32 first;
+; 7534 : stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear;
+; 7535 : stbi__gif_lzw *p;
+; 7536 :
+; 7537 : lzw_cs = stbi__get8(s);
+
+ 00025 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002c e8 00 00 00 00 call stbi__get8
+ 00031 88 45 04 mov BYTE PTR lzw_cs$[rbp], al
+
+; 7538 : if (lzw_cs > 12)
+
+ 00034 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
+ 00038 83 f8 0c cmp eax, 12
+ 0003b 7e 07 jle SHORT $LN10@stbi__proc
+
+; 7539 : return NULL;
+
+ 0003d 33 c0 xor eax, eax
+ 0003f e9 a2 04 00 00 jmp $LN1@stbi__proc
+$LN10@stbi__proc:
+
+; 7540 : clear = 1 << lzw_cs;
+
+ 00044 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
+ 00048 b9 01 00 00 00 mov ecx, 1
+ 0004d 89 8d 54 02 00
+ 00 mov DWORD PTR tv242[rbp], ecx
+ 00053 0f b6 c8 movzx ecx, al
+ 00056 8b 85 54 02 00
+ 00 mov eax, DWORD PTR tv242[rbp]
+ 0005c d3 e0 shl eax, cl
+ 0005e 89 85 44 01 00
+ 00 mov DWORD PTR clear$[rbp], eax
+
+; 7541 : first = 1;
+
+ 00064 c7 45 64 01 00
+ 00 00 mov DWORD PTR first$[rbp], 1
+
+; 7542 : codesize = lzw_cs + 1;
+
+ 0006b 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
+ 0006f ff c0 inc eax
+ 00071 89 85 84 00 00
+ 00 mov DWORD PTR codesize$[rbp], eax
+
+; 7543 : codemask = (1 << codesize) - 1;
+
+ 00077 8b 85 84 00 00
+ 00 mov eax, DWORD PTR codesize$[rbp]
+ 0007d b9 01 00 00 00 mov ecx, 1
+ 00082 89 8d 54 02 00
+ 00 mov DWORD PTR tv246[rbp], ecx
+ 00088 0f b6 c8 movzx ecx, al
+ 0008b 8b 85 54 02 00
+ 00 mov eax, DWORD PTR tv246[rbp]
+ 00091 d3 e0 shl eax, cl
+ 00093 ff c8 dec eax
+ 00095 89 85 a4 00 00
+ 00 mov DWORD PTR codemask$[rbp], eax
+
+; 7544 : bits = 0;
+
+ 0009b c7 85 04 01 00
+ 00 00 00 00 00 mov DWORD PTR bits$[rbp], 0
+
+; 7545 : valid_bits = 0;
+
+ 000a5 c7 85 24 01 00
+ 00 00 00 00 00 mov DWORD PTR valid_bits$[rbp], 0
+
+; 7546 : for (init_code = 0; init_code < clear; init_code++) {
+
+ 000af c7 45 44 00 00
+ 00 00 mov DWORD PTR init_code$[rbp], 0
+ 000b6 eb 08 jmp SHORT $LN4@stbi__proc
+$LN2@stbi__proc:
+ 000b8 8b 45 44 mov eax, DWORD PTR init_code$[rbp]
+ 000bb ff c0 inc eax
+ 000bd 89 45 44 mov DWORD PTR init_code$[rbp], eax
+$LN4@stbi__proc:
+ 000c0 8b 85 44 01 00
+ 00 mov eax, DWORD PTR clear$[rbp]
+ 000c6 39 45 44 cmp DWORD PTR init_code$[rbp], eax
+ 000c9 7d 46 jge SHORT $LN3@stbi__proc
+
+; 7547 : g->codes[init_code].prefix = -1;
+
+ 000cb 48 63 45 44 movsxd rax, DWORD PTR init_code$[rbp]
+ 000cf b9 ff ff ff ff mov ecx, -1
+ 000d4 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR g$[rbp]
+ 000db 66 89 8c 82 34
+ 08 00 00 mov WORD PTR [rdx+rax*4+2100], cx
+
+; 7548 : g->codes[init_code].first = (stbi_uc)init_code;
+
+ 000e3 48 63 45 44 movsxd rax, DWORD PTR init_code$[rbp]
+ 000e7 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 000ee 0f b6 55 44 movzx edx, BYTE PTR init_code$[rbp]
+ 000f2 88 94 81 36 08
+ 00 00 mov BYTE PTR [rcx+rax*4+2102], dl
+
+; 7549 : g->codes[init_code].suffix = (stbi_uc)init_code;
+
+ 000f9 48 63 45 44 movsxd rax, DWORD PTR init_code$[rbp]
+ 000fd 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00104 0f b6 55 44 movzx edx, BYTE PTR init_code$[rbp]
+ 00108 88 94 81 37 08
+ 00 00 mov BYTE PTR [rcx+rax*4+2103], dl
+
+; 7550 : }
+
+ 0010f eb a7 jmp SHORT $LN2@stbi__proc
+$LN3@stbi__proc:
+
+; 7551 :
+; 7552 : // support no starting clear code
+; 7553 : avail = clear + 2;
+
+ 00111 8b 85 44 01 00
+ 00 mov eax, DWORD PTR clear$[rbp]
+ 00117 83 c0 02 add eax, 2
+ 0011a 89 85 c4 00 00
+ 00 mov DWORD PTR avail$[rbp], eax
+
+; 7554 : oldcode = -1;
+
+ 00120 c7 85 e4 00 00
+ 00 ff ff ff ff mov DWORD PTR oldcode$[rbp], -1
+
+; 7555 :
+; 7556 : len = 0;
+
+ 0012a c7 45 24 00 00
+ 00 00 mov DWORD PTR len$[rbp], 0
+$LN5@stbi__proc:
+
+; 7557 : for (;;) {
+; 7558 : if (valid_bits < codesize) {
+
+ 00131 8b 85 84 00 00
+ 00 mov eax, DWORD PTR codesize$[rbp]
+ 00137 39 85 24 01 00
+ 00 cmp DWORD PTR valid_bits$[rbp], eax
+ 0013d 7d 71 jge SHORT $LN11@stbi__proc
+
+; 7559 : if (len == 0) {
+
+ 0013f 83 7d 24 00 cmp DWORD PTR len$[rbp], 0
+ 00143 75 28 jne SHORT $LN13@stbi__proc
+
+; 7560 : len = stbi__get8(s); // start new block
+
+ 00145 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0014c e8 00 00 00 00 call stbi__get8
+ 00151 0f b6 c0 movzx eax, al
+ 00154 89 45 24 mov DWORD PTR len$[rbp], eax
+
+; 7561 : if (len == 0)
+
+ 00157 83 7d 24 00 cmp DWORD PTR len$[rbp], 0
+ 0015b 75 10 jne SHORT $LN14@stbi__proc
+
+; 7562 : return g->out;
+
+ 0015d 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00164 48 8b 40 08 mov rax, QWORD PTR [rax+8]
+ 00168 e9 79 03 00 00 jmp $LN1@stbi__proc
+$LN14@stbi__proc:
+$LN13@stbi__proc:
+
+; 7563 : }
+; 7564 : --len;
+
+ 0016d 8b 45 24 mov eax, DWORD PTR len$[rbp]
+ 00170 ff c8 dec eax
+ 00172 89 45 24 mov DWORD PTR len$[rbp], eax
+
+; 7565 : bits |= (stbi__int32)stbi__get8(s) << valid_bits;
+
+ 00175 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0017c e8 00 00 00 00 call stbi__get8
+ 00181 0f b6 c0 movzx eax, al
+ 00184 8b 8d 24 01 00
+ 00 mov ecx, DWORD PTR valid_bits$[rbp]
+ 0018a d3 e0 shl eax, cl
+ 0018c 8b 8d 04 01 00
+ 00 mov ecx, DWORD PTR bits$[rbp]
+ 00192 0b c8 or ecx, eax
+ 00194 8b c1 mov eax, ecx
+ 00196 89 85 04 01 00
+ 00 mov DWORD PTR bits$[rbp], eax
+
+; 7566 : valid_bits += 8;
+
+ 0019c 8b 85 24 01 00
+ 00 mov eax, DWORD PTR valid_bits$[rbp]
+ 001a2 83 c0 08 add eax, 8
+ 001a5 89 85 24 01 00
+ 00 mov DWORD PTR valid_bits$[rbp], eax
+
+; 7567 : } else {
+
+ 001ab e9 31 03 00 00 jmp $LN12@stbi__proc
+$LN11@stbi__proc:
+
+; 7568 : stbi__int32 code = bits & codemask;
+
+ 001b0 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR codemask$[rbp]
+ 001b6 8b 8d 04 01 00
+ 00 mov ecx, DWORD PTR bits$[rbp]
+ 001bc 23 c8 and ecx, eax
+ 001be 8b c1 mov eax, ecx
+ 001c0 89 85 84 01 00
+ 00 mov DWORD PTR code$1[rbp], eax
+
+; 7569 : bits >>= codesize;
+
+ 001c6 8b 85 84 00 00
+ 00 mov eax, DWORD PTR codesize$[rbp]
+ 001cc 0f b6 c8 movzx ecx, al
+ 001cf 8b 85 04 01 00
+ 00 mov eax, DWORD PTR bits$[rbp]
+ 001d5 d3 f8 sar eax, cl
+ 001d7 89 85 04 01 00
+ 00 mov DWORD PTR bits$[rbp], eax
+
+; 7570 : valid_bits -= codesize;
+
+ 001dd 8b 85 84 00 00
+ 00 mov eax, DWORD PTR codesize$[rbp]
+ 001e3 8b 8d 24 01 00
+ 00 mov ecx, DWORD PTR valid_bits$[rbp]
+ 001e9 2b c8 sub ecx, eax
+ 001eb 8b c1 mov eax, ecx
+ 001ed 89 85 24 01 00
+ 00 mov DWORD PTR valid_bits$[rbp], eax
+
+; 7571 : // @OPTIMIZE: is there some way we can accelerate the non-clear path?
+; 7572 : if (code == clear) { // clear code
+
+ 001f3 8b 85 44 01 00
+ 00 mov eax, DWORD PTR clear$[rbp]
+ 001f9 39 85 84 01 00
+ 00 cmp DWORD PTR code$1[rbp], eax
+ 001ff 75 55 jne SHORT $LN15@stbi__proc
+
+; 7573 : codesize = lzw_cs + 1;
+
+ 00201 0f b6 45 04 movzx eax, BYTE PTR lzw_cs$[rbp]
+ 00205 ff c0 inc eax
+ 00207 89 85 84 00 00
+ 00 mov DWORD PTR codesize$[rbp], eax
+
+; 7574 : codemask = (1 << codesize) - 1;
+
+ 0020d 8b 85 84 00 00
+ 00 mov eax, DWORD PTR codesize$[rbp]
+ 00213 b9 01 00 00 00 mov ecx, 1
+ 00218 89 8d 54 02 00
+ 00 mov DWORD PTR tv273[rbp], ecx
+ 0021e 0f b6 c8 movzx ecx, al
+ 00221 8b 85 54 02 00
+ 00 mov eax, DWORD PTR tv273[rbp]
+ 00227 d3 e0 shl eax, cl
+ 00229 ff c8 dec eax
+ 0022b 89 85 a4 00 00
+ 00 mov DWORD PTR codemask$[rbp], eax
+
+; 7575 : avail = clear + 2;
+
+ 00231 8b 85 44 01 00
+ 00 mov eax, DWORD PTR clear$[rbp]
+ 00237 83 c0 02 add eax, 2
+ 0023a 89 85 c4 00 00
+ 00 mov DWORD PTR avail$[rbp], eax
+
+; 7576 : oldcode = -1;
+
+ 00240 c7 85 e4 00 00
+ 00 ff ff ff ff mov DWORD PTR oldcode$[rbp], -1
+
+; 7577 : first = 0;
+
+ 0024a c7 45 64 00 00
+ 00 00 mov DWORD PTR first$[rbp], 0
+ 00251 e9 8b 02 00 00 jmp $LN16@stbi__proc
+$LN15@stbi__proc:
+
+; 7578 : } else if (code == clear + 1) { // end of stream code
+
+ 00256 8b 85 44 01 00
+ 00 mov eax, DWORD PTR clear$[rbp]
+ 0025c ff c0 inc eax
+ 0025e 39 85 84 01 00
+ 00 cmp DWORD PTR code$1[rbp], eax
+ 00264 75 4f jne SHORT $LN17@stbi__proc
+
+; 7579 : stbi__skip(s, len);
+
+ 00266 8b 55 24 mov edx, DWORD PTR len$[rbp]
+ 00269 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00270 e8 00 00 00 00 call stbi__skip
+ 00275 90 npad 1
+$LN8@stbi__proc:
+
+; 7580 : while ((len = stbi__get8(s)) > 0)
+
+ 00276 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0027d e8 00 00 00 00 call stbi__get8
+ 00282 0f b6 c0 movzx eax, al
+ 00285 89 45 24 mov DWORD PTR len$[rbp], eax
+ 00288 83 7d 24 00 cmp DWORD PTR len$[rbp], 0
+ 0028c 7e 12 jle SHORT $LN9@stbi__proc
+
+; 7581 : stbi__skip(s, len);
+
+ 0028e 8b 55 24 mov edx, DWORD PTR len$[rbp]
+ 00291 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00298 e8 00 00 00 00 call stbi__skip
+ 0029d 90 npad 1
+ 0029e eb d6 jmp SHORT $LN8@stbi__proc
+$LN9@stbi__proc:
+
+; 7582 : return g->out;
+
+ 002a0 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 002a7 48 8b 40 08 mov rax, QWORD PTR [rax+8]
+ 002ab e9 36 02 00 00 jmp $LN1@stbi__proc
+ 002b0 e9 2c 02 00 00 jmp $LN18@stbi__proc
+$LN17@stbi__proc:
+
+; 7583 : } else if (code <= avail) {
+
+ 002b5 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR avail$[rbp]
+ 002bb 39 85 84 01 00
+ 00 cmp DWORD PTR code$1[rbp], eax
+ 002c1 0f 8f e9 01 00
+ 00 jg $LN19@stbi__proc
+
+; 7584 : if (first) {
+
+ 002c7 83 7d 64 00 cmp DWORD PTR first$[rbp], 0
+ 002cb 74 34 je SHORT $LN21@stbi__proc
+
+; 7585 : return stbi__errpuc("no clear code", "Corrupt GIF");
+
+ 002cd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@MGDACKOJ@no?5clear?5code@
+ 002d4 e8 00 00 00 00 call stbi__err
+ 002d9 85 c0 test eax, eax
+ 002db 74 0d je SHORT $LN28@stbi__proc
+ 002dd 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv163[rbp], 0
+ 002e8 eb 0b jmp SHORT $LN29@stbi__proc
+$LN28@stbi__proc:
+ 002ea 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv163[rbp], 0
+$LN29@stbi__proc:
+ 002f5 48 8b 85 58 02
+ 00 00 mov rax, QWORD PTR tv163[rbp]
+ 002fc e9 e5 01 00 00 jmp $LN1@stbi__proc
+$LN21@stbi__proc:
+
+; 7586 : }
+; 7587 :
+; 7588 : if (oldcode >= 0) {
+
+ 00301 83 bd e4 00 00
+ 00 00 cmp DWORD PTR oldcode$[rbp], 0
+ 00308 0f 8c ec 00 00
+ 00 jl $LN22@stbi__proc
+
+; 7589 : p = &g->codes[avail++];
+
+ 0030e 48 63 85 c4 00
+ 00 00 movsxd rax, DWORD PTR avail$[rbp]
+ 00315 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0031c 48 8d 84 81 34
+ 08 00 00 lea rax, QWORD PTR [rcx+rax*4+2100]
+ 00324 48 89 85 68 01
+ 00 00 mov QWORD PTR p$[rbp], rax
+ 0032b 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR avail$[rbp]
+ 00331 ff c0 inc eax
+ 00333 89 85 c4 00 00
+ 00 mov DWORD PTR avail$[rbp], eax
+
+; 7590 : if (avail > 8192) {
+
+ 00339 81 bd c4 00 00
+ 00 00 20 00 00 cmp DWORD PTR avail$[rbp], 8192 ; 00002000H
+ 00343 7e 34 jle SHORT $LN24@stbi__proc
+
+; 7591 : return stbi__errpuc("too many codes",
+
+ 00345 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@GJNJCPDJ@too?5many?5codes@
+ 0034c e8 00 00 00 00 call stbi__err
+ 00351 85 c0 test eax, eax
+ 00353 74 0d je SHORT $LN30@stbi__proc
+ 00355 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv174[rbp], 0
+ 00360 eb 0b jmp SHORT $LN31@stbi__proc
+$LN30@stbi__proc:
+ 00362 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv174[rbp], 0
+$LN31@stbi__proc:
+ 0036d 48 8b 85 58 02
+ 00 00 mov rax, QWORD PTR tv174[rbp]
+ 00374 e9 6d 01 00 00 jmp $LN1@stbi__proc
+$LN24@stbi__proc:
+
+; 7592 : "Corrupt GIF");
+; 7593 : }
+; 7594 :
+; 7595 : p->prefix = (stbi__int16)oldcode;
+
+ 00379 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 00380 0f b7 8d e4 00
+ 00 00 movzx ecx, WORD PTR oldcode$[rbp]
+ 00387 66 89 08 mov WORD PTR [rax], cx
+
+; 7596 : p->first = g->codes[oldcode].first;
+
+ 0038a 48 63 85 e4 00
+ 00 00 movsxd rax, DWORD PTR oldcode$[rbp]
+ 00391 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR p$[rbp]
+ 00398 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR g$[rbp]
+ 0039f 0f b6 84 82 36
+ 08 00 00 movzx eax, BYTE PTR [rdx+rax*4+2102]
+ 003a7 88 41 02 mov BYTE PTR [rcx+2], al
+
+; 7597 : p->suffix = (code == avail) ? p->first :
+
+ 003aa 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR avail$[rbp]
+ 003b0 39 85 84 01 00
+ 00 cmp DWORD PTR code$1[rbp], eax
+ 003b6 75 13 jne SHORT $LN32@stbi__proc
+ 003b8 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 003bf 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 003c3 89 85 54 02 00
+ 00 mov DWORD PTR tv192[rbp], eax
+ 003c9 eb 1c jmp SHORT $LN33@stbi__proc
+$LN32@stbi__proc:
+ 003cb 48 63 85 84 01
+ 00 00 movsxd rax, DWORD PTR code$1[rbp]
+ 003d2 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 003d9 0f b6 84 81 36
+ 08 00 00 movzx eax, BYTE PTR [rcx+rax*4+2102]
+ 003e1 89 85 54 02 00
+ 00 mov DWORD PTR tv192[rbp], eax
+$LN33@stbi__proc:
+ 003e7 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 003ee 0f b6 8d 54 02
+ 00 00 movzx ecx, BYTE PTR tv192[rbp]
+ 003f5 88 48 03 mov BYTE PTR [rax+3], cl
+ 003f8 eb 42 jmp SHORT $LN23@stbi__proc
+$LN22@stbi__proc:
+
+; 7598 : g->codes[code].first;
+; 7599 : } else if (code == avail)
+
+ 003fa 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR avail$[rbp]
+ 00400 39 85 84 01 00
+ 00 cmp DWORD PTR code$1[rbp], eax
+ 00406 75 34 jne SHORT $LN25@stbi__proc
+
+; 7600 : return stbi__errpuc("illegal code in raster",
+
+ 00408 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@
+ 0040f e8 00 00 00 00 call stbi__err
+ 00414 85 c0 test eax, eax
+ 00416 74 0d je SHORT $LN34@stbi__proc
+ 00418 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv198[rbp], 0
+ 00423 eb 0b jmp SHORT $LN35@stbi__proc
+$LN34@stbi__proc:
+ 00425 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv198[rbp], 0
+$LN35@stbi__proc:
+ 00430 48 8b 85 58 02
+ 00 00 mov rax, QWORD PTR tv198[rbp]
+ 00437 e9 aa 00 00 00 jmp $LN1@stbi__proc
+$LN25@stbi__proc:
+$LN23@stbi__proc:
+
+; 7601 : "Corrupt GIF");
+; 7602 :
+; 7603 : stbi__out_gif_code(g, (stbi__uint16)code);
+
+ 0043c 0f b7 95 84 01
+ 00 00 movzx edx, WORD PTR code$1[rbp]
+ 00443 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0044a e8 00 00 00 00 call stbi__out_gif_code
+ 0044f 90 npad 1
+
+; 7604 :
+; 7605 : if ((avail & codemask) == 0 && avail <= 0x0FFF) {
+
+ 00450 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR codemask$[rbp]
+ 00456 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR avail$[rbp]
+ 0045c 23 c8 and ecx, eax
+ 0045e 8b c1 mov eax, ecx
+ 00460 85 c0 test eax, eax
+ 00462 75 3e jne SHORT $LN26@stbi__proc
+ 00464 81 bd c4 00 00
+ 00 ff 0f 00 00 cmp DWORD PTR avail$[rbp], 4095 ; 00000fffH
+ 0046e 7f 32 jg SHORT $LN26@stbi__proc
+
+; 7606 : codesize++;
+
+ 00470 8b 85 84 00 00
+ 00 mov eax, DWORD PTR codesize$[rbp]
+ 00476 ff c0 inc eax
+ 00478 89 85 84 00 00
+ 00 mov DWORD PTR codesize$[rbp], eax
+
+; 7607 : codemask = (1 << codesize) - 1;
+
+ 0047e 8b 85 84 00 00
+ 00 mov eax, DWORD PTR codesize$[rbp]
+ 00484 b9 01 00 00 00 mov ecx, 1
+ 00489 89 8d 54 02 00
+ 00 mov DWORD PTR tv297[rbp], ecx
+ 0048f 0f b6 c8 movzx ecx, al
+ 00492 8b 85 54 02 00
+ 00 mov eax, DWORD PTR tv297[rbp]
+ 00498 d3 e0 shl eax, cl
+ 0049a ff c8 dec eax
+ 0049c 89 85 a4 00 00
+ 00 mov DWORD PTR codemask$[rbp], eax
+$LN26@stbi__proc:
+
+; 7608 : }
+; 7609 :
+; 7610 : oldcode = code;
+
+ 004a2 8b 85 84 01 00
+ 00 mov eax, DWORD PTR code$1[rbp]
+ 004a8 89 85 e4 00 00
+ 00 mov DWORD PTR oldcode$[rbp], eax
+
+; 7611 : } else {
+
+ 004ae eb 31 jmp SHORT $LN20@stbi__proc
+$LN19@stbi__proc:
+
+; 7612 : return stbi__errpuc("illegal code in raster", "Corrupt GIF");
+
+ 004b0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@
+ 004b7 e8 00 00 00 00 call stbi__err
+ 004bc 85 c0 test eax, eax
+ 004be 74 0d je SHORT $LN36@stbi__proc
+ 004c0 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv210[rbp], 0
+ 004cb eb 0b jmp SHORT $LN37@stbi__proc
+$LN36@stbi__proc:
+ 004cd 48 c7 85 58 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv210[rbp], 0
+$LN37@stbi__proc:
+ 004d8 48 8b 85 58 02
+ 00 00 mov rax, QWORD PTR tv210[rbp]
+ 004df eb 05 jmp SHORT $LN1@stbi__proc
+$LN20@stbi__proc:
+$LN18@stbi__proc:
+$LN16@stbi__proc:
+$LN12@stbi__proc:
+
+; 7613 : }
+; 7614 : }
+; 7615 : }
+
+ 004e1 e9 4b fc ff ff jmp $LN5@stbi__proc
+$LN1@stbi__proc:
+
+; 7616 : }
+
+ 004e6 48 8d a5 68 02
+ 00 00 lea rsp, QWORD PTR [rbp+616]
+ 004ed 5f pop rdi
+ 004ee 5d pop rbp
+ 004ef c3 ret 0
+stbi__process_gif_raster ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__out_gif_code
+_TEXT SEGMENT
+p$ = 8
+c$ = 40
+idx$ = 68
+tv257 = 276
+g$ = 320
+code$ = 328
+stbi__out_gif_code PROC ; COMDAT
+
+; 7492 : {
+
+ 00000 66 89 54 24 10 mov WORD PTR [rsp+16], dx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 7493 : stbi_uc *p, *c;
+; 7494 : int idx;
+; 7495 :
+; 7496 : // recurse to decode the prefixes, since the linked-list is backwards,
+; 7497 : // and working backwards through an interleaved image would be nasty
+; 7498 : if (g->codes[code].prefix >= 0)
+
+ 00025 0f b7 85 48 01
+ 00 00 movzx eax, WORD PTR code$[rbp]
+ 0002c 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00033 0f bf 84 81 34
+ 08 00 00 movsx eax, WORD PTR [rcx+rax*4+2100]
+ 0003b 85 c0 test eax, eax
+ 0003d 7c 23 jl SHORT $LN4@stbi__out_
+
+; 7499 : stbi__out_gif_code(g, g->codes[code].prefix);
+
+ 0003f 0f b7 85 48 01
+ 00 00 movzx eax, WORD PTR code$[rbp]
+ 00046 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0004d 0f b7 94 81 34
+ 08 00 00 movzx edx, WORD PTR [rcx+rax*4+2100]
+ 00055 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0005c e8 00 00 00 00 call stbi__out_gif_code
+ 00061 90 npad 1
+$LN4@stbi__out_:
+
+; 7500 :
+; 7501 : if (g->cur_y >= g->max_y)
+
+ 00062 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00069 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00070 8b 89 58 88 00
+ 00 mov ecx, DWORD PTR [rcx+34904]
+ 00076 39 88 60 88 00
+ 00 cmp DWORD PTR [rax+34912], ecx
+ 0007c 7c 05 jl SHORT $LN5@stbi__out_
+
+; 7502 : return;
+
+ 0007e e9 64 02 00 00 jmp $LN1@stbi__out_
+$LN5@stbi__out_:
+
+; 7503 :
+; 7504 : idx = g->cur_x + g->cur_y;
+
+ 00083 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0008a 8b 80 5c 88 00
+ 00 mov eax, DWORD PTR [rax+34908]
+ 00090 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00097 03 81 60 88 00
+ 00 add eax, DWORD PTR [rcx+34912]
+ 0009d 89 45 44 mov DWORD PTR idx$[rbp], eax
+
+; 7505 : p = &g->out[idx];
+
+ 000a0 48 63 45 44 movsxd rax, DWORD PTR idx$[rbp]
+ 000a4 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 000ab 48 8b 49 08 mov rcx, QWORD PTR [rcx+8]
+ 000af 48 03 c8 add rcx, rax
+ 000b2 48 8b c1 mov rax, rcx
+ 000b5 48 89 45 08 mov QWORD PTR p$[rbp], rax
+
+; 7506 : g->history[idx / 4] = 1;
+
+ 000b9 8b 45 44 mov eax, DWORD PTR idx$[rbp]
+ 000bc 99 cdq
+ 000bd 83 e2 03 and edx, 3
+ 000c0 03 c2 add eax, edx
+ 000c2 c1 f8 02 sar eax, 2
+ 000c5 48 98 cdqe
+ 000c7 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 000ce 48 8b 49 18 mov rcx, QWORD PTR [rcx+24]
+ 000d2 c6 04 01 01 mov BYTE PTR [rcx+rax], 1
+
+; 7507 :
+; 7508 : c = &g->color_table[g->codes[code].suffix * 4];
+
+ 000d6 0f b7 85 48 01
+ 00 00 movzx eax, WORD PTR code$[rbp]
+ 000dd 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 000e4 0f b6 84 81 37
+ 08 00 00 movzx eax, BYTE PTR [rcx+rax*4+2103]
+ 000ec c1 e0 02 shl eax, 2
+ 000ef 48 98 cdqe
+ 000f1 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 000f8 48 8b 89 38 88
+ 00 00 mov rcx, QWORD PTR [rcx+34872]
+ 000ff 48 03 c8 add rcx, rax
+ 00102 48 8b c1 mov rax, rcx
+ 00105 48 89 45 28 mov QWORD PTR c$[rbp], rax
+
+; 7509 : if (c[3] > 128) { // don't render transparent pixels;
+
+ 00109 b8 01 00 00 00 mov eax, 1
+ 0010e 48 6b c0 03 imul rax, rax, 3
+ 00112 48 8b 4d 28 mov rcx, QWORD PTR c$[rbp]
+ 00116 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0011a 3d 80 00 00 00 cmp eax, 128 ; 00000080H
+ 0011f 0f 8e 88 00 00
+ 00 jle $LN6@stbi__out_
+
+; 7510 : p[0] = c[2];
+
+ 00125 b8 01 00 00 00 mov eax, 1
+ 0012a 48 6b c0 02 imul rax, rax, 2
+ 0012e b9 01 00 00 00 mov ecx, 1
+ 00133 48 6b c9 00 imul rcx, rcx, 0
+ 00137 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
+ 0013b 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
+ 0013f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00144 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 7511 : p[1] = c[1];
+
+ 00147 b8 01 00 00 00 mov eax, 1
+ 0014c 48 6b c0 01 imul rax, rax, 1
+ 00150 b9 01 00 00 00 mov ecx, 1
+ 00155 48 6b c9 01 imul rcx, rcx, 1
+ 00159 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
+ 0015d 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
+ 00161 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00166 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 7512 : p[2] = c[0];
+
+ 00169 b8 01 00 00 00 mov eax, 1
+ 0016e 48 6b c0 00 imul rax, rax, 0
+ 00172 b9 01 00 00 00 mov ecx, 1
+ 00177 48 6b c9 02 imul rcx, rcx, 2
+ 0017b 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
+ 0017f 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
+ 00183 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00188 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 7513 : p[3] = c[3];
+
+ 0018b b8 01 00 00 00 mov eax, 1
+ 00190 48 6b c0 03 imul rax, rax, 3
+ 00194 b9 01 00 00 00 mov ecx, 1
+ 00199 48 6b c9 03 imul rcx, rcx, 3
+ 0019d 48 8b 55 08 mov rdx, QWORD PTR p$[rbp]
+ 001a1 4c 8b 45 28 mov r8, QWORD PTR c$[rbp]
+ 001a5 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 001aa 88 04 0a mov BYTE PTR [rdx+rcx], al
+$LN6@stbi__out_:
+
+; 7514 : }
+; 7515 : g->cur_x += 4;
+
+ 001ad 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001b4 8b 80 5c 88 00
+ 00 mov eax, DWORD PTR [rax+34908]
+ 001ba 83 c0 04 add eax, 4
+ 001bd 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 001c4 89 81 5c 88 00
+ 00 mov DWORD PTR [rcx+34908], eax
+
+; 7516 :
+; 7517 : if (g->cur_x >= g->max_x) {
+
+ 001ca 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001d1 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 001d8 8b 89 54 88 00
+ 00 mov ecx, DWORD PTR [rcx+34900]
+ 001de 39 88 5c 88 00
+ 00 cmp DWORD PTR [rax+34908], ecx
+ 001e4 0f 8c fd 00 00
+ 00 jl $LN7@stbi__out_
+
+; 7518 : g->cur_x = g->start_x;
+
+ 001ea 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001f1 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 001f8 8b 89 4c 88 00
+ 00 mov ecx, DWORD PTR [rcx+34892]
+ 001fe 89 88 5c 88 00
+ 00 mov DWORD PTR [rax+34908], ecx
+
+; 7519 : g->cur_y += g->step;
+
+ 00204 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 0020b 8b 80 60 88 00
+ 00 mov eax, DWORD PTR [rax+34912]
+ 00211 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00218 03 81 44 88 00
+ 00 add eax, DWORD PTR [rcx+34884]
+ 0021e 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00225 89 81 60 88 00
+ 00 mov DWORD PTR [rcx+34912], eax
+$LN2@stbi__out_:
+
+; 7520 :
+; 7521 : while (g->cur_y >= g->max_y && g->parse > 0) {
+
+ 0022b 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00232 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00239 8b 89 58 88 00
+ 00 mov ecx, DWORD PTR [rcx+34904]
+ 0023f 39 88 60 88 00
+ 00 cmp DWORD PTR [rax+34912], ecx
+ 00245 0f 8c 9c 00 00
+ 00 jl $LN3@stbi__out_
+ 0024b 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00252 83 b8 40 88 00
+ 00 00 cmp DWORD PTR [rax+34880], 0
+ 00259 0f 8e 88 00 00
+ 00 jle $LN3@stbi__out_
+
+; 7522 : g->step = (1 << g->parse) * g->line_size;
+
+ 0025f 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00266 8b 80 40 88 00
+ 00 mov eax, DWORD PTR [rax+34880]
+ 0026c b9 01 00 00 00 mov ecx, 1
+ 00271 89 8d 14 01 00
+ 00 mov DWORD PTR tv257[rbp], ecx
+ 00277 0f b6 c8 movzx ecx, al
+ 0027a 8b 85 14 01 00
+ 00 mov eax, DWORD PTR tv257[rbp]
+ 00280 d3 e0 shl eax, cl
+ 00282 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00289 0f af 81 64 88
+ 00 00 imul eax, DWORD PTR [rcx+34916]
+ 00290 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00297 89 81 44 88 00
+ 00 mov DWORD PTR [rcx+34884], eax
+
+; 7523 : g->cur_y = g->start_y + (g->step >> 1);
+
+ 0029d 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 002a4 8b 80 44 88 00
+ 00 mov eax, DWORD PTR [rax+34884]
+ 002aa d1 f8 sar eax, 1
+ 002ac 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 002b3 03 81 50 88 00
+ 00 add eax, DWORD PTR [rcx+34896]
+ 002b9 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 002c0 89 81 60 88 00
+ 00 mov DWORD PTR [rcx+34912], eax
+
+; 7524 : --g->parse;
+
+ 002c6 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 002cd 8b 80 40 88 00
+ 00 mov eax, DWORD PTR [rax+34880]
+ 002d3 ff c8 dec eax
+ 002d5 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 002dc 89 81 40 88 00
+ 00 mov DWORD PTR [rcx+34880], eax
+
+; 7525 : }
+
+ 002e2 e9 44 ff ff ff jmp $LN2@stbi__out_
+$LN3@stbi__out_:
+$LN7@stbi__out_:
+$LN1@stbi__out_:
+
+; 7526 : }
+; 7527 : }
+
+ 002e7 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 002ee 5f pop rdi
+ 002ef 5d pop rbp
+ 002f0 c3 ret 0
+stbi__out_gif_code ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_info_raw
+_TEXT SEGMENT
+g$ = 8
+s$ = 256
+x$ = 264
+y$ = 272
+comp$ = 280
+stbi__gif_info_raw PROC ; COMDAT
+
+; 7474 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 7475 : stbi__gif *g = (stbi__gif *)stbi__malloc(sizeof(stbi__gif));
+
+ 0002f b9 70 88 00 00 mov ecx, 34928 ; 00008870H
+ 00034 e8 00 00 00 00 call stbi__malloc
+ 00039 48 89 45 08 mov QWORD PTR g$[rbp], rax
+
+; 7476 : if (!g)
+
+ 0003d 48 83 7d 08 00 cmp QWORD PTR g$[rbp], 0
+ 00042 75 11 jne SHORT $LN2@stbi__gif_
+
+; 7477 : return stbi__err("outofmem", "Out of memory");
+
+ 00044 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0004b e8 00 00 00 00 call stbi__err
+ 00050 e9 80 00 00 00 jmp $LN1@stbi__gif_
+$LN2@stbi__gif_:
+
+; 7478 : if (!stbi__gif_header(s, g, comp, 1)) {
+
+ 00055 41 b9 01 00 00
+ 00 mov r9d, 1
+ 0005b 4c 8b 85 18 01
+ 00 00 mov r8, QWORD PTR comp$[rbp]
+ 00062 48 8b 55 08 mov rdx, QWORD PTR g$[rbp]
+ 00066 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006d e8 00 00 00 00 call stbi__gif_header
+ 00072 85 c0 test eax, eax
+ 00074 75 1c jne SHORT $LN3@stbi__gif_
+
+; 7479 : STBI_FREE(g);
+
+ 00076 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
+ 0007a ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00080 90 npad 1
+
+; 7480 : stbi__rewind(s);
+
+ 00081 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00088 e8 00 00 00 00 call stbi__rewind
+ 0008d 90 npad 1
+
+; 7481 : return 0;
+
+ 0008e 33 c0 xor eax, eax
+ 00090 eb 43 jmp SHORT $LN1@stbi__gif_
+$LN3@stbi__gif_:
+
+; 7482 : }
+; 7483 : if (x)
+
+ 00092 48 83 bd 08 01
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 0009a 74 0f je SHORT $LN4@stbi__gif_
+
+; 7484 : *x = g->w;
+
+ 0009c 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 000a3 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
+ 000a7 8b 09 mov ecx, DWORD PTR [rcx]
+ 000a9 89 08 mov DWORD PTR [rax], ecx
+$LN4@stbi__gif_:
+
+; 7485 : if (y)
+
+ 000ab 48 83 bd 10 01
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 000b3 74 10 je SHORT $LN5@stbi__gif_
+
+; 7486 : *y = g->h;
+
+ 000b5 48 8b 85 10 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 000bc 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
+ 000c0 8b 49 04 mov ecx, DWORD PTR [rcx+4]
+ 000c3 89 08 mov DWORD PTR [rax], ecx
+$LN5@stbi__gif_:
+
+; 7487 : STBI_FREE(g);
+
+ 000c5 48 8b 4d 08 mov rcx, QWORD PTR g$[rbp]
+ 000c9 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000cf 90 npad 1
+
+; 7488 : return 1;
+
+ 000d0 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__gif_:
+
+; 7489 : }
+
+ 000d5 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000dc 5f pop rdi
+ 000dd 5d pop rbp
+ 000de c3 ret 0
+stbi__gif_info_raw ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_header
+_TEXT SEGMENT
+version$ = 4
+tv225 = 212
+s$ = 256
+g$ = 264
+comp$ = 272
+is_info$ = 280
+stbi__gif_header PROC ; COMDAT
+
+; 7436 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 7437 : stbi_uc version;
+; 7438 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' ||
+
+ 0002f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__get8
+ 0003b 0f b6 c0 movzx eax, al
+ 0003e 83 f8 47 cmp eax, 71 ; 00000047H
+ 00041 75 3c jne SHORT $LN3@stbi__gif_
+ 00043 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004a e8 00 00 00 00 call stbi__get8
+ 0004f 0f b6 c0 movzx eax, al
+ 00052 83 f8 49 cmp eax, 73 ; 00000049H
+ 00055 75 28 jne SHORT $LN3@stbi__gif_
+ 00057 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0005e e8 00 00 00 00 call stbi__get8
+ 00063 0f b6 c0 movzx eax, al
+ 00066 83 f8 46 cmp eax, 70 ; 00000046H
+ 00069 75 14 jne SHORT $LN3@stbi__gif_
+ 0006b 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00072 e8 00 00 00 00 call stbi__get8
+ 00077 0f b6 c0 movzx eax, al
+ 0007a 83 f8 38 cmp eax, 56 ; 00000038H
+ 0007d 74 11 je SHORT $LN2@stbi__gif_
+$LN3@stbi__gif_:
+
+; 7439 : stbi__get8(s) != '8')
+; 7440 : return stbi__err("not GIF", "Corrupt GIF");
+
+ 0007f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
+ 00086 e8 00 00 00 00 call stbi__err
+ 0008b e9 c7 01 00 00 jmp $LN1@stbi__gif_
+$LN2@stbi__gif_:
+
+; 7441 :
+; 7442 : version = stbi__get8(s);
+
+ 00090 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00097 e8 00 00 00 00 call stbi__get8
+ 0009c 88 45 04 mov BYTE PTR version$[rbp], al
+
+; 7443 : if (version != '7' && version != '9')
+
+ 0009f 0f b6 45 04 movzx eax, BYTE PTR version$[rbp]
+ 000a3 83 f8 37 cmp eax, 55 ; 00000037H
+ 000a6 74 1a je SHORT $LN4@stbi__gif_
+ 000a8 0f b6 45 04 movzx eax, BYTE PTR version$[rbp]
+ 000ac 83 f8 39 cmp eax, 57 ; 00000039H
+ 000af 74 11 je SHORT $LN4@stbi__gif_
+
+; 7444 : return stbi__err("not GIF", "Corrupt GIF");
+
+ 000b1 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
+ 000b8 e8 00 00 00 00 call stbi__err
+ 000bd e9 95 01 00 00 jmp $LN1@stbi__gif_
+$LN4@stbi__gif_:
+
+; 7445 : if (stbi__get8(s) != 'a')
+
+ 000c2 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c9 e8 00 00 00 00 call stbi__get8
+ 000ce 0f b6 c0 movzx eax, al
+ 000d1 83 f8 61 cmp eax, 97 ; 00000061H
+ 000d4 74 11 je SHORT $LN5@stbi__gif_
+
+; 7446 : return stbi__err("not GIF", "Corrupt GIF");
+
+ 000d6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
+ 000dd e8 00 00 00 00 call stbi__err
+ 000e2 e9 70 01 00 00 jmp $LN1@stbi__gif_
+$LN5@stbi__gif_:
+
+; 7447 :
+; 7448 : stbi__g_failure_reason = "";
+
+ 000e7 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__g_failure_reason
+ 000ec 8b c0 mov eax, eax
+ 000ee 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 000f4 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 000fd 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00101 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_00CNPNBAHC@@
+ 00108 48 89 14 08 mov QWORD PTR [rax+rcx], rdx
+
+; 7449 : g->w = stbi__get16le(s);
+
+ 0010c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00113 e8 00 00 00 00 call stbi__get16le
+ 00118 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0011f 89 01 mov DWORD PTR [rcx], eax
+
+; 7450 : g->h = stbi__get16le(s);
+
+ 00121 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00128 e8 00 00 00 00 call stbi__get16le
+ 0012d 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00134 89 41 04 mov DWORD PTR [rcx+4], eax
+
+; 7451 : g->flags = stbi__get8(s);
+
+ 00137 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0013e e8 00 00 00 00 call stbi__get8
+ 00143 0f b6 c0 movzx eax, al
+ 00146 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0014d 89 41 20 mov DWORD PTR [rcx+32], eax
+
+; 7452 : g->bgindex = stbi__get8(s);
+
+ 00150 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00157 e8 00 00 00 00 call stbi__get8
+ 0015c 0f b6 c0 movzx eax, al
+ 0015f 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00166 89 41 24 mov DWORD PTR [rcx+36], eax
+
+; 7453 : g->ratio = stbi__get8(s);
+
+ 00169 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00170 e8 00 00 00 00 call stbi__get8
+ 00175 0f b6 c0 movzx eax, al
+ 00178 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 0017f 89 41 28 mov DWORD PTR [rcx+40], eax
+
+; 7454 : g->transparent = -1;
+
+ 00182 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00189 c7 40 2c ff ff
+ ff ff mov DWORD PTR [rax+44], -1
+
+; 7455 :
+; 7456 : if (g->w > STBI_MAX_DIMENSIONS)
+
+ 00190 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00197 81 38 00 00 00
+ 01 cmp DWORD PTR [rax], 16777216 ; 01000000H
+ 0019d 7e 11 jle SHORT $LN6@stbi__gif_
+
+; 7457 : return stbi__err("too large", "Very large image (corrupt?)");
+
+ 0019f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 001a6 e8 00 00 00 00 call stbi__err
+ 001ab e9 a7 00 00 00 jmp $LN1@stbi__gif_
+$LN6@stbi__gif_:
+
+; 7458 : if (g->h > STBI_MAX_DIMENSIONS)
+
+ 001b0 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001b7 81 78 04 00 00
+ 00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
+ 001be 7e 11 jle SHORT $LN7@stbi__gif_
+
+; 7459 : return stbi__err("too large", "Very large image (corrupt?)");
+
+ 001c0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 001c7 e8 00 00 00 00 call stbi__err
+ 001cc e9 86 00 00 00 jmp $LN1@stbi__gif_
+$LN7@stbi__gif_:
+
+; 7460 :
+; 7461 : if (comp != 0)
+
+ 001d1 48 83 bd 10 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 001d9 74 0d je SHORT $LN8@stbi__gif_
+
+; 7462 : *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments
+
+ 001db 48 8b 85 10 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 001e2 c7 00 04 00 00
+ 00 mov DWORD PTR [rax], 4
+$LN8@stbi__gif_:
+
+; 7463 :
+; 7464 : if (is_info)
+
+ 001e8 83 bd 18 01 00
+ 00 00 cmp DWORD PTR is_info$[rbp], 0
+ 001ef 74 07 je SHORT $LN9@stbi__gif_
+
+; 7465 : return 1;
+
+ 001f1 b8 01 00 00 00 mov eax, 1
+ 001f6 eb 5f jmp SHORT $LN1@stbi__gif_
+$LN9@stbi__gif_:
+
+; 7466 :
+; 7467 : if (g->flags & 0x80)
+
+ 001f8 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 001ff 8b 40 20 mov eax, DWORD PTR [rax+32]
+ 00202 25 80 00 00 00 and eax, 128 ; 00000080H
+ 00207 85 c0 test eax, eax
+ 00209 74 47 je SHORT $LN10@stbi__gif_
+
+; 7468 : stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1);
+
+ 0020b 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR g$[rbp]
+ 00212 8b 40 20 mov eax, DWORD PTR [rax+32]
+ 00215 83 e0 07 and eax, 7
+ 00218 b9 02 00 00 00 mov ecx, 2
+ 0021d 89 8d d4 00 00
+ 00 mov DWORD PTR tv225[rbp], ecx
+ 00223 0f b6 c8 movzx ecx, al
+ 00226 8b 85 d4 00 00
+ 00 mov eax, DWORD PTR tv225[rbp]
+ 0022c d3 e0 shl eax, cl
+ 0022e 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR g$[rbp]
+ 00235 48 83 c1 34 add rcx, 52 ; 00000034H
+ 00239 41 b9 ff ff ff
+ ff mov r9d, -1
+ 0023f 44 8b c0 mov r8d, eax
+ 00242 48 8b d1 mov rdx, rcx
+ 00245 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0024c e8 00 00 00 00 call stbi__gif_parse_colortable
+ 00251 90 npad 1
+$LN10@stbi__gif_:
+
+; 7469 :
+; 7470 : return 1;
+
+ 00252 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__gif_:
+
+; 7471 : }
+
+ 00257 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 0025e 5f pop rdi
+ 0025f 5d pop rbp
+ 00260 c3 ret 0
+stbi__gif_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_parse_colortable
+_TEXT SEGMENT
+i$ = 4
+tv93 = 212
+s$ = 256
+pal$ = 264
+num_entries$ = 272
+transp$ = 280
+stbi__gif_parse_colortable PROC ; COMDAT
+
+; 7425 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 7426 : int i;
+; 7427 : for (i = 0; i < num_entries; ++i) {
+
+ 0002f c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00036 eb 08 jmp SHORT $LN4@stbi__gif_
+$LN2@stbi__gif_:
+ 00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0003b ff c0 inc eax
+ 0003d 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__gif_:
+ 00040 8b 85 10 01 00
+ 00 mov eax, DWORD PTR num_entries$[rbp]
+ 00046 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00049 0f 8d bd 00 00
+ 00 jge $LN3@stbi__gif_
+
+; 7428 : pal[i][2] = stbi__get8(s);
+
+ 0004f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00056 e8 00 00 00 00 call stbi__get8
+ 0005b 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 0005f 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR pal$[rbp]
+ 00066 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
+ 0006a ba 01 00 00 00 mov edx, 1
+ 0006f 48 6b d2 02 imul rdx, rdx, 2
+ 00073 88 04 11 mov BYTE PTR [rcx+rdx], al
+
+; 7429 : pal[i][1] = stbi__get8(s);
+
+ 00076 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0007d e8 00 00 00 00 call stbi__get8
+ 00082 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 00086 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR pal$[rbp]
+ 0008d 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
+ 00091 ba 01 00 00 00 mov edx, 1
+ 00096 48 6b d2 01 imul rdx, rdx, 1
+ 0009a 88 04 11 mov BYTE PTR [rcx+rdx], al
+
+; 7430 : pal[i][0] = stbi__get8(s);
+
+ 0009d 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a4 e8 00 00 00 00 call stbi__get8
+ 000a9 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 000ad 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR pal$[rbp]
+ 000b4 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
+ 000b8 ba 01 00 00 00 mov edx, 1
+ 000bd 48 6b d2 00 imul rdx, rdx, 0
+ 000c1 88 04 11 mov BYTE PTR [rcx+rdx], al
+
+; 7431 : pal[i][3] = transp == i ? 0 : 255;
+
+ 000c4 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000c7 39 85 18 01 00
+ 00 cmp DWORD PTR transp$[rbp], eax
+ 000cd 75 0c jne SHORT $LN6@stbi__gif_
+ 000cf c7 85 d4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv93[rbp], 0
+ 000d9 eb 0a jmp SHORT $LN7@stbi__gif_
+$LN6@stbi__gif_:
+ 000db c7 85 d4 00 00
+ 00 ff 00 00 00 mov DWORD PTR tv93[rbp], 255 ; 000000ffH
+$LN7@stbi__gif_:
+ 000e5 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000e9 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR pal$[rbp]
+ 000f0 48 8d 04 81 lea rax, QWORD PTR [rcx+rax*4]
+ 000f4 b9 01 00 00 00 mov ecx, 1
+ 000f9 48 6b c9 03 imul rcx, rcx, 3
+ 000fd 0f b6 95 d4 00
+ 00 00 movzx edx, BYTE PTR tv93[rbp]
+ 00104 88 14 08 mov BYTE PTR [rax+rcx], dl
+
+; 7432 : }
+
+ 00107 e9 2c ff ff ff jmp $LN2@stbi__gif_
+$LN3@stbi__gif_:
+
+; 7433 : }
+
+ 0010c 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00113 5f pop rdi
+ 00114 5d pop rbp
+ 00115 c3 ret 0
+stbi__gif_parse_colortable ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_test_raw
+_TEXT SEGMENT
+sz$ = 4
+s$ = 256
+stbi__gif_test_raw PROC ; COMDAT
+
+; 7403 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 7404 : int sz;
+; 7405 : if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' ||
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get8
+ 0002c 0f b6 c0 movzx eax, al
+ 0002f 83 f8 47 cmp eax, 71 ; 00000047H
+ 00032 75 3c jne SHORT $LN3@stbi__gif_
+ 00034 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0003b e8 00 00 00 00 call stbi__get8
+ 00040 0f b6 c0 movzx eax, al
+ 00043 83 f8 49 cmp eax, 73 ; 00000049H
+ 00046 75 28 jne SHORT $LN3@stbi__gif_
+ 00048 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004f e8 00 00 00 00 call stbi__get8
+ 00054 0f b6 c0 movzx eax, al
+ 00057 83 f8 46 cmp eax, 70 ; 00000046H
+ 0005a 75 14 jne SHORT $LN3@stbi__gif_
+ 0005c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00063 e8 00 00 00 00 call stbi__get8
+ 00068 0f b6 c0 movzx eax, al
+ 0006b 83 f8 38 cmp eax, 56 ; 00000038H
+ 0006e 74 04 je SHORT $LN2@stbi__gif_
+$LN3@stbi__gif_:
+
+; 7406 : stbi__get8(s) != '8')
+; 7407 : return 0;
+
+ 00070 33 c0 xor eax, eax
+ 00072 eb 3f jmp SHORT $LN1@stbi__gif_
+$LN2@stbi__gif_:
+
+; 7408 : sz = stbi__get8(s);
+
+ 00074 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0007b e8 00 00 00 00 call stbi__get8
+ 00080 0f b6 c0 movzx eax, al
+ 00083 89 45 04 mov DWORD PTR sz$[rbp], eax
+
+; 7409 : if (sz != '9' && sz != '7')
+
+ 00086 83 7d 04 39 cmp DWORD PTR sz$[rbp], 57 ; 00000039H
+ 0008a 74 0a je SHORT $LN4@stbi__gif_
+ 0008c 83 7d 04 37 cmp DWORD PTR sz$[rbp], 55 ; 00000037H
+ 00090 74 04 je SHORT $LN4@stbi__gif_
+
+; 7410 : return 0;
+
+ 00092 33 c0 xor eax, eax
+ 00094 eb 1d jmp SHORT $LN1@stbi__gif_
+$LN4@stbi__gif_:
+
+; 7411 : if (stbi__get8(s) != 'a')
+
+ 00096 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0009d e8 00 00 00 00 call stbi__get8
+ 000a2 0f b6 c0 movzx eax, al
+ 000a5 83 f8 61 cmp eax, 97 ; 00000061H
+ 000a8 74 04 je SHORT $LN5@stbi__gif_
+
+; 7412 : return 0;
+
+ 000aa 33 c0 xor eax, eax
+ 000ac eb 05 jmp SHORT $LN1@stbi__gif_
+$LN5@stbi__gif_:
+
+; 7413 : return 1;
+
+ 000ae b8 01 00 00 00 mov eax, 1
+$LN1@stbi__gif_:
+
+; 7414 : }
+
+ 000b3 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000ba 5f pop rdi
+ 000bb 5d pop rbp
+ 000bc c3 ret 0
+stbi__gif_test_raw ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pic_load_core
+_TEXT SEGMENT
+act_comp$ = 4
+num_packets$ = 36
+y$ = 68
+chained$ = 100
+packets$ = 136
+packet$6 = 200
+packet_idx$7 = 228
+packet$8 = 264
+dest$9 = 296
+x$10 = 324
+left$11 = 356
+i$12 = 388
+count$13 = 420
+value$14 = 452
+left$15 = 484
+count$16 = 516
+i$17 = 548
+value$18 = 580
+tv138 = 980
+tv152 = 980
+tv95 = 984
+tv134 = 984
+tv238 = 984
+tv69 = 984
+tv156 = 984
+tv176 = 984
+tv207 = 984
+tv217 = 984
+__$ArrayPad$ = 992
+s$ = 1040
+width$ = 1048
+height$ = 1056
+comp$ = 1064
+result$ = 1072
+stbi__pic_load_core PROC ; COMDAT
+
+; 7194 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 18 04
+ 00 00 sub rsp, 1048 ; 00000418H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00026 b9 9e 00 00 00 mov ecx, 158 ; 0000009eH
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 48 8b 8c 24 38
+ 04 00 00 mov rcx, QWORD PTR [rsp+1080]
+ 0003a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00041 48 33 c5 xor rax, rbp
+ 00044 48 89 85 e0 03
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00057 90 npad 1
+
+; 7195 : int act_comp = 0, num_packets = 0, y, chained;
+
+ 00058 c7 45 04 00 00
+ 00 00 mov DWORD PTR act_comp$[rbp], 0
+ 0005f c7 45 24 00 00
+ 00 00 mov DWORD PTR num_packets$[rbp], 0
+$LN4@stbi__pic_:
+
+; 7196 : stbi__pic_packet packets[10];
+; 7197 :
+; 7198 : // this will (should...) cater for even some bizarre stuff like having data
+; 7199 : // for the same channel in multiple packets.
+; 7200 : do {
+; 7201 : stbi__pic_packet *packet;
+; 7202 :
+; 7203 : if (num_packets == sizeof(packets) / sizeof(packets[0]))
+
+ 00066 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
+ 0006a 48 83 f8 0a cmp rax, 10
+ 0006e 75 34 jne SHORT $LN29@stbi__pic_
+
+; 7204 : return stbi__errpuc("bad format", "too many packets");
+
+ 00070 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
+ 00077 e8 00 00 00 00 call stbi__err
+ 0007c 85 c0 test eax, eax
+ 0007e 74 0d je SHORT $LN50@stbi__pic_
+ 00080 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv69[rbp], 0
+ 0008b eb 0b jmp SHORT $LN51@stbi__pic_
+$LN50@stbi__pic_:
+ 0008d 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv69[rbp], 0
+$LN51@stbi__pic_:
+ 00098 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv69[rbp]
+ 0009f e9 3a 06 00 00 jmp $LN1@stbi__pic_
+$LN29@stbi__pic_:
+
+; 7205 :
+; 7206 : packet = &packets[num_packets++];
+
+ 000a4 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
+ 000a8 48 6b c0 03 imul rax, rax, 3
+ 000ac 48 8d 84 05 88
+ 00 00 00 lea rax, QWORD PTR packets$[rbp+rax]
+ 000b4 48 89 85 c8 00
+ 00 00 mov QWORD PTR packet$6[rbp], rax
+ 000bb 8b 45 24 mov eax, DWORD PTR num_packets$[rbp]
+ 000be ff c0 inc eax
+ 000c0 89 45 24 mov DWORD PTR num_packets$[rbp], eax
+
+; 7207 :
+; 7208 : chained = stbi__get8(s);
+
+ 000c3 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000ca e8 00 00 00 00 call stbi__get8
+ 000cf 0f b6 c0 movzx eax, al
+ 000d2 89 45 64 mov DWORD PTR chained$[rbp], eax
+
+; 7209 : packet->size = stbi__get8(s);
+
+ 000d5 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000dc e8 00 00 00 00 call stbi__get8
+ 000e1 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR packet$6[rbp]
+ 000e8 88 01 mov BYTE PTR [rcx], al
+
+; 7210 : packet->type = stbi__get8(s);
+
+ 000ea 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000f1 e8 00 00 00 00 call stbi__get8
+ 000f6 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR packet$6[rbp]
+ 000fd 88 41 01 mov BYTE PTR [rcx+1], al
+
+; 7211 : packet->channel = stbi__get8(s);
+
+ 00100 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00107 e8 00 00 00 00 call stbi__get8
+ 0010c 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR packet$6[rbp]
+ 00113 88 41 02 mov BYTE PTR [rcx+2], al
+
+; 7212 :
+; 7213 : act_comp |= packet->channel;
+
+ 00116 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR packet$6[rbp]
+ 0011d 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 00121 8b 4d 04 mov ecx, DWORD PTR act_comp$[rbp]
+ 00124 0b c8 or ecx, eax
+ 00126 8b c1 mov eax, ecx
+ 00128 89 45 04 mov DWORD PTR act_comp$[rbp], eax
+
+; 7214 :
+; 7215 : if (stbi__at_eof(s))
+
+ 0012b 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00132 e8 00 00 00 00 call stbi__at_eof
+ 00137 85 c0 test eax, eax
+ 00139 74 34 je SHORT $LN30@stbi__pic_
+
+; 7216 : return stbi__errpuc("bad file", "file too short (reading packets)");
+
+ 0013b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
+ 00142 e8 00 00 00 00 call stbi__err
+ 00147 85 c0 test eax, eax
+ 00149 74 0d je SHORT $LN52@stbi__pic_
+ 0014b 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv95[rbp], 0
+ 00156 eb 0b jmp SHORT $LN53@stbi__pic_
+$LN52@stbi__pic_:
+ 00158 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv95[rbp], 0
+$LN53@stbi__pic_:
+ 00163 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv95[rbp]
+ 0016a e9 6f 05 00 00 jmp $LN1@stbi__pic_
+$LN30@stbi__pic_:
+
+; 7217 : if (packet->size != 8)
+
+ 0016f 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR packet$6[rbp]
+ 00176 0f b6 00 movzx eax, BYTE PTR [rax]
+ 00179 83 f8 08 cmp eax, 8
+ 0017c 74 34 je SHORT $LN31@stbi__pic_
+
+; 7218 : return stbi__errpuc("bad format", "packet isn't 8bpp");
+
+ 0017e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
+ 00185 e8 00 00 00 00 call stbi__err
+ 0018a 85 c0 test eax, eax
+ 0018c 74 0d je SHORT $LN54@stbi__pic_
+ 0018e 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv134[rbp], 0
+ 00199 eb 0b jmp SHORT $LN55@stbi__pic_
+$LN54@stbi__pic_:
+ 0019b 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv134[rbp], 0
+$LN55@stbi__pic_:
+ 001a6 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv134[rbp]
+ 001ad e9 2c 05 00 00 jmp $LN1@stbi__pic_
+$LN31@stbi__pic_:
+
+; 7219 : } while (chained);
+
+ 001b2 83 7d 64 00 cmp DWORD PTR chained$[rbp], 0
+ 001b6 0f 85 aa fe ff
+ ff jne $LN4@stbi__pic_
+
+; 7220 :
+; 7221 : *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel?
+
+ 001bc 8b 45 04 mov eax, DWORD PTR act_comp$[rbp]
+ 001bf 83 e0 10 and eax, 16
+ 001c2 85 c0 test eax, eax
+ 001c4 74 0c je SHORT $LN56@stbi__pic_
+ 001c6 c7 85 d4 03 00
+ 00 04 00 00 00 mov DWORD PTR tv138[rbp], 4
+ 001d0 eb 0a jmp SHORT $LN57@stbi__pic_
+$LN56@stbi__pic_:
+ 001d2 c7 85 d4 03 00
+ 00 03 00 00 00 mov DWORD PTR tv138[rbp], 3
+$LN57@stbi__pic_:
+ 001dc 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 001e3 8b 8d d4 03 00
+ 00 mov ecx, DWORD PTR tv138[rbp]
+ 001e9 89 08 mov DWORD PTR [rax], ecx
+
+; 7222 :
+; 7223 : for (y = 0; y < height; ++y) {
+
+ 001eb c7 45 44 00 00
+ 00 00 mov DWORD PTR y$[rbp], 0
+ 001f2 eb 08 jmp SHORT $LN7@stbi__pic_
+$LN5@stbi__pic_:
+ 001f4 8b 45 44 mov eax, DWORD PTR y$[rbp]
+ 001f7 ff c0 inc eax
+ 001f9 89 45 44 mov DWORD PTR y$[rbp], eax
+$LN7@stbi__pic_:
+ 001fc 8b 85 20 04 00
+ 00 mov eax, DWORD PTR height$[rbp]
+ 00202 39 45 44 cmp DWORD PTR y$[rbp], eax
+ 00205 0f 8d cc 04 00
+ 00 jge $LN6@stbi__pic_
+
+; 7224 : int packet_idx;
+; 7225 :
+; 7226 : for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) {
+
+ 0020b c7 85 e4 00 00
+ 00 00 00 00 00 mov DWORD PTR packet_idx$7[rbp], 0
+ 00215 eb 0e jmp SHORT $LN10@stbi__pic_
+$LN8@stbi__pic_:
+ 00217 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR packet_idx$7[rbp]
+ 0021d ff c0 inc eax
+ 0021f 89 85 e4 00 00
+ 00 mov DWORD PTR packet_idx$7[rbp], eax
+$LN10@stbi__pic_:
+ 00225 8b 45 24 mov eax, DWORD PTR num_packets$[rbp]
+ 00228 39 85 e4 00 00
+ 00 cmp DWORD PTR packet_idx$7[rbp], eax
+ 0022e 0f 8d 9e 04 00
+ 00 jge $LN9@stbi__pic_
+
+; 7227 : stbi__pic_packet *packet = &packets[packet_idx];
+
+ 00234 48 63 85 e4 00
+ 00 00 movsxd rax, DWORD PTR packet_idx$7[rbp]
+ 0023b 48 6b c0 03 imul rax, rax, 3
+ 0023f 48 8d 84 05 88
+ 00 00 00 lea rax, QWORD PTR packets$[rbp+rax]
+ 00247 48 89 85 08 01
+ 00 00 mov QWORD PTR packet$8[rbp], rax
+
+; 7228 : stbi_uc *dest = result + y * width * 4;
+
+ 0024e 8b 45 44 mov eax, DWORD PTR y$[rbp]
+ 00251 0f af 85 18 04
+ 00 00 imul eax, DWORD PTR width$[rbp]
+ 00258 c1 e0 02 shl eax, 2
+ 0025b 48 98 cdqe
+ 0025d 48 8b 8d 30 04
+ 00 00 mov rcx, QWORD PTR result$[rbp]
+ 00264 48 03 c8 add rcx, rax
+ 00267 48 8b c1 mov rax, rcx
+ 0026a 48 89 85 28 01
+ 00 00 mov QWORD PTR dest$9[rbp], rax
+
+; 7229 :
+; 7230 : switch (packet->type) {
+
+ 00271 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR packet$8[rbp]
+ 00278 0f b6 40 01 movzx eax, BYTE PTR [rax+1]
+ 0027c 88 85 d4 03 00
+ 00 mov BYTE PTR tv152[rbp], al
+ 00282 80 bd d4 03 00
+ 00 00 cmp BYTE PTR tv152[rbp], 0
+ 00289 74 4e je SHORT $LN33@stbi__pic_
+ 0028b 80 bd d4 03 00
+ 00 01 cmp BYTE PTR tv152[rbp], 1
+ 00292 0f 84 ae 00 00
+ 00 je $LN35@stbi__pic_
+ 00298 80 bd d4 03 00
+ 00 02 cmp BYTE PTR tv152[rbp], 2
+ 0029f 0f 84 d7 01 00
+ 00 je $LN39@stbi__pic_
+
+; 7231 : default:
+; 7232 : return stbi__errpuc("bad format",
+
+ 002a5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
+ 002ac e8 00 00 00 00 call stbi__err
+ 002b1 85 c0 test eax, eax
+ 002b3 74 0d je SHORT $LN58@stbi__pic_
+ 002b5 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv156[rbp], 0
+ 002c0 eb 0b jmp SHORT $LN59@stbi__pic_
+$LN58@stbi__pic_:
+ 002c2 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv156[rbp], 0
+$LN59@stbi__pic_:
+ 002cd 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv156[rbp]
+ 002d4 e9 05 04 00 00 jmp $LN1@stbi__pic_
+$LN33@stbi__pic_:
+
+; 7233 : "packet has bad compression type");
+; 7234 :
+; 7235 : case 0: { //uncompressed
+; 7236 : int x;
+; 7237 :
+; 7238 : for (x = 0; x < width; ++x, dest += 4)
+
+ 002d9 c7 85 44 01 00
+ 00 00 00 00 00 mov DWORD PTR x$10[rbp], 0
+ 002e3 eb 20 jmp SHORT $LN15@stbi__pic_
+$LN13@stbi__pic_:
+ 002e5 8b 85 44 01 00
+ 00 mov eax, DWORD PTR x$10[rbp]
+ 002eb ff c0 inc eax
+ 002ed 89 85 44 01 00
+ 00 mov DWORD PTR x$10[rbp], eax
+ 002f3 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR dest$9[rbp]
+ 002fa 48 83 c0 04 add rax, 4
+ 002fe 48 89 85 28 01
+ 00 00 mov QWORD PTR dest$9[rbp], rax
+$LN15@stbi__pic_:
+ 00305 8b 85 18 04 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 0030b 39 85 44 01 00
+ 00 cmp DWORD PTR x$10[rbp], eax
+ 00311 7d 2e jge SHORT $LN14@stbi__pic_
+
+; 7239 : if (!stbi__readval(s, packet->channel, dest))
+
+ 00313 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR packet$8[rbp]
+ 0031a 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 0031e 4c 8b 85 28 01
+ 00 00 mov r8, QWORD PTR dest$9[rbp]
+ 00325 8b d0 mov edx, eax
+ 00327 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0032e e8 00 00 00 00 call stbi__readval
+ 00333 48 85 c0 test rax, rax
+ 00336 75 07 jne SHORT $LN34@stbi__pic_
+
+; 7240 : return 0;
+
+ 00338 33 c0 xor eax, eax
+ 0033a e9 9f 03 00 00 jmp $LN1@stbi__pic_
+$LN34@stbi__pic_:
+ 0033f eb a4 jmp SHORT $LN13@stbi__pic_
+$LN14@stbi__pic_:
+
+; 7241 : break;
+
+ 00341 e9 87 03 00 00 jmp $LN11@stbi__pic_
+$LN35@stbi__pic_:
+
+; 7242 : }
+; 7243 :
+; 7244 : case 1: //Pure RLE
+; 7245 : {
+; 7246 : int left = width, i;
+
+ 00346 8b 85 18 04 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 0034c 89 85 64 01 00
+ 00 mov DWORD PTR left$11[rbp], eax
+$LN16@stbi__pic_:
+
+; 7247 :
+; 7248 : while (left > 0) {
+
+ 00352 83 bd 64 01 00
+ 00 00 cmp DWORD PTR left$11[rbp], 0
+ 00359 0f 8e 18 01 00
+ 00 jle $LN17@stbi__pic_
+
+; 7249 : stbi_uc count, value[4];
+; 7250 :
+; 7251 : count = stbi__get8(s);
+
+ 0035f 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00366 e8 00 00 00 00 call stbi__get8
+ 0036b 88 85 a4 01 00
+ 00 mov BYTE PTR count$13[rbp], al
+
+; 7252 : if (stbi__at_eof(s))
+
+ 00371 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00378 e8 00 00 00 00 call stbi__at_eof
+ 0037d 85 c0 test eax, eax
+ 0037f 74 34 je SHORT $LN36@stbi__pic_
+
+; 7253 : return stbi__errpuc(
+
+ 00381 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
+ 00388 e8 00 00 00 00 call stbi__err
+ 0038d 85 c0 test eax, eax
+ 0038f 74 0d je SHORT $LN60@stbi__pic_
+ 00391 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv176[rbp], 0
+ 0039c eb 0b jmp SHORT $LN61@stbi__pic_
+$LN60@stbi__pic_:
+ 0039e 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv176[rbp], 0
+$LN61@stbi__pic_:
+ 003a9 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv176[rbp]
+ 003b0 e9 29 03 00 00 jmp $LN1@stbi__pic_
+$LN36@stbi__pic_:
+
+; 7254 : "bad file",
+; 7255 : "file too short (pure read count)");
+; 7256 :
+; 7257 : if (count > left)
+
+ 003b5 0f b6 85 a4 01
+ 00 00 movzx eax, BYTE PTR count$13[rbp]
+ 003bc 3b 85 64 01 00
+ 00 cmp eax, DWORD PTR left$11[rbp]
+ 003c2 7e 0d jle SHORT $LN37@stbi__pic_
+
+; 7258 : count = (stbi_uc)left;
+
+ 003c4 0f b6 85 64 01
+ 00 00 movzx eax, BYTE PTR left$11[rbp]
+ 003cb 88 85 a4 01 00
+ 00 mov BYTE PTR count$13[rbp], al
+$LN37@stbi__pic_:
+
+; 7259 :
+; 7260 : if (!stbi__readval(s, packet->channel, value))
+
+ 003d1 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR packet$8[rbp]
+ 003d8 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 003dc 4c 8d 85 c4 01
+ 00 00 lea r8, QWORD PTR value$14[rbp]
+ 003e3 8b d0 mov edx, eax
+ 003e5 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003ec e8 00 00 00 00 call stbi__readval
+ 003f1 48 85 c0 test rax, rax
+ 003f4 75 07 jne SHORT $LN38@stbi__pic_
+
+; 7261 : return 0;
+
+ 003f6 33 c0 xor eax, eax
+ 003f8 e9 e1 02 00 00 jmp $LN1@stbi__pic_
+$LN38@stbi__pic_:
+
+; 7262 :
+; 7263 : for (i = 0; i < count; ++i, dest += 4)
+
+ 003fd c7 85 84 01 00
+ 00 00 00 00 00 mov DWORD PTR i$12[rbp], 0
+ 00407 eb 20 jmp SHORT $LN20@stbi__pic_
+$LN18@stbi__pic_:
+ 00409 8b 85 84 01 00
+ 00 mov eax, DWORD PTR i$12[rbp]
+ 0040f ff c0 inc eax
+ 00411 89 85 84 01 00
+ 00 mov DWORD PTR i$12[rbp], eax
+ 00417 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR dest$9[rbp]
+ 0041e 48 83 c0 04 add rax, 4
+ 00422 48 89 85 28 01
+ 00 00 mov QWORD PTR dest$9[rbp], rax
+$LN20@stbi__pic_:
+ 00429 0f b6 85 a4 01
+ 00 00 movzx eax, BYTE PTR count$13[rbp]
+ 00430 39 85 84 01 00
+ 00 cmp DWORD PTR i$12[rbp], eax
+ 00436 7d 23 jge SHORT $LN19@stbi__pic_
+
+; 7264 : stbi__copyval(packet->channel, dest, value);
+
+ 00438 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR packet$8[rbp]
+ 0043f 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 00443 4c 8d 85 c4 01
+ 00 00 lea r8, QWORD PTR value$14[rbp]
+ 0044a 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR dest$9[rbp]
+ 00451 8b c8 mov ecx, eax
+ 00453 e8 00 00 00 00 call stbi__copyval
+ 00458 90 npad 1
+ 00459 eb ae jmp SHORT $LN18@stbi__pic_
+$LN19@stbi__pic_:
+
+; 7265 : left -= count;
+
+ 0045b 0f b6 85 a4 01
+ 00 00 movzx eax, BYTE PTR count$13[rbp]
+ 00462 8b 8d 64 01 00
+ 00 mov ecx, DWORD PTR left$11[rbp]
+ 00468 2b c8 sub ecx, eax
+ 0046a 8b c1 mov eax, ecx
+ 0046c 89 85 64 01 00
+ 00 mov DWORD PTR left$11[rbp], eax
+
+; 7266 : }
+
+ 00472 e9 db fe ff ff jmp $LN16@stbi__pic_
+$LN17@stbi__pic_:
+
+; 7267 : } break;
+
+ 00477 e9 51 02 00 00 jmp $LN11@stbi__pic_
+$LN39@stbi__pic_:
+
+; 7268 :
+; 7269 : case 2: { //Mixed RLE
+; 7270 : int left = width;
+
+ 0047c 8b 85 18 04 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 00482 89 85 e4 01 00
+ 00 mov DWORD PTR left$15[rbp], eax
+$LN21@stbi__pic_:
+
+; 7271 : while (left > 0) {
+
+ 00488 83 bd e4 01 00
+ 00 00 cmp DWORD PTR left$15[rbp], 0
+ 0048f 0f 8e 38 02 00
+ 00 jle $LN22@stbi__pic_
+
+; 7272 : int count = stbi__get8(s), i;
+
+ 00495 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0049c e8 00 00 00 00 call stbi__get8
+ 004a1 0f b6 c0 movzx eax, al
+ 004a4 89 85 04 02 00
+ 00 mov DWORD PTR count$16[rbp], eax
+
+; 7273 : if (stbi__at_eof(s))
+
+ 004aa 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004b1 e8 00 00 00 00 call stbi__at_eof
+ 004b6 85 c0 test eax, eax
+ 004b8 74 34 je SHORT $LN40@stbi__pic_
+
+; 7274 : return stbi__errpuc(
+
+ 004ba 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
+ 004c1 e8 00 00 00 00 call stbi__err
+ 004c6 85 c0 test eax, eax
+ 004c8 74 0d je SHORT $LN62@stbi__pic_
+ 004ca 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv207[rbp], 0
+ 004d5 eb 0b jmp SHORT $LN63@stbi__pic_
+$LN62@stbi__pic_:
+ 004d7 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv207[rbp], 0
+$LN63@stbi__pic_:
+ 004e2 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv207[rbp]
+ 004e9 e9 f0 01 00 00 jmp $LN1@stbi__pic_
+$LN40@stbi__pic_:
+
+; 7275 : "bad file",
+; 7276 : "file too short (mixed read count)");
+; 7277 :
+; 7278 : if (count >= 128) { // Repeated
+
+ 004ee 81 bd 04 02 00
+ 00 80 00 00 00 cmp DWORD PTR count$16[rbp], 128 ; 00000080H
+ 004f8 0f 8c ff 00 00
+ 00 jl $LN41@stbi__pic_
+
+; 7279 : stbi_uc value[4];
+; 7280 :
+; 7281 : if (count == 128)
+
+ 004fe 81 bd 04 02 00
+ 00 80 00 00 00 cmp DWORD PTR count$16[rbp], 128 ; 00000080H
+ 00508 75 14 jne SHORT $LN43@stbi__pic_
+
+; 7282 : count = stbi__get16be(s);
+
+ 0050a 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00511 e8 00 00 00 00 call stbi__get16be
+ 00516 89 85 04 02 00
+ 00 mov DWORD PTR count$16[rbp], eax
+ 0051c eb 0f jmp SHORT $LN44@stbi__pic_
+$LN43@stbi__pic_:
+
+; 7283 : else
+; 7284 : count -= 127;
+
+ 0051e 8b 85 04 02 00
+ 00 mov eax, DWORD PTR count$16[rbp]
+ 00524 83 e8 7f sub eax, 127 ; 0000007fH
+ 00527 89 85 04 02 00
+ 00 mov DWORD PTR count$16[rbp], eax
+$LN44@stbi__pic_:
+
+; 7285 : if (count > left)
+
+ 0052d 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR left$15[rbp]
+ 00533 39 85 04 02 00
+ 00 cmp DWORD PTR count$16[rbp], eax
+ 00539 7e 34 jle SHORT $LN45@stbi__pic_
+
+; 7286 : return stbi__errpuc("bad file",
+
+ 0053b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
+ 00542 e8 00 00 00 00 call stbi__err
+ 00547 85 c0 test eax, eax
+ 00549 74 0d je SHORT $LN64@stbi__pic_
+ 0054b 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv217[rbp], 0
+ 00556 eb 0b jmp SHORT $LN65@stbi__pic_
+$LN64@stbi__pic_:
+ 00558 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv217[rbp], 0
+$LN65@stbi__pic_:
+ 00563 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv217[rbp]
+ 0056a e9 6f 01 00 00 jmp $LN1@stbi__pic_
+$LN45@stbi__pic_:
+
+; 7287 : "scanline overrun");
+; 7288 :
+; 7289 : if (!stbi__readval(s, packet->channel, value))
+
+ 0056f 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR packet$8[rbp]
+ 00576 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 0057a 4c 8d 85 44 02
+ 00 00 lea r8, QWORD PTR value$18[rbp]
+ 00581 8b d0 mov edx, eax
+ 00583 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0058a e8 00 00 00 00 call stbi__readval
+ 0058f 48 85 c0 test rax, rax
+ 00592 75 07 jne SHORT $LN46@stbi__pic_
+
+; 7290 : return 0;
+
+ 00594 33 c0 xor eax, eax
+ 00596 e9 43 01 00 00 jmp $LN1@stbi__pic_
+$LN46@stbi__pic_:
+
+; 7291 :
+; 7292 : for (i = 0; i < count; ++i, dest += 4)
+
+ 0059b c7 85 24 02 00
+ 00 00 00 00 00 mov DWORD PTR i$17[rbp], 0
+ 005a5 eb 20 jmp SHORT $LN25@stbi__pic_
+$LN23@stbi__pic_:
+ 005a7 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$17[rbp]
+ 005ad ff c0 inc eax
+ 005af 89 85 24 02 00
+ 00 mov DWORD PTR i$17[rbp], eax
+ 005b5 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR dest$9[rbp]
+ 005bc 48 83 c0 04 add rax, 4
+ 005c0 48 89 85 28 01
+ 00 00 mov QWORD PTR dest$9[rbp], rax
+$LN25@stbi__pic_:
+ 005c7 8b 85 04 02 00
+ 00 mov eax, DWORD PTR count$16[rbp]
+ 005cd 39 85 24 02 00
+ 00 cmp DWORD PTR i$17[rbp], eax
+ 005d3 7d 23 jge SHORT $LN24@stbi__pic_
+
+; 7293 : stbi__copyval(packet->channel, dest, value);
+
+ 005d5 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR packet$8[rbp]
+ 005dc 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 005e0 4c 8d 85 44 02
+ 00 00 lea r8, QWORD PTR value$18[rbp]
+ 005e7 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR dest$9[rbp]
+ 005ee 8b c8 mov ecx, eax
+ 005f0 e8 00 00 00 00 call stbi__copyval
+ 005f5 90 npad 1
+ 005f6 eb af jmp SHORT $LN23@stbi__pic_
+$LN24@stbi__pic_:
+
+; 7294 : } else { // Raw
+
+ 005f8 e9 b5 00 00 00 jmp $LN42@stbi__pic_
+$LN41@stbi__pic_:
+
+; 7295 : ++count;
+
+ 005fd 8b 85 04 02 00
+ 00 mov eax, DWORD PTR count$16[rbp]
+ 00603 ff c0 inc eax
+ 00605 89 85 04 02 00
+ 00 mov DWORD PTR count$16[rbp], eax
+
+; 7296 : if (count > left)
+
+ 0060b 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR left$15[rbp]
+ 00611 39 85 04 02 00
+ 00 cmp DWORD PTR count$16[rbp], eax
+ 00617 7e 34 jle SHORT $LN47@stbi__pic_
+
+; 7297 : return stbi__errpuc("bad file",
+
+ 00619 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
+ 00620 e8 00 00 00 00 call stbi__err
+ 00625 85 c0 test eax, eax
+ 00627 74 0d je SHORT $LN66@stbi__pic_
+ 00629 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv238[rbp], 0
+ 00634 eb 0b jmp SHORT $LN67@stbi__pic_
+$LN66@stbi__pic_:
+ 00636 48 c7 85 d8 03
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv238[rbp], 0
+$LN67@stbi__pic_:
+ 00641 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv238[rbp]
+ 00648 e9 91 00 00 00 jmp $LN1@stbi__pic_
+$LN47@stbi__pic_:
+
+; 7298 : "scanline overrun");
+; 7299 :
+; 7300 : for (i = 0; i < count; ++i, dest += 4)
+
+ 0064d c7 85 24 02 00
+ 00 00 00 00 00 mov DWORD PTR i$17[rbp], 0
+ 00657 eb 20 jmp SHORT $LN28@stbi__pic_
+$LN26@stbi__pic_:
+ 00659 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$17[rbp]
+ 0065f ff c0 inc eax
+ 00661 89 85 24 02 00
+ 00 mov DWORD PTR i$17[rbp], eax
+ 00667 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR dest$9[rbp]
+ 0066e 48 83 c0 04 add rax, 4
+ 00672 48 89 85 28 01
+ 00 00 mov QWORD PTR dest$9[rbp], rax
+$LN28@stbi__pic_:
+ 00679 8b 85 04 02 00
+ 00 mov eax, DWORD PTR count$16[rbp]
+ 0067f 39 85 24 02 00
+ 00 cmp DWORD PTR i$17[rbp], eax
+ 00685 7d 2b jge SHORT $LN27@stbi__pic_
+
+; 7301 : if (!stbi__readval(s, packet->channel,
+
+ 00687 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR packet$8[rbp]
+ 0068e 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 00692 4c 8b 85 28 01
+ 00 00 mov r8, QWORD PTR dest$9[rbp]
+ 00699 8b d0 mov edx, eax
+ 0069b 48 8b 8d 10 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 006a2 e8 00 00 00 00 call stbi__readval
+ 006a7 48 85 c0 test rax, rax
+ 006aa 75 04 jne SHORT $LN48@stbi__pic_
+
+; 7302 : dest))
+; 7303 : return 0;
+
+ 006ac 33 c0 xor eax, eax
+ 006ae eb 2e jmp SHORT $LN1@stbi__pic_
+$LN48@stbi__pic_:
+ 006b0 eb a7 jmp SHORT $LN26@stbi__pic_
+$LN27@stbi__pic_:
+$LN42@stbi__pic_:
+
+; 7304 : }
+; 7305 : left -= count;
+
+ 006b2 8b 85 04 02 00
+ 00 mov eax, DWORD PTR count$16[rbp]
+ 006b8 8b 8d e4 01 00
+ 00 mov ecx, DWORD PTR left$15[rbp]
+ 006be 2b c8 sub ecx, eax
+ 006c0 8b c1 mov eax, ecx
+ 006c2 89 85 e4 01 00
+ 00 mov DWORD PTR left$15[rbp], eax
+
+; 7306 : }
+
+ 006c8 e9 bb fd ff ff jmp $LN21@stbi__pic_
+$LN22@stbi__pic_:
+$LN11@stbi__pic_:
+
+; 7307 : break;
+; 7308 : }
+; 7309 : }
+; 7310 : }
+
+ 006cd e9 45 fb ff ff jmp $LN8@stbi__pic_
+$LN9@stbi__pic_:
+
+; 7311 : }
+
+ 006d2 e9 1d fb ff ff jmp $LN5@stbi__pic_
+$LN6@stbi__pic_:
+
+; 7312 :
+; 7313 : return result;
+
+ 006d7 48 8b 85 30 04
+ 00 00 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi__pic_:
+
+; 7314 : }
+
+ 006de 48 8b f8 mov rdi, rax
+ 006e1 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 006e5 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__pic_load_core$rtcFrameData
+ 006ec e8 00 00 00 00 call _RTC_CheckStackVars
+ 006f1 48 8b c7 mov rax, rdi
+ 006f4 48 8b 8d e0 03
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 006fb 48 33 cd xor rcx, rbp
+ 006fe e8 00 00 00 00 call __security_check_cookie
+ 00703 48 8d a5 f8 03
+ 00 00 lea rsp, QWORD PTR [rbp+1016]
+ 0070a 5f pop rdi
+ 0070b 5d pop rbp
+ 0070c c3 ret 0
+stbi__pic_load_core ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__copyval
+_TEXT SEGMENT
+mask$ = 4
+i$ = 36
+channel$ = 288
+dest$ = 296
+src$ = 304
+stbi__copyval PROC ; COMDAT
+
+; 7184 : {
+
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00028 90 npad 1
+
+; 7185 : int mask = 0x80, i;
+
+ 00029 c7 45 04 80 00
+ 00 00 mov DWORD PTR mask$[rbp], 128 ; 00000080H
+
+; 7186 :
+; 7187 : for (i = 0; i < 4; ++i, mask >>= 1)
+
+ 00030 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00037 eb 10 jmp SHORT $LN4@stbi__copy
+$LN2@stbi__copy:
+ 00039 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 0003c ff c0 inc eax
+ 0003e 89 45 24 mov DWORD PTR i$[rbp], eax
+ 00041 8b 45 04 mov eax, DWORD PTR mask$[rbp]
+ 00044 d1 f8 sar eax, 1
+ 00046 89 45 04 mov DWORD PTR mask$[rbp], eax
+$LN4@stbi__copy:
+ 00049 83 7d 24 04 cmp DWORD PTR i$[rbp], 4
+ 0004d 7d 31 jge SHORT $LN3@stbi__copy
+
+; 7188 : if (channel & mask)
+
+ 0004f 8b 45 04 mov eax, DWORD PTR mask$[rbp]
+ 00052 8b 8d 20 01 00
+ 00 mov ecx, DWORD PTR channel$[rbp]
+ 00058 23 c8 and ecx, eax
+ 0005a 8b c1 mov eax, ecx
+ 0005c 85 c0 test eax, eax
+ 0005e 74 1e je SHORT $LN5@stbi__copy
+
+; 7189 : dest[i] = src[i];
+
+ 00060 48 63 45 24 movsxd rax, DWORD PTR i$[rbp]
+ 00064 48 63 4d 24 movsxd rcx, DWORD PTR i$[rbp]
+ 00068 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR dest$[rbp]
+ 0006f 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR src$[rbp]
+ 00076 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0007b 88 04 0a mov BYTE PTR [rdx+rcx], al
+$LN5@stbi__copy:
+ 0007e eb b9 jmp SHORT $LN2@stbi__copy
+$LN3@stbi__copy:
+
+; 7190 : }
+
+ 00080 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00087 5f pop rdi
+ 00088 5d pop rbp
+ 00089 c3 ret 0
+stbi__copyval ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__readval
+_TEXT SEGMENT
+mask$ = 4
+i$ = 36
+tv75 = 248
+s$ = 288
+channel$ = 296
+dest$ = 304
+stbi__readval PROC ; COMDAT
+
+; 7169 : {
+
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00028 90 npad 1
+
+; 7170 : int mask = 0x80, i;
+
+ 00029 c7 45 04 80 00
+ 00 00 mov DWORD PTR mask$[rbp], 128 ; 00000080H
+
+; 7171 :
+; 7172 : for (i = 0; i < 4; ++i, mask >>= 1) {
+
+ 00030 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00037 eb 10 jmp SHORT $LN4@stbi__read
+$LN2@stbi__read:
+ 00039 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 0003c ff c0 inc eax
+ 0003e 89 45 24 mov DWORD PTR i$[rbp], eax
+ 00041 8b 45 04 mov eax, DWORD PTR mask$[rbp]
+ 00044 d1 f8 sar eax, 1
+ 00046 89 45 04 mov DWORD PTR mask$[rbp], eax
+$LN4@stbi__read:
+ 00049 83 7d 24 04 cmp DWORD PTR i$[rbp], 4
+ 0004d 7d 71 jge SHORT $LN3@stbi__read
+
+; 7173 : if (channel & mask) {
+
+ 0004f 8b 45 04 mov eax, DWORD PTR mask$[rbp]
+ 00052 8b 8d 28 01 00
+ 00 mov ecx, DWORD PTR channel$[rbp]
+ 00058 23 c8 and ecx, eax
+ 0005a 8b c1 mov eax, ecx
+ 0005c 85 c0 test eax, eax
+ 0005e 74 5b je SHORT $LN5@stbi__read
+
+; 7174 : if (stbi__at_eof(s))
+
+ 00060 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00067 e8 00 00 00 00 call stbi__at_eof
+ 0006c 85 c0 test eax, eax
+ 0006e 74 31 je SHORT $LN6@stbi__read
+
+; 7175 : return stbi__errpuc("bad file", "PIC file too short");
+
+ 00070 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
+ 00077 e8 00 00 00 00 call stbi__err
+ 0007c 85 c0 test eax, eax
+ 0007e 74 0d je SHORT $LN8@stbi__read
+ 00080 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv75[rbp], 0
+ 0008b eb 0b jmp SHORT $LN9@stbi__read
+$LN8@stbi__read:
+ 0008d 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv75[rbp], 0
+$LN9@stbi__read:
+ 00098 48 8b 85 f8 00
+ 00 00 mov rax, QWORD PTR tv75[rbp]
+ 0009f eb 26 jmp SHORT $LN1@stbi__read
+$LN6@stbi__read:
+
+; 7176 : dest[i] = stbi__get8(s);
+
+ 000a1 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a8 e8 00 00 00 00 call stbi__get8
+ 000ad 48 63 4d 24 movsxd rcx, DWORD PTR i$[rbp]
+ 000b1 48 8b 95 30 01
+ 00 00 mov rdx, QWORD PTR dest$[rbp]
+ 000b8 88 04 0a mov BYTE PTR [rdx+rcx], al
+$LN5@stbi__read:
+
+; 7177 : }
+; 7178 : }
+
+ 000bb e9 79 ff ff ff jmp $LN2@stbi__read
+$LN3@stbi__read:
+
+; 7179 :
+; 7180 : return dest;
+
+ 000c0 48 8b 85 30 01
+ 00 00 mov rax, QWORD PTR dest$[rbp]
+$LN1@stbi__read:
+
+; 7181 : }
+
+ 000c7 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000ce 5f pop rdi
+ 000cf 5d pop rbp
+ 000d0 c3 ret 0
+stbi__readval ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pic_test_core
+_TEXT SEGMENT
+i$ = 4
+s$ = 256
+stbi__pic_test_core PROC ; COMDAT
+
+; 7149 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 7150 : int i;
+; 7151 :
+; 7152 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34"))
+
+ 00020 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_04KBFEPHFH@S?$IA?v4@
+ 00027 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002e e8 00 00 00 00 call stbi__pic_is4
+ 00033 85 c0 test eax, eax
+ 00035 75 04 jne SHORT $LN5@stbi__pic_
+
+; 7153 : return 0;
+
+ 00037 33 c0 xor eax, eax
+ 00039 eb 46 jmp SHORT $LN1@stbi__pic_
+$LN5@stbi__pic_:
+
+; 7154 :
+; 7155 : for (i = 0; i < 84; ++i)
+
+ 0003b c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00042 eb 08 jmp SHORT $LN4@stbi__pic_
+$LN2@stbi__pic_:
+ 00044 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00047 ff c0 inc eax
+ 00049 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__pic_:
+ 0004c 83 7d 04 54 cmp DWORD PTR i$[rbp], 84 ; 00000054H
+ 00050 7d 0f jge SHORT $LN3@stbi__pic_
+
+; 7156 : stbi__get8(s);
+
+ 00052 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00059 e8 00 00 00 00 call stbi__get8
+ 0005e 90 npad 1
+ 0005f eb e3 jmp SHORT $LN2@stbi__pic_
+$LN3@stbi__pic_:
+
+; 7157 :
+; 7158 : if (!stbi__pic_is4(s, "PICT"))
+
+ 00061 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_04ELNJHLFH@PICT@
+ 00068 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006f e8 00 00 00 00 call stbi__pic_is4
+ 00074 85 c0 test eax, eax
+ 00076 75 04 jne SHORT $LN6@stbi__pic_
+
+; 7159 : return 0;
+
+ 00078 33 c0 xor eax, eax
+ 0007a eb 05 jmp SHORT $LN1@stbi__pic_
+$LN6@stbi__pic_:
+
+; 7160 :
+; 7161 : return 1;
+
+ 0007c b8 01 00 00 00 mov eax, 1
+$LN1@stbi__pic_:
+
+; 7162 : }
+
+ 00081 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00088 5f pop rdi
+ 00089 5d pop rbp
+ 0008a c3 ret 0
+stbi__pic_test_core ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pic_is4
+_TEXT SEGMENT
+i$ = 4
+s$ = 256
+str$ = 264
+stbi__pic_is4 PROC ; COMDAT
+
+; 7139 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 7140 : int i;
+; 7141 : for (i = 0; i < 4; ++i)
+
+ 00025 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0002c eb 08 jmp SHORT $LN4@stbi__pic_
+$LN2@stbi__pic_:
+ 0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00031 ff c0 inc eax
+ 00033 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__pic_:
+ 00036 83 7d 04 04 cmp DWORD PTR i$[rbp], 4
+ 0003a 7d 28 jge SHORT $LN3@stbi__pic_
+
+; 7142 : if (stbi__get8(s) != (stbi_uc)str[i])
+
+ 0003c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00043 e8 00 00 00 00 call stbi__get8
+ 00048 0f b6 c0 movzx eax, al
+ 0004b 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 0004f 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR str$[rbp]
+ 00056 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0005a 3b c1 cmp eax, ecx
+ 0005c 74 04 je SHORT $LN5@stbi__pic_
+
+; 7143 : return 0;
+
+ 0005e 33 c0 xor eax, eax
+ 00060 eb 07 jmp SHORT $LN1@stbi__pic_
+$LN5@stbi__pic_:
+ 00062 eb ca jmp SHORT $LN2@stbi__pic_
+$LN3@stbi__pic_:
+
+; 7144 :
+; 7145 : return 1;
+
+ 00064 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__pic_:
+
+; 7146 : }
+
+ 00069 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00070 5f pop rdi
+ 00071 5d pop rbp
+ 00072 c3 ret 0
+stbi__pic_is4 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__psd_decode_rle
+_TEXT SEGMENT
+count$ = 4
+nleft$ = 36
+len$ = 68
+val$1 = 100
+s$ = 352
+p$ = 360
+pixelCount$ = 368
+stbi__psd_decode_rle PROC ; COMDAT
+
+; 6881 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 68 01
+ 00 00 sub rsp, 360 ; 00000168H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 6882 : int count, nleft, len;
+; 6883 :
+; 6884 : count = 0;
+
+ 0002a c7 45 04 00 00
+ 00 00 mov DWORD PTR count$[rbp], 0
+$LN2@stbi__psd_:
+
+; 6885 : while ((nleft = pixelCount - count) > 0) {
+
+ 00031 8b 45 04 mov eax, DWORD PTR count$[rbp]
+ 00034 8b 8d 70 01 00
+ 00 mov ecx, DWORD PTR pixelCount$[rbp]
+ 0003a 2b c8 sub ecx, eax
+ 0003c 8b c1 mov eax, ecx
+ 0003e 89 45 24 mov DWORD PTR nleft$[rbp], eax
+ 00041 83 7d 24 00 cmp DWORD PTR nleft$[rbp], 0
+ 00045 0f 8e f6 00 00
+ 00 jle $LN3@stbi__psd_
+
+; 6886 : len = stbi__get8(s);
+
+ 0004b 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00052 e8 00 00 00 00 call stbi__get8
+ 00057 0f b6 c0 movzx eax, al
+ 0005a 89 45 44 mov DWORD PTR len$[rbp], eax
+
+; 6887 : if (len == 128) {
+
+ 0005d 81 7d 44 80 00
+ 00 00 cmp DWORD PTR len$[rbp], 128 ; 00000080H
+ 00064 75 05 jne SHORT $LN8@stbi__psd_
+ 00066 e9 d1 00 00 00 jmp $LN9@stbi__psd_
+$LN8@stbi__psd_:
+
+; 6888 : // No-op.
+; 6889 : } else if (len < 128) {
+
+ 0006b 81 7d 44 80 00
+ 00 00 cmp DWORD PTR len$[rbp], 128 ; 00000080H
+ 00072 7d 5d jge SHORT $LN10@stbi__psd_
+
+; 6890 : // Copy next len+1 bytes literally.
+; 6891 : len++;
+
+ 00074 8b 45 44 mov eax, DWORD PTR len$[rbp]
+ 00077 ff c0 inc eax
+ 00079 89 45 44 mov DWORD PTR len$[rbp], eax
+
+; 6892 : if (len > nleft)
+
+ 0007c 8b 45 24 mov eax, DWORD PTR nleft$[rbp]
+ 0007f 39 45 44 cmp DWORD PTR len$[rbp], eax
+ 00082 7e 07 jle SHORT $LN12@stbi__psd_
+
+; 6893 : return 0; // corrupt data
+
+ 00084 33 c0 xor eax, eax
+ 00086 e9 bb 00 00 00 jmp $LN1@stbi__psd_
+$LN12@stbi__psd_:
+
+; 6894 : count += len;
+
+ 0008b 8b 45 44 mov eax, DWORD PTR len$[rbp]
+ 0008e 8b 4d 04 mov ecx, DWORD PTR count$[rbp]
+ 00091 03 c8 add ecx, eax
+ 00093 8b c1 mov eax, ecx
+ 00095 89 45 04 mov DWORD PTR count$[rbp], eax
+$LN4@stbi__psd_:
+
+; 6895 : while (len) {
+
+ 00098 83 7d 44 00 cmp DWORD PTR len$[rbp], 0
+ 0009c 74 31 je SHORT $LN5@stbi__psd_
+
+; 6896 : *p = stbi__get8(s);
+
+ 0009e 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a5 e8 00 00 00 00 call stbi__get8
+ 000aa 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR p$[rbp]
+ 000b1 88 01 mov BYTE PTR [rcx], al
+
+; 6897 : p += 4;
+
+ 000b3 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 000ba 48 83 c0 04 add rax, 4
+ 000be 48 89 85 68 01
+ 00 00 mov QWORD PTR p$[rbp], rax
+
+; 6898 : len--;
+
+ 000c5 8b 45 44 mov eax, DWORD PTR len$[rbp]
+ 000c8 ff c8 dec eax
+ 000ca 89 45 44 mov DWORD PTR len$[rbp], eax
+
+; 6899 : }
+
+ 000cd eb c9 jmp SHORT $LN4@stbi__psd_
+$LN5@stbi__psd_:
+
+; 6900 : } else if (len > 128) {
+
+ 000cf eb 6b jmp SHORT $LN11@stbi__psd_
+$LN10@stbi__psd_:
+ 000d1 81 7d 44 80 00
+ 00 00 cmp DWORD PTR len$[rbp], 128 ; 00000080H
+ 000d8 7e 62 jle SHORT $LN13@stbi__psd_
+
+; 6901 : stbi_uc val;
+; 6902 : // Next -len+1 bytes in the dest are replicated from next source byte.
+; 6903 : // (Interpret len as a negative 8-bit int.)
+; 6904 : len = 257 - len;
+
+ 000da b8 01 01 00 00 mov eax, 257 ; 00000101H
+ 000df 2b 45 44 sub eax, DWORD PTR len$[rbp]
+ 000e2 89 45 44 mov DWORD PTR len$[rbp], eax
+
+; 6905 : if (len > nleft)
+
+ 000e5 8b 45 24 mov eax, DWORD PTR nleft$[rbp]
+ 000e8 39 45 44 cmp DWORD PTR len$[rbp], eax
+ 000eb 7e 04 jle SHORT $LN14@stbi__psd_
+
+; 6906 : return 0; // corrupt data
+
+ 000ed 33 c0 xor eax, eax
+ 000ef eb 55 jmp SHORT $LN1@stbi__psd_
+$LN14@stbi__psd_:
+
+; 6907 : val = stbi__get8(s);
+
+ 000f1 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000f8 e8 00 00 00 00 call stbi__get8
+ 000fd 88 45 64 mov BYTE PTR val$1[rbp], al
+
+; 6908 : count += len;
+
+ 00100 8b 45 44 mov eax, DWORD PTR len$[rbp]
+ 00103 8b 4d 04 mov ecx, DWORD PTR count$[rbp]
+ 00106 03 c8 add ecx, eax
+ 00108 8b c1 mov eax, ecx
+ 0010a 89 45 04 mov DWORD PTR count$[rbp], eax
+$LN6@stbi__psd_:
+
+; 6909 : while (len) {
+
+ 0010d 83 7d 44 00 cmp DWORD PTR len$[rbp], 0
+ 00111 74 29 je SHORT $LN7@stbi__psd_
+
+; 6910 : *p = val;
+
+ 00113 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0011a 0f b6 4d 64 movzx ecx, BYTE PTR val$1[rbp]
+ 0011e 88 08 mov BYTE PTR [rax], cl
+
+; 6911 : p += 4;
+
+ 00120 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 00127 48 83 c0 04 add rax, 4
+ 0012b 48 89 85 68 01
+ 00 00 mov QWORD PTR p$[rbp], rax
+
+; 6912 : len--;
+
+ 00132 8b 45 44 mov eax, DWORD PTR len$[rbp]
+ 00135 ff c8 dec eax
+ 00137 89 45 44 mov DWORD PTR len$[rbp], eax
+
+; 6913 : }
+
+ 0013a eb d1 jmp SHORT $LN6@stbi__psd_
+$LN7@stbi__psd_:
+$LN13@stbi__psd_:
+$LN11@stbi__psd_:
+$LN9@stbi__psd_:
+
+; 6914 : }
+; 6915 : }
+
+ 0013c e9 f0 fe ff ff jmp $LN2@stbi__psd_
+$LN3@stbi__psd_:
+
+; 6916 :
+; 6917 : return 1;
+
+ 00141 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__psd_:
+
+; 6918 : }
+
+ 00146 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 0014d 5f pop rdi
+ 0014e 5d pop rbp
+ 0014f c3 ret 0
+stbi__psd_decode_rle ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__tga_read_rgb16
+_TEXT SEGMENT
+px$ = 4
+fiveBitMask$ = 36
+r$ = 68
+g$ = 100
+b$ = 132
+s$ = 384
+out$ = 392
+stbi__tga_read_rgb16 PROC ; COMDAT
+
+; 6650 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 88 01
+ 00 00 sub rsp, 392 ; 00000188H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 6651 : stbi__uint16 px = (stbi__uint16)stbi__get16le(s);
+
+ 00025 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002c e8 00 00 00 00 call stbi__get16le
+ 00031 66 89 45 04 mov WORD PTR px$[rbp], ax
+
+; 6652 : stbi__uint16 fiveBitMask = 31;
+
+ 00035 b8 1f 00 00 00 mov eax, 31
+ 0003a 66 89 45 24 mov WORD PTR fiveBitMask$[rbp], ax
+
+; 6653 : // we have 3 channels with 5bits each
+; 6654 : int r = (px >> 10) & fiveBitMask;
+
+ 0003e 0f b7 45 04 movzx eax, WORD PTR px$[rbp]
+ 00042 c1 f8 0a sar eax, 10
+ 00045 0f b7 4d 24 movzx ecx, WORD PTR fiveBitMask$[rbp]
+ 00049 23 c1 and eax, ecx
+ 0004b 89 45 44 mov DWORD PTR r$[rbp], eax
+
+; 6655 : int g = (px >> 5) & fiveBitMask;
+
+ 0004e 0f b7 45 04 movzx eax, WORD PTR px$[rbp]
+ 00052 c1 f8 05 sar eax, 5
+ 00055 0f b7 4d 24 movzx ecx, WORD PTR fiveBitMask$[rbp]
+ 00059 23 c1 and eax, ecx
+ 0005b 89 45 64 mov DWORD PTR g$[rbp], eax
+
+; 6656 : int b = px & fiveBitMask;
+
+ 0005e 0f b7 45 04 movzx eax, WORD PTR px$[rbp]
+ 00062 0f b7 4d 24 movzx ecx, WORD PTR fiveBitMask$[rbp]
+ 00066 23 c1 and eax, ecx
+ 00068 89 85 84 00 00
+ 00 mov DWORD PTR b$[rbp], eax
+
+; 6657 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later
+; 6658 : out[0] = (stbi_uc)((r * 255) / 31);
+
+ 0006e 69 45 44 ff 00
+ 00 00 imul eax, DWORD PTR r$[rbp], 255 ; 000000ffH
+ 00075 99 cdq
+ 00076 b9 1f 00 00 00 mov ecx, 31
+ 0007b f7 f9 idiv ecx
+ 0007d b9 01 00 00 00 mov ecx, 1
+ 00082 48 6b c9 00 imul rcx, rcx, 0
+ 00086 48 8b 95 88 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 0008d 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6659 : out[1] = (stbi_uc)((g * 255) / 31);
+
+ 00090 69 45 64 ff 00
+ 00 00 imul eax, DWORD PTR g$[rbp], 255 ; 000000ffH
+ 00097 99 cdq
+ 00098 b9 1f 00 00 00 mov ecx, 31
+ 0009d f7 f9 idiv ecx
+ 0009f b9 01 00 00 00 mov ecx, 1
+ 000a4 48 6b c9 01 imul rcx, rcx, 1
+ 000a8 48 8b 95 88 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 000af 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6660 : out[2] = (stbi_uc)((b * 255) / 31);
+
+ 000b2 69 85 84 00 00
+ 00 ff 00 00 00 imul eax, DWORD PTR b$[rbp], 255 ; 000000ffH
+ 000bc 99 cdq
+ 000bd b9 1f 00 00 00 mov ecx, 31
+ 000c2 f7 f9 idiv ecx
+ 000c4 b9 01 00 00 00 mov ecx, 1
+ 000c9 48 6b c9 02 imul rcx, rcx, 2
+ 000cd 48 8b 95 88 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 000d4 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6661 :
+; 6662 : // some people claim that the most significant bit might be used for alpha
+; 6663 : // (possibly if an alpha-bit is set in the "image descriptor byte")
+; 6664 : // but that only made 16bit test images completely translucent..
+; 6665 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha.
+; 6666 : }
+
+ 000d7 48 8d a5 68 01
+ 00 00 lea rsp, QWORD PTR [rbp+360]
+ 000de 5f pop rdi
+ 000df 5d pop rbp
+ 000e0 c3 ret 0
+stbi__tga_read_rgb16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__tga_get_comp
+_TEXT SEGMENT
+tv65 = 192
+bits_per_pixel$ = 240
+is_grey$ = 248
+is_rgb16$ = 256
+stbi__tga_get_comp PROC ; COMDAT
+
+; 6516 : {
+
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000d 55 push rbp
+ 0000e 57 push rdi
+ 0000f 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00027 90 npad 1
+
+; 6517 : // only RGB or RGBA (incl. 16bit) or grey allowed
+; 6518 : if (is_rgb16)
+
+ 00028 48 83 bd 00 01
+ 00 00 00 cmp QWORD PTR is_rgb16$[rbp], 0
+ 00030 74 0d je SHORT $LN4@stbi__tga_
+
+; 6519 : *is_rgb16 = 0;
+
+ 00032 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR is_rgb16$[rbp]
+ 00039 c7 00 00 00 00
+ 00 mov DWORD PTR [rax], 0
+$LN4@stbi__tga_:
+
+; 6520 : switch (bits_per_pixel) {
+
+ 0003f 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR bits_per_pixel$[rbp]
+ 00045 89 85 c0 00 00
+ 00 mov DWORD PTR tv65[rbp], eax
+ 0004b 83 bd c0 00 00
+ 00 08 cmp DWORD PTR tv65[rbp], 8
+ 00052 74 26 je SHORT $LN5@stbi__tga_
+ 00054 83 bd c0 00 00
+ 00 0f cmp DWORD PTR tv65[rbp], 15
+ 0005b 74 34 je SHORT $LN8@stbi__tga_
+ 0005d 83 bd c0 00 00
+ 00 10 cmp DWORD PTR tv65[rbp], 16
+ 00064 74 1b je SHORT $LN6@stbi__tga_
+ 00066 83 bd c0 00 00
+ 00 18 cmp DWORD PTR tv65[rbp], 24
+ 0006d 74 40 je SHORT $LN10@stbi__tga_
+ 0006f 83 bd c0 00 00
+ 00 20 cmp DWORD PTR tv65[rbp], 32 ; 00000020H
+ 00076 74 37 je SHORT $LN11@stbi__tga_
+ 00078 eb 46 jmp SHORT $LN12@stbi__tga_
+$LN5@stbi__tga_:
+
+; 6521 : case 8:
+; 6522 : return STBI_grey;
+
+ 0007a b8 01 00 00 00 mov eax, 1
+ 0007f eb 41 jmp SHORT $LN1@stbi__tga_
+$LN6@stbi__tga_:
+
+; 6523 : case 16:
+; 6524 : if (is_grey)
+
+ 00081 83 bd f8 00 00
+ 00 00 cmp DWORD PTR is_grey$[rbp], 0
+ 00088 74 07 je SHORT $LN7@stbi__tga_
+
+; 6525 : return STBI_grey_alpha;
+
+ 0008a b8 02 00 00 00 mov eax, 2
+ 0008f eb 31 jmp SHORT $LN1@stbi__tga_
+$LN7@stbi__tga_:
+$LN8@stbi__tga_:
+
+; 6526 : // fallthrough
+; 6527 : case 15:
+; 6528 : if (is_rgb16)
+
+ 00091 48 83 bd 00 01
+ 00 00 00 cmp QWORD PTR is_rgb16$[rbp], 0
+ 00099 74 0d je SHORT $LN9@stbi__tga_
+
+; 6529 : *is_rgb16 = 1;
+
+ 0009b 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR is_rgb16$[rbp]
+ 000a2 c7 00 01 00 00
+ 00 mov DWORD PTR [rax], 1
+$LN9@stbi__tga_:
+
+; 6530 : return STBI_rgb;
+
+ 000a8 b8 03 00 00 00 mov eax, 3
+ 000ad eb 13 jmp SHORT $LN1@stbi__tga_
+$LN10@stbi__tga_:
+$LN11@stbi__tga_:
+
+; 6531 : case 24: // fallthrough
+; 6532 : case 32:
+; 6533 : return bits_per_pixel / 8;
+
+ 000af 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR bits_per_pixel$[rbp]
+ 000b5 99 cdq
+ 000b6 83 e2 07 and edx, 7
+ 000b9 03 c2 add eax, edx
+ 000bb c1 f8 03 sar eax, 3
+ 000be eb 02 jmp SHORT $LN1@stbi__tga_
+$LN12@stbi__tga_:
+
+; 6534 : default:
+; 6535 : return 0;
+
+ 000c0 33 c0 xor eax, eax
+$LN1@stbi__tga_:
+
+; 6536 : }
+; 6537 : }
+
+ 000c2 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000c9 5f pop rdi
+ 000ca 5d pop rbp
+ 000cb c3 ret 0
+stbi__tga_get_comp ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bmp_parse_header
+_TEXT SEGMENT
+hsz$ = 4
+compress$1 = 36
+i$2 = 68
+tv75 = 280
+tv95 = 280
+tv136 = 280
+tv156 = 280
+tv168 = 280
+tv173 = 280
+tv182 = 280
+tv224 = 280
+tv228 = 280
+tv234 = 280
+s$ = 320
+info$ = 328
+stbi__bmp_parse_header PROC ; COMDAT
+
+; 6166 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 6167 : int hsz;
+; 6168 : if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M')
+
+ 00025 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002c e8 00 00 00 00 call stbi__get8
+ 00031 0f b6 c0 movzx eax, al
+ 00034 83 f8 42 cmp eax, 66 ; 00000042H
+ 00037 75 14 jne SHORT $LN6@stbi__bmp_
+ 00039 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00040 e8 00 00 00 00 call stbi__get8
+ 00045 0f b6 c0 movzx eax, al
+ 00048 83 f8 4d cmp eax, 77 ; 0000004dH
+ 0004b 74 34 je SHORT $LN5@stbi__bmp_
+$LN6@stbi__bmp_:
+
+; 6169 : return stbi__errpuc("not BMP", "Corrupt BMP");
+
+ 0004d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IANEBNLB@not?5BMP@
+ 00054 e8 00 00 00 00 call stbi__err
+ 00059 85 c0 test eax, eax
+ 0005b 74 0d je SHORT $LN32@stbi__bmp_
+ 0005d 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv75[rbp], 0
+ 00068 eb 0b jmp SHORT $LN33@stbi__bmp_
+$LN32@stbi__bmp_:
+ 0006a 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv75[rbp], 0
+$LN33@stbi__bmp_:
+ 00075 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv75[rbp]
+ 0007c e9 af 05 00 00 jmp $LN1@stbi__bmp_
+$LN5@stbi__bmp_:
+
+; 6170 : stbi__get32le(s); // discard filesize
+
+ 00081 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00088 e8 00 00 00 00 call stbi__get32le
+ 0008d 90 npad 1
+
+; 6171 : stbi__get16le(s); // discard reserved
+
+ 0008e 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00095 e8 00 00 00 00 call stbi__get16le
+ 0009a 90 npad 1
+
+; 6172 : stbi__get16le(s); // discard reserved
+
+ 0009b 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a2 e8 00 00 00 00 call stbi__get16le
+ 000a7 90 npad 1
+
+; 6173 : info->offset = stbi__get32le(s);
+
+ 000a8 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000af e8 00 00 00 00 call stbi__get32le
+ 000b4 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 000bb 89 41 04 mov DWORD PTR [rcx+4], eax
+
+; 6174 : info->hsz = hsz = stbi__get32le(s);
+
+ 000be 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c5 e8 00 00 00 00 call stbi__get32le
+ 000ca 89 45 04 mov DWORD PTR hsz$[rbp], eax
+ 000cd 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000d4 8b 4d 04 mov ecx, DWORD PTR hsz$[rbp]
+ 000d7 89 48 08 mov DWORD PTR [rax+8], ecx
+
+; 6175 : info->mr = info->mg = info->mb = info->ma = 0;
+
+ 000da 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000e1 c7 40 18 00 00
+ 00 00 mov DWORD PTR [rax+24], 0
+ 000e8 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000ef c7 40 14 00 00
+ 00 00 mov DWORD PTR [rax+20], 0
+ 000f6 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000fd c7 40 10 00 00
+ 00 00 mov DWORD PTR [rax+16], 0
+ 00104 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 0010b c7 40 0c 00 00
+ 00 00 mov DWORD PTR [rax+12], 0
+
+; 6176 : info->extra_read = 14;
+
+ 00112 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00119 c7 40 20 0e 00
+ 00 00 mov DWORD PTR [rax+32], 14
+
+; 6177 :
+; 6178 : if (info->offset < 0)
+
+ 00120 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00127 83 78 04 00 cmp DWORD PTR [rax+4], 0
+ 0012b 7d 34 jge SHORT $LN7@stbi__bmp_
+
+; 6179 : return stbi__errpuc("bad BMP", "bad BMP");
+
+ 0012d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
+ 00134 e8 00 00 00 00 call stbi__err
+ 00139 85 c0 test eax, eax
+ 0013b 74 0d je SHORT $LN34@stbi__bmp_
+ 0013d 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv95[rbp], 0
+ 00148 eb 0b jmp SHORT $LN35@stbi__bmp_
+$LN34@stbi__bmp_:
+ 0014a 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv95[rbp], 0
+$LN35@stbi__bmp_:
+ 00155 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv95[rbp]
+ 0015c e9 cf 04 00 00 jmp $LN1@stbi__bmp_
+$LN7@stbi__bmp_:
+
+; 6180 :
+; 6181 : if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124)
+
+ 00161 83 7d 04 0c cmp DWORD PTR hsz$[rbp], 12
+ 00165 74 4c je SHORT $LN8@stbi__bmp_
+ 00167 83 7d 04 28 cmp DWORD PTR hsz$[rbp], 40 ; 00000028H
+ 0016b 74 46 je SHORT $LN8@stbi__bmp_
+ 0016d 83 7d 04 38 cmp DWORD PTR hsz$[rbp], 56 ; 00000038H
+ 00171 74 40 je SHORT $LN8@stbi__bmp_
+ 00173 83 7d 04 6c cmp DWORD PTR hsz$[rbp], 108 ; 0000006cH
+ 00177 74 3a je SHORT $LN8@stbi__bmp_
+ 00179 83 7d 04 7c cmp DWORD PTR hsz$[rbp], 124 ; 0000007cH
+ 0017d 74 34 je SHORT $LN8@stbi__bmp_
+
+; 6182 : return stbi__errpuc("unknown BMP", "BMP type not supported: unknown");
+
+ 0017f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@KHBIBJBG@unknown?5BMP@
+ 00186 e8 00 00 00 00 call stbi__err
+ 0018b 85 c0 test eax, eax
+ 0018d 74 0d je SHORT $LN36@stbi__bmp_
+ 0018f 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv136[rbp], 0
+ 0019a eb 0b jmp SHORT $LN37@stbi__bmp_
+$LN36@stbi__bmp_:
+ 0019c 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv136[rbp], 0
+$LN37@stbi__bmp_:
+ 001a7 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv136[rbp]
+ 001ae e9 7d 04 00 00 jmp $LN1@stbi__bmp_
+$LN8@stbi__bmp_:
+
+; 6183 : if (hsz == 12) {
+
+ 001b3 83 7d 04 0c cmp DWORD PTR hsz$[rbp], 12
+ 001b7 75 2d jne SHORT $LN9@stbi__bmp_
+
+; 6184 : s->img_x = stbi__get16le(s);
+
+ 001b9 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001c0 e8 00 00 00 00 call stbi__get16le
+ 001c5 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001cc 89 01 mov DWORD PTR [rcx], eax
+
+; 6185 : s->img_y = stbi__get16le(s);
+
+ 001ce 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001d5 e8 00 00 00 00 call stbi__get16le
+ 001da 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001e1 89 41 04 mov DWORD PTR [rcx+4], eax
+
+; 6186 : } else {
+
+ 001e4 eb 2b jmp SHORT $LN10@stbi__bmp_
+$LN9@stbi__bmp_:
+
+; 6187 : s->img_x = stbi__get32le(s);
+
+ 001e6 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001ed e8 00 00 00 00 call stbi__get32le
+ 001f2 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001f9 89 01 mov DWORD PTR [rcx], eax
+
+; 6188 : s->img_y = stbi__get32le(s);
+
+ 001fb 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00202 e8 00 00 00 00 call stbi__get32le
+ 00207 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0020e 89 41 04 mov DWORD PTR [rcx+4], eax
+$LN10@stbi__bmp_:
+
+; 6189 : }
+; 6190 : if (stbi__get16le(s) != 1)
+
+ 00211 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00218 e8 00 00 00 00 call stbi__get16le
+ 0021d 83 f8 01 cmp eax, 1
+ 00220 74 34 je SHORT $LN11@stbi__bmp_
+
+; 6191 : return stbi__errpuc("bad BMP", "bad BMP");
+
+ 00222 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
+ 00229 e8 00 00 00 00 call stbi__err
+ 0022e 85 c0 test eax, eax
+ 00230 74 0d je SHORT $LN38@stbi__bmp_
+ 00232 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv156[rbp], 0
+ 0023d eb 0b jmp SHORT $LN39@stbi__bmp_
+$LN38@stbi__bmp_:
+ 0023f 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv156[rbp], 0
+$LN39@stbi__bmp_:
+ 0024a 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv156[rbp]
+ 00251 e9 da 03 00 00 jmp $LN1@stbi__bmp_
+$LN11@stbi__bmp_:
+
+; 6192 : info->bpp = stbi__get16le(s);
+
+ 00256 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0025d e8 00 00 00 00 call stbi__get16le
+ 00262 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00269 89 01 mov DWORD PTR [rcx], eax
+
+; 6193 : if (hsz != 12) {
+
+ 0026b 83 7d 04 0c cmp DWORD PTR hsz$[rbp], 12
+ 0026f 0f 84 b6 03 00
+ 00 je $LN12@stbi__bmp_
+
+; 6194 : int compress = stbi__get32le(s);
+
+ 00275 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0027c e8 00 00 00 00 call stbi__get32le
+ 00281 89 45 24 mov DWORD PTR compress$1[rbp], eax
+
+; 6195 : if (compress == 1 || compress == 2)
+
+ 00284 83 7d 24 01 cmp DWORD PTR compress$1[rbp], 1
+ 00288 74 06 je SHORT $LN14@stbi__bmp_
+ 0028a 83 7d 24 02 cmp DWORD PTR compress$1[rbp], 2
+ 0028e 75 34 jne SHORT $LN13@stbi__bmp_
+$LN14@stbi__bmp_:
+
+; 6196 : return stbi__errpuc("BMP RLE", "BMP type not supported: RLE");
+
+ 00290 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IMHMNOIB@BMP?5RLE@
+ 00297 e8 00 00 00 00 call stbi__err
+ 0029c 85 c0 test eax, eax
+ 0029e 74 0d je SHORT $LN40@stbi__bmp_
+ 002a0 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv168[rbp], 0
+ 002ab eb 0b jmp SHORT $LN41@stbi__bmp_
+$LN40@stbi__bmp_:
+ 002ad 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv168[rbp], 0
+$LN41@stbi__bmp_:
+ 002b8 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv168[rbp]
+ 002bf e9 6c 03 00 00 jmp $LN1@stbi__bmp_
+$LN13@stbi__bmp_:
+
+; 6197 : if (compress >= 4)
+
+ 002c4 83 7d 24 04 cmp DWORD PTR compress$1[rbp], 4
+ 002c8 7c 34 jl SHORT $LN15@stbi__bmp_
+
+; 6198 : return stbi__errpuc(
+
+ 002ca 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@
+ 002d1 e8 00 00 00 00 call stbi__err
+ 002d6 85 c0 test eax, eax
+ 002d8 74 0d je SHORT $LN42@stbi__bmp_
+ 002da 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv173[rbp], 0
+ 002e5 eb 0b jmp SHORT $LN43@stbi__bmp_
+$LN42@stbi__bmp_:
+ 002e7 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv173[rbp], 0
+$LN43@stbi__bmp_:
+ 002f2 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv173[rbp]
+ 002f9 e9 32 03 00 00 jmp $LN1@stbi__bmp_
+$LN15@stbi__bmp_:
+
+; 6199 : "BMP JPEG/PNG",
+; 6200 : "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes
+; 6201 : if (compress == 3 && info->bpp != 16 && info->bpp != 32)
+
+ 002fe 83 7d 24 03 cmp DWORD PTR compress$1[rbp], 3
+ 00302 75 4c jne SHORT $LN16@stbi__bmp_
+ 00304 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 0030b 83 38 10 cmp DWORD PTR [rax], 16
+ 0030e 74 40 je SHORT $LN16@stbi__bmp_
+ 00310 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00317 83 38 20 cmp DWORD PTR [rax], 32 ; 00000020H
+ 0031a 74 34 je SHORT $LN16@stbi__bmp_
+
+; 6202 : return stbi__errpuc("bad BMP",
+
+ 0031c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
+ 00323 e8 00 00 00 00 call stbi__err
+ 00328 85 c0 test eax, eax
+ 0032a 74 0d je SHORT $LN44@stbi__bmp_
+ 0032c 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv182[rbp], 0
+ 00337 eb 0b jmp SHORT $LN45@stbi__bmp_
+$LN44@stbi__bmp_:
+ 00339 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv182[rbp], 0
+$LN45@stbi__bmp_:
+ 00344 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv182[rbp]
+ 0034b e9 e0 02 00 00 jmp $LN1@stbi__bmp_
+$LN16@stbi__bmp_:
+
+; 6203 : "bad BMP"); // bitfields requires 16 or 32 bits/pixel
+; 6204 : stbi__get32le(s); // discard sizeof
+
+ 00350 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00357 e8 00 00 00 00 call stbi__get32le
+ 0035c 90 npad 1
+
+; 6205 : stbi__get32le(s); // discard hres
+
+ 0035d 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00364 e8 00 00 00 00 call stbi__get32le
+ 00369 90 npad 1
+
+; 6206 : stbi__get32le(s); // discard vres
+
+ 0036a 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00371 e8 00 00 00 00 call stbi__get32le
+ 00376 90 npad 1
+
+; 6207 : stbi__get32le(s); // discard colorsused
+
+ 00377 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0037e e8 00 00 00 00 call stbi__get32le
+ 00383 90 npad 1
+
+; 6208 : stbi__get32le(s); // discard max important
+
+ 00384 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0038b e8 00 00 00 00 call stbi__get32le
+ 00390 90 npad 1
+
+; 6209 : if (hsz == 40 || hsz == 56) {
+
+ 00391 83 7d 04 28 cmp DWORD PTR hsz$[rbp], 40 ; 00000028H
+ 00395 74 0a je SHORT $LN19@stbi__bmp_
+ 00397 83 7d 04 38 cmp DWORD PTR hsz$[rbp], 56 ; 00000038H
+ 0039b 0f 85 6f 01 00
+ 00 jne $LN17@stbi__bmp_
+$LN19@stbi__bmp_:
+
+; 6210 : if (hsz == 56) {
+
+ 003a1 83 7d 04 38 cmp DWORD PTR hsz$[rbp], 56 ; 00000038H
+ 003a5 75 34 jne SHORT $LN20@stbi__bmp_
+
+; 6211 : stbi__get32le(s);
+
+ 003a7 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003ae e8 00 00 00 00 call stbi__get32le
+ 003b3 90 npad 1
+
+; 6212 : stbi__get32le(s);
+
+ 003b4 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003bb e8 00 00 00 00 call stbi__get32le
+ 003c0 90 npad 1
+
+; 6213 : stbi__get32le(s);
+
+ 003c1 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003c8 e8 00 00 00 00 call stbi__get32le
+ 003cd 90 npad 1
+
+; 6214 : stbi__get32le(s);
+
+ 003ce 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003d5 e8 00 00 00 00 call stbi__get32le
+ 003da 90 npad 1
+$LN20@stbi__bmp_:
+
+; 6215 : }
+; 6216 : if (info->bpp == 16 || info->bpp == 32) {
+
+ 003db 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 003e2 83 38 10 cmp DWORD PTR [rax], 16
+ 003e5 74 10 je SHORT $LN22@stbi__bmp_
+ 003e7 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 003ee 83 38 20 cmp DWORD PTR [rax], 32 ; 00000020H
+ 003f1 0f 85 14 01 00
+ 00 jne $LN21@stbi__bmp_
+$LN22@stbi__bmp_:
+
+; 6217 : if (compress == 0) {
+
+ 003f7 83 7d 24 00 cmp DWORD PTR compress$1[rbp], 0
+ 003fb 75 15 jne SHORT $LN23@stbi__bmp_
+
+; 6218 : stbi__bmp_set_mask_defaults(info, compress);
+
+ 003fd 8b 55 24 mov edx, DWORD PTR compress$1[rbp]
+ 00400 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00407 e8 00 00 00 00 call stbi__bmp_set_mask_defaults
+ 0040c 90 npad 1
+ 0040d e9 f9 00 00 00 jmp $LN24@stbi__bmp_
+$LN23@stbi__bmp_:
+
+; 6219 : } else if (compress == 3) {
+
+ 00412 83 7d 24 03 cmp DWORD PTR compress$1[rbp], 3
+ 00416 0f 85 bb 00 00
+ 00 jne $LN25@stbi__bmp_
+
+; 6220 : info->mr = stbi__get32le(s);
+
+ 0041c 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00423 e8 00 00 00 00 call stbi__get32le
+ 00428 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 0042f 89 41 0c mov DWORD PTR [rcx+12], eax
+
+; 6221 : info->mg = stbi__get32le(s);
+
+ 00432 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00439 e8 00 00 00 00 call stbi__get32le
+ 0043e 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00445 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 6222 : info->mb = stbi__get32le(s);
+
+ 00448 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0044f e8 00 00 00 00 call stbi__get32le
+ 00454 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 0045b 89 41 14 mov DWORD PTR [rcx+20], eax
+
+; 6223 : info->extra_read += 12;
+
+ 0045e 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00465 8b 40 20 mov eax, DWORD PTR [rax+32]
+ 00468 83 c0 0c add eax, 12
+ 0046b 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00472 89 41 20 mov DWORD PTR [rcx+32], eax
+
+; 6224 : // not documented, but generated by photoshop and handled by mspaint
+; 6225 : if (info->mr == info->mg && info->mg == info->mb) {
+
+ 00475 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 0047c 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00483 8b 49 10 mov ecx, DWORD PTR [rcx+16]
+ 00486 39 48 0c cmp DWORD PTR [rax+12], ecx
+ 00489 75 4a jne SHORT $LN27@stbi__bmp_
+ 0048b 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00492 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00499 8b 49 14 mov ecx, DWORD PTR [rcx+20]
+ 0049c 39 48 10 cmp DWORD PTR [rax+16], ecx
+ 0049f 75 34 jne SHORT $LN27@stbi__bmp_
+
+; 6226 : // ?!?!?
+; 6227 : return stbi__errpuc("bad BMP", "bad BMP");
+
+ 004a1 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
+ 004a8 e8 00 00 00 00 call stbi__err
+ 004ad 85 c0 test eax, eax
+ 004af 74 0d je SHORT $LN46@stbi__bmp_
+ 004b1 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv224[rbp], 0
+ 004bc eb 0b jmp SHORT $LN47@stbi__bmp_
+$LN46@stbi__bmp_:
+ 004be 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv224[rbp], 0
+$LN47@stbi__bmp_:
+ 004c9 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv224[rbp]
+ 004d0 e9 5b 01 00 00 jmp $LN1@stbi__bmp_
+$LN27@stbi__bmp_:
+
+; 6228 : }
+; 6229 : } else
+
+ 004d5 eb 34 jmp SHORT $LN26@stbi__bmp_
+$LN25@stbi__bmp_:
+
+; 6230 : return stbi__errpuc("bad BMP", "bad BMP");
+
+ 004d7 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
+ 004de e8 00 00 00 00 call stbi__err
+ 004e3 85 c0 test eax, eax
+ 004e5 74 0d je SHORT $LN48@stbi__bmp_
+ 004e7 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv228[rbp], 0
+ 004f2 eb 0b jmp SHORT $LN49@stbi__bmp_
+$LN48@stbi__bmp_:
+ 004f4 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv228[rbp], 0
+$LN49@stbi__bmp_:
+ 004ff 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv228[rbp]
+ 00506 e9 25 01 00 00 jmp $LN1@stbi__bmp_
+$LN26@stbi__bmp_:
+$LN24@stbi__bmp_:
+$LN21@stbi__bmp_:
+
+; 6231 : }
+; 6232 : } else {
+
+ 0050b e9 1b 01 00 00 jmp $LN18@stbi__bmp_
+$LN17@stbi__bmp_:
+
+; 6233 : // V4/V5 header
+; 6234 : int i;
+; 6235 : if (hsz != 108 && hsz != 124)
+
+ 00510 83 7d 04 6c cmp DWORD PTR hsz$[rbp], 108 ; 0000006cH
+ 00514 74 3a je SHORT $LN28@stbi__bmp_
+ 00516 83 7d 04 7c cmp DWORD PTR hsz$[rbp], 124 ; 0000007cH
+ 0051a 74 34 je SHORT $LN28@stbi__bmp_
+
+; 6236 : return stbi__errpuc("bad BMP", "bad BMP");
+
+ 0051c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IEJCHBDI@bad?5BMP@
+ 00523 e8 00 00 00 00 call stbi__err
+ 00528 85 c0 test eax, eax
+ 0052a 74 0d je SHORT $LN50@stbi__bmp_
+ 0052c 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv234[rbp], 0
+ 00537 eb 0b jmp SHORT $LN51@stbi__bmp_
+$LN50@stbi__bmp_:
+ 00539 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv234[rbp], 0
+$LN51@stbi__bmp_:
+ 00544 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv234[rbp]
+ 0054b e9 e0 00 00 00 jmp $LN1@stbi__bmp_
+$LN28@stbi__bmp_:
+
+; 6237 : info->mr = stbi__get32le(s);
+
+ 00550 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00557 e8 00 00 00 00 call stbi__get32le
+ 0055c 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00563 89 41 0c mov DWORD PTR [rcx+12], eax
+
+; 6238 : info->mg = stbi__get32le(s);
+
+ 00566 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0056d e8 00 00 00 00 call stbi__get32le
+ 00572 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 00579 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 6239 : info->mb = stbi__get32le(s);
+
+ 0057c 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00583 e8 00 00 00 00 call stbi__get32le
+ 00588 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 0058f 89 41 14 mov DWORD PTR [rcx+20], eax
+
+; 6240 : info->ma = stbi__get32le(s);
+
+ 00592 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00599 e8 00 00 00 00 call stbi__get32le
+ 0059e 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 005a5 89 41 18 mov DWORD PTR [rcx+24], eax
+
+; 6241 : if (compress !=
+
+ 005a8 83 7d 24 03 cmp DWORD PTR compress$1[rbp], 3
+ 005ac 74 10 je SHORT $LN29@stbi__bmp_
+
+; 6242 : 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs
+; 6243 : stbi__bmp_set_mask_defaults(info, compress);
+
+ 005ae 8b 55 24 mov edx, DWORD PTR compress$1[rbp]
+ 005b1 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR info$[rbp]
+ 005b8 e8 00 00 00 00 call stbi__bmp_set_mask_defaults
+ 005bd 90 npad 1
+$LN29@stbi__bmp_:
+
+; 6244 : stbi__get32le(s); // discard color space
+
+ 005be 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005c5 e8 00 00 00 00 call stbi__get32le
+ 005ca 90 npad 1
+
+; 6245 : for (i = 0; i < 12; ++i)
+
+ 005cb c7 45 44 00 00
+ 00 00 mov DWORD PTR i$2[rbp], 0
+ 005d2 eb 08 jmp SHORT $LN4@stbi__bmp_
+$LN2@stbi__bmp_:
+ 005d4 8b 45 44 mov eax, DWORD PTR i$2[rbp]
+ 005d7 ff c0 inc eax
+ 005d9 89 45 44 mov DWORD PTR i$2[rbp], eax
+$LN4@stbi__bmp_:
+ 005dc 83 7d 44 0c cmp DWORD PTR i$2[rbp], 12
+ 005e0 7d 0f jge SHORT $LN3@stbi__bmp_
+
+; 6246 : stbi__get32le(s); // discard color space parameters
+
+ 005e2 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005e9 e8 00 00 00 00 call stbi__get32le
+ 005ee 90 npad 1
+ 005ef eb e3 jmp SHORT $LN2@stbi__bmp_
+$LN3@stbi__bmp_:
+
+; 6247 : if (hsz == 124) {
+
+ 005f1 83 7d 04 7c cmp DWORD PTR hsz$[rbp], 124 ; 0000007cH
+ 005f5 75 34 jne SHORT $LN30@stbi__bmp_
+
+; 6248 : stbi__get32le(s); // discard rendering intent
+
+ 005f7 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005fe e8 00 00 00 00 call stbi__get32le
+ 00603 90 npad 1
+
+; 6249 : stbi__get32le(s); // discard offset of profile data
+
+ 00604 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0060b e8 00 00 00 00 call stbi__get32le
+ 00610 90 npad 1
+
+; 6250 : stbi__get32le(s); // discard size of profile data
+
+ 00611 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00618 e8 00 00 00 00 call stbi__get32le
+ 0061d 90 npad 1
+
+; 6251 : stbi__get32le(s); // discard reserved
+
+ 0061e 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00625 e8 00 00 00 00 call stbi__get32le
+ 0062a 90 npad 1
+$LN30@stbi__bmp_:
+$LN18@stbi__bmp_:
+$LN12@stbi__bmp_:
+
+; 6252 : }
+; 6253 : }
+; 6254 : }
+; 6255 : return (void *)1;
+
+ 0062b b8 01 00 00 00 mov eax, 1
+$LN1@stbi__bmp_:
+
+; 6256 : }
+
+ 00630 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 00637 5f pop rdi
+ 00638 5d pop rbp
+ 00639 c3 ret 0
+stbi__bmp_parse_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bmp_set_mask_defaults
+_TEXT SEGMENT
+info$ = 224
+compress$ = 232
+stbi__bmp_set_mask_defaults PROC ; COMDAT
+
+; 6139 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 6140 : // BI_BITFIELDS specifies masks explicitly, don't override
+; 6141 : if (compress == 3)
+
+ 00024 83 bd e8 00 00
+ 00 03 cmp DWORD PTR compress$[rbp], 3
+ 0002b 75 0a jne SHORT $LN2@stbi__bmp_
+
+; 6142 : return 1;
+
+ 0002d b8 01 00 00 00 mov eax, 1
+ 00032 e9 dd 00 00 00 jmp $LN1@stbi__bmp_
+$LN2@stbi__bmp_:
+
+; 6143 :
+; 6144 : if (compress == 0) {
+
+ 00037 83 bd e8 00 00
+ 00 00 cmp DWORD PTR compress$[rbp], 0
+ 0003e 0f 85 ce 00 00
+ 00 jne $LN3@stbi__bmp_
+
+; 6145 : if (info->bpp == 16) {
+
+ 00044 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 0004b 83 38 10 cmp DWORD PTR [rax], 16
+ 0004e 75 2f jne SHORT $LN4@stbi__bmp_
+
+; 6146 : info->mr = 31u << 10;
+
+ 00050 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00057 c7 40 0c 00 7c
+ 00 00 mov DWORD PTR [rax+12], 31744 ; 00007c00H
+
+; 6147 : info->mg = 31u << 5;
+
+ 0005e 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00065 c7 40 10 e0 03
+ 00 00 mov DWORD PTR [rax+16], 992 ; 000003e0H
+
+; 6148 : info->mb = 31u << 0;
+
+ 0006c 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00073 c7 40 14 1f 00
+ 00 00 mov DWORD PTR [rax+20], 31
+ 0007a e9 8c 00 00 00 jmp $LN5@stbi__bmp_
+$LN4@stbi__bmp_:
+
+; 6149 : } else if (info->bpp == 32) {
+
+ 0007f 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00086 83 38 20 cmp DWORD PTR [rax], 32 ; 00000020H
+ 00089 75 48 jne SHORT $LN6@stbi__bmp_
+
+; 6150 : info->mr = 0xffu << 16;
+
+ 0008b 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00092 c7 40 0c 00 00
+ ff 00 mov DWORD PTR [rax+12], 16711680 ; 00ff0000H
+
+; 6151 : info->mg = 0xffu << 8;
+
+ 00099 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000a0 c7 40 10 00 ff
+ 00 00 mov DWORD PTR [rax+16], 65280 ; 0000ff00H
+
+; 6152 : info->mb = 0xffu << 0;
+
+ 000a7 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000ae c7 40 14 ff 00
+ 00 00 mov DWORD PTR [rax+20], 255 ; 000000ffH
+
+; 6153 : info->ma = 0xffu << 24;
+
+ 000b5 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000bc c7 40 18 00 00
+ 00 ff mov DWORD PTR [rax+24], -16777216 ; ff000000H
+
+; 6154 : info->all_a =
+
+ 000c3 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000ca c7 40 1c 00 00
+ 00 00 mov DWORD PTR [rax+28], 0
+
+; 6155 : 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0
+; 6156 : } else {
+
+ 000d1 eb 38 jmp SHORT $LN7@stbi__bmp_
+$LN6@stbi__bmp_:
+
+; 6157 : // otherwise, use defaults, which is all-0
+; 6158 : info->mr = info->mg = info->mb = info->ma = 0;
+
+ 000d3 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000da c7 40 18 00 00
+ 00 00 mov DWORD PTR [rax+24], 0
+ 000e1 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000e8 c7 40 14 00 00
+ 00 00 mov DWORD PTR [rax+20], 0
+ 000ef 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 000f6 c7 40 10 00 00
+ 00 00 mov DWORD PTR [rax+16], 0
+ 000fd 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR info$[rbp]
+ 00104 c7 40 0c 00 00
+ 00 00 mov DWORD PTR [rax+12], 0
+$LN7@stbi__bmp_:
+$LN5@stbi__bmp_:
+
+; 6159 : }
+; 6160 : return 1;
+
+ 0010b b8 01 00 00 00 mov eax, 1
+ 00110 eb 02 jmp SHORT $LN1@stbi__bmp_
+$LN3@stbi__bmp_:
+
+; 6161 : }
+; 6162 : return 0; // error
+
+ 00112 33 c0 xor eax, eax
+$LN1@stbi__bmp_:
+
+; 6163 : }
+
+ 00114 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0011b 5f pop rdi
+ 0011c 5d pop rbp
+ 0011d c3 ret 0
+stbi__bmp_set_mask_defaults ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__shiftsigned
+_TEXT SEGMENT
+v$ = 224
+shift$ = 232
+bits$ = 240
+stbi__shiftsigned PROC ; COMDAT
+
+; 6107 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000d 55 push rbp
+ 0000e 57 push rdi
+ 0000f 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00027 90 npad 1
+
+; 6108 : static unsigned int mul_table[9] = {
+; 6109 : 0,
+; 6110 : 0xff /*0b11111111*/,
+; 6111 : 0x55 /*0b01010101*/,
+; 6112 : 0x49 /*0b01001001*/,
+; 6113 : 0x11 /*0b00010001*/,
+; 6114 : 0x21 /*0b00100001*/,
+; 6115 : 0x41 /*0b01000001*/,
+; 6116 : 0x81 /*0b10000001*/,
+; 6117 : 0x01 /*0b00000001*/,
+; 6118 : };
+; 6119 : static unsigned int shift_table[9] = {
+; 6120 : 0, 0, 0, 1, 0, 2, 4, 6, 0,
+; 6121 : };
+; 6122 : if (shift < 0)
+
+ 00028 83 bd e8 00 00
+ 00 00 cmp DWORD PTR shift$[rbp], 0
+ 0002f 7d 1b jge SHORT $LN2@stbi__shif
+
+; 6123 : v <<= -shift;
+
+ 00031 8b 85 e8 00 00
+ 00 mov eax, DWORD PTR shift$[rbp]
+ 00037 f7 d8 neg eax
+ 00039 0f b6 c8 movzx ecx, al
+ 0003c 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR v$[rbp]
+ 00042 d3 e0 shl eax, cl
+ 00044 89 85 e0 00 00
+ 00 mov DWORD PTR v$[rbp], eax
+ 0004a eb 17 jmp SHORT $LN3@stbi__shif
+$LN2@stbi__shif:
+
+; 6124 : else
+; 6125 : v >>= shift;
+
+ 0004c 8b 85 e8 00 00
+ 00 mov eax, DWORD PTR shift$[rbp]
+ 00052 0f b6 c8 movzx ecx, al
+ 00055 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR v$[rbp]
+ 0005b d3 e8 shr eax, cl
+ 0005d 89 85 e0 00 00
+ 00 mov DWORD PTR v$[rbp], eax
+$LN3@stbi__shif:
+
+; 6126 : STBI_ASSERT(v < 256);
+
+ 00063 81 bd e0 00 00
+ 00 00 01 00 00 cmp DWORD PTR v$[rbp], 256 ; 00000100H
+ 0006d 72 1c jb SHORT $LN5@stbi__shif
+ 0006f 41 b8 ee 17 00
+ 00 mov r8d, 6126 ; 000017eeH
+ 00075 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 0007c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1BA@EKLGALLJ@?$AAv?$AA?5?$AA?$DM?$AA?5?$AA2?$AA5?$AA6@
+ 00083 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00089 33 c0 xor eax, eax
+$LN5@stbi__shif:
+
+; 6127 : v >>= (8 - bits);
+
+ 0008b b8 08 00 00 00 mov eax, 8
+ 00090 2b 85 f0 00 00
+ 00 sub eax, DWORD PTR bits$[rbp]
+ 00096 0f b6 c8 movzx ecx, al
+ 00099 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR v$[rbp]
+ 0009f d3 e8 shr eax, cl
+ 000a1 89 85 e0 00 00
+ 00 mov DWORD PTR v$[rbp], eax
+
+; 6128 : STBI_ASSERT(bits >= 0 && bits <= 8);
+
+ 000a7 83 bd f0 00 00
+ 00 00 cmp DWORD PTR bits$[rbp], 0
+ 000ae 7c 09 jl SHORT $LN6@stbi__shif
+ 000b0 83 bd f0 00 00
+ 00 08 cmp DWORD PTR bits$[rbp], 8
+ 000b7 7e 1c jle SHORT $LN7@stbi__shif
+$LN6@stbi__shif:
+ 000b9 41 b8 f0 17 00
+ 00 mov r8d, 6128 ; 000017f0H
+ 000bf 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 000c6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1CO@LIFEKNEP@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA0?$AA?5?$AA?$CG?$AA?$CG?$AA?5?$AAb?$AAi@
+ 000cd ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 000d3 33 c0 xor eax, eax
+$LN7@stbi__shif:
+
+; 6129 : return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits];
+
+ 000d5 48 63 85 f0 00
+ 00 00 movsxd rax, DWORD PTR bits$[rbp]
+ 000dc 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:?mul_table@?1??stbi__shiftsigned@@9@9
+ 000e3 8b 95 e0 00 00
+ 00 mov edx, DWORD PTR v$[rbp]
+ 000e9 0f af 14 81 imul edx, DWORD PTR [rcx+rax*4]
+ 000ed 8b c2 mov eax, edx
+ 000ef 48 63 8d f0 00
+ 00 00 movsxd rcx, DWORD PTR bits$[rbp]
+ 000f6 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?shift_table@?1??stbi__shiftsigned@@9@9
+ 000fd 8b 0c 8a mov ecx, DWORD PTR [rdx+rcx*4]
+ 00100 d3 f8 sar eax, cl
+
+; 6130 : }
+
+ 00102 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00109 5f pop rdi
+ 0010a 5d pop rbp
+ 0010b c3 ret 0
+stbi__shiftsigned ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bitcount
+_TEXT SEGMENT
+a$ = 224
+stbi__bitcount PROC ; COMDAT
+
+; 6094 : {
+
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 6095 : a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2
+
+ 0001f 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00025 25 55 55 55 55 and eax, 1431655765 ; 55555555H
+ 0002a 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00030 d1 e9 shr ecx, 1
+ 00032 81 e1 55 55 55
+ 55 and ecx, 1431655765 ; 55555555H
+ 00038 03 c1 add eax, ecx
+ 0003a 89 85 e0 00 00
+ 00 mov DWORD PTR a$[rbp], eax
+
+; 6096 : a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4
+
+ 00040 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00046 25 33 33 33 33 and eax, 858993459 ; 33333333H
+ 0004b 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00051 c1 e9 02 shr ecx, 2
+ 00054 81 e1 33 33 33
+ 33 and ecx, 858993459 ; 33333333H
+ 0005a 03 c1 add eax, ecx
+ 0005c 89 85 e0 00 00
+ 00 mov DWORD PTR a$[rbp], eax
+
+; 6097 : a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits
+
+ 00062 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00068 c1 e8 04 shr eax, 4
+ 0006b 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00071 03 c8 add ecx, eax
+ 00073 8b c1 mov eax, ecx
+ 00075 25 0f 0f 0f 0f and eax, 252645135 ; 0f0f0f0fH
+ 0007a 89 85 e0 00 00
+ 00 mov DWORD PTR a$[rbp], eax
+
+; 6098 : a = (a + (a >> 8)); // max 16 per 8 bits
+
+ 00080 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00086 c1 e8 08 shr eax, 8
+ 00089 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 0008f 03 c8 add ecx, eax
+ 00091 8b c1 mov eax, ecx
+ 00093 89 85 e0 00 00
+ 00 mov DWORD PTR a$[rbp], eax
+
+; 6099 : a = (a + (a >> 16)); // max 32 per 8 bits
+
+ 00099 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 0009f c1 e8 10 shr eax, 16
+ 000a2 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 000a8 03 c8 add ecx, eax
+ 000aa 8b c1 mov eax, ecx
+ 000ac 89 85 e0 00 00
+ 00 mov DWORD PTR a$[rbp], eax
+
+; 6100 : return a & 0xff;
+
+ 000b2 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 000b8 25 ff 00 00 00 and eax, 255 ; 000000ffH
+
+; 6101 : }
+
+ 000bd 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 000c4 5f pop rdi
+ 000c5 5d pop rbp
+ 000c6 c3 ret 0
+stbi__bitcount ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__high_bit
+_TEXT SEGMENT
+n$ = 4
+z$ = 256
+stbi__high_bit PROC ; COMDAT
+
+; 6067 : {
+
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 6068 : int n = 0;
+
+ 0001f c7 45 04 00 00
+ 00 00 mov DWORD PTR n$[rbp], 0
+
+; 6069 : if (z == 0)
+
+ 00026 83 bd 00 01 00
+ 00 00 cmp DWORD PTR z$[rbp], 0
+ 0002d 75 0a jne SHORT $LN2@stbi__high
+
+; 6070 : return -1;
+
+ 0002f b8 ff ff ff ff mov eax, -1
+ 00034 e9 9e 00 00 00 jmp $LN1@stbi__high
+$LN2@stbi__high:
+
+; 6071 : if (z >= 0x10000) {
+
+ 00039 81 bd 00 01 00
+ 00 00 00 01 00 cmp DWORD PTR z$[rbp], 65536 ; 00010000H
+ 00043 72 18 jb SHORT $LN3@stbi__high
+
+; 6072 : n += 16;
+
+ 00045 8b 45 04 mov eax, DWORD PTR n$[rbp]
+ 00048 83 c0 10 add eax, 16
+ 0004b 89 45 04 mov DWORD PTR n$[rbp], eax
+
+; 6073 : z >>= 16;
+
+ 0004e 8b 85 00 01 00
+ 00 mov eax, DWORD PTR z$[rbp]
+ 00054 c1 e8 10 shr eax, 16
+ 00057 89 85 00 01 00
+ 00 mov DWORD PTR z$[rbp], eax
+$LN3@stbi__high:
+
+; 6074 : }
+; 6075 : if (z >= 0x00100) {
+
+ 0005d 81 bd 00 01 00
+ 00 00 01 00 00 cmp DWORD PTR z$[rbp], 256 ; 00000100H
+ 00067 72 18 jb SHORT $LN4@stbi__high
+
+; 6076 : n += 8;
+
+ 00069 8b 45 04 mov eax, DWORD PTR n$[rbp]
+ 0006c 83 c0 08 add eax, 8
+ 0006f 89 45 04 mov DWORD PTR n$[rbp], eax
+
+; 6077 : z >>= 8;
+
+ 00072 8b 85 00 01 00
+ 00 mov eax, DWORD PTR z$[rbp]
+ 00078 c1 e8 08 shr eax, 8
+ 0007b 89 85 00 01 00
+ 00 mov DWORD PTR z$[rbp], eax
+$LN4@stbi__high:
+
+; 6078 : }
+; 6079 : if (z >= 0x00010) {
+
+ 00081 83 bd 00 01 00
+ 00 10 cmp DWORD PTR z$[rbp], 16
+ 00088 72 18 jb SHORT $LN5@stbi__high
+
+; 6080 : n += 4;
+
+ 0008a 8b 45 04 mov eax, DWORD PTR n$[rbp]
+ 0008d 83 c0 04 add eax, 4
+ 00090 89 45 04 mov DWORD PTR n$[rbp], eax
+
+; 6081 : z >>= 4;
+
+ 00093 8b 85 00 01 00
+ 00 mov eax, DWORD PTR z$[rbp]
+ 00099 c1 e8 04 shr eax, 4
+ 0009c 89 85 00 01 00
+ 00 mov DWORD PTR z$[rbp], eax
+$LN5@stbi__high:
+
+; 6082 : }
+; 6083 : if (z >= 0x00004) {
+
+ 000a2 83 bd 00 01 00
+ 00 04 cmp DWORD PTR z$[rbp], 4
+ 000a9 72 18 jb SHORT $LN6@stbi__high
+
+; 6084 : n += 2;
+
+ 000ab 8b 45 04 mov eax, DWORD PTR n$[rbp]
+ 000ae 83 c0 02 add eax, 2
+ 000b1 89 45 04 mov DWORD PTR n$[rbp], eax
+
+; 6085 : z >>= 2;
+
+ 000b4 8b 85 00 01 00
+ 00 mov eax, DWORD PTR z$[rbp]
+ 000ba c1 e8 02 shr eax, 2
+ 000bd 89 85 00 01 00
+ 00 mov DWORD PTR z$[rbp], eax
+$LN6@stbi__high:
+
+; 6086 : }
+; 6087 : if (z >= 0x00002) {
+
+ 000c3 83 bd 00 01 00
+ 00 02 cmp DWORD PTR z$[rbp], 2
+ 000ca 72 08 jb SHORT $LN7@stbi__high
+
+; 6088 : n += 1; /* >>= 1;*/
+
+ 000cc 8b 45 04 mov eax, DWORD PTR n$[rbp]
+ 000cf ff c0 inc eax
+ 000d1 89 45 04 mov DWORD PTR n$[rbp], eax
+$LN7@stbi__high:
+
+; 6089 : }
+; 6090 : return n;
+
+ 000d4 8b 45 04 mov eax, DWORD PTR n$[rbp]
+$LN1@stbi__high:
+
+; 6091 : }
+
+ 000d7 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000de 5f pop rdi
+ 000df 5d pop rbp
+ 000e0 c3 ret 0
+stbi__high_bit ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bmp_test_raw
+_TEXT SEGMENT
+r$ = 4
+sz$ = 36
+tv83 = 244
+s$ = 288
+stbi__bmp_test_raw PROC ; COMDAT
+
+; 6042 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 6043 : int r;
+; 6044 : int sz;
+; 6045 : if (stbi__get8(s) != 'B')
+
+ 00020 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get8
+ 0002c 0f b6 c0 movzx eax, al
+ 0002f 83 f8 42 cmp eax, 66 ; 00000042H
+ 00032 74 07 je SHORT $LN2@stbi__bmp_
+
+; 6046 : return 0;
+
+ 00034 33 c0 xor eax, eax
+ 00036 e9 9e 00 00 00 jmp $LN1@stbi__bmp_
+$LN2@stbi__bmp_:
+
+; 6047 : if (stbi__get8(s) != 'M')
+
+ 0003b 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00042 e8 00 00 00 00 call stbi__get8
+ 00047 0f b6 c0 movzx eax, al
+ 0004a 83 f8 4d cmp eax, 77 ; 0000004dH
+ 0004d 74 07 je SHORT $LN3@stbi__bmp_
+
+; 6048 : return 0;
+
+ 0004f 33 c0 xor eax, eax
+ 00051 e9 83 00 00 00 jmp $LN1@stbi__bmp_
+$LN3@stbi__bmp_:
+
+; 6049 : stbi__get32le(s); // discard filesize
+
+ 00056 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0005d e8 00 00 00 00 call stbi__get32le
+ 00062 90 npad 1
+
+; 6050 : stbi__get16le(s); // discard reserved
+
+ 00063 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__get16le
+ 0006f 90 npad 1
+
+; 6051 : stbi__get16le(s); // discard reserved
+
+ 00070 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00077 e8 00 00 00 00 call stbi__get16le
+ 0007c 90 npad 1
+
+; 6052 : stbi__get32le(s); // discard data offset
+
+ 0007d 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00084 e8 00 00 00 00 call stbi__get32le
+ 00089 90 npad 1
+
+; 6053 : sz = stbi__get32le(s);
+
+ 0008a 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00091 e8 00 00 00 00 call stbi__get32le
+ 00096 89 45 24 mov DWORD PTR sz$[rbp], eax
+
+; 6054 : r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124);
+
+ 00099 83 7d 24 0c cmp DWORD PTR sz$[rbp], 12
+ 0009d 74 24 je SHORT $LN5@stbi__bmp_
+ 0009f 83 7d 24 28 cmp DWORD PTR sz$[rbp], 40 ; 00000028H
+ 000a3 74 1e je SHORT $LN5@stbi__bmp_
+ 000a5 83 7d 24 38 cmp DWORD PTR sz$[rbp], 56 ; 00000038H
+ 000a9 74 18 je SHORT $LN5@stbi__bmp_
+ 000ab 83 7d 24 6c cmp DWORD PTR sz$[rbp], 108 ; 0000006cH
+ 000af 74 12 je SHORT $LN5@stbi__bmp_
+ 000b1 83 7d 24 7c cmp DWORD PTR sz$[rbp], 124 ; 0000007cH
+ 000b5 74 0c je SHORT $LN5@stbi__bmp_
+ 000b7 c7 85 f4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv83[rbp], 0
+ 000c1 eb 0a jmp SHORT $LN6@stbi__bmp_
+$LN5@stbi__bmp_:
+ 000c3 c7 85 f4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv83[rbp], 1
+$LN6@stbi__bmp_:
+ 000cd 8b 85 f4 00 00
+ 00 mov eax, DWORD PTR tv83[rbp]
+ 000d3 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 6055 : return r;
+
+ 000d6 8b 45 04 mov eax, DWORD PTR r$[rbp]
+$LN1@stbi__bmp_:
+
+; 6056 : }
+
+ 000d9 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000e0 5f pop rdi
+ 000e1 5d pop rbp
+ 000e2 c3 ret 0
+stbi__bmp_test_raw ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__png_info_raw
+_TEXT SEGMENT
+p$ = 224
+x$ = 232
+y$ = 240
+comp$ = 248
+stbi__png_info_raw PROC ; COMDAT
+
+; 6003 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 6004 : if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) {
+
+ 0002f 45 33 c0 xor r8d, r8d
+ 00032 ba 02 00 00 00 mov edx, 2
+ 00037 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR p$[rbp]
+ 0003e e8 00 00 00 00 call stbi__parse_png_file
+ 00043 85 c0 test eax, eax
+ 00045 75 14 jne SHORT $LN2@stbi__png_
+
+; 6005 : stbi__rewind(p->s);
+
+ 00047 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0004e 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00051 e8 00 00 00 00 call stbi__rewind
+ 00056 90 npad 1
+
+; 6006 : return 0;
+
+ 00057 33 c0 xor eax, eax
+ 00059 eb 64 jmp SHORT $LN1@stbi__png_
+$LN2@stbi__png_:
+
+; 6007 : }
+; 6008 : if (x)
+
+ 0005b 48 83 bd e8 00
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 00063 74 15 je SHORT $LN3@stbi__png_
+
+; 6009 : *x = p->s->img_x;
+
+ 00065 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0006c 48 8b 00 mov rax, QWORD PTR [rax]
+ 0006f 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 00076 8b 00 mov eax, DWORD PTR [rax]
+ 00078 89 01 mov DWORD PTR [rcx], eax
+$LN3@stbi__png_:
+
+; 6010 : if (y)
+
+ 0007a 48 83 bd f0 00
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 00082 74 16 je SHORT $LN4@stbi__png_
+
+; 6011 : *y = p->s->img_y;
+
+ 00084 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0008b 48 8b 00 mov rax, QWORD PTR [rax]
+ 0008e 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 00095 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 00098 89 01 mov DWORD PTR [rcx], eax
+$LN4@stbi__png_:
+
+; 6012 : if (comp)
+
+ 0009a 48 83 bd f8 00
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 000a2 74 16 je SHORT $LN5@stbi__png_
+
+; 6013 : *comp = p->s->img_n;
+
+ 000a4 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 000ab 48 8b 00 mov rax, QWORD PTR [rax]
+ 000ae 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR comp$[rbp]
+ 000b5 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 000b8 89 01 mov DWORD PTR [rcx], eax
+$LN5@stbi__png_:
+
+; 6014 : return 1;
+
+ 000ba b8 01 00 00 00 mov eax, 1
+$LN1@stbi__png_:
+
+; 6015 : }
+
+ 000bf 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 000c6 5f pop rdi
+ 000c7 5d pop rbp
+ 000c8 c3 ret 0
+stbi__png_info_raw ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__do_png
+_TEXT SEGMENT
+result$ = 8
+tv69 = 216
+tv84 = 216
+p$ = 256
+x$ = 264
+y$ = 272
+n$ = 280
+req_comp$ = 288
+ri$ = 296
+stbi__do_png PROC ; COMDAT
+
+; 5944 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 18 01
+ 00 00 sub rsp, 280 ; 00000118H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 5945 : void *result = NULL;
+
+ 0002f 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR result$[rbp], 0
+
+; 5946 : if (req_comp < 0 || req_comp > 4)
+
+ 00037 83 bd 20 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 0003e 7c 09 jl SHORT $LN3@stbi__do_p
+ 00040 83 bd 20 01 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 00047 7e 34 jle SHORT $LN2@stbi__do_p
+$LN3@stbi__do_p:
+
+; 5947 : return stbi__errpuc("bad req_comp", "Internal error");
+
+ 00049 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@
+ 00050 e8 00 00 00 00 call stbi__err
+ 00055 85 c0 test eax, eax
+ 00057 74 0d je SHORT $LN15@stbi__do_p
+ 00059 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv69[rbp], 0
+ 00064 eb 0b jmp SHORT $LN16@stbi__do_p
+$LN15@stbi__do_p:
+ 00066 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv69[rbp], 0
+$LN16@stbi__do_p:
+ 00071 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv69[rbp]
+ 00078 e9 2e 02 00 00 jmp $LN1@stbi__do_p
+$LN2@stbi__do_p:
+
+; 5948 : if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) {
+
+ 0007d 44 8b 85 20 01
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00084 33 d2 xor edx, edx
+ 00086 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR p$[rbp]
+ 0008d e8 00 00 00 00 call stbi__parse_png_file
+ 00092 85 c0 test eax, eax
+ 00094 0f 84 aa 01 00
+ 00 je $LN4@stbi__do_p
+
+; 5949 : if (p->depth <= 8)
+
+ 0009a 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 000a1 83 78 20 08 cmp DWORD PTR [rax+32], 8
+ 000a5 7f 0f jg SHORT $LN5@stbi__do_p
+
+; 5950 : ri->bits_per_channel = 8;
+
+ 000a7 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 000ae c7 00 08 00 00
+ 00 mov DWORD PTR [rax], 8
+ 000b4 eb 50 jmp SHORT $LN6@stbi__do_p
+$LN5@stbi__do_p:
+
+; 5951 : else if (p->depth == 16)
+
+ 000b6 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 000bd 83 78 20 10 cmp DWORD PTR [rax+32], 16
+ 000c1 75 0f jne SHORT $LN7@stbi__do_p
+
+; 5952 : ri->bits_per_channel = 16;
+
+ 000c3 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 000ca c7 00 10 00 00
+ 00 mov DWORD PTR [rax], 16
+ 000d0 eb 34 jmp SHORT $LN8@stbi__do_p
+$LN7@stbi__do_p:
+
+; 5953 : else
+; 5954 : return stbi__errpuc("bad bits_per_channel",
+
+ 000d2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@
+ 000d9 e8 00 00 00 00 call stbi__err
+ 000de 85 c0 test eax, eax
+ 000e0 74 0d je SHORT $LN17@stbi__do_p
+ 000e2 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv84[rbp], 0
+ 000ed eb 0b jmp SHORT $LN18@stbi__do_p
+$LN17@stbi__do_p:
+ 000ef 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv84[rbp], 0
+$LN18@stbi__do_p:
+ 000fa 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv84[rbp]
+ 00101 e9 a5 01 00 00 jmp $LN1@stbi__do_p
+$LN8@stbi__do_p:
+$LN6@stbi__do_p:
+
+; 5955 : "PNG not supported: unsupported color depth");
+; 5956 : result = p->out;
+
+ 00106 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0010d 48 8b 40 18 mov rax, QWORD PTR [rax+24]
+ 00111 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 5957 : p->out = NULL;
+
+ 00115 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0011c 48 c7 40 18 00
+ 00 00 00 mov QWORD PTR [rax+24], 0
+
+; 5958 : if (req_comp && req_comp != p->s->img_out_n) {
+
+ 00124 83 bd 20 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 0012b 0f 84 c8 00 00
+ 00 je $LN9@stbi__do_p
+ 00131 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 00138 48 8b 00 mov rax, QWORD PTR [rax]
+ 0013b 8b 40 0c mov eax, DWORD PTR [rax+12]
+ 0013e 39 85 20 01 00
+ 00 cmp DWORD PTR req_comp$[rbp], eax
+ 00144 0f 84 af 00 00
+ 00 je $LN9@stbi__do_p
+
+; 5959 : if (ri->bits_per_channel == 8)
+
+ 0014a 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00151 83 38 08 cmp DWORD PTR [rax], 8
+ 00154 75 41 jne SHORT $LN10@stbi__do_p
+
+; 5960 : result = stbi__convert_format((unsigned char *)result,
+
+ 00156 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0015d 48 8b 00 mov rax, QWORD PTR [rax]
+ 00160 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR p$[rbp]
+ 00167 48 8b 09 mov rcx, QWORD PTR [rcx]
+ 0016a 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR p$[rbp]
+ 00171 48 8b 12 mov rdx, QWORD PTR [rdx]
+ 00174 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 00177 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0017b 44 8b 09 mov r9d, DWORD PTR [rcx]
+ 0017e 44 8b 85 20 01
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00185 8b 52 0c mov edx, DWORD PTR [rdx+12]
+ 00188 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
+ 0018c e8 00 00 00 00 call stbi__convert_format
+ 00191 48 89 45 08 mov QWORD PTR result$[rbp], rax
+ 00195 eb 3f jmp SHORT $LN11@stbi__do_p
+$LN10@stbi__do_p:
+
+; 5961 : p->s->img_out_n, req_comp,
+; 5962 : p->s->img_x, p->s->img_y);
+; 5963 : else
+; 5964 : result = stbi__convert_format16((stbi__uint16 *)result,
+
+ 00197 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0019e 48 8b 00 mov rax, QWORD PTR [rax]
+ 001a1 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR p$[rbp]
+ 001a8 48 8b 09 mov rcx, QWORD PTR [rcx]
+ 001ab 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR p$[rbp]
+ 001b2 48 8b 12 mov rdx, QWORD PTR [rdx]
+ 001b5 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 001b8 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 001bc 44 8b 09 mov r9d, DWORD PTR [rcx]
+ 001bf 44 8b 85 20 01
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 001c6 8b 52 0c mov edx, DWORD PTR [rdx+12]
+ 001c9 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
+ 001cd e8 00 00 00 00 call stbi__convert_format16
+ 001d2 48 89 45 08 mov QWORD PTR result$[rbp], rax
+$LN11@stbi__do_p:
+
+; 5965 : p->s->img_out_n, req_comp,
+; 5966 : p->s->img_x, p->s->img_y);
+; 5967 : p->s->img_out_n = req_comp;
+
+ 001d6 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 001dd 48 8b 00 mov rax, QWORD PTR [rax]
+ 001e0 8b 8d 20 01 00
+ 00 mov ecx, DWORD PTR req_comp$[rbp]
+ 001e6 89 48 0c mov DWORD PTR [rax+12], ecx
+
+; 5968 : if (result == NULL)
+
+ 001e9 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
+ 001ee 75 09 jne SHORT $LN12@stbi__do_p
+
+; 5969 : return result;
+
+ 001f0 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+ 001f4 e9 b2 00 00 00 jmp $LN1@stbi__do_p
+$LN12@stbi__do_p:
+$LN9@stbi__do_p:
+
+; 5970 : }
+; 5971 : *x = p->s->img_x;
+
+ 001f9 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 00200 48 8b 00 mov rax, QWORD PTR [rax]
+ 00203 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 0020a 8b 00 mov eax, DWORD PTR [rax]
+ 0020c 89 01 mov DWORD PTR [rcx], eax
+
+; 5972 : *y = p->s->img_y;
+
+ 0020e 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 00215 48 8b 00 mov rax, QWORD PTR [rax]
+ 00218 48 8b 8d 10 01
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 0021f 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 00222 89 01 mov DWORD PTR [rcx], eax
+
+; 5973 : if (n)
+
+ 00224 48 83 bd 18 01
+ 00 00 00 cmp QWORD PTR n$[rbp], 0
+ 0022c 74 16 je SHORT $LN13@stbi__do_p
+
+; 5974 : *n = p->s->img_n;
+
+ 0022e 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 00235 48 8b 00 mov rax, QWORD PTR [rax]
+ 00238 48 8b 8d 18 01
+ 00 00 mov rcx, QWORD PTR n$[rbp]
+ 0023f 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00242 89 01 mov DWORD PTR [rcx], eax
+$LN13@stbi__do_p:
+$LN4@stbi__do_p:
+
+; 5975 : }
+; 5976 : STBI_FREE(p->out);
+
+ 00244 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0024b 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
+ 0024f ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00255 90 npad 1
+
+; 5977 : p->out = NULL;
+
+ 00256 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0025d 48 c7 40 18 00
+ 00 00 00 mov QWORD PTR [rax+24], 0
+
+; 5978 : STBI_FREE(p->expanded);
+
+ 00265 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0026c 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
+ 00270 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00276 90 npad 1
+
+; 5979 : p->expanded = NULL;
+
+ 00277 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0027e 48 c7 40 10 00
+ 00 00 00 mov QWORD PTR [rax+16], 0
+
+; 5980 : STBI_FREE(p->idata);
+
+ 00286 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0028d 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
+ 00291 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00297 90 npad 1
+
+; 5981 : p->idata = NULL;
+
+ 00298 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR p$[rbp]
+ 0029f 48 c7 40 08 00
+ 00 00 00 mov QWORD PTR [rax+8], 0
+
+; 5982 :
+; 5983 : return result;
+
+ 002a7 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi__do_p:
+
+; 5984 : }
+
+ 002ab 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 002b2 5f pop rdi
+ 002b3 5d pop rbp
+ 002b4 c3 ret 0
+stbi__do_png ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__parse_png_file
+_TEXT SEGMENT
+palette$ = 16
+pal_img_n$ = 1060
+has_trans$ = 1092
+tc$ = 1124
+tc16$ = 1156
+ioff$ = 1188
+idata_limit$ = 1220
+i$ = 1252
+pal_len$ = 1284
+first$ = 1316
+k$ = 1348
+interlace$ = 1380
+color$ = 1412
+is_iphone$ = 1444
+s$ = 1480
+c$8 = 1512
+comp$9 = 1540
+filter$10 = 1572
+idata_limit_old$11 = 1604
+p$12 = 1640
+raw_len$13 = 1668
+bpl$14 = 1700
+tv78 = 2484
+tv194 = 2484
+tv347 = 2484
+tv396 = 2484
+tv463 = 2484
+tv197 = 2488
+__$ArrayPad$ = 2496
+z$ = 2544
+scan$ = 2552
+req_comp$ = 2560
+stbi__parse_png_file PROC ; COMDAT
+
+; 5690 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec 18 0a
+ 00 00 sub rsp, 2584 ; 00000a18H
+ 00017 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 0001c 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
+ 00021 b9 b6 01 00 00 mov ecx, 438 ; 000001b6H
+ 00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 0002b f3 ab rep stosd
+ 0002d 48 8b 8c 24 38
+ 0a 00 00 mov rcx, QWORD PTR [rsp+2616]
+ 00035 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 0003c 48 33 c5 xor rax, rbp
+ 0003f 48 89 85 c0 09
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00046 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0004d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00052 90 npad 1
+
+; 5691 : stbi_uc palette[1024], pal_img_n = 0;
+
+ 00053 c6 85 24 04 00
+ 00 00 mov BYTE PTR pal_img_n$[rbp], 0
+
+; 5692 : stbi_uc has_trans = 0, tc[3] = { 0 };
+
+ 0005a c6 85 44 04 00
+ 00 00 mov BYTE PTR has_trans$[rbp], 0
+ 00061 48 8d 85 64 04
+ 00 00 lea rax, QWORD PTR tc$[rbp]
+ 00068 48 8b f8 mov rdi, rax
+ 0006b 33 c0 xor eax, eax
+ 0006d b9 03 00 00 00 mov ecx, 3
+ 00072 f3 aa rep stosb
+
+; 5693 : stbi__uint16 tc16[3];
+; 5694 : stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0;
+
+ 00074 c7 85 a4 04 00
+ 00 00 00 00 00 mov DWORD PTR ioff$[rbp], 0
+ 0007e c7 85 c4 04 00
+ 00 00 00 00 00 mov DWORD PTR idata_limit$[rbp], 0
+ 00088 c7 85 04 05 00
+ 00 00 00 00 00 mov DWORD PTR pal_len$[rbp], 0
+
+; 5695 : int first = 1, k, interlace = 0, color = 0, is_iphone = 0;
+
+ 00092 c7 85 24 05 00
+ 00 01 00 00 00 mov DWORD PTR first$[rbp], 1
+ 0009c c7 85 64 05 00
+ 00 00 00 00 00 mov DWORD PTR interlace$[rbp], 0
+ 000a6 c7 85 84 05 00
+ 00 00 00 00 00 mov DWORD PTR color$[rbp], 0
+ 000b0 c7 85 a4 05 00
+ 00 00 00 00 00 mov DWORD PTR is_iphone$[rbp], 0
+
+; 5696 : stbi__context *s = z->s;
+
+ 000ba 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000c1 48 8b 00 mov rax, QWORD PTR [rax]
+ 000c4 48 89 85 c8 05
+ 00 00 mov QWORD PTR s$[rbp], rax
+
+; 5697 :
+; 5698 : z->expanded = NULL;
+
+ 000cb 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000d2 48 c7 40 10 00
+ 00 00 00 mov QWORD PTR [rax+16], 0
+
+; 5699 : z->idata = NULL;
+
+ 000da 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000e1 48 c7 40 08 00
+ 00 00 00 mov QWORD PTR [rax+8], 0
+
+; 5700 : z->out = NULL;
+
+ 000e9 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000f0 48 c7 40 18 00
+ 00 00 00 mov QWORD PTR [rax+24], 0
+
+; 5701 :
+; 5702 : if (!stbi__check_png_header(s))
+
+ 000f8 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000ff e8 00 00 00 00 call stbi__check_png_header
+ 00104 85 c0 test eax, eax
+ 00106 75 07 jne SHORT $LN21@stbi__pars
+
+; 5703 : return 0;
+
+ 00108 33 c0 xor eax, eax
+ 0010a e9 aa 0d 00 00 jmp $LN1@stbi__pars
+$LN21@stbi__pars:
+
+; 5704 :
+; 5705 : if (scan == STBI__SCAN_type)
+
+ 0010f 83 bd f8 09 00
+ 00 01 cmp DWORD PTR scan$[rbp], 1
+ 00116 75 0a jne SHORT $LN22@stbi__pars
+
+; 5706 : return 1;
+
+ 00118 b8 01 00 00 00 mov eax, 1
+ 0011d e9 97 0d 00 00 jmp $LN1@stbi__pars
+$LN22@stbi__pars:
+$LN2@stbi__pars:
+
+; 5707 :
+; 5708 : for (;;) {
+; 5709 : stbi__pngchunk c = stbi__get_chunk_header(s);
+
+ 00122 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00129 e8 00 00 00 00 call stbi__get_chunk_header
+ 0012e 48 89 85 e8 05
+ 00 00 mov QWORD PTR c$8[rbp], rax
+
+; 5710 : switch (c.type) {
+
+ 00135 8b 85 ec 05 00
+ 00 mov eax, DWORD PTR c$8[rbp+4]
+ 0013b 89 85 b4 09 00
+ 00 mov DWORD PTR tv78[rbp], eax
+ 00141 81 bd b4 09 00
+ 00 52 44 48 49 cmp DWORD PTR tv78[rbp], 1229472850 ; 49484452H
+ 0014b 77 3d ja SHORT $LN107@stbi__pars
+ 0014d 81 bd b4 09 00
+ 00 52 44 48 49 cmp DWORD PTR tv78[rbp], 1229472850 ; 49484452H
+ 00157 74 78 je SHORT $LN24@stbi__pars
+ 00159 81 bd b4 09 00
+ 00 49 42 67 43 cmp DWORD PTR tv78[rbp], 1130840649 ; 43674249H
+ 00163 74 4a je SHORT $LN23@stbi__pars
+ 00165 81 bd b4 09 00
+ 00 54 41 44 49 cmp DWORD PTR tv78[rbp], 1229209940 ; 49444154H
+ 0016f 0f 84 f2 06 00
+ 00 je $LN61@stbi__pars
+ 00175 81 bd b4 09 00
+ 00 44 4e 45 49 cmp DWORD PTR tv78[rbp], 1229278788 ; 49454e44H
+ 0017f 0f 84 b9 08 00
+ 00 je $LN72@stbi__pars
+ 00185 e9 4e 0c 00 00 jmp $LN93@stbi__pars
+$LN107@stbi__pars:
+ 0018a 81 bd b4 09 00
+ 00 45 54 4c 50 cmp DWORD PTR tv78[rbp], 1347179589 ; 504c5445H
+ 00194 0f 84 7c 03 00
+ 00 je $LN44@stbi__pars
+ 0019a 81 bd b4 09 00
+ 00 53 4e 52 74 cmp DWORD PTR tv78[rbp], 1951551059 ; 74524e53H
+ 001a4 0f 84 77 04 00
+ 00 je $LN48@stbi__pars
+ 001aa e9 29 0c 00 00 jmp $LN93@stbi__pars
+$LN23@stbi__pars:
+
+; 5711 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'):
+; 5712 : is_iphone = 1;
+
+ 001af c7 85 a4 05 00
+ 00 01 00 00 00 mov DWORD PTR is_iphone$[rbp], 1
+
+; 5713 : stbi__skip(s, c.length);
+
+ 001b9 8b 95 e8 05 00
+ 00 mov edx, DWORD PTR c$8[rbp]
+ 001bf 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001c6 e8 00 00 00 00 call stbi__skip
+ 001cb 90 npad 1
+
+; 5714 : break;
+
+ 001cc e9 d6 0c 00 00 jmp $LN5@stbi__pars
+$LN24@stbi__pars:
+
+; 5715 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): {
+; 5716 : int comp, filter;
+; 5717 : if (!first)
+
+ 001d1 83 bd 24 05 00
+ 00 00 cmp DWORD PTR first$[rbp], 0
+ 001d8 75 11 jne SHORT $LN25@stbi__pars
+
+; 5718 : return stbi__err("multiple IHDR", "Corrupt PNG");
+
+ 001da 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@KBHBNJOK@multiple?5IHDR@
+ 001e1 e8 00 00 00 00 call stbi__err
+ 001e6 e9 ce 0c 00 00 jmp $LN1@stbi__pars
+$LN25@stbi__pars:
+
+; 5719 : first = 0;
+
+ 001eb c7 85 24 05 00
+ 00 00 00 00 00 mov DWORD PTR first$[rbp], 0
+
+; 5720 : if (c.length != 13)
+
+ 001f5 83 bd e8 05 00
+ 00 0d cmp DWORD PTR c$8[rbp], 13
+ 001fc 74 11 je SHORT $LN26@stbi__pars
+
+; 5721 : return stbi__err("bad IHDR len", "Corrupt PNG");
+
+ 001fe 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@POJLKMKK@bad?5IHDR?5len@
+ 00205 e8 00 00 00 00 call stbi__err
+ 0020a e9 aa 0c 00 00 jmp $LN1@stbi__pars
+$LN26@stbi__pars:
+
+; 5722 : s->img_x = stbi__get32be(s);
+
+ 0020f 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00216 e8 00 00 00 00 call stbi__get32be
+ 0021b 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00222 89 01 mov DWORD PTR [rcx], eax
+
+; 5723 : s->img_y = stbi__get32be(s);
+
+ 00224 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0022b e8 00 00 00 00 call stbi__get32be
+ 00230 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00237 89 41 04 mov DWORD PTR [rcx+4], eax
+
+; 5724 : if (s->img_y > STBI_MAX_DIMENSIONS)
+
+ 0023a 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00241 81 78 04 00 00
+ 00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
+ 00248 76 11 jbe SHORT $LN27@stbi__pars
+
+; 5725 : return stbi__err("too large", "Very large image (corrupt?)");
+
+ 0024a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00251 e8 00 00 00 00 call stbi__err
+ 00256 e9 5e 0c 00 00 jmp $LN1@stbi__pars
+$LN27@stbi__pars:
+
+; 5726 : if (s->img_x > STBI_MAX_DIMENSIONS)
+
+ 0025b 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00262 81 38 00 00 00
+ 01 cmp DWORD PTR [rax], 16777216 ; 01000000H
+ 00268 76 11 jbe SHORT $LN28@stbi__pars
+
+; 5727 : return stbi__err("too large", "Very large image (corrupt?)");
+
+ 0026a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00271 e8 00 00 00 00 call stbi__err
+ 00276 e9 3e 0c 00 00 jmp $LN1@stbi__pars
+$LN28@stbi__pars:
+
+; 5728 : z->depth = stbi__get8(s);
+
+ 0027b 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00282 e8 00 00 00 00 call stbi__get8
+ 00287 0f b6 c0 movzx eax, al
+ 0028a 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00291 89 41 20 mov DWORD PTR [rcx+32], eax
+
+; 5729 : if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 &&
+
+ 00294 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0029b 83 78 20 01 cmp DWORD PTR [rax+32], 1
+ 0029f 74 45 je SHORT $LN29@stbi__pars
+ 002a1 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002a8 83 78 20 02 cmp DWORD PTR [rax+32], 2
+ 002ac 74 38 je SHORT $LN29@stbi__pars
+ 002ae 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002b5 83 78 20 04 cmp DWORD PTR [rax+32], 4
+ 002b9 74 2b je SHORT $LN29@stbi__pars
+ 002bb 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002c2 83 78 20 08 cmp DWORD PTR [rax+32], 8
+ 002c6 74 1e je SHORT $LN29@stbi__pars
+ 002c8 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002cf 83 78 20 10 cmp DWORD PTR [rax+32], 16
+ 002d3 74 11 je SHORT $LN29@stbi__pars
+
+; 5730 : z->depth != 16)
+; 5731 : return stbi__err("1/2/4/8/16-bit only",
+
+ 002d5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@
+ 002dc e8 00 00 00 00 call stbi__err
+ 002e1 e9 d3 0b 00 00 jmp $LN1@stbi__pars
+$LN29@stbi__pars:
+
+; 5732 : "PNG not supported: 1/2/4/8/16-bit only");
+; 5733 : color = stbi__get8(s);
+
+ 002e6 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 002ed e8 00 00 00 00 call stbi__get8
+ 002f2 0f b6 c0 movzx eax, al
+ 002f5 89 85 84 05 00
+ 00 mov DWORD PTR color$[rbp], eax
+
+; 5734 : if (color > 6)
+
+ 002fb 83 bd 84 05 00
+ 00 06 cmp DWORD PTR color$[rbp], 6
+ 00302 7e 11 jle SHORT $LN30@stbi__pars
+
+; 5735 : return stbi__err("bad ctype", "Corrupt PNG");
+
+ 00304 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09MBBNGCKB@bad?5ctype@
+ 0030b e8 00 00 00 00 call stbi__err
+ 00310 e9 a4 0b 00 00 jmp $LN1@stbi__pars
+$LN30@stbi__pars:
+
+; 5736 : if (color == 3 && z->depth == 16)
+
+ 00315 83 bd 84 05 00
+ 00 03 cmp DWORD PTR color$[rbp], 3
+ 0031c 75 1e jne SHORT $LN31@stbi__pars
+ 0031e 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00325 83 78 20 10 cmp DWORD PTR [rax+32], 16
+ 00329 75 11 jne SHORT $LN31@stbi__pars
+
+; 5737 : return stbi__err("bad ctype", "Corrupt PNG");
+
+ 0032b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09MBBNGCKB@bad?5ctype@
+ 00332 e8 00 00 00 00 call stbi__err
+ 00337 e9 7d 0b 00 00 jmp $LN1@stbi__pars
+$LN31@stbi__pars:
+
+; 5738 : if (color == 3)
+
+ 0033c 83 bd 84 05 00
+ 00 03 cmp DWORD PTR color$[rbp], 3
+ 00343 75 09 jne SHORT $LN32@stbi__pars
+
+; 5739 : pal_img_n = 3;
+
+ 00345 c6 85 24 04 00
+ 00 03 mov BYTE PTR pal_img_n$[rbp], 3
+ 0034c eb 1e jmp SHORT $LN33@stbi__pars
+$LN32@stbi__pars:
+
+; 5740 : else if (color & 1)
+
+ 0034e 8b 85 84 05 00
+ 00 mov eax, DWORD PTR color$[rbp]
+ 00354 83 e0 01 and eax, 1
+ 00357 85 c0 test eax, eax
+ 00359 74 11 je SHORT $LN34@stbi__pars
+
+; 5741 : return stbi__err("bad ctype", "Corrupt PNG");
+
+ 0035b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09MBBNGCKB@bad?5ctype@
+ 00362 e8 00 00 00 00 call stbi__err
+ 00367 e9 4d 0b 00 00 jmp $LN1@stbi__pars
+$LN34@stbi__pars:
+$LN33@stbi__pars:
+
+; 5742 : comp = stbi__get8(s);
+
+ 0036c 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00373 e8 00 00 00 00 call stbi__get8
+ 00378 0f b6 c0 movzx eax, al
+ 0037b 89 85 04 06 00
+ 00 mov DWORD PTR comp$9[rbp], eax
+
+; 5743 : if (comp)
+
+ 00381 83 bd 04 06 00
+ 00 00 cmp DWORD PTR comp$9[rbp], 0
+ 00388 74 11 je SHORT $LN35@stbi__pars
+
+; 5744 : return stbi__err("bad comp method", "Corrupt PNG");
+
+ 0038a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDMBDDFG@bad?5comp?5method@
+ 00391 e8 00 00 00 00 call stbi__err
+ 00396 e9 1e 0b 00 00 jmp $LN1@stbi__pars
+$LN35@stbi__pars:
+
+; 5745 : filter = stbi__get8(s);
+
+ 0039b 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003a2 e8 00 00 00 00 call stbi__get8
+ 003a7 0f b6 c0 movzx eax, al
+ 003aa 89 85 24 06 00
+ 00 mov DWORD PTR filter$10[rbp], eax
+
+; 5746 : if (filter)
+
+ 003b0 83 bd 24 06 00
+ 00 00 cmp DWORD PTR filter$10[rbp], 0
+ 003b7 74 11 je SHORT $LN36@stbi__pars
+
+; 5747 : return stbi__err("bad filter method", "Corrupt PNG");
+
+ 003b9 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BC@GHLIKKMD@bad?5filter?5method@
+ 003c0 e8 00 00 00 00 call stbi__err
+ 003c5 e9 ef 0a 00 00 jmp $LN1@stbi__pars
+$LN36@stbi__pars:
+
+; 5748 : interlace = stbi__get8(s);
+
+ 003ca 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003d1 e8 00 00 00 00 call stbi__get8
+ 003d6 0f b6 c0 movzx eax, al
+ 003d9 89 85 64 05 00
+ 00 mov DWORD PTR interlace$[rbp], eax
+
+; 5749 : if (interlace > 1)
+
+ 003df 83 bd 64 05 00
+ 00 01 cmp DWORD PTR interlace$[rbp], 1
+ 003e6 7e 11 jle SHORT $LN37@stbi__pars
+
+; 5750 : return stbi__err("bad interlace method", "Corrupt PNG");
+
+ 003e8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BF@JCGDPBAA@bad?5interlace?5method@
+ 003ef e8 00 00 00 00 call stbi__err
+ 003f4 e9 c0 0a 00 00 jmp $LN1@stbi__pars
+$LN37@stbi__pars:
+
+; 5751 : if (!s->img_x || !s->img_y)
+
+ 003f9 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00400 83 38 00 cmp DWORD PTR [rax], 0
+ 00403 74 0d je SHORT $LN39@stbi__pars
+ 00405 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0040c 83 78 04 00 cmp DWORD PTR [rax+4], 0
+ 00410 75 11 jne SHORT $LN38@stbi__pars
+$LN39@stbi__pars:
+
+; 5752 : return stbi__err("0-pixel image", "Corrupt PNG");
+
+ 00412 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@FNFBHCOO@0?9pixel?5image@
+ 00419 e8 00 00 00 00 call stbi__err
+ 0041e e9 96 0a 00 00 jmp $LN1@stbi__pars
+$LN38@stbi__pars:
+
+; 5753 : if (!pal_img_n) {
+
+ 00423 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 0042a 85 c0 test eax, eax
+ 0042c 0f 85 9b 00 00
+ 00 jne $LN40@stbi__pars
+
+; 5754 : s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0);
+
+ 00432 8b 85 84 05 00
+ 00 mov eax, DWORD PTR color$[rbp]
+ 00438 83 e0 02 and eax, 2
+ 0043b 85 c0 test eax, eax
+ 0043d 74 0c je SHORT $LN97@stbi__pars
+ 0043f c7 85 b4 09 00
+ 00 03 00 00 00 mov DWORD PTR tv194[rbp], 3
+ 00449 eb 0a jmp SHORT $LN98@stbi__pars
+$LN97@stbi__pars:
+ 0044b c7 85 b4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv194[rbp], 1
+$LN98@stbi__pars:
+ 00455 8b 85 84 05 00
+ 00 mov eax, DWORD PTR color$[rbp]
+ 0045b 83 e0 04 and eax, 4
+ 0045e 85 c0 test eax, eax
+ 00460 74 0c je SHORT $LN99@stbi__pars
+ 00462 c7 85 b8 09 00
+ 00 01 00 00 00 mov DWORD PTR tv197[rbp], 1
+ 0046c eb 0a jmp SHORT $LN100@stbi__pars
+$LN99@stbi__pars:
+ 0046e c7 85 b8 09 00
+ 00 00 00 00 00 mov DWORD PTR tv197[rbp], 0
+$LN100@stbi__pars:
+ 00478 8b 85 b8 09 00
+ 00 mov eax, DWORD PTR tv197[rbp]
+ 0047e 8b 8d b4 09 00
+ 00 mov ecx, DWORD PTR tv194[rbp]
+ 00484 03 c8 add ecx, eax
+ 00486 8b c1 mov eax, ecx
+ 00488 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0048f 89 41 08 mov DWORD PTR [rcx+8], eax
+
+; 5755 : if ((1 << 30) / s->img_x / s->img_n < s->img_y)
+
+ 00492 33 d2 xor edx, edx
+ 00494 b8 00 00 00 40 mov eax, 1073741824 ; 40000000H
+ 00499 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004a0 f7 31 div DWORD PTR [rcx]
+ 004a2 33 d2 xor edx, edx
+ 004a4 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004ab f7 71 08 div DWORD PTR [rcx+8]
+ 004ae 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004b5 3b 41 04 cmp eax, DWORD PTR [rcx+4]
+ 004b8 73 11 jae SHORT $LN42@stbi__pars
+
+; 5756 : return stbi__err("too large", "Image too large to decode");
+
+ 004ba 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 004c1 e8 00 00 00 00 call stbi__err
+ 004c6 e9 ee 09 00 00 jmp $LN1@stbi__pars
+$LN42@stbi__pars:
+
+; 5757 : } else {
+
+ 004cb eb 44 jmp SHORT $LN41@stbi__pars
+$LN40@stbi__pars:
+
+; 5758 : // if paletted, then pal_n is our final components, and
+; 5759 : // img_n is # components to decompress/filter.
+; 5760 : s->img_n = 1;
+
+ 004cd 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 004d4 c7 40 08 01 00
+ 00 00 mov DWORD PTR [rax+8], 1
+
+; 5761 : if ((1 << 30) / s->img_x / 4 < s->img_y)
+
+ 004db 33 d2 xor edx, edx
+ 004dd b8 00 00 00 40 mov eax, 1073741824 ; 40000000H
+ 004e2 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004e9 f7 31 div DWORD PTR [rcx]
+ 004eb 33 d2 xor edx, edx
+ 004ed b9 04 00 00 00 mov ecx, 4
+ 004f2 f7 f1 div ecx
+ 004f4 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004fb 3b 41 04 cmp eax, DWORD PTR [rcx+4]
+ 004fe 73 11 jae SHORT $LN43@stbi__pars
+
+; 5762 : return stbi__err("too large", "Corrupt PNG");
+
+ 00500 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00507 e8 00 00 00 00 call stbi__err
+ 0050c e9 a8 09 00 00 jmp $LN1@stbi__pars
+$LN43@stbi__pars:
+$LN41@stbi__pars:
+
+; 5763 : }
+; 5764 : // even with SCAN_header, have to scan to see if we have a tRNS
+; 5765 : break;
+
+ 00511 e9 91 09 00 00 jmp $LN5@stbi__pars
+$LN44@stbi__pars:
+
+; 5766 : }
+; 5767 :
+; 5768 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): {
+; 5769 : if (first)
+
+ 00516 83 bd 24 05 00
+ 00 00 cmp DWORD PTR first$[rbp], 0
+ 0051d 74 11 je SHORT $LN45@stbi__pars
+
+; 5770 : return stbi__err("first not IHDR", "Corrupt PNG");
+
+ 0051f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
+ 00526 e8 00 00 00 00 call stbi__err
+ 0052b e9 89 09 00 00 jmp $LN1@stbi__pars
+$LN45@stbi__pars:
+
+; 5771 : if (c.length > 256 * 3)
+
+ 00530 81 bd e8 05 00
+ 00 00 03 00 00 cmp DWORD PTR c$8[rbp], 768 ; 00000300H
+ 0053a 76 11 jbe SHORT $LN46@stbi__pars
+
+; 5772 : return stbi__err("invalid PLTE", "Corrupt PNG");
+
+ 0053c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@JCPAJAKB@invalid?5PLTE@
+ 00543 e8 00 00 00 00 call stbi__err
+ 00548 e9 6c 09 00 00 jmp $LN1@stbi__pars
+$LN46@stbi__pars:
+
+; 5773 : pal_len = c.length / 3;
+
+ 0054d 33 d2 xor edx, edx
+ 0054f 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR c$8[rbp]
+ 00555 b9 03 00 00 00 mov ecx, 3
+ 0055a f7 f1 div ecx
+ 0055c 89 85 04 05 00
+ 00 mov DWORD PTR pal_len$[rbp], eax
+
+; 5774 : if (pal_len * 3 != c.length)
+
+ 00562 6b 85 04 05 00
+ 00 03 imul eax, DWORD PTR pal_len$[rbp], 3
+ 00569 3b 85 e8 05 00
+ 00 cmp eax, DWORD PTR c$8[rbp]
+ 0056f 74 11 je SHORT $LN47@stbi__pars
+
+; 5775 : return stbi__err("invalid PLTE", "Corrupt PNG");
+
+ 00571 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@JCPAJAKB@invalid?5PLTE@
+ 00578 e8 00 00 00 00 call stbi__err
+ 0057d e9 37 09 00 00 jmp $LN1@stbi__pars
+$LN47@stbi__pars:
+
+; 5776 : for (i = 0; i < pal_len; ++i) {
+
+ 00582 c7 85 e4 04 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 0058c eb 0e jmp SHORT $LN9@stbi__pars
+$LN7@stbi__pars:
+ 0058e 8b 85 e4 04 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00594 ff c0 inc eax
+ 00596 89 85 e4 04 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN9@stbi__pars:
+ 0059c 8b 85 04 05 00
+ 00 mov eax, DWORD PTR pal_len$[rbp]
+ 005a2 39 85 e4 04 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 005a8 73 72 jae SHORT $LN8@stbi__pars
+
+; 5777 : palette[i * 4 + 0] = stbi__get8(s);
+
+ 005aa 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005b1 e8 00 00 00 00 call stbi__get8
+ 005b6 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR i$[rbp]
+ 005bc c1 e1 02 shl ecx, 2
+ 005bf 8b c9 mov ecx, ecx
+ 005c1 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
+
+; 5778 : palette[i * 4 + 1] = stbi__get8(s);
+
+ 005c5 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005cc e8 00 00 00 00 call stbi__get8
+ 005d1 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR i$[rbp]
+ 005d7 8d 0c 8d 01 00
+ 00 00 lea ecx, DWORD PTR [rcx*4+1]
+ 005de 8b c9 mov ecx, ecx
+ 005e0 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
+
+; 5779 : palette[i * 4 + 2] = stbi__get8(s);
+
+ 005e4 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005eb e8 00 00 00 00 call stbi__get8
+ 005f0 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR i$[rbp]
+ 005f6 8d 0c 8d 02 00
+ 00 00 lea ecx, DWORD PTR [rcx*4+2]
+ 005fd 8b c9 mov ecx, ecx
+ 005ff 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
+
+; 5780 : palette[i * 4 + 3] = 255;
+
+ 00603 8b 85 e4 04 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00609 8d 04 85 03 00
+ 00 00 lea eax, DWORD PTR [rax*4+3]
+ 00610 8b c0 mov eax, eax
+ 00612 c6 44 05 10 ff mov BYTE PTR palette$[rbp+rax], 255 ; 000000ffH
+
+; 5781 : }
+
+ 00617 e9 72 ff ff ff jmp $LN7@stbi__pars
+$LN8@stbi__pars:
+
+; 5782 : break;
+
+ 0061c e9 86 08 00 00 jmp $LN5@stbi__pars
+$LN48@stbi__pars:
+
+; 5783 : }
+; 5784 :
+; 5785 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): {
+; 5786 : if (first)
+
+ 00621 83 bd 24 05 00
+ 00 00 cmp DWORD PTR first$[rbp], 0
+ 00628 74 11 je SHORT $LN49@stbi__pars
+
+; 5787 : return stbi__err("first not IHDR", "Corrupt PNG");
+
+ 0062a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
+ 00631 e8 00 00 00 00 call stbi__err
+ 00636 e9 7e 08 00 00 jmp $LN1@stbi__pars
+$LN49@stbi__pars:
+
+; 5788 : if (z->idata)
+
+ 0063b 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00642 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
+ 00647 74 11 je SHORT $LN50@stbi__pars
+
+; 5789 : return stbi__err("tRNS after IDAT", "Corrupt PNG");
+
+ 00649 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@
+ 00650 e8 00 00 00 00 call stbi__err
+ 00655 e9 5f 08 00 00 jmp $LN1@stbi__pars
+$LN50@stbi__pars:
+
+; 5790 : if (pal_img_n) {
+
+ 0065a 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 00661 85 c0 test eax, eax
+ 00663 0f 84 af 00 00
+ 00 je $LN51@stbi__pars
+
+; 5791 : if (scan == STBI__SCAN_header) {
+
+ 00669 83 bd f8 09 00
+ 00 02 cmp DWORD PTR scan$[rbp], 2
+ 00670 75 18 jne SHORT $LN53@stbi__pars
+
+; 5792 : s->img_n = 4;
+
+ 00672 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00679 c7 40 08 04 00
+ 00 00 mov DWORD PTR [rax+8], 4
+
+; 5793 : return 1;
+
+ 00680 b8 01 00 00 00 mov eax, 1
+ 00685 e9 2f 08 00 00 jmp $LN1@stbi__pars
+$LN53@stbi__pars:
+
+; 5794 : }
+; 5795 : if (pal_len == 0)
+
+ 0068a 83 bd 04 05 00
+ 00 00 cmp DWORD PTR pal_len$[rbp], 0
+ 00691 75 11 jne SHORT $LN54@stbi__pars
+
+; 5796 : return stbi__err("tRNS before PLTE", "Corrupt PNG");
+
+ 00693 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@
+ 0069a e8 00 00 00 00 call stbi__err
+ 0069f e9 15 08 00 00 jmp $LN1@stbi__pars
+$LN54@stbi__pars:
+
+; 5797 : if (c.length > pal_len)
+
+ 006a4 8b 85 04 05 00
+ 00 mov eax, DWORD PTR pal_len$[rbp]
+ 006aa 39 85 e8 05 00
+ 00 cmp DWORD PTR c$8[rbp], eax
+ 006b0 76 11 jbe SHORT $LN55@stbi__pars
+
+; 5798 : return stbi__err("bad tRNS len", "Corrupt PNG");
+
+ 006b2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@KDLCCKCH@bad?5tRNS?5len@
+ 006b9 e8 00 00 00 00 call stbi__err
+ 006be e9 f6 07 00 00 jmp $LN1@stbi__pars
+$LN55@stbi__pars:
+
+; 5799 : pal_img_n = 4;
+
+ 006c3 c6 85 24 04 00
+ 00 04 mov BYTE PTR pal_img_n$[rbp], 4
+
+; 5800 : for (i = 0; i < c.length; ++i)
+
+ 006ca c7 85 e4 04 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 006d4 eb 0e jmp SHORT $LN12@stbi__pars
+$LN10@stbi__pars:
+ 006d6 8b 85 e4 04 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 006dc ff c0 inc eax
+ 006de 89 85 e4 04 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN12@stbi__pars:
+ 006e4 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR c$8[rbp]
+ 006ea 39 85 e4 04 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 006f0 73 21 jae SHORT $LN11@stbi__pars
+
+; 5801 : palette[i * 4 + 3] = stbi__get8(s);
+
+ 006f2 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 006f9 e8 00 00 00 00 call stbi__get8
+ 006fe 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR i$[rbp]
+ 00704 8d 0c 8d 03 00
+ 00 00 lea ecx, DWORD PTR [rcx*4+3]
+ 0070b 8b c9 mov ecx, ecx
+ 0070d 88 44 0d 10 mov BYTE PTR palette$[rbp+rcx], al
+ 00711 eb c3 jmp SHORT $LN10@stbi__pars
+$LN11@stbi__pars:
+
+; 5802 : } else {
+
+ 00713 e9 4a 01 00 00 jmp $LN52@stbi__pars
+$LN51@stbi__pars:
+
+; 5803 : if (!(s->img_n & 1))
+
+ 00718 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0071f 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00722 83 e0 01 and eax, 1
+ 00725 85 c0 test eax, eax
+ 00727 75 11 jne SHORT $LN56@stbi__pars
+
+; 5804 : return stbi__err("tRNS with alpha", "Corrupt PNG");
+
+ 00729 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@
+ 00730 e8 00 00 00 00 call stbi__err
+ 00735 e9 7f 07 00 00 jmp $LN1@stbi__pars
+$LN56@stbi__pars:
+
+; 5805 : if (c.length != (stbi__uint32)s->img_n * 2)
+
+ 0073a 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00741 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00744 d1 e0 shl eax, 1
+ 00746 39 85 e8 05 00
+ 00 cmp DWORD PTR c$8[rbp], eax
+ 0074c 74 11 je SHORT $LN57@stbi__pars
+
+; 5806 : return stbi__err("bad tRNS len", "Corrupt PNG");
+
+ 0074e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@KDLCCKCH@bad?5tRNS?5len@
+ 00755 e8 00 00 00 00 call stbi__err
+ 0075a e9 5a 07 00 00 jmp $LN1@stbi__pars
+$LN57@stbi__pars:
+
+; 5807 : has_trans = 1;
+
+ 0075f c6 85 44 04 00
+ 00 01 mov BYTE PTR has_trans$[rbp], 1
+
+; 5808 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now.
+; 5809 : if (scan == STBI__SCAN_header) {
+
+ 00766 83 bd f8 09 00
+ 00 02 cmp DWORD PTR scan$[rbp], 2
+ 0076d 75 20 jne SHORT $LN58@stbi__pars
+
+; 5810 : ++s->img_n;
+
+ 0076f 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00776 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00779 ff c0 inc eax
+ 0077b 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00782 89 41 08 mov DWORD PTR [rcx+8], eax
+
+; 5811 : return 1;
+
+ 00785 b8 01 00 00 00 mov eax, 1
+ 0078a e9 2a 07 00 00 jmp $LN1@stbi__pars
+$LN58@stbi__pars:
+
+; 5812 : }
+; 5813 : if (z->depth == 16) {
+
+ 0078f 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00796 83 78 20 10 cmp DWORD PTR [rax+32], 16
+ 0079a 75 54 jne SHORT $LN59@stbi__pars
+
+; 5814 : for (k = 0; k < s->img_n && k < 3;
+
+ 0079c c7 85 44 05 00
+ 00 00 00 00 00 mov DWORD PTR k$[rbp], 0
+ 007a6 eb 0e jmp SHORT $LN15@stbi__pars
+$LN13@stbi__pars:
+
+; 5815 : ++k) // extra loop test to suppress false GCC warning
+
+ 007a8 8b 85 44 05 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 007ae ff c0 inc eax
+ 007b0 89 85 44 05 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN15@stbi__pars:
+
+; 5814 : for (k = 0; k < s->img_n && k < 3;
+
+ 007b6 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 007bd 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 007c0 39 85 44 05 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 007c6 7d 26 jge SHORT $LN14@stbi__pars
+ 007c8 83 bd 44 05 00
+ 00 03 cmp DWORD PTR k$[rbp], 3
+ 007cf 7d 1d jge SHORT $LN14@stbi__pars
+
+; 5816 : tc16[k] = (stbi__uint16)stbi__get16be(
+
+ 007d1 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 007d8 e8 00 00 00 00 call stbi__get16be
+ 007dd 48 63 8d 44 05
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 007e4 66 89 84 4d 84
+ 04 00 00 mov WORD PTR tc16$[rbp+rcx*2], ax
+ 007ec eb ba jmp SHORT $LN13@stbi__pars
+$LN14@stbi__pars:
+
+; 5817 : s); // copy the values as-is
+; 5818 : } else {
+
+ 007ee eb 72 jmp SHORT $LN60@stbi__pars
+$LN59@stbi__pars:
+
+; 5819 : for (k = 0; k < s->img_n && k < 3; ++k)
+
+ 007f0 c7 85 44 05 00
+ 00 00 00 00 00 mov DWORD PTR k$[rbp], 0
+ 007fa eb 0e jmp SHORT $LN18@stbi__pars
+$LN16@stbi__pars:
+ 007fc 8b 85 44 05 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 00802 ff c0 inc eax
+ 00804 89 85 44 05 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN18@stbi__pars:
+ 0080a 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00811 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00814 39 85 44 05 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 0081a 7d 46 jge SHORT $LN17@stbi__pars
+ 0081c 83 bd 44 05 00
+ 00 03 cmp DWORD PTR k$[rbp], 3
+ 00823 7d 3d jge SHORT $LN17@stbi__pars
+
+; 5820 : tc[k] = (stbi_uc)(stbi__get16be(s) & 255) *
+
+ 00825 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0082c e8 00 00 00 00 call stbi__get16be
+ 00831 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00836 0f b6 c0 movzx eax, al
+ 00839 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00840 48 63 49 20 movsxd rcx, DWORD PTR [rcx+32]
+ 00844 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__depth_scale_table
+ 0084b 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0084f 0f af c1 imul eax, ecx
+ 00852 48 63 8d 44 05
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 00859 88 84 0d 64 04
+ 00 00 mov BYTE PTR tc$[rbp+rcx], al
+ 00860 eb 9a jmp SHORT $LN16@stbi__pars
+$LN17@stbi__pars:
+$LN60@stbi__pars:
+$LN52@stbi__pars:
+
+; 5821 : stbi__depth_scale_table
+; 5822 : [z->depth]; // non 8-bit images will be larger
+; 5823 : }
+; 5824 : }
+; 5825 : break;
+
+ 00862 e9 40 06 00 00 jmp $LN5@stbi__pars
+$LN61@stbi__pars:
+
+; 5826 : }
+; 5827 :
+; 5828 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): {
+; 5829 : if (first)
+
+ 00867 83 bd 24 05 00
+ 00 00 cmp DWORD PTR first$[rbp], 0
+ 0086e 74 11 je SHORT $LN62@stbi__pars
+
+; 5830 : return stbi__err("first not IHDR", "Corrupt PNG");
+
+ 00870 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
+ 00877 e8 00 00 00 00 call stbi__err
+ 0087c e9 38 06 00 00 jmp $LN1@stbi__pars
+$LN62@stbi__pars:
+
+; 5831 : if (pal_img_n && !pal_len)
+
+ 00881 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 00888 85 c0 test eax, eax
+ 0088a 74 1a je SHORT $LN63@stbi__pars
+ 0088c 83 bd 04 05 00
+ 00 00 cmp DWORD PTR pal_len$[rbp], 0
+ 00893 75 11 jne SHORT $LN63@stbi__pars
+
+; 5832 : return stbi__err("no PLTE", "Corrupt PNG");
+
+ 00895 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07CKIELOEH@no?5PLTE@
+ 0089c e8 00 00 00 00 call stbi__err
+ 008a1 e9 13 06 00 00 jmp $LN1@stbi__pars
+$LN63@stbi__pars:
+
+; 5833 : if (scan == STBI__SCAN_header) {
+
+ 008a6 83 bd f8 09 00
+ 00 02 cmp DWORD PTR scan$[rbp], 2
+ 008ad 75 26 jne SHORT $LN64@stbi__pars
+
+; 5834 : // header scan definitely stops at first IDAT
+; 5835 : if (pal_img_n)
+
+ 008af 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 008b6 85 c0 test eax, eax
+ 008b8 74 11 je SHORT $LN65@stbi__pars
+
+; 5836 : s->img_n = pal_img_n;
+
+ 008ba 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 008c1 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 008c8 89 41 08 mov DWORD PTR [rcx+8], eax
+$LN65@stbi__pars:
+
+; 5837 : return 1;
+
+ 008cb b8 01 00 00 00 mov eax, 1
+ 008d0 e9 e4 05 00 00 jmp $LN1@stbi__pars
+$LN64@stbi__pars:
+
+; 5838 : }
+; 5839 : if (c.length > (1u << 30))
+
+ 008d5 81 bd e8 05 00
+ 00 00 00 00 40 cmp DWORD PTR c$8[rbp], 1073741824 ; 40000000H
+ 008df 76 11 jbe SHORT $LN66@stbi__pars
+
+; 5840 : return stbi__err("IDAT size limit",
+
+ 008e1 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@PLHGLONG@IDAT?5size?5limit@
+ 008e8 e8 00 00 00 00 call stbi__err
+ 008ed e9 c7 05 00 00 jmp $LN1@stbi__pars
+$LN66@stbi__pars:
+
+; 5841 : "IDAT section larger than 2^30 bytes");
+; 5842 : if ((int)(ioff + c.length) < (int)ioff)
+
+ 008f2 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR c$8[rbp]
+ 008f8 8b 8d a4 04 00
+ 00 mov ecx, DWORD PTR ioff$[rbp]
+ 008fe 03 c8 add ecx, eax
+ 00900 8b c1 mov eax, ecx
+ 00902 3b 85 a4 04 00
+ 00 cmp eax, DWORD PTR ioff$[rbp]
+ 00908 7d 07 jge SHORT $LN67@stbi__pars
+
+; 5843 : return 0;
+
+ 0090a 33 c0 xor eax, eax
+ 0090c e9 a8 05 00 00 jmp $LN1@stbi__pars
+$LN67@stbi__pars:
+
+; 5844 : if (ioff + c.length > idata_limit) {
+
+ 00911 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR c$8[rbp]
+ 00917 8b 8d a4 04 00
+ 00 mov ecx, DWORD PTR ioff$[rbp]
+ 0091d 03 c8 add ecx, eax
+ 0091f 8b c1 mov eax, ecx
+ 00921 3b 85 c4 04 00
+ 00 cmp eax, DWORD PTR idata_limit$[rbp]
+ 00927 0f 86 ba 00 00
+ 00 jbe $LN68@stbi__pars
+
+; 5845 : stbi__uint32 idata_limit_old = idata_limit;
+
+ 0092d 8b 85 c4 04 00
+ 00 mov eax, DWORD PTR idata_limit$[rbp]
+ 00933 89 85 44 06 00
+ 00 mov DWORD PTR idata_limit_old$11[rbp], eax
+
+; 5846 : stbi_uc *p;
+; 5847 : if (idata_limit == 0)
+
+ 00939 83 bd c4 04 00
+ 00 00 cmp DWORD PTR idata_limit$[rbp], 0
+ 00940 75 30 jne SHORT $LN69@stbi__pars
+
+; 5848 : idata_limit = c.length > 4096 ? c.length : 4096;
+
+ 00942 81 bd e8 05 00
+ 00 00 10 00 00 cmp DWORD PTR c$8[rbp], 4096 ; 00001000H
+ 0094c 76 0e jbe SHORT $LN101@stbi__pars
+ 0094e 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR c$8[rbp]
+ 00954 89 85 b4 09 00
+ 00 mov DWORD PTR tv347[rbp], eax
+ 0095a eb 0a jmp SHORT $LN102@stbi__pars
+$LN101@stbi__pars:
+ 0095c c7 85 b4 09 00
+ 00 00 10 00 00 mov DWORD PTR tv347[rbp], 4096 ; 00001000H
+$LN102@stbi__pars:
+ 00966 8b 85 b4 09 00
+ 00 mov eax, DWORD PTR tv347[rbp]
+ 0096c 89 85 c4 04 00
+ 00 mov DWORD PTR idata_limit$[rbp], eax
+$LN69@stbi__pars:
+$LN19@stbi__pars:
+
+; 5849 : while (ioff + c.length > idata_limit)
+
+ 00972 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR c$8[rbp]
+ 00978 8b 8d a4 04 00
+ 00 mov ecx, DWORD PTR ioff$[rbp]
+ 0097e 03 c8 add ecx, eax
+ 00980 8b c1 mov eax, ecx
+ 00982 3b 85 c4 04 00
+ 00 cmp eax, DWORD PTR idata_limit$[rbp]
+ 00988 76 10 jbe SHORT $LN20@stbi__pars
+
+; 5850 : idata_limit *= 2;
+
+ 0098a 8b 85 c4 04 00
+ 00 mov eax, DWORD PTR idata_limit$[rbp]
+ 00990 d1 e0 shl eax, 1
+ 00992 89 85 c4 04 00
+ 00 mov DWORD PTR idata_limit$[rbp], eax
+ 00998 eb d8 jmp SHORT $LN19@stbi__pars
+$LN20@stbi__pars:
+
+; 5851 : STBI_NOTUSED(idata_limit_old);
+; 5852 : p = (stbi_uc *)STBI_REALLOC_SIZED(z->idata, idata_limit_old,
+
+ 0099a 8b 85 c4 04 00
+ 00 mov eax, DWORD PTR idata_limit$[rbp]
+ 009a0 8b d0 mov edx, eax
+ 009a2 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 009a9 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
+ 009ad ff 15 00 00 00
+ 00 call QWORD PTR __imp_realloc
+ 009b3 48 89 85 68 06
+ 00 00 mov QWORD PTR p$12[rbp], rax
+
+; 5853 : idata_limit);
+; 5854 : if (p == NULL)
+
+ 009ba 48 83 bd 68 06
+ 00 00 00 cmp QWORD PTR p$12[rbp], 0
+ 009c2 75 11 jne SHORT $LN70@stbi__pars
+
+; 5855 : return stbi__err("outofmem", "Out of memory");
+
+ 009c4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 009cb e8 00 00 00 00 call stbi__err
+ 009d0 e9 e4 04 00 00 jmp $LN1@stbi__pars
+$LN70@stbi__pars:
+
+; 5856 : z->idata = p;
+
+ 009d5 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 009dc 48 8b 8d 68 06
+ 00 00 mov rcx, QWORD PTR p$12[rbp]
+ 009e3 48 89 48 08 mov QWORD PTR [rax+8], rcx
+$LN68@stbi__pars:
+
+; 5857 : }
+; 5858 : if (!stbi__getn(s, z->idata + ioff, c.length))
+
+ 009e7 8b 85 a4 04 00
+ 00 mov eax, DWORD PTR ioff$[rbp]
+ 009ed 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 009f4 48 03 41 08 add rax, QWORD PTR [rcx+8]
+ 009f8 44 8b 85 e8 05
+ 00 00 mov r8d, DWORD PTR c$8[rbp]
+ 009ff 48 8b d0 mov rdx, rax
+ 00a02 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00a09 e8 00 00 00 00 call stbi__getn
+ 00a0e 85 c0 test eax, eax
+ 00a10 75 11 jne SHORT $LN71@stbi__pars
+
+; 5859 : return stbi__err("outofdata", "Corrupt PNG");
+
+ 00a12 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09MNNCNKEO@outofdata@
+ 00a19 e8 00 00 00 00 call stbi__err
+ 00a1e e9 96 04 00 00 jmp $LN1@stbi__pars
+$LN71@stbi__pars:
+
+; 5860 : ioff += c.length;
+
+ 00a23 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR c$8[rbp]
+ 00a29 8b 8d a4 04 00
+ 00 mov ecx, DWORD PTR ioff$[rbp]
+ 00a2f 03 c8 add ecx, eax
+ 00a31 8b c1 mov eax, ecx
+ 00a33 89 85 a4 04 00
+ 00 mov DWORD PTR ioff$[rbp], eax
+
+; 5861 : break;
+
+ 00a39 e9 69 04 00 00 jmp $LN5@stbi__pars
+$LN72@stbi__pars:
+
+; 5862 : }
+; 5863 :
+; 5864 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): {
+; 5865 : stbi__uint32 raw_len, bpl;
+; 5866 : if (first)
+
+ 00a3e 83 bd 24 05 00
+ 00 00 cmp DWORD PTR first$[rbp], 0
+ 00a45 74 11 je SHORT $LN73@stbi__pars
+
+; 5867 : return stbi__err("first not IHDR", "Corrupt PNG");
+
+ 00a47 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
+ 00a4e e8 00 00 00 00 call stbi__err
+ 00a53 e9 61 04 00 00 jmp $LN1@stbi__pars
+$LN73@stbi__pars:
+
+; 5868 : if (scan != STBI__SCAN_load)
+
+ 00a58 83 bd f8 09 00
+ 00 00 cmp DWORD PTR scan$[rbp], 0
+ 00a5f 74 0a je SHORT $LN74@stbi__pars
+
+; 5869 : return 1;
+
+ 00a61 b8 01 00 00 00 mov eax, 1
+ 00a66 e9 4e 04 00 00 jmp $LN1@stbi__pars
+$LN74@stbi__pars:
+
+; 5870 : if (z->idata == NULL)
+
+ 00a6b 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00a72 48 83 78 08 00 cmp QWORD PTR [rax+8], 0
+ 00a77 75 11 jne SHORT $LN75@stbi__pars
+
+; 5871 : return stbi__err("no IDAT", "Corrupt PNG");
+
+ 00a79 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07MLPECBNA@no?5IDAT@
+ 00a80 e8 00 00 00 00 call stbi__err
+ 00a85 e9 2f 04 00 00 jmp $LN1@stbi__pars
+$LN75@stbi__pars:
+
+; 5872 : // initial guess for decoded data size to avoid unnecessary reallocs
+; 5873 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component
+
+ 00a8a 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00a91 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00a98 8b 00 mov eax, DWORD PTR [rax]
+ 00a9a 0f af 41 20 imul eax, DWORD PTR [rcx+32]
+ 00a9e 83 c0 07 add eax, 7
+ 00aa1 33 d2 xor edx, edx
+ 00aa3 b9 08 00 00 00 mov ecx, 8
+ 00aa8 f7 f1 div ecx
+ 00aaa 89 85 a4 06 00
+ 00 mov DWORD PTR bpl$14[rbp], eax
+
+; 5874 : raw_len = bpl * s->img_y * s->img_n /* pixels */ +
+
+ 00ab0 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00ab7 8b 8d a4 06 00
+ 00 mov ecx, DWORD PTR bpl$14[rbp]
+ 00abd 0f af 48 04 imul ecx, DWORD PTR [rax+4]
+ 00ac1 8b c1 mov eax, ecx
+ 00ac3 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00aca 0f af 41 08 imul eax, DWORD PTR [rcx+8]
+ 00ace 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00ad5 03 41 04 add eax, DWORD PTR [rcx+4]
+ 00ad8 89 85 84 06 00
+ 00 mov DWORD PTR raw_len$13[rbp], eax
+
+; 5875 : s->img_y /* filter mode per row */;
+; 5876 : z->expanded = (stbi_uc *)stbi_zlib_decode_malloc_guesssize_headerflag(
+
+ 00ade 83 bd a4 05 00
+ 00 00 cmp DWORD PTR is_iphone$[rbp], 0
+ 00ae5 75 0c jne SHORT $LN103@stbi__pars
+ 00ae7 c7 85 b4 09 00
+ 00 01 00 00 00 mov DWORD PTR tv396[rbp], 1
+ 00af1 eb 0a jmp SHORT $LN104@stbi__pars
+$LN103@stbi__pars:
+ 00af3 c7 85 b4 09 00
+ 00 00 00 00 00 mov DWORD PTR tv396[rbp], 0
+$LN104@stbi__pars:
+ 00afd 8b 85 b4 09 00
+ 00 mov eax, DWORD PTR tv396[rbp]
+ 00b03 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00b07 4c 8d 8d 84 06
+ 00 00 lea r9, QWORD PTR raw_len$13[rbp]
+ 00b0e 44 8b 85 84 06
+ 00 00 mov r8d, DWORD PTR raw_len$13[rbp]
+ 00b15 8b 95 a4 04 00
+ 00 mov edx, DWORD PTR ioff$[rbp]
+ 00b1b 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00b22 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
+ 00b26 e8 00 00 00 00 call stbi_zlib_decode_malloc_guesssize_headerflag
+ 00b2b 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00b32 48 89 41 10 mov QWORD PTR [rcx+16], rax
+
+; 5877 : (char *)z->idata, ioff, raw_len, (int *)&raw_len, !is_iphone);
+; 5878 : if (z->expanded == NULL)
+
+ 00b36 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00b3d 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
+ 00b42 75 07 jne SHORT $LN76@stbi__pars
+
+; 5879 : return 0; // zlib should set error
+
+ 00b44 33 c0 xor eax, eax
+ 00b46 e9 6e 03 00 00 jmp $LN1@stbi__pars
+$LN76@stbi__pars:
+
+; 5880 : STBI_FREE(z->idata);
+
+ 00b4b 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00b52 48 8b 48 08 mov rcx, QWORD PTR [rax+8]
+ 00b56 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00b5c 90 npad 1
+
+; 5881 : z->idata = NULL;
+
+ 00b5d 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00b64 48 c7 40 08 00
+ 00 00 00 mov QWORD PTR [rax+8], 0
+
+; 5882 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans)
+
+ 00b6c 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00b73 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00b76 ff c0 inc eax
+ 00b78 39 85 00 0a 00
+ 00 cmp DWORD PTR req_comp$[rbp], eax
+ 00b7e 75 14 jne SHORT $LN80@stbi__pars
+ 00b80 83 bd 00 0a 00
+ 00 03 cmp DWORD PTR req_comp$[rbp], 3
+ 00b87 74 0b je SHORT $LN80@stbi__pars
+ 00b89 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 00b90 85 c0 test eax, eax
+ 00b92 74 0b je SHORT $LN79@stbi__pars
+$LN80@stbi__pars:
+ 00b94 0f b6 85 44 04
+ 00 00 movzx eax, BYTE PTR has_trans$[rbp]
+ 00b9b 85 c0 test eax, eax
+ 00b9d 74 18 je SHORT $LN77@stbi__pars
+$LN79@stbi__pars:
+
+; 5883 : s->img_out_n = s->img_n + 1;
+
+ 00b9f 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00ba6 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00ba9 ff c0 inc eax
+ 00bab 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00bb2 89 41 0c mov DWORD PTR [rcx+12], eax
+ 00bb5 eb 14 jmp SHORT $LN78@stbi__pars
+$LN77@stbi__pars:
+
+; 5884 : else
+; 5885 : s->img_out_n = s->img_n;
+
+ 00bb7 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00bbe 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00bc5 8b 49 08 mov ecx, DWORD PTR [rcx+8]
+ 00bc8 89 48 0c mov DWORD PTR [rax+12], ecx
+$LN78@stbi__pars:
+
+; 5886 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth,
+
+ 00bcb 8b 85 64 05 00
+ 00 mov eax, DWORD PTR interlace$[rbp]
+ 00bd1 89 44 24 30 mov DWORD PTR [rsp+48], eax
+ 00bd5 8b 85 84 05 00
+ 00 mov eax, DWORD PTR color$[rbp]
+ 00bdb 89 44 24 28 mov DWORD PTR [rsp+40], eax
+ 00bdf 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00be6 8b 40 20 mov eax, DWORD PTR [rax+32]
+ 00be9 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00bed 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00bf4 44 8b 48 0c mov r9d, DWORD PTR [rax+12]
+ 00bf8 44 8b 85 84 06
+ 00 00 mov r8d, DWORD PTR raw_len$13[rbp]
+ 00bff 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00c06 48 8b 50 10 mov rdx, QWORD PTR [rax+16]
+ 00c0a 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00c11 e8 00 00 00 00 call stbi__create_png_image
+ 00c16 85 c0 test eax, eax
+ 00c18 75 07 jne SHORT $LN81@stbi__pars
+
+; 5887 : color, interlace))
+; 5888 : return 0;
+
+ 00c1a 33 c0 xor eax, eax
+ 00c1c e9 98 02 00 00 jmp $LN1@stbi__pars
+$LN81@stbi__pars:
+
+; 5889 : if (has_trans) {
+
+ 00c21 0f b6 85 44 04
+ 00 00 movzx eax, BYTE PTR has_trans$[rbp]
+ 00c28 85 c0 test eax, eax
+ 00c2a 74 61 je SHORT $LN82@stbi__pars
+
+; 5890 : if (z->depth == 16) {
+
+ 00c2c 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00c33 83 78 20 10 cmp DWORD PTR [rax+32], 16
+ 00c37 75 2b jne SHORT $LN83@stbi__pars
+
+; 5891 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n))
+
+ 00c39 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00c40 44 8b 40 0c mov r8d, DWORD PTR [rax+12]
+ 00c44 48 8d 95 84 04
+ 00 00 lea rdx, QWORD PTR tc16$[rbp]
+ 00c4b 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00c52 e8 00 00 00 00 call stbi__compute_transparency16
+ 00c57 85 c0 test eax, eax
+ 00c59 75 07 jne SHORT $LN85@stbi__pars
+
+; 5892 : return 0;
+
+ 00c5b 33 c0 xor eax, eax
+ 00c5d e9 57 02 00 00 jmp $LN1@stbi__pars
+$LN85@stbi__pars:
+
+; 5893 : } else {
+
+ 00c62 eb 29 jmp SHORT $LN84@stbi__pars
+$LN83@stbi__pars:
+
+; 5894 : if (!stbi__compute_transparency(z, tc, s->img_out_n))
+
+ 00c64 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00c6b 44 8b 40 0c mov r8d, DWORD PTR [rax+12]
+ 00c6f 48 8d 95 64 04
+ 00 00 lea rdx, QWORD PTR tc$[rbp]
+ 00c76 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00c7d e8 00 00 00 00 call stbi__compute_transparency
+ 00c82 85 c0 test eax, eax
+ 00c84 75 07 jne SHORT $LN86@stbi__pars
+
+; 5895 : return 0;
+
+ 00c86 33 c0 xor eax, eax
+ 00c88 e9 2c 02 00 00 jmp $LN1@stbi__pars
+$LN86@stbi__pars:
+$LN84@stbi__pars:
+$LN82@stbi__pars:
+
+; 5896 : }
+; 5897 : }
+; 5898 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2)
+
+ 00c8d 83 bd a4 05 00
+ 00 00 cmp DWORD PTR is_iphone$[rbp], 0
+ 00c94 74 74 je SHORT $LN87@stbi__pars
+ 00c96 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_set
+ 00c9b 8b c0 mov eax, eax
+ 00c9d 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00ca3 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00cac 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00cb0 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
+ 00cb4 74 25 je SHORT $LN105@stbi__pars
+ 00cb6 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_local
+ 00cbb 8b c0 mov eax, eax
+ 00cbd 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00cc3 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00ccc 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00cd0 8b 04 08 mov eax, DWORD PTR [rax+rcx]
+ 00cd3 89 85 b4 09 00
+ 00 mov DWORD PTR tv463[rbp], eax
+ 00cd9 eb 0c jmp SHORT $LN106@stbi__pars
+$LN105@stbi__pars:
+ 00cdb 8b 05 00 00 00
+ 00 mov eax, DWORD PTR stbi__de_iphone_flag_global
+ 00ce1 89 85 b4 09 00
+ 00 mov DWORD PTR tv463[rbp], eax
+$LN106@stbi__pars:
+ 00ce7 83 bd b4 09 00
+ 00 00 cmp DWORD PTR tv463[rbp], 0
+ 00cee 74 1a je SHORT $LN87@stbi__pars
+ 00cf0 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00cf7 83 78 0c 02 cmp DWORD PTR [rax+12], 2
+ 00cfb 7e 0d jle SHORT $LN87@stbi__pars
+
+; 5899 : stbi__de_iphone(z);
+
+ 00cfd 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00d04 e8 00 00 00 00 call stbi__de_iphone
+ 00d09 90 npad 1
+$LN87@stbi__pars:
+
+; 5900 : if (pal_img_n) {
+
+ 00d0a 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 00d11 85 c0 test eax, eax
+ 00d13 74 6a je SHORT $LN88@stbi__pars
+
+; 5901 : // pal_img_n == 3 or 4
+; 5902 : s->img_n = pal_img_n; // record the actual colors we had
+
+ 00d15 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 00d1c 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00d23 89 41 08 mov DWORD PTR [rcx+8], eax
+
+; 5903 : s->img_out_n = pal_img_n;
+
+ 00d26 0f b6 85 24 04
+ 00 00 movzx eax, BYTE PTR pal_img_n$[rbp]
+ 00d2d 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00d34 89 41 0c mov DWORD PTR [rcx+12], eax
+
+; 5904 : if (req_comp >= 3)
+
+ 00d37 83 bd 00 0a 00
+ 00 03 cmp DWORD PTR req_comp$[rbp], 3
+ 00d3e 7c 10 jl SHORT $LN90@stbi__pars
+
+; 5905 : s->img_out_n = req_comp;
+
+ 00d40 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00d47 8b 8d 00 0a 00
+ 00 mov ecx, DWORD PTR req_comp$[rbp]
+ 00d4d 89 48 0c mov DWORD PTR [rax+12], ecx
+$LN90@stbi__pars:
+
+; 5906 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n))
+
+ 00d50 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00d57 44 8b 48 0c mov r9d, DWORD PTR [rax+12]
+ 00d5b 44 8b 85 04 05
+ 00 00 mov r8d, DWORD PTR pal_len$[rbp]
+ 00d62 48 8d 55 10 lea rdx, QWORD PTR palette$[rbp]
+ 00d66 48 8b 8d f0 09
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00d6d e8 00 00 00 00 call stbi__expand_png_palette
+ 00d72 85 c0 test eax, eax
+ 00d74 75 07 jne SHORT $LN91@stbi__pars
+
+; 5907 : return 0;
+
+ 00d76 33 c0 xor eax, eax
+ 00d78 e9 3c 01 00 00 jmp $LN1@stbi__pars
+$LN91@stbi__pars:
+
+; 5908 : } else if (has_trans) {
+
+ 00d7d eb 21 jmp SHORT $LN89@stbi__pars
+$LN88@stbi__pars:
+ 00d7f 0f b6 85 44 04
+ 00 00 movzx eax, BYTE PTR has_trans$[rbp]
+ 00d86 85 c0 test eax, eax
+ 00d88 74 16 je SHORT $LN92@stbi__pars
+
+; 5909 : // non-paletted image with tRNS -> source image has (constant) alpha
+; 5910 : ++s->img_n;
+
+ 00d8a 48 8b 85 c8 05
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00d91 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00d94 ff c0 inc eax
+ 00d96 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00d9d 89 41 08 mov DWORD PTR [rcx+8], eax
+$LN92@stbi__pars:
+$LN89@stbi__pars:
+
+; 5911 : }
+; 5912 : STBI_FREE(z->expanded);
+
+ 00da0 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00da7 48 8b 48 10 mov rcx, QWORD PTR [rax+16]
+ 00dab ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00db1 90 npad 1
+
+; 5913 : z->expanded = NULL;
+
+ 00db2 48 8b 85 f0 09
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00db9 48 c7 40 10 00
+ 00 00 00 mov QWORD PTR [rax+16], 0
+
+; 5914 : // end of PNG chunk, read and skip CRC
+; 5915 : stbi__get32be(s);
+
+ 00dc1 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00dc8 e8 00 00 00 00 call stbi__get32be
+ 00dcd 90 npad 1
+
+; 5916 : return 1;
+
+ 00dce b8 01 00 00 00 mov eax, 1
+ 00dd3 e9 e1 00 00 00 jmp $LN1@stbi__pars
+$LN93@stbi__pars:
+
+; 5917 : }
+; 5918 :
+; 5919 : default:
+; 5920 : // if critical, fail
+; 5921 : if (first)
+
+ 00dd8 83 bd 24 05 00
+ 00 00 cmp DWORD PTR first$[rbp], 0
+ 00ddf 74 11 je SHORT $LN94@stbi__pars
+
+; 5922 : return stbi__err("first not IHDR", "Corrupt PNG");
+
+ 00de1 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@
+ 00de8 e8 00 00 00 00 call stbi__err
+ 00ded e9 c7 00 00 00 jmp $LN1@stbi__pars
+$LN94@stbi__pars:
+
+; 5923 : if ((c.type & (1 << 29)) == 0) {
+
+ 00df2 8b 85 ec 05 00
+ 00 mov eax, DWORD PTR c$8[rbp+4]
+ 00df8 25 00 00 00 20 and eax, 536870912 ; 20000000H
+ 00dfd 85 c0 test eax, eax
+ 00dff 0f 85 8f 00 00
+ 00 jne $LN95@stbi__pars
+
+; 5924 : #ifndef STBI_NO_FAILURE_STRINGS
+; 5925 : // not threadsafe
+; 5926 : static char invalid_chunk[] = "XXXX PNG chunk not known";
+; 5927 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24);
+
+ 00e05 8b 85 ec 05 00
+ 00 mov eax, DWORD PTR c$8[rbp+4]
+ 00e0b c1 e8 18 shr eax, 24
+ 00e0e 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00e13 b9 01 00 00 00 mov ecx, 1
+ 00e18 48 6b c9 00 imul rcx, rcx, 0
+ 00e1c 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
+ 00e23 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5928 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16);
+
+ 00e26 8b 85 ec 05 00
+ 00 mov eax, DWORD PTR c$8[rbp+4]
+ 00e2c c1 e8 10 shr eax, 16
+ 00e2f 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00e34 b9 01 00 00 00 mov ecx, 1
+ 00e39 48 6b c9 01 imul rcx, rcx, 1
+ 00e3d 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
+ 00e44 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5929 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8);
+
+ 00e47 8b 85 ec 05 00
+ 00 mov eax, DWORD PTR c$8[rbp+4]
+ 00e4d c1 e8 08 shr eax, 8
+ 00e50 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00e55 b9 01 00 00 00 mov ecx, 1
+ 00e5a 48 6b c9 02 imul rcx, rcx, 2
+ 00e5e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
+ 00e65 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5930 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0);
+
+ 00e68 8b 85 ec 05 00
+ 00 mov eax, DWORD PTR c$8[rbp+4]
+ 00e6e 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00e73 b9 01 00 00 00 mov ecx, 1
+ 00e78 48 6b c9 03 imul rcx, rcx, 3
+ 00e7c 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
+ 00e83 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5931 : #endif
+; 5932 : return stbi__err(invalid_chunk,
+
+ 00e86 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9
+ 00e8d e8 00 00 00 00 call stbi__err
+ 00e92 eb 25 jmp SHORT $LN1@stbi__pars
+$LN95@stbi__pars:
+
+; 5933 : "PNG not supported: unknown PNG chunk type");
+; 5934 : }
+; 5935 : stbi__skip(s, c.length);
+
+ 00e94 8b 95 e8 05 00
+ 00 mov edx, DWORD PTR c$8[rbp]
+ 00e9a 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00ea1 e8 00 00 00 00 call stbi__skip
+ 00ea6 90 npad 1
+$LN5@stbi__pars:
+
+; 5936 : break;
+; 5937 : }
+; 5938 : // end of PNG chunk, read and skip CRC
+; 5939 : stbi__get32be(s);
+
+ 00ea7 48 8b 8d c8 05
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00eae e8 00 00 00 00 call stbi__get32be
+ 00eb3 90 npad 1
+
+; 5940 : }
+
+ 00eb4 e9 69 f2 ff ff jmp $LN2@stbi__pars
+$LN1@stbi__pars:
+
+; 5941 : }
+
+ 00eb9 48 8b f8 mov rdi, rax
+ 00ebc 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
+ 00ec0 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__parse_png_file$rtcFrameData
+ 00ec7 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00ecc 48 8b c7 mov rax, rdi
+ 00ecf 48 8b 8d c0 09
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00ed6 48 33 cd xor rcx, rbp
+ 00ed9 e8 00 00 00 00 call __security_check_cookie
+ 00ede 48 8d a5 d8 09
+ 00 00 lea rsp, QWORD PTR [rbp+2520]
+ 00ee5 5f pop rdi
+ 00ee6 5d pop rbp
+ 00ee7 c3 ret 0
+stbi__parse_png_file ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__de_iphone
+_TEXT SEGMENT
+s$ = 8
+i$ = 36
+pixel_count$ = 68
+p$ = 104
+t$1 = 132
+a$2 = 164
+t$3 = 196
+half$4 = 228
+t$5 = 260
+tv133 = 468
+z$ = 512
+stbi__de_iphone PROC ; COMDAT
+
+; 5644 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 02
+ 00 00 sub rsp, 520 ; 00000208H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 5645 : stbi__context *s = z->s;
+
+ 00020 48 8b 85 00 02
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00027 48 8b 00 mov rax, QWORD PTR [rax]
+ 0002a 48 89 45 08 mov QWORD PTR s$[rbp], rax
+
+; 5646 : stbi__uint32 i, pixel_count = s->img_x * s->img_y;
+
+ 0002e 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00032 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00036 8b 00 mov eax, DWORD PTR [rax]
+ 00038 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 0003c 89 45 44 mov DWORD PTR pixel_count$[rbp], eax
+
+; 5647 : stbi_uc *p = z->out;
+
+ 0003f 48 8b 85 00 02
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00046 48 8b 40 18 mov rax, QWORD PTR [rax+24]
+ 0004a 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5648 :
+; 5649 : if (s->img_out_n == 3) { // convert bgr to rgb
+
+ 0004e 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00052 83 78 0c 03 cmp DWORD PTR [rax+12], 3
+ 00056 75 7c jne SHORT $LN11@stbi__de_i
+
+; 5650 : for (i = 0; i < pixel_count; ++i) {
+
+ 00058 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0005f eb 08 jmp SHORT $LN4@stbi__de_i
+$LN2@stbi__de_i:
+ 00061 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 00064 ff c0 inc eax
+ 00066 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__de_i:
+ 00069 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
+ 0006c 39 45 24 cmp DWORD PTR i$[rbp], eax
+ 0006f 73 5e jae SHORT $LN3@stbi__de_i
+
+; 5651 : stbi_uc t = p[0];
+
+ 00071 b8 01 00 00 00 mov eax, 1
+ 00076 48 6b c0 00 imul rax, rax, 0
+ 0007a 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 0007e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00082 88 85 84 00 00
+ 00 mov BYTE PTR t$1[rbp], al
+
+; 5652 : p[0] = p[2];
+
+ 00088 b8 01 00 00 00 mov eax, 1
+ 0008d 48 6b c0 02 imul rax, rax, 2
+ 00091 b9 01 00 00 00 mov ecx, 1
+ 00096 48 6b c9 00 imul rcx, rcx, 0
+ 0009a 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
+ 0009e 4c 8b 45 68 mov r8, QWORD PTR p$[rbp]
+ 000a2 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 000a7 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5653 : p[2] = t;
+
+ 000aa b8 01 00 00 00 mov eax, 1
+ 000af 48 6b c0 02 imul rax, rax, 2
+ 000b3 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 000b7 0f b6 95 84 00
+ 00 00 movzx edx, BYTE PTR t$1[rbp]
+ 000be 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 5654 : p += 3;
+
+ 000c1 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
+ 000c5 48 83 c0 03 add rax, 3
+ 000c9 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5655 : }
+
+ 000cd eb 92 jmp SHORT $LN2@stbi__de_i
+$LN3@stbi__de_i:
+
+; 5656 : } else {
+
+ 000cf e9 59 02 00 00 jmp $LN12@stbi__de_i
+$LN11@stbi__de_i:
+
+; 5657 : STBI_ASSERT(s->img_out_n == 4);
+
+ 000d4 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 000d8 83 78 0c 04 cmp DWORD PTR [rax+12], 4
+ 000dc 74 1c je SHORT $LN18@stbi__de_i
+ 000de 41 b8 19 16 00
+ 00 mov r8d, 5657 ; 00001619H
+ 000e4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 000eb 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1CE@GKIDJEJM@?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg?$AA_?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN@
+ 000f2 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 000f8 33 c0 xor eax, eax
+$LN18@stbi__de_i:
+
+; 5658 : if (stbi__unpremultiply_on_load) {
+
+ 000fa b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_set
+ 000ff 8b c0 mov eax, eax
+ 00101 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00107 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00110 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00114 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
+ 00118 74 25 je SHORT $LN19@stbi__de_i
+ 0011a b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_local
+ 0011f 8b c0 mov eax, eax
+ 00121 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00127 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00130 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00134 8b 04 08 mov eax, DWORD PTR [rax+rcx]
+ 00137 89 85 d4 01 00
+ 00 mov DWORD PTR tv133[rbp], eax
+ 0013d eb 0c jmp SHORT $LN20@stbi__de_i
+$LN19@stbi__de_i:
+ 0013f 8b 05 00 00 00
+ 00 mov eax, DWORD PTR stbi__unpremultiply_on_load_global
+ 00145 89 85 d4 01 00
+ 00 mov DWORD PTR tv133[rbp], eax
+$LN20@stbi__de_i:
+ 0014b 83 bd d4 01 00
+ 00 00 cmp DWORD PTR tv133[rbp], 0
+ 00152 0f 84 5e 01 00
+ 00 je $LN13@stbi__de_i
+
+; 5659 : // convert bgr to rgb and unpremultiply
+; 5660 : for (i = 0; i < pixel_count; ++i) {
+
+ 00158 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0015f eb 08 jmp SHORT $LN7@stbi__de_i
+$LN5@stbi__de_i:
+ 00161 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 00164 ff c0 inc eax
+ 00166 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__de_i:
+ 00169 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
+ 0016c 39 45 24 cmp DWORD PTR i$[rbp], eax
+ 0016f 0f 83 3f 01 00
+ 00 jae $LN6@stbi__de_i
+
+; 5661 : stbi_uc a = p[3];
+
+ 00175 b8 01 00 00 00 mov eax, 1
+ 0017a 48 6b c0 03 imul rax, rax, 3
+ 0017e 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00182 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00186 88 85 a4 00 00
+ 00 mov BYTE PTR a$2[rbp], al
+
+; 5662 : stbi_uc t = p[0];
+
+ 0018c b8 01 00 00 00 mov eax, 1
+ 00191 48 6b c0 00 imul rax, rax, 0
+ 00195 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00199 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0019d 88 85 c4 00 00
+ 00 mov BYTE PTR t$3[rbp], al
+
+; 5663 : if (a) {
+
+ 001a3 0f b6 85 a4 00
+ 00 00 movzx eax, BYTE PTR a$2[rbp]
+ 001aa 85 c0 test eax, eax
+ 001ac 0f 84 b8 00 00
+ 00 je $LN15@stbi__de_i
+
+; 5664 : stbi_uc half = a / 2;
+
+ 001b2 0f b6 85 a4 00
+ 00 00 movzx eax, BYTE PTR a$2[rbp]
+ 001b9 99 cdq
+ 001ba 2b c2 sub eax, edx
+ 001bc d1 f8 sar eax, 1
+ 001be 88 85 e4 00 00
+ 00 mov BYTE PTR half$4[rbp], al
+
+; 5665 : p[0] = (p[2] * 255 + half) / a;
+
+ 001c4 b8 01 00 00 00 mov eax, 1
+ 001c9 48 6b c0 02 imul rax, rax, 2
+ 001cd 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 001d1 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 001d5 69 c0 ff 00 00
+ 00 imul eax, eax, 255 ; 000000ffH
+ 001db 0f b6 8d e4 00
+ 00 00 movzx ecx, BYTE PTR half$4[rbp]
+ 001e2 03 c1 add eax, ecx
+ 001e4 0f b6 8d a4 00
+ 00 00 movzx ecx, BYTE PTR a$2[rbp]
+ 001eb 99 cdq
+ 001ec f7 f9 idiv ecx
+ 001ee b9 01 00 00 00 mov ecx, 1
+ 001f3 48 6b c9 00 imul rcx, rcx, 0
+ 001f7 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
+ 001fb 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5666 : p[1] = (p[1] * 255 + half) / a;
+
+ 001fe b8 01 00 00 00 mov eax, 1
+ 00203 48 6b c0 01 imul rax, rax, 1
+ 00207 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 0020b 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0020f 69 c0 ff 00 00
+ 00 imul eax, eax, 255 ; 000000ffH
+ 00215 0f b6 8d e4 00
+ 00 00 movzx ecx, BYTE PTR half$4[rbp]
+ 0021c 03 c1 add eax, ecx
+ 0021e 0f b6 8d a4 00
+ 00 00 movzx ecx, BYTE PTR a$2[rbp]
+ 00225 99 cdq
+ 00226 f7 f9 idiv ecx
+ 00228 b9 01 00 00 00 mov ecx, 1
+ 0022d 48 6b c9 01 imul rcx, rcx, 1
+ 00231 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
+ 00235 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5667 : p[2] = (t * 255 + half) / a;
+
+ 00238 0f b6 85 c4 00
+ 00 00 movzx eax, BYTE PTR t$3[rbp]
+ 0023f 69 c0 ff 00 00
+ 00 imul eax, eax, 255 ; 000000ffH
+ 00245 0f b6 8d e4 00
+ 00 00 movzx ecx, BYTE PTR half$4[rbp]
+ 0024c 03 c1 add eax, ecx
+ 0024e 0f b6 8d a4 00
+ 00 00 movzx ecx, BYTE PTR a$2[rbp]
+ 00255 99 cdq
+ 00256 f7 f9 idiv ecx
+ 00258 b9 01 00 00 00 mov ecx, 1
+ 0025d 48 6b c9 02 imul rcx, rcx, 2
+ 00261 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
+ 00265 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5668 : } else {
+
+ 00268 eb 39 jmp SHORT $LN16@stbi__de_i
+$LN15@stbi__de_i:
+
+; 5669 : p[0] = p[2];
+
+ 0026a b8 01 00 00 00 mov eax, 1
+ 0026f 48 6b c0 02 imul rax, rax, 2
+ 00273 b9 01 00 00 00 mov ecx, 1
+ 00278 48 6b c9 00 imul rcx, rcx, 0
+ 0027c 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
+ 00280 4c 8b 45 68 mov r8, QWORD PTR p$[rbp]
+ 00284 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00289 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5670 : p[2] = t;
+
+ 0028c b8 01 00 00 00 mov eax, 1
+ 00291 48 6b c0 02 imul rax, rax, 2
+ 00295 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00299 0f b6 95 c4 00
+ 00 00 movzx edx, BYTE PTR t$3[rbp]
+ 002a0 88 14 01 mov BYTE PTR [rcx+rax], dl
+$LN16@stbi__de_i:
+
+; 5671 : }
+; 5672 : p += 4;
+
+ 002a3 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
+ 002a7 48 83 c0 04 add rax, 4
+ 002ab 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5673 : }
+
+ 002af e9 ad fe ff ff jmp $LN5@stbi__de_i
+$LN6@stbi__de_i:
+
+; 5674 : } else {
+
+ 002b4 eb 77 jmp SHORT $LN14@stbi__de_i
+$LN13@stbi__de_i:
+
+; 5675 : // convert bgr to rgb
+; 5676 : for (i = 0; i < pixel_count; ++i) {
+
+ 002b6 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 002bd eb 08 jmp SHORT $LN10@stbi__de_i
+$LN8@stbi__de_i:
+ 002bf 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 002c2 ff c0 inc eax
+ 002c4 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN10@stbi__de_i:
+ 002c7 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
+ 002ca 39 45 24 cmp DWORD PTR i$[rbp], eax
+ 002cd 73 5e jae SHORT $LN9@stbi__de_i
+
+; 5677 : stbi_uc t = p[0];
+
+ 002cf b8 01 00 00 00 mov eax, 1
+ 002d4 48 6b c0 00 imul rax, rax, 0
+ 002d8 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 002dc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 002e0 88 85 04 01 00
+ 00 mov BYTE PTR t$5[rbp], al
+
+; 5678 : p[0] = p[2];
+
+ 002e6 b8 01 00 00 00 mov eax, 1
+ 002eb 48 6b c0 02 imul rax, rax, 2
+ 002ef b9 01 00 00 00 mov ecx, 1
+ 002f4 48 6b c9 00 imul rcx, rcx, 0
+ 002f8 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
+ 002fc 4c 8b 45 68 mov r8, QWORD PTR p$[rbp]
+ 00300 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00305 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5679 : p[2] = t;
+
+ 00308 b8 01 00 00 00 mov eax, 1
+ 0030d 48 6b c0 02 imul rax, rax, 2
+ 00311 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00315 0f b6 95 04 01
+ 00 00 movzx edx, BYTE PTR t$5[rbp]
+ 0031c 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 5680 : p += 4;
+
+ 0031f 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
+ 00323 48 83 c0 04 add rax, 4
+ 00327 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5681 : }
+
+ 0032b eb 92 jmp SHORT $LN8@stbi__de_i
+$LN9@stbi__de_i:
+$LN14@stbi__de_i:
+$LN12@stbi__de_i:
+
+; 5682 : }
+; 5683 : }
+; 5684 : }
+
+ 0032d 48 8d a5 e8 01
+ 00 00 lea rsp, QWORD PTR [rbp+488]
+ 00334 5f pop rdi
+ 00335 5d pop rbp
+ 00336 c3 ret 0
+stbi__de_iphone ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__expand_png_palette
+_TEXT SEGMENT
+i$ = 4
+pixel_count$ = 36
+p$ = 72
+temp_out$ = 104
+orig$ = 136
+n$1 = 164
+n$2 = 196
+a$ = 448
+palette$ = 456
+len$ = 464
+pal_img_n$ = 472
+stbi__expand_png_palette PROC ; COMDAT
+
+; 5567 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec c8 01
+ 00 00 sub rsp, 456 ; 000001c8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 5568 : stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y;
+
+ 0002f 48 8b 85 c0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00036 48 8b 00 mov rax, QWORD PTR [rax]
+ 00039 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00040 48 8b 09 mov rcx, QWORD PTR [rcx]
+ 00043 8b 00 mov eax, DWORD PTR [rax]
+ 00045 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 00049 89 45 24 mov DWORD PTR pixel_count$[rbp], eax
+
+; 5569 : stbi_uc *p, *temp_out, *orig = a->out;
+
+ 0004c 48 8b 85 c0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00053 48 8b 40 18 mov rax, QWORD PTR [rax+24]
+ 00057 48 89 85 88 00
+ 00 00 mov QWORD PTR orig$[rbp], rax
+
+; 5570 :
+; 5571 : p = (stbi_uc *)stbi__malloc_mad2(pixel_count, pal_img_n, 0);
+
+ 0005e 45 33 c0 xor r8d, r8d
+ 00061 8b 95 d8 01 00
+ 00 mov edx, DWORD PTR pal_img_n$[rbp]
+ 00067 8b 4d 24 mov ecx, DWORD PTR pixel_count$[rbp]
+ 0006a e8 00 00 00 00 call stbi__malloc_mad2
+ 0006f 48 89 45 48 mov QWORD PTR p$[rbp], rax
+
+; 5572 : if (p == NULL)
+
+ 00073 48 83 7d 48 00 cmp QWORD PTR p$[rbp], 0
+ 00078 75 11 jne SHORT $LN8@stbi__expa
+
+; 5573 : return stbi__err("outofmem", "Out of memory");
+
+ 0007a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00081 e8 00 00 00 00 call stbi__err
+ 00086 e9 d1 01 00 00 jmp $LN1@stbi__expa
+$LN8@stbi__expa:
+
+; 5574 :
+; 5575 : // between here and free(out) below, exitting would leak
+; 5576 : temp_out = p;
+
+ 0008b 48 8b 45 48 mov rax, QWORD PTR p$[rbp]
+ 0008f 48 89 45 68 mov QWORD PTR temp_out$[rbp], rax
+
+; 5577 :
+; 5578 : if (pal_img_n == 3) {
+
+ 00093 83 bd d8 01 00
+ 00 03 cmp DWORD PTR pal_img_n$[rbp], 3
+ 0009a 0f 85 ba 00 00
+ 00 jne $LN9@stbi__expa
+
+; 5579 : for (i = 0; i < pixel_count; ++i) {
+
+ 000a0 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 000a7 eb 08 jmp SHORT $LN4@stbi__expa
+$LN2@stbi__expa:
+ 000a9 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000ac ff c0 inc eax
+ 000ae 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__expa:
+ 000b1 8b 45 24 mov eax, DWORD PTR pixel_count$[rbp]
+ 000b4 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 000b7 0f 83 98 00 00
+ 00 jae $LN3@stbi__expa
+
+; 5580 : int n = orig[i] * 4;
+
+ 000bd 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000c0 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR orig$[rbp]
+ 000c7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 000cb c1 e0 02 shl eax, 2
+ 000ce 89 85 a4 00 00
+ 00 mov DWORD PTR n$1[rbp], eax
+
+; 5581 : p[0] = palette[n];
+
+ 000d4 48 63 85 a4 00
+ 00 00 movsxd rax, DWORD PTR n$1[rbp]
+ 000db b9 01 00 00 00 mov ecx, 1
+ 000e0 48 6b c9 00 imul rcx, rcx, 0
+ 000e4 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
+ 000e8 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR palette$[rbp]
+ 000ef 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 000f4 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5582 : p[1] = palette[n + 1];
+
+ 000f7 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR n$1[rbp]
+ 000fd ff c0 inc eax
+ 000ff 48 98 cdqe
+ 00101 b9 01 00 00 00 mov ecx, 1
+ 00106 48 6b c9 01 imul rcx, rcx, 1
+ 0010a 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
+ 0010e 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR palette$[rbp]
+ 00115 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0011a 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5583 : p[2] = palette[n + 2];
+
+ 0011d 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR n$1[rbp]
+ 00123 83 c0 02 add eax, 2
+ 00126 48 98 cdqe
+ 00128 b9 01 00 00 00 mov ecx, 1
+ 0012d 48 6b c9 02 imul rcx, rcx, 2
+ 00131 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
+ 00135 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR palette$[rbp]
+ 0013c 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00141 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5584 : p += 3;
+
+ 00144 48 8b 45 48 mov rax, QWORD PTR p$[rbp]
+ 00148 48 83 c0 03 add rax, 3
+ 0014c 48 89 45 48 mov QWORD PTR p$[rbp], rax
+
+; 5585 : }
+
+ 00150 e9 54 ff ff ff jmp $LN2@stbi__expa
+$LN3@stbi__expa:
+
+; 5586 : } else {
+
+ 00155 e9 dc 00 00 00 jmp $LN10@stbi__expa
+$LN9@stbi__expa:
+
+; 5587 : for (i = 0; i < pixel_count; ++i) {
+
+ 0015a c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00161 eb 08 jmp SHORT $LN7@stbi__expa
+$LN5@stbi__expa:
+ 00163 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00166 ff c0 inc eax
+ 00168 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__expa:
+ 0016b 8b 45 24 mov eax, DWORD PTR pixel_count$[rbp]
+ 0016e 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00171 0f 83 bf 00 00
+ 00 jae $LN6@stbi__expa
+
+; 5588 : int n = orig[i] * 4;
+
+ 00177 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0017a 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR orig$[rbp]
+ 00181 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00185 c1 e0 02 shl eax, 2
+ 00188 89 85 c4 00 00
+ 00 mov DWORD PTR n$2[rbp], eax
+
+; 5589 : p[0] = palette[n];
+
+ 0018e 48 63 85 c4 00
+ 00 00 movsxd rax, DWORD PTR n$2[rbp]
+ 00195 b9 01 00 00 00 mov ecx, 1
+ 0019a 48 6b c9 00 imul rcx, rcx, 0
+ 0019e 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
+ 001a2 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR palette$[rbp]
+ 001a9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 001ae 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5590 : p[1] = palette[n + 1];
+
+ 001b1 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR n$2[rbp]
+ 001b7 ff c0 inc eax
+ 001b9 48 98 cdqe
+ 001bb b9 01 00 00 00 mov ecx, 1
+ 001c0 48 6b c9 01 imul rcx, rcx, 1
+ 001c4 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
+ 001c8 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR palette$[rbp]
+ 001cf 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 001d4 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5591 : p[2] = palette[n + 2];
+
+ 001d7 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR n$2[rbp]
+ 001dd 83 c0 02 add eax, 2
+ 001e0 48 98 cdqe
+ 001e2 b9 01 00 00 00 mov ecx, 1
+ 001e7 48 6b c9 02 imul rcx, rcx, 2
+ 001eb 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
+ 001ef 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR palette$[rbp]
+ 001f6 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 001fb 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5592 : p[3] = palette[n + 3];
+
+ 001fe 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR n$2[rbp]
+ 00204 83 c0 03 add eax, 3
+ 00207 48 98 cdqe
+ 00209 b9 01 00 00 00 mov ecx, 1
+ 0020e 48 6b c9 03 imul rcx, rcx, 3
+ 00212 48 8b 55 48 mov rdx, QWORD PTR p$[rbp]
+ 00216 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR palette$[rbp]
+ 0021d 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00222 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5593 : p += 4;
+
+ 00225 48 8b 45 48 mov rax, QWORD PTR p$[rbp]
+ 00229 48 83 c0 04 add rax, 4
+ 0022d 48 89 45 48 mov QWORD PTR p$[rbp], rax
+
+; 5594 : }
+
+ 00231 e9 2d ff ff ff jmp $LN5@stbi__expa
+$LN6@stbi__expa:
+$LN10@stbi__expa:
+
+; 5595 : }
+; 5596 : STBI_FREE(a->out);
+
+ 00236 48 8b 85 c0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0023d 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
+ 00241 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00247 90 npad 1
+
+; 5597 : a->out = temp_out;
+
+ 00248 48 8b 85 c0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0024f 48 8b 4d 68 mov rcx, QWORD PTR temp_out$[rbp]
+ 00253 48 89 48 18 mov QWORD PTR [rax+24], rcx
+
+; 5598 :
+; 5599 : STBI_NOTUSED(len);
+; 5600 :
+; 5601 : return 1;
+
+ 00257 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__expa:
+
+; 5602 : }
+
+ 0025c 48 8d a5 a8 01
+ 00 00 lea rsp, QWORD PTR [rbp+424]
+ 00263 5f pop rdi
+ 00264 5d pop rbp
+ 00265 c3 ret 0
+stbi__expand_png_palette ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__compute_transparency16
+_TEXT SEGMENT
+s$ = 8
+i$ = 36
+pixel_count$ = 68
+p$ = 104
+tv87 = 308
+z$ = 352
+tc$ = 360
+out_n$ = 368
+stbi__compute_transparency16 PROC ; COMDAT
+
+; 5542 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 68 01
+ 00 00 sub rsp, 360 ; 00000168H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 5543 : stbi__context *s = z->s;
+
+ 0002a 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00031 48 8b 00 mov rax, QWORD PTR [rax]
+ 00034 48 89 45 08 mov QWORD PTR s$[rbp], rax
+
+; 5544 : stbi__uint32 i, pixel_count = s->img_x * s->img_y;
+
+ 00038 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 0003c 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00040 8b 00 mov eax, DWORD PTR [rax]
+ 00042 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 00046 89 45 44 mov DWORD PTR pixel_count$[rbp], eax
+
+; 5545 : stbi__uint16 *p = (stbi__uint16 *)z->out;
+
+ 00049 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00050 48 8b 40 18 mov rax, QWORD PTR [rax+24]
+ 00054 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5546 :
+; 5547 : // compute color-based transparency, assuming we've
+; 5548 : // already got 65535 as the alpha value in the output
+; 5549 : STBI_ASSERT(out_n == 2 || out_n == 4);
+
+ 00058 83 bd 70 01 00
+ 00 02 cmp DWORD PTR out_n$[rbp], 2
+ 0005f 74 25 je SHORT $LN12@stbi__comp
+ 00061 83 bd 70 01 00
+ 00 04 cmp DWORD PTR out_n$[rbp], 4
+ 00068 74 1c je SHORT $LN12@stbi__comp
+ 0006a 41 b8 ad 15 00
+ 00 mov r8d, 5549 ; 000015adH
+ 00070 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00077 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@
+ 0007e ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00084 33 c0 xor eax, eax
+$LN12@stbi__comp:
+
+; 5550 :
+; 5551 : if (out_n == 2) {
+
+ 00086 83 bd 70 01 00
+ 00 02 cmp DWORD PTR out_n$[rbp], 2
+ 0008d 0f 85 83 00 00
+ 00 jne $LN8@stbi__comp
+
+; 5552 : for (i = 0; i < pixel_count; ++i) {
+
+ 00093 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0009a eb 08 jmp SHORT $LN4@stbi__comp
+$LN2@stbi__comp:
+ 0009c 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 0009f ff c0 inc eax
+ 000a1 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__comp:
+ 000a4 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
+ 000a7 39 45 24 cmp DWORD PTR i$[rbp], eax
+ 000aa 73 65 jae SHORT $LN3@stbi__comp
+
+; 5553 : p[1] = (p[0] == tc[0] ? 0 : 65535);
+
+ 000ac b8 02 00 00 00 mov eax, 2
+ 000b1 48 6b c0 00 imul rax, rax, 0
+ 000b5 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 000b9 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 000bd b9 02 00 00 00 mov ecx, 2
+ 000c2 48 6b c9 00 imul rcx, rcx, 0
+ 000c6 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 000cd 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 000d1 3b c1 cmp eax, ecx
+ 000d3 75 0c jne SHORT $LN13@stbi__comp
+ 000d5 c7 85 34 01 00
+ 00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
+ 000df eb 0a jmp SHORT $LN14@stbi__comp
+$LN13@stbi__comp:
+ 000e1 c7 85 34 01 00
+ 00 ff ff 00 00 mov DWORD PTR tv87[rbp], 65535 ; 0000ffffH
+$LN14@stbi__comp:
+ 000eb b8 02 00 00 00 mov eax, 2
+ 000f0 48 6b c0 01 imul rax, rax, 1
+ 000f4 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 000f8 0f b7 95 34 01
+ 00 00 movzx edx, WORD PTR tv87[rbp]
+ 000ff 66 89 14 01 mov WORD PTR [rcx+rax], dx
+
+; 5554 : p += 2;
+
+ 00103 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
+ 00107 48 83 c0 04 add rax, 4
+ 0010b 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5555 : }
+
+ 0010f eb 8b jmp SHORT $LN2@stbi__comp
+$LN3@stbi__comp:
+
+; 5556 : } else {
+
+ 00111 e9 bc 00 00 00 jmp $LN9@stbi__comp
+$LN8@stbi__comp:
+
+; 5557 : for (i = 0; i < pixel_count; ++i) {
+
+ 00116 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0011d eb 08 jmp SHORT $LN7@stbi__comp
+$LN5@stbi__comp:
+ 0011f 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 00122 ff c0 inc eax
+ 00124 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__comp:
+ 00127 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
+ 0012a 39 45 24 cmp DWORD PTR i$[rbp], eax
+ 0012d 0f 83 9f 00 00
+ 00 jae $LN6@stbi__comp
+
+; 5558 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])
+
+ 00133 b8 02 00 00 00 mov eax, 2
+ 00138 48 6b c0 00 imul rax, rax, 0
+ 0013c 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00140 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00144 b9 02 00 00 00 mov ecx, 2
+ 00149 48 6b c9 00 imul rcx, rcx, 0
+ 0014d 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 00154 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 00158 3b c1 cmp eax, ecx
+ 0015a 75 65 jne SHORT $LN10@stbi__comp
+ 0015c b8 02 00 00 00 mov eax, 2
+ 00161 48 6b c0 01 imul rax, rax, 1
+ 00165 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00169 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 0016d b9 02 00 00 00 mov ecx, 2
+ 00172 48 6b c9 01 imul rcx, rcx, 1
+ 00176 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 0017d 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 00181 3b c1 cmp eax, ecx
+ 00183 75 3c jne SHORT $LN10@stbi__comp
+ 00185 b8 02 00 00 00 mov eax, 2
+ 0018a 48 6b c0 02 imul rax, rax, 2
+ 0018e 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00192 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00196 b9 02 00 00 00 mov ecx, 2
+ 0019b 48 6b c9 02 imul rcx, rcx, 2
+ 0019f 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 001a6 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 001aa 3b c1 cmp eax, ecx
+ 001ac 75 13 jne SHORT $LN10@stbi__comp
+
+; 5559 : p[3] = 0;
+
+ 001ae b8 02 00 00 00 mov eax, 2
+ 001b3 48 6b c0 03 imul rax, rax, 3
+ 001b7 33 c9 xor ecx, ecx
+ 001b9 48 8b 55 68 mov rdx, QWORD PTR p$[rbp]
+ 001bd 66 89 0c 02 mov WORD PTR [rdx+rax], cx
+$LN10@stbi__comp:
+
+; 5560 : p += 4;
+
+ 001c1 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
+ 001c5 48 83 c0 08 add rax, 8
+ 001c9 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5561 : }
+
+ 001cd e9 4d ff ff ff jmp $LN5@stbi__comp
+$LN6@stbi__comp:
+$LN9@stbi__comp:
+
+; 5562 : }
+; 5563 : return 1;
+
+ 001d2 b8 01 00 00 00 mov eax, 1
+
+; 5564 : }
+
+ 001d7 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 001de 5f pop rdi
+ 001df 5d pop rbp
+ 001e0 c3 ret 0
+stbi__compute_transparency16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__compute_transparency
+_TEXT SEGMENT
+s$ = 8
+i$ = 36
+pixel_count$ = 68
+p$ = 104
+tv87 = 308
+z$ = 352
+tc$ = 360
+out_n$ = 368
+stbi__compute_transparency PROC ; COMDAT
+
+; 5517 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 68 01
+ 00 00 sub rsp, 360 ; 00000168H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 5518 : stbi__context *s = z->s;
+
+ 0002a 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00031 48 8b 00 mov rax, QWORD PTR [rax]
+ 00034 48 89 45 08 mov QWORD PTR s$[rbp], rax
+
+; 5519 : stbi__uint32 i, pixel_count = s->img_x * s->img_y;
+
+ 00038 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 0003c 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00040 8b 00 mov eax, DWORD PTR [rax]
+ 00042 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 00046 89 45 44 mov DWORD PTR pixel_count$[rbp], eax
+
+; 5520 : stbi_uc *p = z->out;
+
+ 00049 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00050 48 8b 40 18 mov rax, QWORD PTR [rax+24]
+ 00054 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5521 :
+; 5522 : // compute color-based transparency, assuming we've
+; 5523 : // already got 255 as the alpha value in the output
+; 5524 : STBI_ASSERT(out_n == 2 || out_n == 4);
+
+ 00058 83 bd 70 01 00
+ 00 02 cmp DWORD PTR out_n$[rbp], 2
+ 0005f 74 25 je SHORT $LN12@stbi__comp
+ 00061 83 bd 70 01 00
+ 00 04 cmp DWORD PTR out_n$[rbp], 4
+ 00068 74 1c je SHORT $LN12@stbi__comp
+ 0006a 41 b8 94 15 00
+ 00 mov r8d, 5524 ; 00001594H
+ 00070 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00077 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1DC@BMIDKOPK@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA2?$AA?5?$AA?$HM?$AA?$HM?$AA?5?$AAo@
+ 0007e ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00084 33 c0 xor eax, eax
+$LN12@stbi__comp:
+
+; 5525 :
+; 5526 : if (out_n == 2) {
+
+ 00086 83 bd 70 01 00
+ 00 02 cmp DWORD PTR out_n$[rbp], 2
+ 0008d 0f 85 82 00 00
+ 00 jne $LN8@stbi__comp
+
+; 5527 : for (i = 0; i < pixel_count; ++i) {
+
+ 00093 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0009a eb 08 jmp SHORT $LN4@stbi__comp
+$LN2@stbi__comp:
+ 0009c 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 0009f ff c0 inc eax
+ 000a1 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__comp:
+ 000a4 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
+ 000a7 39 45 24 cmp DWORD PTR i$[rbp], eax
+ 000aa 73 64 jae SHORT $LN3@stbi__comp
+
+; 5528 : p[1] = (p[0] == tc[0] ? 0 : 255);
+
+ 000ac b8 01 00 00 00 mov eax, 1
+ 000b1 48 6b c0 00 imul rax, rax, 0
+ 000b5 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 000b9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 000bd b9 01 00 00 00 mov ecx, 1
+ 000c2 48 6b c9 00 imul rcx, rcx, 0
+ 000c6 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 000cd 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000d1 3b c1 cmp eax, ecx
+ 000d3 75 0c jne SHORT $LN13@stbi__comp
+ 000d5 c7 85 34 01 00
+ 00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
+ 000df eb 0a jmp SHORT $LN14@stbi__comp
+$LN13@stbi__comp:
+ 000e1 c7 85 34 01 00
+ 00 ff 00 00 00 mov DWORD PTR tv87[rbp], 255 ; 000000ffH
+$LN14@stbi__comp:
+ 000eb b8 01 00 00 00 mov eax, 1
+ 000f0 48 6b c0 01 imul rax, rax, 1
+ 000f4 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 000f8 0f b6 95 34 01
+ 00 00 movzx edx, BYTE PTR tv87[rbp]
+ 000ff 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 5529 : p += 2;
+
+ 00102 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
+ 00106 48 83 c0 02 add rax, 2
+ 0010a 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5530 : }
+
+ 0010e eb 8c jmp SHORT $LN2@stbi__comp
+$LN3@stbi__comp:
+
+; 5531 : } else {
+
+ 00110 e9 ba 00 00 00 jmp $LN9@stbi__comp
+$LN8@stbi__comp:
+
+; 5532 : for (i = 0; i < pixel_count; ++i) {
+
+ 00115 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0011c eb 08 jmp SHORT $LN7@stbi__comp
+$LN5@stbi__comp:
+ 0011e 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 00121 ff c0 inc eax
+ 00123 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__comp:
+ 00126 8b 45 44 mov eax, DWORD PTR pixel_count$[rbp]
+ 00129 39 45 24 cmp DWORD PTR i$[rbp], eax
+ 0012c 0f 83 9d 00 00
+ 00 jae $LN6@stbi__comp
+
+; 5533 : if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])
+
+ 00132 b8 01 00 00 00 mov eax, 1
+ 00137 48 6b c0 00 imul rax, rax, 0
+ 0013b 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 0013f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00143 b9 01 00 00 00 mov ecx, 1
+ 00148 48 6b c9 00 imul rcx, rcx, 0
+ 0014c 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 00153 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00157 3b c1 cmp eax, ecx
+ 00159 75 63 jne SHORT $LN10@stbi__comp
+ 0015b b8 01 00 00 00 mov eax, 1
+ 00160 48 6b c0 01 imul rax, rax, 1
+ 00164 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00168 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0016c b9 01 00 00 00 mov ecx, 1
+ 00171 48 6b c9 01 imul rcx, rcx, 1
+ 00175 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 0017c 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00180 3b c1 cmp eax, ecx
+ 00182 75 3a jne SHORT $LN10@stbi__comp
+ 00184 b8 01 00 00 00 mov eax, 1
+ 00189 48 6b c0 02 imul rax, rax, 2
+ 0018d 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 00191 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00195 b9 01 00 00 00 mov ecx, 1
+ 0019a 48 6b c9 02 imul rcx, rcx, 2
+ 0019e 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR tc$[rbp]
+ 001a5 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 001a9 3b c1 cmp eax, ecx
+ 001ab 75 11 jne SHORT $LN10@stbi__comp
+
+; 5534 : p[3] = 0;
+
+ 001ad b8 01 00 00 00 mov eax, 1
+ 001b2 48 6b c0 03 imul rax, rax, 3
+ 001b6 48 8b 4d 68 mov rcx, QWORD PTR p$[rbp]
+ 001ba c6 04 01 00 mov BYTE PTR [rcx+rax], 0
+$LN10@stbi__comp:
+
+; 5535 : p += 4;
+
+ 001be 48 8b 45 68 mov rax, QWORD PTR p$[rbp]
+ 001c2 48 83 c0 04 add rax, 4
+ 001c6 48 89 45 68 mov QWORD PTR p$[rbp], rax
+
+; 5536 : }
+
+ 001ca e9 4f ff ff ff jmp $LN5@stbi__comp
+$LN6@stbi__comp:
+$LN9@stbi__comp:
+
+; 5537 : }
+; 5538 : return 1;
+
+ 001cf b8 01 00 00 00 mov eax, 1
+
+; 5539 : }
+
+ 001d4 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 001db 5f pop rdi
+ 001dc 5d pop rbp
+ 001dd c3 ret 0
+stbi__compute_transparency ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__create_png_image
+_TEXT SEGMENT
+bytes$ = 4
+out_bytes$ = 36
+final$ = 72
+p$ = 100
+xorig$7 = 136
+yorig$8 = 200
+xspc$9 = 264
+yspc$10 = 328
+i$11 = 388
+j$12 = 420
+x$13 = 452
+y$14 = 484
+img_len$15 = 516
+out_y$16 = 548
+out_x$17 = 580
+tv65 = 980
+tv280 = 984
+a$ = 1024
+image_data$ = 1032
+image_data_len$ = 1040
+out_n$ = 1048
+depth$ = 1056
+color$ = 1064
+interlaced$ = 1072
+stbi__create_png_image PROC ; COMDAT
+
+; 5468 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 28 04
+ 00 00 sub rsp, 1064 ; 00000428H
+ 0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00022 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
+ 00027 b9 9a 00 00 00 mov ecx, 154 ; 0000009aH
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 48
+ 04 00 00 mov rcx, QWORD PTR [rsp+1096]
+ 0003b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00047 90 npad 1
+
+; 5469 : int bytes = (depth == 16 ? 2 : 1);
+
+ 00048 83 bd 20 04 00
+ 00 10 cmp DWORD PTR depth$[rbp], 16
+ 0004f 75 0c jne SHORT $LN16@stbi__crea
+ 00051 c7 85 d4 03 00
+ 00 02 00 00 00 mov DWORD PTR tv65[rbp], 2
+ 0005b eb 0a jmp SHORT $LN17@stbi__crea
+$LN16@stbi__crea:
+ 0005d c7 85 d4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv65[rbp], 1
+$LN17@stbi__crea:
+ 00067 8b 85 d4 03 00
+ 00 mov eax, DWORD PTR tv65[rbp]
+ 0006d 89 45 04 mov DWORD PTR bytes$[rbp], eax
+
+; 5470 : int out_bytes = out_n * bytes;
+
+ 00070 8b 85 18 04 00
+ 00 mov eax, DWORD PTR out_n$[rbp]
+ 00076 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
+ 0007a 89 45 24 mov DWORD PTR out_bytes$[rbp], eax
+
+; 5471 : stbi_uc *final;
+; 5472 : int p;
+; 5473 : if (!interlaced)
+
+ 0007d 83 bd 30 04 00
+ 00 00 cmp DWORD PTR interlaced$[rbp], 0
+ 00084 75 5b jne SHORT $LN11@stbi__crea
+
+; 5474 : return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x,
+
+ 00086 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0008d 48 8b 00 mov rax, QWORD PTR [rax]
+ 00090 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00097 48 8b 09 mov rcx, QWORD PTR [rcx]
+ 0009a 8b 95 28 04 00
+ 00 mov edx, DWORD PTR color$[rbp]
+ 000a0 89 54 24 38 mov DWORD PTR [rsp+56], edx
+ 000a4 8b 95 20 04 00
+ 00 mov edx, DWORD PTR depth$[rbp]
+ 000aa 89 54 24 30 mov DWORD PTR [rsp+48], edx
+ 000ae 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 000b1 89 44 24 28 mov DWORD PTR [rsp+40], eax
+ 000b5 8b 01 mov eax, DWORD PTR [rcx]
+ 000b7 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 000bb 44 8b 8d 18 04
+ 00 00 mov r9d, DWORD PTR out_n$[rbp]
+ 000c2 44 8b 85 10 04
+ 00 00 mov r8d, DWORD PTR image_data_len$[rbp]
+ 000c9 48 8b 95 08 04
+ 00 00 mov rdx, QWORD PTR image_data$[rbp]
+ 000d0 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000d7 e8 00 00 00 00 call stbi__create_png_image_raw
+ 000dc e9 1b 04 00 00 jmp $LN1@stbi__crea
+$LN11@stbi__crea:
+
+; 5475 : a->s->img_y, depth, color);
+; 5476 :
+; 5477 : // de-interlacing
+; 5478 : final = (stbi_uc *)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0);
+
+ 000e1 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000e8 48 8b 00 mov rax, QWORD PTR [rax]
+ 000eb 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000f2 48 8b 09 mov rcx, QWORD PTR [rcx]
+ 000f5 45 33 c9 xor r9d, r9d
+ 000f8 44 8b 45 24 mov r8d, DWORD PTR out_bytes$[rbp]
+ 000fc 8b 50 04 mov edx, DWORD PTR [rax+4]
+ 000ff 8b 09 mov ecx, DWORD PTR [rcx]
+ 00101 e8 00 00 00 00 call stbi__malloc_mad3
+ 00106 48 89 45 48 mov QWORD PTR final$[rbp], rax
+
+; 5479 : if (!final)
+
+ 0010a 48 83 7d 48 00 cmp QWORD PTR final$[rbp], 0
+ 0010f 75 11 jne SHORT $LN12@stbi__crea
+
+; 5480 : return stbi__err("outofmem", "Out of memory");
+
+ 00111 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00118 e8 00 00 00 00 call stbi__err
+ 0011d e9 da 03 00 00 jmp $LN1@stbi__crea
+$LN12@stbi__crea:
+
+; 5481 : for (p = 0; p < 7; ++p) {
+
+ 00122 c7 45 64 00 00
+ 00 00 mov DWORD PTR p$[rbp], 0
+ 00129 eb 08 jmp SHORT $LN4@stbi__crea
+$LN2@stbi__crea:
+ 0012b 8b 45 64 mov eax, DWORD PTR p$[rbp]
+ 0012e ff c0 inc eax
+ 00130 89 45 64 mov DWORD PTR p$[rbp], eax
+$LN4@stbi__crea:
+ 00133 83 7d 64 07 cmp DWORD PTR p$[rbp], 7
+ 00137 0f 8d ab 03 00
+ 00 jge $LN3@stbi__crea
+
+; 5482 : int xorig[] = { 0, 4, 0, 2, 0, 1, 0 };
+
+ 0013d c7 85 88 00 00
+ 00 00 00 00 00 mov DWORD PTR xorig$7[rbp], 0
+ 00147 c7 85 8c 00 00
+ 00 04 00 00 00 mov DWORD PTR xorig$7[rbp+4], 4
+ 00151 c7 85 90 00 00
+ 00 00 00 00 00 mov DWORD PTR xorig$7[rbp+8], 0
+ 0015b c7 85 94 00 00
+ 00 02 00 00 00 mov DWORD PTR xorig$7[rbp+12], 2
+ 00165 c7 85 98 00 00
+ 00 00 00 00 00 mov DWORD PTR xorig$7[rbp+16], 0
+ 0016f c7 85 9c 00 00
+ 00 01 00 00 00 mov DWORD PTR xorig$7[rbp+20], 1
+ 00179 c7 85 a0 00 00
+ 00 00 00 00 00 mov DWORD PTR xorig$7[rbp+24], 0
+
+; 5483 : int yorig[] = { 0, 0, 4, 0, 2, 0, 1 };
+
+ 00183 c7 85 c8 00 00
+ 00 00 00 00 00 mov DWORD PTR yorig$8[rbp], 0
+ 0018d c7 85 cc 00 00
+ 00 00 00 00 00 mov DWORD PTR yorig$8[rbp+4], 0
+ 00197 c7 85 d0 00 00
+ 00 04 00 00 00 mov DWORD PTR yorig$8[rbp+8], 4
+ 001a1 c7 85 d4 00 00
+ 00 00 00 00 00 mov DWORD PTR yorig$8[rbp+12], 0
+ 001ab c7 85 d8 00 00
+ 00 02 00 00 00 mov DWORD PTR yorig$8[rbp+16], 2
+ 001b5 c7 85 dc 00 00
+ 00 00 00 00 00 mov DWORD PTR yorig$8[rbp+20], 0
+ 001bf c7 85 e0 00 00
+ 00 01 00 00 00 mov DWORD PTR yorig$8[rbp+24], 1
+
+; 5484 : int xspc[] = { 8, 8, 4, 4, 2, 2, 1 };
+
+ 001c9 c7 85 08 01 00
+ 00 08 00 00 00 mov DWORD PTR xspc$9[rbp], 8
+ 001d3 c7 85 0c 01 00
+ 00 08 00 00 00 mov DWORD PTR xspc$9[rbp+4], 8
+ 001dd c7 85 10 01 00
+ 00 04 00 00 00 mov DWORD PTR xspc$9[rbp+8], 4
+ 001e7 c7 85 14 01 00
+ 00 04 00 00 00 mov DWORD PTR xspc$9[rbp+12], 4
+ 001f1 c7 85 18 01 00
+ 00 02 00 00 00 mov DWORD PTR xspc$9[rbp+16], 2
+ 001fb c7 85 1c 01 00
+ 00 02 00 00 00 mov DWORD PTR xspc$9[rbp+20], 2
+ 00205 c7 85 20 01 00
+ 00 01 00 00 00 mov DWORD PTR xspc$9[rbp+24], 1
+
+; 5485 : int yspc[] = { 8, 8, 8, 4, 4, 2, 2 };
+
+ 0020f c7 85 48 01 00
+ 00 08 00 00 00 mov DWORD PTR yspc$10[rbp], 8
+ 00219 c7 85 4c 01 00
+ 00 08 00 00 00 mov DWORD PTR yspc$10[rbp+4], 8
+ 00223 c7 85 50 01 00
+ 00 08 00 00 00 mov DWORD PTR yspc$10[rbp+8], 8
+ 0022d c7 85 54 01 00
+ 00 04 00 00 00 mov DWORD PTR yspc$10[rbp+12], 4
+ 00237 c7 85 58 01 00
+ 00 04 00 00 00 mov DWORD PTR yspc$10[rbp+16], 4
+ 00241 c7 85 5c 01 00
+ 00 02 00 00 00 mov DWORD PTR yspc$10[rbp+20], 2
+ 0024b c7 85 60 01 00
+ 00 02 00 00 00 mov DWORD PTR yspc$10[rbp+24], 2
+
+; 5486 : int i, j, x, y;
+; 5487 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1
+; 5488 : x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p];
+
+ 00255 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0025c 48 8b 00 mov rax, QWORD PTR [rax]
+ 0025f 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 00263 8b 8c 8d 88 00
+ 00 00 mov ecx, DWORD PTR xorig$7[rbp+rcx*4]
+ 0026a 8b 00 mov eax, DWORD PTR [rax]
+ 0026c 2b c1 sub eax, ecx
+ 0026e 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 00272 8b 8c 8d 08 01
+ 00 00 mov ecx, DWORD PTR xspc$9[rbp+rcx*4]
+ 00279 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
+ 0027d 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 00281 33 d2 xor edx, edx
+ 00283 f7 b4 8d 08 01
+ 00 00 div DWORD PTR xspc$9[rbp+rcx*4]
+ 0028a 89 85 c4 01 00
+ 00 mov DWORD PTR x$13[rbp], eax
+
+; 5489 : y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p];
+
+ 00290 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00297 48 8b 00 mov rax, QWORD PTR [rax]
+ 0029a 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 0029e 8b 8c 8d c8 00
+ 00 00 mov ecx, DWORD PTR yorig$8[rbp+rcx*4]
+ 002a5 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 002a8 2b c1 sub eax, ecx
+ 002aa 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 002ae 8b 8c 8d 48 01
+ 00 00 mov ecx, DWORD PTR yspc$10[rbp+rcx*4]
+ 002b5 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
+ 002b9 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 002bd 33 d2 xor edx, edx
+ 002bf f7 b4 8d 48 01
+ 00 00 div DWORD PTR yspc$10[rbp+rcx*4]
+ 002c6 89 85 e4 01 00
+ 00 mov DWORD PTR y$14[rbp], eax
+
+; 5490 : if (x && y) {
+
+ 002cc 83 bd c4 01 00
+ 00 00 cmp DWORD PTR x$13[rbp], 0
+ 002d3 0f 84 0a 02 00
+ 00 je $LN13@stbi__crea
+ 002d9 83 bd e4 01 00
+ 00 00 cmp DWORD PTR y$14[rbp], 0
+ 002e0 0f 84 fd 01 00
+ 00 je $LN13@stbi__crea
+
+; 5491 : stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y;
+
+ 002e6 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 002ed 48 8b 00 mov rax, QWORD PTR [rax]
+ 002f0 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 002f3 0f af 85 c4 01
+ 00 00 imul eax, DWORD PTR x$13[rbp]
+ 002fa 0f af 85 20 04
+ 00 00 imul eax, DWORD PTR depth$[rbp]
+ 00301 83 c0 07 add eax, 7
+ 00304 c1 f8 03 sar eax, 3
+ 00307 ff c0 inc eax
+ 00309 0f af 85 e4 01
+ 00 00 imul eax, DWORD PTR y$14[rbp]
+ 00310 89 85 04 02 00
+ 00 mov DWORD PTR img_len$15[rbp], eax
+
+; 5492 : if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y,
+
+ 00316 8b 85 28 04 00
+ 00 mov eax, DWORD PTR color$[rbp]
+ 0031c 89 44 24 38 mov DWORD PTR [rsp+56], eax
+ 00320 8b 85 20 04 00
+ 00 mov eax, DWORD PTR depth$[rbp]
+ 00326 89 44 24 30 mov DWORD PTR [rsp+48], eax
+ 0032a 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR y$14[rbp]
+ 00330 89 44 24 28 mov DWORD PTR [rsp+40], eax
+ 00334 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR x$13[rbp]
+ 0033a 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0033e 44 8b 8d 18 04
+ 00 00 mov r9d, DWORD PTR out_n$[rbp]
+ 00345 44 8b 85 10 04
+ 00 00 mov r8d, DWORD PTR image_data_len$[rbp]
+ 0034c 48 8b 95 08 04
+ 00 00 mov rdx, QWORD PTR image_data$[rbp]
+ 00353 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0035a e8 00 00 00 00 call stbi__create_png_image_raw
+ 0035f 85 c0 test eax, eax
+ 00361 75 12 jne SHORT $LN14@stbi__crea
+
+; 5493 : depth, color)) {
+; 5494 : STBI_FREE(final);
+
+ 00363 48 8b 4d 48 mov rcx, QWORD PTR final$[rbp]
+ 00367 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0036d 90 npad 1
+
+; 5495 : return 0;
+
+ 0036e 33 c0 xor eax, eax
+ 00370 e9 87 01 00 00 jmp $LN1@stbi__crea
+$LN14@stbi__crea:
+
+; 5496 : }
+; 5497 : for (j = 0; j < y; ++j) {
+
+ 00375 c7 85 a4 01 00
+ 00 00 00 00 00 mov DWORD PTR j$12[rbp], 0
+ 0037f eb 0e jmp SHORT $LN7@stbi__crea
+$LN5@stbi__crea:
+ 00381 8b 85 a4 01 00
+ 00 mov eax, DWORD PTR j$12[rbp]
+ 00387 ff c0 inc eax
+ 00389 89 85 a4 01 00
+ 00 mov DWORD PTR j$12[rbp], eax
+$LN7@stbi__crea:
+ 0038f 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR y$14[rbp]
+ 00395 39 85 a4 01 00
+ 00 cmp DWORD PTR j$12[rbp], eax
+ 0039b 0f 8d 00 01 00
+ 00 jge $LN6@stbi__crea
+
+; 5498 : for (i = 0; i < x; ++i) {
+
+ 003a1 c7 85 84 01 00
+ 00 00 00 00 00 mov DWORD PTR i$11[rbp], 0
+ 003ab eb 0e jmp SHORT $LN10@stbi__crea
+$LN8@stbi__crea:
+ 003ad 8b 85 84 01 00
+ 00 mov eax, DWORD PTR i$11[rbp]
+ 003b3 ff c0 inc eax
+ 003b5 89 85 84 01 00
+ 00 mov DWORD PTR i$11[rbp], eax
+$LN10@stbi__crea:
+ 003bb 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR x$13[rbp]
+ 003c1 39 85 84 01 00
+ 00 cmp DWORD PTR i$11[rbp], eax
+ 003c7 0f 8d cf 00 00
+ 00 jge $LN9@stbi__crea
+
+; 5499 : int out_y = j * yspc[p] + yorig[p];
+
+ 003cd 48 63 45 64 movsxd rax, DWORD PTR p$[rbp]
+ 003d1 8b 8d a4 01 00
+ 00 mov ecx, DWORD PTR j$12[rbp]
+ 003d7 0f af 8c 85 48
+ 01 00 00 imul ecx, DWORD PTR yspc$10[rbp+rax*4]
+ 003df 8b c1 mov eax, ecx
+ 003e1 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 003e5 03 84 8d c8 00
+ 00 00 add eax, DWORD PTR yorig$8[rbp+rcx*4]
+ 003ec 89 85 24 02 00
+ 00 mov DWORD PTR out_y$16[rbp], eax
+
+; 5500 : int out_x = i * xspc[p] + xorig[p];
+
+ 003f2 48 63 45 64 movsxd rax, DWORD PTR p$[rbp]
+ 003f6 8b 8d 84 01 00
+ 00 mov ecx, DWORD PTR i$11[rbp]
+ 003fc 0f af 8c 85 08
+ 01 00 00 imul ecx, DWORD PTR xspc$9[rbp+rax*4]
+ 00404 8b c1 mov eax, ecx
+ 00406 48 63 4d 64 movsxd rcx, DWORD PTR p$[rbp]
+ 0040a 03 84 8d 88 00
+ 00 00 add eax, DWORD PTR xorig$7[rbp+rcx*4]
+ 00411 89 85 44 02 00
+ 00 mov DWORD PTR out_x$17[rbp], eax
+
+; 5501 : memcpy(final + out_y * a->s->img_x * out_bytes +
+
+ 00417 48 63 45 24 movsxd rax, DWORD PTR out_bytes$[rbp]
+ 0041b 8b 8d a4 01 00
+ 00 mov ecx, DWORD PTR j$12[rbp]
+ 00421 0f af 8d c4 01
+ 00 00 imul ecx, DWORD PTR x$13[rbp]
+ 00428 03 8d 84 01 00
+ 00 add ecx, DWORD PTR i$11[rbp]
+ 0042e 0f af 4d 24 imul ecx, DWORD PTR out_bytes$[rbp]
+ 00432 48 63 c9 movsxd rcx, ecx
+ 00435 48 8b 95 00 04
+ 00 00 mov rdx, QWORD PTR a$[rbp]
+ 0043c 48 03 4a 18 add rcx, QWORD PTR [rdx+24]
+ 00440 48 8b 95 00 04
+ 00 00 mov rdx, QWORD PTR a$[rbp]
+ 00447 48 8b 12 mov rdx, QWORD PTR [rdx]
+ 0044a 44 8b 85 24 02
+ 00 00 mov r8d, DWORD PTR out_y$16[rbp]
+ 00451 44 0f af 02 imul r8d, DWORD PTR [rdx]
+ 00455 41 8b d0 mov edx, r8d
+ 00458 0f af 55 24 imul edx, DWORD PTR out_bytes$[rbp]
+ 0045c 8b d2 mov edx, edx
+ 0045e 4c 8b 45 48 mov r8, QWORD PTR final$[rbp]
+ 00462 4c 03 c2 add r8, rdx
+ 00465 49 8b d0 mov rdx, r8
+ 00468 44 8b 85 44 02
+ 00 00 mov r8d, DWORD PTR out_x$17[rbp]
+ 0046f 44 0f af 45 24 imul r8d, DWORD PTR out_bytes$[rbp]
+ 00474 4d 63 c0 movsxd r8, r8d
+ 00477 49 03 d0 add rdx, r8
+ 0047a 48 89 95 d8 03
+ 00 00 mov QWORD PTR tv280[rbp], rdx
+ 00481 4c 8b c0 mov r8, rax
+ 00484 48 8b d1 mov rdx, rcx
+ 00487 48 8b 85 d8 03
+ 00 00 mov rax, QWORD PTR tv280[rbp]
+ 0048e 48 8b c8 mov rcx, rax
+ 00491 e8 00 00 00 00 call memcpy
+ 00496 90 npad 1
+
+; 5502 : out_x * out_bytes,
+; 5503 : a->out + (j * x + i) * out_bytes, out_bytes);
+; 5504 : }
+
+ 00497 e9 11 ff ff ff jmp $LN8@stbi__crea
+$LN9@stbi__crea:
+
+; 5505 : }
+
+ 0049c e9 e0 fe ff ff jmp $LN5@stbi__crea
+$LN6@stbi__crea:
+
+; 5506 : STBI_FREE(a->out);
+
+ 004a1 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 004a8 48 8b 48 18 mov rcx, QWORD PTR [rax+24]
+ 004ac ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 004b2 90 npad 1
+
+; 5507 : image_data += img_len;
+
+ 004b3 8b 85 04 02 00
+ 00 mov eax, DWORD PTR img_len$15[rbp]
+ 004b9 48 8b 8d 08 04
+ 00 00 mov rcx, QWORD PTR image_data$[rbp]
+ 004c0 48 03 c8 add rcx, rax
+ 004c3 48 8b c1 mov rax, rcx
+ 004c6 48 89 85 08 04
+ 00 00 mov QWORD PTR image_data$[rbp], rax
+
+; 5508 : image_data_len -= img_len;
+
+ 004cd 8b 85 04 02 00
+ 00 mov eax, DWORD PTR img_len$15[rbp]
+ 004d3 8b 8d 10 04 00
+ 00 mov ecx, DWORD PTR image_data_len$[rbp]
+ 004d9 2b c8 sub ecx, eax
+ 004db 8b c1 mov eax, ecx
+ 004dd 89 85 10 04 00
+ 00 mov DWORD PTR image_data_len$[rbp], eax
+$LN13@stbi__crea:
+
+; 5509 : }
+; 5510 : }
+
+ 004e3 e9 43 fc ff ff jmp $LN2@stbi__crea
+$LN3@stbi__crea:
+
+; 5511 : a->out = final;
+
+ 004e8 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 004ef 48 8b 4d 48 mov rcx, QWORD PTR final$[rbp]
+ 004f3 48 89 48 18 mov QWORD PTR [rax+24], rcx
+
+; 5512 :
+; 5513 : return 1;
+
+ 004f7 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__crea:
+
+; 5514 : }
+
+ 004fc 48 8b f8 mov rdi, rax
+ 004ff 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
+ 00503 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__create_png_image$rtcFrameData
+ 0050a e8 00 00 00 00 call _RTC_CheckStackVars
+ 0050f 48 8b c7 mov rax, rdi
+ 00512 48 8d a5 e8 03
+ 00 00 lea rsp, QWORD PTR [rbp+1000]
+ 00519 5f pop rdi
+ 0051a 5d pop rbp
+ 0051b c3 ret 0
+stbi__create_png_image ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__create_png_image_raw
+_TEXT SEGMENT
+bytes$ = 4
+s$ = 40
+i$ = 68
+j$ = 100
+stride$ = 132
+img_len$ = 164
+img_width_bytes$ = 196
+filter_buf$ = 232
+all_ok$ = 260
+k$ = 292
+img_n$ = 324
+output_bytes$ = 356
+filter_bytes$ = 388
+width$ = 420
+cur$1 = 456
+prior$2 = 488
+dest$3 = 520
+nk$4 = 548
+filter$5 = 580
+scale$6 = 612
+in$7 = 648
+out$8 = 680
+inb$9 = 708
+nsmp$10 = 740
+dest16$11 = 776
+nsmp$12 = 804
+tv65 = 1204
+tv181 = 1204
+tv287 = 1204
+tv340 = 1204
+tv304 = 1208
+a$ = 1248
+raw$ = 1256
+raw_len$ = 1264
+out_n$ = 1272
+x$ = 1280
+y$ = 1288
+depth$ = 1296
+color$ = 1304
+stbi__create_png_image_raw PROC ; COMDAT
+
+; 5286 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 04
+ 00 00 sub rsp, 1256 ; 000004e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 5287 : int bytes = (depth == 16 ? 2 : 1);
+
+ 0002f 83 bd 10 05 00
+ 00 10 cmp DWORD PTR depth$[rbp], 16
+ 00036 75 0c jne SHORT $LN81@stbi__crea
+ 00038 c7 85 b4 04 00
+ 00 02 00 00 00 mov DWORD PTR tv65[rbp], 2
+ 00042 eb 0a jmp SHORT $LN82@stbi__crea
+$LN81@stbi__crea:
+ 00044 c7 85 b4 04 00
+ 00 01 00 00 00 mov DWORD PTR tv65[rbp], 1
+$LN82@stbi__crea:
+ 0004e 8b 85 b4 04 00
+ 00 mov eax, DWORD PTR tv65[rbp]
+ 00054 89 45 04 mov DWORD PTR bytes$[rbp], eax
+
+; 5288 : stbi__context *s = a->s;
+
+ 00057 48 8b 85 e0 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0005e 48 8b 00 mov rax, QWORD PTR [rax]
+ 00061 48 89 45 28 mov QWORD PTR s$[rbp], rax
+
+; 5289 : stbi__uint32 i, j, stride = x * out_n * bytes;
+
+ 00065 8b 85 00 05 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 0006b 0f af 85 f8 04
+ 00 00 imul eax, DWORD PTR out_n$[rbp]
+ 00072 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
+ 00076 89 85 84 00 00
+ 00 mov DWORD PTR stride$[rbp], eax
+
+; 5290 : stbi__uint32 img_len, img_width_bytes;
+; 5291 : stbi_uc *filter_buf;
+; 5292 : int all_ok = 1;
+
+ 0007c c7 85 04 01 00
+ 00 01 00 00 00 mov DWORD PTR all_ok$[rbp], 1
+
+; 5293 : int k;
+; 5294 : int img_n = s->img_n; // copy it into a local for later
+
+ 00086 48 8b 45 28 mov rax, QWORD PTR s$[rbp]
+ 0008a 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 0008d 89 85 44 01 00
+ 00 mov DWORD PTR img_n$[rbp], eax
+
+; 5295 :
+; 5296 : int output_bytes = out_n * bytes;
+
+ 00093 8b 85 f8 04 00
+ 00 mov eax, DWORD PTR out_n$[rbp]
+ 00099 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
+ 0009d 89 85 64 01 00
+ 00 mov DWORD PTR output_bytes$[rbp], eax
+
+; 5297 : int filter_bytes = img_n * bytes;
+
+ 000a3 8b 85 44 01 00
+ 00 mov eax, DWORD PTR img_n$[rbp]
+ 000a9 0f af 45 04 imul eax, DWORD PTR bytes$[rbp]
+ 000ad 89 85 84 01 00
+ 00 mov DWORD PTR filter_bytes$[rbp], eax
+
+; 5298 : int width = x;
+
+ 000b3 8b 85 00 05 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 000b9 89 85 a4 01 00
+ 00 mov DWORD PTR width$[rbp], eax
+
+; 5299 :
+; 5300 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1);
+
+ 000bf 48 8b 45 28 mov rax, QWORD PTR s$[rbp]
+ 000c3 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 000c6 39 85 f8 04 00
+ 00 cmp DWORD PTR out_n$[rbp], eax
+ 000cc 74 2d je SHORT $LN83@stbi__crea
+ 000ce 48 8b 45 28 mov rax, QWORD PTR s$[rbp]
+ 000d2 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 000d5 ff c0 inc eax
+ 000d7 39 85 f8 04 00
+ 00 cmp DWORD PTR out_n$[rbp], eax
+ 000dd 74 1c je SHORT $LN83@stbi__crea
+ 000df 41 b8 b4 14 00
+ 00 mov r8d, 5300 ; 000014b4H
+ 000e5 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 000ec 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1FG@LGPEHEPM@?$AAo?$AAu?$AAt?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAs?$AA?9?$AA?$DO?$AAi?$AAm?$AAg@
+ 000f3 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 000f9 33 c0 xor eax, eax
+$LN83@stbi__crea:
+
+; 5301 : a->out = (stbi_uc *)stbi__malloc_mad3(x, y, output_bytes,
+
+ 000fb 45 33 c9 xor r9d, r9d
+ 000fe 44 8b 85 64 01
+ 00 00 mov r8d, DWORD PTR output_bytes$[rbp]
+ 00105 8b 95 08 05 00
+ 00 mov edx, DWORD PTR y$[rbp]
+ 0010b 8b 8d 00 05 00
+ 00 mov ecx, DWORD PTR x$[rbp]
+ 00111 e8 00 00 00 00 call stbi__malloc_mad3
+ 00116 48 8b 8d e0 04
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0011d 48 89 41 18 mov QWORD PTR [rcx+24], rax
+
+; 5302 : 0); // extra bytes to write off the end into
+; 5303 : if (!a->out)
+
+ 00121 48 8b 85 e0 04
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00128 48 83 78 18 00 cmp QWORD PTR [rax+24], 0
+ 0012d 75 11 jne SHORT $LN46@stbi__crea
+
+; 5304 : return stbi__err("outofmem", "Out of memory");
+
+ 0012f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00136 e8 00 00 00 00 call stbi__err
+ 0013b e9 3c 0c 00 00 jmp $LN1@stbi__crea
+$LN46@stbi__crea:
+
+; 5305 :
+; 5306 : // note: error exits here don't need to clean up a->out individually,
+; 5307 : // stbi__do_png always does on error.
+; 5308 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7))
+
+ 00140 41 b9 07 00 00
+ 00 mov r9d, 7
+ 00146 44 8b 85 10 05
+ 00 00 mov r8d, DWORD PTR depth$[rbp]
+ 0014d 8b 95 00 05 00
+ 00 mov edx, DWORD PTR x$[rbp]
+ 00153 8b 8d 44 01 00
+ 00 mov ecx, DWORD PTR img_n$[rbp]
+ 00159 e8 00 00 00 00 call stbi__mad3sizes_valid
+ 0015e 85 c0 test eax, eax
+ 00160 75 11 jne SHORT $LN47@stbi__crea
+
+; 5309 : return stbi__err("too large", "Corrupt PNG");
+
+ 00162 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00169 e8 00 00 00 00 call stbi__err
+ 0016e e9 09 0c 00 00 jmp $LN1@stbi__crea
+$LN47@stbi__crea:
+
+; 5310 : img_width_bytes = (((img_n * x * depth) + 7) >> 3);
+
+ 00173 8b 85 44 01 00
+ 00 mov eax, DWORD PTR img_n$[rbp]
+ 00179 0f af 85 00 05
+ 00 00 imul eax, DWORD PTR x$[rbp]
+ 00180 0f af 85 10 05
+ 00 00 imul eax, DWORD PTR depth$[rbp]
+ 00187 83 c0 07 add eax, 7
+ 0018a c1 e8 03 shr eax, 3
+ 0018d 89 85 c4 00 00
+ 00 mov DWORD PTR img_width_bytes$[rbp], eax
+
+; 5311 : if (!stbi__mad2sizes_valid(img_width_bytes, y, img_width_bytes))
+
+ 00193 44 8b 85 c4 00
+ 00 00 mov r8d, DWORD PTR img_width_bytes$[rbp]
+ 0019a 8b 95 08 05 00
+ 00 mov edx, DWORD PTR y$[rbp]
+ 001a0 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR img_width_bytes$[rbp]
+ 001a6 e8 00 00 00 00 call stbi__mad2sizes_valid
+ 001ab 85 c0 test eax, eax
+ 001ad 75 11 jne SHORT $LN48@stbi__crea
+
+; 5312 : return stbi__err("too large", "Corrupt PNG");
+
+ 001af 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 001b6 e8 00 00 00 00 call stbi__err
+ 001bb e9 bc 0b 00 00 jmp $LN1@stbi__crea
+$LN48@stbi__crea:
+
+; 5313 : img_len = (img_width_bytes + 1) * y;
+
+ 001c0 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR img_width_bytes$[rbp]
+ 001c6 ff c0 inc eax
+ 001c8 0f af 85 08 05
+ 00 00 imul eax, DWORD PTR y$[rbp]
+ 001cf 89 85 a4 00 00
+ 00 mov DWORD PTR img_len$[rbp], eax
+
+; 5314 :
+; 5315 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs,
+; 5316 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros),
+; 5317 : // so just check for raw_len < img_len always.
+; 5318 : if (raw_len < img_len)
+
+ 001d5 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR img_len$[rbp]
+ 001db 39 85 f0 04 00
+ 00 cmp DWORD PTR raw_len$[rbp], eax
+ 001e1 73 11 jae SHORT $LN49@stbi__crea
+
+; 5319 : return stbi__err("not enough pixels", "Corrupt PNG");
+
+ 001e3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BC@BHMPBBMG@not?5enough?5pixels@
+ 001ea e8 00 00 00 00 call stbi__err
+ 001ef e9 88 0b 00 00 jmp $LN1@stbi__crea
+$LN49@stbi__crea:
+
+; 5320 :
+; 5321 : // Allocate two scan lines worth of filter workspace buffer.
+; 5322 : filter_buf = (stbi_uc *)stbi__malloc_mad2(img_width_bytes, 2, 0);
+
+ 001f4 45 33 c0 xor r8d, r8d
+ 001f7 ba 02 00 00 00 mov edx, 2
+ 001fc 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR img_width_bytes$[rbp]
+ 00202 e8 00 00 00 00 call stbi__malloc_mad2
+ 00207 48 89 85 e8 00
+ 00 00 mov QWORD PTR filter_buf$[rbp], rax
+
+; 5323 : if (!filter_buf)
+
+ 0020e 48 83 bd e8 00
+ 00 00 00 cmp QWORD PTR filter_buf$[rbp], 0
+ 00216 75 11 jne SHORT $LN50@stbi__crea
+
+; 5324 : return stbi__err("outofmem", "Out of memory");
+
+ 00218 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0021f e8 00 00 00 00 call stbi__err
+ 00224 e9 53 0b 00 00 jmp $LN1@stbi__crea
+$LN50@stbi__crea:
+
+; 5325 :
+; 5326 : // Filtering for low-bit-depth images
+; 5327 : if (depth < 8) {
+
+ 00229 83 bd 10 05 00
+ 00 08 cmp DWORD PTR depth$[rbp], 8
+ 00230 7d 16 jge SHORT $LN51@stbi__crea
+
+; 5328 : filter_bytes = 1;
+
+ 00232 c7 85 84 01 00
+ 00 01 00 00 00 mov DWORD PTR filter_bytes$[rbp], 1
+
+; 5329 : width = img_width_bytes;
+
+ 0023c 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR img_width_bytes$[rbp]
+ 00242 89 85 a4 01 00
+ 00 mov DWORD PTR width$[rbp], eax
+$LN51@stbi__crea:
+
+; 5330 : }
+; 5331 :
+; 5332 : for (j = 0; j < y; ++j) {
+
+ 00248 c7 45 64 00 00
+ 00 00 mov DWORD PTR j$[rbp], 0
+ 0024f eb 08 jmp SHORT $LN4@stbi__crea
+$LN2@stbi__crea:
+ 00251 8b 45 64 mov eax, DWORD PTR j$[rbp]
+ 00254 ff c0 inc eax
+ 00256 89 45 64 mov DWORD PTR j$[rbp], eax
+$LN4@stbi__crea:
+ 00259 8b 85 08 05 00
+ 00 mov eax, DWORD PTR y$[rbp]
+ 0025f 39 45 64 cmp DWORD PTR j$[rbp], eax
+ 00262 0f 83 f4 0a 00
+ 00 jae $LN3@stbi__crea
+
+; 5333 : // cur/prior filter buffers alternate
+; 5334 : stbi_uc *cur = filter_buf + (j & 1) * img_width_bytes;
+
+ 00268 8b 45 64 mov eax, DWORD PTR j$[rbp]
+ 0026b 83 e0 01 and eax, 1
+ 0026e 0f af 85 c4 00
+ 00 00 imul eax, DWORD PTR img_width_bytes$[rbp]
+ 00275 8b c0 mov eax, eax
+ 00277 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR filter_buf$[rbp]
+ 0027e 48 03 c8 add rcx, rax
+ 00281 48 8b c1 mov rax, rcx
+ 00284 48 89 85 c8 01
+ 00 00 mov QWORD PTR cur$1[rbp], rax
+
+; 5335 : stbi_uc *prior = filter_buf + (~j & 1) * img_width_bytes;
+
+ 0028b 8b 45 64 mov eax, DWORD PTR j$[rbp]
+ 0028e f7 d0 not eax
+ 00290 83 e0 01 and eax, 1
+ 00293 0f af 85 c4 00
+ 00 00 imul eax, DWORD PTR img_width_bytes$[rbp]
+ 0029a 8b c0 mov eax, eax
+ 0029c 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR filter_buf$[rbp]
+ 002a3 48 03 c8 add rcx, rax
+ 002a6 48 8b c1 mov rax, rcx
+ 002a9 48 89 85 e8 01
+ 00 00 mov QWORD PTR prior$2[rbp], rax
+
+; 5336 : stbi_uc *dest = a->out + stride * j;
+
+ 002b0 8b 85 84 00 00
+ 00 mov eax, DWORD PTR stride$[rbp]
+ 002b6 0f af 45 64 imul eax, DWORD PTR j$[rbp]
+ 002ba 8b c0 mov eax, eax
+ 002bc 48 8b 8d e0 04
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 002c3 48 03 41 18 add rax, QWORD PTR [rcx+24]
+ 002c7 48 89 85 08 02
+ 00 00 mov QWORD PTR dest$3[rbp], rax
+
+; 5337 : int nk = width * filter_bytes;
+
+ 002ce 8b 85 a4 01 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 002d4 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR filter_bytes$[rbp]
+ 002db 89 85 24 02 00
+ 00 mov DWORD PTR nk$4[rbp], eax
+
+; 5338 : int filter = *raw++;
+
+ 002e1 48 8b 85 e8 04
+ 00 00 mov rax, QWORD PTR raw$[rbp]
+ 002e8 0f b6 00 movzx eax, BYTE PTR [rax]
+ 002eb 89 85 44 02 00
+ 00 mov DWORD PTR filter$5[rbp], eax
+ 002f1 48 8b 85 e8 04
+ 00 00 mov rax, QWORD PTR raw$[rbp]
+ 002f8 48 ff c0 inc rax
+ 002fb 48 89 85 e8 04
+ 00 00 mov QWORD PTR raw$[rbp], rax
+
+; 5339 :
+; 5340 : // check filter type
+; 5341 : if (filter > 4) {
+
+ 00302 83 bd 44 02 00
+ 00 04 cmp DWORD PTR filter$5[rbp], 4
+ 00309 7e 17 jle SHORT $LN52@stbi__crea
+
+; 5342 : all_ok = stbi__err("invalid filter", "Corrupt PNG");
+
+ 0030b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@FBBCPGMN@invalid?5filter@
+ 00312 e8 00 00 00 00 call stbi__err
+ 00317 89 85 04 01 00
+ 00 mov DWORD PTR all_ok$[rbp], eax
+
+; 5343 : break;
+
+ 0031d e9 3a 0a 00 00 jmp $LN3@stbi__crea
+$LN52@stbi__crea:
+
+; 5344 : }
+; 5345 :
+; 5346 : // if first row, use special filter that doesn't sample previous row
+; 5347 : if (j == 0)
+
+ 00322 83 7d 64 00 cmp DWORD PTR j$[rbp], 0
+ 00326 75 18 jne SHORT $LN53@stbi__crea
+
+; 5348 : filter = first_row_filter[filter];
+
+ 00328 48 63 85 44 02
+ 00 00 movsxd rax, DWORD PTR filter$5[rbp]
+ 0032f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:first_row_filter
+ 00336 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0033a 89 85 44 02 00
+ 00 mov DWORD PTR filter$5[rbp], eax
+$LN53@stbi__crea:
+
+; 5349 :
+; 5350 : // perform actual filtering
+; 5351 : switch (filter) {
+
+ 00340 8b 85 44 02 00
+ 00 mov eax, DWORD PTR filter$5[rbp]
+ 00346 89 85 b4 04 00
+ 00 mov DWORD PTR tv181[rbp], eax
+ 0034c 83 bd b4 04 00
+ 00 05 cmp DWORD PTR tv181[rbp], 5
+ 00353 0f 87 0d 04 00
+ 00 ja $LN5@stbi__crea
+ 00359 48 63 85 b4 04
+ 00 00 movsxd rax, DWORD PTR tv181[rbp]
+ 00360 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__ImageBase
+ 00367 8b 84 81 00 00
+ 00 00 mov eax, DWORD PTR $LN89@stbi__crea[rcx+rax*4]
+ 0036e 48 03 c1 add rax, rcx
+ 00371 ff e0 jmp rax
+$LN54@stbi__crea:
+
+; 5352 : case STBI__F_none:
+; 5353 : memcpy(cur, raw, nk);
+
+ 00373 48 63 85 24 02
+ 00 00 movsxd rax, DWORD PTR nk$4[rbp]
+ 0037a 4c 8b c0 mov r8, rax
+ 0037d 48 8b 95 e8 04
+ 00 00 mov rdx, QWORD PTR raw$[rbp]
+ 00384 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 0038b e8 00 00 00 00 call memcpy
+ 00390 90 npad 1
+
+; 5354 : break;
+
+ 00391 e9 d0 03 00 00 jmp $LN5@stbi__crea
+$LN55@stbi__crea:
+
+; 5355 : case STBI__F_sub:
+; 5356 : memcpy(cur, raw, filter_bytes);
+
+ 00396 48 63 85 84 01
+ 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp]
+ 0039d 4c 8b c0 mov r8, rax
+ 003a0 48 8b 95 e8 04
+ 00 00 mov rdx, QWORD PTR raw$[rbp]
+ 003a7 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 003ae e8 00 00 00 00 call memcpy
+ 003b3 90 npad 1
+
+; 5357 : for (k = filter_bytes; k < nk; ++k)
+
+ 003b4 8b 85 84 01 00
+ 00 mov eax, DWORD PTR filter_bytes$[rbp]
+ 003ba 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+ 003c0 eb 0e jmp SHORT $LN9@stbi__crea
+$LN7@stbi__crea:
+ 003c2 8b 85 24 01 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 003c8 ff c0 inc eax
+ 003ca 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN9@stbi__crea:
+ 003d0 8b 85 24 02 00
+ 00 mov eax, DWORD PTR nk$4[rbp]
+ 003d6 39 85 24 01 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 003dc 7d 4a jge SHORT $LN8@stbi__crea
+
+; 5358 : cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]);
+
+ 003de 48 63 85 24 01
+ 00 00 movsxd rax, DWORD PTR k$[rbp]
+ 003e5 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 003ec 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 003f0 8b 8d 84 01 00
+ 00 mov ecx, DWORD PTR filter_bytes$[rbp]
+ 003f6 8b 95 24 01 00
+ 00 mov edx, DWORD PTR k$[rbp]
+ 003fc 2b d1 sub edx, ecx
+ 003fe 8b ca mov ecx, edx
+ 00400 48 63 c9 movsxd rcx, ecx
+ 00403 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 0040a 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0040e 03 c1 add eax, ecx
+ 00410 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00415 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 0041c 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00423 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00426 eb 9a jmp SHORT $LN7@stbi__crea
+$LN8@stbi__crea:
+
+; 5359 : break;
+
+ 00428 e9 39 03 00 00 jmp $LN5@stbi__crea
+$LN56@stbi__crea:
+
+; 5360 : case STBI__F_up:
+; 5361 : for (k = 0; k < nk; ++k)
+
+ 0042d c7 85 24 01 00
+ 00 00 00 00 00 mov DWORD PTR k$[rbp], 0
+ 00437 eb 0e jmp SHORT $LN12@stbi__crea
+$LN10@stbi__crea:
+ 00439 8b 85 24 01 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 0043f ff c0 inc eax
+ 00441 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN12@stbi__crea:
+ 00447 8b 85 24 02 00
+ 00 mov eax, DWORD PTR nk$4[rbp]
+ 0044d 39 85 24 01 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 00453 7d 3e jge SHORT $LN11@stbi__crea
+
+; 5362 : cur[k] = STBI__BYTECAST(raw[k] + prior[k]);
+
+ 00455 48 63 85 24 01
+ 00 00 movsxd rax, DWORD PTR k$[rbp]
+ 0045c 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 00463 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00467 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 0046e 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR prior$2[rbp]
+ 00475 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00479 03 c1 add eax, ecx
+ 0047b 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00480 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 00487 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 0048e 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00491 eb a6 jmp SHORT $LN10@stbi__crea
+$LN11@stbi__crea:
+
+; 5363 : break;
+
+ 00493 e9 ce 02 00 00 jmp $LN5@stbi__crea
+$LN57@stbi__crea:
+
+; 5364 : case STBI__F_avg:
+; 5365 : for (k = 0; k < filter_bytes; ++k)
+
+ 00498 c7 85 24 01 00
+ 00 00 00 00 00 mov DWORD PTR k$[rbp], 0
+ 004a2 eb 0e jmp SHORT $LN15@stbi__crea
+$LN13@stbi__crea:
+ 004a4 8b 85 24 01 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 004aa ff c0 inc eax
+ 004ac 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN15@stbi__crea:
+ 004b2 8b 85 84 01 00
+ 00 mov eax, DWORD PTR filter_bytes$[rbp]
+ 004b8 39 85 24 01 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 004be 7d 40 jge SHORT $LN14@stbi__crea
+
+; 5366 : cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1));
+
+ 004c0 48 63 85 24 01
+ 00 00 movsxd rax, DWORD PTR k$[rbp]
+ 004c7 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 004ce 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 004d2 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 004d9 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR prior$2[rbp]
+ 004e0 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 004e4 d1 f9 sar ecx, 1
+ 004e6 03 c1 add eax, ecx
+ 004e8 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 004ed 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 004f4 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 004fb 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 004fe eb a4 jmp SHORT $LN13@stbi__crea
+$LN14@stbi__crea:
+
+; 5367 : for (k = filter_bytes; k < nk; ++k)
+
+ 00500 8b 85 84 01 00
+ 00 mov eax, DWORD PTR filter_bytes$[rbp]
+ 00506 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+ 0050c eb 0e jmp SHORT $LN18@stbi__crea
+$LN16@stbi__crea:
+ 0050e 8b 85 24 01 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 00514 ff c0 inc eax
+ 00516 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN18@stbi__crea:
+ 0051c 8b 85 24 02 00
+ 00 mov eax, DWORD PTR nk$4[rbp]
+ 00522 39 85 24 01 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 00528 7d 64 jge SHORT $LN17@stbi__crea
+
+; 5368 : cur[k] = STBI__BYTECAST(raw[k] +
+
+ 0052a 48 63 85 24 01
+ 00 00 movsxd rax, DWORD PTR k$[rbp]
+ 00531 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 00538 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0053c 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 00543 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR prior$2[rbp]
+ 0054a 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0054e 8b 95 84 01 00
+ 00 mov edx, DWORD PTR filter_bytes$[rbp]
+ 00554 44 8b 85 24 01
+ 00 00 mov r8d, DWORD PTR k$[rbp]
+ 0055b 44 2b c2 sub r8d, edx
+ 0055e 41 8b d0 mov edx, r8d
+ 00561 48 63 d2 movsxd rdx, edx
+ 00564 4c 8b 85 c8 01
+ 00 00 mov r8, QWORD PTR cur$1[rbp]
+ 0056b 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
+ 00570 03 ca add ecx, edx
+ 00572 d1 f9 sar ecx, 1
+ 00574 03 c1 add eax, ecx
+ 00576 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 0057b 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 00582 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00589 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 0058c eb 80 jmp SHORT $LN16@stbi__crea
+$LN17@stbi__crea:
+
+; 5369 : ((prior[k] + cur[k - filter_bytes]) >> 1));
+; 5370 : break;
+
+ 0058e e9 d3 01 00 00 jmp $LN5@stbi__crea
+$LN58@stbi__crea:
+
+; 5371 : case STBI__F_paeth:
+; 5372 : for (k = 0; k < filter_bytes; ++k)
+
+ 00593 c7 85 24 01 00
+ 00 00 00 00 00 mov DWORD PTR k$[rbp], 0
+ 0059d eb 0e jmp SHORT $LN21@stbi__crea
+$LN19@stbi__crea:
+ 0059f 8b 85 24 01 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 005a5 ff c0 inc eax
+ 005a7 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN21@stbi__crea:
+ 005ad 8b 85 84 01 00
+ 00 mov eax, DWORD PTR filter_bytes$[rbp]
+ 005b3 39 85 24 01 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 005b9 7d 3e jge SHORT $LN20@stbi__crea
+
+; 5373 : cur[k] = STBI__BYTECAST(
+
+ 005bb 48 63 85 24 01
+ 00 00 movsxd rax, DWORD PTR k$[rbp]
+ 005c2 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 005c9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 005cd 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 005d4 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR prior$2[rbp]
+ 005db 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 005df 03 c1 add eax, ecx
+ 005e1 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 005e6 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 005ed 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 005f4 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 005f7 eb a6 jmp SHORT $LN19@stbi__crea
+$LN20@stbi__crea:
+
+; 5374 : raw[k] + prior[k]); // prior[k] == stbi__paeth(0,prior[k],0)
+; 5375 : for (k = filter_bytes; k < nk; ++k)
+
+ 005f9 8b 85 84 01 00
+ 00 mov eax, DWORD PTR filter_bytes$[rbp]
+ 005ff 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+ 00605 eb 0e jmp SHORT $LN24@stbi__crea
+$LN22@stbi__crea:
+ 00607 8b 85 24 01 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 0060d ff c0 inc eax
+ 0060f 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN24@stbi__crea:
+ 00615 8b 85 24 02 00
+ 00 mov eax, DWORD PTR nk$4[rbp]
+ 0061b 39 85 24 01 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 00621 0f 8d a6 00 00
+ 00 jge $LN23@stbi__crea
+
+; 5376 : cur[k] = STBI__BYTECAST(raw[k] +
+
+ 00627 48 63 85 24 01
+ 00 00 movsxd rax, DWORD PTR k$[rbp]
+ 0062e 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 00635 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00639 89 85 b4 04 00
+ 00 mov DWORD PTR tv287[rbp], eax
+ 0063f 8b 8d 84 01 00
+ 00 mov ecx, DWORD PTR filter_bytes$[rbp]
+ 00645 8b 95 24 01 00
+ 00 mov edx, DWORD PTR k$[rbp]
+ 0064b 2b d1 sub edx, ecx
+ 0064d 8b ca mov ecx, edx
+ 0064f 48 63 c9 movsxd rcx, ecx
+ 00652 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR prior$2[rbp]
+ 00659 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0065d 48 63 95 24 01
+ 00 00 movsxd rdx, DWORD PTR k$[rbp]
+ 00664 4c 8b 85 e8 01
+ 00 00 mov r8, QWORD PTR prior$2[rbp]
+ 0066b 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
+ 00670 44 8b 85 84 01
+ 00 00 mov r8d, DWORD PTR filter_bytes$[rbp]
+ 00677 44 8b 8d 24 01
+ 00 00 mov r9d, DWORD PTR k$[rbp]
+ 0067e 45 2b c8 sub r9d, r8d
+ 00681 45 8b c1 mov r8d, r9d
+ 00684 4d 63 c0 movsxd r8, r8d
+ 00687 4c 8b 8d c8 01
+ 00 00 mov r9, QWORD PTR cur$1[rbp]
+ 0068e 47 0f b6 04 01 movzx r8d, BYTE PTR [r9+r8]
+ 00693 44 89 85 b8 04
+ 00 00 mov DWORD PTR tv304[rbp], r8d
+ 0069a 44 8b c1 mov r8d, ecx
+ 0069d 8b 8d b8 04 00
+ 00 mov ecx, DWORD PTR tv304[rbp]
+ 006a3 e8 00 00 00 00 call stbi__paeth
+ 006a8 8b 8d b4 04 00
+ 00 mov ecx, DWORD PTR tv287[rbp]
+ 006ae 03 c8 add ecx, eax
+ 006b0 8b c1 mov eax, ecx
+ 006b2 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 006b7 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 006be 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 006c5 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 006c8 e9 3a ff ff ff jmp $LN22@stbi__crea
+$LN23@stbi__crea:
+
+; 5377 : stbi__paeth(cur[k - filter_bytes], prior[k],
+; 5378 : prior[k - filter_bytes]));
+; 5379 : break;
+
+ 006cd e9 94 00 00 00 jmp $LN5@stbi__crea
+$LN59@stbi__crea:
+
+; 5380 : case STBI__F_avg_first:
+; 5381 : memcpy(cur, raw, filter_bytes);
+
+ 006d2 48 63 85 84 01
+ 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp]
+ 006d9 4c 8b c0 mov r8, rax
+ 006dc 48 8b 95 e8 04
+ 00 00 mov rdx, QWORD PTR raw$[rbp]
+ 006e3 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 006ea e8 00 00 00 00 call memcpy
+ 006ef 90 npad 1
+
+; 5382 : for (k = filter_bytes; k < nk; ++k)
+
+ 006f0 8b 85 84 01 00
+ 00 mov eax, DWORD PTR filter_bytes$[rbp]
+ 006f6 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+ 006fc eb 0e jmp SHORT $LN27@stbi__crea
+$LN25@stbi__crea:
+ 006fe 8b 85 24 01 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 00704 ff c0 inc eax
+ 00706 89 85 24 01 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN27@stbi__crea:
+ 0070c 8b 85 24 02 00
+ 00 mov eax, DWORD PTR nk$4[rbp]
+ 00712 39 85 24 01 00
+ 00 cmp DWORD PTR k$[rbp], eax
+ 00718 7d 4c jge SHORT $LN26@stbi__crea
+
+; 5383 : cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1));
+
+ 0071a 48 63 85 24 01
+ 00 00 movsxd rax, DWORD PTR k$[rbp]
+ 00721 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 00728 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0072c 8b 8d 84 01 00
+ 00 mov ecx, DWORD PTR filter_bytes$[rbp]
+ 00732 8b 95 24 01 00
+ 00 mov edx, DWORD PTR k$[rbp]
+ 00738 2b d1 sub edx, ecx
+ 0073a 8b ca mov ecx, edx
+ 0073c 48 63 c9 movsxd rcx, ecx
+ 0073f 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00746 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0074a d1 f9 sar ecx, 1
+ 0074c 03 c1 add eax, ecx
+ 0074e 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00753 48 63 8d 24 01
+ 00 00 movsxd rcx, DWORD PTR k$[rbp]
+ 0075a 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00761 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00764 eb 98 jmp SHORT $LN25@stbi__crea
+$LN26@stbi__crea:
+$LN5@stbi__crea:
+
+; 5384 : break;
+; 5385 : }
+; 5386 :
+; 5387 : raw += nk;
+
+ 00766 48 63 85 24 02
+ 00 00 movsxd rax, DWORD PTR nk$4[rbp]
+ 0076d 48 8b 8d e8 04
+ 00 00 mov rcx, QWORD PTR raw$[rbp]
+ 00774 48 03 c8 add rcx, rax
+ 00777 48 8b c1 mov rax, rcx
+ 0077a 48 89 85 e8 04
+ 00 00 mov QWORD PTR raw$[rbp], rax
+
+; 5388 :
+; 5389 : // expand decoded bits in cur to dest, also adding an extra alpha channel if desired
+; 5390 : if (depth < 8) {
+
+ 00781 83 bd 10 05 00
+ 00 08 cmp DWORD PTR depth$[rbp], 8
+ 00788 0f 8d 82 02 00
+ 00 jge $LN60@stbi__crea
+
+; 5391 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] :
+
+ 0078e 83 bd 18 05 00
+ 00 00 cmp DWORD PTR color$[rbp], 0
+ 00795 75 1a jne SHORT $LN84@stbi__crea
+ 00797 48 63 85 10 05
+ 00 00 movsxd rax, DWORD PTR depth$[rbp]
+ 0079e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__depth_scale_table
+ 007a5 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 007a9 89 85 b4 04 00
+ 00 mov DWORD PTR tv340[rbp], eax
+ 007af eb 0a jmp SHORT $LN85@stbi__crea
+$LN84@stbi__crea:
+ 007b1 c7 85 b4 04 00
+ 00 01 00 00 00 mov DWORD PTR tv340[rbp], 1
+$LN85@stbi__crea:
+ 007bb 0f b6 85 b4 04
+ 00 00 movzx eax, BYTE PTR tv340[rbp]
+ 007c2 88 85 64 02 00
+ 00 mov BYTE PTR scale$6[rbp], al
+
+; 5392 : 1; // scale grayscale values to 0..255 range
+; 5393 : stbi_uc *in = cur;
+
+ 007c8 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR cur$1[rbp]
+ 007cf 48 89 85 88 02
+ 00 00 mov QWORD PTR in$7[rbp], rax
+
+; 5394 : stbi_uc *out = dest;
+
+ 007d6 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR dest$3[rbp]
+ 007dd 48 89 85 a8 02
+ 00 00 mov QWORD PTR out$8[rbp], rax
+
+; 5395 : stbi_uc inb = 0;
+
+ 007e4 c6 85 c4 02 00
+ 00 00 mov BYTE PTR inb$9[rbp], 0
+
+; 5396 : stbi__uint32 nsmp = x * img_n;
+
+ 007eb 8b 85 00 05 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 007f1 0f af 85 44 01
+ 00 00 imul eax, DWORD PTR img_n$[rbp]
+ 007f8 89 85 e4 02 00
+ 00 mov DWORD PTR nsmp$10[rbp], eax
+
+; 5397 :
+; 5398 : // expand bits to bytes first
+; 5399 : if (depth == 4) {
+
+ 007fe 83 bd 10 05 00
+ 00 04 cmp DWORD PTR depth$[rbp], 4
+ 00805 0f 85 8c 00 00
+ 00 jne $LN62@stbi__crea
+
+; 5400 : for (i = 0; i < nsmp; ++i) {
+
+ 0080b c7 45 44 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00812 eb 08 jmp SHORT $LN30@stbi__crea
+$LN28@stbi__crea:
+ 00814 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 00817 ff c0 inc eax
+ 00819 89 45 44 mov DWORD PTR i$[rbp], eax
+$LN30@stbi__crea:
+ 0081c 8b 85 e4 02 00
+ 00 mov eax, DWORD PTR nsmp$10[rbp]
+ 00822 39 45 44 cmp DWORD PTR i$[rbp], eax
+ 00825 73 6b jae SHORT $LN29@stbi__crea
+
+; 5401 : if ((i & 1) == 0)
+
+ 00827 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 0082a 83 e0 01 and eax, 1
+ 0082d 85 c0 test eax, eax
+ 0082f 75 21 jne SHORT $LN64@stbi__crea
+
+; 5402 : inb = *in++;
+
+ 00831 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR in$7[rbp]
+ 00838 0f b6 00 movzx eax, BYTE PTR [rax]
+ 0083b 88 85 c4 02 00
+ 00 mov BYTE PTR inb$9[rbp], al
+ 00841 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR in$7[rbp]
+ 00848 48 ff c0 inc rax
+ 0084b 48 89 85 88 02
+ 00 00 mov QWORD PTR in$7[rbp], rax
+$LN64@stbi__crea:
+
+; 5403 : *out++ = scale * (inb >> 4);
+
+ 00852 0f b6 85 64 02
+ 00 00 movzx eax, BYTE PTR scale$6[rbp]
+ 00859 0f b6 8d c4 02
+ 00 00 movzx ecx, BYTE PTR inb$9[rbp]
+ 00860 c1 f9 04 sar ecx, 4
+ 00863 0f af c1 imul eax, ecx
+ 00866 48 8b 8d a8 02
+ 00 00 mov rcx, QWORD PTR out$8[rbp]
+ 0086d 88 01 mov BYTE PTR [rcx], al
+ 0086f 48 8b 85 a8 02
+ 00 00 mov rax, QWORD PTR out$8[rbp]
+ 00876 48 ff c0 inc rax
+ 00879 48 89 85 a8 02
+ 00 00 mov QWORD PTR out$8[rbp], rax
+
+; 5404 : inb <<= 4;
+
+ 00880 0f b6 85 c4 02
+ 00 00 movzx eax, BYTE PTR inb$9[rbp]
+ 00887 c0 e0 04 shl al, 4
+ 0088a 88 85 c4 02 00
+ 00 mov BYTE PTR inb$9[rbp], al
+
+; 5405 : }
+
+ 00890 eb 82 jmp SHORT $LN28@stbi__crea
+$LN29@stbi__crea:
+
+; 5406 : } else if (depth == 2) {
+
+ 00892 e9 44 01 00 00 jmp $LN63@stbi__crea
+$LN62@stbi__crea:
+ 00897 83 bd 10 05 00
+ 00 02 cmp DWORD PTR depth$[rbp], 2
+ 0089e 0f 85 8c 00 00
+ 00 jne $LN65@stbi__crea
+
+; 5407 : for (i = 0; i < nsmp; ++i) {
+
+ 008a4 c7 45 44 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 008ab eb 08 jmp SHORT $LN33@stbi__crea
+$LN31@stbi__crea:
+ 008ad 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 008b0 ff c0 inc eax
+ 008b2 89 45 44 mov DWORD PTR i$[rbp], eax
+$LN33@stbi__crea:
+ 008b5 8b 85 e4 02 00
+ 00 mov eax, DWORD PTR nsmp$10[rbp]
+ 008bb 39 45 44 cmp DWORD PTR i$[rbp], eax
+ 008be 73 6b jae SHORT $LN32@stbi__crea
+
+; 5408 : if ((i & 3) == 0)
+
+ 008c0 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 008c3 83 e0 03 and eax, 3
+ 008c6 85 c0 test eax, eax
+ 008c8 75 21 jne SHORT $LN67@stbi__crea
+
+; 5409 : inb = *in++;
+
+ 008ca 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR in$7[rbp]
+ 008d1 0f b6 00 movzx eax, BYTE PTR [rax]
+ 008d4 88 85 c4 02 00
+ 00 mov BYTE PTR inb$9[rbp], al
+ 008da 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR in$7[rbp]
+ 008e1 48 ff c0 inc rax
+ 008e4 48 89 85 88 02
+ 00 00 mov QWORD PTR in$7[rbp], rax
+$LN67@stbi__crea:
+
+; 5410 : *out++ = scale * (inb >> 6);
+
+ 008eb 0f b6 85 64 02
+ 00 00 movzx eax, BYTE PTR scale$6[rbp]
+ 008f2 0f b6 8d c4 02
+ 00 00 movzx ecx, BYTE PTR inb$9[rbp]
+ 008f9 c1 f9 06 sar ecx, 6
+ 008fc 0f af c1 imul eax, ecx
+ 008ff 48 8b 8d a8 02
+ 00 00 mov rcx, QWORD PTR out$8[rbp]
+ 00906 88 01 mov BYTE PTR [rcx], al
+ 00908 48 8b 85 a8 02
+ 00 00 mov rax, QWORD PTR out$8[rbp]
+ 0090f 48 ff c0 inc rax
+ 00912 48 89 85 a8 02
+ 00 00 mov QWORD PTR out$8[rbp], rax
+
+; 5411 : inb <<= 2;
+
+ 00919 0f b6 85 c4 02
+ 00 00 movzx eax, BYTE PTR inb$9[rbp]
+ 00920 c0 e0 02 shl al, 2
+ 00923 88 85 c4 02 00
+ 00 mov BYTE PTR inb$9[rbp], al
+
+; 5412 : }
+
+ 00929 eb 82 jmp SHORT $LN31@stbi__crea
+$LN32@stbi__crea:
+
+; 5413 : } else {
+
+ 0092b e9 ab 00 00 00 jmp $LN66@stbi__crea
+$LN65@stbi__crea:
+
+; 5414 : STBI_ASSERT(depth == 1);
+
+ 00930 83 bd 10 05 00
+ 00 01 cmp DWORD PTR depth$[rbp], 1
+ 00937 74 1c je SHORT $LN86@stbi__crea
+ 00939 41 b8 26 15 00
+ 00 mov r8d, 5414 ; 00001526H
+ 0093f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00946 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1BG@OEFMLIPO@?$AAd?$AAe?$AAp?$AAt?$AAh?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA1@
+ 0094d ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00953 33 c0 xor eax, eax
+$LN86@stbi__crea:
+
+; 5415 : for (i = 0; i < nsmp; ++i) {
+
+ 00955 c7 45 44 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0095c eb 08 jmp SHORT $LN36@stbi__crea
+$LN34@stbi__crea:
+ 0095e 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 00961 ff c0 inc eax
+ 00963 89 45 44 mov DWORD PTR i$[rbp], eax
+$LN36@stbi__crea:
+ 00966 8b 85 e4 02 00
+ 00 mov eax, DWORD PTR nsmp$10[rbp]
+ 0096c 39 45 44 cmp DWORD PTR i$[rbp], eax
+ 0096f 73 6a jae SHORT $LN35@stbi__crea
+
+; 5416 : if ((i & 7) == 0)
+
+ 00971 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 00974 83 e0 07 and eax, 7
+ 00977 85 c0 test eax, eax
+ 00979 75 21 jne SHORT $LN68@stbi__crea
+
+; 5417 : inb = *in++;
+
+ 0097b 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR in$7[rbp]
+ 00982 0f b6 00 movzx eax, BYTE PTR [rax]
+ 00985 88 85 c4 02 00
+ 00 mov BYTE PTR inb$9[rbp], al
+ 0098b 48 8b 85 88 02
+ 00 00 mov rax, QWORD PTR in$7[rbp]
+ 00992 48 ff c0 inc rax
+ 00995 48 89 85 88 02
+ 00 00 mov QWORD PTR in$7[rbp], rax
+$LN68@stbi__crea:
+
+; 5418 : *out++ = scale * (inb >> 7);
+
+ 0099c 0f b6 85 64 02
+ 00 00 movzx eax, BYTE PTR scale$6[rbp]
+ 009a3 0f b6 8d c4 02
+ 00 00 movzx ecx, BYTE PTR inb$9[rbp]
+ 009aa c1 f9 07 sar ecx, 7
+ 009ad 0f af c1 imul eax, ecx
+ 009b0 48 8b 8d a8 02
+ 00 00 mov rcx, QWORD PTR out$8[rbp]
+ 009b7 88 01 mov BYTE PTR [rcx], al
+ 009b9 48 8b 85 a8 02
+ 00 00 mov rax, QWORD PTR out$8[rbp]
+ 009c0 48 ff c0 inc rax
+ 009c3 48 89 85 a8 02
+ 00 00 mov QWORD PTR out$8[rbp], rax
+
+; 5419 : inb <<= 1;
+
+ 009ca 0f b6 85 c4 02
+ 00 00 movzx eax, BYTE PTR inb$9[rbp]
+ 009d1 d0 e0 shl al, 1
+ 009d3 88 85 c4 02 00
+ 00 mov BYTE PTR inb$9[rbp], al
+
+; 5420 : }
+
+ 009d9 eb 83 jmp SHORT $LN34@stbi__crea
+$LN35@stbi__crea:
+$LN66@stbi__crea:
+$LN63@stbi__crea:
+
+; 5421 : }
+; 5422 :
+; 5423 : // insert alpha=255 values if desired
+; 5424 : if (img_n != out_n)
+
+ 009db 8b 85 f8 04 00
+ 00 mov eax, DWORD PTR out_n$[rbp]
+ 009e1 39 85 44 01 00
+ 00 cmp DWORD PTR img_n$[rbp], eax
+ 009e7 74 22 je SHORT $LN69@stbi__crea
+
+; 5425 : stbi__create_png_alpha_expand8(dest, dest, x, img_n);
+
+ 009e9 44 8b 8d 44 01
+ 00 00 mov r9d, DWORD PTR img_n$[rbp]
+ 009f0 44 8b 85 00 05
+ 00 00 mov r8d, DWORD PTR x$[rbp]
+ 009f7 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR dest$3[rbp]
+ 009fe 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR dest$3[rbp]
+ 00a05 e8 00 00 00 00 call stbi__create_png_alpha_expand8
+ 00a0a 90 npad 1
+$LN69@stbi__crea:
+
+; 5426 : } else if (depth == 8) {
+
+ 00a0b e9 47 03 00 00 jmp $LN61@stbi__crea
+$LN60@stbi__crea:
+ 00a10 83 bd 10 05 00
+ 00 08 cmp DWORD PTR depth$[rbp], 8
+ 00a17 75 5d jne SHORT $LN70@stbi__crea
+
+; 5427 : if (img_n == out_n)
+
+ 00a19 8b 85 f8 04 00
+ 00 mov eax, DWORD PTR out_n$[rbp]
+ 00a1f 39 85 44 01 00
+ 00 cmp DWORD PTR img_n$[rbp], eax
+ 00a25 75 28 jne SHORT $LN72@stbi__crea
+
+; 5428 : memcpy(dest, cur, x * img_n);
+
+ 00a27 8b 85 00 05 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00a2d 0f af 85 44 01
+ 00 00 imul eax, DWORD PTR img_n$[rbp]
+ 00a34 8b c0 mov eax, eax
+ 00a36 44 8b c0 mov r8d, eax
+ 00a39 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00a40 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR dest$3[rbp]
+ 00a47 e8 00 00 00 00 call memcpy
+ 00a4c 90 npad 1
+ 00a4d eb 22 jmp SHORT $LN73@stbi__crea
+$LN72@stbi__crea:
+
+; 5429 : else
+; 5430 : stbi__create_png_alpha_expand8(dest, cur, x, img_n);
+
+ 00a4f 44 8b 8d 44 01
+ 00 00 mov r9d, DWORD PTR img_n$[rbp]
+ 00a56 44 8b 85 00 05
+ 00 00 mov r8d, DWORD PTR x$[rbp]
+ 00a5d 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00a64 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR dest$3[rbp]
+ 00a6b e8 00 00 00 00 call stbi__create_png_alpha_expand8
+ 00a70 90 npad 1
+$LN73@stbi__crea:
+
+; 5431 : } else if (depth == 16) {
+
+ 00a71 e9 e1 02 00 00 jmp $LN71@stbi__crea
+$LN70@stbi__crea:
+ 00a76 83 bd 10 05 00
+ 00 10 cmp DWORD PTR depth$[rbp], 16
+ 00a7d 0f 85 d4 02 00
+ 00 jne $LN74@stbi__crea
+
+; 5432 : // convert the image data from big-endian to platform-native
+; 5433 : stbi__uint16 *dest16 = (stbi__uint16 *)dest;
+
+ 00a83 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR dest$3[rbp]
+ 00a8a 48 89 85 08 03
+ 00 00 mov QWORD PTR dest16$11[rbp], rax
+
+; 5434 : stbi__uint32 nsmp = x * img_n;
+
+ 00a91 8b 85 00 05 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00a97 0f af 85 44 01
+ 00 00 imul eax, DWORD PTR img_n$[rbp]
+ 00a9e 89 85 24 03 00
+ 00 mov DWORD PTR nsmp$12[rbp], eax
+
+; 5435 :
+; 5436 : if (img_n == out_n) {
+
+ 00aa4 8b 85 f8 04 00
+ 00 mov eax, DWORD PTR out_n$[rbp]
+ 00aaa 39 85 44 01 00
+ 00 cmp DWORD PTR img_n$[rbp], eax
+ 00ab0 75 7e jne SHORT $LN75@stbi__crea
+
+; 5437 : for (i = 0; i < nsmp; ++i, ++dest16, cur += 2)
+
+ 00ab2 c7 45 44 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00ab9 eb 2c jmp SHORT $LN39@stbi__crea
+$LN37@stbi__crea:
+ 00abb 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 00abe ff c0 inc eax
+ 00ac0 89 45 44 mov DWORD PTR i$[rbp], eax
+ 00ac3 48 8b 85 08 03
+ 00 00 mov rax, QWORD PTR dest16$11[rbp]
+ 00aca 48 83 c0 02 add rax, 2
+ 00ace 48 89 85 08 03
+ 00 00 mov QWORD PTR dest16$11[rbp], rax
+ 00ad5 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR cur$1[rbp]
+ 00adc 48 83 c0 02 add rax, 2
+ 00ae0 48 89 85 c8 01
+ 00 00 mov QWORD PTR cur$1[rbp], rax
+$LN39@stbi__crea:
+ 00ae7 8b 85 24 03 00
+ 00 mov eax, DWORD PTR nsmp$12[rbp]
+ 00aed 39 45 44 cmp DWORD PTR i$[rbp], eax
+ 00af0 73 39 jae SHORT $LN38@stbi__crea
+
+; 5438 : *dest16 = (cur[0] << 8) | cur[1];
+
+ 00af2 b8 01 00 00 00 mov eax, 1
+ 00af7 48 6b c0 00 imul rax, rax, 0
+ 00afb 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 00b02 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00b06 c1 e0 08 shl eax, 8
+ 00b09 b9 01 00 00 00 mov ecx, 1
+ 00b0e 48 6b c9 01 imul rcx, rcx, 1
+ 00b12 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00b19 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00b1d 0b c1 or eax, ecx
+ 00b1f 48 8b 8d 08 03
+ 00 00 mov rcx, QWORD PTR dest16$11[rbp]
+ 00b26 66 89 01 mov WORD PTR [rcx], ax
+ 00b29 eb 90 jmp SHORT $LN37@stbi__crea
+$LN38@stbi__crea:
+
+; 5439 : } else {
+
+ 00b2b e9 27 02 00 00 jmp $LN76@stbi__crea
+$LN75@stbi__crea:
+
+; 5440 : STBI_ASSERT(img_n + 1 == out_n);
+
+ 00b30 8b 85 44 01 00
+ 00 mov eax, DWORD PTR img_n$[rbp]
+ 00b36 ff c0 inc eax
+ 00b38 3b 85 f8 04 00
+ 00 cmp eax, DWORD PTR out_n$[rbp]
+ 00b3e 74 1c je SHORT $LN87@stbi__crea
+ 00b40 41 b8 40 15 00
+ 00 mov r8d, 5440 ; 00001540H
+ 00b46 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00b4d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1CG@MFAHHIFB@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$CL?$AA?5?$AA1?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAo?$AAu@
+ 00b54 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00b5a 33 c0 xor eax, eax
+$LN87@stbi__crea:
+
+; 5441 : if (img_n == 1) {
+
+ 00b5c 83 bd 44 01 00
+ 00 01 cmp DWORD PTR img_n$[rbp], 1
+ 00b63 0f 85 a4 00 00
+ 00 jne $LN77@stbi__crea
+
+; 5442 : for (i = 0; i < x; ++i, dest16 += 2, cur += 2) {
+
+ 00b69 c7 45 44 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00b70 eb 2c jmp SHORT $LN42@stbi__crea
+$LN40@stbi__crea:
+ 00b72 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 00b75 ff c0 inc eax
+ 00b77 89 45 44 mov DWORD PTR i$[rbp], eax
+ 00b7a 48 8b 85 08 03
+ 00 00 mov rax, QWORD PTR dest16$11[rbp]
+ 00b81 48 83 c0 04 add rax, 4
+ 00b85 48 89 85 08 03
+ 00 00 mov QWORD PTR dest16$11[rbp], rax
+ 00b8c 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR cur$1[rbp]
+ 00b93 48 83 c0 02 add rax, 2
+ 00b97 48 89 85 c8 01
+ 00 00 mov QWORD PTR cur$1[rbp], rax
+$LN42@stbi__crea:
+ 00b9e 8b 85 00 05 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00ba4 39 45 44 cmp DWORD PTR i$[rbp], eax
+ 00ba7 73 5f jae SHORT $LN41@stbi__crea
+
+; 5443 : dest16[0] = (cur[0] << 8) | cur[1];
+
+ 00ba9 b8 01 00 00 00 mov eax, 1
+ 00bae 48 6b c0 00 imul rax, rax, 0
+ 00bb2 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 00bb9 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00bbd c1 e0 08 shl eax, 8
+ 00bc0 b9 01 00 00 00 mov ecx, 1
+ 00bc5 48 6b c9 01 imul rcx, rcx, 1
+ 00bc9 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00bd0 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00bd4 0b c1 or eax, ecx
+ 00bd6 b9 02 00 00 00 mov ecx, 2
+ 00bdb 48 6b c9 00 imul rcx, rcx, 0
+ 00bdf 48 8b 95 08 03
+ 00 00 mov rdx, QWORD PTR dest16$11[rbp]
+ 00be6 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 5444 : dest16[1] = 0xffff;
+
+ 00bea b8 02 00 00 00 mov eax, 2
+ 00bef 48 6b c0 01 imul rax, rax, 1
+ 00bf3 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
+ 00bf8 48 8b 95 08 03
+ 00 00 mov rdx, QWORD PTR dest16$11[rbp]
+ 00bff 66 89 0c 02 mov WORD PTR [rdx+rax], cx
+
+; 5445 : }
+
+ 00c03 e9 6a ff ff ff jmp $LN40@stbi__crea
+$LN41@stbi__crea:
+
+; 5446 : } else {
+
+ 00c08 e9 4a 01 00 00 jmp $LN78@stbi__crea
+$LN77@stbi__crea:
+
+; 5447 : STBI_ASSERT(img_n == 3);
+
+ 00c0d 83 bd 44 01 00
+ 00 03 cmp DWORD PTR img_n$[rbp], 3
+ 00c14 74 1c je SHORT $LN88@stbi__crea
+ 00c16 41 b8 47 15 00
+ 00 mov r8d, 5447 ; 00001547H
+ 00c1c 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00c23 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@
+ 00c2a ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00c30 33 c0 xor eax, eax
+$LN88@stbi__crea:
+
+; 5448 : for (i = 0; i < x; ++i, dest16 += 4, cur += 6) {
+
+ 00c32 c7 45 44 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00c39 eb 2c jmp SHORT $LN45@stbi__crea
+$LN43@stbi__crea:
+ 00c3b 8b 45 44 mov eax, DWORD PTR i$[rbp]
+ 00c3e ff c0 inc eax
+ 00c40 89 45 44 mov DWORD PTR i$[rbp], eax
+ 00c43 48 8b 85 08 03
+ 00 00 mov rax, QWORD PTR dest16$11[rbp]
+ 00c4a 48 83 c0 08 add rax, 8
+ 00c4e 48 89 85 08 03
+ 00 00 mov QWORD PTR dest16$11[rbp], rax
+ 00c55 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR cur$1[rbp]
+ 00c5c 48 83 c0 06 add rax, 6
+ 00c60 48 89 85 c8 01
+ 00 00 mov QWORD PTR cur$1[rbp], rax
+$LN45@stbi__crea:
+ 00c67 8b 85 00 05 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00c6d 39 45 44 cmp DWORD PTR i$[rbp], eax
+ 00c70 0f 83 e1 00 00
+ 00 jae $LN44@stbi__crea
+
+; 5449 : dest16[0] = (cur[0] << 8) | cur[1];
+
+ 00c76 b8 01 00 00 00 mov eax, 1
+ 00c7b 48 6b c0 00 imul rax, rax, 0
+ 00c7f 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 00c86 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00c8a c1 e0 08 shl eax, 8
+ 00c8d b9 01 00 00 00 mov ecx, 1
+ 00c92 48 6b c9 01 imul rcx, rcx, 1
+ 00c96 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00c9d 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00ca1 0b c1 or eax, ecx
+ 00ca3 b9 02 00 00 00 mov ecx, 2
+ 00ca8 48 6b c9 00 imul rcx, rcx, 0
+ 00cac 48 8b 95 08 03
+ 00 00 mov rdx, QWORD PTR dest16$11[rbp]
+ 00cb3 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 5450 : dest16[1] = (cur[2] << 8) | cur[3];
+
+ 00cb7 b8 01 00 00 00 mov eax, 1
+ 00cbc 48 6b c0 02 imul rax, rax, 2
+ 00cc0 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 00cc7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00ccb c1 e0 08 shl eax, 8
+ 00cce b9 01 00 00 00 mov ecx, 1
+ 00cd3 48 6b c9 03 imul rcx, rcx, 3
+ 00cd7 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00cde 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00ce2 0b c1 or eax, ecx
+ 00ce4 b9 02 00 00 00 mov ecx, 2
+ 00ce9 48 6b c9 01 imul rcx, rcx, 1
+ 00ced 48 8b 95 08 03
+ 00 00 mov rdx, QWORD PTR dest16$11[rbp]
+ 00cf4 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 5451 : dest16[2] = (cur[4] << 8) | cur[5];
+
+ 00cf8 b8 01 00 00 00 mov eax, 1
+ 00cfd 48 6b c0 04 imul rax, rax, 4
+ 00d01 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR cur$1[rbp]
+ 00d08 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00d0c c1 e0 08 shl eax, 8
+ 00d0f b9 01 00 00 00 mov ecx, 1
+ 00d14 48 6b c9 05 imul rcx, rcx, 5
+ 00d18 48 8b 95 c8 01
+ 00 00 mov rdx, QWORD PTR cur$1[rbp]
+ 00d1f 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00d23 0b c1 or eax, ecx
+ 00d25 b9 02 00 00 00 mov ecx, 2
+ 00d2a 48 6b c9 02 imul rcx, rcx, 2
+ 00d2e 48 8b 95 08 03
+ 00 00 mov rdx, QWORD PTR dest16$11[rbp]
+ 00d35 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 5452 : dest16[3] = 0xffff;
+
+ 00d39 b8 02 00 00 00 mov eax, 2
+ 00d3e 48 6b c0 03 imul rax, rax, 3
+ 00d42 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
+ 00d47 48 8b 95 08 03
+ 00 00 mov rdx, QWORD PTR dest16$11[rbp]
+ 00d4e 66 89 0c 02 mov WORD PTR [rdx+rax], cx
+
+; 5453 : }
+
+ 00d52 e9 e4 fe ff ff jmp $LN43@stbi__crea
+$LN44@stbi__crea:
+$LN78@stbi__crea:
+$LN76@stbi__crea:
+$LN74@stbi__crea:
+$LN71@stbi__crea:
+$LN61@stbi__crea:
+
+; 5454 : }
+; 5455 : }
+; 5456 : }
+; 5457 : }
+
+ 00d57 e9 f5 f4 ff ff jmp $LN2@stbi__crea
+$LN3@stbi__crea:
+
+; 5458 :
+; 5459 : STBI_FREE(filter_buf);
+
+ 00d5c 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR filter_buf$[rbp]
+ 00d63 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00d69 90 npad 1
+
+; 5460 : if (!all_ok)
+
+ 00d6a 83 bd 04 01 00
+ 00 00 cmp DWORD PTR all_ok$[rbp], 0
+ 00d71 75 04 jne SHORT $LN79@stbi__crea
+
+; 5461 : return 0;
+
+ 00d73 33 c0 xor eax, eax
+ 00d75 eb 05 jmp SHORT $LN1@stbi__crea
+$LN79@stbi__crea:
+
+; 5462 :
+; 5463 : return 1;
+
+ 00d77 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__crea:
+
+; 5464 : }
+
+ 00d7c 48 8d a5 c8 04
+ 00 00 lea rsp, QWORD PTR [rbp+1224]
+ 00d83 5f pop rdi
+ 00d84 5d pop rbp
+ 00d85 c3 ret 0
+ 00d86 66 90 npad 2
+$LN89@stbi__crea:
+ 00d88 00 00 00 00 DD $LN54@stbi__crea
+ 00d8c 00 00 00 00 DD $LN55@stbi__crea
+ 00d90 00 00 00 00 DD $LN56@stbi__crea
+ 00d94 00 00 00 00 DD $LN57@stbi__crea
+ 00d98 00 00 00 00 DD $LN58@stbi__crea
+ 00d9c 00 00 00 00 DD $LN59@stbi__crea
+stbi__create_png_image_raw ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__create_png_alpha_expand8
+_TEXT SEGMENT
+i$ = 4
+dest$ = 256
+src$ = 264
+x$ = 272
+img_n$ = 280
+stbi__create_png_alpha_expand8 PROC ; COMDAT
+
+; 5264 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 5265 : int i;
+; 5266 : // must process data backwards since we allow dest==src
+; 5267 : if (img_n == 1) {
+
+ 0002f 83 bd 18 01 00
+ 00 01 cmp DWORD PTR img_n$[rbp], 1
+ 00036 75 58 jne SHORT $LN8@stbi__crea
+
+; 5268 : for (i = x - 1; i >= 0; --i) {
+
+ 00038 8b 85 10 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 0003e ff c8 dec eax
+ 00040 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00043 eb 08 jmp SHORT $LN4@stbi__crea
+$LN2@stbi__crea:
+ 00045 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00048 ff c8 dec eax
+ 0004a 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__crea:
+ 0004d 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00051 7c 38 jl SHORT $LN3@stbi__crea
+
+; 5269 : dest[i * 2 + 1] = 255;
+
+ 00053 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00056 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
+ 0005a 48 98 cdqe
+ 0005c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR dest$[rbp]
+ 00063 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 5270 : dest[i * 2 + 0] = src[i];
+
+ 00067 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0006b 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 0006e 03 c9 add ecx, ecx
+ 00070 48 63 c9 movsxd rcx, ecx
+ 00073 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR dest$[rbp]
+ 0007a 4c 8b 85 08 01
+ 00 00 mov r8, QWORD PTR src$[rbp]
+ 00081 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00086 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5271 : }
+
+ 00089 eb ba jmp SHORT $LN2@stbi__crea
+$LN3@stbi__crea:
+
+; 5272 : } else {
+
+ 0008b e9 dc 00 00 00 jmp $LN9@stbi__crea
+$LN8@stbi__crea:
+
+; 5273 : STBI_ASSERT(img_n == 3);
+
+ 00090 83 bd 18 01 00
+ 00 03 cmp DWORD PTR img_n$[rbp], 3
+ 00097 74 1c je SHORT $LN11@stbi__crea
+ 00099 41 b8 99 14 00
+ 00 mov r8d, 5273 ; 00001499H
+ 0009f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 000a6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@
+ 000ad ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 000b3 33 c0 xor eax, eax
+$LN11@stbi__crea:
+
+; 5274 : for (i = x - 1; i >= 0; --i) {
+
+ 000b5 8b 85 10 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 000bb ff c8 dec eax
+ 000bd 89 45 04 mov DWORD PTR i$[rbp], eax
+ 000c0 eb 08 jmp SHORT $LN7@stbi__crea
+$LN5@stbi__crea:
+ 000c2 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000c5 ff c8 dec eax
+ 000c7 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__crea:
+ 000ca 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 000ce 0f 8c 98 00 00
+ 00 jl $LN6@stbi__crea
+
+; 5275 : dest[i * 4 + 3] = 255;
+
+ 000d4 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000d7 8d 04 85 03 00
+ 00 00 lea eax, DWORD PTR [rax*4+3]
+ 000de 48 98 cdqe
+ 000e0 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR dest$[rbp]
+ 000e7 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 5276 : dest[i * 4 + 2] = src[i * 3 + 2];
+
+ 000eb 6b 45 04 03 imul eax, DWORD PTR i$[rbp], 3
+ 000ef 83 c0 02 add eax, 2
+ 000f2 48 98 cdqe
+ 000f4 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 000f7 8d 0c 8d 02 00
+ 00 00 lea ecx, DWORD PTR [rcx*4+2]
+ 000fe 48 63 c9 movsxd rcx, ecx
+ 00101 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR dest$[rbp]
+ 00108 4c 8b 85 08 01
+ 00 00 mov r8, QWORD PTR src$[rbp]
+ 0010f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00114 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5277 : dest[i * 4 + 1] = src[i * 3 + 1];
+
+ 00117 6b 45 04 03 imul eax, DWORD PTR i$[rbp], 3
+ 0011b ff c0 inc eax
+ 0011d 48 98 cdqe
+ 0011f 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00122 8d 0c 8d 01 00
+ 00 00 lea ecx, DWORD PTR [rcx*4+1]
+ 00129 48 63 c9 movsxd rcx, ecx
+ 0012c 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR dest$[rbp]
+ 00133 4c 8b 85 08 01
+ 00 00 mov r8, QWORD PTR src$[rbp]
+ 0013a 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0013f 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5278 : dest[i * 4 + 0] = src[i * 3 + 0];
+
+ 00142 6b 45 04 03 imul eax, DWORD PTR i$[rbp], 3
+ 00146 48 98 cdqe
+ 00148 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 0014b c1 e1 02 shl ecx, 2
+ 0014e 48 63 c9 movsxd rcx, ecx
+ 00151 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR dest$[rbp]
+ 00158 4c 8b 85 08 01
+ 00 00 mov r8, QWORD PTR src$[rbp]
+ 0015f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00164 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 5279 : }
+
+ 00167 e9 56 ff ff ff jmp $LN5@stbi__crea
+$LN6@stbi__crea:
+$LN9@stbi__crea:
+
+; 5280 : }
+; 5281 : }
+
+ 0016c 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00173 5f pop rdi
+ 00174 5d pop rbp
+ 00175 c3 ret 0
+stbi__create_png_alpha_expand8 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__paeth
+_TEXT SEGMENT
+thresh$ = 4
+lo$ = 36
+hi$ = 68
+t0$ = 100
+t1$ = 132
+tv68 = 340
+tv70 = 340
+tv72 = 340
+tv74 = 340
+a$ = 384
+b$ = 392
+c$ = 400
+stbi__paeth PROC ; COMDAT
+
+; 5246 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000d 55 push rbp
+ 0000e 57 push rdi
+ 0000f 48 81 ec 88 01
+ 00 00 sub rsp, 392 ; 00000188H
+ 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00027 90 npad 1
+
+; 5247 : // This formulation looks very different from the reference in the PNG spec, but is
+; 5248 : // actually equivalent and has favorable data dependencies and admits straightforward
+; 5249 : // generation of branch-free code, which helps performance significantly.
+; 5250 : int thresh = c * 3 - (a + b);
+
+ 00028 6b 85 90 01 00
+ 00 03 imul eax, DWORD PTR c$[rbp], 3
+ 0002f 8b 8d 88 01 00
+ 00 mov ecx, DWORD PTR b$[rbp]
+ 00035 8b 95 80 01 00
+ 00 mov edx, DWORD PTR a$[rbp]
+ 0003b 03 d1 add edx, ecx
+ 0003d 8b ca mov ecx, edx
+ 0003f 2b c1 sub eax, ecx
+ 00041 89 45 04 mov DWORD PTR thresh$[rbp], eax
+
+; 5251 : int lo = a < b ? a : b;
+
+ 00044 8b 85 88 01 00
+ 00 mov eax, DWORD PTR b$[rbp]
+ 0004a 39 85 80 01 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 00050 7d 0e jge SHORT $LN3@stbi__paet
+ 00052 8b 85 80 01 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00058 89 85 54 01 00
+ 00 mov DWORD PTR tv68[rbp], eax
+ 0005e eb 0c jmp SHORT $LN4@stbi__paet
+$LN3@stbi__paet:
+ 00060 8b 85 88 01 00
+ 00 mov eax, DWORD PTR b$[rbp]
+ 00066 89 85 54 01 00
+ 00 mov DWORD PTR tv68[rbp], eax
+$LN4@stbi__paet:
+ 0006c 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv68[rbp]
+ 00072 89 45 24 mov DWORD PTR lo$[rbp], eax
+
+; 5252 : int hi = a < b ? b : a;
+
+ 00075 8b 85 88 01 00
+ 00 mov eax, DWORD PTR b$[rbp]
+ 0007b 39 85 80 01 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 00081 7d 0e jge SHORT $LN5@stbi__paet
+ 00083 8b 85 88 01 00
+ 00 mov eax, DWORD PTR b$[rbp]
+ 00089 89 85 54 01 00
+ 00 mov DWORD PTR tv70[rbp], eax
+ 0008f eb 0c jmp SHORT $LN6@stbi__paet
+$LN5@stbi__paet:
+ 00091 8b 85 80 01 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00097 89 85 54 01 00
+ 00 mov DWORD PTR tv70[rbp], eax
+$LN6@stbi__paet:
+ 0009d 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv70[rbp]
+ 000a3 89 45 44 mov DWORD PTR hi$[rbp], eax
+
+; 5253 : int t0 = (hi <= thresh) ? lo : c;
+
+ 000a6 8b 45 04 mov eax, DWORD PTR thresh$[rbp]
+ 000a9 39 45 44 cmp DWORD PTR hi$[rbp], eax
+ 000ac 7f 0b jg SHORT $LN7@stbi__paet
+ 000ae 8b 45 24 mov eax, DWORD PTR lo$[rbp]
+ 000b1 89 85 54 01 00
+ 00 mov DWORD PTR tv72[rbp], eax
+ 000b7 eb 0c jmp SHORT $LN8@stbi__paet
+$LN7@stbi__paet:
+ 000b9 8b 85 90 01 00
+ 00 mov eax, DWORD PTR c$[rbp]
+ 000bf 89 85 54 01 00
+ 00 mov DWORD PTR tv72[rbp], eax
+$LN8@stbi__paet:
+ 000c5 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv72[rbp]
+ 000cb 89 45 64 mov DWORD PTR t0$[rbp], eax
+
+; 5254 : int t1 = (thresh <= lo) ? hi : t0;
+
+ 000ce 8b 45 24 mov eax, DWORD PTR lo$[rbp]
+ 000d1 39 45 04 cmp DWORD PTR thresh$[rbp], eax
+ 000d4 7f 0b jg SHORT $LN9@stbi__paet
+ 000d6 8b 45 44 mov eax, DWORD PTR hi$[rbp]
+ 000d9 89 85 54 01 00
+ 00 mov DWORD PTR tv74[rbp], eax
+ 000df eb 09 jmp SHORT $LN10@stbi__paet
+$LN9@stbi__paet:
+ 000e1 8b 45 64 mov eax, DWORD PTR t0$[rbp]
+ 000e4 89 85 54 01 00
+ 00 mov DWORD PTR tv74[rbp], eax
+$LN10@stbi__paet:
+ 000ea 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv74[rbp]
+ 000f0 89 85 84 00 00
+ 00 mov DWORD PTR t1$[rbp], eax
+
+; 5255 : return t1;
+
+ 000f6 8b 85 84 00 00
+ 00 mov eax, DWORD PTR t1$[rbp]
+
+; 5256 : }
+
+ 000fc 48 8d a5 68 01
+ 00 00 lea rsp, QWORD PTR [rbp+360]
+ 00103 5f pop rdi
+ 00104 5d pop rbp
+ 00105 c3 ret 0
+stbi__paeth ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__check_png_header
+_TEXT SEGMENT
+i$ = 4
+s$ = 256
+stbi__check_png_header PROC ; COMDAT
+
+; 5215 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 5216 : static const stbi_uc png_sig[8] = { 137, 80, 78, 71, 13, 10, 26, 10 };
+; 5217 : int i;
+; 5218 : for (i = 0; i < 8; ++i)
+
+ 00020 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00027 eb 08 jmp SHORT $LN4@stbi__chec
+$LN2@stbi__chec:
+ 00029 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0002c ff c0 inc eax
+ 0002e 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__chec:
+ 00031 83 7d 04 08 cmp DWORD PTR i$[rbp], 8
+ 00035 7d 32 jge SHORT $LN3@stbi__chec
+
+; 5219 : if (stbi__get8(s) != png_sig[i])
+
+ 00037 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0003e e8 00 00 00 00 call stbi__get8
+ 00043 0f b6 c0 movzx eax, al
+ 00046 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 0004a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?png_sig@?1??stbi__check_png_header@@9@9
+ 00051 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00055 3b c1 cmp eax, ecx
+ 00057 74 0e je SHORT $LN5@stbi__chec
+
+; 5220 : return stbi__err("bad png sig", "Not a PNG");
+
+ 00059 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@DMDNBACF@bad?5png?5sig@
+ 00060 e8 00 00 00 00 call stbi__err
+ 00065 eb 07 jmp SHORT $LN1@stbi__chec
+$LN5@stbi__chec:
+ 00067 eb c0 jmp SHORT $LN2@stbi__chec
+$LN3@stbi__chec:
+
+; 5221 : return 1;
+
+ 00069 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__chec:
+
+; 5222 : }
+
+ 0006e 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00075 5f pop rdi
+ 00076 5d pop rbp
+ 00077 c3 ret 0
+stbi__check_png_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__get_chunk_header
+_TEXT SEGMENT
+c$ = 8
+s$ = 256
+stbi__get_chunk_header PROC ; COMDAT
+
+; 5207 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00018 b9 0a 00 00 00 mov ecx, 10
+ 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00022 f3 ab rep stosd
+ 00024 48 8b 8c 24 28
+ 01 00 00 mov rcx, QWORD PTR [rsp+296]
+ 0002c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00033 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00038 90 npad 1
+
+; 5208 : stbi__pngchunk c;
+; 5209 : c.length = stbi__get32be(s);
+
+ 00039 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00040 e8 00 00 00 00 call stbi__get32be
+ 00045 89 45 08 mov DWORD PTR c$[rbp], eax
+
+; 5210 : c.type = stbi__get32be(s);
+
+ 00048 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004f e8 00 00 00 00 call stbi__get32be
+ 00054 89 45 0c mov DWORD PTR c$[rbp+4], eax
+
+; 5211 : return c;
+
+ 00057 48 8b 45 08 mov rax, QWORD PTR c$[rbp]
+
+; 5212 : }
+
+ 0005b 48 8b f8 mov rdi, rax
+ 0005e 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00062 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__get_chunk_header$rtcFrameData
+ 00069 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0006e 48 8b c7 mov rax, rdi
+ 00071 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00078 5f pop rdi
+ 00079 5d pop rbp
+ 0007a c3 ret 0
+stbi__get_chunk_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__do_zlib
+_TEXT SEGMENT
+a$ = 224
+obuf$ = 232
+olen$ = 240
+exp$ = 248
+parse_header$ = 256
+stbi__do_zlib PROC ; COMDAT
+
+; 5096 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 5097 : a->zout_start = obuf;
+
+ 0002f 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00036 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR obuf$[rbp]
+ 0003d 48 89 48 28 mov QWORD PTR [rax+40], rcx
+
+; 5098 : a->zout = obuf;
+
+ 00041 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00048 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR obuf$[rbp]
+ 0004f 48 89 48 20 mov QWORD PTR [rax+32], rcx
+
+; 5099 : a->zout_end = obuf + olen;
+
+ 00053 48 63 85 f0 00
+ 00 00 movsxd rax, DWORD PTR olen$[rbp]
+ 0005a 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR obuf$[rbp]
+ 00061 48 03 c8 add rcx, rax
+ 00064 48 8b c1 mov rax, rcx
+ 00067 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0006e 48 89 41 30 mov QWORD PTR [rcx+48], rax
+
+; 5100 : a->z_expandable = exp;
+
+ 00072 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00079 8b 8d f8 00 00
+ 00 mov ecx, DWORD PTR exp$[rbp]
+ 0007f 89 48 38 mov DWORD PTR [rax+56], ecx
+
+; 5101 :
+; 5102 : return stbi__parse_zlib(a, parse_header);
+
+ 00082 8b 95 00 01 00
+ 00 mov edx, DWORD PTR parse_header$[rbp]
+ 00088 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0008f e8 00 00 00 00 call stbi__parse_zlib
+
+; 5103 : }
+
+ 00094 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0009b 5f pop rdi
+ 0009c 5d pop rbp
+ 0009d c3 ret 0
+stbi__do_zlib ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__parse_zlib
+_TEXT SEGMENT
+final$ = 4
+type$ = 36
+a$ = 288
+parse_header$ = 296
+stbi__parse_zlib PROC ; COMDAT
+
+; 5059 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 5060 : int final, type;
+; 5061 : if (parse_header)
+
+ 00024 83 bd 28 01 00
+ 00 00 cmp DWORD PTR parse_header$[rbp], 0
+ 0002b 74 17 je SHORT $LN5@stbi__pars
+
+; 5062 : if (!stbi__parse_zlib_header(a))
+
+ 0002d 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00034 e8 00 00 00 00 call stbi__parse_zlib_header
+ 00039 85 c0 test eax, eax
+ 0003b 75 07 jne SHORT $LN6@stbi__pars
+
+; 5063 : return 0;
+
+ 0003d 33 c0 xor eax, eax
+ 0003f e9 17 01 00 00 jmp $LN1@stbi__pars
+$LN6@stbi__pars:
+$LN5@stbi__pars:
+
+; 5064 : a->num_bits = 0;
+
+ 00044 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0004b c7 40 10 00 00
+ 00 00 mov DWORD PTR [rax+16], 0
+
+; 5065 : a->code_buffer = 0;
+
+ 00052 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00059 c7 40 18 00 00
+ 00 00 mov DWORD PTR [rax+24], 0
+
+; 5066 : a->hit_zeof_once = 0;
+
+ 00060 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00067 c7 40 14 00 00
+ 00 00 mov DWORD PTR [rax+20], 0
+$LN4@stbi__pars:
+
+; 5067 : do {
+; 5068 : final = stbi__zreceive(a, 1);
+
+ 0006e ba 01 00 00 00 mov edx, 1
+ 00073 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0007a e8 00 00 00 00 call stbi__zreceive
+ 0007f 89 45 04 mov DWORD PTR final$[rbp], eax
+
+; 5069 : type = stbi__zreceive(a, 2);
+
+ 00082 ba 02 00 00 00 mov edx, 2
+ 00087 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0008e e8 00 00 00 00 call stbi__zreceive
+ 00093 89 45 24 mov DWORD PTR type$[rbp], eax
+
+; 5070 : if (type == 0) {
+
+ 00096 83 7d 24 00 cmp DWORD PTR type$[rbp], 0
+ 0009a 75 1c jne SHORT $LN7@stbi__pars
+
+; 5071 : if (!stbi__parse_uncompressed_block(a))
+
+ 0009c 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000a3 e8 00 00 00 00 call stbi__parse_uncompressed_block
+ 000a8 85 c0 test eax, eax
+ 000aa 75 07 jne SHORT $LN9@stbi__pars
+
+; 5072 : return 0;
+
+ 000ac 33 c0 xor eax, eax
+ 000ae e9 a8 00 00 00 jmp $LN1@stbi__pars
+$LN9@stbi__pars:
+
+; 5073 : } else if (type == 3) {
+
+ 000b3 e9 94 00 00 00 jmp $LN8@stbi__pars
+$LN7@stbi__pars:
+ 000b8 83 7d 24 03 cmp DWORD PTR type$[rbp], 3
+ 000bc 75 0c jne SHORT $LN10@stbi__pars
+
+; 5074 : return 0;
+
+ 000be 33 c0 xor eax, eax
+ 000c0 e9 96 00 00 00 jmp $LN1@stbi__pars
+
+; 5075 : } else {
+
+ 000c5 e9 82 00 00 00 jmp $LN11@stbi__pars
+$LN10@stbi__pars:
+
+; 5076 : if (type == 1) {
+
+ 000ca 83 7d 24 01 cmp DWORD PTR type$[rbp], 1
+ 000ce 75 54 jne SHORT $LN12@stbi__pars
+
+; 5077 : // use fixed code lengths
+; 5078 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length,
+
+ 000d0 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000d7 48 83 c0 3c add rax, 60 ; 0000003cH
+ 000db 41 b8 20 01 00
+ 00 mov r8d, 288 ; 00000120H
+ 000e1 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__zdefault_length
+ 000e8 48 8b c8 mov rcx, rax
+ 000eb e8 00 00 00 00 call stbi__zbuild_huffman
+ 000f0 85 c0 test eax, eax
+ 000f2 75 04 jne SHORT $LN14@stbi__pars
+
+; 5079 : STBI__ZNSYMS))
+; 5080 : return 0;
+
+ 000f4 33 c0 xor eax, eax
+ 000f6 eb 63 jmp SHORT $LN1@stbi__pars
+$LN14@stbi__pars:
+
+; 5081 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance,
+
+ 000f8 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000ff 48 05 20 08 00
+ 00 add rax, 2080 ; 00000820H
+ 00105 41 b8 20 00 00
+ 00 mov r8d, 32 ; 00000020H
+ 0010b 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__zdefault_distance
+ 00112 48 8b c8 mov rcx, rax
+ 00115 e8 00 00 00 00 call stbi__zbuild_huffman
+ 0011a 85 c0 test eax, eax
+ 0011c 75 04 jne SHORT $LN15@stbi__pars
+
+; 5082 : 32))
+; 5083 : return 0;
+
+ 0011e 33 c0 xor eax, eax
+ 00120 eb 39 jmp SHORT $LN1@stbi__pars
+$LN15@stbi__pars:
+
+; 5084 : } else {
+
+ 00122 eb 14 jmp SHORT $LN13@stbi__pars
+$LN12@stbi__pars:
+
+; 5085 : if (!stbi__compute_huffman_codes(a))
+
+ 00124 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0012b e8 00 00 00 00 call stbi__compute_huffman_codes
+ 00130 85 c0 test eax, eax
+ 00132 75 04 jne SHORT $LN16@stbi__pars
+
+; 5086 : return 0;
+
+ 00134 33 c0 xor eax, eax
+ 00136 eb 23 jmp SHORT $LN1@stbi__pars
+$LN16@stbi__pars:
+$LN13@stbi__pars:
+
+; 5087 : }
+; 5088 : if (!stbi__parse_huffman_block(a))
+
+ 00138 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0013f e8 00 00 00 00 call stbi__parse_huffman_block
+ 00144 85 c0 test eax, eax
+ 00146 75 04 jne SHORT $LN17@stbi__pars
+
+; 5089 : return 0;
+
+ 00148 33 c0 xor eax, eax
+ 0014a eb 0f jmp SHORT $LN1@stbi__pars
+$LN17@stbi__pars:
+$LN11@stbi__pars:
+$LN8@stbi__pars:
+
+; 5090 : }
+; 5091 : } while (!final);
+
+ 0014c 83 7d 04 00 cmp DWORD PTR final$[rbp], 0
+ 00150 0f 84 18 ff ff
+ ff je $LN4@stbi__pars
+
+; 5092 : return 1;
+
+ 00156 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__pars:
+
+; 5093 : }
+
+ 0015b 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00162 5f pop rdi
+ 00163 5d pop rbp
+ 00164 c3 ret 0
+stbi__parse_zlib ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__parse_zlib_header
+_TEXT SEGMENT
+cmf$ = 4
+cm$ = 36
+flg$ = 68
+a$ = 320
+stbi__parse_zlib_header PROC ; COMDAT
+
+; 5011 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 5012 : int cmf = stbi__zget8(a);
+
+ 00020 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00027 e8 00 00 00 00 call stbi__zget8
+ 0002c 0f b6 c0 movzx eax, al
+ 0002f 89 45 04 mov DWORD PTR cmf$[rbp], eax
+
+; 5013 : int cm = cmf & 15;
+
+ 00032 8b 45 04 mov eax, DWORD PTR cmf$[rbp]
+ 00035 83 e0 0f and eax, 15
+ 00038 89 45 24 mov DWORD PTR cm$[rbp], eax
+
+; 5014 : /* int cinfo = cmf >> 4; */
+; 5015 : int flg = stbi__zget8(a);
+
+ 0003b 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00042 e8 00 00 00 00 call stbi__zget8
+ 00047 0f b6 c0 movzx eax, al
+ 0004a 89 45 44 mov DWORD PTR flg$[rbp], eax
+
+; 5016 : if (stbi__zeof(a))
+
+ 0004d 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00054 e8 00 00 00 00 call stbi__zeof
+ 00059 85 c0 test eax, eax
+ 0005b 74 0e je SHORT $LN2@stbi__pars
+
+; 5017 : return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec
+
+ 0005d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@OBKOPAFL@bad?5zlib?5header@
+ 00064 e8 00 00 00 00 call stbi__err
+ 00069 eb 57 jmp SHORT $LN1@stbi__pars
+$LN2@stbi__pars:
+
+; 5018 : if ((cmf * 256 + flg) % 31 != 0)
+
+ 0006b 69 45 04 00 01
+ 00 00 imul eax, DWORD PTR cmf$[rbp], 256 ; 00000100H
+ 00072 03 45 44 add eax, DWORD PTR flg$[rbp]
+ 00075 99 cdq
+ 00076 b9 1f 00 00 00 mov ecx, 31
+ 0007b f7 f9 idiv ecx
+ 0007d 8b c2 mov eax, edx
+ 0007f 85 c0 test eax, eax
+ 00081 74 0e je SHORT $LN3@stbi__pars
+
+; 5019 : return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec
+
+ 00083 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@OBKOPAFL@bad?5zlib?5header@
+ 0008a e8 00 00 00 00 call stbi__err
+ 0008f eb 31 jmp SHORT $LN1@stbi__pars
+$LN3@stbi__pars:
+
+; 5020 : if (flg & 32)
+
+ 00091 8b 45 44 mov eax, DWORD PTR flg$[rbp]
+ 00094 83 e0 20 and eax, 32 ; 00000020H
+ 00097 85 c0 test eax, eax
+ 00099 74 0e je SHORT $LN4@stbi__pars
+
+; 5021 : return stbi__err("no preset dict",
+
+ 0009b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@DOGMHEBI@no?5preset?5dict@
+ 000a2 e8 00 00 00 00 call stbi__err
+ 000a7 eb 19 jmp SHORT $LN1@stbi__pars
+$LN4@stbi__pars:
+
+; 5022 : "Corrupt PNG"); // preset dictionary not allowed in png
+; 5023 : if (cm != 8)
+
+ 000a9 83 7d 24 08 cmp DWORD PTR cm$[rbp], 8
+ 000ad 74 0e je SHORT $LN5@stbi__pars
+
+; 5024 : return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png
+
+ 000af 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MCNBDLPD@bad?5compression@
+ 000b6 e8 00 00 00 00 call stbi__err
+ 000bb eb 05 jmp SHORT $LN1@stbi__pars
+$LN5@stbi__pars:
+
+; 5025 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output
+; 5026 : return 1;
+
+ 000bd b8 01 00 00 00 mov eax, 1
+$LN1@stbi__pars:
+
+; 5027 : }
+
+ 000c2 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 000c9 5f pop rdi
+ 000ca 5d pop rbp
+ 000cb c3 ret 0
+stbi__parse_zlib_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__parse_uncompressed_block
+_TEXT SEGMENT
+header$ = 4
+len$ = 36
+nlen$ = 68
+k$ = 100
+a$ = 352
+stbi__parse_uncompressed_block PROC ; COMDAT
+
+; 4978 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 68 01
+ 00 00 sub rsp, 360 ; 00000168H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00018 b9 22 00 00 00 mov ecx, 34 ; 00000022H
+ 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00022 f3 ab rep stosd
+ 00024 48 8b 8c 24 88
+ 01 00 00 mov rcx, QWORD PTR [rsp+392]
+ 0002c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00033 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00038 90 npad 1
+
+; 4979 : stbi_uc header[4];
+; 4980 : int len, nlen, k;
+; 4981 : if (a->num_bits & 7)
+
+ 00039 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00040 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 00043 83 e0 07 and eax, 7
+ 00046 85 c0 test eax, eax
+ 00048 74 1c je SHORT $LN6@stbi__pars
+
+; 4982 : stbi__zreceive(a, a->num_bits & 7); // discard
+
+ 0004a 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00051 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 00054 83 e0 07 and eax, 7
+ 00057 8b d0 mov edx, eax
+ 00059 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00060 e8 00 00 00 00 call stbi__zreceive
+ 00065 90 npad 1
+$LN6@stbi__pars:
+
+; 4983 : // drain the bit-packed data into header
+; 4984 : k = 0;
+
+ 00066 c7 45 64 00 00
+ 00 00 mov DWORD PTR k$[rbp], 0
+$LN2@stbi__pars:
+
+; 4985 : while (a->num_bits > 0) {
+
+ 0006d 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00074 83 78 10 00 cmp DWORD PTR [rax+16], 0
+ 00078 7e 4f jle SHORT $LN3@stbi__pars
+
+; 4986 : header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check
+
+ 0007a 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00081 8b 40 18 mov eax, DWORD PTR [rax+24]
+ 00084 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00089 48 63 4d 64 movsxd rcx, DWORD PTR k$[rbp]
+ 0008d 88 44 0d 04 mov BYTE PTR header$[rbp+rcx], al
+ 00091 8b 45 64 mov eax, DWORD PTR k$[rbp]
+ 00094 ff c0 inc eax
+ 00096 89 45 64 mov DWORD PTR k$[rbp], eax
+
+; 4987 : a->code_buffer >>= 8;
+
+ 00099 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000a0 8b 40 18 mov eax, DWORD PTR [rax+24]
+ 000a3 c1 e8 08 shr eax, 8
+ 000a6 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000ad 89 41 18 mov DWORD PTR [rcx+24], eax
+
+; 4988 : a->num_bits -= 8;
+
+ 000b0 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000b7 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 000ba 83 e8 08 sub eax, 8
+ 000bd 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000c4 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 4989 : }
+
+ 000c7 eb a4 jmp SHORT $LN2@stbi__pars
+$LN3@stbi__pars:
+
+; 4990 : if (a->num_bits < 0)
+
+ 000c9 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000d0 83 78 10 00 cmp DWORD PTR [rax+16], 0
+ 000d4 7d 11 jge SHORT $LN7@stbi__pars
+
+; 4991 : return stbi__err("zlib corrupt", "Corrupt PNG");
+
+ 000d6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@IECDHMDI@zlib?5corrupt@
+ 000dd e8 00 00 00 00 call stbi__err
+ 000e2 e9 54 01 00 00 jmp $LN1@stbi__pars
+$LN7@stbi__pars:
+$LN4@stbi__pars:
+
+; 4992 : // now fill header the normal way
+; 4993 : while (k < 4)
+
+ 000e7 83 7d 64 04 cmp DWORD PTR k$[rbp], 4
+ 000eb 7d 1e jge SHORT $LN5@stbi__pars
+
+; 4994 : header[k++] = stbi__zget8(a);
+
+ 000ed 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000f4 e8 00 00 00 00 call stbi__zget8
+ 000f9 48 63 4d 64 movsxd rcx, DWORD PTR k$[rbp]
+ 000fd 88 44 0d 04 mov BYTE PTR header$[rbp+rcx], al
+ 00101 8b 45 64 mov eax, DWORD PTR k$[rbp]
+ 00104 ff c0 inc eax
+ 00106 89 45 64 mov DWORD PTR k$[rbp], eax
+ 00109 eb dc jmp SHORT $LN4@stbi__pars
+$LN5@stbi__pars:
+
+; 4995 : len = header[1] * 256 + header[0];
+
+ 0010b b8 01 00 00 00 mov eax, 1
+ 00110 48 6b c0 01 imul rax, rax, 1
+ 00114 0f b6 44 05 04 movzx eax, BYTE PTR header$[rbp+rax]
+ 00119 69 c0 00 01 00
+ 00 imul eax, eax, 256 ; 00000100H
+ 0011f b9 01 00 00 00 mov ecx, 1
+ 00124 48 6b c9 00 imul rcx, rcx, 0
+ 00128 0f b6 4c 0d 04 movzx ecx, BYTE PTR header$[rbp+rcx]
+ 0012d 03 c1 add eax, ecx
+ 0012f 89 45 24 mov DWORD PTR len$[rbp], eax
+
+; 4996 : nlen = header[3] * 256 + header[2];
+
+ 00132 b8 01 00 00 00 mov eax, 1
+ 00137 48 6b c0 03 imul rax, rax, 3
+ 0013b 0f b6 44 05 04 movzx eax, BYTE PTR header$[rbp+rax]
+ 00140 69 c0 00 01 00
+ 00 imul eax, eax, 256 ; 00000100H
+ 00146 b9 01 00 00 00 mov ecx, 1
+ 0014b 48 6b c9 02 imul rcx, rcx, 2
+ 0014f 0f b6 4c 0d 04 movzx ecx, BYTE PTR header$[rbp+rcx]
+ 00154 03 c1 add eax, ecx
+ 00156 89 45 44 mov DWORD PTR nlen$[rbp], eax
+
+; 4997 : if (nlen != (len ^ 0xffff))
+
+ 00159 8b 45 24 mov eax, DWORD PTR len$[rbp]
+ 0015c 35 ff ff 00 00 xor eax, 65535 ; 0000ffffH
+ 00161 39 45 44 cmp DWORD PTR nlen$[rbp], eax
+ 00164 74 11 je SHORT $LN8@stbi__pars
+
+; 4998 : return stbi__err("zlib corrupt", "Corrupt PNG");
+
+ 00166 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@IECDHMDI@zlib?5corrupt@
+ 0016d e8 00 00 00 00 call stbi__err
+ 00172 e9 c4 00 00 00 jmp $LN1@stbi__pars
+$LN8@stbi__pars:
+
+; 4999 : if (a->zbuffer + len > a->zbuffer_end)
+
+ 00177 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
+ 0017b 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00182 48 03 01 add rax, QWORD PTR [rcx]
+ 00185 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0018c 48 3b 41 08 cmp rax, QWORD PTR [rcx+8]
+ 00190 76 11 jbe SHORT $LN9@stbi__pars
+
+; 5000 : return stbi__err("read past buffer", "Corrupt PNG");
+
+ 00192 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@PIPBCKIA@read?5past?5buffer@
+ 00199 e8 00 00 00 00 call stbi__err
+ 0019e e9 98 00 00 00 jmp $LN1@stbi__pars
+$LN9@stbi__pars:
+
+; 5001 : if (a->zout + len > a->zout_end)
+
+ 001a3 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
+ 001a7 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 001ae 48 03 41 20 add rax, QWORD PTR [rcx+32]
+ 001b2 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 001b9 48 3b 41 30 cmp rax, QWORD PTR [rcx+48]
+ 001bd 76 23 jbe SHORT $LN10@stbi__pars
+
+; 5002 : if (!stbi__zexpand(a, a->zout, len))
+
+ 001bf 44 8b 45 24 mov r8d, DWORD PTR len$[rbp]
+ 001c3 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 001ca 48 8b 50 20 mov rdx, QWORD PTR [rax+32]
+ 001ce 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 001d5 e8 00 00 00 00 call stbi__zexpand
+ 001da 85 c0 test eax, eax
+ 001dc 75 04 jne SHORT $LN11@stbi__pars
+
+; 5003 : return 0;
+
+ 001de 33 c0 xor eax, eax
+ 001e0 eb 59 jmp SHORT $LN1@stbi__pars
+$LN11@stbi__pars:
+$LN10@stbi__pars:
+
+; 5004 : memcpy(a->zout, a->zbuffer, len);
+
+ 001e2 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
+ 001e6 4c 8b c0 mov r8, rax
+ 001e9 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 001f0 48 8b 10 mov rdx, QWORD PTR [rax]
+ 001f3 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 001fa 48 8b 48 20 mov rcx, QWORD PTR [rax+32]
+ 001fe e8 00 00 00 00 call memcpy
+ 00203 90 npad 1
+
+; 5005 : a->zbuffer += len;
+
+ 00204 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
+ 00208 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0020f 48 03 01 add rax, QWORD PTR [rcx]
+ 00212 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00219 48 89 01 mov QWORD PTR [rcx], rax
+
+; 5006 : a->zout += len;
+
+ 0021c 48 63 45 24 movsxd rax, DWORD PTR len$[rbp]
+ 00220 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00227 48 03 41 20 add rax, QWORD PTR [rcx+32]
+ 0022b 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00232 48 89 41 20 mov QWORD PTR [rcx+32], rax
+
+; 5007 : return 1;
+
+ 00236 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__pars:
+
+; 5008 : }
+
+ 0023b 48 8b f8 mov rdi, rax
+ 0023e 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00242 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__parse_uncompressed_block$rtcFrameData
+ 00249 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0024e 48 8b c7 mov rax, rdi
+ 00251 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 00258 5f pop rdi
+ 00259 5d pop rbp
+ 0025a c3 ret 0
+stbi__parse_uncompressed_block ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__compute_huffman_codes
+_TEXT SEGMENT
+z_codelength$ = 16
+lencodes$ = 2080
+codelength_sizes$ = 2568
+i$ = 2612
+n$ = 2644
+hlit$ = 2676
+hdist$ = 2708
+hclen$ = 2740
+ntot$ = 2772
+s$6 = 2804
+c$7 = 2836
+fill$8 = 2868
+tv175 = 4040
+__$ArrayPad$ = 4048
+a$ = 4096
+stbi__compute_huffman_codes PROC ; COMDAT
+
+; 4920 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 b8 08 10 00 00 mov eax, 4104 ; 00001008H
+ 0000c e8 00 00 00 00 call __chkstk
+ 00011 48 2b e0 sub rsp, rax
+ 00014 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00019 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001e b9 da 02 00 00 mov ecx, 730 ; 000002daH
+ 00023 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00028 f3 ab rep stosd
+ 0002a 48 8b 8c 24 28
+ 10 00 00 mov rcx, QWORD PTR [rsp+4136]
+ 00032 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00039 48 33 c5 xor rax, rbp
+ 0003c 48 89 85 d0 0f
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00043 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0004a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004f 90 npad 1
+
+; 4921 : static const stbi_uc length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5,
+; 4922 : 11, 4, 12, 3, 13, 2, 14, 1, 15 };
+; 4923 : stbi__zhuffman z_codelength;
+; 4924 : stbi_uc lencodes[286 + 32 + 137]; //padding for maximum single op
+; 4925 : stbi_uc codelength_sizes[19];
+; 4926 : int i, n;
+; 4927 :
+; 4928 : int hlit = stbi__zreceive(a, 5) + 257;
+
+ 00050 ba 05 00 00 00 mov edx, 5
+ 00055 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0005c e8 00 00 00 00 call stbi__zreceive
+ 00061 05 01 01 00 00 add eax, 257 ; 00000101H
+ 00066 89 85 74 0a 00
+ 00 mov DWORD PTR hlit$[rbp], eax
+
+; 4929 : int hdist = stbi__zreceive(a, 5) + 1;
+
+ 0006c ba 05 00 00 00 mov edx, 5
+ 00071 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00078 e8 00 00 00 00 call stbi__zreceive
+ 0007d ff c0 inc eax
+ 0007f 89 85 94 0a 00
+ 00 mov DWORD PTR hdist$[rbp], eax
+
+; 4930 : int hclen = stbi__zreceive(a, 4) + 4;
+
+ 00085 ba 04 00 00 00 mov edx, 4
+ 0008a 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00091 e8 00 00 00 00 call stbi__zreceive
+ 00096 83 c0 04 add eax, 4
+ 00099 89 85 b4 0a 00
+ 00 mov DWORD PTR hclen$[rbp], eax
+
+; 4931 : int ntot = hlit + hdist;
+
+ 0009f 8b 85 94 0a 00
+ 00 mov eax, DWORD PTR hdist$[rbp]
+ 000a5 8b 8d 74 0a 00
+ 00 mov ecx, DWORD PTR hlit$[rbp]
+ 000ab 03 c8 add ecx, eax
+ 000ad 8b c1 mov eax, ecx
+ 000af 89 85 d4 0a 00
+ 00 mov DWORD PTR ntot$[rbp], eax
+
+; 4932 :
+; 4933 : memset(codelength_sizes, 0, sizeof(codelength_sizes));
+
+ 000b5 41 b8 13 00 00
+ 00 mov r8d, 19
+ 000bb 33 d2 xor edx, edx
+ 000bd 48 8d 8d 08 0a
+ 00 00 lea rcx, QWORD PTR codelength_sizes$[rbp]
+ 000c4 e8 00 00 00 00 call memset
+ 000c9 90 npad 1
+
+; 4934 : for (i = 0; i < hclen; ++i) {
+
+ 000ca c7 85 34 0a 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 000d4 eb 0e jmp SHORT $LN4@stbi__comp
+$LN2@stbi__comp:
+ 000d6 8b 85 34 0a 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 000dc ff c0 inc eax
+ 000de 89 85 34 0a 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__comp:
+ 000e4 8b 85 b4 0a 00
+ 00 mov eax, DWORD PTR hclen$[rbp]
+ 000ea 39 85 34 0a 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 000f0 7d 39 jge SHORT $LN3@stbi__comp
+
+; 4935 : int s = stbi__zreceive(a, 3);
+
+ 000f2 ba 03 00 00 00 mov edx, 3
+ 000f7 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000fe e8 00 00 00 00 call stbi__zreceive
+ 00103 89 85 f4 0a 00
+ 00 mov DWORD PTR s$6[rbp], eax
+
+; 4936 : codelength_sizes[length_dezigzag[i]] = (stbi_uc)s;
+
+ 00109 48 63 85 34 0a
+ 00 00 movsxd rax, DWORD PTR i$[rbp]
+ 00110 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:?length_dezigzag@?1??stbi__compute_huffman_codes@@9@9
+ 00117 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0011b 0f b6 8d f4 0a
+ 00 00 movzx ecx, BYTE PTR s$6[rbp]
+ 00122 88 8c 05 08 0a
+ 00 00 mov BYTE PTR codelength_sizes$[rbp+rax], cl
+
+; 4937 : }
+
+ 00129 eb ab jmp SHORT $LN2@stbi__comp
+$LN3@stbi__comp:
+
+; 4938 : if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19))
+
+ 0012b 41 b8 13 00 00
+ 00 mov r8d, 19
+ 00131 48 8d 95 08 0a
+ 00 00 lea rdx, QWORD PTR codelength_sizes$[rbp]
+ 00138 48 8d 4d 10 lea rcx, QWORD PTR z_codelength$[rbp]
+ 0013c e8 00 00 00 00 call stbi__zbuild_huffman
+ 00141 85 c0 test eax, eax
+ 00143 75 07 jne SHORT $LN7@stbi__comp
+
+; 4939 : return 0;
+
+ 00145 33 c0 xor eax, eax
+ 00147 e9 3a 02 00 00 jmp $LN1@stbi__comp
+$LN7@stbi__comp:
+
+; 4940 :
+; 4941 : n = 0;
+
+ 0014c c7 85 54 0a 00
+ 00 00 00 00 00 mov DWORD PTR n$[rbp], 0
+$LN5@stbi__comp:
+
+; 4942 : while (n < ntot) {
+
+ 00156 8b 85 d4 0a 00
+ 00 mov eax, DWORD PTR ntot$[rbp]
+ 0015c 39 85 54 0a 00
+ 00 cmp DWORD PTR n$[rbp], eax
+ 00162 0f 8d a0 01 00
+ 00 jge $LN6@stbi__comp
+
+; 4943 : int c = stbi__zhuffman_decode(a, &z_codelength);
+
+ 00168 48 8d 55 10 lea rdx, QWORD PTR z_codelength$[rbp]
+ 0016c 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00173 e8 00 00 00 00 call stbi__zhuffman_decode
+ 00178 89 85 14 0b 00
+ 00 mov DWORD PTR c$7[rbp], eax
+
+; 4944 : if (c < 0 || c >= 19)
+
+ 0017e 83 bd 14 0b 00
+ 00 00 cmp DWORD PTR c$7[rbp], 0
+ 00185 7c 09 jl SHORT $LN9@stbi__comp
+ 00187 83 bd 14 0b 00
+ 00 13 cmp DWORD PTR c$7[rbp], 19
+ 0018e 7c 11 jl SHORT $LN8@stbi__comp
+$LN9@stbi__comp:
+
+; 4945 : return stbi__err("bad codelengths", "Corrupt PNG");
+
+ 00190 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
+ 00197 e8 00 00 00 00 call stbi__err
+ 0019c e9 e5 01 00 00 jmp $LN1@stbi__comp
+$LN8@stbi__comp:
+
+; 4946 : if (c < 16)
+
+ 001a1 83 bd 14 0b 00
+ 00 10 cmp DWORD PTR c$7[rbp], 16
+ 001a8 7d 28 jge SHORT $LN10@stbi__comp
+
+; 4947 : lencodes[n++] = (stbi_uc)c;
+
+ 001aa 48 63 85 54 0a
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 001b1 0f b6 8d 14 0b
+ 00 00 movzx ecx, BYTE PTR c$7[rbp]
+ 001b8 88 8c 05 20 08
+ 00 00 mov BYTE PTR lencodes$[rbp+rax], cl
+ 001bf 8b 85 54 0a 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 001c5 ff c0 inc eax
+ 001c7 89 85 54 0a 00
+ 00 mov DWORD PTR n$[rbp], eax
+ 001cd e9 31 01 00 00 jmp $LN11@stbi__comp
+$LN10@stbi__comp:
+
+; 4948 : else {
+; 4949 : stbi_uc fill = 0;
+
+ 001d2 c6 85 34 0b 00
+ 00 00 mov BYTE PTR fill$8[rbp], 0
+
+; 4950 : if (c == 16) {
+
+ 001d9 83 bd 14 0b 00
+ 00 10 cmp DWORD PTR c$7[rbp], 16
+ 001e0 75 4e jne SHORT $LN12@stbi__comp
+
+; 4951 : c = stbi__zreceive(a, 2) + 3;
+
+ 001e2 ba 02 00 00 00 mov edx, 2
+ 001e7 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 001ee e8 00 00 00 00 call stbi__zreceive
+ 001f3 83 c0 03 add eax, 3
+ 001f6 89 85 14 0b 00
+ 00 mov DWORD PTR c$7[rbp], eax
+
+; 4952 : if (n == 0)
+
+ 001fc 83 bd 54 0a 00
+ 00 00 cmp DWORD PTR n$[rbp], 0
+ 00203 75 11 jne SHORT $LN14@stbi__comp
+
+; 4953 : return stbi__err("bad codelengths", "Corrupt PNG");
+
+ 00205 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
+ 0020c e8 00 00 00 00 call stbi__err
+ 00211 e9 70 01 00 00 jmp $LN1@stbi__comp
+$LN14@stbi__comp:
+
+; 4954 : fill = lencodes[n - 1];
+
+ 00216 8b 85 54 0a 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 0021c ff c8 dec eax
+ 0021e 48 98 cdqe
+ 00220 0f b6 84 05 20
+ 08 00 00 movzx eax, BYTE PTR lencodes$[rbp+rax]
+ 00228 88 85 34 0b 00
+ 00 mov BYTE PTR fill$8[rbp], al
+ 0022e eb 5b jmp SHORT $LN13@stbi__comp
+$LN12@stbi__comp:
+
+; 4955 : } else if (c == 17) {
+
+ 00230 83 bd 14 0b 00
+ 00 11 cmp DWORD PTR c$7[rbp], 17
+ 00237 75 1c jne SHORT $LN15@stbi__comp
+
+; 4956 : c = stbi__zreceive(a, 3) + 3;
+
+ 00239 ba 03 00 00 00 mov edx, 3
+ 0023e 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00245 e8 00 00 00 00 call stbi__zreceive
+ 0024a 83 c0 03 add eax, 3
+ 0024d 89 85 14 0b 00
+ 00 mov DWORD PTR c$7[rbp], eax
+ 00253 eb 36 jmp SHORT $LN16@stbi__comp
+$LN15@stbi__comp:
+
+; 4957 : } else if (c == 18) {
+
+ 00255 83 bd 14 0b 00
+ 00 12 cmp DWORD PTR c$7[rbp], 18
+ 0025c 75 1c jne SHORT $LN17@stbi__comp
+
+; 4958 : c = stbi__zreceive(a, 7) + 11;
+
+ 0025e ba 07 00 00 00 mov edx, 7
+ 00263 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0026a e8 00 00 00 00 call stbi__zreceive
+ 0026f 83 c0 0b add eax, 11
+ 00272 89 85 14 0b 00
+ 00 mov DWORD PTR c$7[rbp], eax
+
+; 4959 : } else {
+
+ 00278 eb 11 jmp SHORT $LN18@stbi__comp
+$LN17@stbi__comp:
+
+; 4960 : return stbi__err("bad codelengths", "Corrupt PNG");
+
+ 0027a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
+ 00281 e8 00 00 00 00 call stbi__err
+ 00286 e9 fb 00 00 00 jmp $LN1@stbi__comp
+$LN18@stbi__comp:
+$LN16@stbi__comp:
+$LN13@stbi__comp:
+
+; 4961 : }
+; 4962 : if (ntot - n < c)
+
+ 0028b 8b 85 54 0a 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00291 8b 8d d4 0a 00
+ 00 mov ecx, DWORD PTR ntot$[rbp]
+ 00297 2b c8 sub ecx, eax
+ 00299 8b c1 mov eax, ecx
+ 0029b 3b 85 14 0b 00
+ 00 cmp eax, DWORD PTR c$7[rbp]
+ 002a1 7d 11 jge SHORT $LN19@stbi__comp
+
+; 4963 : return stbi__err("bad codelengths", "Corrupt PNG");
+
+ 002a3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
+ 002aa e8 00 00 00 00 call stbi__err
+ 002af e9 d2 00 00 00 jmp $LN1@stbi__comp
+$LN19@stbi__comp:
+
+; 4964 : memset(lencodes + n, fill, c);
+
+ 002b4 48 63 85 14 0b
+ 00 00 movsxd rax, DWORD PTR c$7[rbp]
+ 002bb 0f b6 8d 34 0b
+ 00 00 movzx ecx, BYTE PTR fill$8[rbp]
+ 002c2 48 63 95 54 0a
+ 00 00 movsxd rdx, DWORD PTR n$[rbp]
+ 002c9 48 8d 94 15 20
+ 08 00 00 lea rdx, QWORD PTR lencodes$[rbp+rdx]
+ 002d1 48 89 95 c8 0f
+ 00 00 mov QWORD PTR tv175[rbp], rdx
+ 002d8 4c 8b c0 mov r8, rax
+ 002db 8b d1 mov edx, ecx
+ 002dd 48 8b 85 c8 0f
+ 00 00 mov rax, QWORD PTR tv175[rbp]
+ 002e4 48 8b c8 mov rcx, rax
+ 002e7 e8 00 00 00 00 call memset
+ 002ec 90 npad 1
+
+; 4965 : n += c;
+
+ 002ed 8b 85 14 0b 00
+ 00 mov eax, DWORD PTR c$7[rbp]
+ 002f3 8b 8d 54 0a 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 002f9 03 c8 add ecx, eax
+ 002fb 8b c1 mov eax, ecx
+ 002fd 89 85 54 0a 00
+ 00 mov DWORD PTR n$[rbp], eax
+$LN11@stbi__comp:
+
+; 4966 : }
+; 4967 : }
+
+ 00303 e9 4e fe ff ff jmp $LN5@stbi__comp
+$LN6@stbi__comp:
+
+; 4968 : if (n != ntot)
+
+ 00308 8b 85 d4 0a 00
+ 00 mov eax, DWORD PTR ntot$[rbp]
+ 0030e 39 85 54 0a 00
+ 00 cmp DWORD PTR n$[rbp], eax
+ 00314 74 0e je SHORT $LN20@stbi__comp
+
+; 4969 : return stbi__err("bad codelengths", "Corrupt PNG");
+
+ 00316 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
+ 0031d e8 00 00 00 00 call stbi__err
+ 00322 eb 62 jmp SHORT $LN1@stbi__comp
+$LN20@stbi__comp:
+
+; 4970 : if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit))
+
+ 00324 48 8b 85 00 10
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0032b 48 83 c0 3c add rax, 60 ; 0000003cH
+ 0032f 44 8b 85 74 0a
+ 00 00 mov r8d, DWORD PTR hlit$[rbp]
+ 00336 48 8d 95 20 08
+ 00 00 lea rdx, QWORD PTR lencodes$[rbp]
+ 0033d 48 8b c8 mov rcx, rax
+ 00340 e8 00 00 00 00 call stbi__zbuild_huffman
+ 00345 85 c0 test eax, eax
+ 00347 75 04 jne SHORT $LN21@stbi__comp
+
+; 4971 : return 0;
+
+ 00349 33 c0 xor eax, eax
+ 0034b eb 39 jmp SHORT $LN1@stbi__comp
+$LN21@stbi__comp:
+
+; 4972 : if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist))
+
+ 0034d 48 63 85 74 0a
+ 00 00 movsxd rax, DWORD PTR hlit$[rbp]
+ 00354 48 8d 84 05 20
+ 08 00 00 lea rax, QWORD PTR lencodes$[rbp+rax]
+ 0035c 48 8b 8d 00 10
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00363 48 81 c1 20 08
+ 00 00 add rcx, 2080 ; 00000820H
+ 0036a 44 8b 85 94 0a
+ 00 00 mov r8d, DWORD PTR hdist$[rbp]
+ 00371 48 8b d0 mov rdx, rax
+ 00374 e8 00 00 00 00 call stbi__zbuild_huffman
+ 00379 85 c0 test eax, eax
+ 0037b 75 04 jne SHORT $LN22@stbi__comp
+
+; 4973 : return 0;
+
+ 0037d 33 c0 xor eax, eax
+ 0037f eb 05 jmp SHORT $LN1@stbi__comp
+$LN22@stbi__comp:
+
+; 4974 : return 1;
+
+ 00381 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__comp:
+
+; 4975 : }
+
+ 00386 48 8b f8 mov rdi, rax
+ 00389 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0038d 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__compute_huffman_codes$rtcFrameData
+ 00394 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00399 48 8b c7 mov rax, rdi
+ 0039c 48 8b 8d d0 0f
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 003a3 48 33 cd xor rcx, rbp
+ 003a6 e8 00 00 00 00 call __security_check_cookie
+ 003ab 48 8d a5 e8 0f
+ 00 00 lea rsp, QWORD PTR [rbp+4072]
+ 003b2 5f pop rdi
+ 003b3 5d pop rbp
+ 003b4 c3 ret 0
+stbi__compute_huffman_codes ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__parse_huffman_block
+_TEXT SEGMENT
+zout$ = 8
+z$1 = 36
+p$2 = 72
+len$3 = 100
+dist$4 = 132
+v$5 = 164
+a$ = 416
+stbi__parse_huffman_block PROC ; COMDAT
+
+; 4849 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec a8 01
+ 00 00 sub rsp, 424 ; 000001a8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 4850 : char *zout = a->zout;
+
+ 00020 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00027 48 8b 40 20 mov rax, QWORD PTR [rax+32]
+ 0002b 48 89 45 08 mov QWORD PTR zout$[rbp], rax
+$LN2@stbi__pars:
+
+; 4851 : for (;;) {
+; 4852 : int z = stbi__zhuffman_decode(a, &a->z_length);
+
+ 0002f 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00036 48 83 c0 3c add rax, 60 ; 0000003cH
+ 0003a 48 8b d0 mov rdx, rax
+ 0003d 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00044 e8 00 00 00 00 call stbi__zhuffman_decode
+ 00049 89 45 24 mov DWORD PTR z$1[rbp], eax
+
+; 4853 : if (z < 256) {
+
+ 0004c 81 7d 24 00 01
+ 00 00 cmp DWORD PTR z$1[rbp], 256 ; 00000100H
+ 00053 7d 72 jge SHORT $LN11@stbi__pars
+
+; 4854 : if (z < 0)
+
+ 00055 83 7d 24 00 cmp DWORD PTR z$1[rbp], 0
+ 00059 7d 11 jge SHORT $LN13@stbi__pars
+
+; 4855 : return stbi__err("bad huffman code",
+
+ 0005b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 00062 e8 00 00 00 00 call stbi__err
+ 00067 e9 ae 02 00 00 jmp $LN1@stbi__pars
+$LN13@stbi__pars:
+
+; 4856 : "Corrupt PNG"); // error in huffman codes
+; 4857 : if (zout >= a->zout_end) {
+
+ 0006c 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00073 48 8b 40 30 mov rax, QWORD PTR [rax+48]
+ 00077 48 39 45 08 cmp QWORD PTR zout$[rbp], rax
+ 0007b 72 30 jb SHORT $LN14@stbi__pars
+
+; 4858 : if (!stbi__zexpand(a, zout, 1))
+
+ 0007d 41 b8 01 00 00
+ 00 mov r8d, 1
+ 00083 48 8b 55 08 mov rdx, QWORD PTR zout$[rbp]
+ 00087 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0008e e8 00 00 00 00 call stbi__zexpand
+ 00093 85 c0 test eax, eax
+ 00095 75 07 jne SHORT $LN15@stbi__pars
+
+; 4859 : return 0;
+
+ 00097 33 c0 xor eax, eax
+ 00099 e9 7c 02 00 00 jmp $LN1@stbi__pars
+$LN15@stbi__pars:
+
+; 4860 : zout = a->zout;
+
+ 0009e 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000a5 48 8b 40 20 mov rax, QWORD PTR [rax+32]
+ 000a9 48 89 45 08 mov QWORD PTR zout$[rbp], rax
+$LN14@stbi__pars:
+
+; 4861 : }
+; 4862 : *zout++ = (char)z;
+
+ 000ad 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
+ 000b1 0f b6 4d 24 movzx ecx, BYTE PTR z$1[rbp]
+ 000b5 88 08 mov BYTE PTR [rax], cl
+ 000b7 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
+ 000bb 48 ff c0 inc rax
+ 000be 48 89 45 08 mov QWORD PTR zout$[rbp], rax
+
+; 4863 : } else {
+
+ 000c2 e9 4e 02 00 00 jmp $LN12@stbi__pars
+$LN11@stbi__pars:
+
+; 4864 : stbi_uc *p;
+; 4865 : int len, dist;
+; 4866 : if (z == 256) {
+
+ 000c7 81 7d 24 00 01
+ 00 00 cmp DWORD PTR z$1[rbp], 256 ; 00000100H
+ 000ce 75 44 jne SHORT $LN16@stbi__pars
+
+; 4867 : a->zout = zout;
+
+ 000d0 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000d7 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp]
+ 000db 48 89 48 20 mov QWORD PTR [rax+32], rcx
+
+; 4868 : if (a->hit_zeof_once && a->num_bits < 16) {
+
+ 000df 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000e6 83 78 14 00 cmp DWORD PTR [rax+20], 0
+ 000ea 74 1e je SHORT $LN17@stbi__pars
+ 000ec 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000f3 83 78 10 10 cmp DWORD PTR [rax+16], 16
+ 000f7 7d 11 jge SHORT $LN17@stbi__pars
+
+; 4869 : // The first time we hit zeof, we inserted 16 extra zero bits into our bit
+; 4870 : // buffer so the decoder can just do its speculative decoding. But if we
+; 4871 : // actually consumed any of those bits (which is the case when num_bits < 16),
+; 4872 : // the stream actually read past the end so it is malformed.
+; 4873 : return stbi__err("unexpected end", "Corrupt PNG");
+
+ 000f9 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@CLDJCNKP@unexpected?5end@
+ 00100 e8 00 00 00 00 call stbi__err
+ 00105 e9 10 02 00 00 jmp $LN1@stbi__pars
+$LN17@stbi__pars:
+
+; 4874 : }
+; 4875 : return 1;
+
+ 0010a b8 01 00 00 00 mov eax, 1
+ 0010f e9 06 02 00 00 jmp $LN1@stbi__pars
+$LN16@stbi__pars:
+
+; 4876 : }
+; 4877 : if (z >= 286)
+
+ 00114 81 7d 24 1e 01
+ 00 00 cmp DWORD PTR z$1[rbp], 286 ; 0000011eH
+ 0011b 7c 11 jl SHORT $LN18@stbi__pars
+
+; 4878 : return stbi__err(
+
+ 0011d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 00124 e8 00 00 00 00 call stbi__err
+ 00129 e9 ec 01 00 00 jmp $LN1@stbi__pars
+$LN18@stbi__pars:
+
+; 4879 : "bad huffman code",
+; 4880 : "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data
+; 4881 : z -= 257;
+
+ 0012e 8b 45 24 mov eax, DWORD PTR z$1[rbp]
+ 00131 2d 01 01 00 00 sub eax, 257 ; 00000101H
+ 00136 89 45 24 mov DWORD PTR z$1[rbp], eax
+
+; 4882 : len = stbi__zlength_base[z];
+
+ 00139 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
+ 0013d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__zlength_base
+ 00144 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 00147 89 45 64 mov DWORD PTR len$3[rbp], eax
+
+; 4883 : if (stbi__zlength_extra[z])
+
+ 0014a 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
+ 0014e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__zlength_extra
+ 00155 83 3c 81 00 cmp DWORD PTR [rcx+rax*4], 0
+ 00159 74 24 je SHORT $LN19@stbi__pars
+
+; 4884 : len += stbi__zreceive(a, stbi__zlength_extra[z]);
+
+ 0015b 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
+ 0015f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__zlength_extra
+ 00166 8b 14 81 mov edx, DWORD PTR [rcx+rax*4]
+ 00169 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00170 e8 00 00 00 00 call stbi__zreceive
+ 00175 8b 4d 64 mov ecx, DWORD PTR len$3[rbp]
+ 00178 03 c8 add ecx, eax
+ 0017a 8b c1 mov eax, ecx
+ 0017c 89 45 64 mov DWORD PTR len$3[rbp], eax
+$LN19@stbi__pars:
+
+; 4885 : z = stbi__zhuffman_decode(a, &a->z_distance);
+
+ 0017f 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00186 48 05 20 08 00
+ 00 add rax, 2080 ; 00000820H
+ 0018c 48 8b d0 mov rdx, rax
+ 0018f 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00196 e8 00 00 00 00 call stbi__zhuffman_decode
+ 0019b 89 45 24 mov DWORD PTR z$1[rbp], eax
+
+; 4886 : if (z < 0 || z >= 30)
+
+ 0019e 83 7d 24 00 cmp DWORD PTR z$1[rbp], 0
+ 001a2 7c 06 jl SHORT $LN21@stbi__pars
+ 001a4 83 7d 24 1e cmp DWORD PTR z$1[rbp], 30
+ 001a8 7c 11 jl SHORT $LN20@stbi__pars
+$LN21@stbi__pars:
+
+; 4887 : return stbi__err(
+
+ 001aa 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 001b1 e8 00 00 00 00 call stbi__err
+ 001b6 e9 5f 01 00 00 jmp $LN1@stbi__pars
+$LN20@stbi__pars:
+
+; 4888 : "bad huffman code",
+; 4889 : "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data
+; 4890 : dist = stbi__zdist_base[z];
+
+ 001bb 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
+ 001bf 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__zdist_base
+ 001c6 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 001c9 89 85 84 00 00
+ 00 mov DWORD PTR dist$4[rbp], eax
+
+; 4891 : if (stbi__zdist_extra[z])
+
+ 001cf 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
+ 001d3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__zdist_extra
+ 001da 83 3c 81 00 cmp DWORD PTR [rcx+rax*4], 0
+ 001de 74 2a je SHORT $LN22@stbi__pars
+
+; 4892 : dist += stbi__zreceive(a, stbi__zdist_extra[z]);
+
+ 001e0 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp]
+ 001e4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__zdist_extra
+ 001eb 8b 14 81 mov edx, DWORD PTR [rcx+rax*4]
+ 001ee 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 001f5 e8 00 00 00 00 call stbi__zreceive
+ 001fa 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR dist$4[rbp]
+ 00200 03 c8 add ecx, eax
+ 00202 8b c1 mov eax, ecx
+ 00204 89 85 84 00 00
+ 00 mov DWORD PTR dist$4[rbp], eax
+$LN22@stbi__pars:
+
+; 4893 : if (zout - a->zout_start < dist)
+
+ 0020a 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00211 48 8b 40 28 mov rax, QWORD PTR [rax+40]
+ 00215 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp]
+ 00219 48 2b c8 sub rcx, rax
+ 0021c 48 8b c1 mov rax, rcx
+ 0021f 48 63 8d 84 00
+ 00 00 movsxd rcx, DWORD PTR dist$4[rbp]
+ 00226 48 3b c1 cmp rax, rcx
+ 00229 7d 11 jge SHORT $LN23@stbi__pars
+
+; 4894 : return stbi__err("bad dist", "Corrupt PNG");
+
+ 0022b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08DIAPIMGJ@bad?5dist@
+ 00232 e8 00 00 00 00 call stbi__err
+ 00237 e9 de 00 00 00 jmp $LN1@stbi__pars
+$LN23@stbi__pars:
+
+; 4895 : if (len > a->zout_end - zout) {
+
+ 0023c 48 63 45 64 movsxd rax, DWORD PTR len$3[rbp]
+ 00240 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00247 48 8b 55 08 mov rdx, QWORD PTR zout$[rbp]
+ 0024b 48 8b 49 30 mov rcx, QWORD PTR [rcx+48]
+ 0024f 48 2b ca sub rcx, rdx
+ 00252 48 3b c1 cmp rax, rcx
+ 00255 7e 2e jle SHORT $LN24@stbi__pars
+
+; 4896 : if (!stbi__zexpand(a, zout, len))
+
+ 00257 44 8b 45 64 mov r8d, DWORD PTR len$3[rbp]
+ 0025b 48 8b 55 08 mov rdx, QWORD PTR zout$[rbp]
+ 0025f 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00266 e8 00 00 00 00 call stbi__zexpand
+ 0026b 85 c0 test eax, eax
+ 0026d 75 07 jne SHORT $LN25@stbi__pars
+
+; 4897 : return 0;
+
+ 0026f 33 c0 xor eax, eax
+ 00271 e9 a4 00 00 00 jmp $LN1@stbi__pars
+$LN25@stbi__pars:
+
+; 4898 : zout = a->zout;
+
+ 00276 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0027d 48 8b 40 20 mov rax, QWORD PTR [rax+32]
+ 00281 48 89 45 08 mov QWORD PTR zout$[rbp], rax
+$LN24@stbi__pars:
+
+; 4899 : }
+; 4900 : p = (stbi_uc *)(zout - dist);
+
+ 00285 48 63 85 84 00
+ 00 00 movsxd rax, DWORD PTR dist$4[rbp]
+ 0028c 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp]
+ 00290 48 2b c8 sub rcx, rax
+ 00293 48 8b c1 mov rax, rcx
+ 00296 48 89 45 48 mov QWORD PTR p$2[rbp], rax
+
+; 4901 : if (dist == 1) { // run of one byte; common in images.
+
+ 0029a 83 bd 84 00 00
+ 00 01 cmp DWORD PTR dist$4[rbp], 1
+ 002a1 75 3b jne SHORT $LN26@stbi__pars
+
+; 4902 : stbi_uc v = *p;
+
+ 002a3 48 8b 45 48 mov rax, QWORD PTR p$2[rbp]
+ 002a7 0f b6 00 movzx eax, BYTE PTR [rax]
+ 002aa 88 85 a4 00 00
+ 00 mov BYTE PTR v$5[rbp], al
+
+; 4903 : if (len) {
+
+ 002b0 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
+ 002b4 74 26 je SHORT $LN28@stbi__pars
+$LN7@stbi__pars:
+
+; 4904 : do
+; 4905 : *zout++ = v;
+
+ 002b6 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
+ 002ba 0f b6 8d a4 00
+ 00 00 movzx ecx, BYTE PTR v$5[rbp]
+ 002c1 88 08 mov BYTE PTR [rax], cl
+ 002c3 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
+ 002c7 48 ff c0 inc rax
+ 002ca 48 89 45 08 mov QWORD PTR zout$[rbp], rax
+
+; 4906 : while (--len);
+
+ 002ce 8b 45 64 mov eax, DWORD PTR len$3[rbp]
+ 002d1 ff c8 dec eax
+ 002d3 89 45 64 mov DWORD PTR len$3[rbp], eax
+ 002d6 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
+ 002da 75 da jne SHORT $LN7@stbi__pars
+$LN28@stbi__pars:
+
+; 4907 : }
+; 4908 : } else {
+
+ 002dc eb 37 jmp SHORT $LN27@stbi__pars
+$LN26@stbi__pars:
+
+; 4909 : if (len) {
+
+ 002de 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
+ 002e2 74 31 je SHORT $LN29@stbi__pars
+$LN10@stbi__pars:
+
+; 4910 : do
+; 4911 : *zout++ = *p++;
+
+ 002e4 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
+ 002e8 48 8b 4d 48 mov rcx, QWORD PTR p$2[rbp]
+ 002ec 0f b6 09 movzx ecx, BYTE PTR [rcx]
+ 002ef 88 08 mov BYTE PTR [rax], cl
+ 002f1 48 8b 45 08 mov rax, QWORD PTR zout$[rbp]
+ 002f5 48 ff c0 inc rax
+ 002f8 48 89 45 08 mov QWORD PTR zout$[rbp], rax
+ 002fc 48 8b 45 48 mov rax, QWORD PTR p$2[rbp]
+ 00300 48 ff c0 inc rax
+ 00303 48 89 45 48 mov QWORD PTR p$2[rbp], rax
+
+; 4912 : while (--len);
+
+ 00307 8b 45 64 mov eax, DWORD PTR len$3[rbp]
+ 0030a ff c8 dec eax
+ 0030c 89 45 64 mov DWORD PTR len$3[rbp], eax
+ 0030f 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0
+ 00313 75 cf jne SHORT $LN10@stbi__pars
+$LN29@stbi__pars:
+$LN27@stbi__pars:
+$LN12@stbi__pars:
+
+; 4913 : }
+; 4914 : }
+; 4915 : }
+; 4916 : }
+
+ 00315 e9 15 fd ff ff jmp $LN2@stbi__pars
+$LN1@stbi__pars:
+
+; 4917 : }
+
+ 0031a 48 8d a5 88 01
+ 00 00 lea rsp, QWORD PTR [rbp+392]
+ 00321 5f pop rdi
+ 00322 5d pop rbp
+ 00323 c3 ret 0
+stbi__parse_huffman_block ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__zexpand
+_TEXT SEGMENT
+q$ = 8
+cur$ = 36
+limit$ = 68
+old_limit$ = 100
+z$ = 352
+zout$ = 360
+n$ = 368
+stbi__zexpand PROC ; COMDAT
+
+; 4808 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 68 01
+ 00 00 sub rsp, 360 ; 00000168H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 4809 : char *q;
+; 4810 : unsigned int cur, limit, old_limit;
+; 4811 : z->zout = zout;
+
+ 0002a 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00031 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR zout$[rbp]
+ 00038 48 89 48 20 mov QWORD PTR [rax+32], rcx
+
+; 4812 : if (!z->z_expandable)
+
+ 0003c 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00043 83 78 38 00 cmp DWORD PTR [rax+56], 0
+ 00047 75 11 jne SHORT $LN4@stbi__zexp
+
+; 4813 : return stbi__err("output buffer limit", "Corrupt PNG");
+
+ 00049 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BE@IBFIPFO@output?5buffer?5limit@
+ 00050 e8 00 00 00 00 call stbi__err
+ 00055 e9 05 01 00 00 jmp $LN1@stbi__zexp
+$LN4@stbi__zexp:
+
+; 4814 : cur = (unsigned int)(z->zout - z->zout_start);
+
+ 0005a 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00061 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00068 48 8b 49 28 mov rcx, QWORD PTR [rcx+40]
+ 0006c 48 8b 40 20 mov rax, QWORD PTR [rax+32]
+ 00070 48 2b c1 sub rax, rcx
+ 00073 89 45 24 mov DWORD PTR cur$[rbp], eax
+
+; 4815 : limit = old_limit = (unsigned)(z->zout_end - z->zout_start);
+
+ 00076 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0007d 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00084 48 8b 49 28 mov rcx, QWORD PTR [rcx+40]
+ 00088 48 8b 40 30 mov rax, QWORD PTR [rax+48]
+ 0008c 48 2b c1 sub rax, rcx
+ 0008f 89 45 64 mov DWORD PTR old_limit$[rbp], eax
+ 00092 8b 45 64 mov eax, DWORD PTR old_limit$[rbp]
+ 00095 89 45 44 mov DWORD PTR limit$[rbp], eax
+
+; 4816 : if (UINT_MAX - cur < (unsigned)n)
+
+ 00098 b8 ff ff ff ff mov eax, -1 ; ffffffffH
+ 0009d 2b 45 24 sub eax, DWORD PTR cur$[rbp]
+ 000a0 3b 85 70 01 00
+ 00 cmp eax, DWORD PTR n$[rbp]
+ 000a6 73 11 jae SHORT $LN5@stbi__zexp
+
+; 4817 : return stbi__err("outofmem", "Out of memory");
+
+ 000a8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 000af e8 00 00 00 00 call stbi__err
+ 000b4 e9 a6 00 00 00 jmp $LN1@stbi__zexp
+$LN5@stbi__zexp:
+$LN2@stbi__zexp:
+
+; 4818 : while (cur + n > limit) {
+
+ 000b9 8b 85 70 01 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 000bf 8b 4d 24 mov ecx, DWORD PTR cur$[rbp]
+ 000c2 03 c8 add ecx, eax
+ 000c4 8b c1 mov eax, ecx
+ 000c6 3b 45 44 cmp eax, DWORD PTR limit$[rbp]
+ 000c9 76 21 jbe SHORT $LN3@stbi__zexp
+
+; 4819 : if (limit > UINT_MAX / 2)
+
+ 000cb 81 7d 44 ff ff
+ ff 7f cmp DWORD PTR limit$[rbp], 2147483647 ; 7fffffffH
+ 000d2 76 0e jbe SHORT $LN6@stbi__zexp
+
+; 4820 : return stbi__err("outofmem", "Out of memory");
+
+ 000d4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 000db e8 00 00 00 00 call stbi__err
+ 000e0 eb 7d jmp SHORT $LN1@stbi__zexp
+$LN6@stbi__zexp:
+
+; 4821 : limit *= 2;
+
+ 000e2 8b 45 44 mov eax, DWORD PTR limit$[rbp]
+ 000e5 d1 e0 shl eax, 1
+ 000e7 89 45 44 mov DWORD PTR limit$[rbp], eax
+
+; 4822 : }
+
+ 000ea eb cd jmp SHORT $LN2@stbi__zexp
+$LN3@stbi__zexp:
+
+; 4823 : q = (char *)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit);
+
+ 000ec 8b 45 44 mov eax, DWORD PTR limit$[rbp]
+ 000ef 8b d0 mov edx, eax
+ 000f1 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000f8 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
+ 000fc ff 15 00 00 00
+ 00 call QWORD PTR __imp_realloc
+ 00102 48 89 45 08 mov QWORD PTR q$[rbp], rax
+
+; 4824 : STBI_NOTUSED(old_limit);
+; 4825 : if (q == NULL)
+
+ 00106 48 83 7d 08 00 cmp QWORD PTR q$[rbp], 0
+ 0010b 75 0e jne SHORT $LN7@stbi__zexp
+
+; 4826 : return stbi__err("outofmem", "Out of memory");
+
+ 0010d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00114 e8 00 00 00 00 call stbi__err
+ 00119 eb 44 jmp SHORT $LN1@stbi__zexp
+$LN7@stbi__zexp:
+
+; 4827 : z->zout_start = q;
+
+ 0011b 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00122 48 8b 4d 08 mov rcx, QWORD PTR q$[rbp]
+ 00126 48 89 48 28 mov QWORD PTR [rax+40], rcx
+
+; 4828 : z->zout = q + cur;
+
+ 0012a 8b 45 24 mov eax, DWORD PTR cur$[rbp]
+ 0012d 48 8b 4d 08 mov rcx, QWORD PTR q$[rbp]
+ 00131 48 03 c8 add rcx, rax
+ 00134 48 8b c1 mov rax, rcx
+ 00137 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0013e 48 89 41 20 mov QWORD PTR [rcx+32], rax
+
+; 4829 : z->zout_end = q + limit;
+
+ 00142 8b 45 44 mov eax, DWORD PTR limit$[rbp]
+ 00145 48 8b 4d 08 mov rcx, QWORD PTR q$[rbp]
+ 00149 48 03 c8 add rcx, rax
+ 0014c 48 8b c1 mov rax, rcx
+ 0014f 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00156 48 89 41 30 mov QWORD PTR [rcx+48], rax
+
+; 4830 : return 1;
+
+ 0015a b8 01 00 00 00 mov eax, 1
+$LN1@stbi__zexp:
+
+; 4831 : }
+
+ 0015f 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 00166 5f pop rdi
+ 00167 5d pop rbp
+ 00168 c3 ret 0
+stbi__zexpand ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__zhuffman_decode
+_TEXT SEGMENT
+b$ = 4
+s$ = 36
+tv145 = 248
+a$ = 288
+z$ = 296
+stbi__zhuffman_decode PROC ; COMDAT
+
+; 4778 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 4779 : int b, s;
+; 4780 : if (a->num_bits < 16) {
+
+ 00025 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 0002c 83 78 10 10 cmp DWORD PTR [rax+16], 16
+ 00030 7d 5d jge SHORT $LN2@stbi__zhuf
+
+; 4781 : if (stbi__zeof(a)) {
+
+ 00032 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00039 e8 00 00 00 00 call stbi__zeof
+ 0003e 85 c0 test eax, eax
+ 00040 74 40 je SHORT $LN3@stbi__zhuf
+
+; 4782 : if (!a->hit_zeof_once) {
+
+ 00042 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00049 83 78 14 00 cmp DWORD PTR [rax+20], 0
+ 0004d 75 27 jne SHORT $LN5@stbi__zhuf
+
+; 4783 : // This is the first time we hit eof, insert 16 extra padding btis
+; 4784 : // to allow us to keep going; if we actually consume any of them
+; 4785 : // though, that is invalid data. This is caught later.
+; 4786 : a->hit_zeof_once = 1;
+
+ 0004f 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00056 c7 40 14 01 00
+ 00 00 mov DWORD PTR [rax+20], 1
+
+; 4787 : a->num_bits += 16; // add 16 implicit zero bits
+
+ 0005d 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00064 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 00067 83 c0 10 add eax, 16
+ 0006a 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00071 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 4788 : } else {
+
+ 00074 eb 0a jmp SHORT $LN6@stbi__zhuf
+$LN5@stbi__zhuf:
+
+; 4789 : // We already inserted our extra 16 padding bits and are again
+; 4790 : // out, this stream is actually prematurely terminated.
+; 4791 : return -1;
+
+ 00076 b8 ff ff ff ff mov eax, -1
+ 0007b e9 9d 00 00 00 jmp $LN1@stbi__zhuf
+$LN6@stbi__zhuf:
+
+; 4792 : }
+; 4793 : } else {
+
+ 00080 eb 0d jmp SHORT $LN4@stbi__zhuf
+$LN3@stbi__zhuf:
+
+; 4794 : stbi__fill_bits(a);
+
+ 00082 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00089 e8 00 00 00 00 call stbi__fill_bits
+ 0008e 90 npad 1
+$LN4@stbi__zhuf:
+$LN2@stbi__zhuf:
+
+; 4795 : }
+; 4796 : }
+; 4797 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK];
+
+ 0008f 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00096 8b 40 18 mov eax, DWORD PTR [rax+24]
+ 00099 25 ff 01 00 00 and eax, 511 ; 000001ffH
+ 0009e 8b c0 mov eax, eax
+ 000a0 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000a7 0f b7 04 41 movzx eax, WORD PTR [rcx+rax*2]
+ 000ab 89 45 04 mov DWORD PTR b$[rbp], eax
+
+; 4798 : if (b) {
+
+ 000ae 83 7d 04 00 cmp DWORD PTR b$[rbp], 0
+ 000b2 74 56 je SHORT $LN7@stbi__zhuf
+
+; 4799 : s = b >> 9;
+
+ 000b4 8b 45 04 mov eax, DWORD PTR b$[rbp]
+ 000b7 c1 f8 09 sar eax, 9
+ 000ba 89 45 24 mov DWORD PTR s$[rbp], eax
+
+; 4800 : a->code_buffer >>= s;
+
+ 000bd 8b 45 24 mov eax, DWORD PTR s$[rbp]
+ 000c0 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000c7 48 89 8d f8 00
+ 00 00 mov QWORD PTR tv145[rbp], rcx
+ 000ce 0f b6 c8 movzx ecx, al
+ 000d1 48 8b 85 f8 00
+ 00 00 mov rax, QWORD PTR tv145[rbp]
+ 000d8 8b 40 18 mov eax, DWORD PTR [rax+24]
+ 000db d3 e8 shr eax, cl
+ 000dd 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000e4 89 41 18 mov DWORD PTR [rcx+24], eax
+
+; 4801 : a->num_bits -= s;
+
+ 000e7 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 000ee 8b 4d 24 mov ecx, DWORD PTR s$[rbp]
+ 000f1 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 000f4 2b c1 sub eax, ecx
+ 000f6 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000fd 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 4802 : return b & 511;
+
+ 00100 8b 45 04 mov eax, DWORD PTR b$[rbp]
+ 00103 25 ff 01 00 00 and eax, 511 ; 000001ffH
+ 00108 eb 13 jmp SHORT $LN1@stbi__zhuf
+$LN7@stbi__zhuf:
+
+; 4803 : }
+; 4804 : return stbi__zhuffman_decode_slowpath(a, z);
+
+ 0010a 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00111 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00118 e8 00 00 00 00 call stbi__zhuffman_decode_slowpath
+$LN1@stbi__zhuf:
+
+; 4805 : }
+
+ 0011d 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00124 5f pop rdi
+ 00125 5d pop rbp
+ 00126 c3 ret 0
+stbi__zhuffman_decode ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__zhuffman_decode_slowpath
+_TEXT SEGMENT
+b$ = 4
+s$ = 36
+k$ = 68
+tv159 = 280
+a$ = 320
+z$ = 328
+stbi__zhuffman_decode_slowpath PROC ; COMDAT
+
+; 4756 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 4757 : int b, s, k;
+; 4758 : // not resolved by fast table, so compute it the slow way
+; 4759 : // use jpeg approach, which requires MSbits at top
+; 4760 : k = stbi__bit_reverse(a->code_buffer, 16);
+
+ 00025 ba 10 00 00 00 mov edx, 16
+ 0002a 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00031 8b 48 18 mov ecx, DWORD PTR [rax+24]
+ 00034 e8 00 00 00 00 call stbi__bit_reverse
+ 00039 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 4761 : for (s = STBI__ZFAST_BITS + 1;; ++s)
+
+ 0003c c7 45 24 0a 00
+ 00 00 mov DWORD PTR s$[rbp], 10
+ 00043 eb 08 jmp SHORT $LN4@stbi__zhuf
+$LN2@stbi__zhuf:
+ 00045 8b 45 24 mov eax, DWORD PTR s$[rbp]
+ 00048 ff c0 inc eax
+ 0004a 89 45 24 mov DWORD PTR s$[rbp], eax
+$LN4@stbi__zhuf:
+
+; 4762 : if (k < z->maxcode[s])
+
+ 0004d 48 63 45 24 movsxd rax, DWORD PTR s$[rbp]
+ 00051 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00058 8b 84 81 20 04
+ 00 00 mov eax, DWORD PTR [rcx+rax*4+1056]
+ 0005f 39 45 44 cmp DWORD PTR k$[rbp], eax
+ 00062 7d 02 jge SHORT $LN5@stbi__zhuf
+
+; 4763 : break;
+
+ 00064 eb 02 jmp SHORT $LN3@stbi__zhuf
+$LN5@stbi__zhuf:
+ 00066 eb dd jmp SHORT $LN2@stbi__zhuf
+$LN3@stbi__zhuf:
+
+; 4764 : if (s >= 16)
+
+ 00068 83 7d 24 10 cmp DWORD PTR s$[rbp], 16
+ 0006c 7c 0a jl SHORT $LN6@stbi__zhuf
+
+; 4765 : return -1; // invalid code!
+
+ 0006e b8 ff ff ff ff mov eax, -1
+ 00073 e9 c2 00 00 00 jmp $LN1@stbi__zhuf
+$LN6@stbi__zhuf:
+
+; 4766 : // code size is s, so:
+; 4767 : b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s];
+
+ 00078 b8 10 00 00 00 mov eax, 16
+ 0007d 2b 45 24 sub eax, DWORD PTR s$[rbp]
+ 00080 0f b6 c8 movzx ecx, al
+ 00083 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 00086 d3 f8 sar eax, cl
+ 00088 48 63 4d 24 movsxd rcx, DWORD PTR s$[rbp]
+ 0008c 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00093 0f b7 8c 4a 00
+ 04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1024]
+ 0009b 2b c1 sub eax, ecx
+ 0009d 48 63 4d 24 movsxd rcx, DWORD PTR s$[rbp]
+ 000a1 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 000a8 0f b7 8c 4a 64
+ 04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1124]
+ 000b0 03 c1 add eax, ecx
+ 000b2 89 45 04 mov DWORD PTR b$[rbp], eax
+
+; 4768 : if (b >= STBI__ZNSYMS)
+
+ 000b5 81 7d 04 20 01
+ 00 00 cmp DWORD PTR b$[rbp], 288 ; 00000120H
+ 000bc 7c 07 jl SHORT $LN7@stbi__zhuf
+
+; 4769 : return -1; // some data was corrupt somewhere!
+
+ 000be b8 ff ff ff ff mov eax, -1
+ 000c3 eb 75 jmp SHORT $LN1@stbi__zhuf
+$LN7@stbi__zhuf:
+
+; 4770 : if (z->size[b] != s)
+
+ 000c5 48 63 45 04 movsxd rax, DWORD PTR b$[rbp]
+ 000c9 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000d0 0f b6 84 01 84
+ 04 00 00 movzx eax, BYTE PTR [rcx+rax+1156]
+ 000d8 3b 45 24 cmp eax, DWORD PTR s$[rbp]
+ 000db 74 07 je SHORT $LN8@stbi__zhuf
+
+; 4771 : return -1; // was originally an assert, but report failure instead.
+
+ 000dd b8 ff ff ff ff mov eax, -1
+ 000e2 eb 56 jmp SHORT $LN1@stbi__zhuf
+$LN8@stbi__zhuf:
+
+; 4772 : a->code_buffer >>= s;
+
+ 000e4 8b 45 24 mov eax, DWORD PTR s$[rbp]
+ 000e7 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 000ee 48 89 8d 18 01
+ 00 00 mov QWORD PTR tv159[rbp], rcx
+ 000f5 0f b6 c8 movzx ecx, al
+ 000f8 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv159[rbp]
+ 000ff 8b 40 18 mov eax, DWORD PTR [rax+24]
+ 00102 d3 e8 shr eax, cl
+ 00104 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 0010b 89 41 18 mov DWORD PTR [rcx+24], eax
+
+; 4773 : a->num_bits -= s;
+
+ 0010e 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR a$[rbp]
+ 00115 8b 4d 24 mov ecx, DWORD PTR s$[rbp]
+ 00118 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 0011b 2b c1 sub eax, ecx
+ 0011d 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR a$[rbp]
+ 00124 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 4774 : return z->value[b];
+
+ 00127 48 63 45 04 movsxd rax, DWORD PTR b$[rbp]
+ 0012b 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00132 0f b7 84 41 a4
+ 05 00 00 movzx eax, WORD PTR [rcx+rax*2+1444]
+$LN1@stbi__zhuf:
+
+; 4775 : }
+
+ 0013a 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 00141 5f pop rdi
+ 00142 5d pop rbp
+ 00143 c3 ret 0
+stbi__zhuffman_decode_slowpath ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__zreceive
+_TEXT SEGMENT
+k$ = 4
+tv84 = 212
+tv90 = 216
+z$ = 256
+n$ = 264
+stbi__zreceive PROC ; COMDAT
+
+; 4745 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 4746 : unsigned int k;
+; 4747 : if (z->num_bits < n)
+
+ 00024 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0002b 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00031 39 48 10 cmp DWORD PTR [rax+16], ecx
+ 00034 7d 0d jge SHORT $LN2@stbi__zrec
+
+; 4748 : stbi__fill_bits(z);
+
+ 00036 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0003d e8 00 00 00 00 call stbi__fill_bits
+ 00042 90 npad 1
+$LN2@stbi__zrec:
+
+; 4749 : k = z->code_buffer & ((1 << n) - 1);
+
+ 00043 8b 85 08 01 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00049 b9 01 00 00 00 mov ecx, 1
+ 0004e 89 8d d4 00 00
+ 00 mov DWORD PTR tv84[rbp], ecx
+ 00054 0f b6 c8 movzx ecx, al
+ 00057 8b 85 d4 00 00
+ 00 mov eax, DWORD PTR tv84[rbp]
+ 0005d d3 e0 shl eax, cl
+ 0005f ff c8 dec eax
+ 00061 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00068 8b 49 18 mov ecx, DWORD PTR [rcx+24]
+ 0006b 23 c8 and ecx, eax
+ 0006d 8b c1 mov eax, ecx
+ 0006f 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 4750 : z->code_buffer >>= n;
+
+ 00072 8b 85 08 01 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00078 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0007f 48 89 8d d8 00
+ 00 00 mov QWORD PTR tv90[rbp], rcx
+ 00086 0f b6 c8 movzx ecx, al
+ 00089 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv90[rbp]
+ 00090 8b 40 18 mov eax, DWORD PTR [rax+24]
+ 00093 d3 e8 shr eax, cl
+ 00095 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0009c 89 41 18 mov DWORD PTR [rcx+24], eax
+
+; 4751 : z->num_bits -= n;
+
+ 0009f 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000a6 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 000ac 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 000af 2b c1 sub eax, ecx
+ 000b1 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000b8 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 4752 : return k;
+
+ 000bb 8b 45 04 mov eax, DWORD PTR k$[rbp]
+
+; 4753 : }
+
+ 000be 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000c5 5f pop rdi
+ 000c6 5d pop rbp
+ 000c7 c3 ret 0
+stbi__zreceive ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__fill_bits
+_TEXT SEGMENT
+tv92 = 192
+z$ = 240
+stbi__fill_bits PROC ; COMDAT
+
+; 4733 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+$LN4@stbi__fill:
+
+; 4734 : do {
+; 4735 : if (z->code_buffer >= (1U << z->num_bits)) {
+
+ 00020 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00027 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 0002a b9 01 00 00 00 mov ecx, 1
+ 0002f 89 8d c0 00 00
+ 00 mov DWORD PTR tv92[rbp], ecx
+ 00035 0f b6 c8 movzx ecx, al
+ 00038 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv92[rbp]
+ 0003e d3 e0 shl eax, cl
+ 00040 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00047 39 41 18 cmp DWORD PTR [rcx+24], eax
+ 0004a 72 17 jb SHORT $LN5@stbi__fill
+
+; 4736 : z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */
+
+ 0004c 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00053 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0005a 48 8b 49 08 mov rcx, QWORD PTR [rcx+8]
+ 0005e 48 89 08 mov QWORD PTR [rax], rcx
+
+; 4737 : return;
+
+ 00061 eb 5b jmp SHORT $LN1@stbi__fill
+$LN5@stbi__fill:
+
+; 4738 : }
+; 4739 : z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits;
+
+ 00063 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0006a e8 00 00 00 00 call stbi__zget8
+ 0006f 0f b6 c0 movzx eax, al
+ 00072 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00079 8b 49 10 mov ecx, DWORD PTR [rcx+16]
+ 0007c d3 e0 shl eax, cl
+ 0007e 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00085 8b 49 18 mov ecx, DWORD PTR [rcx+24]
+ 00088 0b c8 or ecx, eax
+ 0008a 8b c1 mov eax, ecx
+ 0008c 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00093 89 41 18 mov DWORD PTR [rcx+24], eax
+
+; 4740 : z->num_bits += 8;
+
+ 00096 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0009d 8b 40 10 mov eax, DWORD PTR [rax+16]
+ 000a0 83 c0 08 add eax, 8
+ 000a3 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000aa 89 41 10 mov DWORD PTR [rcx+16], eax
+
+; 4741 : } while (z->num_bits <= 24);
+
+ 000ad 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000b4 83 78 10 18 cmp DWORD PTR [rax+16], 24
+ 000b8 0f 8e 62 ff ff
+ ff jle $LN4@stbi__fill
+$LN1@stbi__fill:
+
+; 4742 : }
+
+ 000be 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000c5 5f pop rdi
+ 000c6 5d pop rbp
+ 000c7 c3 ret 0
+stbi__fill_bits ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__zget8
+_TEXT SEGMENT
+tv73 = 192
+z$ = 240
+stbi__zget8 PROC ; COMDAT
+
+; 4728 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 4729 : return stbi__zeof(z) ? 0 : *z->zbuffer++;
+
+ 00020 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00027 e8 00 00 00 00 call stbi__zeof
+ 0002c 85 c0 test eax, eax
+ 0002e 74 0c je SHORT $LN3@stbi__zget
+ 00030 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
+ 0003a eb 2a jmp SHORT $LN4@stbi__zget
+$LN3@stbi__zget:
+ 0003c 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00043 48 8b 00 mov rax, QWORD PTR [rax]
+ 00046 0f b6 00 movzx eax, BYTE PTR [rax]
+ 00049 89 85 c0 00 00
+ 00 mov DWORD PTR tv73[rbp], eax
+ 0004f 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00056 48 8b 00 mov rax, QWORD PTR [rax]
+ 00059 48 ff c0 inc rax
+ 0005c 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00063 48 89 01 mov QWORD PTR [rcx], rax
+$LN4@stbi__zget:
+ 00066 0f b6 85 c0 00
+ 00 00 movzx eax, BYTE PTR tv73[rbp]
+
+; 4730 : }
+
+ 0006d 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 00074 5f pop rdi
+ 00075 5d pop rbp
+ 00076 c3 ret 0
+stbi__zget8 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__zeof
+_TEXT SEGMENT
+tv67 = 192
+z$ = 240
+stbi__zeof PROC ; COMDAT
+
+; 4723 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 4724 : return (z->zbuffer >= z->zbuffer_end);
+
+ 00020 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00027 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0002e 48 8b 49 08 mov rcx, QWORD PTR [rcx+8]
+ 00032 48 39 08 cmp QWORD PTR [rax], rcx
+ 00035 72 0c jb SHORT $LN3@stbi__zeof
+ 00037 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
+ 00041 eb 0a jmp SHORT $LN4@stbi__zeof
+$LN3@stbi__zeof:
+ 00043 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
+$LN4@stbi__zeof:
+ 0004d 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv67[rbp]
+
+; 4725 : }
+
+ 00053 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 0005a 5f pop rdi
+ 0005b 5d pop rbp
+ 0005c c3 ret 0
+stbi__zeof ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__zbuild_huffman
+_TEXT SEGMENT
+i$ = 4
+k$ = 36
+code$ = 68
+next_code$ = 112
+sizes$ = 208
+s$5 = 308
+c$6 = 340
+fastv$7 = 372
+j$8 = 404
+tv289 = 612
+__$ArrayPad$ = 616
+z$ = 656
+sizelist$ = 664
+num$ = 672
+stbi__zbuild_huffman PROC ; COMDAT
+
+; 4655 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 98 02
+ 00 00 sub rsp, 664 ; 00000298H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00022 b9 6e 00 00 00 mov ecx, 110 ; 0000006eH
+ 00027 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 0002c f3 ab rep stosd
+ 0002e 48 8b 8c 24 b8
+ 02 00 00 mov rcx, QWORD PTR [rsp+696]
+ 00036 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 0003d 48 33 c5 xor rax, rbp
+ 00040 48 89 85 68 02
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00047 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0004e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00053 90 npad 1
+
+; 4656 : int i, k = 0;
+
+ 00054 c7 45 24 00 00
+ 00 00 mov DWORD PTR k$[rbp], 0
+
+; 4657 : int code, next_code[16], sizes[17];
+; 4658 :
+; 4659 : // DEFLATE spec for generating codes
+; 4660 : memset(sizes, 0, sizeof(sizes));
+
+ 0005b 41 b8 44 00 00
+ 00 mov r8d, 68 ; 00000044H
+ 00061 33 d2 xor edx, edx
+ 00063 48 8d 8d d0 00
+ 00 00 lea rcx, QWORD PTR sizes$[rbp]
+ 0006a e8 00 00 00 00 call memset
+ 0006f 90 npad 1
+
+; 4661 : memset(z->fast, 0, sizeof(z->fast));
+
+ 00070 48 8b 85 90 02
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00077 41 b8 00 04 00
+ 00 mov r8d, 1024 ; 00000400H
+ 0007d 33 d2 xor edx, edx
+ 0007f 48 8b c8 mov rcx, rax
+ 00082 e8 00 00 00 00 call memset
+ 00087 90 npad 1
+
+; 4662 : for (i = 0; i < num; ++i)
+
+ 00088 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0008f eb 08 jmp SHORT $LN4@stbi__zbui
+$LN2@stbi__zbui:
+ 00091 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00094 ff c0 inc eax
+ 00096 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__zbui:
+ 00099 8b 85 a0 02 00
+ 00 mov eax, DWORD PTR num$[rbp]
+ 0009f 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 000a2 7d 30 jge SHORT $LN3@stbi__zbui
+
+; 4663 : ++sizes[sizelist[i]];
+
+ 000a4 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000a8 48 8b 8d 98 02
+ 00 00 mov rcx, QWORD PTR sizelist$[rbp]
+ 000af 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 000b3 8b 84 85 d0 00
+ 00 00 mov eax, DWORD PTR sizes$[rbp+rax*4]
+ 000ba ff c0 inc eax
+ 000bc 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 000c0 48 8b 95 98 02
+ 00 00 mov rdx, QWORD PTR sizelist$[rbp]
+ 000c7 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000cb 89 84 8d d0 00
+ 00 00 mov DWORD PTR sizes$[rbp+rcx*4], eax
+ 000d2 eb bd jmp SHORT $LN2@stbi__zbui
+$LN3@stbi__zbui:
+
+; 4664 : sizes[0] = 0;
+
+ 000d4 b8 04 00 00 00 mov eax, 4
+ 000d9 48 6b c0 00 imul rax, rax, 0
+ 000dd c7 84 05 d0 00
+ 00 00 00 00 00
+ 00 mov DWORD PTR sizes$[rbp+rax], 0
+
+; 4665 : for (i = 1; i < 16; ++i)
+
+ 000e8 c7 45 04 01 00
+ 00 00 mov DWORD PTR i$[rbp], 1
+ 000ef eb 08 jmp SHORT $LN7@stbi__zbui
+$LN5@stbi__zbui:
+ 000f1 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000f4 ff c0 inc eax
+ 000f6 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__zbui:
+ 000f9 83 7d 04 10 cmp DWORD PTR i$[rbp], 16
+ 000fd 7d 2c jge SHORT $LN6@stbi__zbui
+
+; 4666 : if (sizes[i] > (1 << i))
+
+ 000ff 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00103 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00106 ba 01 00 00 00 mov edx, 1
+ 0010b d3 e2 shl edx, cl
+ 0010d 8b ca mov ecx, edx
+ 0010f 39 8c 85 d0 00
+ 00 00 cmp DWORD PTR sizes$[rbp+rax*4], ecx
+ 00116 7e 11 jle SHORT $LN16@stbi__zbui
+
+; 4667 : return stbi__err("bad sizes", "Corrupt PNG");
+
+ 00118 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09EOHLEIKL@bad?5sizes@
+ 0011f e8 00 00 00 00 call stbi__err
+ 00124 e9 6b 02 00 00 jmp $LN1@stbi__zbui
+$LN16@stbi__zbui:
+ 00129 eb c6 jmp SHORT $LN5@stbi__zbui
+$LN6@stbi__zbui:
+
+; 4668 : code = 0;
+
+ 0012b c7 45 44 00 00
+ 00 00 mov DWORD PTR code$[rbp], 0
+
+; 4669 : for (i = 1; i < 16; ++i) {
+
+ 00132 c7 45 04 01 00
+ 00 00 mov DWORD PTR i$[rbp], 1
+ 00139 eb 08 jmp SHORT $LN10@stbi__zbui
+$LN8@stbi__zbui:
+ 0013b 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0013e ff c0 inc eax
+ 00140 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN10@stbi__zbui:
+ 00143 83 7d 04 10 cmp DWORD PTR i$[rbp], 16
+ 00147 0f 8d c6 00 00
+ 00 jge $LN9@stbi__zbui
+
+; 4670 : next_code[i] = code;
+
+ 0014d 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00151 8b 4d 44 mov ecx, DWORD PTR code$[rbp]
+ 00154 89 4c 85 70 mov DWORD PTR next_code$[rbp+rax*4], ecx
+
+; 4671 : z->firstcode[i] = (stbi__uint16)code;
+
+ 00158 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0015c 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00163 0f b7 55 44 movzx edx, WORD PTR code$[rbp]
+ 00167 66 89 94 41 00
+ 04 00 00 mov WORD PTR [rcx+rax*2+1024], dx
+
+; 4672 : z->firstsymbol[i] = (stbi__uint16)k;
+
+ 0016f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00173 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0017a 0f b7 55 24 movzx edx, WORD PTR k$[rbp]
+ 0017e 66 89 94 41 64
+ 04 00 00 mov WORD PTR [rcx+rax*2+1124], dx
+
+; 4673 : code = (code + sizes[i]);
+
+ 00186 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0018a 8b 84 85 d0 00
+ 00 00 mov eax, DWORD PTR sizes$[rbp+rax*4]
+ 00191 8b 4d 44 mov ecx, DWORD PTR code$[rbp]
+ 00194 03 c8 add ecx, eax
+ 00196 8b c1 mov eax, ecx
+ 00198 89 45 44 mov DWORD PTR code$[rbp], eax
+
+; 4674 : if (sizes[i])
+
+ 0019b 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0019f 83 bc 85 d0 00
+ 00 00 00 cmp DWORD PTR sizes$[rbp+rax*4], 0
+ 001a7 74 26 je SHORT $LN17@stbi__zbui
+
+; 4675 : if (code - 1 >= (1 << i))
+
+ 001a9 8b 45 44 mov eax, DWORD PTR code$[rbp]
+ 001ac ff c8 dec eax
+ 001ae 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 001b1 ba 01 00 00 00 mov edx, 1
+ 001b6 d3 e2 shl edx, cl
+ 001b8 8b ca mov ecx, edx
+ 001ba 3b c1 cmp eax, ecx
+ 001bc 7c 11 jl SHORT $LN18@stbi__zbui
+
+; 4676 : return stbi__err("bad codelengths", "Corrupt PNG");
+
+ 001be 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MDNKOBMC@bad?5codelengths@
+ 001c5 e8 00 00 00 00 call stbi__err
+ 001ca e9 c5 01 00 00 jmp $LN1@stbi__zbui
+$LN18@stbi__zbui:
+$LN17@stbi__zbui:
+
+; 4677 : z->maxcode[i] = code << (16 - i); // preshift for inner loop
+
+ 001cf b8 10 00 00 00 mov eax, 16
+ 001d4 2b 45 04 sub eax, DWORD PTR i$[rbp]
+ 001d7 0f b6 c8 movzx ecx, al
+ 001da 8b 45 44 mov eax, DWORD PTR code$[rbp]
+ 001dd d3 e0 shl eax, cl
+ 001df 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 001e3 48 8b 95 90 02
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 001ea 89 84 8a 20 04
+ 00 00 mov DWORD PTR [rdx+rcx*4+1056], eax
+
+; 4678 : code <<= 1;
+
+ 001f1 8b 45 44 mov eax, DWORD PTR code$[rbp]
+ 001f4 d1 e0 shl eax, 1
+ 001f6 89 45 44 mov DWORD PTR code$[rbp], eax
+
+; 4679 : k += sizes[i];
+
+ 001f9 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 001fd 8b 84 85 d0 00
+ 00 00 mov eax, DWORD PTR sizes$[rbp+rax*4]
+ 00204 8b 4d 24 mov ecx, DWORD PTR k$[rbp]
+ 00207 03 c8 add ecx, eax
+ 00209 8b c1 mov eax, ecx
+ 0020b 89 45 24 mov DWORD PTR k$[rbp], eax
+
+; 4680 : }
+
+ 0020e e9 28 ff ff ff jmp $LN8@stbi__zbui
+$LN9@stbi__zbui:
+
+; 4681 : z->maxcode[16] = 0x10000; // sentinel
+
+ 00213 b8 04 00 00 00 mov eax, 4
+ 00218 48 6b c0 10 imul rax, rax, 16
+ 0021c 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00223 c7 84 01 20 04
+ 00 00 00 00 01
+ 00 mov DWORD PTR [rcx+rax+1056], 65536 ; 00010000H
+
+; 4682 : for (i = 0; i < num; ++i) {
+
+ 0022e c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00235 eb 08 jmp SHORT $LN13@stbi__zbui
+$LN11@stbi__zbui:
+ 00237 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0023a ff c0 inc eax
+ 0023c 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN13@stbi__zbui:
+ 0023f 8b 85 a0 02 00
+ 00 mov eax, DWORD PTR num$[rbp]
+ 00245 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00248 0f 8d 41 01 00
+ 00 jge $LN12@stbi__zbui
+
+; 4683 : int s = sizelist[i];
+
+ 0024e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00252 48 8b 8d 98 02
+ 00 00 mov rcx, QWORD PTR sizelist$[rbp]
+ 00259 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0025d 89 85 34 01 00
+ 00 mov DWORD PTR s$5[rbp], eax
+
+; 4684 : if (s) {
+
+ 00263 83 bd 34 01 00
+ 00 00 cmp DWORD PTR s$5[rbp], 0
+ 0026a 0f 84 1a 01 00
+ 00 je $LN19@stbi__zbui
+
+; 4685 : int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s];
+
+ 00270 48 63 85 34 01
+ 00 00 movsxd rax, DWORD PTR s$5[rbp]
+ 00277 48 63 8d 34 01
+ 00 00 movsxd rcx, DWORD PTR s$5[rbp]
+ 0027e 48 8b 95 90 02
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00285 0f b7 8c 4a 00
+ 04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1024]
+ 0028d 8b 44 85 70 mov eax, DWORD PTR next_code$[rbp+rax*4]
+ 00291 2b c1 sub eax, ecx
+ 00293 48 63 8d 34 01
+ 00 00 movsxd rcx, DWORD PTR s$5[rbp]
+ 0029a 48 8b 95 90 02
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 002a1 0f b7 8c 4a 64
+ 04 00 00 movzx ecx, WORD PTR [rdx+rcx*2+1124]
+ 002a9 03 c1 add eax, ecx
+ 002ab 89 85 54 01 00
+ 00 mov DWORD PTR c$6[rbp], eax
+
+; 4686 : stbi__uint16 fastv = (stbi__uint16)((s << 9) | i);
+
+ 002b1 8b 85 34 01 00
+ 00 mov eax, DWORD PTR s$5[rbp]
+ 002b7 c1 e0 09 shl eax, 9
+ 002ba 0b 45 04 or eax, DWORD PTR i$[rbp]
+ 002bd 66 89 85 74 01
+ 00 00 mov WORD PTR fastv$7[rbp], ax
+
+; 4687 : z->size[c] = (stbi_uc)s;
+
+ 002c4 48 63 85 54 01
+ 00 00 movsxd rax, DWORD PTR c$6[rbp]
+ 002cb 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002d2 0f b6 95 34 01
+ 00 00 movzx edx, BYTE PTR s$5[rbp]
+ 002d9 88 94 01 84 04
+ 00 00 mov BYTE PTR [rcx+rax+1156], dl
+
+; 4688 : z->value[c] = (stbi__uint16)i;
+
+ 002e0 48 63 85 54 01
+ 00 00 movsxd rax, DWORD PTR c$6[rbp]
+ 002e7 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002ee 0f b7 55 04 movzx edx, WORD PTR i$[rbp]
+ 002f2 66 89 94 41 a4
+ 05 00 00 mov WORD PTR [rcx+rax*2+1444], dx
+
+; 4689 : if (s <= STBI__ZFAST_BITS) {
+
+ 002fa 83 bd 34 01 00
+ 00 09 cmp DWORD PTR s$5[rbp], 9
+ 00301 7f 6f jg SHORT $LN20@stbi__zbui
+
+; 4690 : int j = stbi__bit_reverse(next_code[s], s);
+
+ 00303 48 63 85 34 01
+ 00 00 movsxd rax, DWORD PTR s$5[rbp]
+ 0030a 8b 95 34 01 00
+ 00 mov edx, DWORD PTR s$5[rbp]
+ 00310 8b 4c 85 70 mov ecx, DWORD PTR next_code$[rbp+rax*4]
+ 00314 e8 00 00 00 00 call stbi__bit_reverse
+ 00319 89 85 94 01 00
+ 00 mov DWORD PTR j$8[rbp], eax
+$LN14@stbi__zbui:
+
+; 4691 : while (j < (1 << STBI__ZFAST_BITS)) {
+
+ 0031f 81 bd 94 01 00
+ 00 00 02 00 00 cmp DWORD PTR j$8[rbp], 512 ; 00000200H
+ 00329 7d 47 jge SHORT $LN15@stbi__zbui
+
+; 4692 : z->fast[j] = fastv;
+
+ 0032b 48 63 85 94 01
+ 00 00 movsxd rax, DWORD PTR j$8[rbp]
+ 00332 48 8b 8d 90 02
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00339 0f b7 95 74 01
+ 00 00 movzx edx, WORD PTR fastv$7[rbp]
+ 00340 66 89 14 41 mov WORD PTR [rcx+rax*2], dx
+
+; 4693 : j += (1 << s);
+
+ 00344 8b 85 34 01 00
+ 00 mov eax, DWORD PTR s$5[rbp]
+ 0034a b9 01 00 00 00 mov ecx, 1
+ 0034f 89 8d 64 02 00
+ 00 mov DWORD PTR tv289[rbp], ecx
+ 00355 0f b6 c8 movzx ecx, al
+ 00358 8b 85 64 02 00
+ 00 mov eax, DWORD PTR tv289[rbp]
+ 0035e d3 e0 shl eax, cl
+ 00360 8b 8d 94 01 00
+ 00 mov ecx, DWORD PTR j$8[rbp]
+ 00366 03 c8 add ecx, eax
+ 00368 8b c1 mov eax, ecx
+ 0036a 89 85 94 01 00
+ 00 mov DWORD PTR j$8[rbp], eax
+
+; 4694 : }
+
+ 00370 eb ad jmp SHORT $LN14@stbi__zbui
+$LN15@stbi__zbui:
+$LN20@stbi__zbui:
+
+; 4695 : }
+; 4696 : ++next_code[s];
+
+ 00372 48 63 85 34 01
+ 00 00 movsxd rax, DWORD PTR s$5[rbp]
+ 00379 8b 44 85 70 mov eax, DWORD PTR next_code$[rbp+rax*4]
+ 0037d ff c0 inc eax
+ 0037f 48 63 8d 34 01
+ 00 00 movsxd rcx, DWORD PTR s$5[rbp]
+ 00386 89 44 8d 70 mov DWORD PTR next_code$[rbp+rcx*4], eax
+$LN19@stbi__zbui:
+
+; 4697 : }
+; 4698 : }
+
+ 0038a e9 a8 fe ff ff jmp $LN11@stbi__zbui
+$LN12@stbi__zbui:
+
+; 4699 : return 1;
+
+ 0038f b8 01 00 00 00 mov eax, 1
+$LN1@stbi__zbui:
+
+; 4700 : }
+
+ 00394 48 8b f8 mov rdi, rax
+ 00397 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0039b 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__zbuild_huffman$rtcFrameData
+ 003a2 e8 00 00 00 00 call _RTC_CheckStackVars
+ 003a7 48 8b c7 mov rax, rdi
+ 003aa 48 8b 8d 68 02
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 003b1 48 33 cd xor rcx, rbp
+ 003b4 e8 00 00 00 00 call __security_check_cookie
+ 003b9 48 8d a5 78 02
+ 00 00 lea rsp, QWORD PTR [rbp+632]
+ 003c0 5f pop rdi
+ 003c1 5d pop rbp
+ 003c2 c3 ret 0
+stbi__zbuild_huffman ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bit_reverse
+_TEXT SEGMENT
+v$ = 224
+bits$ = 232
+stbi__bit_reverse PROC ; COMDAT
+
+; 4647 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00008 55 push rbp
+ 00009 57 push rdi
+ 0000a 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00016 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00022 90 npad 1
+
+; 4648 : STBI_ASSERT(bits <= 16);
+
+ 00023 83 bd e8 00 00
+ 00 10 cmp DWORD PTR bits$[rbp], 16
+ 0002a 7e 1c jle SHORT $LN3@stbi__bit_
+ 0002c 41 b8 28 12 00
+ 00 mov r8d, 4648 ; 00001228H
+ 00032 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00039 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1BG@HKNLHECB@?$AAb?$AAi?$AAt?$AAs?$AA?5?$AA?$DM?$AA?$DN?$AA?5?$AA1?$AA6@
+ 00040 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00046 33 c0 xor eax, eax
+$LN3@stbi__bit_:
+
+; 4649 : // to bit reverse n bits, reverse 16 and shift
+; 4650 : // e.g. 11 bits, bit reverse and shift away 5
+; 4651 : return stbi__bitreverse16(v) >> (16 - bits);
+
+ 00048 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR v$[rbp]
+ 0004e e8 00 00 00 00 call stbi__bitreverse16
+ 00053 b9 10 00 00 00 mov ecx, 16
+ 00058 2b 8d e8 00 00
+ 00 sub ecx, DWORD PTR bits$[rbp]
+ 0005e d3 f8 sar eax, cl
+
+; 4652 : }
+
+ 00060 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00067 5f pop rdi
+ 00068 5d pop rbp
+ 00069 c3 ret 0
+stbi__bit_reverse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bitreverse16
+_TEXT SEGMENT
+n$ = 224
+stbi__bitreverse16 PROC ; COMDAT
+
+; 4638 : {
+
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 4639 : n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1);
+
+ 0001f 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00025 25 aa aa 00 00 and eax, 43690 ; 0000aaaaH
+ 0002a d1 f8 sar eax, 1
+ 0002c 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00032 81 e1 55 55 00
+ 00 and ecx, 21845 ; 00005555H
+ 00038 d1 e1 shl ecx, 1
+ 0003a 0b c1 or eax, ecx
+ 0003c 89 85 e0 00 00
+ 00 mov DWORD PTR n$[rbp], eax
+
+; 4640 : n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2);
+
+ 00042 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00048 25 cc cc 00 00 and eax, 52428 ; 0000ccccH
+ 0004d c1 f8 02 sar eax, 2
+ 00050 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00056 81 e1 33 33 00
+ 00 and ecx, 13107 ; 00003333H
+ 0005c c1 e1 02 shl ecx, 2
+ 0005f 0b c1 or eax, ecx
+ 00061 89 85 e0 00 00
+ 00 mov DWORD PTR n$[rbp], eax
+
+; 4641 : n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4);
+
+ 00067 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 0006d 25 f0 f0 00 00 and eax, 61680 ; 0000f0f0H
+ 00072 c1 f8 04 sar eax, 4
+ 00075 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 0007b 81 e1 0f 0f 00
+ 00 and ecx, 3855 ; 00000f0fH
+ 00081 c1 e1 04 shl ecx, 4
+ 00084 0b c1 or eax, ecx
+ 00086 89 85 e0 00 00
+ 00 mov DWORD PTR n$[rbp], eax
+
+; 4642 : n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8);
+
+ 0008c 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00092 25 00 ff 00 00 and eax, 65280 ; 0000ff00H
+ 00097 c1 f8 08 sar eax, 8
+ 0009a 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 000a0 81 e1 ff 00 00
+ 00 and ecx, 255 ; 000000ffH
+ 000a6 c1 e1 08 shl ecx, 8
+ 000a9 0b c1 or eax, ecx
+ 000ab 89 85 e0 00 00
+ 00 mov DWORD PTR n$[rbp], eax
+
+; 4643 : return n;
+
+ 000b1 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR n$[rbp]
+
+; 4644 : }
+
+ 000b7 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 000be 5f pop rdi
+ 000bf 5d pop rbp
+ 000c0 c3 ret 0
+stbi__bitreverse16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_info_raw
+_TEXT SEGMENT
+tv80 = 192
+j$ = 240
+x$ = 248
+y$ = 256
+comp$ = 264
+stbi__jpeg_info_raw PROC ; COMDAT
+
+; 4584 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 4585 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) {
+
+ 0002f ba 02 00 00 00 mov edx, 2
+ 00034 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0003b e8 00 00 00 00 call stbi__decode_jpeg_header
+ 00040 85 c0 test eax, eax
+ 00042 75 17 jne SHORT $LN2@stbi__jpeg
+
+; 4586 : stbi__rewind(j->s);
+
+ 00044 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0004b 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0004e e8 00 00 00 00 call stbi__rewind
+ 00053 90 npad 1
+
+; 4587 : return 0;
+
+ 00054 33 c0 xor eax, eax
+ 00056 e9 83 00 00 00 jmp $LN1@stbi__jpeg
+$LN2@stbi__jpeg:
+
+; 4588 : }
+; 4589 : if (x)
+
+ 0005b 48 83 bd f8 00
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 00063 74 15 je SHORT $LN3@stbi__jpeg
+
+; 4590 : *x = j->s->img_x;
+
+ 00065 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0006c 48 8b 00 mov rax, QWORD PTR [rax]
+ 0006f 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 00076 8b 00 mov eax, DWORD PTR [rax]
+ 00078 89 01 mov DWORD PTR [rcx], eax
+$LN3@stbi__jpeg:
+
+; 4591 : if (y)
+
+ 0007a 48 83 bd 00 01
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 00082 74 16 je SHORT $LN4@stbi__jpeg
+
+; 4592 : *y = j->s->img_y;
+
+ 00084 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0008b 48 8b 00 mov rax, QWORD PTR [rax]
+ 0008e 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 00095 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 00098 89 01 mov DWORD PTR [rcx], eax
+$LN4@stbi__jpeg:
+
+; 4593 : if (comp)
+
+ 0009a 48 83 bd 08 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 000a2 74 35 je SHORT $LN5@stbi__jpeg
+
+; 4594 : *comp = j->s->img_n >= 3 ? 3 : 1;
+
+ 000a4 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000ab 48 8b 00 mov rax, QWORD PTR [rax]
+ 000ae 83 78 08 03 cmp DWORD PTR [rax+8], 3
+ 000b2 7c 0c jl SHORT $LN7@stbi__jpeg
+ 000b4 c7 85 c0 00 00
+ 00 03 00 00 00 mov DWORD PTR tv80[rbp], 3
+ 000be eb 0a jmp SHORT $LN8@stbi__jpeg
+$LN7@stbi__jpeg:
+ 000c0 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv80[rbp], 1
+$LN8@stbi__jpeg:
+ 000ca 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 000d1 8b 8d c0 00 00
+ 00 mov ecx, DWORD PTR tv80[rbp]
+ 000d7 89 08 mov DWORD PTR [rax], ecx
+$LN5@stbi__jpeg:
+
+; 4595 : return 1;
+
+ 000d9 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__jpeg:
+
+; 4596 : }
+
+ 000de 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000e5 5f pop rdi
+ 000e6 5d pop rbp
+ 000e7 c3 ret 0
+stbi__jpeg_info_raw ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT load_jpeg_image
+_TEXT SEGMENT
+n$ = 4
+decode_n$ = 36
+is_rgb$ = 68
+k$5 = 100
+i$6 = 132
+j$7 = 164
+output$8 = 200
+coutput$9 = 232
+res_comp$10 = 304
+r$11 = 520
+out$12 = 552
+r$13 = 584
+y_bot$14 = 612
+y$15 = 648
+m$16 = 676
+m$17 = 708
+m$18 = 740
+r$19 = 772
+g$20 = 804
+b$21 = 836
+y$22 = 872
+tv656 = 1268
+tv694 = 1268
+tv81 = 1268
+tv91 = 1268
+tv252 = 1268
+tv280 = 1268
+tv288 = 1268
+tv516 = 1268
+tv545 = 1268
+tv626 = 1268
+tv79 = 1272
+tv265 = 1272
+tv71 = 1272
+tv159 = 1272
+tv164 = 1272
+tv172 = 1272
+tv232 = 1272
+tv270 = 1280
+__$ArrayPad$ = 1288
+z$ = 1328
+out_x$ = 1336
+out_y$ = 1344
+comp$ = 1352
+req_comp$ = 1360
+load_jpeg_image PROC ; COMDAT
+
+; 4359 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 05
+ 00 00 sub rsp, 1352 ; 00000548H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 e6 00 00 00 mov ecx, 230 ; 000000e6H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 68
+ 05 00 00 mov rcx, QWORD PTR [rsp+1384]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 08 05
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 4360 : int n, decode_n, is_rgb;
+; 4361 : z->s->img_n = 0; // make stbi__cleanup_jpeg safe
+
+ 00059 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00060 48 8b 00 mov rax, QWORD PTR [rax]
+ 00063 c7 40 08 00 00
+ 00 00 mov DWORD PTR [rax+8], 0
+
+; 4362 :
+; 4363 : // validate req_comp
+; 4364 : if (req_comp < 0 || req_comp > 4)
+
+ 0006a 83 bd 50 05 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 00071 7c 09 jl SHORT $LN42@load_jpeg_
+ 00073 83 bd 50 05 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 0007a 7e 34 jle SHORT $LN41@load_jpeg_
+$LN42@load_jpeg_:
+
+; 4365 : return stbi__errpuc("bad req_comp", "Internal error");
+
+ 0007c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@KBPNPPBJ@bad?5req_comp@
+ 00083 e8 00 00 00 00 call stbi__err
+ 00088 85 c0 test eax, eax
+ 0008a 74 0d je SHORT $LN83@load_jpeg_
+ 0008c 48 c7 85 f8 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+ 00097 eb 0b jmp SHORT $LN84@load_jpeg_
+$LN83@load_jpeg_:
+ 00099 48 c7 85 f8 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+$LN84@load_jpeg_:
+ 000a4 48 8b 85 f8 04
+ 00 00 mov rax, QWORD PTR tv71[rbp]
+ 000ab e9 fa 11 00 00 jmp $LN1@load_jpeg_
+$LN41@load_jpeg_:
+
+; 4366 :
+; 4367 : // load a jpeg image from whichever source, but leave in YCbCr format
+; 4368 : if (!stbi__decode_jpeg_image(z)) {
+
+ 000b0 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000b7 e8 00 00 00 00 call stbi__decode_jpeg_image
+ 000bc 85 c0 test eax, eax
+ 000be 75 14 jne SHORT $LN43@load_jpeg_
+
+; 4369 : stbi__cleanup_jpeg(z);
+
+ 000c0 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000c7 e8 00 00 00 00 call stbi__cleanup_jpeg
+ 000cc 90 npad 1
+
+; 4370 : return NULL;
+
+ 000cd 33 c0 xor eax, eax
+ 000cf e9 d6 11 00 00 jmp $LN1@load_jpeg_
+$LN43@load_jpeg_:
+
+; 4371 : }
+; 4372 :
+; 4373 : // determine actual number of components to generate
+; 4374 : n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1;
+
+ 000d4 83 bd 50 05 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 000db 74 0e je SHORT $LN87@load_jpeg_
+ 000dd 8b 85 50 05 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000e3 89 85 f4 04 00
+ 00 mov DWORD PTR tv81[rbp], eax
+ 000e9 eb 32 jmp SHORT $LN88@load_jpeg_
+$LN87@load_jpeg_:
+ 000eb 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000f2 48 8b 00 mov rax, QWORD PTR [rax]
+ 000f5 83 78 08 03 cmp DWORD PTR [rax+8], 3
+ 000f9 7c 0c jl SHORT $LN85@load_jpeg_
+ 000fb c7 85 f8 04 00
+ 00 03 00 00 00 mov DWORD PTR tv79[rbp], 3
+ 00105 eb 0a jmp SHORT $LN86@load_jpeg_
+$LN85@load_jpeg_:
+ 00107 c7 85 f8 04 00
+ 00 01 00 00 00 mov DWORD PTR tv79[rbp], 1
+$LN86@load_jpeg_:
+ 00111 8b 85 f8 04 00
+ 00 mov eax, DWORD PTR tv79[rbp]
+ 00117 89 85 f4 04 00
+ 00 mov DWORD PTR tv81[rbp], eax
+$LN88@load_jpeg_:
+ 0011d 8b 85 f4 04 00
+ 00 mov eax, DWORD PTR tv81[rbp]
+ 00123 89 45 04 mov DWORD PTR n$[rbp], eax
+
+; 4375 :
+; 4376 : is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif));
+
+ 00126 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0012d 48 8b 00 mov rax, QWORD PTR [rax]
+ 00130 83 78 08 03 cmp DWORD PTR [rax+8], 3
+ 00134 75 3c jne SHORT $LN91@load_jpeg_
+ 00136 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0013d 83 b8 50 48 00
+ 00 03 cmp DWORD PTR [rax+18512], 3
+ 00144 74 20 je SHORT $LN90@load_jpeg_
+ 00146 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0014d 83 b8 4c 48 00
+ 00 00 cmp DWORD PTR [rax+18508], 0
+ 00154 75 1c jne SHORT $LN89@load_jpeg_
+ 00156 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0015d 83 b8 48 48 00
+ 00 00 cmp DWORD PTR [rax+18504], 0
+ 00164 75 0c jne SHORT $LN91@load_jpeg_
+$LN90@load_jpeg_:
+ 00166 c7 85 f4 04 00
+ 00 01 00 00 00 mov DWORD PTR tv91[rbp], 1
+ 00170 eb 0a jmp SHORT $LN92@load_jpeg_
+$LN91@load_jpeg_:
+$LN89@load_jpeg_:
+ 00172 c7 85 f4 04 00
+ 00 00 00 00 00 mov DWORD PTR tv91[rbp], 0
+$LN92@load_jpeg_:
+ 0017c 8b 85 f4 04 00
+ 00 mov eax, DWORD PTR tv91[rbp]
+ 00182 89 45 44 mov DWORD PTR is_rgb$[rbp], eax
+
+; 4377 :
+; 4378 : if (z->s->img_n == 3 && n < 3 && !is_rgb)
+
+ 00185 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0018c 48 8b 00 mov rax, QWORD PTR [rax]
+ 0018f 83 78 08 03 cmp DWORD PTR [rax+8], 3
+ 00193 75 15 jne SHORT $LN44@load_jpeg_
+ 00195 83 7d 04 03 cmp DWORD PTR n$[rbp], 3
+ 00199 7d 0f jge SHORT $LN44@load_jpeg_
+ 0019b 83 7d 44 00 cmp DWORD PTR is_rgb$[rbp], 0
+ 0019f 75 09 jne SHORT $LN44@load_jpeg_
+
+; 4379 : decode_n = 1;
+
+ 001a1 c7 45 24 01 00
+ 00 00 mov DWORD PTR decode_n$[rbp], 1
+ 001a8 eb 10 jmp SHORT $LN45@load_jpeg_
+$LN44@load_jpeg_:
+
+; 4380 : else
+; 4381 : decode_n = z->s->img_n;
+
+ 001aa 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 001b1 48 8b 00 mov rax, QWORD PTR [rax]
+ 001b4 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 001b7 89 45 24 mov DWORD PTR decode_n$[rbp], eax
+$LN45@load_jpeg_:
+
+; 4382 :
+; 4383 : // nothing to do if no components requested; check this now to avoid
+; 4384 : // accessing uninitialized coutput[0] later
+; 4385 : if (decode_n <= 0) {
+
+ 001ba 83 7d 24 00 cmp DWORD PTR decode_n$[rbp], 0
+ 001be 7f 14 jg SHORT $LN46@load_jpeg_
+
+; 4386 : stbi__cleanup_jpeg(z);
+
+ 001c0 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 001c7 e8 00 00 00 00 call stbi__cleanup_jpeg
+ 001cc 90 npad 1
+
+; 4387 : return NULL;
+
+ 001cd 33 c0 xor eax, eax
+ 001cf e9 d6 10 00 00 jmp $LN1@load_jpeg_
+$LN46@load_jpeg_:
+
+; 4388 : }
+; 4389 :
+; 4390 : // resample and color-convert
+; 4391 : {
+; 4392 : int k;
+; 4393 : unsigned int i, j;
+; 4394 : stbi_uc *output;
+; 4395 : stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL };
+
+ 001d4 48 c7 85 e8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR coutput$9[rbp], 0
+ 001df 48 c7 85 f0 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR coutput$9[rbp+8], 0
+ 001ea 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR coutput$9[rbp+16], 0
+ 001f5 48 c7 85 00 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR coutput$9[rbp+24], 0
+
+; 4396 :
+; 4397 : stbi__resample res_comp[4];
+; 4398 :
+; 4399 : for (k = 0; k < decode_n; ++k) {
+
+ 00200 c7 45 64 00 00
+ 00 00 mov DWORD PTR k$5[rbp], 0
+ 00207 eb 08 jmp SHORT $LN4@load_jpeg_
+$LN2@load_jpeg_:
+ 00209 8b 45 64 mov eax, DWORD PTR k$5[rbp]
+ 0020c ff c0 inc eax
+ 0020e 89 45 64 mov DWORD PTR k$5[rbp], eax
+$LN4@load_jpeg_:
+ 00211 8b 45 24 mov eax, DWORD PTR decode_n$[rbp]
+ 00214 39 45 64 cmp DWORD PTR k$5[rbp], eax
+ 00217 0f 8d 7b 02 00
+ 00 jge $LN3@load_jpeg_
+
+; 4400 : stbi__resample *r = &res_comp[k];
+
+ 0021d 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 00221 48 6b c0 30 imul rax, rax, 48 ; 00000030H
+ 00225 48 8d 84 05 30
+ 01 00 00 lea rax, QWORD PTR res_comp$10[rbp+rax]
+ 0022d 48 89 85 08 02
+ 00 00 mov QWORD PTR r$11[rbp], rax
+
+; 4401 :
+; 4402 : // allocate line buffer big enough for upsampling off the edges
+; 4403 : // with upsample factor of 4
+; 4404 : z->img_comp[k].linebuf = (stbi_uc *)stbi__malloc(z->s->img_x + 3);
+
+ 00234 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0023b 48 8b 00 mov rax, QWORD PTR [rax]
+ 0023e 8b 00 mov eax, DWORD PTR [rax]
+ 00240 83 c0 03 add eax, 3
+ 00243 8b c0 mov eax, eax
+ 00245 8b c8 mov ecx, eax
+ 00247 e8 00 00 00 00 call stbi__malloc
+ 0024c 48 63 4d 64 movsxd rcx, DWORD PTR k$5[rbp]
+ 00250 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00254 48 8b 95 30 05
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0025b 48 89 84 0a e8
+ 46 00 00 mov QWORD PTR [rdx+rcx+18152], rax
+
+; 4405 : if (!z->img_comp[k].linebuf) {
+
+ 00263 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 00267 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0026b 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00272 48 83 bc 01 e8
+ 46 00 00 00 cmp QWORD PTR [rcx+rax+18152], 0
+ 0027b 75 41 jne SHORT $LN47@load_jpeg_
+
+; 4406 : stbi__cleanup_jpeg(z);
+
+ 0027d 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00284 e8 00 00 00 00 call stbi__cleanup_jpeg
+ 00289 90 npad 1
+
+; 4407 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 0028a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00291 e8 00 00 00 00 call stbi__err
+ 00296 85 c0 test eax, eax
+ 00298 74 0d je SHORT $LN93@load_jpeg_
+ 0029a 48 c7 85 f8 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv159[rbp], 0
+ 002a5 eb 0b jmp SHORT $LN94@load_jpeg_
+$LN93@load_jpeg_:
+ 002a7 48 c7 85 f8 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv159[rbp], 0
+$LN94@load_jpeg_:
+ 002b2 48 8b 85 f8 04
+ 00 00 mov rax, QWORD PTR tv159[rbp]
+ 002b9 e9 ec 0f 00 00 jmp $LN1@load_jpeg_
+$LN47@load_jpeg_:
+
+; 4408 : }
+; 4409 :
+; 4410 : r->hs = z->img_h_max / z->img_comp[k].h;
+
+ 002be 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 002c2 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 002c6 48 89 85 f8 04
+ 00 00 mov QWORD PTR tv164[rbp], rax
+ 002cd 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002d4 8b 81 88 46 00
+ 00 mov eax, DWORD PTR [rcx+18056]
+ 002da 99 cdq
+ 002db 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002e2 4c 8b 85 f8 04
+ 00 00 mov r8, QWORD PTR tv164[rbp]
+ 002e9 42 f7 bc 01 a4
+ 46 00 00 idiv DWORD PTR [rcx+r8+18084]
+ 002f1 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 002f8 89 41 18 mov DWORD PTR [rcx+24], eax
+
+; 4411 : r->vs = z->img_v_max / z->img_comp[k].v;
+
+ 002fb 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 002ff 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00303 48 89 85 f8 04
+ 00 00 mov QWORD PTR tv172[rbp], rax
+ 0030a 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00311 8b 81 8c 46 00
+ 00 mov eax, DWORD PTR [rcx+18060]
+ 00317 99 cdq
+ 00318 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0031f 4c 8b 85 f8 04
+ 00 00 mov r8, QWORD PTR tv172[rbp]
+ 00326 42 f7 bc 01 a8
+ 46 00 00 idiv DWORD PTR [rcx+r8+18088]
+ 0032e 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 00335 89 41 1c mov DWORD PTR [rcx+28], eax
+
+; 4412 : r->ystep = r->vs >> 1;
+
+ 00338 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 0033f 8b 40 1c mov eax, DWORD PTR [rax+28]
+ 00342 d1 f8 sar eax, 1
+ 00344 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 0034b 89 41 24 mov DWORD PTR [rcx+36], eax
+
+; 4413 : r->w_lores = (z->s->img_x + r->hs - 1) / r->hs;
+
+ 0034e 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00355 48 8b 00 mov rax, QWORD PTR [rax]
+ 00358 8b 00 mov eax, DWORD PTR [rax]
+ 0035a 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 00361 8b 49 18 mov ecx, DWORD PTR [rcx+24]
+ 00364 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
+ 00368 33 d2 xor edx, edx
+ 0036a 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 00371 f7 71 18 div DWORD PTR [rcx+24]
+ 00374 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 0037b 89 41 20 mov DWORD PTR [rcx+32], eax
+
+; 4414 : r->ypos = 0;
+
+ 0037e 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00385 c7 40 28 00 00
+ 00 00 mov DWORD PTR [rax+40], 0
+
+; 4415 : r->line0 = r->line1 = z->img_comp[k].data;
+
+ 0038c 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 00390 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00394 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 0039b 48 8b 95 30 05
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 003a2 48 8b 84 02 d0
+ 46 00 00 mov rax, QWORD PTR [rdx+rax+18128]
+ 003aa 48 89 41 10 mov QWORD PTR [rcx+16], rax
+ 003ae 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 003b5 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR r$11[rbp]
+ 003bc 48 8b 49 10 mov rcx, QWORD PTR [rcx+16]
+ 003c0 48 89 48 08 mov QWORD PTR [rax+8], rcx
+
+; 4416 :
+; 4417 : if (r->hs == 1 && r->vs == 1)
+
+ 003c4 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 003cb 83 78 18 01 cmp DWORD PTR [rax+24], 1
+ 003cf 75 23 jne SHORT $LN48@load_jpeg_
+ 003d1 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 003d8 83 78 1c 01 cmp DWORD PTR [rax+28], 1
+ 003dc 75 16 jne SHORT $LN48@load_jpeg_
+
+; 4418 : r->resample = resample_row_1;
+
+ 003de 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 003e5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:resample_row_1
+ 003ec 48 89 08 mov QWORD PTR [rax], rcx
+ 003ef e9 9f 00 00 00 jmp $LN49@load_jpeg_
+$LN48@load_jpeg_:
+
+; 4419 : else if (r->hs == 1 && r->vs == 2)
+
+ 003f4 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 003fb 83 78 18 01 cmp DWORD PTR [rax+24], 1
+ 003ff 75 20 jne SHORT $LN50@load_jpeg_
+ 00401 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00408 83 78 1c 02 cmp DWORD PTR [rax+28], 2
+ 0040c 75 13 jne SHORT $LN50@load_jpeg_
+
+; 4420 : r->resample = stbi__resample_row_v_2;
+
+ 0040e 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00415 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__resample_row_v_2
+ 0041c 48 89 08 mov QWORD PTR [rax], rcx
+ 0041f eb 72 jmp SHORT $LN51@load_jpeg_
+$LN50@load_jpeg_:
+
+; 4421 : else if (r->hs == 2 && r->vs == 1)
+
+ 00421 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00428 83 78 18 02 cmp DWORD PTR [rax+24], 2
+ 0042c 75 20 jne SHORT $LN52@load_jpeg_
+ 0042e 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00435 83 78 1c 01 cmp DWORD PTR [rax+28], 1
+ 00439 75 13 jne SHORT $LN52@load_jpeg_
+
+; 4422 : r->resample = stbi__resample_row_h_2;
+
+ 0043b 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00442 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__resample_row_h_2
+ 00449 48 89 08 mov QWORD PTR [rax], rcx
+ 0044c eb 45 jmp SHORT $LN53@load_jpeg_
+$LN52@load_jpeg_:
+
+; 4423 : else if (r->hs == 2 && r->vs == 2)
+
+ 0044e 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00455 83 78 18 02 cmp DWORD PTR [rax+24], 2
+ 00459 75 27 jne SHORT $LN54@load_jpeg_
+ 0045b 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00462 83 78 1c 02 cmp DWORD PTR [rax+28], 2
+ 00466 75 1a jne SHORT $LN54@load_jpeg_
+
+; 4424 : r->resample = z->resample_row_hv_2_kernel;
+
+ 00468 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 0046f 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00476 48 8b 89 80 48
+ 00 00 mov rcx, QWORD PTR [rcx+18560]
+ 0047d 48 89 08 mov QWORD PTR [rax], rcx
+ 00480 eb 11 jmp SHORT $LN55@load_jpeg_
+$LN54@load_jpeg_:
+
+; 4425 : else
+; 4426 : r->resample = stbi__resample_row_generic;
+
+ 00482 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR r$11[rbp]
+ 00489 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__resample_row_generic
+ 00490 48 89 08 mov QWORD PTR [rax], rcx
+$LN55@load_jpeg_:
+$LN53@load_jpeg_:
+$LN51@load_jpeg_:
+$LN49@load_jpeg_:
+
+; 4427 : }
+
+ 00493 e9 71 fd ff ff jmp $LN2@load_jpeg_
+$LN3@load_jpeg_:
+
+; 4428 :
+; 4429 : // can't error after this so, this is safe
+; 4430 : output = (stbi_uc *)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1);
+
+ 00498 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0049f 48 8b 00 mov rax, QWORD PTR [rax]
+ 004a2 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 004a9 48 8b 09 mov rcx, QWORD PTR [rcx]
+ 004ac 41 b9 01 00 00
+ 00 mov r9d, 1
+ 004b2 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
+ 004b6 8b 11 mov edx, DWORD PTR [rcx]
+ 004b8 8b 4d 04 mov ecx, DWORD PTR n$[rbp]
+ 004bb e8 00 00 00 00 call stbi__malloc_mad3
+ 004c0 48 89 85 c8 00
+ 00 00 mov QWORD PTR output$8[rbp], rax
+
+; 4431 : if (!output) {
+
+ 004c7 48 83 bd c8 00
+ 00 00 00 cmp QWORD PTR output$8[rbp], 0
+ 004cf 75 41 jne SHORT $LN56@load_jpeg_
+
+; 4432 : stbi__cleanup_jpeg(z);
+
+ 004d1 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 004d8 e8 00 00 00 00 call stbi__cleanup_jpeg
+ 004dd 90 npad 1
+
+; 4433 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 004de 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 004e5 e8 00 00 00 00 call stbi__err
+ 004ea 85 c0 test eax, eax
+ 004ec 74 0d je SHORT $LN95@load_jpeg_
+ 004ee 48 c7 85 f8 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv232[rbp], 0
+ 004f9 eb 0b jmp SHORT $LN96@load_jpeg_
+$LN95@load_jpeg_:
+ 004fb 48 c7 85 f8 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv232[rbp], 0
+$LN96@load_jpeg_:
+ 00506 48 8b 85 f8 04
+ 00 00 mov rax, QWORD PTR tv232[rbp]
+ 0050d e9 98 0d 00 00 jmp $LN1@load_jpeg_
+$LN56@load_jpeg_:
+
+; 4434 : }
+; 4435 :
+; 4436 : // now go ahead and resample
+; 4437 : for (j = 0; j < z->s->img_y; ++j) {
+
+ 00512 c7 85 a4 00 00
+ 00 00 00 00 00 mov DWORD PTR j$7[rbp], 0
+ 0051c eb 0e jmp SHORT $LN7@load_jpeg_
+$LN5@load_jpeg_:
+ 0051e 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR j$7[rbp]
+ 00524 ff c0 inc eax
+ 00526 89 85 a4 00 00
+ 00 mov DWORD PTR j$7[rbp], eax
+$LN7@load_jpeg_:
+ 0052c 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00533 48 8b 00 mov rax, QWORD PTR [rax]
+ 00536 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 00539 39 85 a4 00 00
+ 00 cmp DWORD PTR j$7[rbp], eax
+ 0053f 0f 83 e7 0c 00
+ 00 jae $LN6@load_jpeg_
+
+; 4438 : stbi_uc *out = output + n * z->s->img_x * j;
+
+ 00545 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0054c 48 8b 00 mov rax, QWORD PTR [rax]
+ 0054f 8b 4d 04 mov ecx, DWORD PTR n$[rbp]
+ 00552 0f af 08 imul ecx, DWORD PTR [rax]
+ 00555 8b c1 mov eax, ecx
+ 00557 0f af 85 a4 00
+ 00 00 imul eax, DWORD PTR j$7[rbp]
+ 0055e 8b c0 mov eax, eax
+ 00560 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR output$8[rbp]
+ 00567 48 03 c8 add rcx, rax
+ 0056a 48 8b c1 mov rax, rcx
+ 0056d 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4439 : for (k = 0; k < decode_n; ++k) {
+
+ 00574 c7 45 64 00 00
+ 00 00 mov DWORD PTR k$5[rbp], 0
+ 0057b eb 08 jmp SHORT $LN10@load_jpeg_
+$LN8@load_jpeg_:
+ 0057d 8b 45 64 mov eax, DWORD PTR k$5[rbp]
+ 00580 ff c0 inc eax
+ 00582 89 45 64 mov DWORD PTR k$5[rbp], eax
+$LN10@load_jpeg_:
+ 00585 8b 45 24 mov eax, DWORD PTR decode_n$[rbp]
+ 00588 39 45 64 cmp DWORD PTR k$5[rbp], eax
+ 0058b 0f 8d d0 01 00
+ 00 jge $LN9@load_jpeg_
+
+; 4440 : stbi__resample *r = &res_comp[k];
+
+ 00591 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 00595 48 6b c0 30 imul rax, rax, 48 ; 00000030H
+ 00599 48 8d 84 05 30
+ 01 00 00 lea rax, QWORD PTR res_comp$10[rbp+rax]
+ 005a1 48 89 85 48 02
+ 00 00 mov QWORD PTR r$13[rbp], rax
+
+; 4441 : int y_bot = r->ystep >= (r->vs >> 1);
+
+ 005a8 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 005af 8b 40 1c mov eax, DWORD PTR [rax+28]
+ 005b2 d1 f8 sar eax, 1
+ 005b4 48 8b 8d 48 02
+ 00 00 mov rcx, QWORD PTR r$13[rbp]
+ 005bb 39 41 24 cmp DWORD PTR [rcx+36], eax
+ 005be 7c 0c jl SHORT $LN97@load_jpeg_
+ 005c0 c7 85 f4 04 00
+ 00 01 00 00 00 mov DWORD PTR tv252[rbp], 1
+ 005ca eb 0a jmp SHORT $LN98@load_jpeg_
+$LN97@load_jpeg_:
+ 005cc c7 85 f4 04 00
+ 00 00 00 00 00 mov DWORD PTR tv252[rbp], 0
+$LN98@load_jpeg_:
+ 005d6 8b 85 f4 04 00
+ 00 mov eax, DWORD PTR tv252[rbp]
+ 005dc 89 85 64 02 00
+ 00 mov DWORD PTR y_bot$14[rbp], eax
+
+; 4442 : coutput[k] = r->resample(z->img_comp[k].linebuf,
+
+ 005e2 83 bd 64 02 00
+ 00 00 cmp DWORD PTR y_bot$14[rbp], 0
+ 005e9 74 14 je SHORT $LN99@load_jpeg_
+ 005eb 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 005f2 48 8b 40 08 mov rax, QWORD PTR [rax+8]
+ 005f6 48 89 85 f8 04
+ 00 00 mov QWORD PTR tv265[rbp], rax
+ 005fd eb 12 jmp SHORT $LN100@load_jpeg_
+$LN99@load_jpeg_:
+ 005ff 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 00606 48 8b 40 10 mov rax, QWORD PTR [rax+16]
+ 0060a 48 89 85 f8 04
+ 00 00 mov QWORD PTR tv265[rbp], rax
+$LN100@load_jpeg_:
+ 00611 83 bd 64 02 00
+ 00 00 cmp DWORD PTR y_bot$14[rbp], 0
+ 00618 74 14 je SHORT $LN101@load_jpeg_
+ 0061a 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 00621 48 8b 40 10 mov rax, QWORD PTR [rax+16]
+ 00625 48 89 85 00 05
+ 00 00 mov QWORD PTR tv270[rbp], rax
+ 0062c eb 12 jmp SHORT $LN102@load_jpeg_
+$LN101@load_jpeg_:
+ 0062e 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 00635 48 8b 40 08 mov rax, QWORD PTR [rax+8]
+ 00639 48 89 85 00 05
+ 00 00 mov QWORD PTR tv270[rbp], rax
+$LN102@load_jpeg_:
+ 00640 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 00644 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00648 48 8b 8d 48 02
+ 00 00 mov rcx, QWORD PTR r$13[rbp]
+ 0064f 8b 49 18 mov ecx, DWORD PTR [rcx+24]
+ 00652 89 4c 24 20 mov DWORD PTR [rsp+32], ecx
+ 00656 48 8b 8d 48 02
+ 00 00 mov rcx, QWORD PTR r$13[rbp]
+ 0065d 44 8b 49 20 mov r9d, DWORD PTR [rcx+32]
+ 00661 4c 8b 85 f8 04
+ 00 00 mov r8, QWORD PTR tv265[rbp]
+ 00668 48 8b 95 00 05
+ 00 00 mov rdx, QWORD PTR tv270[rbp]
+ 0066f 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00676 48 8b 8c 01 e8
+ 46 00 00 mov rcx, QWORD PTR [rcx+rax+18152]
+ 0067e 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 00685 ff 10 call QWORD PTR [rax]
+ 00687 48 63 4d 64 movsxd rcx, DWORD PTR k$5[rbp]
+ 0068b 48 89 84 cd e8
+ 00 00 00 mov QWORD PTR coutput$9[rbp+rcx*8], rax
+
+; 4443 : y_bot ? r->line1 : r->line0,
+; 4444 : y_bot ? r->line0 : r->line1, r->w_lores,
+; 4445 : r->hs);
+; 4446 : if (++r->ystep >= r->vs) {
+
+ 00693 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 0069a 8b 40 24 mov eax, DWORD PTR [rax+36]
+ 0069d ff c0 inc eax
+ 0069f 89 85 f4 04 00
+ 00 mov DWORD PTR tv280[rbp], eax
+ 006a5 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 006ac 8b 8d f4 04 00
+ 00 mov ecx, DWORD PTR tv280[rbp]
+ 006b2 89 48 24 mov DWORD PTR [rax+36], ecx
+ 006b5 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 006bc 8b 40 1c mov eax, DWORD PTR [rax+28]
+ 006bf 39 85 f4 04 00
+ 00 cmp DWORD PTR tv280[rbp], eax
+ 006c5 0f 8c 91 00 00
+ 00 jl $LN57@load_jpeg_
+
+; 4447 : r->ystep = 0;
+
+ 006cb 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 006d2 c7 40 24 00 00
+ 00 00 mov DWORD PTR [rax+36], 0
+
+; 4448 : r->line0 = r->line1;
+
+ 006d9 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 006e0 48 8b 8d 48 02
+ 00 00 mov rcx, QWORD PTR r$13[rbp]
+ 006e7 48 8b 49 10 mov rcx, QWORD PTR [rcx+16]
+ 006eb 48 89 48 08 mov QWORD PTR [rax+8], rcx
+
+; 4449 : if (++r->ypos < z->img_comp[k].y)
+
+ 006ef 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 006f6 8b 40 28 mov eax, DWORD PTR [rax+40]
+ 006f9 ff c0 inc eax
+ 006fb 89 85 f4 04 00
+ 00 mov DWORD PTR tv288[rbp], eax
+ 00701 48 8b 85 48 02
+ 00 00 mov rax, QWORD PTR r$13[rbp]
+ 00708 8b 8d f4 04 00
+ 00 mov ecx, DWORD PTR tv288[rbp]
+ 0070e 89 48 28 mov DWORD PTR [rax+40], ecx
+ 00711 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 00715 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00719 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00720 8b 84 01 c0 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18112]
+ 00727 39 85 f4 04 00
+ 00 cmp DWORD PTR tv288[rbp], eax
+ 0072d 7d 2d jge SHORT $LN58@load_jpeg_
+
+; 4450 : r->line1 += z->img_comp[k].w2;
+
+ 0072f 48 63 45 64 movsxd rax, DWORD PTR k$5[rbp]
+ 00733 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00737 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0073e 48 63 84 01 c4
+ 46 00 00 movsxd rax, DWORD PTR [rcx+rax+18116]
+ 00746 48 8b 8d 48 02
+ 00 00 mov rcx, QWORD PTR r$13[rbp]
+ 0074d 48 03 41 10 add rax, QWORD PTR [rcx+16]
+ 00751 48 8b 8d 48 02
+ 00 00 mov rcx, QWORD PTR r$13[rbp]
+ 00758 48 89 41 10 mov QWORD PTR [rcx+16], rax
+$LN58@load_jpeg_:
+$LN57@load_jpeg_:
+
+; 4451 : }
+; 4452 : }
+
+ 0075c e9 1c fe ff ff jmp $LN8@load_jpeg_
+$LN9@load_jpeg_:
+
+; 4453 : if (n >= 3) {
+
+ 00761 83 7d 04 03 cmp DWORD PTR n$[rbp], 3
+ 00765 0f 8c ac 05 00
+ 00 jl $LN59@load_jpeg_
+
+; 4454 : stbi_uc *y = coutput[0];
+
+ 0076b b8 08 00 00 00 mov eax, 8
+ 00770 48 6b c0 00 imul rax, rax, 0
+ 00774 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 0077c 48 89 85 88 02
+ 00 00 mov QWORD PTR y$15[rbp], rax
+
+; 4455 : if (z->s->img_n == 3) {
+
+ 00783 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0078a 48 8b 00 mov rax, QWORD PTR [rax]
+ 0078d 83 78 08 03 cmp DWORD PTR [rax+8], 3
+ 00791 0f 85 4e 01 00
+ 00 jne $LN61@load_jpeg_
+
+; 4456 : if (is_rgb) {
+
+ 00797 83 7d 44 00 cmp DWORD PTR is_rgb$[rbp], 0
+ 0079b 0f 84 e8 00 00
+ 00 je $LN63@load_jpeg_
+
+; 4457 : for (i = 0; i < z->s->img_x; ++i) {
+
+ 007a1 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 007ab eb 0e jmp SHORT $LN13@load_jpeg_
+$LN11@load_jpeg_:
+ 007ad 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 007b3 ff c0 inc eax
+ 007b5 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN13@load_jpeg_:
+ 007bb 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 007c2 48 8b 00 mov rax, QWORD PTR [rax]
+ 007c5 8b 00 mov eax, DWORD PTR [rax]
+ 007c7 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 007cd 0f 83 b4 00 00
+ 00 jae $LN12@load_jpeg_
+
+; 4458 : out[0] = y[i];
+
+ 007d3 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 007d9 b9 01 00 00 00 mov ecx, 1
+ 007de 48 6b c9 00 imul rcx, rcx, 0
+ 007e2 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 007e9 4c 8b 85 88 02
+ 00 00 mov r8, QWORD PTR y$15[rbp]
+ 007f0 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 007f5 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4459 : out[1] = coutput[1][i];
+
+ 007f8 b8 08 00 00 00 mov eax, 8
+ 007fd 48 6b c0 01 imul rax, rax, 1
+ 00801 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00807 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 0080f ba 01 00 00 00 mov edx, 1
+ 00814 48 6b d2 01 imul rdx, rdx, 1
+ 00818 4c 8b 85 28 02
+ 00 00 mov r8, QWORD PTR out$12[rbp]
+ 0081f 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00823 41 88 04 10 mov BYTE PTR [r8+rdx], al
+
+; 4460 : out[2] = coutput[2][i];
+
+ 00827 b8 08 00 00 00 mov eax, 8
+ 0082c 48 6b c0 02 imul rax, rax, 2
+ 00830 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00836 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 0083e ba 01 00 00 00 mov edx, 1
+ 00843 48 6b d2 02 imul rdx, rdx, 2
+ 00847 4c 8b 85 28 02
+ 00 00 mov r8, QWORD PTR out$12[rbp]
+ 0084e 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00852 41 88 04 10 mov BYTE PTR [r8+rdx], al
+
+; 4461 : out[3] = 255;
+
+ 00856 b8 01 00 00 00 mov eax, 1
+ 0085b 48 6b c0 03 imul rax, rax, 3
+ 0085f 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00866 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4462 : out += n;
+
+ 0086a 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
+ 0086e 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00875 48 03 c8 add rcx, rax
+ 00878 48 8b c1 mov rax, rcx
+ 0087b 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4463 : }
+
+ 00882 e9 26 ff ff ff jmp $LN11@load_jpeg_
+$LN12@load_jpeg_:
+
+; 4464 : } else {
+
+ 00887 eb 57 jmp SHORT $LN64@load_jpeg_
+$LN63@load_jpeg_:
+
+; 4465 : z->YCbCr_to_RGB_kernel(out, y, coutput[1],
+
+ 00889 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00890 48 8b 00 mov rax, QWORD PTR [rax]
+ 00893 b9 08 00 00 00 mov ecx, 8
+ 00898 48 6b c9 02 imul rcx, rcx, 2
+ 0089c ba 08 00 00 00 mov edx, 8
+ 008a1 48 6b d2 01 imul rdx, rdx, 1
+ 008a5 44 8b 45 04 mov r8d, DWORD PTR n$[rbp]
+ 008a9 44 89 44 24 28 mov DWORD PTR [rsp+40], r8d
+ 008ae 8b 00 mov eax, DWORD PTR [rax]
+ 008b0 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 008b4 4c 8b 8c 0d e8
+ 00 00 00 mov r9, QWORD PTR coutput$9[rbp+rcx]
+ 008bc 4c 8b 84 15 e8
+ 00 00 00 mov r8, QWORD PTR coutput$9[rbp+rdx]
+ 008c4 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR y$15[rbp]
+ 008cb 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 008d2 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 008d9 ff 90 78 48 00
+ 00 call QWORD PTR [rax+18552]
+ 008df 90 npad 1
+$LN64@load_jpeg_:
+
+; 4466 : coutput[2], z->s->img_x, n);
+; 4467 : }
+
+ 008e0 e9 2d 04 00 00 jmp $LN62@load_jpeg_
+$LN61@load_jpeg_:
+
+; 4468 : } else if (z->s->img_n == 4) {
+
+ 008e5 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 008ec 48 8b 00 mov rax, QWORD PTR [rax]
+ 008ef 83 78 08 04 cmp DWORD PTR [rax+8], 4
+ 008f3 0f 85 41 03 00
+ 00 jne $LN65@load_jpeg_
+
+; 4469 : if (z->app14_color_transform == 0) { // CMYK
+
+ 008f9 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00900 83 b8 4c 48 00
+ 00 00 cmp DWORD PTR [rax+18508], 0
+ 00907 0f 85 37 01 00
+ 00 jne $LN67@load_jpeg_
+
+; 4470 : for (i = 0; i < z->s->img_x; ++i) {
+
+ 0090d c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 00917 eb 0e jmp SHORT $LN16@load_jpeg_
+$LN14@load_jpeg_:
+ 00919 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 0091f ff c0 inc eax
+ 00921 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN16@load_jpeg_:
+ 00927 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0092e 48 8b 00 mov rax, QWORD PTR [rax]
+ 00931 8b 00 mov eax, DWORD PTR [rax]
+ 00933 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 00939 0f 83 00 01 00
+ 00 jae $LN15@load_jpeg_
+
+; 4471 : stbi_uc m = coutput[3][i];
+
+ 0093f b8 08 00 00 00 mov eax, 8
+ 00944 48 6b c0 03 imul rax, rax, 3
+ 00948 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 0094e 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00956 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 0095a 88 85 a4 02 00
+ 00 mov BYTE PTR m$16[rbp], al
+
+; 4472 : out[0] = stbi__blinn_8x8(coutput[0][i], m);
+
+ 00960 b8 08 00 00 00 mov eax, 8
+ 00965 48 6b c0 00 imul rax, rax, 0
+ 00969 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 0096f 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00977 0f b6 95 a4 02
+ 00 00 movzx edx, BYTE PTR m$16[rbp]
+ 0097e 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
+ 00982 e8 00 00 00 00 call stbi__blinn_8x8
+ 00987 b9 01 00 00 00 mov ecx, 1
+ 0098c 48 6b c9 00 imul rcx, rcx, 0
+ 00990 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00997 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4473 : out[1] = stbi__blinn_8x8(coutput[1][i], m);
+
+ 0099a b8 08 00 00 00 mov eax, 8
+ 0099f 48 6b c0 01 imul rax, rax, 1
+ 009a3 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 009a9 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 009b1 0f b6 95 a4 02
+ 00 00 movzx edx, BYTE PTR m$16[rbp]
+ 009b8 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
+ 009bc e8 00 00 00 00 call stbi__blinn_8x8
+ 009c1 b9 01 00 00 00 mov ecx, 1
+ 009c6 48 6b c9 01 imul rcx, rcx, 1
+ 009ca 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 009d1 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4474 : out[2] = stbi__blinn_8x8(coutput[2][i], m);
+
+ 009d4 b8 08 00 00 00 mov eax, 8
+ 009d9 48 6b c0 02 imul rax, rax, 2
+ 009dd 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 009e3 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 009eb 0f b6 95 a4 02
+ 00 00 movzx edx, BYTE PTR m$16[rbp]
+ 009f2 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
+ 009f6 e8 00 00 00 00 call stbi__blinn_8x8
+ 009fb b9 01 00 00 00 mov ecx, 1
+ 00a00 48 6b c9 02 imul rcx, rcx, 2
+ 00a04 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00a0b 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4475 : out[3] = 255;
+
+ 00a0e b8 01 00 00 00 mov eax, 1
+ 00a13 48 6b c0 03 imul rax, rax, 3
+ 00a17 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00a1e c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4476 : out += n;
+
+ 00a22 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
+ 00a26 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00a2d 48 03 c8 add rcx, rax
+ 00a30 48 8b c1 mov rax, rcx
+ 00a33 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4477 : }
+
+ 00a3a e9 da fe ff ff jmp $LN14@load_jpeg_
+$LN15@load_jpeg_:
+
+; 4478 : } else if (z->app14_color_transform == 2) { // YCCK
+
+ 00a3f e9 f1 01 00 00 jmp $LN68@load_jpeg_
+$LN67@load_jpeg_:
+ 00a44 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00a4b 83 b8 4c 48 00
+ 00 02 cmp DWORD PTR [rax+18508], 2
+ 00a52 0f 85 86 01 00
+ 00 jne $LN69@load_jpeg_
+
+; 4479 : z->YCbCr_to_RGB_kernel(out, y, coutput[1],
+
+ 00a58 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00a5f 48 8b 00 mov rax, QWORD PTR [rax]
+ 00a62 b9 08 00 00 00 mov ecx, 8
+ 00a67 48 6b c9 02 imul rcx, rcx, 2
+ 00a6b ba 08 00 00 00 mov edx, 8
+ 00a70 48 6b d2 01 imul rdx, rdx, 1
+ 00a74 44 8b 45 04 mov r8d, DWORD PTR n$[rbp]
+ 00a78 44 89 44 24 28 mov DWORD PTR [rsp+40], r8d
+ 00a7d 8b 00 mov eax, DWORD PTR [rax]
+ 00a7f 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00a83 4c 8b 8c 0d e8
+ 00 00 00 mov r9, QWORD PTR coutput$9[rbp+rcx]
+ 00a8b 4c 8b 84 15 e8
+ 00 00 00 mov r8, QWORD PTR coutput$9[rbp+rdx]
+ 00a93 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR y$15[rbp]
+ 00a9a 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00aa1 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00aa8 ff 90 78 48 00
+ 00 call QWORD PTR [rax+18552]
+ 00aae 90 npad 1
+
+; 4480 : coutput[2], z->s->img_x, n);
+; 4481 : for (i = 0; i < z->s->img_x; ++i) {
+
+ 00aaf c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 00ab9 eb 0e jmp SHORT $LN19@load_jpeg_
+$LN17@load_jpeg_:
+ 00abb 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 00ac1 ff c0 inc eax
+ 00ac3 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN19@load_jpeg_:
+ 00ac9 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00ad0 48 8b 00 mov rax, QWORD PTR [rax]
+ 00ad3 8b 00 mov eax, DWORD PTR [rax]
+ 00ad5 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 00adb 0f 83 fb 00 00
+ 00 jae $LN18@load_jpeg_
+
+; 4482 : stbi_uc m = coutput[3][i];
+
+ 00ae1 b8 08 00 00 00 mov eax, 8
+ 00ae6 48 6b c0 03 imul rax, rax, 3
+ 00aea 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00af0 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00af8 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00afc 88 85 c4 02 00
+ 00 mov BYTE PTR m$17[rbp], al
+
+; 4483 : out[0] = stbi__blinn_8x8(255 - out[0], m);
+
+ 00b02 b8 01 00 00 00 mov eax, 1
+ 00b07 48 6b c0 00 imul rax, rax, 0
+ 00b0b 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00b12 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00b16 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH
+ 00b1b 2b c8 sub ecx, eax
+ 00b1d 8b c1 mov eax, ecx
+ 00b1f 0f b6 95 c4 02
+ 00 00 movzx edx, BYTE PTR m$17[rbp]
+ 00b26 0f b6 c8 movzx ecx, al
+ 00b29 e8 00 00 00 00 call stbi__blinn_8x8
+ 00b2e b9 01 00 00 00 mov ecx, 1
+ 00b33 48 6b c9 00 imul rcx, rcx, 0
+ 00b37 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00b3e 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4484 : out[1] = stbi__blinn_8x8(255 - out[1], m);
+
+ 00b41 b8 01 00 00 00 mov eax, 1
+ 00b46 48 6b c0 01 imul rax, rax, 1
+ 00b4a 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00b51 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00b55 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH
+ 00b5a 2b c8 sub ecx, eax
+ 00b5c 8b c1 mov eax, ecx
+ 00b5e 0f b6 95 c4 02
+ 00 00 movzx edx, BYTE PTR m$17[rbp]
+ 00b65 0f b6 c8 movzx ecx, al
+ 00b68 e8 00 00 00 00 call stbi__blinn_8x8
+ 00b6d b9 01 00 00 00 mov ecx, 1
+ 00b72 48 6b c9 01 imul rcx, rcx, 1
+ 00b76 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00b7d 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4485 : out[2] = stbi__blinn_8x8(255 - out[2], m);
+
+ 00b80 b8 01 00 00 00 mov eax, 1
+ 00b85 48 6b c0 02 imul rax, rax, 2
+ 00b89 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00b90 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00b94 b9 ff 00 00 00 mov ecx, 255 ; 000000ffH
+ 00b99 2b c8 sub ecx, eax
+ 00b9b 8b c1 mov eax, ecx
+ 00b9d 0f b6 95 c4 02
+ 00 00 movzx edx, BYTE PTR m$17[rbp]
+ 00ba4 0f b6 c8 movzx ecx, al
+ 00ba7 e8 00 00 00 00 call stbi__blinn_8x8
+ 00bac b9 01 00 00 00 mov ecx, 1
+ 00bb1 48 6b c9 02 imul rcx, rcx, 2
+ 00bb5 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00bbc 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4486 : out += n;
+
+ 00bbf 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
+ 00bc3 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00bca 48 03 c8 add rcx, rax
+ 00bcd 48 8b c1 mov rax, rcx
+ 00bd0 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4487 : }
+
+ 00bd7 e9 df fe ff ff jmp $LN17@load_jpeg_
+$LN18@load_jpeg_:
+
+; 4488 : } else { // YCbCr + alpha? Ignore the fourth channel for now
+
+ 00bdc eb 57 jmp SHORT $LN70@load_jpeg_
+$LN69@load_jpeg_:
+
+; 4489 : z->YCbCr_to_RGB_kernel(out, y, coutput[1],
+
+ 00bde 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00be5 48 8b 00 mov rax, QWORD PTR [rax]
+ 00be8 b9 08 00 00 00 mov ecx, 8
+ 00bed 48 6b c9 02 imul rcx, rcx, 2
+ 00bf1 ba 08 00 00 00 mov edx, 8
+ 00bf6 48 6b d2 01 imul rdx, rdx, 1
+ 00bfa 44 8b 45 04 mov r8d, DWORD PTR n$[rbp]
+ 00bfe 44 89 44 24 28 mov DWORD PTR [rsp+40], r8d
+ 00c03 8b 00 mov eax, DWORD PTR [rax]
+ 00c05 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00c09 4c 8b 8c 0d e8
+ 00 00 00 mov r9, QWORD PTR coutput$9[rbp+rcx]
+ 00c11 4c 8b 84 15 e8
+ 00 00 00 mov r8, QWORD PTR coutput$9[rbp+rdx]
+ 00c19 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR y$15[rbp]
+ 00c20 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00c27 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00c2e ff 90 78 48 00
+ 00 call QWORD PTR [rax+18552]
+ 00c34 90 npad 1
+$LN70@load_jpeg_:
+$LN68@load_jpeg_:
+
+; 4490 : coutput[2], z->s->img_x, n);
+; 4491 : }
+; 4492 : } else
+
+ 00c35 e9 d8 00 00 00 jmp $LN66@load_jpeg_
+$LN65@load_jpeg_:
+
+; 4493 : for (i = 0; i < z->s->img_x; ++i) {
+
+ 00c3a c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 00c44 eb 0e jmp SHORT $LN22@load_jpeg_
+$LN20@load_jpeg_:
+ 00c46 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 00c4c ff c0 inc eax
+ 00c4e 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN22@load_jpeg_:
+ 00c54 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00c5b 48 8b 00 mov rax, QWORD PTR [rax]
+ 00c5e 8b 00 mov eax, DWORD PTR [rax]
+ 00c60 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 00c66 0f 83 a6 00 00
+ 00 jae $LN21@load_jpeg_
+
+; 4494 : out[0] = out[1] = out[2] = y[i];
+
+ 00c6c 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 00c72 b9 01 00 00 00 mov ecx, 1
+ 00c77 48 6b c9 02 imul rcx, rcx, 2
+ 00c7b 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00c82 4c 8b 85 88 02
+ 00 00 mov r8, QWORD PTR y$15[rbp]
+ 00c89 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00c8e 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00c91 b8 01 00 00 00 mov eax, 1
+ 00c96 48 6b c0 02 imul rax, rax, 2
+ 00c9a b9 01 00 00 00 mov ecx, 1
+ 00c9f 48 6b c9 01 imul rcx, rcx, 1
+ 00ca3 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00caa 4c 8b 85 28 02
+ 00 00 mov r8, QWORD PTR out$12[rbp]
+ 00cb1 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00cb6 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00cb9 b8 01 00 00 00 mov eax, 1
+ 00cbe 48 6b c0 01 imul rax, rax, 1
+ 00cc2 b9 01 00 00 00 mov ecx, 1
+ 00cc7 48 6b c9 00 imul rcx, rcx, 0
+ 00ccb 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00cd2 4c 8b 85 28 02
+ 00 00 mov r8, QWORD PTR out$12[rbp]
+ 00cd9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00cde 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4495 : out[3] = 255; // not used if n==3
+
+ 00ce1 b8 01 00 00 00 mov eax, 1
+ 00ce6 48 6b c0 03 imul rax, rax, 3
+ 00cea 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00cf1 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4496 : out += n;
+
+ 00cf5 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
+ 00cf9 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00d00 48 03 c8 add rcx, rax
+ 00d03 48 8b c1 mov rax, rcx
+ 00d06 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4497 : }
+
+ 00d0d e9 34 ff ff ff jmp $LN20@load_jpeg_
+$LN21@load_jpeg_:
+$LN66@load_jpeg_:
+$LN62@load_jpeg_:
+
+; 4498 : } else {
+
+ 00d12 e9 10 05 00 00 jmp $LN60@load_jpeg_
+$LN59@load_jpeg_:
+
+; 4499 : if (is_rgb) {
+
+ 00d17 83 7d 44 00 cmp DWORD PTR is_rgb$[rbp], 0
+ 00d1b 0f 84 ab 01 00
+ 00 je $LN71@load_jpeg_
+
+; 4500 : if (n == 1)
+
+ 00d21 83 7d 04 01 cmp DWORD PTR n$[rbp], 1
+ 00d25 0f 85 c1 00 00
+ 00 jne $LN73@load_jpeg_
+
+; 4501 : for (i = 0; i < z->s->img_x; ++i)
+
+ 00d2b c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 00d35 eb 0e jmp SHORT $LN25@load_jpeg_
+$LN23@load_jpeg_:
+ 00d37 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 00d3d ff c0 inc eax
+ 00d3f 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN25@load_jpeg_:
+ 00d45 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00d4c 48 8b 00 mov rax, QWORD PTR [rax]
+ 00d4f 8b 00 mov eax, DWORD PTR [rax]
+ 00d51 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 00d57 0f 83 8a 00 00
+ 00 jae $LN24@load_jpeg_
+
+; 4502 : *out++ = stbi__compute_y(coutput[0][i],
+
+ 00d5d b8 08 00 00 00 mov eax, 8
+ 00d62 48 6b c0 02 imul rax, rax, 2
+ 00d66 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00d6c 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00d74 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00d78 b9 08 00 00 00 mov ecx, 8
+ 00d7d 48 6b c9 01 imul rcx, rcx, 1
+ 00d81 8b 95 84 00 00
+ 00 mov edx, DWORD PTR i$6[rbp]
+ 00d87 48 8b 8c 0d e8
+ 00 00 00 mov rcx, QWORD PTR coutput$9[rbp+rcx]
+ 00d8f 0f b6 0c 11 movzx ecx, BYTE PTR [rcx+rdx]
+ 00d93 ba 08 00 00 00 mov edx, 8
+ 00d98 48 6b d2 00 imul rdx, rdx, 0
+ 00d9c 44 8b 85 84 00
+ 00 00 mov r8d, DWORD PTR i$6[rbp]
+ 00da3 48 8b 94 15 e8
+ 00 00 00 mov rdx, QWORD PTR coutput$9[rbp+rdx]
+ 00dab 42 0f b6 14 02 movzx edx, BYTE PTR [rdx+r8]
+ 00db0 89 95 f4 04 00
+ 00 mov DWORD PTR tv516[rbp], edx
+ 00db6 44 8b c0 mov r8d, eax
+ 00db9 8b d1 mov edx, ecx
+ 00dbb 8b 85 f4 04 00
+ 00 mov eax, DWORD PTR tv516[rbp]
+ 00dc1 8b c8 mov ecx, eax
+ 00dc3 e8 00 00 00 00 call stbi__compute_y
+ 00dc8 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00dcf 88 01 mov BYTE PTR [rcx], al
+ 00dd1 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR out$12[rbp]
+ 00dd8 48 ff c0 inc rax
+ 00ddb 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+ 00de2 e9 50 ff ff ff jmp $LN23@load_jpeg_
+$LN24@load_jpeg_:
+
+; 4503 : coutput[1][i],
+; 4504 : coutput[2][i]);
+
+ 00de7 e9 db 00 00 00 jmp $LN74@load_jpeg_
+$LN73@load_jpeg_:
+
+; 4505 : else {
+; 4506 : for (i = 0; i < z->s->img_x; ++i, out += 2) {
+
+ 00dec c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 00df6 eb 20 jmp SHORT $LN28@load_jpeg_
+$LN26@load_jpeg_:
+ 00df8 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 00dfe ff c0 inc eax
+ 00e00 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+ 00e06 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR out$12[rbp]
+ 00e0d 48 83 c0 02 add rax, 2
+ 00e11 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+$LN28@load_jpeg_:
+ 00e18 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00e1f 48 8b 00 mov rax, QWORD PTR [rax]
+ 00e22 8b 00 mov eax, DWORD PTR [rax]
+ 00e24 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 00e2a 0f 83 97 00 00
+ 00 jae $LN27@load_jpeg_
+
+; 4507 : out[0] = stbi__compute_y(coutput[0][i],
+
+ 00e30 b8 08 00 00 00 mov eax, 8
+ 00e35 48 6b c0 02 imul rax, rax, 2
+ 00e39 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00e3f 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00e47 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00e4b b9 08 00 00 00 mov ecx, 8
+ 00e50 48 6b c9 01 imul rcx, rcx, 1
+ 00e54 8b 95 84 00 00
+ 00 mov edx, DWORD PTR i$6[rbp]
+ 00e5a 48 8b 8c 0d e8
+ 00 00 00 mov rcx, QWORD PTR coutput$9[rbp+rcx]
+ 00e62 0f b6 0c 11 movzx ecx, BYTE PTR [rcx+rdx]
+ 00e66 ba 08 00 00 00 mov edx, 8
+ 00e6b 48 6b d2 00 imul rdx, rdx, 0
+ 00e6f 44 8b 85 84 00
+ 00 00 mov r8d, DWORD PTR i$6[rbp]
+ 00e76 48 8b 94 15 e8
+ 00 00 00 mov rdx, QWORD PTR coutput$9[rbp+rdx]
+ 00e7e 42 0f b6 14 02 movzx edx, BYTE PTR [rdx+r8]
+ 00e83 89 95 f4 04 00
+ 00 mov DWORD PTR tv545[rbp], edx
+ 00e89 44 8b c0 mov r8d, eax
+ 00e8c 8b d1 mov edx, ecx
+ 00e8e 8b 85 f4 04 00
+ 00 mov eax, DWORD PTR tv545[rbp]
+ 00e94 8b c8 mov ecx, eax
+ 00e96 e8 00 00 00 00 call stbi__compute_y
+ 00e9b b9 01 00 00 00 mov ecx, 1
+ 00ea0 48 6b c9 00 imul rcx, rcx, 0
+ 00ea4 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 00eab 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4508 : coutput[1][i],
+; 4509 : coutput[2][i]);
+; 4510 : out[1] = 255;
+
+ 00eae b8 01 00 00 00 mov eax, 1
+ 00eb3 48 6b c0 01 imul rax, rax, 1
+ 00eb7 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 00ebe c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4511 : }
+
+ 00ec2 e9 31 ff ff ff jmp $LN26@load_jpeg_
+$LN27@load_jpeg_:
+$LN74@load_jpeg_:
+
+; 4512 : }
+
+ 00ec7 e9 5b 03 00 00 jmp $LN72@load_jpeg_
+$LN71@load_jpeg_:
+
+; 4513 : } else if (z->s->img_n == 4 && z->app14_color_transform == 0) {
+
+ 00ecc 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00ed3 48 8b 00 mov rax, QWORD PTR [rax]
+ 00ed6 83 78 08 04 cmp DWORD PTR [rax+8], 4
+ 00eda 0f 85 64 01 00
+ 00 jne $LN75@load_jpeg_
+ 00ee0 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00ee7 83 b8 4c 48 00
+ 00 00 cmp DWORD PTR [rax+18508], 0
+ 00eee 0f 85 50 01 00
+ 00 jne $LN75@load_jpeg_
+
+; 4514 : for (i = 0; i < z->s->img_x; ++i) {
+
+ 00ef4 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 00efe eb 0e jmp SHORT $LN31@load_jpeg_
+$LN29@load_jpeg_:
+ 00f00 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 00f06 ff c0 inc eax
+ 00f08 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN31@load_jpeg_:
+ 00f0e 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00f15 48 8b 00 mov rax, QWORD PTR [rax]
+ 00f18 8b 00 mov eax, DWORD PTR [rax]
+ 00f1a 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 00f20 0f 83 19 01 00
+ 00 jae $LN30@load_jpeg_
+
+; 4515 : stbi_uc m = coutput[3][i];
+
+ 00f26 b8 08 00 00 00 mov eax, 8
+ 00f2b 48 6b c0 03 imul rax, rax, 3
+ 00f2f 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00f35 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00f3d 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00f41 88 85 e4 02 00
+ 00 mov BYTE PTR m$18[rbp], al
+
+; 4516 : stbi_uc r = stbi__blinn_8x8(coutput[0][i], m);
+
+ 00f47 b8 08 00 00 00 mov eax, 8
+ 00f4c 48 6b c0 00 imul rax, rax, 0
+ 00f50 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00f56 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00f5e 0f b6 95 e4 02
+ 00 00 movzx edx, BYTE PTR m$18[rbp]
+ 00f65 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
+ 00f69 e8 00 00 00 00 call stbi__blinn_8x8
+ 00f6e 88 85 04 03 00
+ 00 mov BYTE PTR r$19[rbp], al
+
+; 4517 : stbi_uc g = stbi__blinn_8x8(coutput[1][i], m);
+
+ 00f74 b8 08 00 00 00 mov eax, 8
+ 00f79 48 6b c0 01 imul rax, rax, 1
+ 00f7d 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00f83 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00f8b 0f b6 95 e4 02
+ 00 00 movzx edx, BYTE PTR m$18[rbp]
+ 00f92 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
+ 00f96 e8 00 00 00 00 call stbi__blinn_8x8
+ 00f9b 88 85 24 03 00
+ 00 mov BYTE PTR g$20[rbp], al
+
+; 4518 : stbi_uc b = stbi__blinn_8x8(coutput[2][i], m);
+
+ 00fa1 b8 08 00 00 00 mov eax, 8
+ 00fa6 48 6b c0 02 imul rax, rax, 2
+ 00faa 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 00fb0 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 00fb8 0f b6 95 e4 02
+ 00 00 movzx edx, BYTE PTR m$18[rbp]
+ 00fbf 0f b6 0c 08 movzx ecx, BYTE PTR [rax+rcx]
+ 00fc3 e8 00 00 00 00 call stbi__blinn_8x8
+ 00fc8 88 85 44 03 00
+ 00 mov BYTE PTR b$21[rbp], al
+
+; 4519 : out[0] = stbi__compute_y(r, g, b);
+
+ 00fce 0f b6 85 44 03
+ 00 00 movzx eax, BYTE PTR b$21[rbp]
+ 00fd5 0f b6 8d 24 03
+ 00 00 movzx ecx, BYTE PTR g$20[rbp]
+ 00fdc 0f b6 95 04 03
+ 00 00 movzx edx, BYTE PTR r$19[rbp]
+ 00fe3 89 95 f4 04 00
+ 00 mov DWORD PTR tv626[rbp], edx
+ 00fe9 44 8b c0 mov r8d, eax
+ 00fec 8b d1 mov edx, ecx
+ 00fee 8b 85 f4 04 00
+ 00 mov eax, DWORD PTR tv626[rbp]
+ 00ff4 8b c8 mov ecx, eax
+ 00ff6 e8 00 00 00 00 call stbi__compute_y
+ 00ffb b9 01 00 00 00 mov ecx, 1
+ 01000 48 6b c9 00 imul rcx, rcx, 0
+ 01004 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 0100b 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4520 : out[1] = 255;
+
+ 0100e b8 01 00 00 00 mov eax, 1
+ 01013 48 6b c0 01 imul rax, rax, 1
+ 01017 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 0101e c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4521 : out += n;
+
+ 01022 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
+ 01026 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 0102d 48 03 c8 add rcx, rax
+ 01030 48 8b c1 mov rax, rcx
+ 01033 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4522 : }
+
+ 0103a e9 c1 fe ff ff jmp $LN29@load_jpeg_
+$LN30@load_jpeg_:
+
+; 4523 : } else if (z->s->img_n == 4 && z->app14_color_transform == 2) {
+
+ 0103f e9 e3 01 00 00 jmp $LN76@load_jpeg_
+$LN75@load_jpeg_:
+ 01044 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0104b 48 8b 00 mov rax, QWORD PTR [rax]
+ 0104e 83 78 08 04 cmp DWORD PTR [rax+8], 4
+ 01052 0f 85 e7 00 00
+ 00 jne $LN77@load_jpeg_
+ 01058 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0105f 83 b8 4c 48 00
+ 00 02 cmp DWORD PTR [rax+18508], 2
+ 01066 0f 85 d3 00 00
+ 00 jne $LN77@load_jpeg_
+
+; 4524 : for (i = 0; i < z->s->img_x; ++i) {
+
+ 0106c c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 01076 eb 0e jmp SHORT $LN34@load_jpeg_
+$LN32@load_jpeg_:
+ 01078 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 0107e ff c0 inc eax
+ 01080 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN34@load_jpeg_:
+ 01086 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0108d 48 8b 00 mov rax, QWORD PTR [rax]
+ 01090 8b 00 mov eax, DWORD PTR [rax]
+ 01092 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 01098 0f 83 9c 00 00
+ 00 jae $LN33@load_jpeg_
+
+; 4525 : out[0] = stbi__blinn_8x8(255 - coutput[0][i],
+
+ 0109e b8 08 00 00 00 mov eax, 8
+ 010a3 48 6b c0 03 imul rax, rax, 3
+ 010a7 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 010ad 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 010b5 ba 08 00 00 00 mov edx, 8
+ 010ba 48 6b d2 00 imul rdx, rdx, 0
+ 010be 44 8b 85 84 00
+ 00 00 mov r8d, DWORD PTR i$6[rbp]
+ 010c5 48 8b 94 15 e8
+ 00 00 00 mov rdx, QWORD PTR coutput$9[rbp+rdx]
+ 010cd 42 0f b6 14 02 movzx edx, BYTE PTR [rdx+r8]
+ 010d2 41 b8 ff 00 00
+ 00 mov r8d, 255 ; 000000ffH
+ 010d8 44 2b c2 sub r8d, edx
+ 010db 41 8b d0 mov edx, r8d
+ 010de 89 95 f4 04 00
+ 00 mov DWORD PTR tv656[rbp], edx
+ 010e4 0f b6 14 08 movzx edx, BYTE PTR [rax+rcx]
+ 010e8 8b 85 f4 04 00
+ 00 mov eax, DWORD PTR tv656[rbp]
+ 010ee 0f b6 c8 movzx ecx, al
+ 010f1 e8 00 00 00 00 call stbi__blinn_8x8
+ 010f6 b9 01 00 00 00 mov ecx, 1
+ 010fb 48 6b c9 00 imul rcx, rcx, 0
+ 010ff 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 01106 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4526 : coutput[3][i]);
+; 4527 : out[1] = 255;
+
+ 01109 b8 01 00 00 00 mov eax, 1
+ 0110e 48 6b c0 01 imul rax, rax, 1
+ 01112 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 01119 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4528 : out += n;
+
+ 0111d 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
+ 01121 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 01128 48 03 c8 add rcx, rax
+ 0112b 48 8b c1 mov rax, rcx
+ 0112e 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4529 : }
+
+ 01135 e9 3e ff ff ff jmp $LN32@load_jpeg_
+$LN33@load_jpeg_:
+
+; 4530 : } else {
+
+ 0113a e9 e8 00 00 00 jmp $LN78@load_jpeg_
+$LN77@load_jpeg_:
+
+; 4531 : stbi_uc *y = coutput[0];
+
+ 0113f b8 08 00 00 00 mov eax, 8
+ 01144 48 6b c0 00 imul rax, rax, 0
+ 01148 48 8b 84 05 e8
+ 00 00 00 mov rax, QWORD PTR coutput$9[rbp+rax]
+ 01150 48 89 85 68 03
+ 00 00 mov QWORD PTR y$22[rbp], rax
+
+; 4532 : if (n == 1)
+
+ 01157 83 7d 04 01 cmp DWORD PTR n$[rbp], 1
+ 0115b 75 54 jne SHORT $LN79@load_jpeg_
+
+; 4533 : for (i = 0; i < z->s->img_x; ++i)
+
+ 0115d c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 01167 eb 0e jmp SHORT $LN37@load_jpeg_
+$LN35@load_jpeg_:
+ 01169 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 0116f ff c0 inc eax
+ 01171 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN37@load_jpeg_:
+ 01177 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0117e 48 8b 00 mov rax, QWORD PTR [rax]
+ 01181 8b 00 mov eax, DWORD PTR [rax]
+ 01183 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 01189 73 24 jae SHORT $LN36@load_jpeg_
+
+; 4534 : out[i] = y[i];
+
+ 0118b 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 01191 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR i$6[rbp]
+ 01197 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR out$12[rbp]
+ 0119e 4c 8b 85 68 03
+ 00 00 mov r8, QWORD PTR y$22[rbp]
+ 011a5 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 011aa 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 011ad eb ba jmp SHORT $LN35@load_jpeg_
+$LN36@load_jpeg_:
+ 011af eb 76 jmp SHORT $LN80@load_jpeg_
+$LN79@load_jpeg_:
+
+; 4535 : else
+; 4536 : for (i = 0; i < z->s->img_x; ++i) {
+
+ 011b1 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$6[rbp], 0
+ 011bb eb 0e jmp SHORT $LN40@load_jpeg_
+$LN38@load_jpeg_:
+ 011bd 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 011c3 ff c0 inc eax
+ 011c5 89 85 84 00 00
+ 00 mov DWORD PTR i$6[rbp], eax
+$LN40@load_jpeg_:
+ 011cb 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 011d2 48 8b 00 mov rax, QWORD PTR [rax]
+ 011d5 8b 00 mov eax, DWORD PTR [rax]
+ 011d7 39 85 84 00 00
+ 00 cmp DWORD PTR i$6[rbp], eax
+ 011dd 73 48 jae SHORT $LN39@load_jpeg_
+
+; 4537 : *out++ = y[i];
+
+ 011df 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$6[rbp]
+ 011e5 48 8b 8d 28 02
+ 00 00 mov rcx, QWORD PTR out$12[rbp]
+ 011ec 48 8b 95 68 03
+ 00 00 mov rdx, QWORD PTR y$22[rbp]
+ 011f3 0f b6 04 02 movzx eax, BYTE PTR [rdx+rax]
+ 011f7 88 01 mov BYTE PTR [rcx], al
+ 011f9 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR out$12[rbp]
+ 01200 48 ff c0 inc rax
+ 01203 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4538 : *out++ = 255;
+
+ 0120a 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR out$12[rbp]
+ 01211 c6 00 ff mov BYTE PTR [rax], 255 ; 000000ffH
+ 01214 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR out$12[rbp]
+ 0121b 48 ff c0 inc rax
+ 0121e 48 89 85 28 02
+ 00 00 mov QWORD PTR out$12[rbp], rax
+
+; 4539 : }
+
+ 01225 eb 96 jmp SHORT $LN38@load_jpeg_
+$LN39@load_jpeg_:
+$LN80@load_jpeg_:
+$LN78@load_jpeg_:
+$LN76@load_jpeg_:
+$LN72@load_jpeg_:
+$LN60@load_jpeg_:
+
+; 4540 : }
+; 4541 : }
+; 4542 : }
+
+ 01227 e9 f2 f2 ff ff jmp $LN5@load_jpeg_
+$LN6@load_jpeg_:
+
+; 4543 : stbi__cleanup_jpeg(z);
+
+ 0122c 48 8b 8d 30 05
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 01233 e8 00 00 00 00 call stbi__cleanup_jpeg
+ 01238 90 npad 1
+
+; 4544 : *out_x = z->s->img_x;
+
+ 01239 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 01240 48 8b 00 mov rax, QWORD PTR [rax]
+ 01243 48 8b 8d 38 05
+ 00 00 mov rcx, QWORD PTR out_x$[rbp]
+ 0124a 8b 00 mov eax, DWORD PTR [rax]
+ 0124c 89 01 mov DWORD PTR [rcx], eax
+
+; 4545 : *out_y = z->s->img_y;
+
+ 0124e 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 01255 48 8b 00 mov rax, QWORD PTR [rax]
+ 01258 48 8b 8d 40 05
+ 00 00 mov rcx, QWORD PTR out_y$[rbp]
+ 0125f 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 01262 89 01 mov DWORD PTR [rcx], eax
+
+; 4546 : if (comp)
+
+ 01264 48 83 bd 48 05
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 0126c 74 35 je SHORT $LN81@load_jpeg_
+
+; 4547 : *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output
+
+ 0126e 48 8b 85 30 05
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 01275 48 8b 00 mov rax, QWORD PTR [rax]
+ 01278 83 78 08 03 cmp DWORD PTR [rax+8], 3
+ 0127c 7c 0c jl SHORT $LN103@load_jpeg_
+ 0127e c7 85 f4 04 00
+ 00 03 00 00 00 mov DWORD PTR tv694[rbp], 3
+ 01288 eb 0a jmp SHORT $LN104@load_jpeg_
+$LN103@load_jpeg_:
+ 0128a c7 85 f4 04 00
+ 00 01 00 00 00 mov DWORD PTR tv694[rbp], 1
+$LN104@load_jpeg_:
+ 01294 48 8b 85 48 05
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 0129b 8b 8d f4 04 00
+ 00 mov ecx, DWORD PTR tv694[rbp]
+ 012a1 89 08 mov DWORD PTR [rax], ecx
+$LN81@load_jpeg_:
+
+; 4548 : return output;
+
+ 012a3 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR output$8[rbp]
+$LN1@load_jpeg_:
+
+; 4549 : }
+; 4550 : }
+
+ 012aa 48 8b f8 mov rdi, rax
+ 012ad 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 012b1 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:load_jpeg_image$rtcFrameData
+ 012b8 e8 00 00 00 00 call _RTC_CheckStackVars
+ 012bd 48 8b c7 mov rax, rdi
+ 012c0 48 8b 8d 08 05
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 012c7 48 33 cd xor rcx, rbp
+ 012ca e8 00 00 00 00 call __security_check_cookie
+ 012cf 48 8d a5 18 05
+ 00 00 lea rsp, QWORD PTR [rbp+1304]
+ 012d6 5f pop rdi
+ 012d7 5d pop rbp
+ 012d8 c3 ret 0
+load_jpeg_image ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__blinn_8x8
+_TEXT SEGMENT
+t$ = 4
+x$ = 256
+y$ = 264
+stbi__blinn_8x8 PROC ; COMDAT
+
+; 4353 : {
+
+ 00000 88 54 24 10 mov BYTE PTR [rsp+16], dl
+ 00004 88 4c 24 08 mov BYTE PTR [rsp+8], cl
+ 00008 55 push rbp
+ 00009 57 push rdi
+ 0000a 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00016 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00022 90 npad 1
+
+; 4354 : unsigned int t = x * y + 128;
+
+ 00023 0f b6 85 00 01
+ 00 00 movzx eax, BYTE PTR x$[rbp]
+ 0002a 0f b6 8d 08 01
+ 00 00 movzx ecx, BYTE PTR y$[rbp]
+ 00031 0f af c1 imul eax, ecx
+ 00034 05 80 00 00 00 add eax, 128 ; 00000080H
+ 00039 89 45 04 mov DWORD PTR t$[rbp], eax
+
+; 4355 : return (stbi_uc)((t + (t >> 8)) >> 8);
+
+ 0003c 8b 45 04 mov eax, DWORD PTR t$[rbp]
+ 0003f c1 e8 08 shr eax, 8
+ 00042 8b 4d 04 mov ecx, DWORD PTR t$[rbp]
+ 00045 03 c8 add ecx, eax
+ 00047 8b c1 mov eax, ecx
+ 00049 c1 e8 08 shr eax, 8
+
+; 4356 : }
+
+ 0004c 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00053 5f pop rdi
+ 00054 5d pop rbp
+ 00055 c3 ret 0
+stbi__blinn_8x8 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__cleanup_jpeg
+_TEXT SEGMENT
+j$ = 224
+stbi__cleanup_jpeg PROC ; COMDAT
+
+; 4338 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 4339 : stbi__free_jpeg_components(j, j->s->img_n, 0);
+
+ 00020 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00027 48 8b 00 mov rax, QWORD PTR [rax]
+ 0002a 45 33 c0 xor r8d, r8d
+ 0002d 8b 50 08 mov edx, DWORD PTR [rax+8]
+ 00030 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00037 e8 00 00 00 00 call stbi__free_jpeg_components
+ 0003c 90 npad 1
+
+; 4340 : }
+
+ 0003d 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00044 5f pop rdi
+ 00045 5d pop rbp
+ 00046 c3 ret 0
+stbi__cleanup_jpeg ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__setup_jpeg
+_TEXT SEGMENT
+j$ = 224
+stbi__setup_jpeg PROC ; COMDAT
+
+; 4316 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 4317 : j->idct_block_kernel = stbi__idct_block;
+
+ 00020 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00027 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__idct_block
+ 0002e 48 89 88 70 48
+ 00 00 mov QWORD PTR [rax+18544], rcx
+
+; 4318 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row;
+
+ 00035 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0003c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__YCbCr_to_RGB_row
+ 00043 48 89 88 78 48
+ 00 00 mov QWORD PTR [rax+18552], rcx
+
+; 4319 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2;
+
+ 0004a 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00051 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__resample_row_hv_2
+ 00058 48 89 88 80 48
+ 00 00 mov QWORD PTR [rax+18560], rcx
+
+; 4320 :
+; 4321 : #ifdef STBI_SSE2
+; 4322 : if (stbi__sse2_available()) {
+
+ 0005f e8 00 00 00 00 call stbi__sse2_available
+ 00064 85 c0 test eax, eax
+ 00066 74 3f je SHORT $LN2@stbi__setu
+
+; 4323 : j->idct_block_kernel = stbi__idct_simd;
+
+ 00068 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0006f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__idct_simd
+ 00076 48 89 88 70 48
+ 00 00 mov QWORD PTR [rax+18544], rcx
+
+; 4324 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;
+
+ 0007d 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00084 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__YCbCr_to_RGB_simd
+ 0008b 48 89 88 78 48
+ 00 00 mov QWORD PTR [rax+18552], rcx
+
+; 4325 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;
+
+ 00092 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00099 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__resample_row_hv_2_simd
+ 000a0 48 89 88 80 48
+ 00 00 mov QWORD PTR [rax+18560], rcx
+$LN2@stbi__setu:
+
+; 4326 : }
+; 4327 : #endif
+; 4328 :
+; 4329 : #ifdef STBI_NEON
+; 4330 : j->idct_block_kernel = stbi__idct_simd;
+; 4331 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;
+; 4332 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;
+; 4333 : #endif
+; 4334 : }
+
+ 000a7 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 000ae 5f pop rdi
+ 000af 5d pop rbp
+ 000b0 c3 ret 0
+stbi__setup_jpeg ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__YCbCr_to_RGB_simd
+_TEXT SEGMENT
+i$ = 4
+signflip$1 = 48
+cr_const0$2 = 96
+cr_const1$3 = 144
+cb_const0$4 = 192
+cb_const1$5 = 240
+y_bias$6 = 288
+xw$7 = 336
+y_bytes$8 = 384
+cr_bytes$9 = 432
+cb_bytes$10 = 480
+cr_biased$11 = 528
+cb_biased$12 = 576
+yw$13 = 624
+crw$14 = 672
+cbw$15 = 720
+yws$16 = 768
+cr0$17 = 816
+cb0$18 = 864
+cb1$19 = 912
+cr1$20 = 960
+rws$21 = 1008
+gwt$22 = 1056
+bws$23 = 1104
+gws$24 = 1152
+rw$25 = 1200
+bw$26 = 1248
+gw$27 = 1296
+brb$28 = 1344
+gxb$29 = 1392
+t0$30 = 1440
+t1$31 = 1488
+o0$32 = 1536
+o1$33 = 1584
+y_fixed$34 = 1620
+r$35 = 1652
+g$36 = 1684
+b$37 = 1716
+cr$38 = 1748
+cb$39 = 1780
+out$ = 2608
+y$ = 2616
+pcb$ = 2624
+pcr$ = 2632
+count$ = 2640
+step$ = 2648
+stbi__YCbCr_to_RGB_simd PROC ; COMDAT
+
+; 4165 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 38 0a
+ 00 00 sub rsp, 2616 ; 00000a38H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 4166 : int i = 0;
+
+ 0002f c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+
+; 4167 :
+; 4168 : #ifdef STBI_SSE2
+; 4169 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced
+; 4170 : // it's useful in practice (you wouldn't use it for textures, for example).
+; 4171 : // so just accelerate step == 4 case.
+; 4172 : if (step == 4) {
+
+ 00036 83 bd 58 0a 00
+ 00 04 cmp DWORD PTR step$[rbp], 4
+ 0003d 0f 85 28 03 00
+ 00 jne $LN8@stbi__YCbC
+
+; 4173 : // this is a fairly straightforward implementation and not super-optimized.
+; 4174 : __m128i signflip = _mm_set1_epi8(-0x80);
+
+ 00043 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@80808080808080808080808080808080
+ 0004b 66 0f 7f 45 30 movdqa XMMWORD PTR signflip$1[rbp], xmm0
+
+; 4175 : __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f));
+
+ 00050 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@166f166f166f166f166f166f166f166f
+ 00058 66 0f 7f 45 60 movdqa XMMWORD PTR cr_const0$2[rbp], xmm0
+
+; 4176 : __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f));
+
+ 0005d 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@f493f493f493f493f493f493f493f493
+ 00065 66 0f 7f 85 90
+ 00 00 00 movdqa XMMWORD PTR cr_const1$3[rbp], xmm0
+
+; 4177 : __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f));
+
+ 0006d 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e
+ 00075 66 0f 7f 85 c0
+ 00 00 00 movdqa XMMWORD PTR cb_const0$4[rbp], xmm0
+
+; 4178 : __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f));
+
+ 0007d 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a
+ 00085 66 0f 7f 85 f0
+ 00 00 00 movdqa XMMWORD PTR cb_const1$5[rbp], xmm0
+
+; 4179 : __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128);
+
+ 0008d 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@80808080808080808080808080808080
+ 00095 66 0f 7f 85 20
+ 01 00 00 movdqa XMMWORD PTR y_bias$6[rbp], xmm0
+
+; 4180 : __m128i xw = _mm_set1_epi16(255); // alpha channel
+
+ 0009d 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00ff00ff00ff00ff00ff00ff00ff00ff
+ 000a5 66 0f 7f 85 50
+ 01 00 00 movdqa XMMWORD PTR xw$7[rbp], xmm0
+
+; 4181 :
+; 4182 : for (; i + 7 < count; i += 8) {
+
+ 000ad eb 09 jmp SHORT $LN4@stbi__YCbC
+$LN2@stbi__YCbC:
+ 000af 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000b2 83 c0 08 add eax, 8
+ 000b5 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__YCbC:
+ 000b8 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000bb 83 c0 07 add eax, 7
+ 000be 3b 85 50 0a 00
+ 00 cmp eax, DWORD PTR count$[rbp]
+ 000c4 0f 8d a1 02 00
+ 00 jge $LN3@stbi__YCbC
+
+; 4183 : // load
+; 4184 : __m128i y_bytes = _mm_loadl_epi64((__m128i *)(y + i));
+
+ 000ca 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000ce 48 8b 8d 38 0a
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 000d5 48 03 c8 add rcx, rax
+ 000d8 48 8b c1 mov rax, rcx
+ 000db f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
+ 000df 66 0f 7f 85 80
+ 01 00 00 movdqa XMMWORD PTR y_bytes$8[rbp], xmm0
+
+; 4185 : __m128i cr_bytes = _mm_loadl_epi64((__m128i *)(pcr + i));
+
+ 000e7 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000eb 48 8b 8d 48 0a
+ 00 00 mov rcx, QWORD PTR pcr$[rbp]
+ 000f2 48 03 c8 add rcx, rax
+ 000f5 48 8b c1 mov rax, rcx
+ 000f8 f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
+ 000fc 66 0f 7f 85 b0
+ 01 00 00 movdqa XMMWORD PTR cr_bytes$9[rbp], xmm0
+
+; 4186 : __m128i cb_bytes = _mm_loadl_epi64((__m128i *)(pcb + i));
+
+ 00104 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00108 48 8b 8d 40 0a
+ 00 00 mov rcx, QWORD PTR pcb$[rbp]
+ 0010f 48 03 c8 add rcx, rax
+ 00112 48 8b c1 mov rax, rcx
+ 00115 f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
+ 00119 66 0f 7f 85 e0
+ 01 00 00 movdqa XMMWORD PTR cb_bytes$10[rbp], xmm0
+
+; 4187 : __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128
+
+ 00121 66 0f 6f 85 b0
+ 01 00 00 movdqa xmm0, XMMWORD PTR cr_bytes$9[rbp]
+ 00129 0f 57 45 30 xorps xmm0, XMMWORD PTR signflip$1[rbp]
+ 0012d 66 0f 7f 85 10
+ 02 00 00 movdqa XMMWORD PTR cr_biased$11[rbp], xmm0
+
+; 4188 : __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128
+
+ 00135 66 0f 6f 85 e0
+ 01 00 00 movdqa xmm0, XMMWORD PTR cb_bytes$10[rbp]
+ 0013d 0f 57 45 30 xorps xmm0, XMMWORD PTR signflip$1[rbp]
+ 00141 66 0f 7f 85 40
+ 02 00 00 movdqa XMMWORD PTR cb_biased$12[rbp], xmm0
+
+; 4189 :
+; 4190 : // unpack to short (and left-shift cr, cb by 8)
+; 4191 : __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes);
+
+ 00149 66 0f 6f 85 20
+ 01 00 00 movdqa xmm0, XMMWORD PTR y_bias$6[rbp]
+ 00151 66 0f 60 85 80
+ 01 00 00 punpcklbw xmm0, XMMWORD PTR y_bytes$8[rbp]
+ 00159 66 0f 7f 85 70
+ 02 00 00 movdqa XMMWORD PTR yw$13[rbp], xmm0
+
+; 4192 : __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased);
+
+ 00161 66 0f ef c0 pxor xmm0, xmm0
+ 00165 66 0f 60 85 10
+ 02 00 00 punpcklbw xmm0, XMMWORD PTR cr_biased$11[rbp]
+ 0016d 66 0f 7f 85 a0
+ 02 00 00 movdqa XMMWORD PTR crw$14[rbp], xmm0
+
+; 4193 : __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased);
+
+ 00175 66 0f ef c0 pxor xmm0, xmm0
+ 00179 66 0f 60 85 40
+ 02 00 00 punpcklbw xmm0, XMMWORD PTR cb_biased$12[rbp]
+ 00181 66 0f 7f 85 d0
+ 02 00 00 movdqa XMMWORD PTR cbw$15[rbp], xmm0
+
+; 4194 :
+; 4195 : // color transform
+; 4196 : __m128i yws = _mm_srli_epi16(yw, 4);
+
+ 00189 66 0f 6f 85 70
+ 02 00 00 movdqa xmm0, XMMWORD PTR yw$13[rbp]
+ 00191 66 0f 71 d0 04 psrlw xmm0, 4
+ 00196 66 0f 7f 85 00
+ 03 00 00 movdqa XMMWORD PTR yws$16[rbp], xmm0
+
+; 4197 : __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw);
+
+ 0019e 66 0f 6f 45 60 movdqa xmm0, XMMWORD PTR cr_const0$2[rbp]
+ 001a3 66 0f e5 85 a0
+ 02 00 00 pmulhw xmm0, XMMWORD PTR crw$14[rbp]
+ 001ab 66 0f 7f 85 30
+ 03 00 00 movdqa XMMWORD PTR cr0$17[rbp], xmm0
+
+; 4198 : __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw);
+
+ 001b3 66 0f 6f 85 c0
+ 00 00 00 movdqa xmm0, XMMWORD PTR cb_const0$4[rbp]
+ 001bb 66 0f e5 85 d0
+ 02 00 00 pmulhw xmm0, XMMWORD PTR cbw$15[rbp]
+ 001c3 66 0f 7f 85 60
+ 03 00 00 movdqa XMMWORD PTR cb0$18[rbp], xmm0
+
+; 4199 : __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1);
+
+ 001cb 66 0f 6f 85 d0
+ 02 00 00 movdqa xmm0, XMMWORD PTR cbw$15[rbp]
+ 001d3 66 0f e5 85 f0
+ 00 00 00 pmulhw xmm0, XMMWORD PTR cb_const1$5[rbp]
+ 001db 66 0f 7f 85 90
+ 03 00 00 movdqa XMMWORD PTR cb1$19[rbp], xmm0
+
+; 4200 : __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1);
+
+ 001e3 66 0f 6f 85 a0
+ 02 00 00 movdqa xmm0, XMMWORD PTR crw$14[rbp]
+ 001eb 66 0f e5 85 90
+ 00 00 00 pmulhw xmm0, XMMWORD PTR cr_const1$3[rbp]
+ 001f3 66 0f 7f 85 c0
+ 03 00 00 movdqa XMMWORD PTR cr1$20[rbp], xmm0
+
+; 4201 : __m128i rws = _mm_add_epi16(cr0, yws);
+
+ 001fb 66 0f 6f 85 30
+ 03 00 00 movdqa xmm0, XMMWORD PTR cr0$17[rbp]
+ 00203 66 0f fd 85 00
+ 03 00 00 paddw xmm0, XMMWORD PTR yws$16[rbp]
+ 0020b 66 0f 7f 85 f0
+ 03 00 00 movdqa XMMWORD PTR rws$21[rbp], xmm0
+
+; 4202 : __m128i gwt = _mm_add_epi16(cb0, yws);
+
+ 00213 66 0f 6f 85 60
+ 03 00 00 movdqa xmm0, XMMWORD PTR cb0$18[rbp]
+ 0021b 66 0f fd 85 00
+ 03 00 00 paddw xmm0, XMMWORD PTR yws$16[rbp]
+ 00223 66 0f 7f 85 20
+ 04 00 00 movdqa XMMWORD PTR gwt$22[rbp], xmm0
+
+; 4203 : __m128i bws = _mm_add_epi16(yws, cb1);
+
+ 0022b 66 0f 6f 85 00
+ 03 00 00 movdqa xmm0, XMMWORD PTR yws$16[rbp]
+ 00233 66 0f fd 85 90
+ 03 00 00 paddw xmm0, XMMWORD PTR cb1$19[rbp]
+ 0023b 66 0f 7f 85 50
+ 04 00 00 movdqa XMMWORD PTR bws$23[rbp], xmm0
+
+; 4204 : __m128i gws = _mm_add_epi16(gwt, cr1);
+
+ 00243 66 0f 6f 85 20
+ 04 00 00 movdqa xmm0, XMMWORD PTR gwt$22[rbp]
+ 0024b 66 0f fd 85 c0
+ 03 00 00 paddw xmm0, XMMWORD PTR cr1$20[rbp]
+ 00253 66 0f 7f 85 80
+ 04 00 00 movdqa XMMWORD PTR gws$24[rbp], xmm0
+
+; 4205 :
+; 4206 : // descale
+; 4207 : __m128i rw = _mm_srai_epi16(rws, 4);
+
+ 0025b 66 0f 6f 85 f0
+ 03 00 00 movdqa xmm0, XMMWORD PTR rws$21[rbp]
+ 00263 66 0f 71 e0 04 psraw xmm0, 4
+ 00268 66 0f 7f 85 b0
+ 04 00 00 movdqa XMMWORD PTR rw$25[rbp], xmm0
+
+; 4208 : __m128i bw = _mm_srai_epi16(bws, 4);
+
+ 00270 66 0f 6f 85 50
+ 04 00 00 movdqa xmm0, XMMWORD PTR bws$23[rbp]
+ 00278 66 0f 71 e0 04 psraw xmm0, 4
+ 0027d 66 0f 7f 85 e0
+ 04 00 00 movdqa XMMWORD PTR bw$26[rbp], xmm0
+
+; 4209 : __m128i gw = _mm_srai_epi16(gws, 4);
+
+ 00285 66 0f 6f 85 80
+ 04 00 00 movdqa xmm0, XMMWORD PTR gws$24[rbp]
+ 0028d 66 0f 71 e0 04 psraw xmm0, 4
+ 00292 66 0f 7f 85 10
+ 05 00 00 movdqa XMMWORD PTR gw$27[rbp], xmm0
+
+; 4210 :
+; 4211 : // back to byte, set up for transpose
+; 4212 : __m128i brb = _mm_packus_epi16(rw, bw);
+
+ 0029a 66 0f 6f 85 b0
+ 04 00 00 movdqa xmm0, XMMWORD PTR rw$25[rbp]
+ 002a2 66 0f 67 85 e0
+ 04 00 00 packuswb xmm0, XMMWORD PTR bw$26[rbp]
+ 002aa 66 0f 7f 85 40
+ 05 00 00 movdqa XMMWORD PTR brb$28[rbp], xmm0
+
+; 4213 : __m128i gxb = _mm_packus_epi16(gw, xw);
+
+ 002b2 66 0f 6f 85 10
+ 05 00 00 movdqa xmm0, XMMWORD PTR gw$27[rbp]
+ 002ba 66 0f 67 85 50
+ 01 00 00 packuswb xmm0, XMMWORD PTR xw$7[rbp]
+ 002c2 66 0f 7f 85 70
+ 05 00 00 movdqa XMMWORD PTR gxb$29[rbp], xmm0
+
+; 4214 :
+; 4215 : // transpose to interleave channels
+; 4216 : __m128i t0 = _mm_unpacklo_epi8(brb, gxb);
+
+ 002ca 66 0f 6f 85 40
+ 05 00 00 movdqa xmm0, XMMWORD PTR brb$28[rbp]
+ 002d2 66 0f 60 85 70
+ 05 00 00 punpcklbw xmm0, XMMWORD PTR gxb$29[rbp]
+ 002da 66 0f 7f 85 a0
+ 05 00 00 movdqa XMMWORD PTR t0$30[rbp], xmm0
+
+; 4217 : __m128i t1 = _mm_unpackhi_epi8(brb, gxb);
+
+ 002e2 66 0f 6f 85 40
+ 05 00 00 movdqa xmm0, XMMWORD PTR brb$28[rbp]
+ 002ea 66 0f 68 85 70
+ 05 00 00 punpckhbw xmm0, XMMWORD PTR gxb$29[rbp]
+ 002f2 66 0f 7f 85 d0
+ 05 00 00 movdqa XMMWORD PTR t1$31[rbp], xmm0
+
+; 4218 : __m128i o0 = _mm_unpacklo_epi16(t0, t1);
+
+ 002fa 66 0f 6f 85 a0
+ 05 00 00 movdqa xmm0, XMMWORD PTR t0$30[rbp]
+ 00302 66 0f 61 85 d0
+ 05 00 00 punpcklwd xmm0, XMMWORD PTR t1$31[rbp]
+ 0030a 66 0f 7f 85 00
+ 06 00 00 movdqa XMMWORD PTR o0$32[rbp], xmm0
+
+; 4219 : __m128i o1 = _mm_unpackhi_epi16(t0, t1);
+
+ 00312 66 0f 6f 85 a0
+ 05 00 00 movdqa xmm0, XMMWORD PTR t0$30[rbp]
+ 0031a 66 0f 69 85 d0
+ 05 00 00 punpckhwd xmm0, XMMWORD PTR t1$31[rbp]
+ 00322 66 0f 7f 85 30
+ 06 00 00 movdqa XMMWORD PTR o1$33[rbp], xmm0
+
+; 4220 :
+; 4221 : // store
+; 4222 : _mm_storeu_si128((__m128i *)(out + 0), o0);
+
+ 0032a 48 8b 85 30 0a
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 00331 66 0f 6f 85 00
+ 06 00 00 movdqa xmm0, XMMWORD PTR o0$32[rbp]
+ 00339 f3 0f 7f 00 movdqu XMMWORD PTR [rax], xmm0
+
+; 4223 : _mm_storeu_si128((__m128i *)(out + 16), o1);
+
+ 0033d 48 8b 85 30 0a
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 00344 48 83 c0 10 add rax, 16
+ 00348 66 0f 6f 85 30
+ 06 00 00 movdqa xmm0, XMMWORD PTR o1$33[rbp]
+ 00350 f3 0f 7f 00 movdqu XMMWORD PTR [rax], xmm0
+
+; 4224 : out += 32;
+
+ 00354 48 8b 85 30 0a
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 0035b 48 83 c0 20 add rax, 32 ; 00000020H
+ 0035f 48 89 85 30 0a
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 4225 : }
+
+ 00366 e9 44 fd ff ff jmp $LN2@stbi__YCbC
+$LN3@stbi__YCbC:
+$LN8@stbi__YCbC:
+
+; 4226 : }
+; 4227 : #endif
+; 4228 :
+; 4229 : #ifdef STBI_NEON
+; 4230 : // in this version, step=3 support would be easy to add. but is there demand?
+; 4231 : if (step == 4) {
+; 4232 : // this is a fairly straightforward implementation and not super-optimized.
+; 4233 : uint8x8_t signflip = vdup_n_u8(0x80);
+; 4234 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f));
+; 4235 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f));
+; 4236 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f));
+; 4237 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f));
+; 4238 :
+; 4239 : for (; i + 7 < count; i += 8) {
+; 4240 : // load
+; 4241 : uint8x8_t y_bytes = vld1_u8(y + i);
+; 4242 : uint8x8_t cr_bytes = vld1_u8(pcr + i);
+; 4243 : uint8x8_t cb_bytes = vld1_u8(pcb + i);
+; 4244 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip));
+; 4245 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip));
+; 4246 :
+; 4247 : // expand to s16
+; 4248 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4));
+; 4249 : int16x8_t crw = vshll_n_s8(cr_biased, 7);
+; 4250 : int16x8_t cbw = vshll_n_s8(cb_biased, 7);
+; 4251 :
+; 4252 : // color transform
+; 4253 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0);
+; 4254 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0);
+; 4255 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1);
+; 4256 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1);
+; 4257 : int16x8_t rws = vaddq_s16(yws, cr0);
+; 4258 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1);
+; 4259 : int16x8_t bws = vaddq_s16(yws, cb1);
+; 4260 :
+; 4261 : // undo scaling, round, convert to byte
+; 4262 : uint8x8x4_t o;
+; 4263 : o.val[0] = vqrshrun_n_s16(rws, 4);
+; 4264 : o.val[1] = vqrshrun_n_s16(gws, 4);
+; 4265 : o.val[2] = vqrshrun_n_s16(bws, 4);
+; 4266 : o.val[3] = vdup_n_u8(255);
+; 4267 :
+; 4268 : // store, interleaving r/g/b/a
+; 4269 : vst4_u8(out, o);
+; 4270 : out += 8 * 4;
+; 4271 : }
+; 4272 : }
+; 4273 : #endif
+; 4274 :
+; 4275 : for (; i < count; ++i) {
+
+ 0036b eb 08 jmp SHORT $LN7@stbi__YCbC
+$LN5@stbi__YCbC:
+ 0036d 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00370 ff c0 inc eax
+ 00372 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__YCbC:
+ 00375 8b 85 50 0a 00
+ 00 mov eax, DWORD PTR count$[rbp]
+ 0037b 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 0037e 0f 8d e1 01 00
+ 00 jge $LN6@stbi__YCbC
+
+; 4276 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding
+
+ 00384 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00388 48 8b 8d 38 0a
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 0038f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00393 c1 e0 14 shl eax, 20
+ 00396 05 00 00 08 00 add eax, 524288 ; 00080000H
+ 0039b 89 85 54 06 00
+ 00 mov DWORD PTR y_fixed$34[rbp], eax
+
+; 4277 : int r, g, b;
+; 4278 : int cr = pcr[i] - 128;
+
+ 003a1 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 003a5 48 8b 8d 48 0a
+ 00 00 mov rcx, QWORD PTR pcr$[rbp]
+ 003ac 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 003b0 2d 80 00 00 00 sub eax, 128 ; 00000080H
+ 003b5 89 85 d4 06 00
+ 00 mov DWORD PTR cr$38[rbp], eax
+
+; 4279 : int cb = pcb[i] - 128;
+
+ 003bb 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 003bf 48 8b 8d 40 0a
+ 00 00 mov rcx, QWORD PTR pcb$[rbp]
+ 003c6 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 003ca 2d 80 00 00 00 sub eax, 128 ; 00000080H
+ 003cf 89 85 f4 06 00
+ 00 mov DWORD PTR cb$39[rbp], eax
+
+; 4280 : r = y_fixed + cr * stbi__float2fixed(1.40200f);
+
+ 003d5 69 85 d4 06 00
+ 00 00 6f 16 00 imul eax, DWORD PTR cr$38[rbp], 1470208 ; 00166f00H
+ 003df 8b 8d 54 06 00
+ 00 mov ecx, DWORD PTR y_fixed$34[rbp]
+ 003e5 03 c8 add ecx, eax
+ 003e7 8b c1 mov eax, ecx
+ 003e9 89 85 74 06 00
+ 00 mov DWORD PTR r$35[rbp], eax
+
+; 4281 : g = y_fixed + cr * -stbi__float2fixed(0.71414f) +
+
+ 003ef 69 85 d4 06 00
+ 00 00 93 f4 ff imul eax, DWORD PTR cr$38[rbp], -748800 ; fffffffffff49300H
+ 003f9 8b 8d 54 06 00
+ 00 mov ecx, DWORD PTR y_fixed$34[rbp]
+ 003ff 03 c8 add ecx, eax
+ 00401 8b c1 mov eax, ecx
+ 00403 69 8d f4 06 00
+ 00 00 7e fa ff imul ecx, DWORD PTR cb$39[rbp], -360960 ; fffffffffffa7e00H
+ 0040d 81 e1 00 00 ff
+ ff and ecx, -65536 ; ffff0000H
+ 00413 03 c1 add eax, ecx
+ 00415 89 85 94 06 00
+ 00 mov DWORD PTR g$36[rbp], eax
+
+; 4282 : ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000);
+; 4283 : b = y_fixed + cb * stbi__float2fixed(1.77200f);
+
+ 0041b 69 85 f4 06 00
+ 00 00 5a 1c 00 imul eax, DWORD PTR cb$39[rbp], 1858048 ; 001c5a00H
+ 00425 8b 8d 54 06 00
+ 00 mov ecx, DWORD PTR y_fixed$34[rbp]
+ 0042b 03 c8 add ecx, eax
+ 0042d 8b c1 mov eax, ecx
+ 0042f 89 85 b4 06 00
+ 00 mov DWORD PTR b$37[rbp], eax
+
+; 4284 : r >>= 20;
+
+ 00435 8b 85 74 06 00
+ 00 mov eax, DWORD PTR r$35[rbp]
+ 0043b c1 f8 14 sar eax, 20
+ 0043e 89 85 74 06 00
+ 00 mov DWORD PTR r$35[rbp], eax
+
+; 4285 : g >>= 20;
+
+ 00444 8b 85 94 06 00
+ 00 mov eax, DWORD PTR g$36[rbp]
+ 0044a c1 f8 14 sar eax, 20
+ 0044d 89 85 94 06 00
+ 00 mov DWORD PTR g$36[rbp], eax
+
+; 4286 : b >>= 20;
+
+ 00453 8b 85 b4 06 00
+ 00 mov eax, DWORD PTR b$37[rbp]
+ 00459 c1 f8 14 sar eax, 20
+ 0045c 89 85 b4 06 00
+ 00 mov DWORD PTR b$37[rbp], eax
+
+; 4287 : if ((unsigned)r > 255) {
+
+ 00462 81 bd 74 06 00
+ 00 ff 00 00 00 cmp DWORD PTR r$35[rbp], 255 ; 000000ffH
+ 0046c 76 1f jbe SHORT $LN9@stbi__YCbC
+
+; 4288 : if (r < 0)
+
+ 0046e 83 bd 74 06 00
+ 00 00 cmp DWORD PTR r$35[rbp], 0
+ 00475 7d 0c jge SHORT $LN10@stbi__YCbC
+
+; 4289 : r = 0;
+
+ 00477 c7 85 74 06 00
+ 00 00 00 00 00 mov DWORD PTR r$35[rbp], 0
+ 00481 eb 0a jmp SHORT $LN11@stbi__YCbC
+$LN10@stbi__YCbC:
+
+; 4290 : else
+; 4291 : r = 255;
+
+ 00483 c7 85 74 06 00
+ 00 ff 00 00 00 mov DWORD PTR r$35[rbp], 255 ; 000000ffH
+$LN11@stbi__YCbC:
+$LN9@stbi__YCbC:
+
+; 4292 : }
+; 4293 : if ((unsigned)g > 255) {
+
+ 0048d 81 bd 94 06 00
+ 00 ff 00 00 00 cmp DWORD PTR g$36[rbp], 255 ; 000000ffH
+ 00497 76 1f jbe SHORT $LN12@stbi__YCbC
+
+; 4294 : if (g < 0)
+
+ 00499 83 bd 94 06 00
+ 00 00 cmp DWORD PTR g$36[rbp], 0
+ 004a0 7d 0c jge SHORT $LN13@stbi__YCbC
+
+; 4295 : g = 0;
+
+ 004a2 c7 85 94 06 00
+ 00 00 00 00 00 mov DWORD PTR g$36[rbp], 0
+ 004ac eb 0a jmp SHORT $LN14@stbi__YCbC
+$LN13@stbi__YCbC:
+
+; 4296 : else
+; 4297 : g = 255;
+
+ 004ae c7 85 94 06 00
+ 00 ff 00 00 00 mov DWORD PTR g$36[rbp], 255 ; 000000ffH
+$LN14@stbi__YCbC:
+$LN12@stbi__YCbC:
+
+; 4298 : }
+; 4299 : if ((unsigned)b > 255) {
+
+ 004b8 81 bd b4 06 00
+ 00 ff 00 00 00 cmp DWORD PTR b$37[rbp], 255 ; 000000ffH
+ 004c2 76 1f jbe SHORT $LN15@stbi__YCbC
+
+; 4300 : if (b < 0)
+
+ 004c4 83 bd b4 06 00
+ 00 00 cmp DWORD PTR b$37[rbp], 0
+ 004cb 7d 0c jge SHORT $LN16@stbi__YCbC
+
+; 4301 : b = 0;
+
+ 004cd c7 85 b4 06 00
+ 00 00 00 00 00 mov DWORD PTR b$37[rbp], 0
+ 004d7 eb 0a jmp SHORT $LN17@stbi__YCbC
+$LN16@stbi__YCbC:
+
+; 4302 : else
+; 4303 : b = 255;
+
+ 004d9 c7 85 b4 06 00
+ 00 ff 00 00 00 mov DWORD PTR b$37[rbp], 255 ; 000000ffH
+$LN17@stbi__YCbC:
+$LN15@stbi__YCbC:
+
+; 4304 : }
+; 4305 : out[0] = (stbi_uc)r;
+
+ 004e3 b8 01 00 00 00 mov eax, 1
+ 004e8 48 6b c0 00 imul rax, rax, 0
+ 004ec 48 8b 8d 30 0a
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 004f3 0f b6 95 74 06
+ 00 00 movzx edx, BYTE PTR r$35[rbp]
+ 004fa 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 4306 : out[1] = (stbi_uc)g;
+
+ 004fd b8 01 00 00 00 mov eax, 1
+ 00502 48 6b c0 01 imul rax, rax, 1
+ 00506 48 8b 8d 30 0a
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0050d 0f b6 95 94 06
+ 00 00 movzx edx, BYTE PTR g$36[rbp]
+ 00514 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 4307 : out[2] = (stbi_uc)b;
+
+ 00517 b8 01 00 00 00 mov eax, 1
+ 0051c 48 6b c0 02 imul rax, rax, 2
+ 00520 48 8b 8d 30 0a
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00527 0f b6 95 b4 06
+ 00 00 movzx edx, BYTE PTR b$37[rbp]
+ 0052e 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 4308 : out[3] = 255;
+
+ 00531 b8 01 00 00 00 mov eax, 1
+ 00536 48 6b c0 03 imul rax, rax, 3
+ 0053a 48 8b 8d 30 0a
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00541 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4309 : out += step;
+
+ 00545 48 63 85 58 0a
+ 00 00 movsxd rax, DWORD PTR step$[rbp]
+ 0054c 48 8b 8d 30 0a
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00553 48 03 c8 add rcx, rax
+ 00556 48 8b c1 mov rax, rcx
+ 00559 48 89 85 30 0a
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 4310 : }
+
+ 00560 e9 08 fe ff ff jmp $LN5@stbi__YCbC
+$LN6@stbi__YCbC:
+
+; 4311 : }
+
+ 00565 48 8d a5 18 0a
+ 00 00 lea rsp, QWORD PTR [rbp+2584]
+ 0056c 5f pop rdi
+ 0056d 5d pop rbp
+ 0056e c3 ret 0
+stbi__YCbCr_to_RGB_simd ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__YCbCr_to_RGB_row
+_TEXT SEGMENT
+i$ = 4
+y_fixed$1 = 36
+r$2 = 68
+g$3 = 100
+b$4 = 132
+cr$5 = 164
+cb$6 = 196
+out$ = 448
+y$ = 456
+pcb$ = 464
+pcr$ = 472
+count$ = 480
+step$ = 488
+stbi__YCbCr_to_RGB_row PROC ; COMDAT
+
+; 4122 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec c8 01
+ 00 00 sub rsp, 456 ; 000001c8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 4123 : int i;
+; 4124 : for (i = 0; i < count; ++i) {
+
+ 0002f c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00036 eb 08 jmp SHORT $LN4@stbi__YCbC
+$LN2@stbi__YCbC:
+ 00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0003b ff c0 inc eax
+ 0003d 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__YCbC:
+ 00040 8b 85 e0 01 00
+ 00 mov eax, DWORD PTR count$[rbp]
+ 00046 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00049 0f 8d a5 01 00
+ 00 jge $LN3@stbi__YCbC
+
+; 4125 : int y_fixed = (y[i] << 20) + (1 << 19); // rounding
+
+ 0004f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00053 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 0005a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0005e c1 e0 14 shl eax, 20
+ 00061 05 00 00 08 00 add eax, 524288 ; 00080000H
+ 00066 89 45 24 mov DWORD PTR y_fixed$1[rbp], eax
+
+; 4126 : int r, g, b;
+; 4127 : int cr = pcr[i] - 128;
+
+ 00069 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0006d 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR pcr$[rbp]
+ 00074 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00078 2d 80 00 00 00 sub eax, 128 ; 00000080H
+ 0007d 89 85 a4 00 00
+ 00 mov DWORD PTR cr$5[rbp], eax
+
+; 4128 : int cb = pcb[i] - 128;
+
+ 00083 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00087 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR pcb$[rbp]
+ 0008e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00092 2d 80 00 00 00 sub eax, 128 ; 00000080H
+ 00097 89 85 c4 00 00
+ 00 mov DWORD PTR cb$6[rbp], eax
+
+; 4129 : r = y_fixed + cr * stbi__float2fixed(1.40200f);
+
+ 0009d 69 85 a4 00 00
+ 00 00 6f 16 00 imul eax, DWORD PTR cr$5[rbp], 1470208 ; 00166f00H
+ 000a7 8b 4d 24 mov ecx, DWORD PTR y_fixed$1[rbp]
+ 000aa 03 c8 add ecx, eax
+ 000ac 8b c1 mov eax, ecx
+ 000ae 89 45 44 mov DWORD PTR r$2[rbp], eax
+
+; 4130 : g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) +
+
+ 000b1 69 85 a4 00 00
+ 00 00 93 f4 ff imul eax, DWORD PTR cr$5[rbp], -748800 ; fffffffffff49300H
+ 000bb 8b 4d 24 mov ecx, DWORD PTR y_fixed$1[rbp]
+ 000be 03 c8 add ecx, eax
+ 000c0 8b c1 mov eax, ecx
+ 000c2 69 8d c4 00 00
+ 00 00 7e fa ff imul ecx, DWORD PTR cb$6[rbp], -360960 ; fffffffffffa7e00H
+ 000cc 81 e1 00 00 ff
+ ff and ecx, -65536 ; ffff0000H
+ 000d2 03 c1 add eax, ecx
+ 000d4 89 45 64 mov DWORD PTR g$3[rbp], eax
+
+; 4131 : ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000);
+; 4132 : b = y_fixed + cb * stbi__float2fixed(1.77200f);
+
+ 000d7 69 85 c4 00 00
+ 00 00 5a 1c 00 imul eax, DWORD PTR cb$6[rbp], 1858048 ; 001c5a00H
+ 000e1 8b 4d 24 mov ecx, DWORD PTR y_fixed$1[rbp]
+ 000e4 03 c8 add ecx, eax
+ 000e6 8b c1 mov eax, ecx
+ 000e8 89 85 84 00 00
+ 00 mov DWORD PTR b$4[rbp], eax
+
+; 4133 : r >>= 20;
+
+ 000ee 8b 45 44 mov eax, DWORD PTR r$2[rbp]
+ 000f1 c1 f8 14 sar eax, 20
+ 000f4 89 45 44 mov DWORD PTR r$2[rbp], eax
+
+; 4134 : g >>= 20;
+
+ 000f7 8b 45 64 mov eax, DWORD PTR g$3[rbp]
+ 000fa c1 f8 14 sar eax, 20
+ 000fd 89 45 64 mov DWORD PTR g$3[rbp], eax
+
+; 4135 : b >>= 20;
+
+ 00100 8b 85 84 00 00
+ 00 mov eax, DWORD PTR b$4[rbp]
+ 00106 c1 f8 14 sar eax, 20
+ 00109 89 85 84 00 00
+ 00 mov DWORD PTR b$4[rbp], eax
+
+; 4136 : if ((unsigned)r > 255) {
+
+ 0010f 81 7d 44 ff 00
+ 00 00 cmp DWORD PTR r$2[rbp], 255 ; 000000ffH
+ 00116 76 16 jbe SHORT $LN5@stbi__YCbC
+
+; 4137 : if (r < 0)
+
+ 00118 83 7d 44 00 cmp DWORD PTR r$2[rbp], 0
+ 0011c 7d 09 jge SHORT $LN6@stbi__YCbC
+
+; 4138 : r = 0;
+
+ 0011e c7 45 44 00 00
+ 00 00 mov DWORD PTR r$2[rbp], 0
+ 00125 eb 07 jmp SHORT $LN7@stbi__YCbC
+$LN6@stbi__YCbC:
+
+; 4139 : else
+; 4140 : r = 255;
+
+ 00127 c7 45 44 ff 00
+ 00 00 mov DWORD PTR r$2[rbp], 255 ; 000000ffH
+$LN7@stbi__YCbC:
+$LN5@stbi__YCbC:
+
+; 4141 : }
+; 4142 : if ((unsigned)g > 255) {
+
+ 0012e 81 7d 64 ff 00
+ 00 00 cmp DWORD PTR g$3[rbp], 255 ; 000000ffH
+ 00135 76 16 jbe SHORT $LN8@stbi__YCbC
+
+; 4143 : if (g < 0)
+
+ 00137 83 7d 64 00 cmp DWORD PTR g$3[rbp], 0
+ 0013b 7d 09 jge SHORT $LN9@stbi__YCbC
+
+; 4144 : g = 0;
+
+ 0013d c7 45 64 00 00
+ 00 00 mov DWORD PTR g$3[rbp], 0
+ 00144 eb 07 jmp SHORT $LN10@stbi__YCbC
+$LN9@stbi__YCbC:
+
+; 4145 : else
+; 4146 : g = 255;
+
+ 00146 c7 45 64 ff 00
+ 00 00 mov DWORD PTR g$3[rbp], 255 ; 000000ffH
+$LN10@stbi__YCbC:
+$LN8@stbi__YCbC:
+
+; 4147 : }
+; 4148 : if ((unsigned)b > 255) {
+
+ 0014d 81 bd 84 00 00
+ 00 ff 00 00 00 cmp DWORD PTR b$4[rbp], 255 ; 000000ffH
+ 00157 76 1f jbe SHORT $LN11@stbi__YCbC
+
+; 4149 : if (b < 0)
+
+ 00159 83 bd 84 00 00
+ 00 00 cmp DWORD PTR b$4[rbp], 0
+ 00160 7d 0c jge SHORT $LN12@stbi__YCbC
+
+; 4150 : b = 0;
+
+ 00162 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR b$4[rbp], 0
+ 0016c eb 0a jmp SHORT $LN13@stbi__YCbC
+$LN12@stbi__YCbC:
+
+; 4151 : else
+; 4152 : b = 255;
+
+ 0016e c7 85 84 00 00
+ 00 ff 00 00 00 mov DWORD PTR b$4[rbp], 255 ; 000000ffH
+$LN13@stbi__YCbC:
+$LN11@stbi__YCbC:
+
+; 4153 : }
+; 4154 : out[0] = (stbi_uc)r;
+
+ 00178 b8 01 00 00 00 mov eax, 1
+ 0017d 48 6b c0 00 imul rax, rax, 0
+ 00181 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00188 0f b6 55 44 movzx edx, BYTE PTR r$2[rbp]
+ 0018c 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 4155 : out[1] = (stbi_uc)g;
+
+ 0018f b8 01 00 00 00 mov eax, 1
+ 00194 48 6b c0 01 imul rax, rax, 1
+ 00198 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0019f 0f b6 55 64 movzx edx, BYTE PTR g$3[rbp]
+ 001a3 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 4156 : out[2] = (stbi_uc)b;
+
+ 001a6 b8 01 00 00 00 mov eax, 1
+ 001ab 48 6b c0 02 imul rax, rax, 2
+ 001af 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 001b6 0f b6 95 84 00
+ 00 00 movzx edx, BYTE PTR b$4[rbp]
+ 001bd 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 4157 : out[3] = 255;
+
+ 001c0 b8 01 00 00 00 mov eax, 1
+ 001c5 48 6b c0 03 imul rax, rax, 3
+ 001c9 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 001d0 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 4158 : out += step;
+
+ 001d4 48 63 85 e8 01
+ 00 00 movsxd rax, DWORD PTR step$[rbp]
+ 001db 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 001e2 48 03 c8 add rcx, rax
+ 001e5 48 8b c1 mov rax, rcx
+ 001e8 48 89 85 c0 01
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 4159 : }
+
+ 001ef e9 44 fe ff ff jmp $LN2@stbi__YCbC
+$LN3@stbi__YCbC:
+
+; 4160 : }
+
+ 001f4 48 8d a5 a8 01
+ 00 00 lea rsp, QWORD PTR [rbp+424]
+ 001fb 5f pop rdi
+ 001fc 5d pop rbp
+ 001fd c3 ret 0
+stbi__YCbCr_to_RGB_row ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__resample_row_generic
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+out$ = 288
+in_near$ = 296
+in_far$ = 304
+w$ = 312
+hs$ = 320
+stbi__resample_row_generic PROC ; COMDAT
+
+; 4107 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 4108 : // resample with nearest-neighbor
+; 4109 : int i, j;
+; 4110 : STBI_NOTUSED(in_far);
+; 4111 : for (i = 0; i < w; ++i)
+
+ 0002f c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00036 eb 08 jmp SHORT $LN4@stbi__resa
+$LN2@stbi__resa:
+ 00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0003b ff c0 inc eax
+ 0003d 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__resa:
+ 00040 8b 85 38 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00046 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00049 7d 4a jge SHORT $LN3@stbi__resa
+
+; 4112 : for (j = 0; j < hs; ++j)
+
+ 0004b c7 45 24 00 00
+ 00 00 mov DWORD PTR j$[rbp], 0
+ 00052 eb 08 jmp SHORT $LN7@stbi__resa
+$LN5@stbi__resa:
+ 00054 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 00057 ff c0 inc eax
+ 00059 89 45 24 mov DWORD PTR j$[rbp], eax
+$LN7@stbi__resa:
+ 0005c 8b 85 40 01 00
+ 00 mov eax, DWORD PTR hs$[rbp]
+ 00062 39 45 24 cmp DWORD PTR j$[rbp], eax
+ 00065 7d 2c jge SHORT $LN6@stbi__resa
+
+; 4113 : out[i * hs + j] = in_near[i];
+
+ 00067 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0006b 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 0006e 0f af 8d 40 01
+ 00 00 imul ecx, DWORD PTR hs$[rbp]
+ 00075 03 4d 24 add ecx, DWORD PTR j$[rbp]
+ 00078 48 63 c9 movsxd rcx, ecx
+ 0007b 48 8b 95 20 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00082 4c 8b 85 28 01
+ 00 00 mov r8, QWORD PTR in_near$[rbp]
+ 00089 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0008e 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00091 eb c1 jmp SHORT $LN5@stbi__resa
+$LN6@stbi__resa:
+ 00093 eb a3 jmp SHORT $LN2@stbi__resa
+$LN3@stbi__resa:
+
+; 4114 : return out;
+
+ 00095 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+
+; 4115 : }
+
+ 0009c 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000a3 5f pop rdi
+ 000a4 5d pop rbp
+ 000a5 c3 ret 0
+stbi__resample_row_generic ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__resample_row_hv_2_simd
+_TEXT SEGMENT
+i$ = 4
+t0$ = 36
+t1$ = 68
+zero$1 = 112
+farb$2 = 160
+nearb$3 = 208
+farw$4 = 256
+nearw$5 = 304
+diff$6 = 352
+nears$7 = 400
+curr$8 = 448
+prv0$9 = 496
+nxt0$10 = 544
+prev$11 = 592
+next$12 = 640
+bias$13 = 688
+curs$14 = 736
+prvd$15 = 784
+nxtd$16 = 832
+curb$17 = 880
+even$18 = 928
+odd$19 = 976
+int0$20 = 1024
+int1$21 = 1072
+de0$22 = 1120
+de1$23 = 1168
+outv$24 = 1216
+tv78 = 1812
+out$ = 1856
+in_near$ = 1864
+in_far$ = 1872
+w$ = 1880
+hs$ = 1888
+stbi__resample_row_hv_2_simd PROC ; COMDAT
+
+; 3990 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 07
+ 00 00 sub rsp, 1864 ; 00000748H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 3991 : // need to generate 2x2 samples for every one in input
+; 3992 : int i = 0, t0, t1;
+
+ 0002f c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+
+; 3993 :
+; 3994 : if (w == 1) {
+
+ 00036 83 bd 58 07 00
+ 00 01 cmp DWORD PTR w$[rbp], 1
+ 0003d 75 78 jne SHORT $LN8@stbi__resa
+
+; 3995 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2);
+
+ 0003f b8 01 00 00 00 mov eax, 1
+ 00044 48 6b c0 00 imul rax, rax, 0
+ 00048 48 8b 8d 48 07
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 0004f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00053 6b c0 03 imul eax, eax, 3
+ 00056 b9 01 00 00 00 mov ecx, 1
+ 0005b 48 6b c9 00 imul rcx, rcx, 0
+ 0005f 48 8b 95 50 07
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 00066 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0006a 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
+ 0006e c1 f8 02 sar eax, 2
+ 00071 89 85 14 07 00
+ 00 mov DWORD PTR tv78[rbp], eax
+ 00077 b8 01 00 00 00 mov eax, 1
+ 0007c 48 6b c0 01 imul rax, rax, 1
+ 00080 48 8b 8d 40 07
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00087 0f b6 95 14 07
+ 00 00 movzx edx, BYTE PTR tv78[rbp]
+ 0008e 88 14 01 mov BYTE PTR [rcx+rax], dl
+ 00091 b8 01 00 00 00 mov eax, 1
+ 00096 48 6b c0 00 imul rax, rax, 0
+ 0009a 48 8b 8d 40 07
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 000a1 0f b6 95 14 07
+ 00 00 movzx edx, BYTE PTR tv78[rbp]
+ 000a8 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 3996 : return out;
+
+ 000ab 48 8b 85 40 07
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 000b2 e9 e8 03 00 00 jmp $LN1@stbi__resa
+$LN8@stbi__resa:
+
+; 3997 : }
+; 3998 :
+; 3999 : t1 = 3 * in_near[0] + in_far[0];
+
+ 000b7 b8 01 00 00 00 mov eax, 1
+ 000bc 48 6b c0 00 imul rax, rax, 0
+ 000c0 48 8b 8d 48 07
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 000c7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 000cb 6b c0 03 imul eax, eax, 3
+ 000ce b9 01 00 00 00 mov ecx, 1
+ 000d3 48 6b c9 00 imul rcx, rcx, 0
+ 000d7 48 8b 95 50 07
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 000de 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000e2 03 c1 add eax, ecx
+ 000e4 89 45 44 mov DWORD PTR t1$[rbp], eax
+
+; 4000 : // process groups of 8 pixels for as long as we can.
+; 4001 : // note we can't handle the last pixel in a row in this loop
+; 4002 : // because we need to handle the filter boundary conditions.
+; 4003 : for (; i < ((w - 1) & ~7); i += 8) {
+
+ 000e7 eb 09 jmp SHORT $LN4@stbi__resa
+$LN2@stbi__resa:
+ 000e9 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000ec 83 c0 08 add eax, 8
+ 000ef 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__resa:
+ 000f2 8b 85 58 07 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 000f8 ff c8 dec eax
+ 000fa 83 e0 f8 and eax, -8
+ 000fd 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00100 0f 8d 96 02 00
+ 00 jge $LN3@stbi__resa
+
+; 4004 : #if defined(STBI_SSE2)
+; 4005 : // load and perform the vertical filtering pass
+; 4006 : // this uses 3*x + y = 4*x + (y - x)
+; 4007 : __m128i zero = _mm_setzero_si128();
+
+ 00106 66 0f ef c0 pxor xmm0, xmm0
+ 0010a 66 0f 7f 45 70 movdqa XMMWORD PTR zero$1[rbp], xmm0
+
+; 4008 : __m128i farb = _mm_loadl_epi64((__m128i *)(in_far + i));
+
+ 0010f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00113 48 8b 8d 50 07
+ 00 00 mov rcx, QWORD PTR in_far$[rbp]
+ 0011a 48 03 c8 add rcx, rax
+ 0011d 48 8b c1 mov rax, rcx
+ 00120 f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
+ 00124 66 0f 7f 85 a0
+ 00 00 00 movdqa XMMWORD PTR farb$2[rbp], xmm0
+
+; 4009 : __m128i nearb = _mm_loadl_epi64((__m128i *)(in_near + i));
+
+ 0012c 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00130 48 8b 8d 48 07
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 00137 48 03 c8 add rcx, rax
+ 0013a 48 8b c1 mov rax, rcx
+ 0013d f3 0f 7e 00 movq xmm0, QWORD PTR [rax]
+ 00141 66 0f 7f 85 d0
+ 00 00 00 movdqa XMMWORD PTR nearb$3[rbp], xmm0
+
+; 4010 : __m128i farw = _mm_unpacklo_epi8(farb, zero);
+
+ 00149 66 0f 6f 85 a0
+ 00 00 00 movdqa xmm0, XMMWORD PTR farb$2[rbp]
+ 00151 66 0f 60 45 70 punpcklbw xmm0, XMMWORD PTR zero$1[rbp]
+ 00156 66 0f 7f 85 00
+ 01 00 00 movdqa XMMWORD PTR farw$4[rbp], xmm0
+
+; 4011 : __m128i nearw = _mm_unpacklo_epi8(nearb, zero);
+
+ 0015e 66 0f 6f 85 d0
+ 00 00 00 movdqa xmm0, XMMWORD PTR nearb$3[rbp]
+ 00166 66 0f 60 45 70 punpcklbw xmm0, XMMWORD PTR zero$1[rbp]
+ 0016b 66 0f 7f 85 30
+ 01 00 00 movdqa XMMWORD PTR nearw$5[rbp], xmm0
+
+; 4012 : __m128i diff = _mm_sub_epi16(farw, nearw);
+
+ 00173 66 0f 6f 85 00
+ 01 00 00 movdqa xmm0, XMMWORD PTR farw$4[rbp]
+ 0017b 66 0f f9 85 30
+ 01 00 00 psubw xmm0, XMMWORD PTR nearw$5[rbp]
+ 00183 66 0f 7f 85 60
+ 01 00 00 movdqa XMMWORD PTR diff$6[rbp], xmm0
+
+; 4013 : __m128i nears = _mm_slli_epi16(nearw, 2);
+
+ 0018b 66 0f 6f 85 30
+ 01 00 00 movdqa xmm0, XMMWORD PTR nearw$5[rbp]
+ 00193 66 0f 71 f0 02 psllw xmm0, 2
+ 00198 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR nears$7[rbp], xmm0
+
+; 4014 : __m128i curr = _mm_add_epi16(nears, diff); // current row
+
+ 001a0 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR nears$7[rbp]
+ 001a8 66 0f fd 85 60
+ 01 00 00 paddw xmm0, XMMWORD PTR diff$6[rbp]
+ 001b0 66 0f 7f 85 c0
+ 01 00 00 movdqa XMMWORD PTR curr$8[rbp], xmm0
+
+; 4015 :
+; 4016 : // horizontal filter works the same based on shifted vers of current
+; 4017 : // row. "prev" is current row shifted right by 1 pixel; we need to
+; 4018 : // insert the previous pixel value (from t1).
+; 4019 : // "next" is current row shifted left by 1 pixel, with first pixel
+; 4020 : // of next block of 8 pixels added in.
+; 4021 : __m128i prv0 = _mm_slli_si128(curr, 2);
+
+ 001b8 66 0f 6f 85 c0
+ 01 00 00 movdqa xmm0, XMMWORD PTR curr$8[rbp]
+ 001c0 66 0f 73 f8 02 pslldq xmm0, 2
+ 001c5 66 0f 7f 85 f0
+ 01 00 00 movdqa XMMWORD PTR prv0$9[rbp], xmm0
+
+; 4022 : __m128i nxt0 = _mm_srli_si128(curr, 2);
+
+ 001cd 66 0f 6f 85 c0
+ 01 00 00 movdqa xmm0, XMMWORD PTR curr$8[rbp]
+ 001d5 66 0f 73 d8 02 psrldq xmm0, 2
+ 001da 66 0f 7f 85 20
+ 02 00 00 movdqa XMMWORD PTR nxt0$10[rbp], xmm0
+
+; 4023 : __m128i prev = _mm_insert_epi16(prv0, t1, 0);
+
+ 001e2 66 0f 6f 85 f0
+ 01 00 00 movdqa xmm0, XMMWORD PTR prv0$9[rbp]
+ 001ea 66 0f c4 45 44
+ 00 pinsrw xmm0, DWORD PTR t1$[rbp], 0
+ 001f0 66 0f 7f 85 50
+ 02 00 00 movdqa XMMWORD PTR prev$11[rbp], xmm0
+
+; 4024 : __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7);
+
+ 001f8 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001fb 83 c0 08 add eax, 8
+ 001fe 48 98 cdqe
+ 00200 48 8b 8d 48 07
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 00207 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0020b 6b c0 03 imul eax, eax, 3
+ 0020e 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00211 83 c1 08 add ecx, 8
+ 00214 48 63 c9 movsxd rcx, ecx
+ 00217 48 8b 95 50 07
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 0021e 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00222 03 c1 add eax, ecx
+ 00224 66 0f 6f 85 20
+ 02 00 00 movdqa xmm0, XMMWORD PTR nxt0$10[rbp]
+ 0022c 66 0f c4 c0 07 pinsrw xmm0, eax, 7
+ 00231 66 0f 7f 85 80
+ 02 00 00 movdqa XMMWORD PTR next$12[rbp], xmm0
+
+; 4025 :
+; 4026 : // horizontal filter, polyphase implementation since it's convenient:
+; 4027 : // even pixels = 3*cur + prev = cur*4 + (prev - cur)
+; 4028 : // odd pixels = 3*cur + next = cur*4 + (next - cur)
+; 4029 : // note the shared term.
+; 4030 : __m128i bias = _mm_set1_epi16(8);
+
+ 00239 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00080008000800080008000800080008
+ 00241 66 0f 7f 85 b0
+ 02 00 00 movdqa XMMWORD PTR bias$13[rbp], xmm0
+
+; 4031 : __m128i curs = _mm_slli_epi16(curr, 2);
+
+ 00249 66 0f 6f 85 c0
+ 01 00 00 movdqa xmm0, XMMWORD PTR curr$8[rbp]
+ 00251 66 0f 71 f0 02 psllw xmm0, 2
+ 00256 66 0f 7f 85 e0
+ 02 00 00 movdqa XMMWORD PTR curs$14[rbp], xmm0
+
+; 4032 : __m128i prvd = _mm_sub_epi16(prev, curr);
+
+ 0025e 66 0f 6f 85 50
+ 02 00 00 movdqa xmm0, XMMWORD PTR prev$11[rbp]
+ 00266 66 0f f9 85 c0
+ 01 00 00 psubw xmm0, XMMWORD PTR curr$8[rbp]
+ 0026e 66 0f 7f 85 10
+ 03 00 00 movdqa XMMWORD PTR prvd$15[rbp], xmm0
+
+; 4033 : __m128i nxtd = _mm_sub_epi16(next, curr);
+
+ 00276 66 0f 6f 85 80
+ 02 00 00 movdqa xmm0, XMMWORD PTR next$12[rbp]
+ 0027e 66 0f f9 85 c0
+ 01 00 00 psubw xmm0, XMMWORD PTR curr$8[rbp]
+ 00286 66 0f 7f 85 40
+ 03 00 00 movdqa XMMWORD PTR nxtd$16[rbp], xmm0
+
+; 4034 : __m128i curb = _mm_add_epi16(curs, bias);
+
+ 0028e 66 0f 6f 85 e0
+ 02 00 00 movdqa xmm0, XMMWORD PTR curs$14[rbp]
+ 00296 66 0f fd 85 b0
+ 02 00 00 paddw xmm0, XMMWORD PTR bias$13[rbp]
+ 0029e 66 0f 7f 85 70
+ 03 00 00 movdqa XMMWORD PTR curb$17[rbp], xmm0
+
+; 4035 : __m128i even = _mm_add_epi16(prvd, curb);
+
+ 002a6 66 0f 6f 85 10
+ 03 00 00 movdqa xmm0, XMMWORD PTR prvd$15[rbp]
+ 002ae 66 0f fd 85 70
+ 03 00 00 paddw xmm0, XMMWORD PTR curb$17[rbp]
+ 002b6 66 0f 7f 85 a0
+ 03 00 00 movdqa XMMWORD PTR even$18[rbp], xmm0
+
+; 4036 : __m128i odd = _mm_add_epi16(nxtd, curb);
+
+ 002be 66 0f 6f 85 40
+ 03 00 00 movdqa xmm0, XMMWORD PTR nxtd$16[rbp]
+ 002c6 66 0f fd 85 70
+ 03 00 00 paddw xmm0, XMMWORD PTR curb$17[rbp]
+ 002ce 66 0f 7f 85 d0
+ 03 00 00 movdqa XMMWORD PTR odd$19[rbp], xmm0
+
+; 4037 :
+; 4038 : // interleave even and odd pixels, then undo scaling.
+; 4039 : __m128i int0 = _mm_unpacklo_epi16(even, odd);
+
+ 002d6 66 0f 6f 85 a0
+ 03 00 00 movdqa xmm0, XMMWORD PTR even$18[rbp]
+ 002de 66 0f 61 85 d0
+ 03 00 00 punpcklwd xmm0, XMMWORD PTR odd$19[rbp]
+ 002e6 66 0f 7f 85 00
+ 04 00 00 movdqa XMMWORD PTR int0$20[rbp], xmm0
+
+; 4040 : __m128i int1 = _mm_unpackhi_epi16(even, odd);
+
+ 002ee 66 0f 6f 85 a0
+ 03 00 00 movdqa xmm0, XMMWORD PTR even$18[rbp]
+ 002f6 66 0f 69 85 d0
+ 03 00 00 punpckhwd xmm0, XMMWORD PTR odd$19[rbp]
+ 002fe 66 0f 7f 85 30
+ 04 00 00 movdqa XMMWORD PTR int1$21[rbp], xmm0
+
+; 4041 : __m128i de0 = _mm_srli_epi16(int0, 4);
+
+ 00306 66 0f 6f 85 00
+ 04 00 00 movdqa xmm0, XMMWORD PTR int0$20[rbp]
+ 0030e 66 0f 71 d0 04 psrlw xmm0, 4
+ 00313 66 0f 7f 85 60
+ 04 00 00 movdqa XMMWORD PTR de0$22[rbp], xmm0
+
+; 4042 : __m128i de1 = _mm_srli_epi16(int1, 4);
+
+ 0031b 66 0f 6f 85 30
+ 04 00 00 movdqa xmm0, XMMWORD PTR int1$21[rbp]
+ 00323 66 0f 71 d0 04 psrlw xmm0, 4
+ 00328 66 0f 7f 85 90
+ 04 00 00 movdqa XMMWORD PTR de1$23[rbp], xmm0
+
+; 4043 :
+; 4044 : // pack and write output
+; 4045 : __m128i outv = _mm_packus_epi16(de0, de1);
+
+ 00330 66 0f 6f 85 60
+ 04 00 00 movdqa xmm0, XMMWORD PTR de0$22[rbp]
+ 00338 66 0f 67 85 90
+ 04 00 00 packuswb xmm0, XMMWORD PTR de1$23[rbp]
+ 00340 66 0f 7f 85 c0
+ 04 00 00 movdqa XMMWORD PTR outv$24[rbp], xmm0
+
+; 4046 : _mm_storeu_si128((__m128i *)(out + i * 2), outv);
+
+ 00348 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0034b 03 c0 add eax, eax
+ 0034d 48 98 cdqe
+ 0034f 48 8b 8d 40 07
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00356 48 03 c8 add rcx, rax
+ 00359 48 8b c1 mov rax, rcx
+ 0035c 66 0f 6f 85 c0
+ 04 00 00 movdqa xmm0, XMMWORD PTR outv$24[rbp]
+ 00364 f3 0f 7f 00 movdqu XMMWORD PTR [rax], xmm0
+
+; 4047 : #elif defined(STBI_NEON)
+; 4048 : // load and perform the vertical filtering pass
+; 4049 : // this uses 3*x + y = 4*x + (y - x)
+; 4050 : uint8x8_t farb = vld1_u8(in_far + i);
+; 4051 : uint8x8_t nearb = vld1_u8(in_near + i);
+; 4052 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb));
+; 4053 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2));
+; 4054 : int16x8_t curr = vaddq_s16(nears, diff); // current row
+; 4055 :
+; 4056 : // horizontal filter works the same based on shifted vers of current
+; 4057 : // row. "prev" is current row shifted right by 1 pixel; we need to
+; 4058 : // insert the previous pixel value (from t1).
+; 4059 : // "next" is current row shifted left by 1 pixel, with first pixel
+; 4060 : // of next block of 8 pixels added in.
+; 4061 : int16x8_t prv0 = vextq_s16(curr, curr, 7);
+; 4062 : int16x8_t nxt0 = vextq_s16(curr, curr, 1);
+; 4063 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0);
+; 4064 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7);
+; 4065 :
+; 4066 : // horizontal filter, polyphase implementation since it's convenient:
+; 4067 : // even pixels = 3*cur + prev = cur*4 + (prev - cur)
+; 4068 : // odd pixels = 3*cur + next = cur*4 + (next - cur)
+; 4069 : // note the shared term.
+; 4070 : int16x8_t curs = vshlq_n_s16(curr, 2);
+; 4071 : int16x8_t prvd = vsubq_s16(prev, curr);
+; 4072 : int16x8_t nxtd = vsubq_s16(next, curr);
+; 4073 : int16x8_t even = vaddq_s16(curs, prvd);
+; 4074 : int16x8_t odd = vaddq_s16(curs, nxtd);
+; 4075 :
+; 4076 : // undo scaling and round, then store with even/odd phases interleaved
+; 4077 : uint8x8x2_t o;
+; 4078 : o.val[0] = vqrshrun_n_s16(even, 4);
+; 4079 : o.val[1] = vqrshrun_n_s16(odd, 4);
+; 4080 : vst2_u8(out + i * 2, o);
+; 4081 : #endif
+; 4082 :
+; 4083 : // "previous" value for next iter
+; 4084 : t1 = 3 * in_near[i + 7] + in_far[i + 7];
+
+ 00368 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0036b 83 c0 07 add eax, 7
+ 0036e 48 98 cdqe
+ 00370 48 8b 8d 48 07
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 00377 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0037b 6b c0 03 imul eax, eax, 3
+ 0037e 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00381 83 c1 07 add ecx, 7
+ 00384 48 63 c9 movsxd rcx, ecx
+ 00387 48 8b 95 50 07
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 0038e 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00392 03 c1 add eax, ecx
+ 00394 89 45 44 mov DWORD PTR t1$[rbp], eax
+
+; 4085 : }
+
+ 00397 e9 4d fd ff ff jmp $LN2@stbi__resa
+$LN3@stbi__resa:
+
+; 4086 :
+; 4087 : t0 = t1;
+
+ 0039c 8b 45 44 mov eax, DWORD PTR t1$[rbp]
+ 0039f 89 45 24 mov DWORD PTR t0$[rbp], eax
+
+; 4088 : t1 = 3 * in_near[i] + in_far[i];
+
+ 003a2 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 003a6 48 8b 8d 48 07
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 003ad 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 003b1 6b c0 03 imul eax, eax, 3
+ 003b4 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 003b8 48 8b 95 50 07
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 003bf 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 003c3 03 c1 add eax, ecx
+ 003c5 89 45 44 mov DWORD PTR t1$[rbp], eax
+
+; 4089 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8);
+
+ 003c8 6b 45 44 03 imul eax, DWORD PTR t1$[rbp], 3
+ 003cc 8b 4d 24 mov ecx, DWORD PTR t0$[rbp]
+ 003cf 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
+ 003d3 c1 f8 04 sar eax, 4
+ 003d6 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 003d9 03 c9 add ecx, ecx
+ 003db 48 63 c9 movsxd rcx, ecx
+ 003de 48 8b 95 40 07
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 003e5 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4090 :
+; 4091 : for (++i; i < w; ++i) {
+
+ 003e8 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 003eb ff c0 inc eax
+ 003ed 89 45 04 mov DWORD PTR i$[rbp], eax
+ 003f0 eb 08 jmp SHORT $LN7@stbi__resa
+$LN5@stbi__resa:
+ 003f2 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 003f5 ff c0 inc eax
+ 003f7 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__resa:
+ 003fa 8b 85 58 07 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00400 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00403 7d 73 jge SHORT $LN6@stbi__resa
+
+; 4092 : t0 = t1;
+
+ 00405 8b 45 44 mov eax, DWORD PTR t1$[rbp]
+ 00408 89 45 24 mov DWORD PTR t0$[rbp], eax
+
+; 4093 : t1 = 3 * in_near[i] + in_far[i];
+
+ 0040b 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0040f 48 8b 8d 48 07
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 00416 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0041a 6b c0 03 imul eax, eax, 3
+ 0041d 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 00421 48 8b 95 50 07
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 00428 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0042c 03 c1 add eax, ecx
+ 0042e 89 45 44 mov DWORD PTR t1$[rbp], eax
+
+; 4094 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8);
+
+ 00431 6b 45 24 03 imul eax, DWORD PTR t0$[rbp], 3
+ 00435 8b 4d 44 mov ecx, DWORD PTR t1$[rbp]
+ 00438 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
+ 0043c c1 f8 04 sar eax, 4
+ 0043f 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00442 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
+ 00446 48 63 c9 movsxd rcx, ecx
+ 00449 48 8b 95 40 07
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00450 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4095 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8);
+
+ 00453 6b 45 44 03 imul eax, DWORD PTR t1$[rbp], 3
+ 00457 8b 4d 24 mov ecx, DWORD PTR t0$[rbp]
+ 0045a 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
+ 0045e c1 f8 04 sar eax, 4
+ 00461 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00464 d1 e1 shl ecx, 1
+ 00466 48 63 c9 movsxd rcx, ecx
+ 00469 48 8b 95 40 07
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00470 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4096 : }
+
+ 00473 e9 7a ff ff ff jmp $LN5@stbi__resa
+$LN6@stbi__resa:
+
+; 4097 : out[w * 2 - 1] = stbi__div4(t1 + 2);
+
+ 00478 8b 45 44 mov eax, DWORD PTR t1$[rbp]
+ 0047b 83 c0 02 add eax, 2
+ 0047e c1 f8 02 sar eax, 2
+ 00481 8b 8d 58 07 00
+ 00 mov ecx, DWORD PTR w$[rbp]
+ 00487 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
+ 0048b 48 63 c9 movsxd rcx, ecx
+ 0048e 48 8b 95 40 07
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00495 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 4098 :
+; 4099 : STBI_NOTUSED(hs);
+; 4100 :
+; 4101 : return out;
+
+ 00498 48 8b 85 40 07
+ 00 00 mov rax, QWORD PTR out$[rbp]
+$LN1@stbi__resa:
+
+; 4102 : }
+
+ 0049f 48 8d a5 28 07
+ 00 00 lea rsp, QWORD PTR [rbp+1832]
+ 004a6 5f pop rdi
+ 004a7 5d pop rbp
+ 004a8 c3 ret 0
+stbi__resample_row_hv_2_simd ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__resample_row_hv_2
+_TEXT SEGMENT
+i$ = 4
+t0$ = 36
+t1$ = 68
+tv78 = 276
+out$ = 320
+in_near$ = 328
+in_far$ = 336
+w$ = 344
+hs$ = 352
+stbi__resample_row_hv_2 PROC ; COMDAT
+
+; 3964 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 3965 : // need to generate 2x2 samples for every one in input
+; 3966 : int i, t0, t1;
+; 3967 : if (w == 1) {
+
+ 0002f 83 bd 58 01 00
+ 00 01 cmp DWORD PTR w$[rbp], 1
+ 00036 75 78 jne SHORT $LN5@stbi__resa
+
+; 3968 : out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2);
+
+ 00038 b8 01 00 00 00 mov eax, 1
+ 0003d 48 6b c0 00 imul rax, rax, 0
+ 00041 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 00048 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0004c 6b c0 03 imul eax, eax, 3
+ 0004f b9 01 00 00 00 mov ecx, 1
+ 00054 48 6b c9 00 imul rcx, rcx, 0
+ 00058 48 8b 95 50 01
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 0005f 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00063 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
+ 00067 c1 f8 02 sar eax, 2
+ 0006a 89 85 14 01 00
+ 00 mov DWORD PTR tv78[rbp], eax
+ 00070 b8 01 00 00 00 mov eax, 1
+ 00075 48 6b c0 01 imul rax, rax, 1
+ 00079 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00080 0f b6 95 14 01
+ 00 00 movzx edx, BYTE PTR tv78[rbp]
+ 00087 88 14 01 mov BYTE PTR [rcx+rax], dl
+ 0008a b8 01 00 00 00 mov eax, 1
+ 0008f 48 6b c0 00 imul rax, rax, 0
+ 00093 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0009a 0f b6 95 14 01
+ 00 00 movzx edx, BYTE PTR tv78[rbp]
+ 000a1 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 3969 : return out;
+
+ 000a4 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 000ab e9 02 01 00 00 jmp $LN1@stbi__resa
+$LN5@stbi__resa:
+
+; 3970 : }
+; 3971 :
+; 3972 : t1 = 3 * in_near[0] + in_far[0];
+
+ 000b0 b8 01 00 00 00 mov eax, 1
+ 000b5 48 6b c0 00 imul rax, rax, 0
+ 000b9 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 000c0 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 000c4 6b c0 03 imul eax, eax, 3
+ 000c7 b9 01 00 00 00 mov ecx, 1
+ 000cc 48 6b c9 00 imul rcx, rcx, 0
+ 000d0 48 8b 95 50 01
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 000d7 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000db 03 c1 add eax, ecx
+ 000dd 89 45 44 mov DWORD PTR t1$[rbp], eax
+
+; 3973 : out[0] = stbi__div4(t1 + 2);
+
+ 000e0 8b 45 44 mov eax, DWORD PTR t1$[rbp]
+ 000e3 83 c0 02 add eax, 2
+ 000e6 c1 f8 02 sar eax, 2
+ 000e9 b9 01 00 00 00 mov ecx, 1
+ 000ee 48 6b c9 00 imul rcx, rcx, 0
+ 000f2 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 000f9 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3974 : for (i = 1; i < w; ++i) {
+
+ 000fc c7 45 04 01 00
+ 00 00 mov DWORD PTR i$[rbp], 1
+ 00103 eb 08 jmp SHORT $LN4@stbi__resa
+$LN2@stbi__resa:
+ 00105 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00108 ff c0 inc eax
+ 0010a 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__resa:
+ 0010d 8b 85 58 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00113 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00116 7d 73 jge SHORT $LN3@stbi__resa
+
+; 3975 : t0 = t1;
+
+ 00118 8b 45 44 mov eax, DWORD PTR t1$[rbp]
+ 0011b 89 45 24 mov DWORD PTR t0$[rbp], eax
+
+; 3976 : t1 = 3 * in_near[i] + in_far[i];
+
+ 0011e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00122 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 00129 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0012d 6b c0 03 imul eax, eax, 3
+ 00130 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 00134 48 8b 95 50 01
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 0013b 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0013f 03 c1 add eax, ecx
+ 00141 89 45 44 mov DWORD PTR t1$[rbp], eax
+
+; 3977 : out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8);
+
+ 00144 6b 45 24 03 imul eax, DWORD PTR t0$[rbp], 3
+ 00148 8b 4d 44 mov ecx, DWORD PTR t1$[rbp]
+ 0014b 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
+ 0014f c1 f8 04 sar eax, 4
+ 00152 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00155 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
+ 00159 48 63 c9 movsxd rcx, ecx
+ 0015c 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00163 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3978 : out[i * 2] = stbi__div16(3 * t1 + t0 + 8);
+
+ 00166 6b 45 44 03 imul eax, DWORD PTR t1$[rbp], 3
+ 0016a 8b 4d 24 mov ecx, DWORD PTR t0$[rbp]
+ 0016d 8d 44 08 08 lea eax, DWORD PTR [rax+rcx+8]
+ 00171 c1 f8 04 sar eax, 4
+ 00174 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00177 d1 e1 shl ecx, 1
+ 00179 48 63 c9 movsxd rcx, ecx
+ 0017c 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00183 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3979 : }
+
+ 00186 e9 7a ff ff ff jmp $LN2@stbi__resa
+$LN3@stbi__resa:
+
+; 3980 : out[w * 2 - 1] = stbi__div4(t1 + 2);
+
+ 0018b 8b 45 44 mov eax, DWORD PTR t1$[rbp]
+ 0018e 83 c0 02 add eax, 2
+ 00191 c1 f8 02 sar eax, 2
+ 00194 8b 8d 58 01 00
+ 00 mov ecx, DWORD PTR w$[rbp]
+ 0019a 8d 4c 09 ff lea ecx, DWORD PTR [rcx+rcx-1]
+ 0019e 48 63 c9 movsxd rcx, ecx
+ 001a1 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 001a8 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3981 :
+; 3982 : STBI_NOTUSED(hs);
+; 3983 :
+; 3984 : return out;
+
+ 001ab 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+$LN1@stbi__resa:
+
+; 3985 : }
+
+ 001b2 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 001b9 5f pop rdi
+ 001ba 5d pop rbp
+ 001bb c3 ret 0
+stbi__resample_row_hv_2 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__resample_row_h_2
+_TEXT SEGMENT
+i$ = 4
+input$ = 40
+n$1 = 68
+out$ = 320
+in_near$ = 328
+in_far$ = 336
+w$ = 344
+hs$ = 352
+stbi__resample_row_h_2 PROC ; COMDAT
+
+; 3933 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 3934 : // need to generate two samples horizontally for every one in input
+; 3935 : int i;
+; 3936 : stbi_uc *input = in_near;
+
+ 0002f 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR in_near$[rbp]
+ 00036 48 89 45 28 mov QWORD PTR input$[rbp], rax
+
+; 3937 :
+; 3938 : if (w == 1) {
+
+ 0003a 83 bd 58 01 00
+ 00 01 cmp DWORD PTR w$[rbp], 1
+ 00041 75 59 jne SHORT $LN5@stbi__resa
+
+; 3939 : // if only one sample, can't do any interpolation
+; 3940 : out[0] = out[1] = input[0];
+
+ 00043 b8 01 00 00 00 mov eax, 1
+ 00048 48 6b c0 00 imul rax, rax, 0
+ 0004c b9 01 00 00 00 mov ecx, 1
+ 00051 48 6b c9 01 imul rcx, rcx, 1
+ 00055 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 0005c 4c 8b 45 28 mov r8, QWORD PTR input$[rbp]
+ 00060 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00065 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00068 b8 01 00 00 00 mov eax, 1
+ 0006d 48 6b c0 01 imul rax, rax, 1
+ 00071 b9 01 00 00 00 mov ecx, 1
+ 00076 48 6b c9 00 imul rcx, rcx, 0
+ 0007a 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00081 4c 8b 85 40 01
+ 00 00 mov r8, QWORD PTR out$[rbp]
+ 00088 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0008d 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3941 : return out;
+
+ 00090 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 00097 e9 64 01 00 00 jmp $LN1@stbi__resa
+$LN5@stbi__resa:
+
+; 3942 : }
+; 3943 :
+; 3944 : out[0] = input[0];
+
+ 0009c b8 01 00 00 00 mov eax, 1
+ 000a1 48 6b c0 00 imul rax, rax, 0
+ 000a5 b9 01 00 00 00 mov ecx, 1
+ 000aa 48 6b c9 00 imul rcx, rcx, 0
+ 000ae 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 000b5 4c 8b 45 28 mov r8, QWORD PTR input$[rbp]
+ 000b9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 000be 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3945 : out[1] = stbi__div4(input[0] * 3 + input[1] + 2);
+
+ 000c1 b8 01 00 00 00 mov eax, 1
+ 000c6 48 6b c0 00 imul rax, rax, 0
+ 000ca 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
+ 000ce 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 000d2 6b c0 03 imul eax, eax, 3
+ 000d5 b9 01 00 00 00 mov ecx, 1
+ 000da 48 6b c9 01 imul rcx, rcx, 1
+ 000de 48 8b 55 28 mov rdx, QWORD PTR input$[rbp]
+ 000e2 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000e6 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
+ 000ea c1 f8 02 sar eax, 2
+ 000ed b9 01 00 00 00 mov ecx, 1
+ 000f2 48 6b c9 01 imul rcx, rcx, 1
+ 000f6 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 000fd 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3946 : for (i = 1; i < w - 1; ++i) {
+
+ 00100 c7 45 04 01 00
+ 00 00 mov DWORD PTR i$[rbp], 1
+ 00107 eb 08 jmp SHORT $LN4@stbi__resa
+$LN2@stbi__resa:
+ 00109 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0010c ff c0 inc eax
+ 0010e 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__resa:
+ 00111 8b 85 58 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00117 ff c8 dec eax
+ 00119 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 0011c 7d 72 jge SHORT $LN3@stbi__resa
+
+; 3947 : int n = 3 * input[i] + 2;
+
+ 0011e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00122 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
+ 00126 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0012a 6b c0 03 imul eax, eax, 3
+ 0012d 83 c0 02 add eax, 2
+ 00130 89 45 44 mov DWORD PTR n$1[rbp], eax
+
+; 3948 : out[i * 2 + 0] = stbi__div4(n + input[i - 1]);
+
+ 00133 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00136 ff c8 dec eax
+ 00138 48 98 cdqe
+ 0013a 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
+ 0013e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00142 8b 4d 44 mov ecx, DWORD PTR n$1[rbp]
+ 00145 03 c8 add ecx, eax
+ 00147 8b c1 mov eax, ecx
+ 00149 c1 f8 02 sar eax, 2
+ 0014c 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 0014f 03 c9 add ecx, ecx
+ 00151 48 63 c9 movsxd rcx, ecx
+ 00154 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 0015b 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3949 : out[i * 2 + 1] = stbi__div4(n + input[i + 1]);
+
+ 0015e 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00161 ff c0 inc eax
+ 00163 48 98 cdqe
+ 00165 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
+ 00169 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0016d 8b 4d 44 mov ecx, DWORD PTR n$1[rbp]
+ 00170 03 c8 add ecx, eax
+ 00172 8b c1 mov eax, ecx
+ 00174 c1 f8 02 sar eax, 2
+ 00177 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 0017a 8d 4c 09 01 lea ecx, DWORD PTR [rcx+rcx+1]
+ 0017e 48 63 c9 movsxd rcx, ecx
+ 00181 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 00188 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3950 : }
+
+ 0018b e9 79 ff ff ff jmp $LN2@stbi__resa
+$LN3@stbi__resa:
+
+; 3951 : out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2);
+
+ 00190 8b 85 58 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00196 83 e8 02 sub eax, 2
+ 00199 48 98 cdqe
+ 0019b 48 8b 4d 28 mov rcx, QWORD PTR input$[rbp]
+ 0019f 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 001a3 6b c0 03 imul eax, eax, 3
+ 001a6 8b 8d 58 01 00
+ 00 mov ecx, DWORD PTR w$[rbp]
+ 001ac ff c9 dec ecx
+ 001ae 48 63 c9 movsxd rcx, ecx
+ 001b1 48 8b 55 28 mov rdx, QWORD PTR input$[rbp]
+ 001b5 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 001b9 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
+ 001bd c1 f8 02 sar eax, 2
+ 001c0 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 001c3 03 c9 add ecx, ecx
+ 001c5 48 63 c9 movsxd rcx, ecx
+ 001c8 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 001cf 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3952 : out[i * 2 + 1] = input[w - 1];
+
+ 001d2 8b 85 58 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 001d8 ff c8 dec eax
+ 001da 48 98 cdqe
+ 001dc 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 001df 8d 4c 09 01 lea ecx, DWORD PTR [rcx+rcx+1]
+ 001e3 48 63 c9 movsxd rcx, ecx
+ 001e6 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 001ed 4c 8b 45 28 mov r8, QWORD PTR input$[rbp]
+ 001f1 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 001f6 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 3953 :
+; 3954 : STBI_NOTUSED(in_far);
+; 3955 : STBI_NOTUSED(hs);
+; 3956 :
+; 3957 : return out;
+
+ 001f9 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+$LN1@stbi__resa:
+
+; 3958 : }
+
+ 00200 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 00207 5f pop rdi
+ 00208 5d pop rbp
+ 00209 c3 ret 0
+stbi__resample_row_h_2 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__resample_row_v_2
+_TEXT SEGMENT
+i$ = 4
+out$ = 256
+in_near$ = 264
+in_far$ = 272
+w$ = 280
+hs$ = 288
+stbi__resample_row_v_2 PROC ; COMDAT
+
+; 3922 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 3923 : // need to generate two samples vertically for every one in input
+; 3924 : int i;
+; 3925 : STBI_NOTUSED(hs);
+; 3926 : for (i = 0; i < w; ++i)
+
+ 0002f c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00036 eb 08 jmp SHORT $LN4@stbi__resa
+$LN2@stbi__resa:
+ 00038 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0003b ff c0 inc eax
+ 0003d 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__resa:
+ 00040 8b 85 18 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00046 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00049 7d 38 jge SHORT $LN3@stbi__resa
+
+; 3927 : out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2);
+
+ 0004b 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0004f 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR in_near$[rbp]
+ 00056 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0005a 6b c0 03 imul eax, eax, 3
+ 0005d 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 00061 48 8b 95 10 01
+ 00 00 mov rdx, QWORD PTR in_far$[rbp]
+ 00068 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0006c 8d 44 08 02 lea eax, DWORD PTR [rax+rcx+2]
+ 00070 c1 f8 02 sar eax, 2
+ 00073 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 00077 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR out$[rbp]
+ 0007e 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00081 eb b5 jmp SHORT $LN2@stbi__resa
+$LN3@stbi__resa:
+
+; 3928 : return out;
+
+ 00083 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+
+; 3929 : }
+
+ 0008a 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00091 5f pop rdi
+ 00092 5d pop rbp
+ 00093 c3 ret 0
+stbi__resample_row_v_2 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT resample_row_1
+_TEXT SEGMENT
+out$ = 224
+in_near$ = 232
+in_far$ = 240
+w$ = 248
+hs$ = 256
+resample_row_1 PROC ; COMDAT
+
+; 3912 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 3913 : STBI_NOTUSED(out);
+; 3914 : STBI_NOTUSED(in_far);
+; 3915 : STBI_NOTUSED(w);
+; 3916 : STBI_NOTUSED(hs);
+; 3917 : return in_near;
+
+ 0002f 48 8b 85 e8 00
+ 00 00 mov rax, QWORD PTR in_near$[rbp]
+
+; 3918 : }
+
+ 00036 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0003d 5f pop rdi
+ 0003e 5d pop rbp
+ 0003f c3 ret 0
+resample_row_1 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__decode_jpeg_image
+_TEXT SEGMENT
+m$ = 4
+Ld$1 = 36
+NL$2 = 68
+j$ = 320
+stbi__decode_jpeg_image PROC ; COMDAT
+
+; 3863 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 3864 : int m;
+; 3865 : for (m = 0; m < 4; m++) {
+
+ 00020 c7 45 04 00 00
+ 00 00 mov DWORD PTR m$[rbp], 0
+ 00027 eb 08 jmp SHORT $LN4@stbi__deco
+$LN2@stbi__deco:
+ 00029 8b 45 04 mov eax, DWORD PTR m$[rbp]
+ 0002c ff c0 inc eax
+ 0002e 89 45 04 mov DWORD PTR m$[rbp], eax
+$LN4@stbi__deco:
+ 00031 83 7d 04 04 cmp DWORD PTR m$[rbp], 4
+ 00035 7d 38 jge SHORT $LN3@stbi__deco
+
+; 3866 : j->img_comp[m].raw_data = NULL;
+
+ 00037 48 63 45 04 movsxd rax, DWORD PTR m$[rbp]
+ 0003b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0003f 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00046 48 c7 84 01 d8
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18136], 0
+
+; 3867 : j->img_comp[m].raw_coeff = NULL;
+
+ 00052 48 63 45 04 movsxd rax, DWORD PTR m$[rbp]
+ 00056 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0005a 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00061 48 c7 84 01 e0
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18144], 0
+
+; 3868 : }
+
+ 0006d eb ba jmp SHORT $LN2@stbi__deco
+$LN3@stbi__deco:
+
+; 3869 : j->restart_interval = 0;
+
+ 0006f 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00076 c7 80 68 48 00
+ 00 00 00 00 00 mov DWORD PTR [rax+18536], 0
+
+; 3870 : if (!stbi__decode_jpeg_header(j, STBI__SCAN_load))
+
+ 00080 33 d2 xor edx, edx
+ 00082 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00089 e8 00 00 00 00 call stbi__decode_jpeg_header
+ 0008e 85 c0 test eax, eax
+ 00090 75 07 jne SHORT $LN7@stbi__deco
+
+; 3871 : return 0;
+
+ 00092 33 c0 xor eax, eax
+ 00094 e9 8e 01 00 00 jmp $LN1@stbi__deco
+$LN7@stbi__deco:
+
+; 3872 : m = stbi__get_marker(j);
+
+ 00099 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000a0 e8 00 00 00 00 call stbi__get_marker
+ 000a5 0f b6 c0 movzx eax, al
+ 000a8 89 45 04 mov DWORD PTR m$[rbp], eax
+$LN5@stbi__deco:
+
+; 3873 : while (!stbi__EOI(m)) {
+
+ 000ab 81 7d 04 d9 00
+ 00 00 cmp DWORD PTR m$[rbp], 217 ; 000000d9H
+ 000b2 0f 84 4d 01 00
+ 00 je $LN6@stbi__deco
+
+; 3874 : if (stbi__SOS(m)) {
+
+ 000b8 81 7d 04 da 00
+ 00 00 cmp DWORD PTR m$[rbp], 218 ; 000000daH
+ 000bf 0f 85 97 00 00
+ 00 jne $LN8@stbi__deco
+
+; 3875 : if (!stbi__process_scan_header(j))
+
+ 000c5 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000cc e8 00 00 00 00 call stbi__process_scan_header
+ 000d1 85 c0 test eax, eax
+ 000d3 75 07 jne SHORT $LN10@stbi__deco
+
+; 3876 : return 0;
+
+ 000d5 33 c0 xor eax, eax
+ 000d7 e9 4b 01 00 00 jmp $LN1@stbi__deco
+$LN10@stbi__deco:
+
+; 3877 : if (!stbi__parse_entropy_coded_data(j))
+
+ 000dc 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000e3 e8 00 00 00 00 call stbi__parse_entropy_coded_data
+ 000e8 85 c0 test eax, eax
+ 000ea 75 07 jne SHORT $LN11@stbi__deco
+
+; 3878 : return 0;
+
+ 000ec 33 c0 xor eax, eax
+ 000ee e9 34 01 00 00 jmp $LN1@stbi__deco
+$LN11@stbi__deco:
+
+; 3879 : if (j->marker == STBI__MARKER_none) {
+
+ 000f3 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000fa 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 00101 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 00106 75 19 jne SHORT $LN12@stbi__deco
+
+; 3880 : j->marker = stbi__skip_jpeg_junk_at_end(j);
+
+ 00108 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0010f e8 00 00 00 00 call stbi__skip_jpeg_junk_at_end
+ 00114 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0011b 88 81 28 48 00
+ 00 mov BYTE PTR [rcx+18472], al
+$LN12@stbi__deco:
+
+; 3881 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0
+; 3882 : }
+; 3883 : m = stbi__get_marker(j);
+
+ 00121 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00128 e8 00 00 00 00 call stbi__get_marker
+ 0012d 0f b6 c0 movzx eax, al
+ 00130 89 45 04 mov DWORD PTR m$[rbp], eax
+
+; 3884 : if (STBI__RESTART(m))
+
+ 00133 81 7d 04 d0 00
+ 00 00 cmp DWORD PTR m$[rbp], 208 ; 000000d0H
+ 0013a 7c 1b jl SHORT $LN13@stbi__deco
+ 0013c 81 7d 04 d7 00
+ 00 00 cmp DWORD PTR m$[rbp], 215 ; 000000d7H
+ 00143 7f 12 jg SHORT $LN13@stbi__deco
+
+; 3885 : m = stbi__get_marker(j);
+
+ 00145 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0014c e8 00 00 00 00 call stbi__get_marker
+ 00151 0f b6 c0 movzx eax, al
+ 00154 89 45 04 mov DWORD PTR m$[rbp], eax
+$LN13@stbi__deco:
+
+; 3886 : } else if (stbi__DNL(m)) {
+
+ 00157 e9 a4 00 00 00 jmp $LN9@stbi__deco
+$LN8@stbi__deco:
+ 0015c 81 7d 04 dc 00
+ 00 00 cmp DWORD PTR m$[rbp], 220 ; 000000dcH
+ 00163 75 6f jne SHORT $LN14@stbi__deco
+
+; 3887 : int Ld = stbi__get16be(j->s);
+
+ 00165 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0016c 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0016f e8 00 00 00 00 call stbi__get16be
+ 00174 89 45 24 mov DWORD PTR Ld$1[rbp], eax
+
+; 3888 : stbi__uint32 NL = stbi__get16be(j->s);
+
+ 00177 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0017e 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00181 e8 00 00 00 00 call stbi__get16be
+ 00186 89 45 44 mov DWORD PTR NL$2[rbp], eax
+
+; 3889 : if (Ld != 4)
+
+ 00189 83 7d 24 04 cmp DWORD PTR Ld$1[rbp], 4
+ 0018d 74 11 je SHORT $LN16@stbi__deco
+
+; 3890 : return stbi__err("bad DNL len", "Corrupt JPEG");
+
+ 0018f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@EPMOIECP@bad?5DNL?5len@
+ 00196 e8 00 00 00 00 call stbi__err
+ 0019b e9 87 00 00 00 jmp $LN1@stbi__deco
+$LN16@stbi__deco:
+
+; 3891 : if (NL != j->s->img_y)
+
+ 001a0 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 001a7 48 8b 00 mov rax, QWORD PTR [rax]
+ 001aa 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 001ad 39 45 44 cmp DWORD PTR NL$2[rbp], eax
+ 001b0 74 0e je SHORT $LN17@stbi__deco
+
+; 3892 : return stbi__err("bad DNL height", "Corrupt JPEG");
+
+ 001b2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@PNCLKCLJ@bad?5DNL?5height@
+ 001b9 e8 00 00 00 00 call stbi__err
+ 001be eb 67 jmp SHORT $LN1@stbi__deco
+$LN17@stbi__deco:
+
+; 3893 : m = stbi__get_marker(j);
+
+ 001c0 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 001c7 e8 00 00 00 00 call stbi__get_marker
+ 001cc 0f b6 c0 movzx eax, al
+ 001cf 89 45 04 mov DWORD PTR m$[rbp], eax
+
+; 3894 : } else {
+
+ 001d2 eb 2c jmp SHORT $LN15@stbi__deco
+$LN14@stbi__deco:
+
+; 3895 : if (!stbi__process_marker(j, m))
+
+ 001d4 8b 55 04 mov edx, DWORD PTR m$[rbp]
+ 001d7 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 001de e8 00 00 00 00 call stbi__process_marker
+ 001e3 85 c0 test eax, eax
+ 001e5 75 07 jne SHORT $LN18@stbi__deco
+
+; 3896 : return 1;
+
+ 001e7 b8 01 00 00 00 mov eax, 1
+ 001ec eb 39 jmp SHORT $LN1@stbi__deco
+$LN18@stbi__deco:
+
+; 3897 : m = stbi__get_marker(j);
+
+ 001ee 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 001f5 e8 00 00 00 00 call stbi__get_marker
+ 001fa 0f b6 c0 movzx eax, al
+ 001fd 89 45 04 mov DWORD PTR m$[rbp], eax
+$LN15@stbi__deco:
+$LN9@stbi__deco:
+
+; 3898 : }
+; 3899 : }
+
+ 00200 e9 a6 fe ff ff jmp $LN5@stbi__deco
+$LN6@stbi__deco:
+
+; 3900 : if (j->progressive)
+
+ 00205 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0020c 83 b8 30 48 00
+ 00 00 cmp DWORD PTR [rax+18480], 0
+ 00213 74 0d je SHORT $LN19@stbi__deco
+
+; 3901 : stbi__jpeg_finish(j);
+
+ 00215 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0021c e8 00 00 00 00 call stbi__jpeg_finish
+ 00221 90 npad 1
+$LN19@stbi__deco:
+
+; 3902 : return 1;
+
+ 00222 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__deco:
+
+; 3903 : }
+
+ 00227 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 0022e 5f pop rdi
+ 0022f 5d pop rbp
+ 00230 c3 ret 0
+stbi__decode_jpeg_image ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__skip_jpeg_junk_at_end
+_TEXT SEGMENT
+x$1 = 4
+j$ = 256
+stbi__skip_jpeg_junk_at_end PROC ; COMDAT
+
+; 3839 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+$LN2@stbi__skip:
+
+; 3840 : // some JPEGs have junk at end, skip over it but if we find what looks
+; 3841 : // like a valid marker, resume there
+; 3842 : while (!stbi__at_eof(j->s)) {
+
+ 00020 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00027 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0002a e8 00 00 00 00 call stbi__at_eof
+ 0002f 85 c0 test eax, eax
+ 00031 75 63 jne SHORT $LN3@stbi__skip
+
+; 3843 : stbi_uc x = stbi__get8(j->s);
+
+ 00033 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0003a 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0003d e8 00 00 00 00 call stbi__get8
+ 00042 88 45 04 mov BYTE PTR x$1[rbp], al
+$LN4@stbi__skip:
+
+; 3844 : while (x == 0xff) { // might be a marker
+
+ 00045 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
+ 00049 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 0004e 75 44 jne SHORT $LN5@stbi__skip
+
+; 3845 : if (stbi__at_eof(j->s))
+
+ 00050 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00057 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0005a e8 00 00 00 00 call stbi__at_eof
+ 0005f 85 c0 test eax, eax
+ 00061 74 04 je SHORT $LN6@stbi__skip
+
+; 3846 : return STBI__MARKER_none;
+
+ 00063 b0 ff mov al, 255 ; 000000ffH
+ 00065 eb 31 jmp SHORT $LN1@stbi__skip
+$LN6@stbi__skip:
+
+; 3847 : x = stbi__get8(j->s);
+
+ 00067 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0006e 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00071 e8 00 00 00 00 call stbi__get8
+ 00076 88 45 04 mov BYTE PTR x$1[rbp], al
+
+; 3848 : if (x != 0x00 && x != 0xff) {
+
+ 00079 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
+ 0007d 85 c0 test eax, eax
+ 0007f 74 11 je SHORT $LN7@stbi__skip
+ 00081 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
+ 00085 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 0008a 74 06 je SHORT $LN7@stbi__skip
+
+; 3849 : // not a stuffed zero or lead-in to another marker, looks
+; 3850 : // like an actual marker, return it
+; 3851 : return x;
+
+ 0008c 0f b6 45 04 movzx eax, BYTE PTR x$1[rbp]
+ 00090 eb 06 jmp SHORT $LN1@stbi__skip
+$LN7@stbi__skip:
+
+; 3852 : }
+; 3853 : // stuffed zero has x=0 now which ends the loop, meaning we go
+; 3854 : // back to regular scan loop.
+; 3855 : // repeated 0xff keeps trying to read the next byte of the marker.
+; 3856 : }
+
+ 00092 eb b1 jmp SHORT $LN4@stbi__skip
+$LN5@stbi__skip:
+
+; 3857 : }
+
+ 00094 eb 8a jmp SHORT $LN2@stbi__skip
+$LN3@stbi__skip:
+
+; 3858 : return STBI__MARKER_none;
+
+ 00096 b0 ff mov al, 255 ; 000000ffH
+$LN1@stbi__skip:
+
+; 3859 : }
+
+ 00098 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 0009f 5f pop rdi
+ 000a0 5d pop rbp
+ 000a1 c3 ret 0
+stbi__skip_jpeg_junk_at_end ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__decode_jpeg_header
+_TEXT SEGMENT
+m$ = 4
+tv131 = 212
+z$ = 256
+scan$ = 264
+stbi__decode_jpeg_header PROC ; COMDAT
+
+; 3810 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 3811 : int m;
+; 3812 : z->jfif = 0;
+
+ 00024 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0002b c7 80 48 48 00
+ 00 00 00 00 00 mov DWORD PTR [rax+18504], 0
+
+; 3813 : z->app14_color_transform = -1; // valid values are 0,1,2
+
+ 00035 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0003c c7 80 4c 48 00
+ 00 ff ff ff ff mov DWORD PTR [rax+18508], -1
+
+; 3814 : z->marker = STBI__MARKER_none; // initialize cached marker to empty
+
+ 00046 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0004d c6 80 28 48 00
+ 00 ff mov BYTE PTR [rax+18472], 255 ; 000000ffH
+
+; 3815 : m = stbi__get_marker(z);
+
+ 00054 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0005b e8 00 00 00 00 call stbi__get_marker
+ 00060 0f b6 c0 movzx eax, al
+ 00063 89 45 04 mov DWORD PTR m$[rbp], eax
+
+; 3816 : if (!stbi__SOI(m))
+
+ 00066 81 7d 04 d8 00
+ 00 00 cmp DWORD PTR m$[rbp], 216 ; 000000d8H
+ 0006d 74 11 je SHORT $LN6@stbi__deco
+
+; 3817 : return stbi__err("no SOI", "Corrupt JPEG");
+
+ 0006f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_06CLMBLEP@no?5SOI@
+ 00076 e8 00 00 00 00 call stbi__err
+ 0007b e9 04 01 00 00 jmp $LN1@stbi__deco
+$LN6@stbi__deco:
+
+; 3818 : if (scan == STBI__SCAN_type)
+
+ 00080 83 bd 08 01 00
+ 00 01 cmp DWORD PTR scan$[rbp], 1
+ 00087 75 0a jne SHORT $LN7@stbi__deco
+
+; 3819 : return 1;
+
+ 00089 b8 01 00 00 00 mov eax, 1
+ 0008e e9 f1 00 00 00 jmp $LN1@stbi__deco
+$LN7@stbi__deco:
+
+; 3820 : m = stbi__get_marker(z);
+
+ 00093 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0009a e8 00 00 00 00 call stbi__get_marker
+ 0009f 0f b6 c0 movzx eax, al
+ 000a2 89 45 04 mov DWORD PTR m$[rbp], eax
+$LN2@stbi__deco:
+
+; 3821 : while (!stbi__SOF(m)) {
+
+ 000a5 81 7d 04 c0 00
+ 00 00 cmp DWORD PTR m$[rbp], 192 ; 000000c0H
+ 000ac 0f 84 81 00 00
+ 00 je $LN3@stbi__deco
+ 000b2 81 7d 04 c1 00
+ 00 00 cmp DWORD PTR m$[rbp], 193 ; 000000c1H
+ 000b9 74 78 je SHORT $LN3@stbi__deco
+ 000bb 81 7d 04 c2 00
+ 00 00 cmp DWORD PTR m$[rbp], 194 ; 000000c2H
+ 000c2 74 6f je SHORT $LN3@stbi__deco
+
+; 3822 : if (!stbi__process_marker(z, m))
+
+ 000c4 8b 55 04 mov edx, DWORD PTR m$[rbp]
+ 000c7 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000ce e8 00 00 00 00 call stbi__process_marker
+ 000d3 85 c0 test eax, eax
+ 000d5 75 07 jne SHORT $LN8@stbi__deco
+
+; 3823 : return 0;
+
+ 000d7 33 c0 xor eax, eax
+ 000d9 e9 a6 00 00 00 jmp $LN1@stbi__deco
+$LN8@stbi__deco:
+
+; 3824 : m = stbi__get_marker(z);
+
+ 000de 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000e5 e8 00 00 00 00 call stbi__get_marker
+ 000ea 0f b6 c0 movzx eax, al
+ 000ed 89 45 04 mov DWORD PTR m$[rbp], eax
+$LN4@stbi__deco:
+
+; 3825 : while (m == STBI__MARKER_none) {
+
+ 000f0 81 7d 04 ff 00
+ 00 00 cmp DWORD PTR m$[rbp], 255 ; 000000ffH
+ 000f7 75 35 jne SHORT $LN5@stbi__deco
+
+; 3826 : // some files have extra padding after their blocks, so ok, we'll scan
+; 3827 : if (stbi__at_eof(z->s))
+
+ 000f9 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00100 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00103 e8 00 00 00 00 call stbi__at_eof
+ 00108 85 c0 test eax, eax
+ 0010a 74 0e je SHORT $LN9@stbi__deco
+
+; 3828 : return stbi__err("no SOF", "Corrupt JPEG");
+
+ 0010c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_06IFCEAHIA@no?5SOF@
+ 00113 e8 00 00 00 00 call stbi__err
+ 00118 eb 6a jmp SHORT $LN1@stbi__deco
+$LN9@stbi__deco:
+
+; 3829 : m = stbi__get_marker(z);
+
+ 0011a 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00121 e8 00 00 00 00 call stbi__get_marker
+ 00126 0f b6 c0 movzx eax, al
+ 00129 89 45 04 mov DWORD PTR m$[rbp], eax
+
+; 3830 : }
+
+ 0012c eb c2 jmp SHORT $LN4@stbi__deco
+$LN5@stbi__deco:
+
+; 3831 : }
+
+ 0012e e9 72 ff ff ff jmp $LN2@stbi__deco
+$LN3@stbi__deco:
+
+; 3832 : z->progressive = stbi__SOF_progressive(m);
+
+ 00133 81 7d 04 c2 00
+ 00 00 cmp DWORD PTR m$[rbp], 194 ; 000000c2H
+ 0013a 75 0c jne SHORT $LN12@stbi__deco
+ 0013c c7 85 d4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv131[rbp], 1
+ 00146 eb 0a jmp SHORT $LN13@stbi__deco
+$LN12@stbi__deco:
+ 00148 c7 85 d4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv131[rbp], 0
+$LN13@stbi__deco:
+ 00152 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00159 8b 8d d4 00 00
+ 00 mov ecx, DWORD PTR tv131[rbp]
+ 0015f 89 88 30 48 00
+ 00 mov DWORD PTR [rax+18480], ecx
+
+; 3833 : if (!stbi__process_frame_header(z, scan))
+
+ 00165 8b 95 08 01 00
+ 00 mov edx, DWORD PTR scan$[rbp]
+ 0016b 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00172 e8 00 00 00 00 call stbi__process_frame_header
+ 00177 85 c0 test eax, eax
+ 00179 75 04 jne SHORT $LN10@stbi__deco
+
+; 3834 : return 0;
+
+ 0017b 33 c0 xor eax, eax
+ 0017d eb 05 jmp SHORT $LN1@stbi__deco
+$LN10@stbi__deco:
+
+; 3835 : return 1;
+
+ 0017f b8 01 00 00 00 mov eax, 1
+$LN1@stbi__deco:
+
+; 3836 : }
+
+ 00184 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 0018b 5f pop rdi
+ 0018c 5d pop rbp
+ 0018d c3 ret 0
+stbi__decode_jpeg_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__process_frame_header
+_TEXT SEGMENT
+s$ = 8
+Lf$ = 36
+p$ = 68
+i$ = 100
+q$ = 132
+h_max$ = 164
+v_max$ = 196
+c$ = 228
+tv285 = 440
+tv294 = 440
+z$ = 480
+scan$ = 488
+stbi__process_frame_header PROC ; COMDAT
+
+; 3677 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 3678 : stbi__context *s = z->s;
+
+ 00024 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0002b 48 8b 00 mov rax, QWORD PTR [rax]
+ 0002e 48 89 45 08 mov QWORD PTR s$[rbp], rax
+
+; 3679 : int Lf, p, i, q, h_max = 1, v_max = 1, c;
+
+ 00032 c7 85 a4 00 00
+ 00 01 00 00 00 mov DWORD PTR h_max$[rbp], 1
+ 0003c c7 85 c4 00 00
+ 00 01 00 00 00 mov DWORD PTR v_max$[rbp], 1
+
+; 3680 : Lf = stbi__get16be(s);
+
+ 00046 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 0004a e8 00 00 00 00 call stbi__get16be
+ 0004f 89 45 24 mov DWORD PTR Lf$[rbp], eax
+
+; 3681 : if (Lf < 11)
+
+ 00052 83 7d 24 0b cmp DWORD PTR Lf$[rbp], 11
+ 00056 7d 11 jge SHORT $LN17@stbi__proc
+
+; 3682 : return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG
+
+ 00058 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@DOFMJEMP@bad?5SOF?5len@
+ 0005f e8 00 00 00 00 call stbi__err
+ 00064 e9 11 09 00 00 jmp $LN1@stbi__proc
+$LN17@stbi__proc:
+
+; 3683 : p = stbi__get8(s);
+
+ 00069 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 0006d e8 00 00 00 00 call stbi__get8
+ 00072 0f b6 c0 movzx eax, al
+ 00075 89 45 44 mov DWORD PTR p$[rbp], eax
+
+; 3684 : if (p != 8)
+
+ 00078 83 7d 44 08 cmp DWORD PTR p$[rbp], 8
+ 0007c 74 11 je SHORT $LN18@stbi__proc
+
+; 3685 : return stbi__err("only 8-bit",
+
+ 0007e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0L@BCINMEBJ@only?58?9bit@
+ 00085 e8 00 00 00 00 call stbi__err
+ 0008a e9 eb 08 00 00 jmp $LN1@stbi__proc
+$LN18@stbi__proc:
+
+; 3686 : "JPEG format not supported: 8-bit only"); // JPEG baseline
+; 3687 : s->img_y = stbi__get16be(s);
+
+ 0008f 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00093 e8 00 00 00 00 call stbi__get16be
+ 00098 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 0009c 89 41 04 mov DWORD PTR [rcx+4], eax
+
+; 3688 : if (s->img_y == 0)
+
+ 0009f 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 000a3 83 78 04 00 cmp DWORD PTR [rax+4], 0
+ 000a7 75 11 jne SHORT $LN19@stbi__proc
+
+; 3689 : return stbi__err(
+
+ 000a9 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@LNEGOMA@no?5header?5height@
+ 000b0 e8 00 00 00 00 call stbi__err
+ 000b5 e9 c0 08 00 00 jmp $LN1@stbi__proc
+$LN19@stbi__proc:
+
+; 3690 : "no header height",
+; 3691 : "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG
+; 3692 : s->img_x = stbi__get16be(s);
+
+ 000ba 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 000be e8 00 00 00 00 call stbi__get16be
+ 000c3 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 000c7 89 01 mov DWORD PTR [rcx], eax
+
+; 3693 : if (s->img_x == 0)
+
+ 000c9 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 000cd 83 38 00 cmp DWORD PTR [rax], 0
+ 000d0 75 11 jne SHORT $LN20@stbi__proc
+
+; 3694 : return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires
+
+ 000d2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07BIDACDEF@0?5width@
+ 000d9 e8 00 00 00 00 call stbi__err
+ 000de e9 97 08 00 00 jmp $LN1@stbi__proc
+$LN20@stbi__proc:
+
+; 3695 : if (s->img_y > STBI_MAX_DIMENSIONS)
+
+ 000e3 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 000e7 81 78 04 00 00
+ 00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
+ 000ee 76 11 jbe SHORT $LN21@stbi__proc
+
+; 3696 : return stbi__err("too large", "Very large image (corrupt?)");
+
+ 000f0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 000f7 e8 00 00 00 00 call stbi__err
+ 000fc e9 79 08 00 00 jmp $LN1@stbi__proc
+$LN21@stbi__proc:
+
+; 3697 : if (s->img_x > STBI_MAX_DIMENSIONS)
+
+ 00101 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00105 81 38 00 00 00
+ 01 cmp DWORD PTR [rax], 16777216 ; 01000000H
+ 0010b 76 11 jbe SHORT $LN22@stbi__proc
+
+; 3698 : return stbi__err("too large", "Very large image (corrupt?)");
+
+ 0010d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00114 e8 00 00 00 00 call stbi__err
+ 00119 e9 5c 08 00 00 jmp $LN1@stbi__proc
+$LN22@stbi__proc:
+
+; 3699 : c = stbi__get8(s);
+
+ 0011e 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00122 e8 00 00 00 00 call stbi__get8
+ 00127 0f b6 c0 movzx eax, al
+ 0012a 89 85 e4 00 00
+ 00 mov DWORD PTR c$[rbp], eax
+
+; 3700 : if (c != 3 && c != 1 && c != 4)
+
+ 00130 83 bd e4 00 00
+ 00 03 cmp DWORD PTR c$[rbp], 3
+ 00137 74 23 je SHORT $LN23@stbi__proc
+ 00139 83 bd e4 00 00
+ 00 01 cmp DWORD PTR c$[rbp], 1
+ 00140 74 1a je SHORT $LN23@stbi__proc
+ 00142 83 bd e4 00 00
+ 00 04 cmp DWORD PTR c$[rbp], 4
+ 00149 74 11 je SHORT $LN23@stbi__proc
+
+; 3701 : return stbi__err("bad component count", "Corrupt JPEG");
+
+ 0014b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BE@DAPHADHL@bad?5component?5count@
+ 00152 e8 00 00 00 00 call stbi__err
+ 00157 e9 1e 08 00 00 jmp $LN1@stbi__proc
+$LN23@stbi__proc:
+
+; 3702 : s->img_n = c;
+
+ 0015c 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00160 8b 8d e4 00 00
+ 00 mov ecx, DWORD PTR c$[rbp]
+ 00166 89 48 08 mov DWORD PTR [rax+8], ecx
+
+; 3703 : for (i = 0; i < c; ++i) {
+
+ 00169 c7 45 64 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00170 eb 08 jmp SHORT $LN4@stbi__proc
+$LN2@stbi__proc:
+ 00172 8b 45 64 mov eax, DWORD PTR i$[rbp]
+ 00175 ff c0 inc eax
+ 00177 89 45 64 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__proc:
+ 0017a 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR c$[rbp]
+ 00180 39 45 64 cmp DWORD PTR i$[rbp], eax
+ 00183 7d 38 jge SHORT $LN3@stbi__proc
+
+; 3704 : z->img_comp[i].data = NULL;
+
+ 00185 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00189 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0018d 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00194 48 c7 84 01 d0
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18128], 0
+
+; 3705 : z->img_comp[i].linebuf = NULL;
+
+ 001a0 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 001a4 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 001a8 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 001af 48 c7 84 01 e8
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18152], 0
+
+; 3706 : }
+
+ 001bb eb b5 jmp SHORT $LN2@stbi__proc
+$LN3@stbi__proc:
+
+; 3707 :
+; 3708 : if (Lf != 8 + 3 * s->img_n)
+
+ 001bd 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 001c1 6b 40 08 03 imul eax, DWORD PTR [rax+8], 3
+ 001c5 83 c0 08 add eax, 8
+ 001c8 39 45 24 cmp DWORD PTR Lf$[rbp], eax
+ 001cb 74 11 je SHORT $LN24@stbi__proc
+
+; 3709 : return stbi__err("bad SOF len", "Corrupt JPEG");
+
+ 001cd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@DOFMJEMP@bad?5SOF?5len@
+ 001d4 e8 00 00 00 00 call stbi__err
+ 001d9 e9 9c 07 00 00 jmp $LN1@stbi__proc
+$LN24@stbi__proc:
+
+; 3710 :
+; 3711 : z->rgb = 0;
+
+ 001de 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 001e5 c7 80 50 48 00
+ 00 00 00 00 00 mov DWORD PTR [rax+18512], 0
+
+; 3712 : for (i = 0; i < s->img_n; ++i) {
+
+ 001ef c7 45 64 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 001f6 eb 08 jmp SHORT $LN7@stbi__proc
+$LN5@stbi__proc:
+ 001f8 8b 45 64 mov eax, DWORD PTR i$[rbp]
+ 001fb ff c0 inc eax
+ 001fd 89 45 64 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__proc:
+ 00200 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00204 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00207 39 45 64 cmp DWORD PTR i$[rbp], eax
+ 0020a 0f 8d 96 01 00
+ 00 jge $LN6@stbi__proc
+
+; 3713 : static const unsigned char rgb[3] = { 'R', 'G', 'B' };
+; 3714 : z->img_comp[i].id = stbi__get8(s);
+
+ 00210 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00214 e8 00 00 00 00 call stbi__get8
+ 00219 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 0021d 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00221 0f b6 c0 movzx eax, al
+ 00224 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0022b 89 84 0a a0 46
+ 00 00 mov DWORD PTR [rdx+rcx+18080], eax
+
+; 3715 : if (s->img_n == 3 && z->img_comp[i].id == rgb[i])
+
+ 00232 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00236 83 78 08 03 cmp DWORD PTR [rax+8], 3
+ 0023a 75 43 jne SHORT $LN25@stbi__proc
+ 0023c 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00240 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00244 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00248 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?rgb@?5??stbi__process_frame_header@@9@9
+ 0024f 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00253 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0025a 39 8c 02 a0 46
+ 00 00 cmp DWORD PTR [rdx+rax+18080], ecx
+ 00261 75 1c jne SHORT $LN25@stbi__proc
+
+; 3716 : ++z->rgb;
+
+ 00263 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0026a 8b 80 50 48 00
+ 00 mov eax, DWORD PTR [rax+18512]
+ 00270 ff c0 inc eax
+ 00272 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00279 89 81 50 48 00
+ 00 mov DWORD PTR [rcx+18512], eax
+$LN25@stbi__proc:
+
+; 3717 : q = stbi__get8(s);
+
+ 0027f 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00283 e8 00 00 00 00 call stbi__get8
+ 00288 0f b6 c0 movzx eax, al
+ 0028b 89 85 84 00 00
+ 00 mov DWORD PTR q$[rbp], eax
+
+; 3718 : z->img_comp[i].h = (q >> 4);
+
+ 00291 8b 85 84 00 00
+ 00 mov eax, DWORD PTR q$[rbp]
+ 00297 c1 f8 04 sar eax, 4
+ 0029a 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 0029e 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 002a2 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 002a9 89 84 0a a4 46
+ 00 00 mov DWORD PTR [rdx+rcx+18084], eax
+
+; 3719 : if (!z->img_comp[i].h || z->img_comp[i].h > 4)
+
+ 002b0 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 002b4 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 002b8 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002bf 83 bc 01 a4 46
+ 00 00 00 cmp DWORD PTR [rcx+rax+18084], 0
+ 002c7 74 19 je SHORT $LN27@stbi__proc
+ 002c9 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 002cd 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 002d1 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002d8 83 bc 01 a4 46
+ 00 00 04 cmp DWORD PTR [rcx+rax+18084], 4
+ 002e0 7e 11 jle SHORT $LN26@stbi__proc
+$LN27@stbi__proc:
+
+; 3720 : return stbi__err("bad H", "Corrupt JPEG");
+
+ 002e2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_05BLPKENEJ@bad?5H@
+ 002e9 e8 00 00 00 00 call stbi__err
+ 002ee e9 87 06 00 00 jmp $LN1@stbi__proc
+$LN26@stbi__proc:
+
+; 3721 : z->img_comp[i].v = q & 15;
+
+ 002f3 8b 85 84 00 00
+ 00 mov eax, DWORD PTR q$[rbp]
+ 002f9 83 e0 0f and eax, 15
+ 002fc 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00300 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00304 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0030b 89 84 0a a8 46
+ 00 00 mov DWORD PTR [rdx+rcx+18088], eax
+
+; 3722 : if (!z->img_comp[i].v || z->img_comp[i].v > 4)
+
+ 00312 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00316 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0031a 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00321 83 bc 01 a8 46
+ 00 00 00 cmp DWORD PTR [rcx+rax+18088], 0
+ 00329 74 19 je SHORT $LN29@stbi__proc
+ 0032b 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0032f 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00333 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0033a 83 bc 01 a8 46
+ 00 00 04 cmp DWORD PTR [rcx+rax+18088], 4
+ 00342 7e 11 jle SHORT $LN28@stbi__proc
+$LN29@stbi__proc:
+
+; 3723 : return stbi__err("bad V", "Corrupt JPEG");
+
+ 00344 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_05MPLLHCJG@bad?5V@
+ 0034b e8 00 00 00 00 call stbi__err
+ 00350 e9 25 06 00 00 jmp $LN1@stbi__proc
+$LN28@stbi__proc:
+
+; 3724 : z->img_comp[i].tq = stbi__get8(s);
+
+ 00355 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00359 e8 00 00 00 00 call stbi__get8
+ 0035e 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00362 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00366 0f b6 c0 movzx eax, al
+ 00369 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00370 89 84 0a ac 46
+ 00 00 mov DWORD PTR [rdx+rcx+18092], eax
+
+; 3725 : if (z->img_comp[i].tq > 3)
+
+ 00377 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0037b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0037f 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00386 83 bc 01 ac 46
+ 00 00 03 cmp DWORD PTR [rcx+rax+18092], 3
+ 0038e 7e 11 jle SHORT $LN30@stbi__proc
+
+; 3726 : return stbi__err("bad TQ", "Corrupt JPEG");
+
+ 00390 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_06LJIHDFHI@bad?5TQ@
+ 00397 e8 00 00 00 00 call stbi__err
+ 0039c e9 d9 05 00 00 jmp $LN1@stbi__proc
+$LN30@stbi__proc:
+
+; 3727 : }
+
+ 003a1 e9 52 fe ff ff jmp $LN5@stbi__proc
+$LN6@stbi__proc:
+
+; 3728 :
+; 3729 : if (scan != STBI__SCAN_load)
+
+ 003a6 83 bd e8 01 00
+ 00 00 cmp DWORD PTR scan$[rbp], 0
+ 003ad 74 0a je SHORT $LN31@stbi__proc
+
+; 3730 : return 1;
+
+ 003af b8 01 00 00 00 mov eax, 1
+ 003b4 e9 c1 05 00 00 jmp $LN1@stbi__proc
+$LN31@stbi__proc:
+
+; 3731 :
+; 3732 : if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0))
+
+ 003b9 45 33 c9 xor r9d, r9d
+ 003bc 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 003c0 44 8b 40 08 mov r8d, DWORD PTR [rax+8]
+ 003c4 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 003c8 8b 50 04 mov edx, DWORD PTR [rax+4]
+ 003cb 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 003cf 8b 08 mov ecx, DWORD PTR [rax]
+ 003d1 e8 00 00 00 00 call stbi__mad3sizes_valid
+ 003d6 85 c0 test eax, eax
+ 003d8 75 11 jne SHORT $LN32@stbi__proc
+
+; 3733 : return stbi__err("too large", "Image too large to decode");
+
+ 003da 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 003e1 e8 00 00 00 00 call stbi__err
+ 003e6 e9 8f 05 00 00 jmp $LN1@stbi__proc
+$LN32@stbi__proc:
+
+; 3734 :
+; 3735 : for (i = 0; i < s->img_n; ++i) {
+
+ 003eb c7 45 64 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 003f2 eb 08 jmp SHORT $LN10@stbi__proc
+$LN8@stbi__proc:
+ 003f4 8b 45 64 mov eax, DWORD PTR i$[rbp]
+ 003f7 ff c0 inc eax
+ 003f9 89 45 64 mov DWORD PTR i$[rbp], eax
+$LN10@stbi__proc:
+ 003fc 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00400 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00403 39 45 64 cmp DWORD PTR i$[rbp], eax
+ 00406 7d 79 jge SHORT $LN9@stbi__proc
+
+; 3736 : if (z->img_comp[i].h > h_max)
+
+ 00408 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0040c 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00410 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00417 8b 95 a4 00 00
+ 00 mov edx, DWORD PTR h_max$[rbp]
+ 0041d 39 94 01 a4 46
+ 00 00 cmp DWORD PTR [rcx+rax+18084], edx
+ 00424 7e 1c jle SHORT $LN33@stbi__proc
+
+; 3737 : h_max = z->img_comp[i].h;
+
+ 00426 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0042a 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0042e 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00435 8b 84 01 a4 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18084]
+ 0043c 89 85 a4 00 00
+ 00 mov DWORD PTR h_max$[rbp], eax
+$LN33@stbi__proc:
+
+; 3738 : if (z->img_comp[i].v > v_max)
+
+ 00442 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00446 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0044a 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00451 8b 95 c4 00 00
+ 00 mov edx, DWORD PTR v_max$[rbp]
+ 00457 39 94 01 a8 46
+ 00 00 cmp DWORD PTR [rcx+rax+18088], edx
+ 0045e 7e 1c jle SHORT $LN34@stbi__proc
+
+; 3739 : v_max = z->img_comp[i].v;
+
+ 00460 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00464 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00468 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0046f 8b 84 01 a8 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18088]
+ 00476 89 85 c4 00 00
+ 00 mov DWORD PTR v_max$[rbp], eax
+$LN34@stbi__proc:
+
+; 3740 : }
+
+ 0047c e9 73 ff ff ff jmp $LN8@stbi__proc
+$LN9@stbi__proc:
+
+; 3741 :
+; 3742 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios
+; 3743 : // and I've never seen a non-corrupted JPEG file actually use them
+; 3744 : for (i = 0; i < s->img_n; ++i) {
+
+ 00481 c7 45 64 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00488 eb 08 jmp SHORT $LN13@stbi__proc
+$LN11@stbi__proc:
+ 0048a 8b 45 64 mov eax, DWORD PTR i$[rbp]
+ 0048d ff c0 inc eax
+ 0048f 89 45 64 mov DWORD PTR i$[rbp], eax
+$LN13@stbi__proc:
+ 00492 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00496 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00499 39 45 64 cmp DWORD PTR i$[rbp], eax
+ 0049c 0f 8d 8b 00 00
+ 00 jge $LN12@stbi__proc
+
+; 3745 : if (h_max % z->img_comp[i].h != 0)
+
+ 004a2 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 004a6 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 004aa 48 89 85 b8 01
+ 00 00 mov QWORD PTR tv285[rbp], rax
+ 004b1 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR h_max$[rbp]
+ 004b7 99 cdq
+ 004b8 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 004bf 4c 8b 85 b8 01
+ 00 00 mov r8, QWORD PTR tv285[rbp]
+ 004c6 42 f7 bc 01 a4
+ 46 00 00 idiv DWORD PTR [rcx+r8+18084]
+ 004ce 8b c2 mov eax, edx
+ 004d0 85 c0 test eax, eax
+ 004d2 74 11 je SHORT $LN35@stbi__proc
+
+; 3746 : return stbi__err("bad H", "Corrupt JPEG");
+
+ 004d4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_05BLPKENEJ@bad?5H@
+ 004db e8 00 00 00 00 call stbi__err
+ 004e0 e9 95 04 00 00 jmp $LN1@stbi__proc
+$LN35@stbi__proc:
+
+; 3747 : if (v_max % z->img_comp[i].v != 0)
+
+ 004e5 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 004e9 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 004ed 48 89 85 b8 01
+ 00 00 mov QWORD PTR tv294[rbp], rax
+ 004f4 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR v_max$[rbp]
+ 004fa 99 cdq
+ 004fb 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00502 4c 8b 85 b8 01
+ 00 00 mov r8, QWORD PTR tv294[rbp]
+ 00509 42 f7 bc 01 a8
+ 46 00 00 idiv DWORD PTR [rcx+r8+18088]
+ 00511 8b c2 mov eax, edx
+ 00513 85 c0 test eax, eax
+ 00515 74 11 je SHORT $LN36@stbi__proc
+
+; 3748 : return stbi__err("bad V", "Corrupt JPEG");
+
+ 00517 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_05MPLLHCJG@bad?5V@
+ 0051e e8 00 00 00 00 call stbi__err
+ 00523 e9 52 04 00 00 jmp $LN1@stbi__proc
+$LN36@stbi__proc:
+
+; 3749 : }
+
+ 00528 e9 5d ff ff ff jmp $LN11@stbi__proc
+$LN12@stbi__proc:
+
+; 3750 :
+; 3751 : // compute interleaved mcu info
+; 3752 : z->img_h_max = h_max;
+
+ 0052d 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00534 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR h_max$[rbp]
+ 0053a 89 88 88 46 00
+ 00 mov DWORD PTR [rax+18056], ecx
+
+; 3753 : z->img_v_max = v_max;
+
+ 00540 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00547 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR v_max$[rbp]
+ 0054d 89 88 8c 46 00
+ 00 mov DWORD PTR [rax+18060], ecx
+
+; 3754 : z->img_mcu_w = h_max * 8;
+
+ 00553 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR h_max$[rbp]
+ 00559 c1 e0 03 shl eax, 3
+ 0055c 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00563 89 81 98 46 00
+ 00 mov DWORD PTR [rcx+18072], eax
+
+; 3755 : z->img_mcu_h = v_max * 8;
+
+ 00569 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR v_max$[rbp]
+ 0056f c1 e0 03 shl eax, 3
+ 00572 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00579 89 81 9c 46 00
+ 00 mov DWORD PTR [rcx+18076], eax
+
+; 3756 : // these sizes can't be more than 17 bits
+; 3757 : z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w;
+
+ 0057f 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 00583 8b 00 mov eax, DWORD PTR [rax]
+ 00585 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0058c 8b 89 98 46 00
+ 00 mov ecx, DWORD PTR [rcx+18072]
+ 00592 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
+ 00596 33 d2 xor edx, edx
+ 00598 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0059f f7 b1 98 46 00
+ 00 div DWORD PTR [rcx+18072]
+ 005a5 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 005ac 89 81 90 46 00
+ 00 mov DWORD PTR [rcx+18064], eax
+
+; 3758 : z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h;
+
+ 005b2 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 005b6 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 005b9 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 005c0 8b 89 9c 46 00
+ 00 mov ecx, DWORD PTR [rcx+18076]
+ 005c6 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
+ 005ca 33 d2 xor edx, edx
+ 005cc 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 005d3 f7 b1 9c 46 00
+ 00 div DWORD PTR [rcx+18076]
+ 005d9 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 005e0 89 81 94 46 00
+ 00 mov DWORD PTR [rcx+18068], eax
+
+; 3759 :
+; 3760 : for (i = 0; i < s->img_n; ++i) {
+
+ 005e6 c7 45 64 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 005ed eb 08 jmp SHORT $LN16@stbi__proc
+$LN14@stbi__proc:
+ 005ef 8b 45 64 mov eax, DWORD PTR i$[rbp]
+ 005f2 ff c0 inc eax
+ 005f4 89 45 64 mov DWORD PTR i$[rbp], eax
+$LN16@stbi__proc:
+ 005f7 48 8b 45 08 mov rax, QWORD PTR s$[rbp]
+ 005fb 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 005fe 39 45 64 cmp DWORD PTR i$[rbp], eax
+ 00601 0f 8d 6e 03 00
+ 00 jge $LN15@stbi__proc
+
+; 3761 : // number of effective pixels (e.g. for non-interleaved MCU)
+; 3762 : z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max;
+
+ 00607 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0060b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0060f 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 00613 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0061a 8b 09 mov ecx, DWORD PTR [rcx]
+ 0061c 0f af 8c 02 a4
+ 46 00 00 imul ecx, DWORD PTR [rdx+rax+18084]
+ 00624 8b c1 mov eax, ecx
+ 00626 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR h_max$[rbp]
+ 0062c 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
+ 00630 33 d2 xor edx, edx
+ 00632 f7 b5 a4 00 00
+ 00 div DWORD PTR h_max$[rbp]
+ 00638 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 0063c 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00640 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00647 89 84 0a bc 46
+ 00 00 mov DWORD PTR [rdx+rcx+18108], eax
+
+; 3763 : z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max;
+
+ 0064e 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00652 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00656 48 8b 4d 08 mov rcx, QWORD PTR s$[rbp]
+ 0065a 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00661 8b 49 04 mov ecx, DWORD PTR [rcx+4]
+ 00664 0f af 8c 02 a8
+ 46 00 00 imul ecx, DWORD PTR [rdx+rax+18088]
+ 0066c 8b c1 mov eax, ecx
+ 0066e 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR v_max$[rbp]
+ 00674 8d 44 08 ff lea eax, DWORD PTR [rax+rcx-1]
+ 00678 33 d2 xor edx, edx
+ 0067a f7 b5 c4 00 00
+ 00 div DWORD PTR v_max$[rbp]
+ 00680 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00684 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00688 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0068f 89 84 0a c0 46
+ 00 00 mov DWORD PTR [rdx+rcx+18112], eax
+
+; 3764 : // to simplify generation, we'll allocate enough memory to decode
+; 3765 : // the bogus oversized data from using interleaved MCUs and their
+; 3766 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't
+; 3767 : // discard the extra data until colorspace conversion
+; 3768 : //
+; 3769 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier)
+; 3770 : // so these muls can't overflow with 32-bit ints (which we require)
+; 3771 : z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8;
+
+ 00696 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0069a 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0069e 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 006a5 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 006ac 8b 89 90 46 00
+ 00 mov ecx, DWORD PTR [rcx+18064]
+ 006b2 0f af 8c 02 a4
+ 46 00 00 imul ecx, DWORD PTR [rdx+rax+18084]
+ 006ba 8b c1 mov eax, ecx
+ 006bc c1 e0 03 shl eax, 3
+ 006bf 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 006c3 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 006c7 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 006ce 89 84 0a c4 46
+ 00 00 mov DWORD PTR [rdx+rcx+18116], eax
+
+; 3772 : z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8;
+
+ 006d5 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 006d9 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 006dd 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 006e4 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 006eb 8b 89 94 46 00
+ 00 mov ecx, DWORD PTR [rcx+18068]
+ 006f1 0f af 8c 02 a8
+ 46 00 00 imul ecx, DWORD PTR [rdx+rax+18088]
+ 006f9 8b c1 mov eax, ecx
+ 006fb c1 e0 03 shl eax, 3
+ 006fe 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00702 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00706 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0070d 89 84 0a c8 46
+ 00 00 mov DWORD PTR [rdx+rcx+18120], eax
+
+; 3773 : z->img_comp[i].coeff = 0;
+
+ 00714 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00718 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0071c 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00723 48 c7 84 01 f0
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18160], 0
+
+; 3774 : z->img_comp[i].raw_coeff = 0;
+
+ 0072f 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00733 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00737 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0073e 48 c7 84 01 e0
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18144], 0
+
+; 3775 : z->img_comp[i].linebuf = NULL;
+
+ 0074a 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0074e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00752 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00759 48 c7 84 01 e8
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18152], 0
+
+; 3776 : z->img_comp[i].raw_data =
+
+ 00765 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00769 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0076d 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00771 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00775 41 b8 0f 00 00
+ 00 mov r8d, 15
+ 0077b 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00782 8b 94 02 c8 46
+ 00 00 mov edx, DWORD PTR [rdx+rax+18120]
+ 00789 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00790 8b 8c 08 c4 46
+ 00 00 mov ecx, DWORD PTR [rax+rcx+18116]
+ 00797 e8 00 00 00 00 call stbi__malloc_mad2
+ 0079c 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 007a0 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 007a4 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 007ab 48 89 84 0a d8
+ 46 00 00 mov QWORD PTR [rdx+rcx+18136], rax
+
+; 3777 : stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15);
+; 3778 : if (z->img_comp[i].raw_data == NULL)
+
+ 007b3 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 007b7 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 007bb 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 007c2 48 83 bc 01 d8
+ 46 00 00 00 cmp QWORD PTR [rcx+rax+18136], 0
+ 007cb 75 27 jne SHORT $LN37@stbi__proc
+
+; 3779 : return stbi__free_jpeg_components(z, i + 1,
+
+ 007cd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 007d4 e8 00 00 00 00 call stbi__err
+ 007d9 8b 4d 64 mov ecx, DWORD PTR i$[rbp]
+ 007dc ff c1 inc ecx
+ 007de 44 8b c0 mov r8d, eax
+ 007e1 8b d1 mov edx, ecx
+ 007e3 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 007ea e8 00 00 00 00 call stbi__free_jpeg_components
+ 007ef e9 86 01 00 00 jmp $LN1@stbi__proc
+$LN37@stbi__proc:
+
+; 3780 : stbi__err("outofmem", "Out of memory"));
+; 3781 : // align blocks for idct using mmx/sse
+; 3782 : z->img_comp[i].data = (stbi_uc *)(((size_t)z->img_comp[i].raw_data + 15) & ~15);
+
+ 007f4 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 007f8 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 007fc 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00803 48 8b 84 01 d8
+ 46 00 00 mov rax, QWORD PTR [rcx+rax+18136]
+ 0080b 48 83 c0 0f add rax, 15
+ 0080f 48 83 e0 f0 and rax, -16
+ 00813 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00817 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 0081b 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00822 48 89 84 0a d0
+ 46 00 00 mov QWORD PTR [rdx+rcx+18128], rax
+
+; 3783 : if (z->progressive) {
+
+ 0082a 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00831 83 b8 30 48 00
+ 00 00 cmp DWORD PTR [rax+18480], 0
+ 00838 0f 84 32 01 00
+ 00 je $LN38@stbi__proc
+
+; 3784 : // w2, h2 are multiples of 8 (see above)
+; 3785 : z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8;
+
+ 0083e 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00842 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00846 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0084d 8b 84 01 c4 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18116]
+ 00854 99 cdq
+ 00855 83 e2 07 and edx, 7
+ 00858 03 c2 add eax, edx
+ 0085a c1 f8 03 sar eax, 3
+ 0085d 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00861 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00865 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0086c 89 84 0a f8 46
+ 00 00 mov DWORD PTR [rdx+rcx+18168], eax
+
+; 3786 : z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8;
+
+ 00873 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00877 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0087b 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00882 8b 84 01 c8 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18120]
+ 00889 99 cdq
+ 0088a 83 e2 07 and edx, 7
+ 0088d 03 c2 add eax, edx
+ 0088f c1 f8 03 sar eax, 3
+ 00892 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 00896 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 0089a 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 008a1 89 84 0a fc 46
+ 00 00 mov DWORD PTR [rdx+rcx+18172], eax
+
+; 3787 : z->img_comp[i].raw_coeff = stbi__malloc_mad3(
+
+ 008a8 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 008ac 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 008b0 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 008b4 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 008b8 41 b9 0f 00 00
+ 00 mov r9d, 15
+ 008be 41 b8 02 00 00
+ 00 mov r8d, 2
+ 008c4 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 008cb 8b 94 02 c8 46
+ 00 00 mov edx, DWORD PTR [rdx+rax+18120]
+ 008d2 48 8b 85 e0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 008d9 8b 8c 08 c4 46
+ 00 00 mov ecx, DWORD PTR [rax+rcx+18116]
+ 008e0 e8 00 00 00 00 call stbi__malloc_mad3
+ 008e5 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 008e9 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 008ed 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 008f4 48 89 84 0a e0
+ 46 00 00 mov QWORD PTR [rdx+rcx+18144], rax
+
+; 3788 : z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15);
+; 3789 : if (z->img_comp[i].raw_coeff == NULL)
+
+ 008fc 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 00900 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00904 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0090b 48 83 bc 01 e0
+ 46 00 00 00 cmp QWORD PTR [rcx+rax+18144], 0
+ 00914 75 24 jne SHORT $LN39@stbi__proc
+
+; 3790 : return stbi__free_jpeg_components(
+
+ 00916 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0091d e8 00 00 00 00 call stbi__err
+ 00922 8b 4d 64 mov ecx, DWORD PTR i$[rbp]
+ 00925 ff c1 inc ecx
+ 00927 44 8b c0 mov r8d, eax
+ 0092a 8b d1 mov edx, ecx
+ 0092c 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00933 e8 00 00 00 00 call stbi__free_jpeg_components
+ 00938 eb 40 jmp SHORT $LN1@stbi__proc
+$LN39@stbi__proc:
+
+; 3791 : z, i + 1, stbi__err("outofmem", "Out of memory"));
+; 3792 : z->img_comp[i].coeff =
+
+ 0093a 48 63 45 64 movsxd rax, DWORD PTR i$[rbp]
+ 0093e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00942 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00949 48 8b 84 01 e0
+ 46 00 00 mov rax, QWORD PTR [rcx+rax+18144]
+ 00951 48 83 c0 0f add rax, 15
+ 00955 48 83 e0 f0 and rax, -16
+ 00959 48 63 4d 64 movsxd rcx, DWORD PTR i$[rbp]
+ 0095d 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00961 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00968 48 89 84 0a f0
+ 46 00 00 mov QWORD PTR [rdx+rcx+18160], rax
+$LN38@stbi__proc:
+
+; 3793 : (short *)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15);
+; 3794 : }
+; 3795 : }
+
+ 00970 e9 7a fc ff ff jmp $LN14@stbi__proc
+$LN15@stbi__proc:
+
+; 3796 :
+; 3797 : return 1;
+
+ 00975 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__proc:
+
+; 3798 : }
+
+ 0097a 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 00981 5f pop rdi
+ 00982 5d pop rbp
+ 00983 c3 ret 0
+stbi__process_frame_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__free_jpeg_components
+_TEXT SEGMENT
+i$ = 4
+z$ = 256
+ncomp$ = 264
+why$ = 272
+stbi__free_jpeg_components PROC ; COMDAT
+
+; 3655 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00028 90 npad 1
+
+; 3656 : int i;
+; 3657 : for (i = 0; i < ncomp; ++i) {
+
+ 00029 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00030 eb 08 jmp SHORT $LN4@stbi__free
+$LN2@stbi__free:
+ 00032 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00035 ff c0 inc eax
+ 00037 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__free:
+ 0003a 8b 85 08 01 00
+ 00 mov eax, DWORD PTR ncomp$[rbp]
+ 00040 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 00043 0f 8d 34 01 00
+ 00 jge $LN3@stbi__free
+
+; 3658 : if (z->img_comp[i].raw_data) {
+
+ 00049 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0004d 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00051 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00058 48 83 bc 01 d8
+ 46 00 00 00 cmp QWORD PTR [rcx+rax+18136], 0
+ 00061 74 54 je SHORT $LN5@stbi__free
+
+; 3659 : STBI_FREE(z->img_comp[i].raw_data);
+
+ 00063 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00067 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0006b 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00072 48 8b 8c 01 d8
+ 46 00 00 mov rcx, QWORD PTR [rcx+rax+18136]
+ 0007a ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00080 90 npad 1
+
+; 3660 : z->img_comp[i].raw_data = NULL;
+
+ 00081 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00085 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00089 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00090 48 c7 84 01 d8
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18136], 0
+
+; 3661 : z->img_comp[i].data = NULL;
+
+ 0009c 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000a0 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000a4 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000ab 48 c7 84 01 d0
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18128], 0
+$LN5@stbi__free:
+
+; 3662 : }
+; 3663 : if (z->img_comp[i].raw_coeff) {
+
+ 000b7 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000bb 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000bf 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000c6 48 83 bc 01 e0
+ 46 00 00 00 cmp QWORD PTR [rcx+rax+18144], 0
+ 000cf 74 54 je SHORT $LN6@stbi__free
+
+; 3664 : STBI_FREE(z->img_comp[i].raw_coeff);
+
+ 000d1 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000d5 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000d9 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000e0 48 8b 8c 01 e0
+ 46 00 00 mov rcx, QWORD PTR [rcx+rax+18144]
+ 000e8 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000ee 90 npad 1
+
+; 3665 : z->img_comp[i].raw_coeff = 0;
+
+ 000ef 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000f3 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000f7 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000fe 48 c7 84 01 e0
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18144], 0
+
+; 3666 : z->img_comp[i].coeff = 0;
+
+ 0010a 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0010e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00112 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00119 48 c7 84 01 f0
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18160], 0
+$LN6@stbi__free:
+
+; 3667 : }
+; 3668 : if (z->img_comp[i].linebuf) {
+
+ 00125 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00129 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0012d 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00134 48 83 bc 01 e8
+ 46 00 00 00 cmp QWORD PTR [rcx+rax+18152], 0
+ 0013d 74 39 je SHORT $LN7@stbi__free
+
+; 3669 : STBI_FREE(z->img_comp[i].linebuf);
+
+ 0013f 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00143 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00147 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0014e 48 8b 8c 01 e8
+ 46 00 00 mov rcx, QWORD PTR [rcx+rax+18152]
+ 00156 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0015c 90 npad 1
+
+; 3670 : z->img_comp[i].linebuf = NULL;
+
+ 0015d 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00161 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00165 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0016c 48 c7 84 01 e8
+ 46 00 00 00 00
+ 00 00 mov QWORD PTR [rcx+rax+18152], 0
+$LN7@stbi__free:
+
+; 3671 : }
+; 3672 : }
+
+ 00178 e9 b5 fe ff ff jmp $LN2@stbi__free
+$LN3@stbi__free:
+
+; 3673 : return why;
+
+ 0017d 8b 85 10 01 00
+ 00 mov eax, DWORD PTR why$[rbp]
+
+; 3674 : }
+
+ 00183 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 0018a 5f pop rdi
+ 0018b 5d pop rbp
+ 0018c c3 ret 0
+stbi__free_jpeg_components ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__process_scan_header
+_TEXT SEGMENT
+i$ = 4
+Ls$ = 36
+id$1 = 68
+which$2 = 100
+q$3 = 132
+aa$4 = 164
+z$ = 416
+stbi__process_scan_header PROC ; COMDAT
+
+; 3606 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec a8 01
+ 00 00 sub rsp, 424 ; 000001a8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 3607 : int i;
+; 3608 : int Ls = stbi__get16be(z->s);
+
+ 00020 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00027 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0002a e8 00 00 00 00 call stbi__get16be
+ 0002f 89 45 24 mov DWORD PTR Ls$[rbp], eax
+
+; 3609 : z->scan_n = stbi__get8(z->s);
+
+ 00032 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00039 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0003c e8 00 00 00 00 call stbi__get8
+ 00041 0f b6 c0 movzx eax, al
+ 00044 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0004b 89 81 54 48 00
+ 00 mov DWORD PTR [rcx+18516], eax
+
+; 3610 : if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n)
+
+ 00051 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00058 83 b8 54 48 00
+ 00 01 cmp DWORD PTR [rax+18516], 1
+ 0005f 7c 2c jl SHORT $LN9@stbi__proc
+ 00061 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00068 83 b8 54 48 00
+ 00 04 cmp DWORD PTR [rax+18516], 4
+ 0006f 7f 1c jg SHORT $LN9@stbi__proc
+ 00071 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00078 48 8b 00 mov rax, QWORD PTR [rax]
+ 0007b 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00082 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00085 39 81 54 48 00
+ 00 cmp DWORD PTR [rcx+18516], eax
+ 0008b 7e 11 jle SHORT $LN8@stbi__proc
+$LN9@stbi__proc:
+
+; 3611 : return stbi__err("bad SOS component count", "Corrupt JPEG");
+
+ 0008d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@
+ 00094 e8 00 00 00 00 call stbi__err
+ 00099 e9 e2 02 00 00 jmp $LN1@stbi__proc
+$LN8@stbi__proc:
+
+; 3612 : if (Ls != 6 + 2 * z->scan_n)
+
+ 0009e 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000a5 8b 80 54 48 00
+ 00 mov eax, DWORD PTR [rax+18516]
+ 000ab 8d 44 00 06 lea eax, DWORD PTR [rax+rax+6]
+ 000af 39 45 24 cmp DWORD PTR Ls$[rbp], eax
+ 000b2 74 11 je SHORT $LN10@stbi__proc
+
+; 3613 : return stbi__err("bad SOS len", "Corrupt JPEG");
+
+ 000b4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@GNEHAHOH@bad?5SOS?5len@
+ 000bb e8 00 00 00 00 call stbi__err
+ 000c0 e9 bb 02 00 00 jmp $LN1@stbi__proc
+$LN10@stbi__proc:
+
+; 3614 : for (i = 0; i < z->scan_n; ++i) {
+
+ 000c5 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 000cc eb 08 jmp SHORT $LN4@stbi__proc
+$LN2@stbi__proc:
+ 000ce 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000d1 ff c0 inc eax
+ 000d3 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__proc:
+ 000d6 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000dd 8b 80 54 48 00
+ 00 mov eax, DWORD PTR [rax+18516]
+ 000e3 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 000e6 0f 8d 34 01 00
+ 00 jge $LN3@stbi__proc
+
+; 3615 : int id = stbi__get8(z->s), which;
+
+ 000ec 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000f3 48 8b 08 mov rcx, QWORD PTR [rax]
+ 000f6 e8 00 00 00 00 call stbi__get8
+ 000fb 0f b6 c0 movzx eax, al
+ 000fe 89 45 44 mov DWORD PTR id$1[rbp], eax
+
+; 3616 : int q = stbi__get8(z->s);
+
+ 00101 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00108 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0010b e8 00 00 00 00 call stbi__get8
+ 00110 0f b6 c0 movzx eax, al
+ 00113 89 85 84 00 00
+ 00 mov DWORD PTR q$3[rbp], eax
+
+; 3617 : for (which = 0; which < z->s->img_n; ++which)
+
+ 00119 c7 45 64 00 00
+ 00 00 mov DWORD PTR which$2[rbp], 0
+ 00120 eb 08 jmp SHORT $LN7@stbi__proc
+$LN5@stbi__proc:
+ 00122 8b 45 64 mov eax, DWORD PTR which$2[rbp]
+ 00125 ff c0 inc eax
+ 00127 89 45 64 mov DWORD PTR which$2[rbp], eax
+$LN7@stbi__proc:
+ 0012a 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00131 48 8b 00 mov rax, QWORD PTR [rax]
+ 00134 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00137 39 45 64 cmp DWORD PTR which$2[rbp], eax
+ 0013a 7d 1f jge SHORT $LN6@stbi__proc
+
+; 3618 : if (z->img_comp[which].id == id)
+
+ 0013c 48 63 45 64 movsxd rax, DWORD PTR which$2[rbp]
+ 00140 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00144 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0014b 8b 55 44 mov edx, DWORD PTR id$1[rbp]
+ 0014e 39 94 01 a0 46
+ 00 00 cmp DWORD PTR [rcx+rax+18080], edx
+ 00155 75 02 jne SHORT $LN11@stbi__proc
+
+; 3619 : break;
+
+ 00157 eb 02 jmp SHORT $LN6@stbi__proc
+$LN11@stbi__proc:
+ 00159 eb c7 jmp SHORT $LN5@stbi__proc
+$LN6@stbi__proc:
+
+; 3620 : if (which == z->s->img_n)
+
+ 0015b 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00162 48 8b 00 mov rax, QWORD PTR [rax]
+ 00165 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00168 39 45 64 cmp DWORD PTR which$2[rbp], eax
+ 0016b 75 07 jne SHORT $LN12@stbi__proc
+
+; 3621 : return 0; // no match
+
+ 0016d 33 c0 xor eax, eax
+ 0016f e9 0c 02 00 00 jmp $LN1@stbi__proc
+$LN12@stbi__proc:
+
+; 3622 : z->img_comp[which].hd = q >> 4;
+
+ 00174 8b 85 84 00 00
+ 00 mov eax, DWORD PTR q$3[rbp]
+ 0017a c1 f8 04 sar eax, 4
+ 0017d 48 63 4d 64 movsxd rcx, DWORD PTR which$2[rbp]
+ 00181 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00185 48 8b 95 a0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0018c 89 84 0a b0 46
+ 00 00 mov DWORD PTR [rdx+rcx+18096], eax
+
+; 3623 : if (z->img_comp[which].hd > 3)
+
+ 00193 48 63 45 64 movsxd rax, DWORD PTR which$2[rbp]
+ 00197 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0019b 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 001a2 83 bc 01 b0 46
+ 00 00 03 cmp DWORD PTR [rcx+rax+18096], 3
+ 001aa 7e 11 jle SHORT $LN13@stbi__proc
+
+; 3624 : return stbi__err("bad DC huff", "Corrupt JPEG");
+
+ 001ac 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@NOCCBFAC@bad?5DC?5huff@
+ 001b3 e8 00 00 00 00 call stbi__err
+ 001b8 e9 c3 01 00 00 jmp $LN1@stbi__proc
+$LN13@stbi__proc:
+
+; 3625 : z->img_comp[which].ha = q & 15;
+
+ 001bd 8b 85 84 00 00
+ 00 mov eax, DWORD PTR q$3[rbp]
+ 001c3 83 e0 0f and eax, 15
+ 001c6 48 63 4d 64 movsxd rcx, DWORD PTR which$2[rbp]
+ 001ca 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 001ce 48 8b 95 a0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 001d5 89 84 0a b4 46
+ 00 00 mov DWORD PTR [rdx+rcx+18100], eax
+
+; 3626 : if (z->img_comp[which].ha > 3)
+
+ 001dc 48 63 45 64 movsxd rax, DWORD PTR which$2[rbp]
+ 001e0 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 001e4 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 001eb 83 bc 01 b4 46
+ 00 00 03 cmp DWORD PTR [rcx+rax+18100], 3
+ 001f3 7e 11 jle SHORT $LN14@stbi__proc
+
+; 3627 : return stbi__err("bad AC huff", "Corrupt JPEG");
+
+ 001f5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@JGMCBLGG@bad?5AC?5huff@
+ 001fc e8 00 00 00 00 call stbi__err
+ 00201 e9 7a 01 00 00 jmp $LN1@stbi__proc
+$LN14@stbi__proc:
+
+; 3628 : z->order[i] = which;
+
+ 00206 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 0020a 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00211 8b 55 64 mov edx, DWORD PTR which$2[rbp]
+ 00214 89 94 81 58 48
+ 00 00 mov DWORD PTR [rcx+rax*4+18520], edx
+
+; 3629 : }
+
+ 0021b e9 ae fe ff ff jmp $LN2@stbi__proc
+$LN3@stbi__proc:
+
+; 3630 :
+; 3631 : {
+; 3632 : int aa;
+; 3633 : z->spec_start = stbi__get8(z->s);
+
+ 00220 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00227 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0022a e8 00 00 00 00 call stbi__get8
+ 0022f 0f b6 c0 movzx eax, al
+ 00232 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00239 89 81 34 48 00
+ 00 mov DWORD PTR [rcx+18484], eax
+
+; 3634 : z->spec_end = stbi__get8(z->s); // should be 63, but might be 0
+
+ 0023f 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00246 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00249 e8 00 00 00 00 call stbi__get8
+ 0024e 0f b6 c0 movzx eax, al
+ 00251 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00258 89 81 38 48 00
+ 00 mov DWORD PTR [rcx+18488], eax
+
+; 3635 : aa = stbi__get8(z->s);
+
+ 0025e 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00265 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00268 e8 00 00 00 00 call stbi__get8
+ 0026d 0f b6 c0 movzx eax, al
+ 00270 89 85 a4 00 00
+ 00 mov DWORD PTR aa$4[rbp], eax
+
+; 3636 : z->succ_high = (aa >> 4);
+
+ 00276 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR aa$4[rbp]
+ 0027c c1 f8 04 sar eax, 4
+ 0027f 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00286 89 81 3c 48 00
+ 00 mov DWORD PTR [rcx+18492], eax
+
+; 3637 : z->succ_low = (aa & 15);
+
+ 0028c 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR aa$4[rbp]
+ 00292 83 e0 0f and eax, 15
+ 00295 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0029c 89 81 40 48 00
+ 00 mov DWORD PTR [rcx+18496], eax
+
+; 3638 : if (z->progressive) {
+
+ 002a2 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002a9 83 b8 30 48 00
+ 00 00 cmp DWORD PTR [rax+18480], 0
+ 002b0 74 6c je SHORT $LN15@stbi__proc
+
+; 3639 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end ||
+; 3640 : z->succ_high > 13 || z->succ_low > 13)
+
+ 002b2 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002b9 83 b8 34 48 00
+ 00 3f cmp DWORD PTR [rax+18484], 63 ; 0000003fH
+ 002c0 7f 4c jg SHORT $LN18@stbi__proc
+ 002c2 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002c9 83 b8 38 48 00
+ 00 3f cmp DWORD PTR [rax+18488], 63 ; 0000003fH
+ 002d0 7f 3c jg SHORT $LN18@stbi__proc
+ 002d2 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002d9 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002e0 8b 89 38 48 00
+ 00 mov ecx, DWORD PTR [rcx+18488]
+ 002e6 39 88 34 48 00
+ 00 cmp DWORD PTR [rax+18484], ecx
+ 002ec 7f 20 jg SHORT $LN18@stbi__proc
+ 002ee 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002f5 83 b8 3c 48 00
+ 00 0d cmp DWORD PTR [rax+18492], 13
+ 002fc 7f 10 jg SHORT $LN18@stbi__proc
+ 002fe 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00305 83 b8 40 48 00
+ 00 0d cmp DWORD PTR [rax+18496], 13
+ 0030c 7e 0e jle SHORT $LN17@stbi__proc
+$LN18@stbi__proc:
+
+; 3641 : return stbi__err("bad SOS", "Corrupt JPEG");
+
+ 0030e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07EEJOMGGP@bad?5SOS@
+ 00315 e8 00 00 00 00 call stbi__err
+ 0031a eb 64 jmp SHORT $LN1@stbi__proc
+$LN17@stbi__proc:
+
+; 3642 : } else {
+
+ 0031c eb 5d jmp SHORT $LN16@stbi__proc
+$LN15@stbi__proc:
+
+; 3643 : if (z->spec_start != 0)
+
+ 0031e 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00325 83 b8 34 48 00
+ 00 00 cmp DWORD PTR [rax+18484], 0
+ 0032c 74 0e je SHORT $LN19@stbi__proc
+
+; 3644 : return stbi__err("bad SOS", "Corrupt JPEG");
+
+ 0032e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07EEJOMGGP@bad?5SOS@
+ 00335 e8 00 00 00 00 call stbi__err
+ 0033a eb 44 jmp SHORT $LN1@stbi__proc
+$LN19@stbi__proc:
+
+; 3645 : if (z->succ_high != 0 || z->succ_low != 0)
+
+ 0033c 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00343 83 b8 3c 48 00
+ 00 00 cmp DWORD PTR [rax+18492], 0
+ 0034a 75 10 jne SHORT $LN21@stbi__proc
+ 0034c 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00353 83 b8 40 48 00
+ 00 00 cmp DWORD PTR [rax+18496], 0
+ 0035a 74 0e je SHORT $LN20@stbi__proc
+$LN21@stbi__proc:
+
+; 3646 : return stbi__err("bad SOS", "Corrupt JPEG");
+
+ 0035c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07EEJOMGGP@bad?5SOS@
+ 00363 e8 00 00 00 00 call stbi__err
+ 00368 eb 16 jmp SHORT $LN1@stbi__proc
+$LN20@stbi__proc:
+
+; 3647 : z->spec_end = 63;
+
+ 0036a 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00371 c7 80 38 48 00
+ 00 3f 00 00 00 mov DWORD PTR [rax+18488], 63 ; 0000003fH
+$LN16@stbi__proc:
+
+; 3648 : }
+; 3649 : }
+; 3650 :
+; 3651 : return 1;
+
+ 0037b b8 01 00 00 00 mov eax, 1
+$LN1@stbi__proc:
+
+; 3652 : }
+
+ 00380 48 8d a5 88 01
+ 00 00 lea rsp, QWORD PTR [rbp+392]
+ 00387 5f pop rdi
+ 00388 5d pop rbp
+ 00389 c3 ret 0
+stbi__process_scan_header ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__process_marker
+_TEXT SEGMENT
+L$ = 4
+q$4 = 36
+p$5 = 68
+sixteen$6 = 100
+t$7 = 132
+i$8 = 164
+v$9 = 200
+sizes$10 = 240
+i$11 = 324
+n$12 = 356
+q$13 = 388
+tc$14 = 420
+th$15 = 452
+ok$16 = 484
+i$17 = 516
+ok$18 = 548
+i$19 = 580
+tv64 = 980
+tv88 = 980
+tv149 = 980
+tv152 = 980
+tv155 = 980
+tv236 = 980
+__$ArrayPad$ = 984
+z$ = 1024
+m$ = 1032
+stbi__process_marker PROC ; COMDAT
+
+; 3491 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 08 04
+ 00 00 sub rsp, 1032 ; 00000408H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001c b9 9a 00 00 00 mov ecx, 154 ; 0000009aH
+ 00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00026 f3 ab rep stosd
+ 00028 48 8b 8c 24 28
+ 04 00 00 mov rcx, QWORD PTR [rsp+1064]
+ 00030 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00037 48 33 c5 xor rax, rbp
+ 0003a 48 89 85 d8 03
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00041 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004d 90 npad 1
+
+; 3492 : int L;
+; 3493 : switch (m) {
+
+ 0004e 8b 85 08 04 00
+ 00 mov eax, DWORD PTR m$[rbp]
+ 00054 89 85 d4 03 00
+ 00 mov DWORD PTR tv64[rbp], eax
+ 0005a 81 bd d4 03 00
+ 00 c4 00 00 00 cmp DWORD PTR tv64[rbp], 196 ; 000000c4H
+ 00064 0f 84 19 02 00
+ 00 je $LN29@stbi__proc
+ 0006a 81 bd d4 03 00
+ 00 db 00 00 00 cmp DWORD PTR tv64[rbp], 219 ; 000000dbH
+ 00074 74 79 je SHORT $LN26@stbi__proc
+ 00076 81 bd d4 03 00
+ 00 dd 00 00 00 cmp DWORD PTR tv64[rbp], 221 ; 000000ddH
+ 00080 74 22 je SHORT $LN24@stbi__proc
+ 00082 81 bd d4 03 00
+ 00 ff 00 00 00 cmp DWORD PTR tv64[rbp], 255 ; 000000ffH
+ 0008c 74 05 je SHORT $LN23@stbi__proc
+ 0008e e9 8b 04 00 00 jmp $LN2@stbi__proc
+$LN23@stbi__proc:
+
+; 3494 : case STBI__MARKER_none: // no marker found
+; 3495 : return stbi__err("expected marker", "Corrupt JPEG");
+
+ 00093 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@KLNDOKJD@expected?5marker@
+ 0009a e8 00 00 00 00 call stbi__err
+ 0009f e9 a1 06 00 00 jmp $LN1@stbi__proc
+$LN24@stbi__proc:
+
+; 3496 :
+; 3497 : case 0xDD: // DRI - specify restart interval
+; 3498 : if (stbi__get16be(z->s) != 4)
+
+ 000a4 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000ab 48 8b 08 mov rcx, QWORD PTR [rax]
+ 000ae e8 00 00 00 00 call stbi__get16be
+ 000b3 83 f8 04 cmp eax, 4
+ 000b6 74 11 je SHORT $LN25@stbi__proc
+
+; 3499 : return stbi__err("bad DRI len", "Corrupt JPEG");
+
+ 000b8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@LPHNODCG@bad?5DRI?5len@
+ 000bf e8 00 00 00 00 call stbi__err
+ 000c4 e9 7c 06 00 00 jmp $LN1@stbi__proc
+$LN25@stbi__proc:
+
+; 3500 : z->restart_interval = stbi__get16be(z->s);
+
+ 000c9 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000d0 48 8b 08 mov rcx, QWORD PTR [rax]
+ 000d3 e8 00 00 00 00 call stbi__get16be
+ 000d8 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000df 89 81 68 48 00
+ 00 mov DWORD PTR [rcx+18536], eax
+
+; 3501 : return 1;
+
+ 000e5 b8 01 00 00 00 mov eax, 1
+ 000ea e9 56 06 00 00 jmp $LN1@stbi__proc
+$LN26@stbi__proc:
+
+; 3502 :
+; 3503 : case 0xDB: // DQT - define quantization table
+; 3504 : L = stbi__get16be(z->s) - 2;
+
+ 000ef 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 000f6 48 8b 08 mov rcx, QWORD PTR [rax]
+ 000f9 e8 00 00 00 00 call stbi__get16be
+ 000fe 83 e8 02 sub eax, 2
+ 00101 89 45 04 mov DWORD PTR L$[rbp], eax
+$LN4@stbi__proc:
+
+; 3505 : while (L > 0) {
+
+ 00104 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
+ 00108 0f 8e 4e 01 00
+ 00 jle $LN5@stbi__proc
+
+; 3506 : int q = stbi__get8(z->s);
+
+ 0010e 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00115 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00118 e8 00 00 00 00 call stbi__get8
+ 0011d 0f b6 c0 movzx eax, al
+ 00120 89 45 24 mov DWORD PTR q$4[rbp], eax
+
+; 3507 : int p = q >> 4, sixteen = (p != 0);
+
+ 00123 8b 45 24 mov eax, DWORD PTR q$4[rbp]
+ 00126 c1 f8 04 sar eax, 4
+ 00129 89 45 44 mov DWORD PTR p$5[rbp], eax
+ 0012c 83 7d 44 00 cmp DWORD PTR p$5[rbp], 0
+ 00130 74 0c je SHORT $LN52@stbi__proc
+ 00132 c7 85 d4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv88[rbp], 1
+ 0013c eb 0a jmp SHORT $LN53@stbi__proc
+$LN52@stbi__proc:
+ 0013e c7 85 d4 03 00
+ 00 00 00 00 00 mov DWORD PTR tv88[rbp], 0
+$LN53@stbi__proc:
+ 00148 8b 85 d4 03 00
+ 00 mov eax, DWORD PTR tv88[rbp]
+ 0014e 89 45 64 mov DWORD PTR sixteen$6[rbp], eax
+
+; 3508 : int t = q & 15, i;
+
+ 00151 8b 45 24 mov eax, DWORD PTR q$4[rbp]
+ 00154 83 e0 0f and eax, 15
+ 00157 89 85 84 00 00
+ 00 mov DWORD PTR t$7[rbp], eax
+
+; 3509 : if (p != 0 && p != 1)
+
+ 0015d 83 7d 44 00 cmp DWORD PTR p$5[rbp], 0
+ 00161 74 17 je SHORT $LN27@stbi__proc
+ 00163 83 7d 44 01 cmp DWORD PTR p$5[rbp], 1
+ 00167 74 11 je SHORT $LN27@stbi__proc
+
+; 3510 : return stbi__err("bad DQT type", "Corrupt JPEG");
+
+ 00169 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0N@BOFJCHAP@bad?5DQT?5type@
+ 00170 e8 00 00 00 00 call stbi__err
+ 00175 e9 cb 05 00 00 jmp $LN1@stbi__proc
+$LN27@stbi__proc:
+
+; 3511 : if (t > 3)
+
+ 0017a 83 bd 84 00 00
+ 00 03 cmp DWORD PTR t$7[rbp], 3
+ 00181 7e 11 jle SHORT $LN28@stbi__proc
+
+; 3512 : return stbi__err("bad DQT table", "Corrupt JPEG");
+
+ 00183 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@CNHKKDIM@bad?5DQT?5table@
+ 0018a e8 00 00 00 00 call stbi__err
+ 0018f e9 b1 05 00 00 jmp $LN1@stbi__proc
+$LN28@stbi__proc:
+
+; 3513 :
+; 3514 : for (i = 0; i < 64; ++i)
+
+ 00194 c7 85 a4 00 00
+ 00 00 00 00 00 mov DWORD PTR i$8[rbp], 0
+ 0019e eb 0e jmp SHORT $LN8@stbi__proc
+$LN6@stbi__proc:
+ 001a0 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR i$8[rbp]
+ 001a6 ff c0 inc eax
+ 001a8 89 85 a4 00 00
+ 00 mov DWORD PTR i$8[rbp], eax
+$LN8@stbi__proc:
+ 001ae 83 bd a4 00 00
+ 00 40 cmp DWORD PTR i$8[rbp], 64 ; 00000040H
+ 001b5 7d 74 jge SHORT $LN7@stbi__proc
+
+; 3515 : z->dequant[t][stbi__jpeg_dezigzag[i]] =
+
+ 001b7 83 7d 64 00 cmp DWORD PTR sixteen$6[rbp], 0
+ 001bb 74 17 je SHORT $LN54@stbi__proc
+ 001bd 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 001c4 48 8b 08 mov rcx, QWORD PTR [rax]
+ 001c7 e8 00 00 00 00 call stbi__get16be
+ 001cc 89 85 d4 03 00
+ 00 mov DWORD PTR tv149[rbp], eax
+ 001d2 eb 18 jmp SHORT $LN55@stbi__proc
+$LN54@stbi__proc:
+ 001d4 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 001db 48 8b 08 mov rcx, QWORD PTR [rax]
+ 001de e8 00 00 00 00 call stbi__get8
+ 001e3 0f b6 c0 movzx eax, al
+ 001e6 89 85 d4 03 00
+ 00 mov DWORD PTR tv149[rbp], eax
+$LN55@stbi__proc:
+ 001ec 48 63 85 84 00
+ 00 00 movsxd rax, DWORD PTR t$7[rbp]
+ 001f3 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 001fa 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00201 48 8d 84 01 88
+ 34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
+ 00209 48 63 8d a4 00
+ 00 00 movsxd rcx, DWORD PTR i$8[rbp]
+ 00210 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__jpeg_dezigzag
+ 00217 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 0021b 0f b7 95 d4 03
+ 00 00 movzx edx, WORD PTR tv149[rbp]
+ 00222 66 89 14 48 mov WORD PTR [rax+rcx*2], dx
+ 00226 e9 75 ff ff ff jmp $LN6@stbi__proc
+$LN7@stbi__proc:
+
+; 3516 : (stbi__uint16)(sixteen ? stbi__get16be(z->s) :
+; 3517 : stbi__get8(z->s));
+; 3518 : L -= (sixteen ? 129 : 65);
+
+ 0022b 83 7d 64 00 cmp DWORD PTR sixteen$6[rbp], 0
+ 0022f 74 0c je SHORT $LN56@stbi__proc
+ 00231 c7 85 d4 03 00
+ 00 81 00 00 00 mov DWORD PTR tv152[rbp], 129 ; 00000081H
+ 0023b eb 0a jmp SHORT $LN57@stbi__proc
+$LN56@stbi__proc:
+ 0023d c7 85 d4 03 00
+ 00 41 00 00 00 mov DWORD PTR tv152[rbp], 65 ; 00000041H
+$LN57@stbi__proc:
+ 00247 8b 85 d4 03 00
+ 00 mov eax, DWORD PTR tv152[rbp]
+ 0024d 8b 4d 04 mov ecx, DWORD PTR L$[rbp]
+ 00250 2b c8 sub ecx, eax
+ 00252 8b c1 mov eax, ecx
+ 00254 89 45 04 mov DWORD PTR L$[rbp], eax
+
+; 3519 : }
+
+ 00257 e9 a8 fe ff ff jmp $LN4@stbi__proc
+$LN5@stbi__proc:
+
+; 3520 : return L == 0;
+
+ 0025c 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
+ 00260 75 0c jne SHORT $LN58@stbi__proc
+ 00262 c7 85 d4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv155[rbp], 1
+ 0026c eb 0a jmp SHORT $LN59@stbi__proc
+$LN58@stbi__proc:
+ 0026e c7 85 d4 03 00
+ 00 00 00 00 00 mov DWORD PTR tv155[rbp], 0
+$LN59@stbi__proc:
+ 00278 8b 85 d4 03 00
+ 00 mov eax, DWORD PTR tv155[rbp]
+ 0027e e9 c2 04 00 00 jmp $LN1@stbi__proc
+$LN29@stbi__proc:
+
+; 3521 :
+; 3522 : case 0xC4: // DHT - define huffman table
+; 3523 : L = stbi__get16be(z->s) - 2;
+
+ 00283 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0028a 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0028d e8 00 00 00 00 call stbi__get16be
+ 00292 83 e8 02 sub eax, 2
+ 00295 89 45 04 mov DWORD PTR L$[rbp], eax
+$LN9@stbi__proc:
+
+; 3524 : while (L > 0) {
+
+ 00298 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
+ 0029c 0f 8e 55 02 00
+ 00 jle $LN10@stbi__proc
+
+; 3525 : stbi_uc *v;
+; 3526 : int sizes[16], i, n = 0;
+
+ 002a2 c7 85 64 01 00
+ 00 00 00 00 00 mov DWORD PTR n$12[rbp], 0
+
+; 3527 : int q = stbi__get8(z->s);
+
+ 002ac 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002b3 48 8b 08 mov rcx, QWORD PTR [rax]
+ 002b6 e8 00 00 00 00 call stbi__get8
+ 002bb 0f b6 c0 movzx eax, al
+ 002be 89 85 84 01 00
+ 00 mov DWORD PTR q$13[rbp], eax
+
+; 3528 : int tc = q >> 4;
+
+ 002c4 8b 85 84 01 00
+ 00 mov eax, DWORD PTR q$13[rbp]
+ 002ca c1 f8 04 sar eax, 4
+ 002cd 89 85 a4 01 00
+ 00 mov DWORD PTR tc$14[rbp], eax
+
+; 3529 : int th = q & 15;
+
+ 002d3 8b 85 84 01 00
+ 00 mov eax, DWORD PTR q$13[rbp]
+ 002d9 83 e0 0f and eax, 15
+ 002dc 89 85 c4 01 00
+ 00 mov DWORD PTR th$15[rbp], eax
+
+; 3530 : if (tc > 1 || th > 3)
+
+ 002e2 83 bd a4 01 00
+ 00 01 cmp DWORD PTR tc$14[rbp], 1
+ 002e9 7f 09 jg SHORT $LN31@stbi__proc
+ 002eb 83 bd c4 01 00
+ 00 03 cmp DWORD PTR th$15[rbp], 3
+ 002f2 7e 11 jle SHORT $LN30@stbi__proc
+$LN31@stbi__proc:
+
+; 3531 : return stbi__err("bad DHT header", "Corrupt JPEG");
+
+ 002f4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JLGKOCGN@bad?5DHT?5header@
+ 002fb e8 00 00 00 00 call stbi__err
+ 00300 e9 40 04 00 00 jmp $LN1@stbi__proc
+$LN30@stbi__proc:
+
+; 3532 : for (i = 0; i < 16; ++i) {
+
+ 00305 c7 85 44 01 00
+ 00 00 00 00 00 mov DWORD PTR i$11[rbp], 0
+ 0030f eb 0e jmp SHORT $LN13@stbi__proc
+$LN11@stbi__proc:
+ 00311 8b 85 44 01 00
+ 00 mov eax, DWORD PTR i$11[rbp]
+ 00317 ff c0 inc eax
+ 00319 89 85 44 01 00
+ 00 mov DWORD PTR i$11[rbp], eax
+$LN13@stbi__proc:
+ 0031f 83 bd 44 01 00
+ 00 10 cmp DWORD PTR i$11[rbp], 16
+ 00326 7d 40 jge SHORT $LN12@stbi__proc
+
+; 3533 : sizes[i] = stbi__get8(z->s);
+
+ 00328 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0032f 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00332 e8 00 00 00 00 call stbi__get8
+ 00337 48 63 8d 44 01
+ 00 00 movsxd rcx, DWORD PTR i$11[rbp]
+ 0033e 0f b6 c0 movzx eax, al
+ 00341 89 84 8d f0 00
+ 00 00 mov DWORD PTR sizes$10[rbp+rcx*4], eax
+
+; 3534 : n += sizes[i];
+
+ 00348 48 63 85 44 01
+ 00 00 movsxd rax, DWORD PTR i$11[rbp]
+ 0034f 8b 84 85 f0 00
+ 00 00 mov eax, DWORD PTR sizes$10[rbp+rax*4]
+ 00356 8b 8d 64 01 00
+ 00 mov ecx, DWORD PTR n$12[rbp]
+ 0035c 03 c8 add ecx, eax
+ 0035e 8b c1 mov eax, ecx
+ 00360 89 85 64 01 00
+ 00 mov DWORD PTR n$12[rbp], eax
+
+; 3535 : }
+
+ 00366 eb a9 jmp SHORT $LN11@stbi__proc
+$LN12@stbi__proc:
+
+; 3536 : if (n > 256)
+
+ 00368 81 bd 64 01 00
+ 00 00 01 00 00 cmp DWORD PTR n$12[rbp], 256 ; 00000100H
+ 00372 7e 11 jle SHORT $LN32@stbi__proc
+
+; 3537 : return stbi__err(
+
+ 00374 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JLGKOCGN@bad?5DHT?5header@
+ 0037b e8 00 00 00 00 call stbi__err
+ 00380 e9 c0 03 00 00 jmp $LN1@stbi__proc
+$LN32@stbi__proc:
+
+; 3538 : "bad DHT header",
+; 3539 : "Corrupt JPEG"); // Loop over i < n would write past end of values!
+; 3540 : L -= 17;
+
+ 00385 8b 45 04 mov eax, DWORD PTR L$[rbp]
+ 00388 83 e8 11 sub eax, 17
+ 0038b 89 45 04 mov DWORD PTR L$[rbp], eax
+
+; 3541 : if (tc == 0) {
+
+ 0038e 83 bd a4 01 00
+ 00 00 cmp DWORD PTR tc$14[rbp], 0
+ 00395 75 5a jne SHORT $LN33@stbi__proc
+
+; 3542 : if (!stbi__build_huffman(z->huff_dc + th, sizes))
+
+ 00397 48 63 85 c4 01
+ 00 00 movsxd rax, DWORD PTR th$15[rbp]
+ 0039e 48 69 c0 90 06
+ 00 00 imul rax, rax, 1680 ; 00000690H
+ 003a5 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 003ac 48 8d 44 01 08 lea rax, QWORD PTR [rcx+rax+8]
+ 003b1 48 8d 95 f0 00
+ 00 00 lea rdx, QWORD PTR sizes$10[rbp]
+ 003b8 48 8b c8 mov rcx, rax
+ 003bb e8 00 00 00 00 call stbi__build_huffman
+ 003c0 85 c0 test eax, eax
+ 003c2 75 07 jne SHORT $LN35@stbi__proc
+
+; 3543 : return 0;
+
+ 003c4 33 c0 xor eax, eax
+ 003c6 e9 7a 03 00 00 jmp $LN1@stbi__proc
+$LN35@stbi__proc:
+
+; 3544 : v = z->huff_dc[th].values;
+
+ 003cb 48 63 85 c4 01
+ 00 00 movsxd rax, DWORD PTR th$15[rbp]
+ 003d2 48 69 c0 90 06
+ 00 00 imul rax, rax, 1680 ; 00000690H
+ 003d9 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 003e0 48 8d 84 01 08
+ 04 00 00 lea rax, QWORD PTR [rcx+rax+1032]
+ 003e8 48 89 85 c8 00
+ 00 00 mov QWORD PTR v$9[rbp], rax
+
+; 3545 : } else {
+
+ 003ef eb 5b jmp SHORT $LN34@stbi__proc
+$LN33@stbi__proc:
+
+; 3546 : if (!stbi__build_huffman(z->huff_ac + th, sizes))
+
+ 003f1 48 63 85 c4 01
+ 00 00 movsxd rax, DWORD PTR th$15[rbp]
+ 003f8 48 69 c0 90 06
+ 00 00 imul rax, rax, 1680 ; 00000690H
+ 003ff 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00406 48 8d 84 01 48
+ 1a 00 00 lea rax, QWORD PTR [rcx+rax+6728]
+ 0040e 48 8d 95 f0 00
+ 00 00 lea rdx, QWORD PTR sizes$10[rbp]
+ 00415 48 8b c8 mov rcx, rax
+ 00418 e8 00 00 00 00 call stbi__build_huffman
+ 0041d 85 c0 test eax, eax
+ 0041f 75 07 jne SHORT $LN36@stbi__proc
+
+; 3547 : return 0;
+
+ 00421 33 c0 xor eax, eax
+ 00423 e9 1d 03 00 00 jmp $LN1@stbi__proc
+$LN36@stbi__proc:
+
+; 3548 : v = z->huff_ac[th].values;
+
+ 00428 48 63 85 c4 01
+ 00 00 movsxd rax, DWORD PTR th$15[rbp]
+ 0042f 48 69 c0 90 06
+ 00 00 imul rax, rax, 1680 ; 00000690H
+ 00436 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0043d 48 8d 84 01 48
+ 1e 00 00 lea rax, QWORD PTR [rcx+rax+7752]
+ 00445 48 89 85 c8 00
+ 00 00 mov QWORD PTR v$9[rbp], rax
+$LN34@stbi__proc:
+
+; 3549 : }
+; 3550 : for (i = 0; i < n; ++i)
+
+ 0044c c7 85 44 01 00
+ 00 00 00 00 00 mov DWORD PTR i$11[rbp], 0
+ 00456 eb 0e jmp SHORT $LN16@stbi__proc
+$LN14@stbi__proc:
+ 00458 8b 85 44 01 00
+ 00 mov eax, DWORD PTR i$11[rbp]
+ 0045e ff c0 inc eax
+ 00460 89 85 44 01 00
+ 00 mov DWORD PTR i$11[rbp], eax
+$LN16@stbi__proc:
+ 00466 8b 85 64 01 00
+ 00 mov eax, DWORD PTR n$12[rbp]
+ 0046c 39 85 44 01 00
+ 00 cmp DWORD PTR i$11[rbp], eax
+ 00472 7d 22 jge SHORT $LN15@stbi__proc
+
+; 3551 : v[i] = stbi__get8(z->s);
+
+ 00474 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0047b 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0047e e8 00 00 00 00 call stbi__get8
+ 00483 48 63 8d 44 01
+ 00 00 movsxd rcx, DWORD PTR i$11[rbp]
+ 0048a 48 8b 95 c8 00
+ 00 00 mov rdx, QWORD PTR v$9[rbp]
+ 00491 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00494 eb c2 jmp SHORT $LN14@stbi__proc
+$LN15@stbi__proc:
+
+; 3552 : if (tc != 0)
+
+ 00496 83 bd a4 01 00
+ 00 00 cmp DWORD PTR tc$14[rbp], 0
+ 0049d 74 43 je SHORT $LN37@stbi__proc
+
+; 3553 : stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th);
+
+ 0049f 48 63 85 c4 01
+ 00 00 movsxd rax, DWORD PTR th$15[rbp]
+ 004a6 48 69 c0 90 06
+ 00 00 imul rax, rax, 1680 ; 00000690H
+ 004ad 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 004b4 48 8d 84 01 48
+ 1a 00 00 lea rax, QWORD PTR [rcx+rax+6728]
+ 004bc 48 63 8d c4 01
+ 00 00 movsxd rcx, DWORD PTR th$15[rbp]
+ 004c3 48 69 c9 00 04
+ 00 00 imul rcx, rcx, 1024 ; 00000400H
+ 004ca 48 8b 95 00 04
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 004d1 48 8d 8c 0a 88
+ 36 00 00 lea rcx, QWORD PTR [rdx+rcx+13960]
+ 004d9 48 8b d0 mov rdx, rax
+ 004dc e8 00 00 00 00 call stbi__build_fast_ac
+ 004e1 90 npad 1
+$LN37@stbi__proc:
+
+; 3554 : L -= n;
+
+ 004e2 8b 85 64 01 00
+ 00 mov eax, DWORD PTR n$12[rbp]
+ 004e8 8b 4d 04 mov ecx, DWORD PTR L$[rbp]
+ 004eb 2b c8 sub ecx, eax
+ 004ed 8b c1 mov eax, ecx
+ 004ef 89 45 04 mov DWORD PTR L$[rbp], eax
+
+; 3555 : }
+
+ 004f2 e9 a1 fd ff ff jmp $LN9@stbi__proc
+$LN10@stbi__proc:
+
+; 3556 : return L == 0;
+
+ 004f7 83 7d 04 00 cmp DWORD PTR L$[rbp], 0
+ 004fb 75 0c jne SHORT $LN60@stbi__proc
+ 004fd c7 85 d4 03 00
+ 00 01 00 00 00 mov DWORD PTR tv236[rbp], 1
+ 00507 eb 0a jmp SHORT $LN61@stbi__proc
+$LN60@stbi__proc:
+ 00509 c7 85 d4 03 00
+ 00 00 00 00 00 mov DWORD PTR tv236[rbp], 0
+$LN61@stbi__proc:
+ 00513 8b 85 d4 03 00
+ 00 mov eax, DWORD PTR tv236[rbp]
+ 00519 e9 27 02 00 00 jmp $LN1@stbi__proc
+$LN2@stbi__proc:
+
+; 3557 : }
+; 3558 :
+; 3559 : // check for comment block or APP blocks
+; 3560 : if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) {
+
+ 0051e 81 bd 08 04 00
+ 00 e0 00 00 00 cmp DWORD PTR m$[rbp], 224 ; 000000e0H
+ 00528 7c 0c jl SHORT $LN40@stbi__proc
+ 0052a 81 bd 08 04 00
+ 00 ef 00 00 00 cmp DWORD PTR m$[rbp], 239 ; 000000efH
+ 00534 7e 10 jle SHORT $LN39@stbi__proc
+$LN40@stbi__proc:
+ 00536 81 bd 08 04 00
+ 00 fe 00 00 00 cmp DWORD PTR m$[rbp], 254 ; 000000feH
+ 00540 0f 85 f3 01 00
+ 00 jne $LN38@stbi__proc
+$LN39@stbi__proc:
+
+; 3561 : L = stbi__get16be(z->s);
+
+ 00546 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0054d 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00550 e8 00 00 00 00 call stbi__get16be
+ 00555 89 45 04 mov DWORD PTR L$[rbp], eax
+
+; 3562 : if (L < 2) {
+
+ 00558 83 7d 04 02 cmp DWORD PTR L$[rbp], 2
+ 0055c 7d 30 jge SHORT $LN41@stbi__proc
+
+; 3563 : if (m == 0xFE)
+
+ 0055e 81 bd 08 04 00
+ 00 fe 00 00 00 cmp DWORD PTR m$[rbp], 254 ; 000000feH
+ 00568 75 13 jne SHORT $LN42@stbi__proc
+
+; 3564 : return stbi__err("bad COM len", "Corrupt JPEG");
+
+ 0056a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@CICAFFCH@bad?5COM?5len@
+ 00571 e8 00 00 00 00 call stbi__err
+ 00576 e9 ca 01 00 00 jmp $LN1@stbi__proc
+ 0057b eb 11 jmp SHORT $LN43@stbi__proc
+$LN42@stbi__proc:
+
+; 3565 : else
+; 3566 : return stbi__err("bad APP len", "Corrupt JPEG");
+
+ 0057d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@EENLKPDI@bad?5APP?5len@
+ 00584 e8 00 00 00 00 call stbi__err
+ 00589 e9 b7 01 00 00 jmp $LN1@stbi__proc
+$LN43@stbi__proc:
+$LN41@stbi__proc:
+
+; 3567 : }
+; 3568 : L -= 2;
+
+ 0058e 8b 45 04 mov eax, DWORD PTR L$[rbp]
+ 00591 83 e8 02 sub eax, 2
+ 00594 89 45 04 mov DWORD PTR L$[rbp], eax
+
+; 3569 :
+; 3570 : if (m == 0xE0 && L >= 5) { // JFIF APP0 segment
+
+ 00597 81 bd 08 04 00
+ 00 e0 00 00 00 cmp DWORD PTR m$[rbp], 224 ; 000000e0H
+ 005a1 0f 85 93 00 00
+ 00 jne $LN44@stbi__proc
+ 005a7 83 7d 04 05 cmp DWORD PTR L$[rbp], 5
+ 005ab 0f 8c 89 00 00
+ 00 jl $LN44@stbi__proc
+
+; 3571 : static const unsigned char tag[5] = { 'J', 'F', 'I', 'F', '\0' };
+; 3572 : int ok = 1;
+
+ 005b1 c7 85 e4 01 00
+ 00 01 00 00 00 mov DWORD PTR ok$16[rbp], 1
+
+; 3573 : int i;
+; 3574 : for (i = 0; i < 5; ++i)
+
+ 005bb c7 85 04 02 00
+ 00 00 00 00 00 mov DWORD PTR i$17[rbp], 0
+ 005c5 eb 0e jmp SHORT $LN19@stbi__proc
+$LN17@stbi__proc:
+ 005c7 8b 85 04 02 00
+ 00 mov eax, DWORD PTR i$17[rbp]
+ 005cd ff c0 inc eax
+ 005cf 89 85 04 02 00
+ 00 mov DWORD PTR i$17[rbp], eax
+$LN19@stbi__proc:
+ 005d5 83 bd 04 02 00
+ 00 05 cmp DWORD PTR i$17[rbp], 5
+ 005dc 7d 34 jge SHORT $LN18@stbi__proc
+
+; 3575 : if (stbi__get8(z->s) != tag[i])
+
+ 005de 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 005e5 48 8b 08 mov rcx, QWORD PTR [rax]
+ 005e8 e8 00 00 00 00 call stbi__get8
+ 005ed 0f b6 c0 movzx eax, al
+ 005f0 48 63 8d 04 02
+ 00 00 movsxd rcx, DWORD PTR i$17[rbp]
+ 005f7 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?tag@?O@??stbi__process_marker@@9@9
+ 005fe 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00602 3b c1 cmp eax, ecx
+ 00604 74 0a je SHORT $LN46@stbi__proc
+
+; 3576 : ok = 0;
+
+ 00606 c7 85 e4 01 00
+ 00 00 00 00 00 mov DWORD PTR ok$16[rbp], 0
+$LN46@stbi__proc:
+ 00610 eb b5 jmp SHORT $LN17@stbi__proc
+$LN18@stbi__proc:
+
+; 3577 : L -= 5;
+
+ 00612 8b 45 04 mov eax, DWORD PTR L$[rbp]
+ 00615 83 e8 05 sub eax, 5
+ 00618 89 45 04 mov DWORD PTR L$[rbp], eax
+
+; 3578 : if (ok)
+
+ 0061b 83 bd e4 01 00
+ 00 00 cmp DWORD PTR ok$16[rbp], 0
+ 00622 74 11 je SHORT $LN47@stbi__proc
+
+; 3579 : z->jfif = 1;
+
+ 00624 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0062b c7 80 48 48 00
+ 00 01 00 00 00 mov DWORD PTR [rax+18504], 1
+$LN47@stbi__proc:
+
+; 3580 : } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment
+
+ 00635 e9 e5 00 00 00 jmp $LN45@stbi__proc
+$LN44@stbi__proc:
+ 0063a 81 bd 08 04 00
+ 00 ee 00 00 00 cmp DWORD PTR m$[rbp], 238 ; 000000eeH
+ 00644 0f 85 d5 00 00
+ 00 jne $LN48@stbi__proc
+ 0064a 83 7d 04 0c cmp DWORD PTR L$[rbp], 12
+ 0064e 0f 8c cb 00 00
+ 00 jl $LN48@stbi__proc
+
+; 3581 : static const unsigned char tag[6] = { 'A', 'd', 'o', 'b', 'e', '\0' };
+; 3582 : int ok = 1;
+
+ 00654 c7 85 24 02 00
+ 00 01 00 00 00 mov DWORD PTR ok$18[rbp], 1
+
+; 3583 : int i;
+; 3584 : for (i = 0; i < 6; ++i)
+
+ 0065e c7 85 44 02 00
+ 00 00 00 00 00 mov DWORD PTR i$19[rbp], 0
+ 00668 eb 0e jmp SHORT $LN22@stbi__proc
+$LN20@stbi__proc:
+ 0066a 8b 85 44 02 00
+ 00 mov eax, DWORD PTR i$19[rbp]
+ 00670 ff c0 inc eax
+ 00672 89 85 44 02 00
+ 00 mov DWORD PTR i$19[rbp], eax
+$LN22@stbi__proc:
+ 00678 83 bd 44 02 00
+ 00 06 cmp DWORD PTR i$19[rbp], 6
+ 0067f 7d 34 jge SHORT $LN21@stbi__proc
+
+; 3585 : if (stbi__get8(z->s) != tag[i])
+
+ 00681 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00688 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0068b e8 00 00 00 00 call stbi__get8
+ 00690 0f b6 c0 movzx eax, al
+ 00693 48 63 8d 44 02
+ 00 00 movsxd rcx, DWORD PTR i$19[rbp]
+ 0069a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:?tag@?BA@??stbi__process_marker@@9@9
+ 006a1 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 006a5 3b c1 cmp eax, ecx
+ 006a7 74 0a je SHORT $LN49@stbi__proc
+
+; 3586 : ok = 0;
+
+ 006a9 c7 85 24 02 00
+ 00 00 00 00 00 mov DWORD PTR ok$18[rbp], 0
+$LN49@stbi__proc:
+ 006b3 eb b5 jmp SHORT $LN20@stbi__proc
+$LN21@stbi__proc:
+
+; 3587 : L -= 6;
+
+ 006b5 8b 45 04 mov eax, DWORD PTR L$[rbp]
+ 006b8 83 e8 06 sub eax, 6
+ 006bb 89 45 04 mov DWORD PTR L$[rbp], eax
+
+; 3588 : if (ok) {
+
+ 006be 83 bd 24 02 00
+ 00 00 cmp DWORD PTR ok$18[rbp], 0
+ 006c5 74 58 je SHORT $LN50@stbi__proc
+
+; 3589 : stbi__get8(z->s); // version
+
+ 006c7 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 006ce 48 8b 08 mov rcx, QWORD PTR [rax]
+ 006d1 e8 00 00 00 00 call stbi__get8
+ 006d6 90 npad 1
+
+; 3590 : stbi__get16be(z->s); // flags0
+
+ 006d7 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 006de 48 8b 08 mov rcx, QWORD PTR [rax]
+ 006e1 e8 00 00 00 00 call stbi__get16be
+ 006e6 90 npad 1
+
+; 3591 : stbi__get16be(z->s); // flags1
+
+ 006e7 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 006ee 48 8b 08 mov rcx, QWORD PTR [rax]
+ 006f1 e8 00 00 00 00 call stbi__get16be
+ 006f6 90 npad 1
+
+; 3592 : z->app14_color_transform = stbi__get8(z->s); // color transform
+
+ 006f7 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 006fe 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00701 e8 00 00 00 00 call stbi__get8
+ 00706 0f b6 c0 movzx eax, al
+ 00709 48 8b 8d 00 04
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00710 89 81 4c 48 00
+ 00 mov DWORD PTR [rcx+18508], eax
+
+; 3593 : L -= 6;
+
+ 00716 8b 45 04 mov eax, DWORD PTR L$[rbp]
+ 00719 83 e8 06 sub eax, 6
+ 0071c 89 45 04 mov DWORD PTR L$[rbp], eax
+$LN50@stbi__proc:
+$LN48@stbi__proc:
+$LN45@stbi__proc:
+
+; 3594 : }
+; 3595 : }
+; 3596 :
+; 3597 : stbi__skip(z->s, L);
+
+ 0071f 8b 55 04 mov edx, DWORD PTR L$[rbp]
+ 00722 48 8b 85 00 04
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00729 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0072c e8 00 00 00 00 call stbi__skip
+ 00731 90 npad 1
+
+; 3598 : return 1;
+
+ 00732 b8 01 00 00 00 mov eax, 1
+ 00737 eb 0c jmp SHORT $LN1@stbi__proc
+$LN38@stbi__proc:
+
+; 3599 : }
+; 3600 :
+; 3601 : return stbi__err("unknown marker", "Corrupt JPEG");
+
+ 00739 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0P@NNGPHMMK@unknown?5marker@
+ 00740 e8 00 00 00 00 call stbi__err
+$LN1@stbi__proc:
+
+; 3602 : }
+
+ 00745 48 8b f8 mov rdi, rax
+ 00748 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0074c 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__process_marker$rtcFrameData
+ 00753 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00758 48 8b c7 mov rax, rdi
+ 0075b 48 8b 8d d8 03
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00762 48 33 cd xor rcx, rbp
+ 00765 e8 00 00 00 00 call __security_check_cookie
+ 0076a 48 8d a5 e8 03
+ 00 00 lea rsp, QWORD PTR [rbp+1000]
+ 00771 5f pop rdi
+ 00772 5d pop rbp
+ 00773 c3 ret 0
+stbi__process_marker ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_finish
+_TEXT SEGMENT
+i$1 = 4
+j$2 = 36
+n$3 = 68
+w$4 = 100
+h$5 = 132
+data$6 = 168
+z$ = 416
+stbi__jpeg_finish PROC ; COMDAT
+
+; 3468 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec a8 01
+ 00 00 sub rsp, 424 ; 000001a8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 3469 : if (z->progressive) {
+
+ 00020 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00027 83 b8 30 48 00
+ 00 00 cmp DWORD PTR [rax+18480], 0
+ 0002e 0f 84 b1 01 00
+ 00 je $LN11@stbi__jpeg
+
+; 3470 : // dequantize and idct the data
+; 3471 : int i, j, n;
+; 3472 : for (n = 0; n < z->s->img_n; ++n) {
+
+ 00034 c7 45 44 00 00
+ 00 00 mov DWORD PTR n$3[rbp], 0
+ 0003b eb 08 jmp SHORT $LN4@stbi__jpeg
+$LN2@stbi__jpeg:
+ 0003d 8b 45 44 mov eax, DWORD PTR n$3[rbp]
+ 00040 ff c0 inc eax
+ 00042 89 45 44 mov DWORD PTR n$3[rbp], eax
+$LN4@stbi__jpeg:
+ 00045 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0004c 48 8b 00 mov rax, QWORD PTR [rax]
+ 0004f 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 00052 39 45 44 cmp DWORD PTR n$3[rbp], eax
+ 00055 0f 8d 8a 01 00
+ 00 jge $LN3@stbi__jpeg
+
+; 3473 : int w = (z->img_comp[n].x + 7) >> 3;
+
+ 0005b 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
+ 0005f 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00063 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0006a 8b 84 01 bc 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18108]
+ 00071 83 c0 07 add eax, 7
+ 00074 c1 f8 03 sar eax, 3
+ 00077 89 45 64 mov DWORD PTR w$4[rbp], eax
+
+; 3474 : int h = (z->img_comp[n].y + 7) >> 3;
+
+ 0007a 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
+ 0007e 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00082 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00089 8b 84 01 c0 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18112]
+ 00090 83 c0 07 add eax, 7
+ 00093 c1 f8 03 sar eax, 3
+ 00096 89 85 84 00 00
+ 00 mov DWORD PTR h$5[rbp], eax
+
+; 3475 : for (j = 0; j < h; ++j) {
+
+ 0009c c7 45 24 00 00
+ 00 00 mov DWORD PTR j$2[rbp], 0
+ 000a3 eb 08 jmp SHORT $LN7@stbi__jpeg
+$LN5@stbi__jpeg:
+ 000a5 8b 45 24 mov eax, DWORD PTR j$2[rbp]
+ 000a8 ff c0 inc eax
+ 000aa 89 45 24 mov DWORD PTR j$2[rbp], eax
+$LN7@stbi__jpeg:
+ 000ad 8b 85 84 00 00
+ 00 mov eax, DWORD PTR h$5[rbp]
+ 000b3 39 45 24 cmp DWORD PTR j$2[rbp], eax
+ 000b6 0f 8d 24 01 00
+ 00 jge $LN6@stbi__jpeg
+
+; 3476 : for (i = 0; i < w; ++i) {
+
+ 000bc c7 45 04 00 00
+ 00 00 mov DWORD PTR i$1[rbp], 0
+ 000c3 eb 08 jmp SHORT $LN10@stbi__jpeg
+$LN8@stbi__jpeg:
+ 000c5 8b 45 04 mov eax, DWORD PTR i$1[rbp]
+ 000c8 ff c0 inc eax
+ 000ca 89 45 04 mov DWORD PTR i$1[rbp], eax
+$LN10@stbi__jpeg:
+ 000cd 8b 45 64 mov eax, DWORD PTR w$4[rbp]
+ 000d0 39 45 04 cmp DWORD PTR i$1[rbp], eax
+ 000d3 0f 8d 02 01 00
+ 00 jge $LN9@stbi__jpeg
+
+; 3477 : short *data = z->img_comp[n].coeff +
+
+ 000d9 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
+ 000dd 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000e1 48 63 4d 44 movsxd rcx, DWORD PTR n$3[rbp]
+ 000e5 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 000e9 48 8b 95 a0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 000f0 44 8b 45 24 mov r8d, DWORD PTR j$2[rbp]
+ 000f4 44 0f af 84 0a
+ f8 46 00 00 imul r8d, DWORD PTR [rdx+rcx+18168]
+ 000fd 41 8b c8 mov ecx, r8d
+ 00100 8b 55 04 mov edx, DWORD PTR i$1[rbp]
+ 00103 03 d1 add edx, ecx
+ 00105 8b ca mov ecx, edx
+ 00107 6b c9 40 imul ecx, ecx, 64 ; 00000040H
+ 0010a 48 63 c9 movsxd rcx, ecx
+ 0010d 48 8b 95 a0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00114 48 8b 84 02 f0
+ 46 00 00 mov rax, QWORD PTR [rdx+rax+18160]
+ 0011c 48 8d 04 48 lea rax, QWORD PTR [rax+rcx*2]
+ 00120 48 89 85 a8 00
+ 00 00 mov QWORD PTR data$6[rbp], rax
+
+; 3478 : 64 * (i + j * z->img_comp[n].coeff_w);
+; 3479 : stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]);
+
+ 00127 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
+ 0012b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0012f 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00136 48 63 84 01 ac
+ 46 00 00 movsxd rax, DWORD PTR [rcx+rax+18092]
+ 0013e 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00145 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0014c 48 8d 84 01 88
+ 34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
+ 00154 48 8b d0 mov rdx, rax
+ 00157 48 8b 8d a8 00
+ 00 00 mov rcx, QWORD PTR data$6[rbp]
+ 0015e e8 00 00 00 00 call stbi__jpeg_dequantize
+ 00163 90 npad 1
+
+; 3480 : z->idct_block_kernel(z->img_comp[n].data +
+
+ 00164 48 63 45 44 movsxd rax, DWORD PTR n$3[rbp]
+ 00168 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0016c 48 63 4d 44 movsxd rcx, DWORD PTR n$3[rbp]
+ 00170 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00174 48 63 55 44 movsxd rdx, DWORD PTR n$3[rbp]
+ 00178 48 6b d2 60 imul rdx, rdx, 96 ; 00000060H
+ 0017c 4c 8b 85 a0 01
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 00183 41 8b 94 10 c4
+ 46 00 00 mov edx, DWORD PTR [r8+rdx+18116]
+ 0018b 0f af 55 24 imul edx, DWORD PTR j$2[rbp]
+ 0018f c1 e2 03 shl edx, 3
+ 00192 48 63 d2 movsxd rdx, edx
+ 00195 4c 8b 85 a0 01
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 0019c 49 8b 8c 08 d0
+ 46 00 00 mov rcx, QWORD PTR [r8+rcx+18128]
+ 001a4 48 03 ca add rcx, rdx
+ 001a7 8b 55 04 mov edx, DWORD PTR i$1[rbp]
+ 001aa c1 e2 03 shl edx, 3
+ 001ad 48 63 d2 movsxd rdx, edx
+ 001b0 48 03 ca add rcx, rdx
+ 001b3 4c 8b 85 a8 00
+ 00 00 mov r8, QWORD PTR data$6[rbp]
+ 001ba 48 8b 95 a0 01
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 001c1 8b 94 02 c4 46
+ 00 00 mov edx, DWORD PTR [rdx+rax+18116]
+ 001c8 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 001cf ff 90 70 48 00
+ 00 call QWORD PTR [rax+18544]
+ 001d5 90 npad 1
+
+; 3481 : z->img_comp[n].w2 * j * 8 +
+; 3482 : i * 8,
+; 3483 : z->img_comp[n].w2, data);
+; 3484 : }
+
+ 001d6 e9 ea fe ff ff jmp $LN8@stbi__jpeg
+$LN9@stbi__jpeg:
+
+; 3485 : }
+
+ 001db e9 c5 fe ff ff jmp $LN5@stbi__jpeg
+$LN6@stbi__jpeg:
+
+; 3486 : }
+
+ 001e0 e9 58 fe ff ff jmp $LN2@stbi__jpeg
+$LN3@stbi__jpeg:
+$LN11@stbi__jpeg:
+
+; 3487 : }
+; 3488 : }
+
+ 001e5 48 8d a5 88 01
+ 00 00 lea rsp, QWORD PTR [rbp+392]
+ 001ec 5f pop rdi
+ 001ed 5d pop rbp
+ 001ee c3 ret 0
+stbi__jpeg_finish ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_dequantize
+_TEXT SEGMENT
+i$ = 4
+data$ = 256
+dequant$ = 264
+stbi__jpeg_dequantize PROC ; COMDAT
+
+; 3461 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 3462 : int i;
+; 3463 : for (i = 0; i < 64; ++i)
+
+ 00025 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0002c eb 08 jmp SHORT $LN4@stbi__jpeg
+$LN2@stbi__jpeg:
+ 0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00031 ff c0 inc eax
+ 00033 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__jpeg:
+ 00036 83 7d 04 40 cmp DWORD PTR i$[rbp], 64 ; 00000040H
+ 0003a 7d 32 jge SHORT $LN3@stbi__jpeg
+
+; 3464 : data[i] *= dequant[i];
+
+ 0003c 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00040 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 00044 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR dequant$[rbp]
+ 0004b 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2]
+ 0004f 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 00056 0f bf 04 42 movsx eax, WORD PTR [rdx+rax*2]
+ 0005a 0f af c1 imul eax, ecx
+ 0005d 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 00061 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 00068 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
+ 0006c eb c0 jmp SHORT $LN2@stbi__jpeg
+$LN3@stbi__jpeg:
+
+; 3465 : }
+
+ 0006e 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00075 5f pop rdi
+ 00076 5d pop rbp
+ 00077 c3 ret 0
+stbi__jpeg_dequantize ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__parse_entropy_coded_data
+_TEXT SEGMENT
+i$5 = 4
+j$6 = 36
+data$7 = 80
+n$8 = 228
+w$9 = 260
+h$10 = 292
+ha$11 = 324
+i$12 = 356
+j$13 = 388
+k$14 = 420
+x$15 = 452
+y$16 = 484
+data$17 = 528
+n$18 = 676
+x2$19 = 708
+y2$20 = 740
+ha$21 = 772
+i$22 = 804
+j$23 = 836
+n$24 = 868
+w$25 = 900
+h$26 = 932
+data$27 = 968
+ha$28 = 996
+i$29 = 1028
+j$30 = 1060
+k$31 = 1092
+x$32 = 1124
+y$33 = 1156
+n$34 = 1188
+x2$35 = 1220
+y2$36 = 1252
+data$37 = 1288
+tv518 = 1876
+tv190 = 1876
+tv311 = 1876
+tv400 = 1876
+__$ArrayPad$ = 1880
+z$ = 1920
+stbi__parse_entropy_coded_data PROC ; COMDAT
+
+; 3291 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec a8 07
+ 00 00 sub rsp, 1960 ; 000007a8H
+ 0000e 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00013 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
+ 00018 b9 4a 01 00 00 mov ecx, 330 ; 0000014aH
+ 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00022 f3 ab rep stosd
+ 00024 48 8b 8c 24 c8
+ 07 00 00 mov rcx, QWORD PTR [rsp+1992]
+ 0002c 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00033 48 33 c5 xor rax, rbp
+ 00036 48 89 85 58 07
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0003d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00049 90 npad 1
+
+; 3292 : stbi__jpeg_reset(z);
+
+ 0004a 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00051 e8 00 00 00 00 call stbi__jpeg_reset
+ 00056 90 npad 1
+
+; 3293 : if (!z->progressive) {
+
+ 00057 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0005e 83 b8 30 48 00
+ 00 00 cmp DWORD PTR [rax+18480], 0
+ 00065 0f 85 72 06 00
+ 00 jne $LN44@stbi__pars
+
+; 3294 : if (z->scan_n == 1) {
+
+ 0006b 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00072 83 b8 54 48 00
+ 00 01 cmp DWORD PTR [rax+18516], 1
+ 00079 0f 85 af 02 00
+ 00 jne $LN46@stbi__pars
+
+; 3295 : int i, j;
+; 3296 : STBI_SIMD_ALIGN(short, data[64]);
+; 3297 : int n = z->order[0];
+
+ 0007f b8 04 00 00 00 mov eax, 4
+ 00084 48 6b c0 00 imul rax, rax, 0
+ 00088 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0008f 8b 84 01 58 48
+ 00 00 mov eax, DWORD PTR [rcx+rax+18520]
+ 00096 89 85 e4 00 00
+ 00 mov DWORD PTR n$8[rbp], eax
+
+; 3298 : // non-interleaved data, we just need to process one block at a time,
+; 3299 : // in trivial scanline order
+; 3300 : // number of blocks to do just depends on how many actual "pixels" this
+; 3301 : // component has, independent of interleaved MCU blocking and such
+; 3302 : int w = (z->img_comp[n].x + 7) >> 3;
+
+ 0009c 48 63 85 e4 00
+ 00 00 movsxd rax, DWORD PTR n$8[rbp]
+ 000a3 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000a7 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000ae 8b 84 01 bc 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18108]
+ 000b5 83 c0 07 add eax, 7
+ 000b8 c1 f8 03 sar eax, 3
+ 000bb 89 85 04 01 00
+ 00 mov DWORD PTR w$9[rbp], eax
+
+; 3303 : int h = (z->img_comp[n].y + 7) >> 3;
+
+ 000c1 48 63 85 e4 00
+ 00 00 movsxd rax, DWORD PTR n$8[rbp]
+ 000c8 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000cc 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 000d3 8b 84 01 c0 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18112]
+ 000da 83 c0 07 add eax, 7
+ 000dd c1 f8 03 sar eax, 3
+ 000e0 89 85 24 01 00
+ 00 mov DWORD PTR h$10[rbp], eax
+
+; 3304 : for (j = 0; j < h; ++j) {
+
+ 000e6 c7 45 24 00 00
+ 00 00 mov DWORD PTR j$6[rbp], 0
+ 000ed eb 08 jmp SHORT $LN4@stbi__pars
+$LN2@stbi__pars:
+ 000ef 8b 45 24 mov eax, DWORD PTR j$6[rbp]
+ 000f2 ff c0 inc eax
+ 000f4 89 45 24 mov DWORD PTR j$6[rbp], eax
+$LN4@stbi__pars:
+ 000f7 8b 85 24 01 00
+ 00 mov eax, DWORD PTR h$10[rbp]
+ 000fd 39 45 24 cmp DWORD PTR j$6[rbp], eax
+ 00100 0f 8d 19 02 00
+ 00 jge $LN3@stbi__pars
+
+; 3305 : for (i = 0; i < w; ++i) {
+
+ 00106 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$5[rbp], 0
+ 0010d eb 08 jmp SHORT $LN7@stbi__pars
+$LN5@stbi__pars:
+ 0010f 8b 45 04 mov eax, DWORD PTR i$5[rbp]
+ 00112 ff c0 inc eax
+ 00114 89 45 04 mov DWORD PTR i$5[rbp], eax
+$LN7@stbi__pars:
+ 00117 8b 85 04 01 00
+ 00 mov eax, DWORD PTR w$9[rbp]
+ 0011d 39 45 04 cmp DWORD PTR i$5[rbp], eax
+ 00120 0f 8d f4 01 00
+ 00 jge $LN6@stbi__pars
+
+; 3306 : int ha = z->img_comp[n].ha;
+
+ 00126 48 63 85 e4 00
+ 00 00 movsxd rax, DWORD PTR n$8[rbp]
+ 0012d 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00131 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00138 8b 84 01 b4 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18100]
+ 0013f 89 85 44 01 00
+ 00 mov DWORD PTR ha$11[rbp], eax
+
+; 3307 : if (!stbi__jpeg_decode_block(
+
+ 00145 48 63 85 e4 00
+ 00 00 movsxd rax, DWORD PTR n$8[rbp]
+ 0014c 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00150 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00157 48 63 84 01 ac
+ 46 00 00 movsxd rax, DWORD PTR [rcx+rax+18092]
+ 0015f 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00166 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0016d 48 8d 84 01 88
+ 34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
+ 00175 48 63 8d 44 01
+ 00 00 movsxd rcx, DWORD PTR ha$11[rbp]
+ 0017c 48 69 c9 00 04
+ 00 00 imul rcx, rcx, 1024 ; 00000400H
+ 00183 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 0018a 48 8d 8c 0a 88
+ 36 00 00 lea rcx, QWORD PTR [rdx+rcx+13960]
+ 00192 48 63 95 44 01
+ 00 00 movsxd rdx, DWORD PTR ha$11[rbp]
+ 00199 48 69 d2 90 06
+ 00 00 imul rdx, rdx, 1680 ; 00000690H
+ 001a0 4c 8b 85 80 07
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 001a7 49 8d 94 10 48
+ 1a 00 00 lea rdx, QWORD PTR [r8+rdx+6728]
+ 001af 4c 63 85 e4 00
+ 00 00 movsxd r8, DWORD PTR n$8[rbp]
+ 001b6 4d 6b c0 60 imul r8, r8, 96 ; 00000060H
+ 001ba 4c 8b 8d 80 07
+ 00 00 mov r9, QWORD PTR z$[rbp]
+ 001c1 4f 63 84 01 b0
+ 46 00 00 movsxd r8, DWORD PTR [r9+r8+18096]
+ 001c9 4d 69 c0 90 06
+ 00 00 imul r8, r8, 1680 ; 00000690H
+ 001d0 4c 8b 8d 80 07
+ 00 00 mov r9, QWORD PTR z$[rbp]
+ 001d7 4f 8d 44 01 08 lea r8, QWORD PTR [r9+r8+8]
+ 001dc 48 89 44 24 30 mov QWORD PTR [rsp+48], rax
+ 001e1 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR n$8[rbp]
+ 001e7 89 44 24 28 mov DWORD PTR [rsp+40], eax
+ 001eb 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx
+ 001f0 4c 8b ca mov r9, rdx
+ 001f3 48 8d 55 50 lea rdx, QWORD PTR data$7[rbp]
+ 001f7 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 001fe e8 00 00 00 00 call stbi__jpeg_decode_block
+ 00203 85 c0 test eax, eax
+ 00205 75 07 jne SHORT $LN48@stbi__pars
+
+; 3308 : z, data, z->huff_dc + z->img_comp[n].hd,
+; 3309 : z->huff_ac + ha, z->fast_ac[ha], n,
+; 3310 : z->dequant[z->img_comp[n].tq]))
+; 3311 : return 0;
+
+ 00207 33 c0 xor eax, eax
+ 00209 e9 6f 0a 00 00 jmp $LN1@stbi__pars
+$LN48@stbi__pars:
+
+; 3312 : z->idct_block_kernel(z->img_comp[n].data +
+
+ 0020e 48 63 85 e4 00
+ 00 00 movsxd rax, DWORD PTR n$8[rbp]
+ 00215 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00219 48 63 8d e4 00
+ 00 00 movsxd rcx, DWORD PTR n$8[rbp]
+ 00220 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00224 48 63 95 e4 00
+ 00 00 movsxd rdx, DWORD PTR n$8[rbp]
+ 0022b 48 6b d2 60 imul rdx, rdx, 96 ; 00000060H
+ 0022f 4c 8b 85 80 07
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 00236 41 8b 94 10 c4
+ 46 00 00 mov edx, DWORD PTR [r8+rdx+18116]
+ 0023e 0f af 55 24 imul edx, DWORD PTR j$6[rbp]
+ 00242 c1 e2 03 shl edx, 3
+ 00245 48 63 d2 movsxd rdx, edx
+ 00248 4c 8b 85 80 07
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 0024f 49 8b 8c 08 d0
+ 46 00 00 mov rcx, QWORD PTR [r8+rcx+18128]
+ 00257 48 03 ca add rcx, rdx
+ 0025a 8b 55 04 mov edx, DWORD PTR i$5[rbp]
+ 0025d c1 e2 03 shl edx, 3
+ 00260 48 63 d2 movsxd rdx, edx
+ 00263 48 03 ca add rcx, rdx
+ 00266 4c 8d 45 50 lea r8, QWORD PTR data$7[rbp]
+ 0026a 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00271 8b 94 02 c4 46
+ 00 00 mov edx, DWORD PTR [rdx+rax+18116]
+ 00278 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0027f ff 90 70 48 00
+ 00 call QWORD PTR [rax+18544]
+ 00285 90 npad 1
+
+; 3313 : z->img_comp[n].w2 * j * 8 +
+; 3314 : i * 8,
+; 3315 : z->img_comp[n].w2, data);
+; 3316 : // every data block is an MCU, so countdown the restart interval
+; 3317 : if (--z->todo <= 0) {
+
+ 00286 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0028d 8b 80 6c 48 00
+ 00 mov eax, DWORD PTR [rax+18540]
+ 00293 ff c8 dec eax
+ 00295 89 85 54 07 00
+ 00 mov DWORD PTR tv190[rbp], eax
+ 0029b 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002a2 8b 8d 54 07 00
+ 00 mov ecx, DWORD PTR tv190[rbp]
+ 002a8 89 88 6c 48 00
+ 00 mov DWORD PTR [rax+18540], ecx
+ 002ae 83 bd 54 07 00
+ 00 00 cmp DWORD PTR tv190[rbp], 0
+ 002b5 7f 5e jg SHORT $LN49@stbi__pars
+
+; 3318 : if (z->code_bits < 24)
+
+ 002b7 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002be 83 b8 24 48 00
+ 00 18 cmp DWORD PTR [rax+18468], 24
+ 002c5 7d 0d jge SHORT $LN50@stbi__pars
+
+; 3319 : stbi__grow_buffer_unsafe(z);
+
+ 002c7 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 002ce e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 002d3 90 npad 1
+$LN50@stbi__pars:
+
+; 3320 : // if it's NOT a restart, then just bail, so we get corrupt data
+; 3321 : // rather than no data
+; 3322 : if (!STBI__RESTART(z->marker))
+
+ 002d4 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002db 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 002e2 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
+ 002e7 7c 15 jl SHORT $LN52@stbi__pars
+ 002e9 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 002f0 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 002f7 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
+ 002fc 7e 0a jle SHORT $LN51@stbi__pars
+$LN52@stbi__pars:
+
+; 3323 : return 1;
+
+ 002fe b8 01 00 00 00 mov eax, 1
+ 00303 e9 75 09 00 00 jmp $LN1@stbi__pars
+$LN51@stbi__pars:
+
+; 3324 : stbi__jpeg_reset(z);
+
+ 00308 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0030f e8 00 00 00 00 call stbi__jpeg_reset
+ 00314 90 npad 1
+$LN49@stbi__pars:
+
+; 3325 : }
+; 3326 : }
+
+ 00315 e9 f5 fd ff ff jmp $LN5@stbi__pars
+$LN6@stbi__pars:
+
+; 3327 : }
+
+ 0031a e9 d0 fd ff ff jmp $LN2@stbi__pars
+$LN3@stbi__pars:
+
+; 3328 : return 1;
+
+ 0031f b8 01 00 00 00 mov eax, 1
+ 00324 e9 54 09 00 00 jmp $LN1@stbi__pars
+
+; 3329 : } else { // interleaved
+
+ 00329 e9 aa 03 00 00 jmp $LN47@stbi__pars
+$LN46@stbi__pars:
+
+; 3330 : int i, j, k, x, y;
+; 3331 : STBI_SIMD_ALIGN(short, data[64]);
+; 3332 : for (j = 0; j < z->img_mcu_y; ++j) {
+
+ 0032e c7 85 84 01 00
+ 00 00 00 00 00 mov DWORD PTR j$13[rbp], 0
+ 00338 eb 0e jmp SHORT $LN10@stbi__pars
+$LN8@stbi__pars:
+ 0033a 8b 85 84 01 00
+ 00 mov eax, DWORD PTR j$13[rbp]
+ 00340 ff c0 inc eax
+ 00342 89 85 84 01 00
+ 00 mov DWORD PTR j$13[rbp], eax
+$LN10@stbi__pars:
+ 00348 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0034f 8b 80 94 46 00
+ 00 mov eax, DWORD PTR [rax+18068]
+ 00355 39 85 84 01 00
+ 00 cmp DWORD PTR j$13[rbp], eax
+ 0035b 0f 8d 6d 03 00
+ 00 jge $LN9@stbi__pars
+
+; 3333 : for (i = 0; i < z->img_mcu_x; ++i) {
+
+ 00361 c7 85 64 01 00
+ 00 00 00 00 00 mov DWORD PTR i$12[rbp], 0
+ 0036b eb 0e jmp SHORT $LN13@stbi__pars
+$LN11@stbi__pars:
+ 0036d 8b 85 64 01 00
+ 00 mov eax, DWORD PTR i$12[rbp]
+ 00373 ff c0 inc eax
+ 00375 89 85 64 01 00
+ 00 mov DWORD PTR i$12[rbp], eax
+$LN13@stbi__pars:
+ 0037b 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00382 8b 80 90 46 00
+ 00 mov eax, DWORD PTR [rax+18064]
+ 00388 39 85 64 01 00
+ 00 cmp DWORD PTR i$12[rbp], eax
+ 0038e 0f 8d 35 03 00
+ 00 jge $LN12@stbi__pars
+
+; 3334 : // scan an interleaved mcu... process scan_n components in order
+; 3335 : for (k = 0; k < z->scan_n; ++k) {
+
+ 00394 c7 85 a4 01 00
+ 00 00 00 00 00 mov DWORD PTR k$14[rbp], 0
+ 0039e eb 0e jmp SHORT $LN16@stbi__pars
+$LN14@stbi__pars:
+ 003a0 8b 85 a4 01 00
+ 00 mov eax, DWORD PTR k$14[rbp]
+ 003a6 ff c0 inc eax
+ 003a8 89 85 a4 01 00
+ 00 mov DWORD PTR k$14[rbp], eax
+$LN16@stbi__pars:
+ 003ae 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 003b5 8b 80 54 48 00
+ 00 mov eax, DWORD PTR [rax+18516]
+ 003bb 39 85 a4 01 00
+ 00 cmp DWORD PTR k$14[rbp], eax
+ 003c1 0f 8d 6e 02 00
+ 00 jge $LN15@stbi__pars
+
+; 3336 : int n = z->order[k];
+
+ 003c7 48 63 85 a4 01
+ 00 00 movsxd rax, DWORD PTR k$14[rbp]
+ 003ce 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 003d5 8b 84 81 58 48
+ 00 00 mov eax, DWORD PTR [rcx+rax*4+18520]
+ 003dc 89 85 a4 02 00
+ 00 mov DWORD PTR n$18[rbp], eax
+
+; 3337 : // scan out an mcu's worth of this component; that's just determined
+; 3338 : // by the basic H and V specified for the component
+; 3339 : for (y = 0; y < z->img_comp[n].v; ++y) {
+
+ 003e2 c7 85 e4 01 00
+ 00 00 00 00 00 mov DWORD PTR y$16[rbp], 0
+ 003ec eb 0e jmp SHORT $LN19@stbi__pars
+$LN17@stbi__pars:
+ 003ee 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR y$16[rbp]
+ 003f4 ff c0 inc eax
+ 003f6 89 85 e4 01 00
+ 00 mov DWORD PTR y$16[rbp], eax
+$LN19@stbi__pars:
+ 003fc 48 63 85 a4 02
+ 00 00 movsxd rax, DWORD PTR n$18[rbp]
+ 00403 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00407 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0040e 8b 84 01 a8 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18088]
+ 00415 39 85 e4 01 00
+ 00 cmp DWORD PTR y$16[rbp], eax
+ 0041b 0f 8d 0f 02 00
+ 00 jge $LN18@stbi__pars
+
+; 3340 : for (x = 0; x < z->img_comp[n].h; ++x) {
+
+ 00421 c7 85 c4 01 00
+ 00 00 00 00 00 mov DWORD PTR x$15[rbp], 0
+ 0042b eb 0e jmp SHORT $LN22@stbi__pars
+$LN20@stbi__pars:
+ 0042d 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR x$15[rbp]
+ 00433 ff c0 inc eax
+ 00435 89 85 c4 01 00
+ 00 mov DWORD PTR x$15[rbp], eax
+$LN22@stbi__pars:
+ 0043b 48 63 85 a4 02
+ 00 00 movsxd rax, DWORD PTR n$18[rbp]
+ 00442 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00446 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0044d 8b 84 01 a4 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18084]
+ 00454 39 85 c4 01 00
+ 00 cmp DWORD PTR x$15[rbp], eax
+ 0045a 0f 8d cb 01 00
+ 00 jge $LN21@stbi__pars
+
+; 3341 : int x2 =
+
+ 00460 48 63 85 a4 02
+ 00 00 movsxd rax, DWORD PTR n$18[rbp]
+ 00467 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0046b 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00472 8b 95 64 01 00
+ 00 mov edx, DWORD PTR i$12[rbp]
+ 00478 0f af 94 01 a4
+ 46 00 00 imul edx, DWORD PTR [rcx+rax+18084]
+ 00480 8b c2 mov eax, edx
+ 00482 03 85 c4 01 00
+ 00 add eax, DWORD PTR x$15[rbp]
+ 00488 c1 e0 03 shl eax, 3
+ 0048b 89 85 c4 02 00
+ 00 mov DWORD PTR x2$19[rbp], eax
+
+; 3342 : (i * z->img_comp[n].h + x) *
+; 3343 : 8;
+; 3344 : int y2 =
+
+ 00491 48 63 85 a4 02
+ 00 00 movsxd rax, DWORD PTR n$18[rbp]
+ 00498 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0049c 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 004a3 8b 95 84 01 00
+ 00 mov edx, DWORD PTR j$13[rbp]
+ 004a9 0f af 94 01 a8
+ 46 00 00 imul edx, DWORD PTR [rcx+rax+18088]
+ 004b1 8b c2 mov eax, edx
+ 004b3 03 85 e4 01 00
+ 00 add eax, DWORD PTR y$16[rbp]
+ 004b9 c1 e0 03 shl eax, 3
+ 004bc 89 85 e4 02 00
+ 00 mov DWORD PTR y2$20[rbp], eax
+
+; 3345 : (j * z->img_comp[n].v + y) *
+; 3346 : 8;
+; 3347 : int ha = z->img_comp[n].ha;
+
+ 004c2 48 63 85 a4 02
+ 00 00 movsxd rax, DWORD PTR n$18[rbp]
+ 004c9 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 004cd 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 004d4 8b 84 01 b4 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18100]
+ 004db 89 85 04 03 00
+ 00 mov DWORD PTR ha$21[rbp], eax
+
+; 3348 : if (!stbi__jpeg_decode_block(
+
+ 004e1 48 63 85 a4 02
+ 00 00 movsxd rax, DWORD PTR n$18[rbp]
+ 004e8 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 004ec 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 004f3 48 63 84 01 ac
+ 46 00 00 movsxd rax, DWORD PTR [rcx+rax+18092]
+ 004fb 48 69 c0 80 00
+ 00 00 imul rax, rax, 128 ; 00000080H
+ 00502 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00509 48 8d 84 01 88
+ 34 00 00 lea rax, QWORD PTR [rcx+rax+13448]
+ 00511 48 63 8d 04 03
+ 00 00 movsxd rcx, DWORD PTR ha$21[rbp]
+ 00518 48 69 c9 00 04
+ 00 00 imul rcx, rcx, 1024 ; 00000400H
+ 0051f 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00526 48 8d 8c 0a 88
+ 36 00 00 lea rcx, QWORD PTR [rdx+rcx+13960]
+ 0052e 48 63 95 04 03
+ 00 00 movsxd rdx, DWORD PTR ha$21[rbp]
+ 00535 48 69 d2 90 06
+ 00 00 imul rdx, rdx, 1680 ; 00000690H
+ 0053c 4c 8b 85 80 07
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 00543 49 8d 94 10 48
+ 1a 00 00 lea rdx, QWORD PTR [r8+rdx+6728]
+ 0054b 4c 63 85 a4 02
+ 00 00 movsxd r8, DWORD PTR n$18[rbp]
+ 00552 4d 6b c0 60 imul r8, r8, 96 ; 00000060H
+ 00556 4c 8b 8d 80 07
+ 00 00 mov r9, QWORD PTR z$[rbp]
+ 0055d 4f 63 84 01 b0
+ 46 00 00 movsxd r8, DWORD PTR [r9+r8+18096]
+ 00565 4d 69 c0 90 06
+ 00 00 imul r8, r8, 1680 ; 00000690H
+ 0056c 4c 8b 8d 80 07
+ 00 00 mov r9, QWORD PTR z$[rbp]
+ 00573 4f 8d 44 01 08 lea r8, QWORD PTR [r9+r8+8]
+ 00578 48 89 44 24 30 mov QWORD PTR [rsp+48], rax
+ 0057d 8b 85 a4 02 00
+ 00 mov eax, DWORD PTR n$18[rbp]
+ 00583 89 44 24 28 mov DWORD PTR [rsp+40], eax
+ 00587 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx
+ 0058c 4c 8b ca mov r9, rdx
+ 0058f 48 8d 95 10 02
+ 00 00 lea rdx, QWORD PTR data$17[rbp]
+ 00596 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0059d e8 00 00 00 00 call stbi__jpeg_decode_block
+ 005a2 85 c0 test eax, eax
+ 005a4 75 07 jne SHORT $LN53@stbi__pars
+
+; 3349 : z, data,
+; 3350 : z->huff_dc +
+; 3351 : z->img_comp[n]
+; 3352 : .hd,
+; 3353 : z->huff_ac + ha,
+; 3354 : z->fast_ac[ha], n,
+; 3355 : z->dequant[z->img_comp[n]
+; 3356 : .tq]))
+; 3357 : return 0;
+
+ 005a6 33 c0 xor eax, eax
+ 005a8 e9 d0 06 00 00 jmp $LN1@stbi__pars
+$LN53@stbi__pars:
+
+; 3358 : z->idct_block_kernel(
+
+ 005ad 48 63 85 a4 02
+ 00 00 movsxd rax, DWORD PTR n$18[rbp]
+ 005b4 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 005b8 48 63 8d a4 02
+ 00 00 movsxd rcx, DWORD PTR n$18[rbp]
+ 005bf 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 005c3 48 63 95 a4 02
+ 00 00 movsxd rdx, DWORD PTR n$18[rbp]
+ 005ca 48 6b d2 60 imul rdx, rdx, 96 ; 00000060H
+ 005ce 4c 8b 85 80 07
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 005d5 41 8b 94 10 c4
+ 46 00 00 mov edx, DWORD PTR [r8+rdx+18116]
+ 005dd 0f af 95 e4 02
+ 00 00 imul edx, DWORD PTR y2$20[rbp]
+ 005e4 48 63 d2 movsxd rdx, edx
+ 005e7 4c 8b 85 80 07
+ 00 00 mov r8, QWORD PTR z$[rbp]
+ 005ee 49 8b 8c 08 d0
+ 46 00 00 mov rcx, QWORD PTR [r8+rcx+18128]
+ 005f6 48 03 ca add rcx, rdx
+ 005f9 48 63 95 c4 02
+ 00 00 movsxd rdx, DWORD PTR x2$19[rbp]
+ 00600 48 03 ca add rcx, rdx
+ 00603 4c 8d 85 10 02
+ 00 00 lea r8, QWORD PTR data$17[rbp]
+ 0060a 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00611 8b 94 02 c4 46
+ 00 00 mov edx, DWORD PTR [rdx+rax+18116]
+ 00618 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0061f ff 90 70 48 00
+ 00 call QWORD PTR [rax+18544]
+ 00625 90 npad 1
+
+; 3359 : z->img_comp[n].data +
+; 3360 : z->img_comp[n].w2 *
+; 3361 : y2 +
+; 3362 : x2,
+; 3363 : z->img_comp[n].w2, data);
+; 3364 : }
+
+ 00626 e9 02 fe ff ff jmp $LN20@stbi__pars
+$LN21@stbi__pars:
+
+; 3365 : }
+
+ 0062b e9 be fd ff ff jmp $LN17@stbi__pars
+$LN18@stbi__pars:
+
+; 3366 : }
+
+ 00630 e9 6b fd ff ff jmp $LN14@stbi__pars
+$LN15@stbi__pars:
+
+; 3367 : // after all interleaved components, that's an interleaved MCU,
+; 3368 : // so now count down the restart interval
+; 3369 : if (--z->todo <= 0) {
+
+ 00635 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0063c 8b 80 6c 48 00
+ 00 mov eax, DWORD PTR [rax+18540]
+ 00642 ff c8 dec eax
+ 00644 89 85 54 07 00
+ 00 mov DWORD PTR tv311[rbp], eax
+ 0064a 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00651 8b 8d 54 07 00
+ 00 mov ecx, DWORD PTR tv311[rbp]
+ 00657 89 88 6c 48 00
+ 00 mov DWORD PTR [rax+18540], ecx
+ 0065d 83 bd 54 07 00
+ 00 00 cmp DWORD PTR tv311[rbp], 0
+ 00664 7f 5e jg SHORT $LN54@stbi__pars
+
+; 3370 : if (z->code_bits < 24)
+
+ 00666 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0066d 83 b8 24 48 00
+ 00 18 cmp DWORD PTR [rax+18468], 24
+ 00674 7d 0d jge SHORT $LN55@stbi__pars
+
+; 3371 : stbi__grow_buffer_unsafe(z);
+
+ 00676 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0067d e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 00682 90 npad 1
+$LN55@stbi__pars:
+
+; 3372 : if (!STBI__RESTART(z->marker))
+
+ 00683 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0068a 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 00691 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
+ 00696 7c 15 jl SHORT $LN57@stbi__pars
+ 00698 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0069f 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 006a6 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
+ 006ab 7e 0a jle SHORT $LN56@stbi__pars
+$LN57@stbi__pars:
+
+; 3373 : return 1;
+
+ 006ad b8 01 00 00 00 mov eax, 1
+ 006b2 e9 c6 05 00 00 jmp $LN1@stbi__pars
+$LN56@stbi__pars:
+
+; 3374 : stbi__jpeg_reset(z);
+
+ 006b7 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 006be e8 00 00 00 00 call stbi__jpeg_reset
+ 006c3 90 npad 1
+$LN54@stbi__pars:
+
+; 3375 : }
+; 3376 : }
+
+ 006c4 e9 a4 fc ff ff jmp $LN11@stbi__pars
+$LN12@stbi__pars:
+
+; 3377 : }
+
+ 006c9 e9 6c fc ff ff jmp $LN8@stbi__pars
+$LN9@stbi__pars:
+
+; 3378 : return 1;
+
+ 006ce b8 01 00 00 00 mov eax, 1
+ 006d3 e9 a5 05 00 00 jmp $LN1@stbi__pars
+$LN47@stbi__pars:
+
+; 3379 : }
+; 3380 : } else {
+
+ 006d8 e9 a0 05 00 00 jmp $LN45@stbi__pars
+$LN44@stbi__pars:
+
+; 3381 : if (z->scan_n == 1) {
+
+ 006dd 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 006e4 83 b8 54 48 00
+ 00 01 cmp DWORD PTR [rax+18516], 1
+ 006eb 0f 85 a5 02 00
+ 00 jne $LN58@stbi__pars
+
+; 3382 : int i, j;
+; 3383 : int n = z->order[0];
+
+ 006f1 b8 04 00 00 00 mov eax, 4
+ 006f6 48 6b c0 00 imul rax, rax, 0
+ 006fa 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00701 8b 84 01 58 48
+ 00 00 mov eax, DWORD PTR [rcx+rax+18520]
+ 00708 89 85 64 03 00
+ 00 mov DWORD PTR n$24[rbp], eax
+
+; 3384 : // non-interleaved data, we just need to process one block at a time,
+; 3385 : // in trivial scanline order
+; 3386 : // number of blocks to do just depends on how many actual "pixels" this
+; 3387 : // component has, independent of interleaved MCU blocking and such
+; 3388 : int w = (z->img_comp[n].x + 7) >> 3;
+
+ 0070e 48 63 85 64 03
+ 00 00 movsxd rax, DWORD PTR n$24[rbp]
+ 00715 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00719 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00720 8b 84 01 bc 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18108]
+ 00727 83 c0 07 add eax, 7
+ 0072a c1 f8 03 sar eax, 3
+ 0072d 89 85 84 03 00
+ 00 mov DWORD PTR w$25[rbp], eax
+
+; 3389 : int h = (z->img_comp[n].y + 7) >> 3;
+
+ 00733 48 63 85 64 03
+ 00 00 movsxd rax, DWORD PTR n$24[rbp]
+ 0073a 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0073e 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00745 8b 84 01 c0 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18112]
+ 0074c 83 c0 07 add eax, 7
+ 0074f c1 f8 03 sar eax, 3
+ 00752 89 85 a4 03 00
+ 00 mov DWORD PTR h$26[rbp], eax
+
+; 3390 : for (j = 0; j < h; ++j) {
+
+ 00758 c7 85 44 03 00
+ 00 00 00 00 00 mov DWORD PTR j$23[rbp], 0
+ 00762 eb 0e jmp SHORT $LN25@stbi__pars
+$LN23@stbi__pars:
+ 00764 8b 85 44 03 00
+ 00 mov eax, DWORD PTR j$23[rbp]
+ 0076a ff c0 inc eax
+ 0076c 89 85 44 03 00
+ 00 mov DWORD PTR j$23[rbp], eax
+$LN25@stbi__pars:
+ 00772 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR h$26[rbp]
+ 00778 39 85 44 03 00
+ 00 cmp DWORD PTR j$23[rbp], eax
+ 0077e 0f 8d 03 02 00
+ 00 jge $LN24@stbi__pars
+
+; 3391 : for (i = 0; i < w; ++i) {
+
+ 00784 c7 85 24 03 00
+ 00 00 00 00 00 mov DWORD PTR i$22[rbp], 0
+ 0078e eb 0e jmp SHORT $LN28@stbi__pars
+$LN26@stbi__pars:
+ 00790 8b 85 24 03 00
+ 00 mov eax, DWORD PTR i$22[rbp]
+ 00796 ff c0 inc eax
+ 00798 89 85 24 03 00
+ 00 mov DWORD PTR i$22[rbp], eax
+$LN28@stbi__pars:
+ 0079e 8b 85 84 03 00
+ 00 mov eax, DWORD PTR w$25[rbp]
+ 007a4 39 85 24 03 00
+ 00 cmp DWORD PTR i$22[rbp], eax
+ 007aa 0f 8d d2 01 00
+ 00 jge $LN27@stbi__pars
+
+; 3392 : short *data = z->img_comp[n].coeff +
+
+ 007b0 48 63 85 64 03
+ 00 00 movsxd rax, DWORD PTR n$24[rbp]
+ 007b7 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 007bb 48 63 8d 64 03
+ 00 00 movsxd rcx, DWORD PTR n$24[rbp]
+ 007c2 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 007c6 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 007cd 44 8b 85 44 03
+ 00 00 mov r8d, DWORD PTR j$23[rbp]
+ 007d4 44 0f af 84 0a
+ f8 46 00 00 imul r8d, DWORD PTR [rdx+rcx+18168]
+ 007dd 41 8b c8 mov ecx, r8d
+ 007e0 8b 95 24 03 00
+ 00 mov edx, DWORD PTR i$22[rbp]
+ 007e6 03 d1 add edx, ecx
+ 007e8 8b ca mov ecx, edx
+ 007ea 6b c9 40 imul ecx, ecx, 64 ; 00000040H
+ 007ed 48 63 c9 movsxd rcx, ecx
+ 007f0 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 007f7 48 8b 84 02 f0
+ 46 00 00 mov rax, QWORD PTR [rdx+rax+18160]
+ 007ff 48 8d 04 48 lea rax, QWORD PTR [rax+rcx*2]
+ 00803 48 89 85 c8 03
+ 00 00 mov QWORD PTR data$27[rbp], rax
+
+; 3393 : 64 * (i + j * z->img_comp[n].coeff_w);
+; 3394 : if (z->spec_start == 0) {
+
+ 0080a 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00811 83 b8 34 48 00
+ 00 00 cmp DWORD PTR [rax+18484], 0
+ 00818 75 57 jne SHORT $LN60@stbi__pars
+
+; 3395 : if (!stbi__jpeg_decode_block_prog_dc(
+
+ 0081a 48 63 85 64 03
+ 00 00 movsxd rax, DWORD PTR n$24[rbp]
+ 00821 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00825 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0082c 48 63 84 01 b0
+ 46 00 00 movsxd rax, DWORD PTR [rcx+rax+18096]
+ 00834 48 69 c0 90 06
+ 00 00 imul rax, rax, 1680 ; 00000690H
+ 0083b 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00842 48 8d 44 01 08 lea rax, QWORD PTR [rcx+rax+8]
+ 00847 44 8b 8d 64 03
+ 00 00 mov r9d, DWORD PTR n$24[rbp]
+ 0084e 4c 8b c0 mov r8, rax
+ 00851 48 8b 95 c8 03
+ 00 00 mov rdx, QWORD PTR data$27[rbp]
+ 00858 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 0085f e8 00 00 00 00 call stbi__jpeg_decode_block_prog_dc
+ 00864 85 c0 test eax, eax
+ 00866 75 07 jne SHORT $LN62@stbi__pars
+
+; 3396 : z, data, &z->huff_dc[z->img_comp[n].hd],
+; 3397 : n))
+; 3398 : return 0;
+
+ 00868 33 c0 xor eax, eax
+ 0086a e9 0e 04 00 00 jmp $LN1@stbi__pars
+$LN62@stbi__pars:
+
+; 3399 : } else {
+
+ 0086f eb 7d jmp SHORT $LN61@stbi__pars
+$LN60@stbi__pars:
+
+; 3400 : int ha = z->img_comp[n].ha;
+
+ 00871 48 63 85 64 03
+ 00 00 movsxd rax, DWORD PTR n$24[rbp]
+ 00878 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0087c 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00883 8b 84 01 b4 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18100]
+ 0088a 89 85 e4 03 00
+ 00 mov DWORD PTR ha$28[rbp], eax
+
+; 3401 : if (!stbi__jpeg_decode_block_prog_ac(
+
+ 00890 48 63 85 e4 03
+ 00 00 movsxd rax, DWORD PTR ha$28[rbp]
+ 00897 48 69 c0 00 04
+ 00 00 imul rax, rax, 1024 ; 00000400H
+ 0089e 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 008a5 48 8d 84 01 88
+ 36 00 00 lea rax, QWORD PTR [rcx+rax+13960]
+ 008ad 48 63 8d e4 03
+ 00 00 movsxd rcx, DWORD PTR ha$28[rbp]
+ 008b4 48 69 c9 90 06
+ 00 00 imul rcx, rcx, 1680 ; 00000690H
+ 008bb 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 008c2 48 8d 8c 0a 48
+ 1a 00 00 lea rcx, QWORD PTR [rdx+rcx+6728]
+ 008ca 4c 8b c8 mov r9, rax
+ 008cd 4c 8b c1 mov r8, rcx
+ 008d0 48 8b 95 c8 03
+ 00 00 mov rdx, QWORD PTR data$27[rbp]
+ 008d7 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 008de e8 00 00 00 00 call stbi__jpeg_decode_block_prog_ac
+ 008e3 85 c0 test eax, eax
+ 008e5 75 07 jne SHORT $LN63@stbi__pars
+
+; 3402 : z, data, &z->huff_ac[ha],
+; 3403 : z->fast_ac[ha]))
+; 3404 : return 0;
+
+ 008e7 33 c0 xor eax, eax
+ 008e9 e9 8f 03 00 00 jmp $LN1@stbi__pars
+$LN63@stbi__pars:
+$LN61@stbi__pars:
+
+; 3405 : }
+; 3406 : // every data block is an MCU, so countdown the restart interval
+; 3407 : if (--z->todo <= 0) {
+
+ 008ee 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 008f5 8b 80 6c 48 00
+ 00 mov eax, DWORD PTR [rax+18540]
+ 008fb ff c8 dec eax
+ 008fd 89 85 54 07 00
+ 00 mov DWORD PTR tv400[rbp], eax
+ 00903 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0090a 8b 8d 54 07 00
+ 00 mov ecx, DWORD PTR tv400[rbp]
+ 00910 89 88 6c 48 00
+ 00 mov DWORD PTR [rax+18540], ecx
+ 00916 83 bd 54 07 00
+ 00 00 cmp DWORD PTR tv400[rbp], 0
+ 0091d 7f 5e jg SHORT $LN64@stbi__pars
+
+; 3408 : if (z->code_bits < 24)
+
+ 0091f 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00926 83 b8 24 48 00
+ 00 18 cmp DWORD PTR [rax+18468], 24
+ 0092d 7d 0d jge SHORT $LN65@stbi__pars
+
+; 3409 : stbi__grow_buffer_unsafe(z);
+
+ 0092f 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00936 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 0093b 90 npad 1
+$LN65@stbi__pars:
+
+; 3410 : if (!STBI__RESTART(z->marker))
+
+ 0093c 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00943 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 0094a 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
+ 0094f 7c 15 jl SHORT $LN67@stbi__pars
+ 00951 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00958 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 0095f 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
+ 00964 7e 0a jle SHORT $LN66@stbi__pars
+$LN67@stbi__pars:
+
+; 3411 : return 1;
+
+ 00966 b8 01 00 00 00 mov eax, 1
+ 0096b e9 0d 03 00 00 jmp $LN1@stbi__pars
+$LN66@stbi__pars:
+
+; 3412 : stbi__jpeg_reset(z);
+
+ 00970 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00977 e8 00 00 00 00 call stbi__jpeg_reset
+ 0097c 90 npad 1
+$LN64@stbi__pars:
+
+; 3413 : }
+; 3414 : }
+
+ 0097d e9 0e fe ff ff jmp $LN26@stbi__pars
+$LN27@stbi__pars:
+
+; 3415 : }
+
+ 00982 e9 dd fd ff ff jmp $LN23@stbi__pars
+$LN24@stbi__pars:
+
+; 3416 : return 1;
+
+ 00987 b8 01 00 00 00 mov eax, 1
+ 0098c e9 ec 02 00 00 jmp $LN1@stbi__pars
+
+; 3417 : } else { // interleaved
+
+ 00991 e9 e7 02 00 00 jmp $LN59@stbi__pars
+$LN58@stbi__pars:
+
+; 3418 : int i, j, k, x, y;
+; 3419 : for (j = 0; j < z->img_mcu_y; ++j) {
+
+ 00996 c7 85 24 04 00
+ 00 00 00 00 00 mov DWORD PTR j$30[rbp], 0
+ 009a0 eb 0e jmp SHORT $LN31@stbi__pars
+$LN29@stbi__pars:
+ 009a2 8b 85 24 04 00
+ 00 mov eax, DWORD PTR j$30[rbp]
+ 009a8 ff c0 inc eax
+ 009aa 89 85 24 04 00
+ 00 mov DWORD PTR j$30[rbp], eax
+$LN31@stbi__pars:
+ 009b0 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 009b7 8b 80 94 46 00
+ 00 mov eax, DWORD PTR [rax+18068]
+ 009bd 39 85 24 04 00
+ 00 cmp DWORD PTR j$30[rbp], eax
+ 009c3 0f 8d af 02 00
+ 00 jge $LN30@stbi__pars
+
+; 3420 : for (i = 0; i < z->img_mcu_x; ++i) {
+
+ 009c9 c7 85 04 04 00
+ 00 00 00 00 00 mov DWORD PTR i$29[rbp], 0
+ 009d3 eb 0e jmp SHORT $LN34@stbi__pars
+$LN32@stbi__pars:
+ 009d5 8b 85 04 04 00
+ 00 mov eax, DWORD PTR i$29[rbp]
+ 009db ff c0 inc eax
+ 009dd 89 85 04 04 00
+ 00 mov DWORD PTR i$29[rbp], eax
+$LN34@stbi__pars:
+ 009e3 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 009ea 8b 80 90 46 00
+ 00 mov eax, DWORD PTR [rax+18064]
+ 009f0 39 85 04 04 00
+ 00 cmp DWORD PTR i$29[rbp], eax
+ 009f6 0f 8d 77 02 00
+ 00 jge $LN33@stbi__pars
+
+; 3421 : // scan an interleaved mcu... process scan_n components in order
+; 3422 : for (k = 0; k < z->scan_n; ++k) {
+
+ 009fc c7 85 44 04 00
+ 00 00 00 00 00 mov DWORD PTR k$31[rbp], 0
+ 00a06 eb 0e jmp SHORT $LN37@stbi__pars
+$LN35@stbi__pars:
+ 00a08 8b 85 44 04 00
+ 00 mov eax, DWORD PTR k$31[rbp]
+ 00a0e ff c0 inc eax
+ 00a10 89 85 44 04 00
+ 00 mov DWORD PTR k$31[rbp], eax
+$LN37@stbi__pars:
+ 00a16 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00a1d 8b 80 54 48 00
+ 00 mov eax, DWORD PTR [rax+18516]
+ 00a23 39 85 44 04 00
+ 00 cmp DWORD PTR k$31[rbp], eax
+ 00a29 0f 8d b3 01 00
+ 00 jge $LN36@stbi__pars
+
+; 3423 : int n = z->order[k];
+
+ 00a2f 48 63 85 44 04
+ 00 00 movsxd rax, DWORD PTR k$31[rbp]
+ 00a36 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00a3d 8b 84 81 58 48
+ 00 00 mov eax, DWORD PTR [rcx+rax*4+18520]
+ 00a44 89 85 a4 04 00
+ 00 mov DWORD PTR n$34[rbp], eax
+
+; 3424 : // scan out an mcu's worth of this component; that's just determined
+; 3425 : // by the basic H and V specified for the component
+; 3426 : for (y = 0; y < z->img_comp[n].v; ++y) {
+
+ 00a4a c7 85 84 04 00
+ 00 00 00 00 00 mov DWORD PTR y$33[rbp], 0
+ 00a54 eb 0e jmp SHORT $LN40@stbi__pars
+$LN38@stbi__pars:
+ 00a56 8b 85 84 04 00
+ 00 mov eax, DWORD PTR y$33[rbp]
+ 00a5c ff c0 inc eax
+ 00a5e 89 85 84 04 00
+ 00 mov DWORD PTR y$33[rbp], eax
+$LN40@stbi__pars:
+ 00a64 48 63 85 a4 04
+ 00 00 movsxd rax, DWORD PTR n$34[rbp]
+ 00a6b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00a6f 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00a76 8b 84 01 a8 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18088]
+ 00a7d 39 85 84 04 00
+ 00 cmp DWORD PTR y$33[rbp], eax
+ 00a83 0f 8d 54 01 00
+ 00 jge $LN39@stbi__pars
+
+; 3427 : for (x = 0; x < z->img_comp[n].h; ++x) {
+
+ 00a89 c7 85 64 04 00
+ 00 00 00 00 00 mov DWORD PTR x$32[rbp], 0
+ 00a93 eb 0e jmp SHORT $LN43@stbi__pars
+$LN41@stbi__pars:
+ 00a95 8b 85 64 04 00
+ 00 mov eax, DWORD PTR x$32[rbp]
+ 00a9b ff c0 inc eax
+ 00a9d 89 85 64 04 00
+ 00 mov DWORD PTR x$32[rbp], eax
+$LN43@stbi__pars:
+ 00aa3 48 63 85 a4 04
+ 00 00 movsxd rax, DWORD PTR n$34[rbp]
+ 00aaa 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00aae 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00ab5 8b 84 01 a4 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18084]
+ 00abc 39 85 64 04 00
+ 00 cmp DWORD PTR x$32[rbp], eax
+ 00ac2 0f 8d 10 01 00
+ 00 jge $LN42@stbi__pars
+
+; 3428 : int x2 = (i * z->img_comp[n].h + x);
+
+ 00ac8 48 63 85 a4 04
+ 00 00 movsxd rax, DWORD PTR n$34[rbp]
+ 00acf 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00ad3 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00ada 8b 95 04 04 00
+ 00 mov edx, DWORD PTR i$29[rbp]
+ 00ae0 0f af 94 01 a4
+ 46 00 00 imul edx, DWORD PTR [rcx+rax+18084]
+ 00ae8 8b c2 mov eax, edx
+ 00aea 03 85 64 04 00
+ 00 add eax, DWORD PTR x$32[rbp]
+ 00af0 89 85 c4 04 00
+ 00 mov DWORD PTR x2$35[rbp], eax
+
+; 3429 : int y2 = (j * z->img_comp[n].v + y);
+
+ 00af6 48 63 85 a4 04
+ 00 00 movsxd rax, DWORD PTR n$34[rbp]
+ 00afd 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00b01 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00b08 8b 95 24 04 00
+ 00 mov edx, DWORD PTR j$30[rbp]
+ 00b0e 0f af 94 01 a8
+ 46 00 00 imul edx, DWORD PTR [rcx+rax+18088]
+ 00b16 8b c2 mov eax, edx
+ 00b18 03 85 84 04 00
+ 00 add eax, DWORD PTR y$33[rbp]
+ 00b1e 89 85 e4 04 00
+ 00 mov DWORD PTR y2$36[rbp], eax
+
+; 3430 : short *data =
+
+ 00b24 48 63 85 a4 04
+ 00 00 movsxd rax, DWORD PTR n$34[rbp]
+ 00b2b 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00b2f 48 63 8d a4 04
+ 00 00 movsxd rcx, DWORD PTR n$34[rbp]
+ 00b36 48 6b c9 60 imul rcx, rcx, 96 ; 00000060H
+ 00b3a 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00b41 44 8b 85 e4 04
+ 00 00 mov r8d, DWORD PTR y2$36[rbp]
+ 00b48 44 0f af 84 0a
+ f8 46 00 00 imul r8d, DWORD PTR [rdx+rcx+18168]
+ 00b51 41 8b c8 mov ecx, r8d
+ 00b54 8b 95 c4 04 00
+ 00 mov edx, DWORD PTR x2$35[rbp]
+ 00b5a 03 d1 add edx, ecx
+ 00b5c 8b ca mov ecx, edx
+ 00b5e 6b c9 40 imul ecx, ecx, 64 ; 00000040H
+ 00b61 48 63 c9 movsxd rcx, ecx
+ 00b64 48 8b 95 80 07
+ 00 00 mov rdx, QWORD PTR z$[rbp]
+ 00b6b 48 8b 84 02 f0
+ 46 00 00 mov rax, QWORD PTR [rdx+rax+18160]
+ 00b73 48 8d 04 48 lea rax, QWORD PTR [rax+rcx*2]
+ 00b77 48 89 85 08 05
+ 00 00 mov QWORD PTR data$37[rbp], rax
+
+; 3431 : z->img_comp[n].coeff +
+; 3432 : 64 * (x2 +
+; 3433 : y2 * z->img_comp[n]
+; 3434 : .coeff_w);
+; 3435 : if (!stbi__jpeg_decode_block_prog_dc(
+
+ 00b7e 48 63 85 a4 04
+ 00 00 movsxd rax, DWORD PTR n$34[rbp]
+ 00b85 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00b89 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00b90 48 63 84 01 b0
+ 46 00 00 movsxd rax, DWORD PTR [rcx+rax+18096]
+ 00b98 48 69 c0 90 06
+ 00 00 imul rax, rax, 1680 ; 00000690H
+ 00b9f 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00ba6 48 8d 44 01 08 lea rax, QWORD PTR [rcx+rax+8]
+ 00bab 44 8b 8d a4 04
+ 00 00 mov r9d, DWORD PTR n$34[rbp]
+ 00bb2 4c 8b c0 mov r8, rax
+ 00bb5 48 8b 95 08 05
+ 00 00 mov rdx, QWORD PTR data$37[rbp]
+ 00bbc 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00bc3 e8 00 00 00 00 call stbi__jpeg_decode_block_prog_dc
+ 00bc8 85 c0 test eax, eax
+ 00bca 75 07 jne SHORT $LN68@stbi__pars
+
+; 3436 : z, data,
+; 3437 : &z->huff_dc[z->img_comp[n]
+; 3438 : .hd],
+; 3439 : n))
+; 3440 : return 0;
+
+ 00bcc 33 c0 xor eax, eax
+ 00bce e9 aa 00 00 00 jmp $LN1@stbi__pars
+$LN68@stbi__pars:
+
+; 3441 : }
+
+ 00bd3 e9 bd fe ff ff jmp $LN41@stbi__pars
+$LN42@stbi__pars:
+
+; 3442 : }
+
+ 00bd8 e9 79 fe ff ff jmp $LN38@stbi__pars
+$LN39@stbi__pars:
+
+; 3443 : }
+
+ 00bdd e9 26 fe ff ff jmp $LN35@stbi__pars
+$LN36@stbi__pars:
+
+; 3444 : // after all interleaved components, that's an interleaved MCU,
+; 3445 : // so now count down the restart interval
+; 3446 : if (--z->todo <= 0) {
+
+ 00be2 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00be9 8b 80 6c 48 00
+ 00 mov eax, DWORD PTR [rax+18540]
+ 00bef ff c8 dec eax
+ 00bf1 89 85 54 07 00
+ 00 mov DWORD PTR tv518[rbp], eax
+ 00bf7 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00bfe 8b 8d 54 07 00
+ 00 mov ecx, DWORD PTR tv518[rbp]
+ 00c04 89 88 6c 48 00
+ 00 mov DWORD PTR [rax+18540], ecx
+ 00c0a 83 bd 54 07 00
+ 00 00 cmp DWORD PTR tv518[rbp], 0
+ 00c11 7f 5b jg SHORT $LN69@stbi__pars
+
+; 3447 : if (z->code_bits < 24)
+
+ 00c13 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00c1a 83 b8 24 48 00
+ 00 18 cmp DWORD PTR [rax+18468], 24
+ 00c21 7d 0d jge SHORT $LN70@stbi__pars
+
+; 3448 : stbi__grow_buffer_unsafe(z);
+
+ 00c23 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00c2a e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 00c2f 90 npad 1
+$LN70@stbi__pars:
+
+; 3449 : if (!STBI__RESTART(z->marker))
+
+ 00c30 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00c37 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 00c3e 3d d0 00 00 00 cmp eax, 208 ; 000000d0H
+ 00c43 7c 15 jl SHORT $LN72@stbi__pars
+ 00c45 48 8b 85 80 07
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00c4c 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 00c53 3d d7 00 00 00 cmp eax, 215 ; 000000d7H
+ 00c58 7e 07 jle SHORT $LN71@stbi__pars
+$LN72@stbi__pars:
+
+; 3450 : return 1;
+
+ 00c5a b8 01 00 00 00 mov eax, 1
+ 00c5f eb 1c jmp SHORT $LN1@stbi__pars
+$LN71@stbi__pars:
+
+; 3451 : stbi__jpeg_reset(z);
+
+ 00c61 48 8b 8d 80 07
+ 00 00 mov rcx, QWORD PTR z$[rbp]
+ 00c68 e8 00 00 00 00 call stbi__jpeg_reset
+ 00c6d 90 npad 1
+$LN69@stbi__pars:
+
+; 3452 : }
+; 3453 : }
+
+ 00c6e e9 62 fd ff ff jmp $LN32@stbi__pars
+$LN33@stbi__pars:
+
+; 3454 : }
+
+ 00c73 e9 2a fd ff ff jmp $LN29@stbi__pars
+$LN30@stbi__pars:
+
+; 3455 : return 1;
+
+ 00c78 b8 01 00 00 00 mov eax, 1
+$LN59@stbi__pars:
+$LN45@stbi__pars:
+$LN1@stbi__pars:
+
+; 3456 : }
+; 3457 : }
+; 3458 : }
+
+ 00c7d 48 8b f8 mov rdi, rax
+ 00c80 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
+ 00c84 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__parse_entropy_coded_data$rtcFrameData
+ 00c8b e8 00 00 00 00 call _RTC_CheckStackVars
+ 00c90 48 8b c7 mov rax, rdi
+ 00c93 48 8b 8d 58 07
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00c9a 48 33 cd xor rcx, rbp
+ 00c9d e8 00 00 00 00 call __security_check_cookie
+ 00ca2 48 8d a5 68 07
+ 00 00 lea rsp, QWORD PTR [rbp+1896]
+ 00ca9 5f pop rdi
+ 00caa 5d pop rbp
+ 00cab c3 ret 0
+stbi__parse_entropy_coded_data ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_reset
+_TEXT SEGMENT
+tv88 = 192
+j$ = 240
+stbi__jpeg_reset PROC ; COMDAT
+
+; 3277 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 3278 : j->code_bits = 0;
+
+ 00020 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00027 c7 80 24 48 00
+ 00 00 00 00 00 mov DWORD PTR [rax+18468], 0
+
+; 3279 : j->code_buffer = 0;
+
+ 00031 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00038 c7 80 20 48 00
+ 00 00 00 00 00 mov DWORD PTR [rax+18464], 0
+
+; 3280 : j->nomore = 0;
+
+ 00042 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00049 c7 80 2c 48 00
+ 00 00 00 00 00 mov DWORD PTR [rax+18476], 0
+
+; 3281 : j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred =
+
+ 00053 b8 60 00 00 00 mov eax, 96 ; 00000060H
+ 00058 48 6b c0 03 imul rax, rax, 3
+ 0005c 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00063 c7 84 01 b8 46
+ 00 00 00 00 00
+ 00 mov DWORD PTR [rcx+rax+18104], 0
+ 0006e b8 60 00 00 00 mov eax, 96 ; 00000060H
+ 00073 48 6b c0 02 imul rax, rax, 2
+ 00077 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0007e c7 84 01 b8 46
+ 00 00 00 00 00
+ 00 mov DWORD PTR [rcx+rax+18104], 0
+ 00089 b8 60 00 00 00 mov eax, 96 ; 00000060H
+ 0008e 48 6b c0 01 imul rax, rax, 1
+ 00092 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00099 c7 84 01 b8 46
+ 00 00 00 00 00
+ 00 mov DWORD PTR [rcx+rax+18104], 0
+ 000a4 b8 60 00 00 00 mov eax, 96 ; 00000060H
+ 000a9 48 6b c0 00 imul rax, rax, 0
+ 000ad 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000b4 c7 84 01 b8 46
+ 00 00 00 00 00
+ 00 mov DWORD PTR [rcx+rax+18104], 0
+
+; 3282 : j->img_comp[3].dc_pred = 0;
+; 3283 : j->marker = STBI__MARKER_none;
+
+ 000bf 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000c6 c6 80 28 48 00
+ 00 ff mov BYTE PTR [rax+18472], 255 ; 000000ffH
+
+; 3284 : j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff;
+
+ 000cd 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000d4 83 b8 68 48 00
+ 00 00 cmp DWORD PTR [rax+18536], 0
+ 000db 74 15 je SHORT $LN3@stbi__jpeg
+ 000dd 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000e4 8b 80 68 48 00
+ 00 mov eax, DWORD PTR [rax+18536]
+ 000ea 89 85 c0 00 00
+ 00 mov DWORD PTR tv88[rbp], eax
+ 000f0 eb 0a jmp SHORT $LN4@stbi__jpeg
+$LN3@stbi__jpeg:
+ 000f2 c7 85 c0 00 00
+ 00 ff ff ff 7f mov DWORD PTR tv88[rbp], 2147483647 ; 7fffffffH
+$LN4@stbi__jpeg:
+ 000fc 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00103 8b 8d c0 00 00
+ 00 mov ecx, DWORD PTR tv88[rbp]
+ 00109 89 88 6c 48 00
+ 00 mov DWORD PTR [rax+18540], ecx
+
+; 3285 : j->eob_run = 0;
+
+ 0010f 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00116 c7 80 44 48 00
+ 00 00 00 00 00 mov DWORD PTR [rax+18500], 0
+
+; 3286 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe,
+; 3287 : // since we don't even allow 1<<30 pixels
+; 3288 : }
+
+ 00120 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 00127 5f pop rdi
+ 00128 5d pop rbp
+ 00129 c3 ret 0
+stbi__jpeg_reset ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__get_marker
+_TEXT SEGMENT
+x$ = 4
+j$ = 256
+stbi__get_marker PROC ; COMDAT
+
+; 3255 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 3256 : stbi_uc x;
+; 3257 : if (j->marker != STBI__MARKER_none) {
+
+ 00020 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00027 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 0002e 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 00033 74 25 je SHORT $LN4@stbi__get_
+
+; 3258 : x = j->marker;
+
+ 00035 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0003c 0f b6 80 28 48
+ 00 00 movzx eax, BYTE PTR [rax+18472]
+ 00043 88 45 04 mov BYTE PTR x$[rbp], al
+
+; 3259 : j->marker = STBI__MARKER_none;
+
+ 00046 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0004d c6 80 28 48 00
+ 00 ff mov BYTE PTR [rax+18472], 255 ; 000000ffH
+
+; 3260 : return x;
+
+ 00054 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
+ 00058 eb 44 jmp SHORT $LN1@stbi__get_
+$LN4@stbi__get_:
+
+; 3261 : }
+; 3262 : x = stbi__get8(j->s);
+
+ 0005a 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00061 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00064 e8 00 00 00 00 call stbi__get8
+ 00069 88 45 04 mov BYTE PTR x$[rbp], al
+
+; 3263 : if (x != 0xff)
+
+ 0006c 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
+ 00070 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 00075 74 04 je SHORT $LN5@stbi__get_
+
+; 3264 : return STBI__MARKER_none;
+
+ 00077 b0 ff mov al, 255 ; 000000ffH
+ 00079 eb 23 jmp SHORT $LN1@stbi__get_
+$LN5@stbi__get_:
+$LN2@stbi__get_:
+
+; 3265 : while (x == 0xff)
+
+ 0007b 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
+ 0007f 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 00084 75 14 jne SHORT $LN3@stbi__get_
+
+; 3266 : x = stbi__get8(j->s); // consume repeated 0xff fill bytes
+
+ 00086 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0008d 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00090 e8 00 00 00 00 call stbi__get8
+ 00095 88 45 04 mov BYTE PTR x$[rbp], al
+ 00098 eb e1 jmp SHORT $LN2@stbi__get_
+$LN3@stbi__get_:
+
+; 3267 : return x;
+
+ 0009a 0f b6 45 04 movzx eax, BYTE PTR x$[rbp]
+$LN1@stbi__get_:
+
+; 3268 : }
+
+ 0009e 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000a5 5f pop rdi
+ 000a6 5d pop rbp
+ 000a7 c3 ret 0
+stbi__get_marker ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__idct_simd
+_TEXT SEGMENT
+row0$ = 16
+row1$ = 64
+row2$ = 112
+row3$ = 160
+row4$ = 208
+row5$ = 256
+row6$ = 304
+row7$ = 352
+tmp$ = 400
+rot0_0$ = 448
+rot0_1$ = 496
+rot1_0$ = 544
+rot1_1$ = 592
+rot2_0$ = 640
+rot2_1$ = 688
+rot3_0$ = 736
+rot3_1$ = 784
+bias_0$ = 832
+bias_1$ = 880
+rot0_0lo$1 = 928
+rot0_0hi$2 = 976
+t2e_l$3 = 1024
+t2e_h$4 = 1072
+t3e_l$5 = 1120
+t3e_h$6 = 1168
+sum04$7 = 1216
+dif04$8 = 1264
+t0e_l$9 = 1312
+t0e_h$10 = 1360
+t1e_l$11 = 1408
+t1e_h$12 = 1456
+x0_l$13 = 1504
+x0_h$14 = 1552
+x3_l$15 = 1600
+x3_h$16 = 1648
+x1_l$17 = 1696
+x1_h$18 = 1744
+x2_l$19 = 1792
+x2_h$20 = 1840
+rot2_0lo$21 = 1888
+rot2_0hi$22 = 1936
+y0o_l$23 = 1984
+y0o_h$24 = 2032
+y2o_l$25 = 2080
+y2o_h$26 = 2128
+rot3_0lo$27 = 2176
+rot3_0hi$28 = 2224
+y1o_l$29 = 2272
+y1o_h$30 = 2320
+y3o_l$31 = 2368
+y3o_h$32 = 2416
+sum17$33 = 2464
+sum35$34 = 2512
+rot1_0lo$35 = 2560
+rot1_0hi$36 = 2608
+y4o_l$37 = 2656
+y4o_h$38 = 2704
+y5o_l$39 = 2752
+y5o_h$40 = 2800
+x4_l$41 = 2848
+x4_h$42 = 2896
+x5_l$43 = 2944
+x5_h$44 = 2992
+x6_l$45 = 3040
+x6_h$46 = 3088
+x7_l$47 = 3136
+x7_h$48 = 3184
+abiased_l$49 = 3232
+abiased_h$50 = 3280
+sum_l$51 = 3328
+sum_h$52 = 3376
+dif_l$53 = 3424
+dif_h$54 = 3472
+abiased_l$55 = 3520
+abiased_h$56 = 3568
+sum_l$57 = 3616
+sum_h$58 = 3664
+dif_l$59 = 3712
+dif_h$60 = 3760
+abiased_l$61 = 3808
+abiased_h$62 = 3856
+sum_l$63 = 3904
+sum_h$64 = 3952
+dif_l$65 = 4000
+dif_h$66 = 4048
+abiased_l$67 = 4096
+abiased_h$68 = 4144
+sum_l$69 = 4192
+sum_h$70 = 4240
+dif_l$71 = 4288
+dif_h$72 = 4336
+rot0_0lo$73 = 4384
+rot0_0hi$74 = 4432
+t2e_l$75 = 4480
+t2e_h$76 = 4528
+t3e_l$77 = 4576
+t3e_h$78 = 4624
+sum04$79 = 4672
+dif04$80 = 4720
+t0e_l$81 = 4768
+t0e_h$82 = 4816
+t1e_l$83 = 4864
+t1e_h$84 = 4912
+x0_l$85 = 4960
+x0_h$86 = 5008
+x3_l$87 = 5056
+x3_h$88 = 5104
+x1_l$89 = 5152
+x1_h$90 = 5200
+x2_l$91 = 5248
+x2_h$92 = 5296
+rot2_0lo$93 = 5344
+rot2_0hi$94 = 5392
+y0o_l$95 = 5440
+y0o_h$96 = 5488
+y2o_l$97 = 5536
+y2o_h$98 = 5584
+rot3_0lo$99 = 5632
+rot3_0hi$100 = 5680
+y1o_l$101 = 5728
+y1o_h$102 = 5776
+y3o_l$103 = 5824
+y3o_h$104 = 5872
+sum17$105 = 5920
+sum35$106 = 5968
+rot1_0lo$107 = 6016
+rot1_0hi$108 = 6064
+y4o_l$109 = 6112
+y4o_h$110 = 6160
+y5o_l$111 = 6208
+y5o_h$112 = 6256
+x4_l$113 = 6304
+x4_h$114 = 6352
+x5_l$115 = 6400
+x5_h$116 = 6448
+x6_l$117 = 6496
+x6_h$118 = 6544
+x7_l$119 = 6592
+x7_h$120 = 6640
+abiased_l$121 = 6688
+abiased_h$122 = 6736
+sum_l$123 = 6784
+sum_h$124 = 6832
+dif_l$125 = 6880
+dif_h$126 = 6928
+abiased_l$127 = 6976
+abiased_h$128 = 7024
+sum_l$129 = 7072
+sum_h$130 = 7120
+dif_l$131 = 7168
+dif_h$132 = 7216
+abiased_l$133 = 7264
+abiased_h$134 = 7312
+sum_l$135 = 7360
+sum_h$136 = 7408
+dif_l$137 = 7456
+dif_h$138 = 7504
+abiased_l$139 = 7552
+abiased_h$140 = 7600
+sum_l$141 = 7648
+sum_h$142 = 7696
+dif_l$143 = 7744
+dif_h$144 = 7792
+p0$145 = 7840
+p1$146 = 7888
+p2$147 = 7936
+p3$148 = 7984
+out$ = 9584
+out_stride$ = 9592
+data$ = 9600
+stbi__idct_simd PROC ; COMDAT
+
+; 2813 : {
+
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 b8 78 25 00 00 mov eax, 9592 ; 00002578H
+ 00015 e8 00 00 00 00 call __chkstk
+ 0001a 48 2b e0 sub rsp, rax
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 2814 : // This is constructed to match our regular (generic) integer IDCT exactly.
+; 2815 : __m128i row0, row1, row2, row3, row4, row5, row6, row7;
+; 2816 : __m128i tmp;
+; 2817 :
+; 2818 : // dot product constant: even elems=x, odd elems=y
+; 2819 : #define dct_const(x, y) _mm_setr_epi16((x), (y), (x), (y), (x), (y), (x), (y))
+; 2820 :
+; 2821 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit)
+; 2822 : // out(1) = c1[even]*x + c1[odd]*y
+; 2823 : #define dct_rot(out0, out1, x, y, c0, c1) \
+; 2824 : __m128i c0##lo = _mm_unpacklo_epi16((x), (y)); \
+; 2825 : __m128i c0##hi = _mm_unpackhi_epi16((x), (y)); \
+; 2826 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \
+; 2827 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \
+; 2828 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \
+; 2829 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1)
+; 2830 :
+; 2831 : // out = in << 12 (in 16-bit, out 32-bit)
+; 2832 : #define dct_widen(out, in) \
+; 2833 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \
+; 2834 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4)
+; 2835 :
+; 2836 : // wide add
+; 2837 : #define dct_wadd(out, a, b) \
+; 2838 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \
+; 2839 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h)
+; 2840 :
+; 2841 : // wide sub
+; 2842 : #define dct_wsub(out, a, b) \
+; 2843 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \
+; 2844 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h)
+; 2845 :
+; 2846 : // butterfly a/b, add bias, then shift by "s" and pack
+; 2847 : #define dct_bfly32o(out0, out1, a, b, bias, s) \
+; 2848 : { \
+; 2849 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \
+; 2850 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \
+; 2851 : dct_wadd(sum, abiased, b); \
+; 2852 : dct_wsub(dif, abiased, b); \
+; 2853 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \
+; 2854 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \
+; 2855 : }
+; 2856 :
+; 2857 : // 8-bit interleave step (for transposes)
+; 2858 : #define dct_interleave8(a, b) \
+; 2859 : tmp = a; \
+; 2860 : a = _mm_unpacklo_epi8(a, b); \
+; 2861 : b = _mm_unpackhi_epi8(tmp, b)
+; 2862 :
+; 2863 : // 16-bit interleave step (for transposes)
+; 2864 : #define dct_interleave16(a, b) \
+; 2865 : tmp = a; \
+; 2866 : a = _mm_unpacklo_epi16(a, b); \
+; 2867 : b = _mm_unpackhi_epi16(tmp, b)
+; 2868 :
+; 2869 : #define dct_pass(bias, shift) \
+; 2870 : { \
+; 2871 : /* even part */ \
+; 2872 : dct_rot(t2e, t3e, row2, row6, rot0_0, rot0_1); \
+; 2873 : __m128i sum04 = _mm_add_epi16(row0, row4); \
+; 2874 : __m128i dif04 = _mm_sub_epi16(row0, row4); \
+; 2875 : dct_widen(t0e, sum04); \
+; 2876 : dct_widen(t1e, dif04); \
+; 2877 : dct_wadd(x0, t0e, t3e); \
+; 2878 : dct_wsub(x3, t0e, t3e); \
+; 2879 : dct_wadd(x1, t1e, t2e); \
+; 2880 : dct_wsub(x2, t1e, t2e); \
+; 2881 : /* odd part */ \
+; 2882 : dct_rot(y0o, y2o, row7, row3, rot2_0, rot2_1); \
+; 2883 : dct_rot(y1o, y3o, row5, row1, rot3_0, rot3_1); \
+; 2884 : __m128i sum17 = _mm_add_epi16(row1, row7); \
+; 2885 : __m128i sum35 = _mm_add_epi16(row3, row5); \
+; 2886 : dct_rot(y4o, y5o, sum17, sum35, rot1_0, rot1_1); \
+; 2887 : dct_wadd(x4, y0o, y4o); \
+; 2888 : dct_wadd(x5, y1o, y5o); \
+; 2889 : dct_wadd(x6, y2o, y5o); \
+; 2890 : dct_wadd(x7, y3o, y4o); \
+; 2891 : dct_bfly32o(row0, row7, x0, x7, bias, shift); \
+; 2892 : dct_bfly32o(row1, row6, x1, x6, bias, shift); \
+; 2893 : dct_bfly32o(row2, row5, x2, x5, bias, shift); \
+; 2894 : dct_bfly32o(row3, row4, x3, x4, bias, shift); \
+; 2895 : }
+; 2896 :
+; 2897 : __m128i rot0_0 =
+
+ 0002f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9
+ 00037 66 0f 7f 85 c0
+ 01 00 00 movdqa XMMWORD PTR rot0_0$[rbp], xmm0
+
+; 2898 : dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f));
+; 2899 : __m128i rot0_1 =
+
+ 0003f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@08a914e808a914e808a914e808a914e8
+ 00047 66 0f 7f 85 f0
+ 01 00 00 movdqa XMMWORD PTR rot0_1$[rbp], xmm0
+
+; 2900 : dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f));
+; 2901 : __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f),
+
+ 0004f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@12d0046b12d0046b12d0046b12d0046b
+ 00057 66 0f 7f 85 20
+ 02 00 00 movdqa XMMWORD PTR rot1_0$[rbp], xmm0
+
+; 2902 : stbi__f2f(1.175875602f));
+; 2903 : __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f),
+
+ 0005f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0
+ 00067 66 0f 7f 85 50
+ 02 00 00 movdqa XMMWORD PTR rot1_1$[rbp], xmm0
+
+; 2904 : stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f));
+; 2905 : __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f),
+
+ 0006f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@e09ee565e09ee565e09ee565e09ee565
+ 00077 66 0f 7f 85 80
+ 02 00 00 movdqa XMMWORD PTR rot2_0$[rbp], xmm0
+
+; 2906 : stbi__f2f(-1.961570560f));
+; 2907 : __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f),
+
+ 0007f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@11c8e09e11c8e09e11c8e09e11c8e09e
+ 00087 66 0f 7f 85 b0
+ 02 00 00 movdqa XMMWORD PTR rot2_1$[rbp], xmm0
+
+; 2908 : stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f));
+; 2909 : __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f),
+
+ 0008f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d
+ 00097 66 0f 7f 85 e0
+ 02 00 00 movdqa XMMWORD PTR rot3_0$[rbp], xmm0
+
+; 2910 : stbi__f2f(-0.390180644f));
+; 2911 : __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f),
+
+ 0009f 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3
+ 000a7 66 0f 7f 85 10
+ 03 00 00 movdqa XMMWORD PTR rot3_1$[rbp], xmm0
+
+; 2912 : stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f));
+; 2913 :
+; 2914 : // rounding biases in column/row passes, see stbi__idct_block for explanation.
+; 2915 : __m128i bias_0 = _mm_set1_epi32(512);
+
+ 000af 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@00000200000002000000020000000200
+ 000b7 66 0f 7f 85 40
+ 03 00 00 movdqa XMMWORD PTR bias_0$[rbp], xmm0
+
+; 2916 : __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17));
+
+ 000bf 66 0f 6f 05 00
+ 00 00 00 movdqa xmm0, XMMWORD PTR __xmm@01010000010100000101000001010000
+ 000c7 66 0f 7f 85 70
+ 03 00 00 movdqa XMMWORD PTR bias_1$[rbp], xmm0
+
+; 2917 :
+; 2918 : // load
+; 2919 : row0 = _mm_load_si128((const __m128i *)(data + 0 * 8));
+
+ 000cf 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 000d6 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 000da 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
+
+; 2920 : row1 = _mm_load_si128((const __m128i *)(data + 1 * 8));
+
+ 000df 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 000e6 48 83 c0 10 add rax, 16
+ 000ea f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 000ee 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
+
+; 2921 : row2 = _mm_load_si128((const __m128i *)(data + 2 * 8));
+
+ 000f3 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 000fa 48 83 c0 20 add rax, 32 ; 00000020H
+ 000fe f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 00102 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
+
+; 2922 : row3 = _mm_load_si128((const __m128i *)(data + 3 * 8));
+
+ 00107 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 0010e 48 83 c0 30 add rax, 48 ; 00000030H
+ 00112 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 00116 66 0f 7f 85 a0
+ 00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
+
+; 2923 : row4 = _mm_load_si128((const __m128i *)(data + 4 * 8));
+
+ 0011e 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 00125 48 83 c0 40 add rax, 64 ; 00000040H
+ 00129 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 0012d 66 0f 7f 85 d0
+ 00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
+
+; 2924 : row5 = _mm_load_si128((const __m128i *)(data + 5 * 8));
+
+ 00135 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 0013c 48 83 c0 50 add rax, 80 ; 00000050H
+ 00140 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 00144 66 0f 7f 85 00
+ 01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
+
+; 2925 : row6 = _mm_load_si128((const __m128i *)(data + 6 * 8));
+
+ 0014c 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 00153 48 83 c0 60 add rax, 96 ; 00000060H
+ 00157 f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 0015b 66 0f 7f 85 30
+ 01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
+
+; 2926 : row7 = _mm_load_si128((const __m128i *)(data + 7 * 8));
+
+ 00163 48 8b 85 80 25
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 0016a 48 83 c0 70 add rax, 112 ; 00000070H
+ 0016e f3 0f 6f 00 movdqu xmm0, XMMWORD PTR [rax]
+ 00172 66 0f 7f 85 60
+ 01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
+
+; 2927 :
+; 2928 : // column pass
+; 2929 : dct_pass(bias_0, 10);
+
+ 0017a 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 0017f 66 0f 61 85 30
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
+ 00187 66 0f 7f 85 a0
+ 03 00 00 movdqa XMMWORD PTR rot0_0lo$1[rbp], xmm0
+ 0018f 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 00194 66 0f 69 85 30
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
+ 0019c 66 0f 7f 85 d0
+ 03 00 00 movdqa XMMWORD PTR rot0_0hi$2[rbp], xmm0
+ 001a4 66 0f 6f 85 a0
+ 03 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$1[rbp]
+ 001ac 66 0f f5 85 c0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
+ 001b4 66 0f 7f 85 00
+ 04 00 00 movdqa XMMWORD PTR t2e_l$3[rbp], xmm0
+ 001bc 66 0f 6f 85 d0
+ 03 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$2[rbp]
+ 001c4 66 0f f5 85 c0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
+ 001cc 66 0f 7f 85 30
+ 04 00 00 movdqa XMMWORD PTR t2e_h$4[rbp], xmm0
+ 001d4 66 0f 6f 85 a0
+ 03 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$1[rbp]
+ 001dc 66 0f f5 85 f0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
+ 001e4 66 0f 7f 85 60
+ 04 00 00 movdqa XMMWORD PTR t3e_l$5[rbp], xmm0
+ 001ec 66 0f 6f 85 d0
+ 03 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$2[rbp]
+ 001f4 66 0f f5 85 f0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
+ 001fc 66 0f 7f 85 90
+ 04 00 00 movdqa XMMWORD PTR t3e_h$6[rbp], xmm0
+ 00204 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00209 66 0f fd 85 d0
+ 00 00 00 paddw xmm0, XMMWORD PTR row4$[rbp]
+ 00211 66 0f 7f 85 c0
+ 04 00 00 movdqa XMMWORD PTR sum04$7[rbp], xmm0
+ 00219 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 0021e 66 0f f9 85 d0
+ 00 00 00 psubw xmm0, XMMWORD PTR row4$[rbp]
+ 00226 66 0f 7f 85 f0
+ 04 00 00 movdqa XMMWORD PTR dif04$8[rbp], xmm0
+ 0022e 66 0f ef c0 pxor xmm0, xmm0
+ 00232 66 0f 61 85 c0
+ 04 00 00 punpcklwd xmm0, XMMWORD PTR sum04$7[rbp]
+ 0023a 66 0f 72 e0 04 psrad xmm0, 4
+ 0023f 66 0f 7f 85 20
+ 05 00 00 movdqa XMMWORD PTR t0e_l$9[rbp], xmm0
+ 00247 66 0f ef c0 pxor xmm0, xmm0
+ 0024b 66 0f 69 85 c0
+ 04 00 00 punpckhwd xmm0, XMMWORD PTR sum04$7[rbp]
+ 00253 66 0f 72 e0 04 psrad xmm0, 4
+ 00258 66 0f 7f 85 50
+ 05 00 00 movdqa XMMWORD PTR t0e_h$10[rbp], xmm0
+ 00260 66 0f ef c0 pxor xmm0, xmm0
+ 00264 66 0f 61 85 f0
+ 04 00 00 punpcklwd xmm0, XMMWORD PTR dif04$8[rbp]
+ 0026c 66 0f 72 e0 04 psrad xmm0, 4
+ 00271 66 0f 7f 85 80
+ 05 00 00 movdqa XMMWORD PTR t1e_l$11[rbp], xmm0
+ 00279 66 0f ef c0 pxor xmm0, xmm0
+ 0027d 66 0f 69 85 f0
+ 04 00 00 punpckhwd xmm0, XMMWORD PTR dif04$8[rbp]
+ 00285 66 0f 72 e0 04 psrad xmm0, 4
+ 0028a 66 0f 7f 85 b0
+ 05 00 00 movdqa XMMWORD PTR t1e_h$12[rbp], xmm0
+ 00292 66 0f 6f 85 20
+ 05 00 00 movdqa xmm0, XMMWORD PTR t0e_l$9[rbp]
+ 0029a 66 0f fe 85 60
+ 04 00 00 paddd xmm0, XMMWORD PTR t3e_l$5[rbp]
+ 002a2 66 0f 7f 85 e0
+ 05 00 00 movdqa XMMWORD PTR x0_l$13[rbp], xmm0
+ 002aa 66 0f 6f 85 50
+ 05 00 00 movdqa xmm0, XMMWORD PTR t0e_h$10[rbp]
+ 002b2 66 0f fe 85 90
+ 04 00 00 paddd xmm0, XMMWORD PTR t3e_h$6[rbp]
+ 002ba 66 0f 7f 85 10
+ 06 00 00 movdqa XMMWORD PTR x0_h$14[rbp], xmm0
+ 002c2 66 0f 6f 85 20
+ 05 00 00 movdqa xmm0, XMMWORD PTR t0e_l$9[rbp]
+ 002ca 66 0f fa 85 60
+ 04 00 00 psubd xmm0, XMMWORD PTR t3e_l$5[rbp]
+ 002d2 66 0f 7f 85 40
+ 06 00 00 movdqa XMMWORD PTR x3_l$15[rbp], xmm0
+ 002da 66 0f 6f 85 50
+ 05 00 00 movdqa xmm0, XMMWORD PTR t0e_h$10[rbp]
+ 002e2 66 0f fa 85 90
+ 04 00 00 psubd xmm0, XMMWORD PTR t3e_h$6[rbp]
+ 002ea 66 0f 7f 85 70
+ 06 00 00 movdqa XMMWORD PTR x3_h$16[rbp], xmm0
+ 002f2 66 0f 6f 85 80
+ 05 00 00 movdqa xmm0, XMMWORD PTR t1e_l$11[rbp]
+ 002fa 66 0f fe 85 00
+ 04 00 00 paddd xmm0, XMMWORD PTR t2e_l$3[rbp]
+ 00302 66 0f 7f 85 a0
+ 06 00 00 movdqa XMMWORD PTR x1_l$17[rbp], xmm0
+ 0030a 66 0f 6f 85 b0
+ 05 00 00 movdqa xmm0, XMMWORD PTR t1e_h$12[rbp]
+ 00312 66 0f fe 85 30
+ 04 00 00 paddd xmm0, XMMWORD PTR t2e_h$4[rbp]
+ 0031a 66 0f 7f 85 d0
+ 06 00 00 movdqa XMMWORD PTR x1_h$18[rbp], xmm0
+ 00322 66 0f 6f 85 80
+ 05 00 00 movdqa xmm0, XMMWORD PTR t1e_l$11[rbp]
+ 0032a 66 0f fa 85 00
+ 04 00 00 psubd xmm0, XMMWORD PTR t2e_l$3[rbp]
+ 00332 66 0f 7f 85 00
+ 07 00 00 movdqa XMMWORD PTR x2_l$19[rbp], xmm0
+ 0033a 66 0f 6f 85 b0
+ 05 00 00 movdqa xmm0, XMMWORD PTR t1e_h$12[rbp]
+ 00342 66 0f fa 85 30
+ 04 00 00 psubd xmm0, XMMWORD PTR t2e_h$4[rbp]
+ 0034a 66 0f 7f 85 30
+ 07 00 00 movdqa XMMWORD PTR x2_h$20[rbp], xmm0
+ 00352 66 0f 6f 85 60
+ 01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
+ 0035a 66 0f 61 85 a0
+ 00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
+ 00362 66 0f 7f 85 60
+ 07 00 00 movdqa XMMWORD PTR rot2_0lo$21[rbp], xmm0
+ 0036a 66 0f 6f 85 60
+ 01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
+ 00372 66 0f 69 85 a0
+ 00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
+ 0037a 66 0f 7f 85 90
+ 07 00 00 movdqa XMMWORD PTR rot2_0hi$22[rbp], xmm0
+ 00382 66 0f 6f 85 60
+ 07 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$21[rbp]
+ 0038a 66 0f f5 85 80
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
+ 00392 66 0f 7f 85 c0
+ 07 00 00 movdqa XMMWORD PTR y0o_l$23[rbp], xmm0
+ 0039a 66 0f 6f 85 90
+ 07 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$22[rbp]
+ 003a2 66 0f f5 85 80
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
+ 003aa 66 0f 7f 85 f0
+ 07 00 00 movdqa XMMWORD PTR y0o_h$24[rbp], xmm0
+ 003b2 66 0f 6f 85 60
+ 07 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$21[rbp]
+ 003ba 66 0f f5 85 b0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
+ 003c2 66 0f 7f 85 20
+ 08 00 00 movdqa XMMWORD PTR y2o_l$25[rbp], xmm0
+ 003ca 66 0f 6f 85 90
+ 07 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$22[rbp]
+ 003d2 66 0f f5 85 b0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
+ 003da 66 0f 7f 85 50
+ 08 00 00 movdqa XMMWORD PTR y2o_h$26[rbp], xmm0
+ 003e2 66 0f 6f 85 00
+ 01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
+ 003ea 66 0f 61 45 40 punpcklwd xmm0, XMMWORD PTR row1$[rbp]
+ 003ef 66 0f 7f 85 80
+ 08 00 00 movdqa XMMWORD PTR rot3_0lo$27[rbp], xmm0
+ 003f7 66 0f 6f 85 00
+ 01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
+ 003ff 66 0f 69 45 40 punpckhwd xmm0, XMMWORD PTR row1$[rbp]
+ 00404 66 0f 7f 85 b0
+ 08 00 00 movdqa XMMWORD PTR rot3_0hi$28[rbp], xmm0
+ 0040c 66 0f 6f 85 80
+ 08 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$27[rbp]
+ 00414 66 0f f5 85 e0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
+ 0041c 66 0f 7f 85 e0
+ 08 00 00 movdqa XMMWORD PTR y1o_l$29[rbp], xmm0
+ 00424 66 0f 6f 85 b0
+ 08 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$28[rbp]
+ 0042c 66 0f f5 85 e0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
+ 00434 66 0f 7f 85 10
+ 09 00 00 movdqa XMMWORD PTR y1o_h$30[rbp], xmm0
+ 0043c 66 0f 6f 85 80
+ 08 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$27[rbp]
+ 00444 66 0f f5 85 10
+ 03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
+ 0044c 66 0f 7f 85 40
+ 09 00 00 movdqa XMMWORD PTR y3o_l$31[rbp], xmm0
+ 00454 66 0f 6f 85 b0
+ 08 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$28[rbp]
+ 0045c 66 0f f5 85 10
+ 03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
+ 00464 66 0f 7f 85 70
+ 09 00 00 movdqa XMMWORD PTR y3o_h$32[rbp], xmm0
+ 0046c 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
+ 00471 66 0f fd 85 60
+ 01 00 00 paddw xmm0, XMMWORD PTR row7$[rbp]
+ 00479 66 0f 7f 85 a0
+ 09 00 00 movdqa XMMWORD PTR sum17$33[rbp], xmm0
+ 00481 66 0f 6f 85 a0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
+ 00489 66 0f fd 85 00
+ 01 00 00 paddw xmm0, XMMWORD PTR row5$[rbp]
+ 00491 66 0f 7f 85 d0
+ 09 00 00 movdqa XMMWORD PTR sum35$34[rbp], xmm0
+ 00499 66 0f 6f 85 a0
+ 09 00 00 movdqa xmm0, XMMWORD PTR sum17$33[rbp]
+ 004a1 66 0f 61 85 d0
+ 09 00 00 punpcklwd xmm0, XMMWORD PTR sum35$34[rbp]
+ 004a9 66 0f 7f 85 00
+ 0a 00 00 movdqa XMMWORD PTR rot1_0lo$35[rbp], xmm0
+ 004b1 66 0f 6f 85 a0
+ 09 00 00 movdqa xmm0, XMMWORD PTR sum17$33[rbp]
+ 004b9 66 0f 69 85 d0
+ 09 00 00 punpckhwd xmm0, XMMWORD PTR sum35$34[rbp]
+ 004c1 66 0f 7f 85 30
+ 0a 00 00 movdqa XMMWORD PTR rot1_0hi$36[rbp], xmm0
+ 004c9 66 0f 6f 85 00
+ 0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$35[rbp]
+ 004d1 66 0f f5 85 20
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
+ 004d9 66 0f 7f 85 60
+ 0a 00 00 movdqa XMMWORD PTR y4o_l$37[rbp], xmm0
+ 004e1 66 0f 6f 85 30
+ 0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$36[rbp]
+ 004e9 66 0f f5 85 20
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
+ 004f1 66 0f 7f 85 90
+ 0a 00 00 movdqa XMMWORD PTR y4o_h$38[rbp], xmm0
+ 004f9 66 0f 6f 85 00
+ 0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$35[rbp]
+ 00501 66 0f f5 85 50
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
+ 00509 66 0f 7f 85 c0
+ 0a 00 00 movdqa XMMWORD PTR y5o_l$39[rbp], xmm0
+ 00511 66 0f 6f 85 30
+ 0a 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$36[rbp]
+ 00519 66 0f f5 85 50
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
+ 00521 66 0f 7f 85 f0
+ 0a 00 00 movdqa XMMWORD PTR y5o_h$40[rbp], xmm0
+ 00529 66 0f 6f 85 c0
+ 07 00 00 movdqa xmm0, XMMWORD PTR y0o_l$23[rbp]
+ 00531 66 0f fe 85 60
+ 0a 00 00 paddd xmm0, XMMWORD PTR y4o_l$37[rbp]
+ 00539 66 0f 7f 85 20
+ 0b 00 00 movdqa XMMWORD PTR x4_l$41[rbp], xmm0
+ 00541 66 0f 6f 85 f0
+ 07 00 00 movdqa xmm0, XMMWORD PTR y0o_h$24[rbp]
+ 00549 66 0f fe 85 90
+ 0a 00 00 paddd xmm0, XMMWORD PTR y4o_h$38[rbp]
+ 00551 66 0f 7f 85 50
+ 0b 00 00 movdqa XMMWORD PTR x4_h$42[rbp], xmm0
+ 00559 66 0f 6f 85 e0
+ 08 00 00 movdqa xmm0, XMMWORD PTR y1o_l$29[rbp]
+ 00561 66 0f fe 85 c0
+ 0a 00 00 paddd xmm0, XMMWORD PTR y5o_l$39[rbp]
+ 00569 66 0f 7f 85 80
+ 0b 00 00 movdqa XMMWORD PTR x5_l$43[rbp], xmm0
+ 00571 66 0f 6f 85 10
+ 09 00 00 movdqa xmm0, XMMWORD PTR y1o_h$30[rbp]
+ 00579 66 0f fe 85 f0
+ 0a 00 00 paddd xmm0, XMMWORD PTR y5o_h$40[rbp]
+ 00581 66 0f 7f 85 b0
+ 0b 00 00 movdqa XMMWORD PTR x5_h$44[rbp], xmm0
+ 00589 66 0f 6f 85 20
+ 08 00 00 movdqa xmm0, XMMWORD PTR y2o_l$25[rbp]
+ 00591 66 0f fe 85 c0
+ 0a 00 00 paddd xmm0, XMMWORD PTR y5o_l$39[rbp]
+ 00599 66 0f 7f 85 e0
+ 0b 00 00 movdqa XMMWORD PTR x6_l$45[rbp], xmm0
+ 005a1 66 0f 6f 85 50
+ 08 00 00 movdqa xmm0, XMMWORD PTR y2o_h$26[rbp]
+ 005a9 66 0f fe 85 f0
+ 0a 00 00 paddd xmm0, XMMWORD PTR y5o_h$40[rbp]
+ 005b1 66 0f 7f 85 10
+ 0c 00 00 movdqa XMMWORD PTR x6_h$46[rbp], xmm0
+ 005b9 66 0f 6f 85 40
+ 09 00 00 movdqa xmm0, XMMWORD PTR y3o_l$31[rbp]
+ 005c1 66 0f fe 85 60
+ 0a 00 00 paddd xmm0, XMMWORD PTR y4o_l$37[rbp]
+ 005c9 66 0f 7f 85 40
+ 0c 00 00 movdqa XMMWORD PTR x7_l$47[rbp], xmm0
+ 005d1 66 0f 6f 85 70
+ 09 00 00 movdqa xmm0, XMMWORD PTR y3o_h$32[rbp]
+ 005d9 66 0f fe 85 90
+ 0a 00 00 paddd xmm0, XMMWORD PTR y4o_h$38[rbp]
+ 005e1 66 0f 7f 85 70
+ 0c 00 00 movdqa XMMWORD PTR x7_h$48[rbp], xmm0
+ 005e9 66 0f 6f 85 e0
+ 05 00 00 movdqa xmm0, XMMWORD PTR x0_l$13[rbp]
+ 005f1 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 005f9 66 0f 7f 85 a0
+ 0c 00 00 movdqa XMMWORD PTR abiased_l$49[rbp], xmm0
+ 00601 66 0f 6f 85 10
+ 06 00 00 movdqa xmm0, XMMWORD PTR x0_h$14[rbp]
+ 00609 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 00611 66 0f 7f 85 d0
+ 0c 00 00 movdqa XMMWORD PTR abiased_h$50[rbp], xmm0
+ 00619 66 0f 6f 85 a0
+ 0c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$49[rbp]
+ 00621 66 0f fe 85 40
+ 0c 00 00 paddd xmm0, XMMWORD PTR x7_l$47[rbp]
+ 00629 66 0f 7f 85 00
+ 0d 00 00 movdqa XMMWORD PTR sum_l$51[rbp], xmm0
+ 00631 66 0f 6f 85 d0
+ 0c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$50[rbp]
+ 00639 66 0f fe 85 70
+ 0c 00 00 paddd xmm0, XMMWORD PTR x7_h$48[rbp]
+ 00641 66 0f 7f 85 30
+ 0d 00 00 movdqa XMMWORD PTR sum_h$52[rbp], xmm0
+ 00649 66 0f 6f 85 a0
+ 0c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$49[rbp]
+ 00651 66 0f fa 85 40
+ 0c 00 00 psubd xmm0, XMMWORD PTR x7_l$47[rbp]
+ 00659 66 0f 7f 85 60
+ 0d 00 00 movdqa XMMWORD PTR dif_l$53[rbp], xmm0
+ 00661 66 0f 6f 85 d0
+ 0c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$50[rbp]
+ 00669 66 0f fa 85 70
+ 0c 00 00 psubd xmm0, XMMWORD PTR x7_h$48[rbp]
+ 00671 66 0f 7f 85 90
+ 0d 00 00 movdqa XMMWORD PTR dif_h$54[rbp], xmm0
+ 00679 66 0f 6f 85 30
+ 0d 00 00 movdqa xmm0, XMMWORD PTR sum_h$52[rbp]
+ 00681 66 0f 72 e0 0a psrad xmm0, 10
+ 00686 66 0f 6f 8d 00
+ 0d 00 00 movdqa xmm1, XMMWORD PTR sum_l$51[rbp]
+ 0068e 66 0f 72 e1 0a psrad xmm1, 10
+ 00693 66 0f 6b c8 packssdw xmm1, xmm0
+ 00697 66 0f 6f c1 movdqa xmm0, xmm1
+ 0069b 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
+ 006a0 66 0f 6f 85 90
+ 0d 00 00 movdqa xmm0, XMMWORD PTR dif_h$54[rbp]
+ 006a8 66 0f 72 e0 0a psrad xmm0, 10
+ 006ad 66 0f 6f 8d 60
+ 0d 00 00 movdqa xmm1, XMMWORD PTR dif_l$53[rbp]
+ 006b5 66 0f 72 e1 0a psrad xmm1, 10
+ 006ba 66 0f 6b c8 packssdw xmm1, xmm0
+ 006be 66 0f 6f c1 movdqa xmm0, xmm1
+ 006c2 66 0f 7f 85 60
+ 01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
+ 006ca 66 0f 6f 85 a0
+ 06 00 00 movdqa xmm0, XMMWORD PTR x1_l$17[rbp]
+ 006d2 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 006da 66 0f 7f 85 c0
+ 0d 00 00 movdqa XMMWORD PTR abiased_l$55[rbp], xmm0
+ 006e2 66 0f 6f 85 d0
+ 06 00 00 movdqa xmm0, XMMWORD PTR x1_h$18[rbp]
+ 006ea 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 006f2 66 0f 7f 85 f0
+ 0d 00 00 movdqa XMMWORD PTR abiased_h$56[rbp], xmm0
+ 006fa 66 0f 6f 85 c0
+ 0d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$55[rbp]
+ 00702 66 0f fe 85 e0
+ 0b 00 00 paddd xmm0, XMMWORD PTR x6_l$45[rbp]
+ 0070a 66 0f 7f 85 20
+ 0e 00 00 movdqa XMMWORD PTR sum_l$57[rbp], xmm0
+ 00712 66 0f 6f 85 f0
+ 0d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$56[rbp]
+ 0071a 66 0f fe 85 10
+ 0c 00 00 paddd xmm0, XMMWORD PTR x6_h$46[rbp]
+ 00722 66 0f 7f 85 50
+ 0e 00 00 movdqa XMMWORD PTR sum_h$58[rbp], xmm0
+ 0072a 66 0f 6f 85 c0
+ 0d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$55[rbp]
+ 00732 66 0f fa 85 e0
+ 0b 00 00 psubd xmm0, XMMWORD PTR x6_l$45[rbp]
+ 0073a 66 0f 7f 85 80
+ 0e 00 00 movdqa XMMWORD PTR dif_l$59[rbp], xmm0
+ 00742 66 0f 6f 85 f0
+ 0d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$56[rbp]
+ 0074a 66 0f fa 85 10
+ 0c 00 00 psubd xmm0, XMMWORD PTR x6_h$46[rbp]
+ 00752 66 0f 7f 85 b0
+ 0e 00 00 movdqa XMMWORD PTR dif_h$60[rbp], xmm0
+ 0075a 66 0f 6f 85 50
+ 0e 00 00 movdqa xmm0, XMMWORD PTR sum_h$58[rbp]
+ 00762 66 0f 72 e0 0a psrad xmm0, 10
+ 00767 66 0f 6f 8d 20
+ 0e 00 00 movdqa xmm1, XMMWORD PTR sum_l$57[rbp]
+ 0076f 66 0f 72 e1 0a psrad xmm1, 10
+ 00774 66 0f 6b c8 packssdw xmm1, xmm0
+ 00778 66 0f 6f c1 movdqa xmm0, xmm1
+ 0077c 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
+ 00781 66 0f 6f 85 b0
+ 0e 00 00 movdqa xmm0, XMMWORD PTR dif_h$60[rbp]
+ 00789 66 0f 72 e0 0a psrad xmm0, 10
+ 0078e 66 0f 6f 8d 80
+ 0e 00 00 movdqa xmm1, XMMWORD PTR dif_l$59[rbp]
+ 00796 66 0f 72 e1 0a psrad xmm1, 10
+ 0079b 66 0f 6b c8 packssdw xmm1, xmm0
+ 0079f 66 0f 6f c1 movdqa xmm0, xmm1
+ 007a3 66 0f 7f 85 30
+ 01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
+ 007ab 66 0f 6f 85 00
+ 07 00 00 movdqa xmm0, XMMWORD PTR x2_l$19[rbp]
+ 007b3 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 007bb 66 0f 7f 85 e0
+ 0e 00 00 movdqa XMMWORD PTR abiased_l$61[rbp], xmm0
+ 007c3 66 0f 6f 85 30
+ 07 00 00 movdqa xmm0, XMMWORD PTR x2_h$20[rbp]
+ 007cb 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 007d3 66 0f 7f 85 10
+ 0f 00 00 movdqa XMMWORD PTR abiased_h$62[rbp], xmm0
+ 007db 66 0f 6f 85 e0
+ 0e 00 00 movdqa xmm0, XMMWORD PTR abiased_l$61[rbp]
+ 007e3 66 0f fe 85 80
+ 0b 00 00 paddd xmm0, XMMWORD PTR x5_l$43[rbp]
+ 007eb 66 0f 7f 85 40
+ 0f 00 00 movdqa XMMWORD PTR sum_l$63[rbp], xmm0
+ 007f3 66 0f 6f 85 10
+ 0f 00 00 movdqa xmm0, XMMWORD PTR abiased_h$62[rbp]
+ 007fb 66 0f fe 85 b0
+ 0b 00 00 paddd xmm0, XMMWORD PTR x5_h$44[rbp]
+ 00803 66 0f 7f 85 70
+ 0f 00 00 movdqa XMMWORD PTR sum_h$64[rbp], xmm0
+ 0080b 66 0f 6f 85 e0
+ 0e 00 00 movdqa xmm0, XMMWORD PTR abiased_l$61[rbp]
+ 00813 66 0f fa 85 80
+ 0b 00 00 psubd xmm0, XMMWORD PTR x5_l$43[rbp]
+ 0081b 66 0f 7f 85 a0
+ 0f 00 00 movdqa XMMWORD PTR dif_l$65[rbp], xmm0
+ 00823 66 0f 6f 85 10
+ 0f 00 00 movdqa xmm0, XMMWORD PTR abiased_h$62[rbp]
+ 0082b 66 0f fa 85 b0
+ 0b 00 00 psubd xmm0, XMMWORD PTR x5_h$44[rbp]
+ 00833 66 0f 7f 85 d0
+ 0f 00 00 movdqa XMMWORD PTR dif_h$66[rbp], xmm0
+ 0083b 66 0f 6f 85 70
+ 0f 00 00 movdqa xmm0, XMMWORD PTR sum_h$64[rbp]
+ 00843 66 0f 72 e0 0a psrad xmm0, 10
+ 00848 66 0f 6f 8d 40
+ 0f 00 00 movdqa xmm1, XMMWORD PTR sum_l$63[rbp]
+ 00850 66 0f 72 e1 0a psrad xmm1, 10
+ 00855 66 0f 6b c8 packssdw xmm1, xmm0
+ 00859 66 0f 6f c1 movdqa xmm0, xmm1
+ 0085d 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
+ 00862 66 0f 6f 85 d0
+ 0f 00 00 movdqa xmm0, XMMWORD PTR dif_h$66[rbp]
+ 0086a 66 0f 72 e0 0a psrad xmm0, 10
+ 0086f 66 0f 6f 8d a0
+ 0f 00 00 movdqa xmm1, XMMWORD PTR dif_l$65[rbp]
+ 00877 66 0f 72 e1 0a psrad xmm1, 10
+ 0087c 66 0f 6b c8 packssdw xmm1, xmm0
+ 00880 66 0f 6f c1 movdqa xmm0, xmm1
+ 00884 66 0f 7f 85 00
+ 01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
+ 0088c 66 0f 6f 85 40
+ 06 00 00 movdqa xmm0, XMMWORD PTR x3_l$15[rbp]
+ 00894 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 0089c 66 0f 7f 85 00
+ 10 00 00 movdqa XMMWORD PTR abiased_l$67[rbp], xmm0
+ 008a4 66 0f 6f 85 70
+ 06 00 00 movdqa xmm0, XMMWORD PTR x3_h$16[rbp]
+ 008ac 66 0f fe 85 40
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_0$[rbp]
+ 008b4 66 0f 7f 85 30
+ 10 00 00 movdqa XMMWORD PTR abiased_h$68[rbp], xmm0
+ 008bc 66 0f 6f 85 00
+ 10 00 00 movdqa xmm0, XMMWORD PTR abiased_l$67[rbp]
+ 008c4 66 0f fe 85 20
+ 0b 00 00 paddd xmm0, XMMWORD PTR x4_l$41[rbp]
+ 008cc 66 0f 7f 85 60
+ 10 00 00 movdqa XMMWORD PTR sum_l$69[rbp], xmm0
+ 008d4 66 0f 6f 85 30
+ 10 00 00 movdqa xmm0, XMMWORD PTR abiased_h$68[rbp]
+ 008dc 66 0f fe 85 50
+ 0b 00 00 paddd xmm0, XMMWORD PTR x4_h$42[rbp]
+ 008e4 66 0f 7f 85 90
+ 10 00 00 movdqa XMMWORD PTR sum_h$70[rbp], xmm0
+ 008ec 66 0f 6f 85 00
+ 10 00 00 movdqa xmm0, XMMWORD PTR abiased_l$67[rbp]
+ 008f4 66 0f fa 85 20
+ 0b 00 00 psubd xmm0, XMMWORD PTR x4_l$41[rbp]
+ 008fc 66 0f 7f 85 c0
+ 10 00 00 movdqa XMMWORD PTR dif_l$71[rbp], xmm0
+ 00904 66 0f 6f 85 30
+ 10 00 00 movdqa xmm0, XMMWORD PTR abiased_h$68[rbp]
+ 0090c 66 0f fa 85 50
+ 0b 00 00 psubd xmm0, XMMWORD PTR x4_h$42[rbp]
+ 00914 66 0f 7f 85 f0
+ 10 00 00 movdqa XMMWORD PTR dif_h$72[rbp], xmm0
+ 0091c 66 0f 6f 85 90
+ 10 00 00 movdqa xmm0, XMMWORD PTR sum_h$70[rbp]
+ 00924 66 0f 72 e0 0a psrad xmm0, 10
+ 00929 66 0f 6f 8d 60
+ 10 00 00 movdqa xmm1, XMMWORD PTR sum_l$69[rbp]
+ 00931 66 0f 72 e1 0a psrad xmm1, 10
+ 00936 66 0f 6b c8 packssdw xmm1, xmm0
+ 0093a 66 0f 6f c1 movdqa xmm0, xmm1
+ 0093e 66 0f 7f 85 a0
+ 00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
+ 00946 66 0f 6f 85 f0
+ 10 00 00 movdqa xmm0, XMMWORD PTR dif_h$72[rbp]
+ 0094e 66 0f 72 e0 0a psrad xmm0, 10
+ 00953 66 0f 6f 8d c0
+ 10 00 00 movdqa xmm1, XMMWORD PTR dif_l$71[rbp]
+ 0095b 66 0f 72 e1 0a psrad xmm1, 10
+ 00960 66 0f 6b c8 packssdw xmm1, xmm0
+ 00964 66 0f 6f c1 movdqa xmm0, xmm1
+ 00968 66 0f 7f 85 d0
+ 00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
+
+; 2930 :
+; 2931 : {
+; 2932 : // 16bit 8x8 transpose pass 1
+; 2933 : dct_interleave16(row0, row4);
+
+ 00970 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00975 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 0097d 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00982 66 0f 61 85 d0
+ 00 00 00 punpcklwd xmm0, XMMWORD PTR row4$[rbp]
+ 0098a 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
+ 0098f 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00997 66 0f 69 85 d0
+ 00 00 00 punpckhwd xmm0, XMMWORD PTR row4$[rbp]
+ 0099f 66 0f 7f 85 d0
+ 00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
+
+; 2934 : dct_interleave16(row1, row5);
+
+ 009a7 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
+ 009ac 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 009b4 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
+ 009b9 66 0f 61 85 00
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row5$[rbp]
+ 009c1 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
+ 009c6 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 009ce 66 0f 69 85 00
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row5$[rbp]
+ 009d6 66 0f 7f 85 00
+ 01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
+
+; 2935 : dct_interleave16(row2, row6);
+
+ 009de 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 009e3 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 009eb 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 009f0 66 0f 61 85 30
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
+ 009f8 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
+ 009fd 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00a05 66 0f 69 85 30
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
+ 00a0d 66 0f 7f 85 30
+ 01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
+
+; 2936 : dct_interleave16(row3, row7);
+
+ 00a15 66 0f 6f 85 a0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
+ 00a1d 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00a25 66 0f 6f 85 a0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
+ 00a2d 66 0f 61 85 60
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row7$[rbp]
+ 00a35 66 0f 7f 85 a0
+ 00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
+ 00a3d 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00a45 66 0f 69 85 60
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row7$[rbp]
+ 00a4d 66 0f 7f 85 60
+ 01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
+
+; 2937 :
+; 2938 : // transpose pass 2
+; 2939 : dct_interleave16(row0, row2);
+
+ 00a55 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00a5a 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00a62 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00a67 66 0f 61 45 70 punpcklwd xmm0, XMMWORD PTR row2$[rbp]
+ 00a6c 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
+ 00a71 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00a79 66 0f 69 45 70 punpckhwd xmm0, XMMWORD PTR row2$[rbp]
+ 00a7e 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
+
+; 2940 : dct_interleave16(row1, row3);
+
+ 00a83 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
+ 00a88 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00a90 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
+ 00a95 66 0f 61 85 a0
+ 00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
+ 00a9d 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
+ 00aa2 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00aaa 66 0f 69 85 a0
+ 00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
+ 00ab2 66 0f 7f 85 a0
+ 00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
+
+; 2941 : dct_interleave16(row4, row6);
+
+ 00aba 66 0f 6f 85 d0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
+ 00ac2 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00aca 66 0f 6f 85 d0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
+ 00ad2 66 0f 61 85 30
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
+ 00ada 66 0f 7f 85 d0
+ 00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
+ 00ae2 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00aea 66 0f 69 85 30
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
+ 00af2 66 0f 7f 85 30
+ 01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
+
+; 2942 : dct_interleave16(row5, row7);
+
+ 00afa 66 0f 6f 85 00
+ 01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
+ 00b02 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00b0a 66 0f 6f 85 00
+ 01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
+ 00b12 66 0f 61 85 60
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row7$[rbp]
+ 00b1a 66 0f 7f 85 00
+ 01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
+ 00b22 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00b2a 66 0f 69 85 60
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row7$[rbp]
+ 00b32 66 0f 7f 85 60
+ 01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
+
+; 2943 :
+; 2944 : // transpose pass 3
+; 2945 : dct_interleave16(row0, row1);
+
+ 00b3a 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00b3f 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00b47 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00b4c 66 0f 61 45 40 punpcklwd xmm0, XMMWORD PTR row1$[rbp]
+ 00b51 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
+ 00b56 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00b5e 66 0f 69 45 40 punpckhwd xmm0, XMMWORD PTR row1$[rbp]
+ 00b63 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
+
+; 2946 : dct_interleave16(row2, row3);
+
+ 00b68 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 00b6d 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00b75 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 00b7a 66 0f 61 85 a0
+ 00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
+ 00b82 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
+ 00b87 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00b8f 66 0f 69 85 a0
+ 00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
+ 00b97 66 0f 7f 85 a0
+ 00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
+
+; 2947 : dct_interleave16(row4, row5);
+
+ 00b9f 66 0f 6f 85 d0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
+ 00ba7 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00baf 66 0f 6f 85 d0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
+ 00bb7 66 0f 61 85 00
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row5$[rbp]
+ 00bbf 66 0f 7f 85 d0
+ 00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
+ 00bc7 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00bcf 66 0f 69 85 00
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row5$[rbp]
+ 00bd7 66 0f 7f 85 00
+ 01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
+
+; 2948 : dct_interleave16(row6, row7);
+
+ 00bdf 66 0f 6f 85 30
+ 01 00 00 movdqa xmm0, XMMWORD PTR row6$[rbp]
+ 00be7 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 00bef 66 0f 6f 85 30
+ 01 00 00 movdqa xmm0, XMMWORD PTR row6$[rbp]
+ 00bf7 66 0f 61 85 60
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row7$[rbp]
+ 00bff 66 0f 7f 85 30
+ 01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
+ 00c07 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 00c0f 66 0f 69 85 60
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row7$[rbp]
+ 00c17 66 0f 7f 85 60
+ 01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
+
+; 2949 : }
+; 2950 :
+; 2951 : // row pass
+; 2952 : dct_pass(bias_1, 17);
+
+ 00c1f 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 00c24 66 0f 61 85 30
+ 01 00 00 punpcklwd xmm0, XMMWORD PTR row6$[rbp]
+ 00c2c 66 0f 7f 85 20
+ 11 00 00 movdqa XMMWORD PTR rot0_0lo$73[rbp], xmm0
+ 00c34 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 00c39 66 0f 69 85 30
+ 01 00 00 punpckhwd xmm0, XMMWORD PTR row6$[rbp]
+ 00c41 66 0f 7f 85 50
+ 11 00 00 movdqa XMMWORD PTR rot0_0hi$74[rbp], xmm0
+ 00c49 66 0f 6f 85 20
+ 11 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$73[rbp]
+ 00c51 66 0f f5 85 c0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
+ 00c59 66 0f 7f 85 80
+ 11 00 00 movdqa XMMWORD PTR t2e_l$75[rbp], xmm0
+ 00c61 66 0f 6f 85 50
+ 11 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$74[rbp]
+ 00c69 66 0f f5 85 c0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_0$[rbp]
+ 00c71 66 0f 7f 85 b0
+ 11 00 00 movdqa XMMWORD PTR t2e_h$76[rbp], xmm0
+ 00c79 66 0f 6f 85 20
+ 11 00 00 movdqa xmm0, XMMWORD PTR rot0_0lo$73[rbp]
+ 00c81 66 0f f5 85 f0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
+ 00c89 66 0f 7f 85 e0
+ 11 00 00 movdqa XMMWORD PTR t3e_l$77[rbp], xmm0
+ 00c91 66 0f 6f 85 50
+ 11 00 00 movdqa xmm0, XMMWORD PTR rot0_0hi$74[rbp]
+ 00c99 66 0f f5 85 f0
+ 01 00 00 pmaddwd xmm0, XMMWORD PTR rot0_1$[rbp]
+ 00ca1 66 0f 7f 85 10
+ 12 00 00 movdqa XMMWORD PTR t3e_h$78[rbp], xmm0
+ 00ca9 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00cae 66 0f fd 85 d0
+ 00 00 00 paddw xmm0, XMMWORD PTR row4$[rbp]
+ 00cb6 66 0f 7f 85 40
+ 12 00 00 movdqa XMMWORD PTR sum04$79[rbp], xmm0
+ 00cbe 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 00cc3 66 0f f9 85 d0
+ 00 00 00 psubw xmm0, XMMWORD PTR row4$[rbp]
+ 00ccb 66 0f 7f 85 70
+ 12 00 00 movdqa XMMWORD PTR dif04$80[rbp], xmm0
+ 00cd3 66 0f ef c0 pxor xmm0, xmm0
+ 00cd7 66 0f 61 85 40
+ 12 00 00 punpcklwd xmm0, XMMWORD PTR sum04$79[rbp]
+ 00cdf 66 0f 72 e0 04 psrad xmm0, 4
+ 00ce4 66 0f 7f 85 a0
+ 12 00 00 movdqa XMMWORD PTR t0e_l$81[rbp], xmm0
+ 00cec 66 0f ef c0 pxor xmm0, xmm0
+ 00cf0 66 0f 69 85 40
+ 12 00 00 punpckhwd xmm0, XMMWORD PTR sum04$79[rbp]
+ 00cf8 66 0f 72 e0 04 psrad xmm0, 4
+ 00cfd 66 0f 7f 85 d0
+ 12 00 00 movdqa XMMWORD PTR t0e_h$82[rbp], xmm0
+ 00d05 66 0f ef c0 pxor xmm0, xmm0
+ 00d09 66 0f 61 85 70
+ 12 00 00 punpcklwd xmm0, XMMWORD PTR dif04$80[rbp]
+ 00d11 66 0f 72 e0 04 psrad xmm0, 4
+ 00d16 66 0f 7f 85 00
+ 13 00 00 movdqa XMMWORD PTR t1e_l$83[rbp], xmm0
+ 00d1e 66 0f ef c0 pxor xmm0, xmm0
+ 00d22 66 0f 69 85 70
+ 12 00 00 punpckhwd xmm0, XMMWORD PTR dif04$80[rbp]
+ 00d2a 66 0f 72 e0 04 psrad xmm0, 4
+ 00d2f 66 0f 7f 85 30
+ 13 00 00 movdqa XMMWORD PTR t1e_h$84[rbp], xmm0
+ 00d37 66 0f 6f 85 a0
+ 12 00 00 movdqa xmm0, XMMWORD PTR t0e_l$81[rbp]
+ 00d3f 66 0f fe 85 e0
+ 11 00 00 paddd xmm0, XMMWORD PTR t3e_l$77[rbp]
+ 00d47 66 0f 7f 85 60
+ 13 00 00 movdqa XMMWORD PTR x0_l$85[rbp], xmm0
+ 00d4f 66 0f 6f 85 d0
+ 12 00 00 movdqa xmm0, XMMWORD PTR t0e_h$82[rbp]
+ 00d57 66 0f fe 85 10
+ 12 00 00 paddd xmm0, XMMWORD PTR t3e_h$78[rbp]
+ 00d5f 66 0f 7f 85 90
+ 13 00 00 movdqa XMMWORD PTR x0_h$86[rbp], xmm0
+ 00d67 66 0f 6f 85 a0
+ 12 00 00 movdqa xmm0, XMMWORD PTR t0e_l$81[rbp]
+ 00d6f 66 0f fa 85 e0
+ 11 00 00 psubd xmm0, XMMWORD PTR t3e_l$77[rbp]
+ 00d77 66 0f 7f 85 c0
+ 13 00 00 movdqa XMMWORD PTR x3_l$87[rbp], xmm0
+ 00d7f 66 0f 6f 85 d0
+ 12 00 00 movdqa xmm0, XMMWORD PTR t0e_h$82[rbp]
+ 00d87 66 0f fa 85 10
+ 12 00 00 psubd xmm0, XMMWORD PTR t3e_h$78[rbp]
+ 00d8f 66 0f 7f 85 f0
+ 13 00 00 movdqa XMMWORD PTR x3_h$88[rbp], xmm0
+ 00d97 66 0f 6f 85 00
+ 13 00 00 movdqa xmm0, XMMWORD PTR t1e_l$83[rbp]
+ 00d9f 66 0f fe 85 80
+ 11 00 00 paddd xmm0, XMMWORD PTR t2e_l$75[rbp]
+ 00da7 66 0f 7f 85 20
+ 14 00 00 movdqa XMMWORD PTR x1_l$89[rbp], xmm0
+ 00daf 66 0f 6f 85 30
+ 13 00 00 movdqa xmm0, XMMWORD PTR t1e_h$84[rbp]
+ 00db7 66 0f fe 85 b0
+ 11 00 00 paddd xmm0, XMMWORD PTR t2e_h$76[rbp]
+ 00dbf 66 0f 7f 85 50
+ 14 00 00 movdqa XMMWORD PTR x1_h$90[rbp], xmm0
+ 00dc7 66 0f 6f 85 00
+ 13 00 00 movdqa xmm0, XMMWORD PTR t1e_l$83[rbp]
+ 00dcf 66 0f fa 85 80
+ 11 00 00 psubd xmm0, XMMWORD PTR t2e_l$75[rbp]
+ 00dd7 66 0f 7f 85 80
+ 14 00 00 movdqa XMMWORD PTR x2_l$91[rbp], xmm0
+ 00ddf 66 0f 6f 85 30
+ 13 00 00 movdqa xmm0, XMMWORD PTR t1e_h$84[rbp]
+ 00de7 66 0f fa 85 b0
+ 11 00 00 psubd xmm0, XMMWORD PTR t2e_h$76[rbp]
+ 00def 66 0f 7f 85 b0
+ 14 00 00 movdqa XMMWORD PTR x2_h$92[rbp], xmm0
+ 00df7 66 0f 6f 85 60
+ 01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
+ 00dff 66 0f 61 85 a0
+ 00 00 00 punpcklwd xmm0, XMMWORD PTR row3$[rbp]
+ 00e07 66 0f 7f 85 e0
+ 14 00 00 movdqa XMMWORD PTR rot2_0lo$93[rbp], xmm0
+ 00e0f 66 0f 6f 85 60
+ 01 00 00 movdqa xmm0, XMMWORD PTR row7$[rbp]
+ 00e17 66 0f 69 85 a0
+ 00 00 00 punpckhwd xmm0, XMMWORD PTR row3$[rbp]
+ 00e1f 66 0f 7f 85 10
+ 15 00 00 movdqa XMMWORD PTR rot2_0hi$94[rbp], xmm0
+ 00e27 66 0f 6f 85 e0
+ 14 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$93[rbp]
+ 00e2f 66 0f f5 85 80
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
+ 00e37 66 0f 7f 85 40
+ 15 00 00 movdqa XMMWORD PTR y0o_l$95[rbp], xmm0
+ 00e3f 66 0f 6f 85 10
+ 15 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$94[rbp]
+ 00e47 66 0f f5 85 80
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_0$[rbp]
+ 00e4f 66 0f 7f 85 70
+ 15 00 00 movdqa XMMWORD PTR y0o_h$96[rbp], xmm0
+ 00e57 66 0f 6f 85 e0
+ 14 00 00 movdqa xmm0, XMMWORD PTR rot2_0lo$93[rbp]
+ 00e5f 66 0f f5 85 b0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
+ 00e67 66 0f 7f 85 a0
+ 15 00 00 movdqa XMMWORD PTR y2o_l$97[rbp], xmm0
+ 00e6f 66 0f 6f 85 10
+ 15 00 00 movdqa xmm0, XMMWORD PTR rot2_0hi$94[rbp]
+ 00e77 66 0f f5 85 b0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot2_1$[rbp]
+ 00e7f 66 0f 7f 85 d0
+ 15 00 00 movdqa XMMWORD PTR y2o_h$98[rbp], xmm0
+ 00e87 66 0f 6f 85 00
+ 01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
+ 00e8f 66 0f 61 45 40 punpcklwd xmm0, XMMWORD PTR row1$[rbp]
+ 00e94 66 0f 7f 85 00
+ 16 00 00 movdqa XMMWORD PTR rot3_0lo$99[rbp], xmm0
+ 00e9c 66 0f 6f 85 00
+ 01 00 00 movdqa xmm0, XMMWORD PTR row5$[rbp]
+ 00ea4 66 0f 69 45 40 punpckhwd xmm0, XMMWORD PTR row1$[rbp]
+ 00ea9 66 0f 7f 85 30
+ 16 00 00 movdqa XMMWORD PTR rot3_0hi$100[rbp], xmm0
+ 00eb1 66 0f 6f 85 00
+ 16 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$99[rbp]
+ 00eb9 66 0f f5 85 e0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
+ 00ec1 66 0f 7f 85 60
+ 16 00 00 movdqa XMMWORD PTR y1o_l$101[rbp], xmm0
+ 00ec9 66 0f 6f 85 30
+ 16 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$100[rbp]
+ 00ed1 66 0f f5 85 e0
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot3_0$[rbp]
+ 00ed9 66 0f 7f 85 90
+ 16 00 00 movdqa XMMWORD PTR y1o_h$102[rbp], xmm0
+ 00ee1 66 0f 6f 85 00
+ 16 00 00 movdqa xmm0, XMMWORD PTR rot3_0lo$99[rbp]
+ 00ee9 66 0f f5 85 10
+ 03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
+ 00ef1 66 0f 7f 85 c0
+ 16 00 00 movdqa XMMWORD PTR y3o_l$103[rbp], xmm0
+ 00ef9 66 0f 6f 85 30
+ 16 00 00 movdqa xmm0, XMMWORD PTR rot3_0hi$100[rbp]
+ 00f01 66 0f f5 85 10
+ 03 00 00 pmaddwd xmm0, XMMWORD PTR rot3_1$[rbp]
+ 00f09 66 0f 7f 85 f0
+ 16 00 00 movdqa XMMWORD PTR y3o_h$104[rbp], xmm0
+ 00f11 66 0f 6f 45 40 movdqa xmm0, XMMWORD PTR row1$[rbp]
+ 00f16 66 0f fd 85 60
+ 01 00 00 paddw xmm0, XMMWORD PTR row7$[rbp]
+ 00f1e 66 0f 7f 85 20
+ 17 00 00 movdqa XMMWORD PTR sum17$105[rbp], xmm0
+ 00f26 66 0f 6f 85 a0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row3$[rbp]
+ 00f2e 66 0f fd 85 00
+ 01 00 00 paddw xmm0, XMMWORD PTR row5$[rbp]
+ 00f36 66 0f 7f 85 50
+ 17 00 00 movdqa XMMWORD PTR sum35$106[rbp], xmm0
+ 00f3e 66 0f 6f 85 20
+ 17 00 00 movdqa xmm0, XMMWORD PTR sum17$105[rbp]
+ 00f46 66 0f 61 85 50
+ 17 00 00 punpcklwd xmm0, XMMWORD PTR sum35$106[rbp]
+ 00f4e 66 0f 7f 85 80
+ 17 00 00 movdqa XMMWORD PTR rot1_0lo$107[rbp], xmm0
+ 00f56 66 0f 6f 85 20
+ 17 00 00 movdqa xmm0, XMMWORD PTR sum17$105[rbp]
+ 00f5e 66 0f 69 85 50
+ 17 00 00 punpckhwd xmm0, XMMWORD PTR sum35$106[rbp]
+ 00f66 66 0f 7f 85 b0
+ 17 00 00 movdqa XMMWORD PTR rot1_0hi$108[rbp], xmm0
+ 00f6e 66 0f 6f 85 80
+ 17 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$107[rbp]
+ 00f76 66 0f f5 85 20
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
+ 00f7e 66 0f 7f 85 e0
+ 17 00 00 movdqa XMMWORD PTR y4o_l$109[rbp], xmm0
+ 00f86 66 0f 6f 85 b0
+ 17 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$108[rbp]
+ 00f8e 66 0f f5 85 20
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_0$[rbp]
+ 00f96 66 0f 7f 85 10
+ 18 00 00 movdqa XMMWORD PTR y4o_h$110[rbp], xmm0
+ 00f9e 66 0f 6f 85 80
+ 17 00 00 movdqa xmm0, XMMWORD PTR rot1_0lo$107[rbp]
+ 00fa6 66 0f f5 85 50
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
+ 00fae 66 0f 7f 85 40
+ 18 00 00 movdqa XMMWORD PTR y5o_l$111[rbp], xmm0
+ 00fb6 66 0f 6f 85 b0
+ 17 00 00 movdqa xmm0, XMMWORD PTR rot1_0hi$108[rbp]
+ 00fbe 66 0f f5 85 50
+ 02 00 00 pmaddwd xmm0, XMMWORD PTR rot1_1$[rbp]
+ 00fc6 66 0f 7f 85 70
+ 18 00 00 movdqa XMMWORD PTR y5o_h$112[rbp], xmm0
+ 00fce 66 0f 6f 85 40
+ 15 00 00 movdqa xmm0, XMMWORD PTR y0o_l$95[rbp]
+ 00fd6 66 0f fe 85 e0
+ 17 00 00 paddd xmm0, XMMWORD PTR y4o_l$109[rbp]
+ 00fde 66 0f 7f 85 a0
+ 18 00 00 movdqa XMMWORD PTR x4_l$113[rbp], xmm0
+ 00fe6 66 0f 6f 85 70
+ 15 00 00 movdqa xmm0, XMMWORD PTR y0o_h$96[rbp]
+ 00fee 66 0f fe 85 10
+ 18 00 00 paddd xmm0, XMMWORD PTR y4o_h$110[rbp]
+ 00ff6 66 0f 7f 85 d0
+ 18 00 00 movdqa XMMWORD PTR x4_h$114[rbp], xmm0
+ 00ffe 66 0f 6f 85 60
+ 16 00 00 movdqa xmm0, XMMWORD PTR y1o_l$101[rbp]
+ 01006 66 0f fe 85 40
+ 18 00 00 paddd xmm0, XMMWORD PTR y5o_l$111[rbp]
+ 0100e 66 0f 7f 85 00
+ 19 00 00 movdqa XMMWORD PTR x5_l$115[rbp], xmm0
+ 01016 66 0f 6f 85 90
+ 16 00 00 movdqa xmm0, XMMWORD PTR y1o_h$102[rbp]
+ 0101e 66 0f fe 85 70
+ 18 00 00 paddd xmm0, XMMWORD PTR y5o_h$112[rbp]
+ 01026 66 0f 7f 85 30
+ 19 00 00 movdqa XMMWORD PTR x5_h$116[rbp], xmm0
+ 0102e 66 0f 6f 85 a0
+ 15 00 00 movdqa xmm0, XMMWORD PTR y2o_l$97[rbp]
+ 01036 66 0f fe 85 40
+ 18 00 00 paddd xmm0, XMMWORD PTR y5o_l$111[rbp]
+ 0103e 66 0f 7f 85 60
+ 19 00 00 movdqa XMMWORD PTR x6_l$117[rbp], xmm0
+ 01046 66 0f 6f 85 d0
+ 15 00 00 movdqa xmm0, XMMWORD PTR y2o_h$98[rbp]
+ 0104e 66 0f fe 85 70
+ 18 00 00 paddd xmm0, XMMWORD PTR y5o_h$112[rbp]
+ 01056 66 0f 7f 85 90
+ 19 00 00 movdqa XMMWORD PTR x6_h$118[rbp], xmm0
+ 0105e 66 0f 6f 85 c0
+ 16 00 00 movdqa xmm0, XMMWORD PTR y3o_l$103[rbp]
+ 01066 66 0f fe 85 e0
+ 17 00 00 paddd xmm0, XMMWORD PTR y4o_l$109[rbp]
+ 0106e 66 0f 7f 85 c0
+ 19 00 00 movdqa XMMWORD PTR x7_l$119[rbp], xmm0
+ 01076 66 0f 6f 85 f0
+ 16 00 00 movdqa xmm0, XMMWORD PTR y3o_h$104[rbp]
+ 0107e 66 0f fe 85 10
+ 18 00 00 paddd xmm0, XMMWORD PTR y4o_h$110[rbp]
+ 01086 66 0f 7f 85 f0
+ 19 00 00 movdqa XMMWORD PTR x7_h$120[rbp], xmm0
+ 0108e 66 0f 6f 85 60
+ 13 00 00 movdqa xmm0, XMMWORD PTR x0_l$85[rbp]
+ 01096 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 0109e 66 0f 7f 85 20
+ 1a 00 00 movdqa XMMWORD PTR abiased_l$121[rbp], xmm0
+ 010a6 66 0f 6f 85 90
+ 13 00 00 movdqa xmm0, XMMWORD PTR x0_h$86[rbp]
+ 010ae 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 010b6 66 0f 7f 85 50
+ 1a 00 00 movdqa XMMWORD PTR abiased_h$122[rbp], xmm0
+ 010be 66 0f 6f 85 20
+ 1a 00 00 movdqa xmm0, XMMWORD PTR abiased_l$121[rbp]
+ 010c6 66 0f fe 85 c0
+ 19 00 00 paddd xmm0, XMMWORD PTR x7_l$119[rbp]
+ 010ce 66 0f 7f 85 80
+ 1a 00 00 movdqa XMMWORD PTR sum_l$123[rbp], xmm0
+ 010d6 66 0f 6f 85 50
+ 1a 00 00 movdqa xmm0, XMMWORD PTR abiased_h$122[rbp]
+ 010de 66 0f fe 85 f0
+ 19 00 00 paddd xmm0, XMMWORD PTR x7_h$120[rbp]
+ 010e6 66 0f 7f 85 b0
+ 1a 00 00 movdqa XMMWORD PTR sum_h$124[rbp], xmm0
+ 010ee 66 0f 6f 85 20
+ 1a 00 00 movdqa xmm0, XMMWORD PTR abiased_l$121[rbp]
+ 010f6 66 0f fa 85 c0
+ 19 00 00 psubd xmm0, XMMWORD PTR x7_l$119[rbp]
+ 010fe 66 0f 7f 85 e0
+ 1a 00 00 movdqa XMMWORD PTR dif_l$125[rbp], xmm0
+ 01106 66 0f 6f 85 50
+ 1a 00 00 movdqa xmm0, XMMWORD PTR abiased_h$122[rbp]
+ 0110e 66 0f fa 85 f0
+ 19 00 00 psubd xmm0, XMMWORD PTR x7_h$120[rbp]
+ 01116 66 0f 7f 85 10
+ 1b 00 00 movdqa XMMWORD PTR dif_h$126[rbp], xmm0
+ 0111e 66 0f 6f 85 b0
+ 1a 00 00 movdqa xmm0, XMMWORD PTR sum_h$124[rbp]
+ 01126 66 0f 72 e0 11 psrad xmm0, 17
+ 0112b 66 0f 6f 8d 80
+ 1a 00 00 movdqa xmm1, XMMWORD PTR sum_l$123[rbp]
+ 01133 66 0f 72 e1 11 psrad xmm1, 17
+ 01138 66 0f 6b c8 packssdw xmm1, xmm0
+ 0113c 66 0f 6f c1 movdqa xmm0, xmm1
+ 01140 66 0f 7f 45 10 movdqa XMMWORD PTR row0$[rbp], xmm0
+ 01145 66 0f 6f 85 10
+ 1b 00 00 movdqa xmm0, XMMWORD PTR dif_h$126[rbp]
+ 0114d 66 0f 72 e0 11 psrad xmm0, 17
+ 01152 66 0f 6f 8d e0
+ 1a 00 00 movdqa xmm1, XMMWORD PTR dif_l$125[rbp]
+ 0115a 66 0f 72 e1 11 psrad xmm1, 17
+ 0115f 66 0f 6b c8 packssdw xmm1, xmm0
+ 01163 66 0f 6f c1 movdqa xmm0, xmm1
+ 01167 66 0f 7f 85 60
+ 01 00 00 movdqa XMMWORD PTR row7$[rbp], xmm0
+ 0116f 66 0f 6f 85 20
+ 14 00 00 movdqa xmm0, XMMWORD PTR x1_l$89[rbp]
+ 01177 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 0117f 66 0f 7f 85 40
+ 1b 00 00 movdqa XMMWORD PTR abiased_l$127[rbp], xmm0
+ 01187 66 0f 6f 85 50
+ 14 00 00 movdqa xmm0, XMMWORD PTR x1_h$90[rbp]
+ 0118f 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 01197 66 0f 7f 85 70
+ 1b 00 00 movdqa XMMWORD PTR abiased_h$128[rbp], xmm0
+ 0119f 66 0f 6f 85 40
+ 1b 00 00 movdqa xmm0, XMMWORD PTR abiased_l$127[rbp]
+ 011a7 66 0f fe 85 60
+ 19 00 00 paddd xmm0, XMMWORD PTR x6_l$117[rbp]
+ 011af 66 0f 7f 85 a0
+ 1b 00 00 movdqa XMMWORD PTR sum_l$129[rbp], xmm0
+ 011b7 66 0f 6f 85 70
+ 1b 00 00 movdqa xmm0, XMMWORD PTR abiased_h$128[rbp]
+ 011bf 66 0f fe 85 90
+ 19 00 00 paddd xmm0, XMMWORD PTR x6_h$118[rbp]
+ 011c7 66 0f 7f 85 d0
+ 1b 00 00 movdqa XMMWORD PTR sum_h$130[rbp], xmm0
+ 011cf 66 0f 6f 85 40
+ 1b 00 00 movdqa xmm0, XMMWORD PTR abiased_l$127[rbp]
+ 011d7 66 0f fa 85 60
+ 19 00 00 psubd xmm0, XMMWORD PTR x6_l$117[rbp]
+ 011df 66 0f 7f 85 00
+ 1c 00 00 movdqa XMMWORD PTR dif_l$131[rbp], xmm0
+ 011e7 66 0f 6f 85 70
+ 1b 00 00 movdqa xmm0, XMMWORD PTR abiased_h$128[rbp]
+ 011ef 66 0f fa 85 90
+ 19 00 00 psubd xmm0, XMMWORD PTR x6_h$118[rbp]
+ 011f7 66 0f 7f 85 30
+ 1c 00 00 movdqa XMMWORD PTR dif_h$132[rbp], xmm0
+ 011ff 66 0f 6f 85 d0
+ 1b 00 00 movdqa xmm0, XMMWORD PTR sum_h$130[rbp]
+ 01207 66 0f 72 e0 11 psrad xmm0, 17
+ 0120c 66 0f 6f 8d a0
+ 1b 00 00 movdqa xmm1, XMMWORD PTR sum_l$129[rbp]
+ 01214 66 0f 72 e1 11 psrad xmm1, 17
+ 01219 66 0f 6b c8 packssdw xmm1, xmm0
+ 0121d 66 0f 6f c1 movdqa xmm0, xmm1
+ 01221 66 0f 7f 45 40 movdqa XMMWORD PTR row1$[rbp], xmm0
+ 01226 66 0f 6f 85 30
+ 1c 00 00 movdqa xmm0, XMMWORD PTR dif_h$132[rbp]
+ 0122e 66 0f 72 e0 11 psrad xmm0, 17
+ 01233 66 0f 6f 8d 00
+ 1c 00 00 movdqa xmm1, XMMWORD PTR dif_l$131[rbp]
+ 0123b 66 0f 72 e1 11 psrad xmm1, 17
+ 01240 66 0f 6b c8 packssdw xmm1, xmm0
+ 01244 66 0f 6f c1 movdqa xmm0, xmm1
+ 01248 66 0f 7f 85 30
+ 01 00 00 movdqa XMMWORD PTR row6$[rbp], xmm0
+ 01250 66 0f 6f 85 80
+ 14 00 00 movdqa xmm0, XMMWORD PTR x2_l$91[rbp]
+ 01258 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 01260 66 0f 7f 85 60
+ 1c 00 00 movdqa XMMWORD PTR abiased_l$133[rbp], xmm0
+ 01268 66 0f 6f 85 b0
+ 14 00 00 movdqa xmm0, XMMWORD PTR x2_h$92[rbp]
+ 01270 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 01278 66 0f 7f 85 90
+ 1c 00 00 movdqa XMMWORD PTR abiased_h$134[rbp], xmm0
+ 01280 66 0f 6f 85 60
+ 1c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$133[rbp]
+ 01288 66 0f fe 85 00
+ 19 00 00 paddd xmm0, XMMWORD PTR x5_l$115[rbp]
+ 01290 66 0f 7f 85 c0
+ 1c 00 00 movdqa XMMWORD PTR sum_l$135[rbp], xmm0
+ 01298 66 0f 6f 85 90
+ 1c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$134[rbp]
+ 012a0 66 0f fe 85 30
+ 19 00 00 paddd xmm0, XMMWORD PTR x5_h$116[rbp]
+ 012a8 66 0f 7f 85 f0
+ 1c 00 00 movdqa XMMWORD PTR sum_h$136[rbp], xmm0
+ 012b0 66 0f 6f 85 60
+ 1c 00 00 movdqa xmm0, XMMWORD PTR abiased_l$133[rbp]
+ 012b8 66 0f fa 85 00
+ 19 00 00 psubd xmm0, XMMWORD PTR x5_l$115[rbp]
+ 012c0 66 0f 7f 85 20
+ 1d 00 00 movdqa XMMWORD PTR dif_l$137[rbp], xmm0
+ 012c8 66 0f 6f 85 90
+ 1c 00 00 movdqa xmm0, XMMWORD PTR abiased_h$134[rbp]
+ 012d0 66 0f fa 85 30
+ 19 00 00 psubd xmm0, XMMWORD PTR x5_h$116[rbp]
+ 012d8 66 0f 7f 85 50
+ 1d 00 00 movdqa XMMWORD PTR dif_h$138[rbp], xmm0
+ 012e0 66 0f 6f 85 f0
+ 1c 00 00 movdqa xmm0, XMMWORD PTR sum_h$136[rbp]
+ 012e8 66 0f 72 e0 11 psrad xmm0, 17
+ 012ed 66 0f 6f 8d c0
+ 1c 00 00 movdqa xmm1, XMMWORD PTR sum_l$135[rbp]
+ 012f5 66 0f 72 e1 11 psrad xmm1, 17
+ 012fa 66 0f 6b c8 packssdw xmm1, xmm0
+ 012fe 66 0f 6f c1 movdqa xmm0, xmm1
+ 01302 66 0f 7f 45 70 movdqa XMMWORD PTR row2$[rbp], xmm0
+ 01307 66 0f 6f 85 50
+ 1d 00 00 movdqa xmm0, XMMWORD PTR dif_h$138[rbp]
+ 0130f 66 0f 72 e0 11 psrad xmm0, 17
+ 01314 66 0f 6f 8d 20
+ 1d 00 00 movdqa xmm1, XMMWORD PTR dif_l$137[rbp]
+ 0131c 66 0f 72 e1 11 psrad xmm1, 17
+ 01321 66 0f 6b c8 packssdw xmm1, xmm0
+ 01325 66 0f 6f c1 movdqa xmm0, xmm1
+ 01329 66 0f 7f 85 00
+ 01 00 00 movdqa XMMWORD PTR row5$[rbp], xmm0
+ 01331 66 0f 6f 85 c0
+ 13 00 00 movdqa xmm0, XMMWORD PTR x3_l$87[rbp]
+ 01339 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 01341 66 0f 7f 85 80
+ 1d 00 00 movdqa XMMWORD PTR abiased_l$139[rbp], xmm0
+ 01349 66 0f 6f 85 f0
+ 13 00 00 movdqa xmm0, XMMWORD PTR x3_h$88[rbp]
+ 01351 66 0f fe 85 70
+ 03 00 00 paddd xmm0, XMMWORD PTR bias_1$[rbp]
+ 01359 66 0f 7f 85 b0
+ 1d 00 00 movdqa XMMWORD PTR abiased_h$140[rbp], xmm0
+ 01361 66 0f 6f 85 80
+ 1d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$139[rbp]
+ 01369 66 0f fe 85 a0
+ 18 00 00 paddd xmm0, XMMWORD PTR x4_l$113[rbp]
+ 01371 66 0f 7f 85 e0
+ 1d 00 00 movdqa XMMWORD PTR sum_l$141[rbp], xmm0
+ 01379 66 0f 6f 85 b0
+ 1d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$140[rbp]
+ 01381 66 0f fe 85 d0
+ 18 00 00 paddd xmm0, XMMWORD PTR x4_h$114[rbp]
+ 01389 66 0f 7f 85 10
+ 1e 00 00 movdqa XMMWORD PTR sum_h$142[rbp], xmm0
+ 01391 66 0f 6f 85 80
+ 1d 00 00 movdqa xmm0, XMMWORD PTR abiased_l$139[rbp]
+ 01399 66 0f fa 85 a0
+ 18 00 00 psubd xmm0, XMMWORD PTR x4_l$113[rbp]
+ 013a1 66 0f 7f 85 40
+ 1e 00 00 movdqa XMMWORD PTR dif_l$143[rbp], xmm0
+ 013a9 66 0f 6f 85 b0
+ 1d 00 00 movdqa xmm0, XMMWORD PTR abiased_h$140[rbp]
+ 013b1 66 0f fa 85 d0
+ 18 00 00 psubd xmm0, XMMWORD PTR x4_h$114[rbp]
+ 013b9 66 0f 7f 85 70
+ 1e 00 00 movdqa XMMWORD PTR dif_h$144[rbp], xmm0
+ 013c1 66 0f 6f 85 10
+ 1e 00 00 movdqa xmm0, XMMWORD PTR sum_h$142[rbp]
+ 013c9 66 0f 72 e0 11 psrad xmm0, 17
+ 013ce 66 0f 6f 8d e0
+ 1d 00 00 movdqa xmm1, XMMWORD PTR sum_l$141[rbp]
+ 013d6 66 0f 72 e1 11 psrad xmm1, 17
+ 013db 66 0f 6b c8 packssdw xmm1, xmm0
+ 013df 66 0f 6f c1 movdqa xmm0, xmm1
+ 013e3 66 0f 7f 85 a0
+ 00 00 00 movdqa XMMWORD PTR row3$[rbp], xmm0
+ 013eb 66 0f 6f 85 70
+ 1e 00 00 movdqa xmm0, XMMWORD PTR dif_h$144[rbp]
+ 013f3 66 0f 72 e0 11 psrad xmm0, 17
+ 013f8 66 0f 6f 8d 40
+ 1e 00 00 movdqa xmm1, XMMWORD PTR dif_l$143[rbp]
+ 01400 66 0f 72 e1 11 psrad xmm1, 17
+ 01405 66 0f 6b c8 packssdw xmm1, xmm0
+ 01409 66 0f 6f c1 movdqa xmm0, xmm1
+ 0140d 66 0f 7f 85 d0
+ 00 00 00 movdqa XMMWORD PTR row4$[rbp], xmm0
+
+; 2953 :
+; 2954 : {
+; 2955 : // pack
+; 2956 : __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7
+
+ 01415 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR row0$[rbp]
+ 0141a 66 0f 67 45 40 packuswb xmm0, XMMWORD PTR row1$[rbp]
+ 0141f 66 0f 7f 85 a0
+ 1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
+
+; 2957 : __m128i p1 = _mm_packus_epi16(row2, row3);
+
+ 01427 66 0f 6f 45 70 movdqa xmm0, XMMWORD PTR row2$[rbp]
+ 0142c 66 0f 67 85 a0
+ 00 00 00 packuswb xmm0, XMMWORD PTR row3$[rbp]
+ 01434 66 0f 7f 85 d0
+ 1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
+
+; 2958 : __m128i p2 = _mm_packus_epi16(row4, row5);
+
+ 0143c 66 0f 6f 85 d0
+ 00 00 00 movdqa xmm0, XMMWORD PTR row4$[rbp]
+ 01444 66 0f 67 85 00
+ 01 00 00 packuswb xmm0, XMMWORD PTR row5$[rbp]
+ 0144c 66 0f 7f 85 00
+ 1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
+
+; 2959 : __m128i p3 = _mm_packus_epi16(row6, row7);
+
+ 01454 66 0f 6f 85 30
+ 01 00 00 movdqa xmm0, XMMWORD PTR row6$[rbp]
+ 0145c 66 0f 67 85 60
+ 01 00 00 packuswb xmm0, XMMWORD PTR row7$[rbp]
+ 01464 66 0f 7f 85 30
+ 1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
+
+; 2960 :
+; 2961 : // 8bit 8x8 transpose pass 1
+; 2962 : dct_interleave8(p0, p2); // a0e0a1e1...
+
+ 0146c 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 01474 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 0147c 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 01484 66 0f 60 85 00
+ 1f 00 00 punpcklbw xmm0, XMMWORD PTR p2$147[rbp]
+ 0148c 66 0f 7f 85 a0
+ 1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
+ 01494 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 0149c 66 0f 68 85 00
+ 1f 00 00 punpckhbw xmm0, XMMWORD PTR p2$147[rbp]
+ 014a4 66 0f 7f 85 00
+ 1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
+
+; 2963 : dct_interleave8(p1, p3); // c0g0c1g1...
+
+ 014ac 66 0f 6f 85 d0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
+ 014b4 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 014bc 66 0f 6f 85 d0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
+ 014c4 66 0f 60 85 30
+ 1f 00 00 punpcklbw xmm0, XMMWORD PTR p3$148[rbp]
+ 014cc 66 0f 7f 85 d0
+ 1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
+ 014d4 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 014dc 66 0f 68 85 30
+ 1f 00 00 punpckhbw xmm0, XMMWORD PTR p3$148[rbp]
+ 014e4 66 0f 7f 85 30
+ 1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
+
+; 2964 :
+; 2965 : // transpose pass 2
+; 2966 : dct_interleave8(p0, p1); // a0c0e0g0...
+
+ 014ec 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 014f4 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 014fc 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 01504 66 0f 60 85 d0
+ 1e 00 00 punpcklbw xmm0, XMMWORD PTR p1$146[rbp]
+ 0150c 66 0f 7f 85 a0
+ 1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
+ 01514 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 0151c 66 0f 68 85 d0
+ 1e 00 00 punpckhbw xmm0, XMMWORD PTR p1$146[rbp]
+ 01524 66 0f 7f 85 d0
+ 1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
+
+; 2967 : dct_interleave8(p2, p3); // b0d0f0h0...
+
+ 0152c 66 0f 6f 85 00
+ 1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
+ 01534 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 0153c 66 0f 6f 85 00
+ 1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
+ 01544 66 0f 60 85 30
+ 1f 00 00 punpcklbw xmm0, XMMWORD PTR p3$148[rbp]
+ 0154c 66 0f 7f 85 00
+ 1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
+ 01554 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 0155c 66 0f 68 85 30
+ 1f 00 00 punpckhbw xmm0, XMMWORD PTR p3$148[rbp]
+ 01564 66 0f 7f 85 30
+ 1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
+
+; 2968 :
+; 2969 : // transpose pass 3
+; 2970 : dct_interleave8(p0, p2); // a0b0c0d0...
+
+ 0156c 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 01574 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 0157c 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 01584 66 0f 60 85 00
+ 1f 00 00 punpcklbw xmm0, XMMWORD PTR p2$147[rbp]
+ 0158c 66 0f 7f 85 a0
+ 1e 00 00 movdqa XMMWORD PTR p0$145[rbp], xmm0
+ 01594 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 0159c 66 0f 68 85 00
+ 1f 00 00 punpckhbw xmm0, XMMWORD PTR p2$147[rbp]
+ 015a4 66 0f 7f 85 00
+ 1f 00 00 movdqa XMMWORD PTR p2$147[rbp], xmm0
+
+; 2971 : dct_interleave8(p1, p3); // a4b4c4d4...
+
+ 015ac 66 0f 6f 85 d0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
+ 015b4 66 0f 7f 85 90
+ 01 00 00 movdqa XMMWORD PTR tmp$[rbp], xmm0
+ 015bc 66 0f 6f 85 d0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
+ 015c4 66 0f 60 85 30
+ 1f 00 00 punpcklbw xmm0, XMMWORD PTR p3$148[rbp]
+ 015cc 66 0f 7f 85 d0
+ 1e 00 00 movdqa XMMWORD PTR p1$146[rbp], xmm0
+ 015d4 66 0f 6f 85 90
+ 01 00 00 movdqa xmm0, XMMWORD PTR tmp$[rbp]
+ 015dc 66 0f 68 85 30
+ 1f 00 00 punpckhbw xmm0, XMMWORD PTR p3$148[rbp]
+ 015e4 66 0f 7f 85 30
+ 1f 00 00 movdqa XMMWORD PTR p3$148[rbp], xmm0
+
+; 2972 :
+; 2973 : // store
+; 2974 : _mm_storel_epi64((__m128i *)out, p0);
+
+ 015ec 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 015f3 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 015fb 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2975 : out += out_stride;
+
+ 015ff 48 63 85 78 25
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 01606 48 8b 8d 70 25
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0160d 48 03 c8 add rcx, rax
+ 01610 48 8b c1 mov rax, rcx
+ 01613 48 89 85 70 25
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 2976 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p0, 0x4e));
+
+ 0161a 66 0f 6f 85 a0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p0$145[rbp]
+ 01622 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
+ 01627 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 0162e 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2977 : out += out_stride;
+
+ 01632 48 63 85 78 25
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 01639 48 8b 8d 70 25
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 01640 48 03 c8 add rcx, rax
+ 01643 48 8b c1 mov rax, rcx
+ 01646 48 89 85 70 25
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 2978 : _mm_storel_epi64((__m128i *)out, p2);
+
+ 0164d 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 01654 66 0f 6f 85 00
+ 1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
+ 0165c 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2979 : out += out_stride;
+
+ 01660 48 63 85 78 25
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 01667 48 8b 8d 70 25
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0166e 48 03 c8 add rcx, rax
+ 01671 48 8b c1 mov rax, rcx
+ 01674 48 89 85 70 25
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 2980 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p2, 0x4e));
+
+ 0167b 66 0f 6f 85 00
+ 1f 00 00 movdqa xmm0, XMMWORD PTR p2$147[rbp]
+ 01683 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
+ 01688 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 0168f 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2981 : out += out_stride;
+
+ 01693 48 63 85 78 25
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 0169a 48 8b 8d 70 25
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 016a1 48 03 c8 add rcx, rax
+ 016a4 48 8b c1 mov rax, rcx
+ 016a7 48 89 85 70 25
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 2982 : _mm_storel_epi64((__m128i *)out, p1);
+
+ 016ae 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 016b5 66 0f 6f 85 d0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
+ 016bd 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2983 : out += out_stride;
+
+ 016c1 48 63 85 78 25
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 016c8 48 8b 8d 70 25
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 016cf 48 03 c8 add rcx, rax
+ 016d2 48 8b c1 mov rax, rcx
+ 016d5 48 89 85 70 25
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 2984 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p1, 0x4e));
+
+ 016dc 66 0f 6f 85 d0
+ 1e 00 00 movdqa xmm0, XMMWORD PTR p1$146[rbp]
+ 016e4 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
+ 016e9 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 016f0 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2985 : out += out_stride;
+
+ 016f4 48 63 85 78 25
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 016fb 48 8b 8d 70 25
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 01702 48 03 c8 add rcx, rax
+ 01705 48 8b c1 mov rax, rcx
+ 01708 48 89 85 70 25
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 2986 : _mm_storel_epi64((__m128i *)out, p3);
+
+ 0170f 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 01716 66 0f 6f 85 30
+ 1f 00 00 movdqa xmm0, XMMWORD PTR p3$148[rbp]
+ 0171e 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2987 : out += out_stride;
+
+ 01722 48 63 85 78 25
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 01729 48 8b 8d 70 25
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 01730 48 03 c8 add rcx, rax
+ 01733 48 8b c1 mov rax, rcx
+ 01736 48 89 85 70 25
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 2988 : _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p3, 0x4e));
+
+ 0173d 66 0f 6f 85 30
+ 1f 00 00 movdqa xmm0, XMMWORD PTR p3$148[rbp]
+ 01745 66 0f 70 c0 4e pshufd xmm0, xmm0, 78 ; 0000004eH
+ 0174a 48 8b 85 70 25
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 01751 66 0f d6 00 movq QWORD PTR [rax], xmm0
+
+; 2989 : }
+; 2990 :
+; 2991 : #undef dct_const
+; 2992 : #undef dct_rot
+; 2993 : #undef dct_widen
+; 2994 : #undef dct_wadd
+; 2995 : #undef dct_wsub
+; 2996 : #undef dct_bfly32o
+; 2997 : #undef dct_interleave8
+; 2998 : #undef dct_interleave16
+; 2999 : #undef dct_pass
+; 3000 : }
+
+ 01755 48 8d a5 58 25
+ 00 00 lea rsp, QWORD PTR [rbp+9560]
+ 0175c 5f pop rdi
+ 0175d 5d pop rbp
+ 0175e c3 ret 0
+stbi__idct_simd ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__idct_block
+_TEXT SEGMENT
+i$ = 4
+val$ = 48
+v$ = 328
+o$ = 360
+d$ = 392
+dcterm$4 = 420
+t0$5 = 452
+t1$6 = 484
+t2$7 = 516
+t3$8 = 548
+p1$9 = 580
+p2$10 = 612
+p3$11 = 644
+p4$12 = 676
+p5$13 = 708
+x0$14 = 740
+x1$15 = 772
+x2$16 = 804
+x3$17 = 836
+t0$18 = 868
+t1$19 = 900
+t2$20 = 932
+t3$21 = 964
+p1$22 = 996
+p2$23 = 1028
+p3$24 = 1060
+p4$25 = 1092
+p5$26 = 1124
+x0$27 = 1156
+x1$28 = 1188
+x2$29 = 1220
+x3$30 = 1252
+__$ArrayPad$ = 1848
+out$ = 1888
+out_stride$ = 1896
+data$ = 1904
+stbi__idct_block PROC ; COMDAT
+
+; 2747 : {
+
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec 68 07
+ 00 00 sub rsp, 1896 ; 00000768H
+ 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001c 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00021 b9 42 01 00 00 mov ecx, 322 ; 00000142H
+ 00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 0002b f3 ab rep stosd
+ 0002d 48 8b 8c 24 88
+ 07 00 00 mov rcx, QWORD PTR [rsp+1928]
+ 00035 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 0003c 48 33 c5 xor rax, rbp
+ 0003f 48 89 85 38 07
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00046 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0004d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00052 90 npad 1
+
+; 2748 : int i, val[64], *v = val;
+
+ 00053 48 8d 45 30 lea rax, QWORD PTR val$[rbp]
+ 00057 48 89 85 48 01
+ 00 00 mov QWORD PTR v$[rbp], rax
+
+; 2749 : stbi_uc *o;
+; 2750 : short *d = data;
+
+ 0005e 48 8b 85 70 07
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 00065 48 89 85 88 01
+ 00 00 mov QWORD PTR d$[rbp], rax
+
+; 2751 :
+; 2752 : // columns
+; 2753 : for (i = 0; i < 8; ++i, ++d, ++v) {
+
+ 0006c c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00073 eb 2c jmp SHORT $LN4@stbi__idct
+$LN2@stbi__idct:
+ 00075 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00078 ff c0 inc eax
+ 0007a 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0007d 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR d$[rbp]
+ 00084 48 83 c0 02 add rax, 2
+ 00088 48 89 85 88 01
+ 00 00 mov QWORD PTR d$[rbp], rax
+ 0008f 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR v$[rbp]
+ 00096 48 83 c0 04 add rax, 4
+ 0009a 48 89 85 48 01
+ 00 00 mov QWORD PTR v$[rbp], rax
+$LN4@stbi__idct:
+ 000a1 83 7d 04 08 cmp DWORD PTR i$[rbp], 8
+ 000a5 0f 8d 5f 06 00
+ 00 jge $LN3@stbi__idct
+
+; 2754 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing
+; 2755 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 && d[40] == 0 &&
+; 2756 : d[48] == 0 && d[56] == 0) {
+
+ 000ab b8 02 00 00 00 mov eax, 2
+ 000b0 48 6b c0 08 imul rax, rax, 8
+ 000b4 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 000bb 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 000bf 85 c0 test eax, eax
+ 000c1 0f 85 92 01 00
+ 00 jne $LN8@stbi__idct
+ 000c7 b8 02 00 00 00 mov eax, 2
+ 000cc 48 6b c0 10 imul rax, rax, 16
+ 000d0 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 000d7 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 000db 85 c0 test eax, eax
+ 000dd 0f 85 76 01 00
+ 00 jne $LN8@stbi__idct
+ 000e3 b8 02 00 00 00 mov eax, 2
+ 000e8 48 6b c0 18 imul rax, rax, 24
+ 000ec 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 000f3 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 000f7 85 c0 test eax, eax
+ 000f9 0f 85 5a 01 00
+ 00 jne $LN8@stbi__idct
+ 000ff b8 02 00 00 00 mov eax, 2
+ 00104 48 6b c0 20 imul rax, rax, 32 ; 00000020H
+ 00108 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 0010f 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 00113 85 c0 test eax, eax
+ 00115 0f 85 3e 01 00
+ 00 jne $LN8@stbi__idct
+ 0011b b8 02 00 00 00 mov eax, 2
+ 00120 48 6b c0 28 imul rax, rax, 40 ; 00000028H
+ 00124 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 0012b 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 0012f 85 c0 test eax, eax
+ 00131 0f 85 22 01 00
+ 00 jne $LN8@stbi__idct
+ 00137 b8 02 00 00 00 mov eax, 2
+ 0013c 48 6b c0 30 imul rax, rax, 48 ; 00000030H
+ 00140 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 00147 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 0014b 85 c0 test eax, eax
+ 0014d 0f 85 06 01 00
+ 00 jne $LN8@stbi__idct
+ 00153 b8 02 00 00 00 mov eax, 2
+ 00158 48 6b c0 38 imul rax, rax, 56 ; 00000038H
+ 0015c 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 00163 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 00167 85 c0 test eax, eax
+ 00169 0f 85 ea 00 00
+ 00 jne $LN8@stbi__idct
+
+; 2757 : // no shortcut 0 seconds
+; 2758 : // (1|2|3|4|5|6|7)==0 0 seconds
+; 2759 : // all separate -0.047 seconds
+; 2760 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds
+; 2761 : int dcterm = d[0] * 4;
+
+ 0016f b8 02 00 00 00 mov eax, 2
+ 00174 48 6b c0 00 imul rax, rax, 0
+ 00178 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 0017f 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 00183 c1 e0 02 shl eax, 2
+ 00186 89 85 a4 01 00
+ 00 mov DWORD PTR dcterm$4[rbp], eax
+
+; 2762 : v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm;
+
+ 0018c b8 04 00 00 00 mov eax, 4
+ 00191 48 6b c0 38 imul rax, rax, 56 ; 00000038H
+ 00195 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 0019c 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 001a2 89 14 01 mov DWORD PTR [rcx+rax], edx
+ 001a5 b8 04 00 00 00 mov eax, 4
+ 001aa 48 6b c0 30 imul rax, rax, 48 ; 00000030H
+ 001ae 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 001b5 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 001bb 89 14 01 mov DWORD PTR [rcx+rax], edx
+ 001be b8 04 00 00 00 mov eax, 4
+ 001c3 48 6b c0 28 imul rax, rax, 40 ; 00000028H
+ 001c7 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 001ce 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 001d4 89 14 01 mov DWORD PTR [rcx+rax], edx
+ 001d7 b8 04 00 00 00 mov eax, 4
+ 001dc 48 6b c0 20 imul rax, rax, 32 ; 00000020H
+ 001e0 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 001e7 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 001ed 89 14 01 mov DWORD PTR [rcx+rax], edx
+ 001f0 b8 04 00 00 00 mov eax, 4
+ 001f5 48 6b c0 18 imul rax, rax, 24
+ 001f9 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 00200 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 00206 89 14 01 mov DWORD PTR [rcx+rax], edx
+ 00209 b8 04 00 00 00 mov eax, 4
+ 0020e 48 6b c0 10 imul rax, rax, 16
+ 00212 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 00219 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 0021f 89 14 01 mov DWORD PTR [rcx+rax], edx
+ 00222 b8 04 00 00 00 mov eax, 4
+ 00227 48 6b c0 08 imul rax, rax, 8
+ 0022b 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 00232 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 00238 89 14 01 mov DWORD PTR [rcx+rax], edx
+ 0023b b8 04 00 00 00 mov eax, 4
+ 00240 48 6b c0 00 imul rax, rax, 0
+ 00244 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 0024b 8b 95 a4 01 00
+ 00 mov edx, DWORD PTR dcterm$4[rbp]
+ 00251 89 14 01 mov DWORD PTR [rcx+rax], edx
+
+; 2763 : } else {
+
+ 00254 e9 ac 04 00 00 jmp $LN9@stbi__idct
+$LN8@stbi__idct:
+
+; 2764 : STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56])
+
+ 00259 b8 02 00 00 00 mov eax, 2
+ 0025e 48 6b c0 10 imul rax, rax, 16
+ 00262 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 00269 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 0026d 89 85 64 02 00
+ 00 mov DWORD PTR p2$10[rbp], eax
+ 00273 b8 02 00 00 00 mov eax, 2
+ 00278 48 6b c0 30 imul rax, rax, 48 ; 00000030H
+ 0027c 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 00283 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 00287 89 85 84 02 00
+ 00 mov DWORD PTR p3$11[rbp], eax
+ 0028d 8b 85 84 02 00
+ 00 mov eax, DWORD PTR p3$11[rbp]
+ 00293 8b 8d 64 02 00
+ 00 mov ecx, DWORD PTR p2$10[rbp]
+ 00299 03 c8 add ecx, eax
+ 0029b 8b c1 mov eax, ecx
+ 0029d 69 c0 a9 08 00
+ 00 imul eax, eax, 2217 ; 000008a9H
+ 002a3 89 85 44 02 00
+ 00 mov DWORD PTR p1$9[rbp], eax
+ 002a9 69 85 84 02 00
+ 00 71 e2 ff ff imul eax, DWORD PTR p3$11[rbp], -7567 ; ffffffffffffe271H
+ 002b3 8b 8d 44 02 00
+ 00 mov ecx, DWORD PTR p1$9[rbp]
+ 002b9 03 c8 add ecx, eax
+ 002bb 8b c1 mov eax, ecx
+ 002bd 89 85 04 02 00
+ 00 mov DWORD PTR t2$7[rbp], eax
+ 002c3 69 85 64 02 00
+ 00 3f 0c 00 00 imul eax, DWORD PTR p2$10[rbp], 3135 ; 00000c3fH
+ 002cd 8b 8d 44 02 00
+ 00 mov ecx, DWORD PTR p1$9[rbp]
+ 002d3 03 c8 add ecx, eax
+ 002d5 8b c1 mov eax, ecx
+ 002d7 89 85 24 02 00
+ 00 mov DWORD PTR t3$8[rbp], eax
+ 002dd b8 02 00 00 00 mov eax, 2
+ 002e2 48 6b c0 00 imul rax, rax, 0
+ 002e6 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 002ed 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 002f1 89 85 64 02 00
+ 00 mov DWORD PTR p2$10[rbp], eax
+ 002f7 b8 02 00 00 00 mov eax, 2
+ 002fc 48 6b c0 20 imul rax, rax, 32 ; 00000020H
+ 00300 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 00307 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 0030b 89 85 84 02 00
+ 00 mov DWORD PTR p3$11[rbp], eax
+ 00311 8b 85 84 02 00
+ 00 mov eax, DWORD PTR p3$11[rbp]
+ 00317 8b 8d 64 02 00
+ 00 mov ecx, DWORD PTR p2$10[rbp]
+ 0031d 03 c8 add ecx, eax
+ 0031f 8b c1 mov eax, ecx
+ 00321 69 c0 00 10 00
+ 00 imul eax, eax, 4096 ; 00001000H
+ 00327 89 85 c4 01 00
+ 00 mov DWORD PTR t0$5[rbp], eax
+ 0032d 8b 85 84 02 00
+ 00 mov eax, DWORD PTR p3$11[rbp]
+ 00333 8b 8d 64 02 00
+ 00 mov ecx, DWORD PTR p2$10[rbp]
+ 00339 2b c8 sub ecx, eax
+ 0033b 8b c1 mov eax, ecx
+ 0033d 69 c0 00 10 00
+ 00 imul eax, eax, 4096 ; 00001000H
+ 00343 89 85 e4 01 00
+ 00 mov DWORD PTR t1$6[rbp], eax
+ 00349 8b 85 24 02 00
+ 00 mov eax, DWORD PTR t3$8[rbp]
+ 0034f 8b 8d c4 01 00
+ 00 mov ecx, DWORD PTR t0$5[rbp]
+ 00355 03 c8 add ecx, eax
+ 00357 8b c1 mov eax, ecx
+ 00359 89 85 e4 02 00
+ 00 mov DWORD PTR x0$14[rbp], eax
+ 0035f 8b 85 24 02 00
+ 00 mov eax, DWORD PTR t3$8[rbp]
+ 00365 8b 8d c4 01 00
+ 00 mov ecx, DWORD PTR t0$5[rbp]
+ 0036b 2b c8 sub ecx, eax
+ 0036d 8b c1 mov eax, ecx
+ 0036f 89 85 44 03 00
+ 00 mov DWORD PTR x3$17[rbp], eax
+ 00375 8b 85 04 02 00
+ 00 mov eax, DWORD PTR t2$7[rbp]
+ 0037b 8b 8d e4 01 00
+ 00 mov ecx, DWORD PTR t1$6[rbp]
+ 00381 03 c8 add ecx, eax
+ 00383 8b c1 mov eax, ecx
+ 00385 89 85 04 03 00
+ 00 mov DWORD PTR x1$15[rbp], eax
+ 0038b 8b 85 04 02 00
+ 00 mov eax, DWORD PTR t2$7[rbp]
+ 00391 8b 8d e4 01 00
+ 00 mov ecx, DWORD PTR t1$6[rbp]
+ 00397 2b c8 sub ecx, eax
+ 00399 8b c1 mov eax, ecx
+ 0039b 89 85 24 03 00
+ 00 mov DWORD PTR x2$16[rbp], eax
+ 003a1 b8 02 00 00 00 mov eax, 2
+ 003a6 48 6b c0 38 imul rax, rax, 56 ; 00000038H
+ 003aa 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 003b1 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 003b5 89 85 c4 01 00
+ 00 mov DWORD PTR t0$5[rbp], eax
+ 003bb b8 02 00 00 00 mov eax, 2
+ 003c0 48 6b c0 28 imul rax, rax, 40 ; 00000028H
+ 003c4 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 003cb 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 003cf 89 85 e4 01 00
+ 00 mov DWORD PTR t1$6[rbp], eax
+ 003d5 b8 02 00 00 00 mov eax, 2
+ 003da 48 6b c0 18 imul rax, rax, 24
+ 003de 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 003e5 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 003e9 89 85 04 02 00
+ 00 mov DWORD PTR t2$7[rbp], eax
+ 003ef b8 02 00 00 00 mov eax, 2
+ 003f4 48 6b c0 08 imul rax, rax, 8
+ 003f8 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR d$[rbp]
+ 003ff 0f bf 04 01 movsx eax, WORD PTR [rcx+rax]
+ 00403 89 85 24 02 00
+ 00 mov DWORD PTR t3$8[rbp], eax
+ 00409 8b 85 04 02 00
+ 00 mov eax, DWORD PTR t2$7[rbp]
+ 0040f 8b 8d c4 01 00
+ 00 mov ecx, DWORD PTR t0$5[rbp]
+ 00415 03 c8 add ecx, eax
+ 00417 8b c1 mov eax, ecx
+ 00419 89 85 84 02 00
+ 00 mov DWORD PTR p3$11[rbp], eax
+ 0041f 8b 85 24 02 00
+ 00 mov eax, DWORD PTR t3$8[rbp]
+ 00425 8b 8d e4 01 00
+ 00 mov ecx, DWORD PTR t1$6[rbp]
+ 0042b 03 c8 add ecx, eax
+ 0042d 8b c1 mov eax, ecx
+ 0042f 89 85 a4 02 00
+ 00 mov DWORD PTR p4$12[rbp], eax
+ 00435 8b 85 24 02 00
+ 00 mov eax, DWORD PTR t3$8[rbp]
+ 0043b 8b 8d c4 01 00
+ 00 mov ecx, DWORD PTR t0$5[rbp]
+ 00441 03 c8 add ecx, eax
+ 00443 8b c1 mov eax, ecx
+ 00445 89 85 44 02 00
+ 00 mov DWORD PTR p1$9[rbp], eax
+ 0044b 8b 85 04 02 00
+ 00 mov eax, DWORD PTR t2$7[rbp]
+ 00451 8b 8d e4 01 00
+ 00 mov ecx, DWORD PTR t1$6[rbp]
+ 00457 03 c8 add ecx, eax
+ 00459 8b c1 mov eax, ecx
+ 0045b 89 85 64 02 00
+ 00 mov DWORD PTR p2$10[rbp], eax
+ 00461 8b 85 a4 02 00
+ 00 mov eax, DWORD PTR p4$12[rbp]
+ 00467 8b 8d 84 02 00
+ 00 mov ecx, DWORD PTR p3$11[rbp]
+ 0046d 03 c8 add ecx, eax
+ 0046f 8b c1 mov eax, ecx
+ 00471 69 c0 d0 12 00
+ 00 imul eax, eax, 4816 ; 000012d0H
+ 00477 89 85 c4 02 00
+ 00 mov DWORD PTR p5$13[rbp], eax
+ 0047d 69 85 c4 01 00
+ 00 c7 04 00 00 imul eax, DWORD PTR t0$5[rbp], 1223 ; 000004c7H
+ 00487 89 85 c4 01 00
+ 00 mov DWORD PTR t0$5[rbp], eax
+ 0048d 69 85 e4 01 00
+ 00 da 20 00 00 imul eax, DWORD PTR t1$6[rbp], 8410 ; 000020daH
+ 00497 89 85 e4 01 00
+ 00 mov DWORD PTR t1$6[rbp], eax
+ 0049d 69 85 04 02 00
+ 00 2a 31 00 00 imul eax, DWORD PTR t2$7[rbp], 12586 ; 0000312aH
+ 004a7 89 85 04 02 00
+ 00 mov DWORD PTR t2$7[rbp], eax
+ 004ad 69 85 24 02 00
+ 00 05 18 00 00 imul eax, DWORD PTR t3$8[rbp], 6149 ; 00001805H
+ 004b7 89 85 24 02 00
+ 00 mov DWORD PTR t3$8[rbp], eax
+ 004bd 69 85 44 02 00
+ 00 9b f1 ff ff imul eax, DWORD PTR p1$9[rbp], -3685 ; fffffffffffff19bH
+ 004c7 8b 8d c4 02 00
+ 00 mov ecx, DWORD PTR p5$13[rbp]
+ 004cd 03 c8 add ecx, eax
+ 004cf 8b c1 mov eax, ecx
+ 004d1 89 85 44 02 00
+ 00 mov DWORD PTR p1$9[rbp], eax
+ 004d7 69 85 64 02 00
+ 00 ff d6 ff ff imul eax, DWORD PTR p2$10[rbp], -10497 ; ffffffffffffd6ffH
+ 004e1 8b 8d c4 02 00
+ 00 mov ecx, DWORD PTR p5$13[rbp]
+ 004e7 03 c8 add ecx, eax
+ 004e9 8b c1 mov eax, ecx
+ 004eb 89 85 64 02 00
+ 00 mov DWORD PTR p2$10[rbp], eax
+ 004f1 69 85 84 02 00
+ 00 9e e0 ff ff imul eax, DWORD PTR p3$11[rbp], -8034 ; ffffffffffffe09eH
+ 004fb 89 85 84 02 00
+ 00 mov DWORD PTR p3$11[rbp], eax
+ 00501 69 85 a4 02 00
+ 00 c3 f9 ff ff imul eax, DWORD PTR p4$12[rbp], -1597 ; fffffffffffff9c3H
+ 0050b 89 85 a4 02 00
+ 00 mov DWORD PTR p4$12[rbp], eax
+ 00511 8b 85 a4 02 00
+ 00 mov eax, DWORD PTR p4$12[rbp]
+ 00517 8b 8d 44 02 00
+ 00 mov ecx, DWORD PTR p1$9[rbp]
+ 0051d 03 c8 add ecx, eax
+ 0051f 8b c1 mov eax, ecx
+ 00521 8b 8d 24 02 00
+ 00 mov ecx, DWORD PTR t3$8[rbp]
+ 00527 03 c8 add ecx, eax
+ 00529 8b c1 mov eax, ecx
+ 0052b 89 85 24 02 00
+ 00 mov DWORD PTR t3$8[rbp], eax
+ 00531 8b 85 84 02 00
+ 00 mov eax, DWORD PTR p3$11[rbp]
+ 00537 8b 8d 64 02 00
+ 00 mov ecx, DWORD PTR p2$10[rbp]
+ 0053d 03 c8 add ecx, eax
+ 0053f 8b c1 mov eax, ecx
+ 00541 8b 8d 04 02 00
+ 00 mov ecx, DWORD PTR t2$7[rbp]
+ 00547 03 c8 add ecx, eax
+ 00549 8b c1 mov eax, ecx
+ 0054b 89 85 04 02 00
+ 00 mov DWORD PTR t2$7[rbp], eax
+ 00551 8b 85 a4 02 00
+ 00 mov eax, DWORD PTR p4$12[rbp]
+ 00557 8b 8d 64 02 00
+ 00 mov ecx, DWORD PTR p2$10[rbp]
+ 0055d 03 c8 add ecx, eax
+ 0055f 8b c1 mov eax, ecx
+ 00561 8b 8d e4 01 00
+ 00 mov ecx, DWORD PTR t1$6[rbp]
+ 00567 03 c8 add ecx, eax
+ 00569 8b c1 mov eax, ecx
+ 0056b 89 85 e4 01 00
+ 00 mov DWORD PTR t1$6[rbp], eax
+ 00571 8b 85 84 02 00
+ 00 mov eax, DWORD PTR p3$11[rbp]
+ 00577 8b 8d 44 02 00
+ 00 mov ecx, DWORD PTR p1$9[rbp]
+ 0057d 03 c8 add ecx, eax
+ 0057f 8b c1 mov eax, ecx
+ 00581 8b 8d c4 01 00
+ 00 mov ecx, DWORD PTR t0$5[rbp]
+ 00587 03 c8 add ecx, eax
+ 00589 8b c1 mov eax, ecx
+ 0058b 89 85 c4 01 00
+ 00 mov DWORD PTR t0$5[rbp], eax
+
+; 2765 : // constants scaled things up by 1<<12; let's bring them back
+; 2766 : // down, but keep 2 extra bits of precision
+; 2767 : x0 += 512;
+
+ 00591 8b 85 e4 02 00
+ 00 mov eax, DWORD PTR x0$14[rbp]
+ 00597 05 00 02 00 00 add eax, 512 ; 00000200H
+ 0059c 89 85 e4 02 00
+ 00 mov DWORD PTR x0$14[rbp], eax
+
+; 2768 : x1 += 512;
+
+ 005a2 8b 85 04 03 00
+ 00 mov eax, DWORD PTR x1$15[rbp]
+ 005a8 05 00 02 00 00 add eax, 512 ; 00000200H
+ 005ad 89 85 04 03 00
+ 00 mov DWORD PTR x1$15[rbp], eax
+
+; 2769 : x2 += 512;
+
+ 005b3 8b 85 24 03 00
+ 00 mov eax, DWORD PTR x2$16[rbp]
+ 005b9 05 00 02 00 00 add eax, 512 ; 00000200H
+ 005be 89 85 24 03 00
+ 00 mov DWORD PTR x2$16[rbp], eax
+
+; 2770 : x3 += 512;
+
+ 005c4 8b 85 44 03 00
+ 00 mov eax, DWORD PTR x3$17[rbp]
+ 005ca 05 00 02 00 00 add eax, 512 ; 00000200H
+ 005cf 89 85 44 03 00
+ 00 mov DWORD PTR x3$17[rbp], eax
+
+; 2771 : v[0] = (x0 + t3) >> 10;
+
+ 005d5 8b 85 24 02 00
+ 00 mov eax, DWORD PTR t3$8[rbp]
+ 005db 8b 8d e4 02 00
+ 00 mov ecx, DWORD PTR x0$14[rbp]
+ 005e1 03 c8 add ecx, eax
+ 005e3 8b c1 mov eax, ecx
+ 005e5 c1 f8 0a sar eax, 10
+ 005e8 b9 04 00 00 00 mov ecx, 4
+ 005ed 48 6b c9 00 imul rcx, rcx, 0
+ 005f1 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 005f8 89 04 0a mov DWORD PTR [rdx+rcx], eax
+
+; 2772 : v[56] = (x0 - t3) >> 10;
+
+ 005fb 8b 85 24 02 00
+ 00 mov eax, DWORD PTR t3$8[rbp]
+ 00601 8b 8d e4 02 00
+ 00 mov ecx, DWORD PTR x0$14[rbp]
+ 00607 2b c8 sub ecx, eax
+ 00609 8b c1 mov eax, ecx
+ 0060b c1 f8 0a sar eax, 10
+ 0060e b9 04 00 00 00 mov ecx, 4
+ 00613 48 6b c9 38 imul rcx, rcx, 56 ; 00000038H
+ 00617 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 0061e 89 04 0a mov DWORD PTR [rdx+rcx], eax
+
+; 2773 : v[8] = (x1 + t2) >> 10;
+
+ 00621 8b 85 04 02 00
+ 00 mov eax, DWORD PTR t2$7[rbp]
+ 00627 8b 8d 04 03 00
+ 00 mov ecx, DWORD PTR x1$15[rbp]
+ 0062d 03 c8 add ecx, eax
+ 0062f 8b c1 mov eax, ecx
+ 00631 c1 f8 0a sar eax, 10
+ 00634 b9 04 00 00 00 mov ecx, 4
+ 00639 48 6b c9 08 imul rcx, rcx, 8
+ 0063d 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 00644 89 04 0a mov DWORD PTR [rdx+rcx], eax
+
+; 2774 : v[48] = (x1 - t2) >> 10;
+
+ 00647 8b 85 04 02 00
+ 00 mov eax, DWORD PTR t2$7[rbp]
+ 0064d 8b 8d 04 03 00
+ 00 mov ecx, DWORD PTR x1$15[rbp]
+ 00653 2b c8 sub ecx, eax
+ 00655 8b c1 mov eax, ecx
+ 00657 c1 f8 0a sar eax, 10
+ 0065a b9 04 00 00 00 mov ecx, 4
+ 0065f 48 6b c9 30 imul rcx, rcx, 48 ; 00000030H
+ 00663 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 0066a 89 04 0a mov DWORD PTR [rdx+rcx], eax
+
+; 2775 : v[16] = (x2 + t1) >> 10;
+
+ 0066d 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR t1$6[rbp]
+ 00673 8b 8d 24 03 00
+ 00 mov ecx, DWORD PTR x2$16[rbp]
+ 00679 03 c8 add ecx, eax
+ 0067b 8b c1 mov eax, ecx
+ 0067d c1 f8 0a sar eax, 10
+ 00680 b9 04 00 00 00 mov ecx, 4
+ 00685 48 6b c9 10 imul rcx, rcx, 16
+ 00689 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 00690 89 04 0a mov DWORD PTR [rdx+rcx], eax
+
+; 2776 : v[40] = (x2 - t1) >> 10;
+
+ 00693 8b 85 e4 01 00
+ 00 mov eax, DWORD PTR t1$6[rbp]
+ 00699 8b 8d 24 03 00
+ 00 mov ecx, DWORD PTR x2$16[rbp]
+ 0069f 2b c8 sub ecx, eax
+ 006a1 8b c1 mov eax, ecx
+ 006a3 c1 f8 0a sar eax, 10
+ 006a6 b9 04 00 00 00 mov ecx, 4
+ 006ab 48 6b c9 28 imul rcx, rcx, 40 ; 00000028H
+ 006af 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 006b6 89 04 0a mov DWORD PTR [rdx+rcx], eax
+
+; 2777 : v[24] = (x3 + t0) >> 10;
+
+ 006b9 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR t0$5[rbp]
+ 006bf 8b 8d 44 03 00
+ 00 mov ecx, DWORD PTR x3$17[rbp]
+ 006c5 03 c8 add ecx, eax
+ 006c7 8b c1 mov eax, ecx
+ 006c9 c1 f8 0a sar eax, 10
+ 006cc b9 04 00 00 00 mov ecx, 4
+ 006d1 48 6b c9 18 imul rcx, rcx, 24
+ 006d5 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 006dc 89 04 0a mov DWORD PTR [rdx+rcx], eax
+
+; 2778 : v[32] = (x3 - t0) >> 10;
+
+ 006df 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR t0$5[rbp]
+ 006e5 8b 8d 44 03 00
+ 00 mov ecx, DWORD PTR x3$17[rbp]
+ 006eb 2b c8 sub ecx, eax
+ 006ed 8b c1 mov eax, ecx
+ 006ef c1 f8 0a sar eax, 10
+ 006f2 b9 04 00 00 00 mov ecx, 4
+ 006f7 48 6b c9 20 imul rcx, rcx, 32 ; 00000020H
+ 006fb 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR v$[rbp]
+ 00702 89 04 0a mov DWORD PTR [rdx+rcx], eax
+$LN9@stbi__idct:
+
+; 2779 : }
+; 2780 : }
+
+ 00705 e9 6b f9 ff ff jmp $LN2@stbi__idct
+$LN3@stbi__idct:
+
+; 2781 :
+; 2782 : for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) {
+
+ 0070a c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00711 48 8d 45 30 lea rax, QWORD PTR val$[rbp]
+ 00715 48 89 85 48 01
+ 00 00 mov QWORD PTR v$[rbp], rax
+ 0071c 48 8b 85 60 07
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 00723 48 89 85 68 01
+ 00 00 mov QWORD PTR o$[rbp], rax
+ 0072a eb 35 jmp SHORT $LN7@stbi__idct
+$LN5@stbi__idct:
+ 0072c 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0072f ff c0 inc eax
+ 00731 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00734 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR v$[rbp]
+ 0073b 48 83 c0 20 add rax, 32 ; 00000020H
+ 0073f 48 89 85 48 01
+ 00 00 mov QWORD PTR v$[rbp], rax
+ 00746 48 63 85 68 07
+ 00 00 movsxd rax, DWORD PTR out_stride$[rbp]
+ 0074d 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR o$[rbp]
+ 00754 48 03 c8 add rcx, rax
+ 00757 48 8b c1 mov rax, rcx
+ 0075a 48 89 85 68 01
+ 00 00 mov QWORD PTR o$[rbp], rax
+$LN7@stbi__idct:
+ 00761 83 7d 04 08 cmp DWORD PTR i$[rbp], 8
+ 00765 0f 8d e1 04 00
+ 00 jge $LN6@stbi__idct
+
+; 2783 : // no fast case since the first 1D IDCT spread components out
+; 2784 : STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7])
+
+ 0076b b8 04 00 00 00 mov eax, 4
+ 00770 48 6b c0 02 imul rax, rax, 2
+ 00774 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 0077b 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0077e 89 85 04 04 00
+ 00 mov DWORD PTR p2$23[rbp], eax
+ 00784 b8 04 00 00 00 mov eax, 4
+ 00789 48 6b c0 06 imul rax, rax, 6
+ 0078d 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 00794 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00797 89 85 24 04 00
+ 00 mov DWORD PTR p3$24[rbp], eax
+ 0079d 8b 85 24 04 00
+ 00 mov eax, DWORD PTR p3$24[rbp]
+ 007a3 8b 8d 04 04 00
+ 00 mov ecx, DWORD PTR p2$23[rbp]
+ 007a9 03 c8 add ecx, eax
+ 007ab 8b c1 mov eax, ecx
+ 007ad 69 c0 a9 08 00
+ 00 imul eax, eax, 2217 ; 000008a9H
+ 007b3 89 85 e4 03 00
+ 00 mov DWORD PTR p1$22[rbp], eax
+ 007b9 69 85 24 04 00
+ 00 71 e2 ff ff imul eax, DWORD PTR p3$24[rbp], -7567 ; ffffffffffffe271H
+ 007c3 8b 8d e4 03 00
+ 00 mov ecx, DWORD PTR p1$22[rbp]
+ 007c9 03 c8 add ecx, eax
+ 007cb 8b c1 mov eax, ecx
+ 007cd 89 85 a4 03 00
+ 00 mov DWORD PTR t2$20[rbp], eax
+ 007d3 69 85 04 04 00
+ 00 3f 0c 00 00 imul eax, DWORD PTR p2$23[rbp], 3135 ; 00000c3fH
+ 007dd 8b 8d e4 03 00
+ 00 mov ecx, DWORD PTR p1$22[rbp]
+ 007e3 03 c8 add ecx, eax
+ 007e5 8b c1 mov eax, ecx
+ 007e7 89 85 c4 03 00
+ 00 mov DWORD PTR t3$21[rbp], eax
+ 007ed b8 04 00 00 00 mov eax, 4
+ 007f2 48 6b c0 00 imul rax, rax, 0
+ 007f6 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 007fd 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00800 89 85 04 04 00
+ 00 mov DWORD PTR p2$23[rbp], eax
+ 00806 b8 04 00 00 00 mov eax, 4
+ 0080b 48 6b c0 04 imul rax, rax, 4
+ 0080f 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 00816 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 00819 89 85 24 04 00
+ 00 mov DWORD PTR p3$24[rbp], eax
+ 0081f 8b 85 24 04 00
+ 00 mov eax, DWORD PTR p3$24[rbp]
+ 00825 8b 8d 04 04 00
+ 00 mov ecx, DWORD PTR p2$23[rbp]
+ 0082b 03 c8 add ecx, eax
+ 0082d 8b c1 mov eax, ecx
+ 0082f 69 c0 00 10 00
+ 00 imul eax, eax, 4096 ; 00001000H
+ 00835 89 85 64 03 00
+ 00 mov DWORD PTR t0$18[rbp], eax
+ 0083b 8b 85 24 04 00
+ 00 mov eax, DWORD PTR p3$24[rbp]
+ 00841 8b 8d 04 04 00
+ 00 mov ecx, DWORD PTR p2$23[rbp]
+ 00847 2b c8 sub ecx, eax
+ 00849 8b c1 mov eax, ecx
+ 0084b 69 c0 00 10 00
+ 00 imul eax, eax, 4096 ; 00001000H
+ 00851 89 85 84 03 00
+ 00 mov DWORD PTR t1$19[rbp], eax
+ 00857 8b 85 c4 03 00
+ 00 mov eax, DWORD PTR t3$21[rbp]
+ 0085d 8b 8d 64 03 00
+ 00 mov ecx, DWORD PTR t0$18[rbp]
+ 00863 03 c8 add ecx, eax
+ 00865 8b c1 mov eax, ecx
+ 00867 89 85 84 04 00
+ 00 mov DWORD PTR x0$27[rbp], eax
+ 0086d 8b 85 c4 03 00
+ 00 mov eax, DWORD PTR t3$21[rbp]
+ 00873 8b 8d 64 03 00
+ 00 mov ecx, DWORD PTR t0$18[rbp]
+ 00879 2b c8 sub ecx, eax
+ 0087b 8b c1 mov eax, ecx
+ 0087d 89 85 e4 04 00
+ 00 mov DWORD PTR x3$30[rbp], eax
+ 00883 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR t2$20[rbp]
+ 00889 8b 8d 84 03 00
+ 00 mov ecx, DWORD PTR t1$19[rbp]
+ 0088f 03 c8 add ecx, eax
+ 00891 8b c1 mov eax, ecx
+ 00893 89 85 a4 04 00
+ 00 mov DWORD PTR x1$28[rbp], eax
+ 00899 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR t2$20[rbp]
+ 0089f 8b 8d 84 03 00
+ 00 mov ecx, DWORD PTR t1$19[rbp]
+ 008a5 2b c8 sub ecx, eax
+ 008a7 8b c1 mov eax, ecx
+ 008a9 89 85 c4 04 00
+ 00 mov DWORD PTR x2$29[rbp], eax
+ 008af b8 04 00 00 00 mov eax, 4
+ 008b4 48 6b c0 07 imul rax, rax, 7
+ 008b8 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 008bf 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 008c2 89 85 64 03 00
+ 00 mov DWORD PTR t0$18[rbp], eax
+ 008c8 b8 04 00 00 00 mov eax, 4
+ 008cd 48 6b c0 05 imul rax, rax, 5
+ 008d1 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 008d8 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 008db 89 85 84 03 00
+ 00 mov DWORD PTR t1$19[rbp], eax
+ 008e1 b8 04 00 00 00 mov eax, 4
+ 008e6 48 6b c0 03 imul rax, rax, 3
+ 008ea 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 008f1 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 008f4 89 85 a4 03 00
+ 00 mov DWORD PTR t2$20[rbp], eax
+ 008fa b8 04 00 00 00 mov eax, 4
+ 008ff 48 6b c0 01 imul rax, rax, 1
+ 00903 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR v$[rbp]
+ 0090a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
+ 0090d 89 85 c4 03 00
+ 00 mov DWORD PTR t3$21[rbp], eax
+ 00913 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR t2$20[rbp]
+ 00919 8b 8d 64 03 00
+ 00 mov ecx, DWORD PTR t0$18[rbp]
+ 0091f 03 c8 add ecx, eax
+ 00921 8b c1 mov eax, ecx
+ 00923 89 85 24 04 00
+ 00 mov DWORD PTR p3$24[rbp], eax
+ 00929 8b 85 c4 03 00
+ 00 mov eax, DWORD PTR t3$21[rbp]
+ 0092f 8b 8d 84 03 00
+ 00 mov ecx, DWORD PTR t1$19[rbp]
+ 00935 03 c8 add ecx, eax
+ 00937 8b c1 mov eax, ecx
+ 00939 89 85 44 04 00
+ 00 mov DWORD PTR p4$25[rbp], eax
+ 0093f 8b 85 c4 03 00
+ 00 mov eax, DWORD PTR t3$21[rbp]
+ 00945 8b 8d 64 03 00
+ 00 mov ecx, DWORD PTR t0$18[rbp]
+ 0094b 03 c8 add ecx, eax
+ 0094d 8b c1 mov eax, ecx
+ 0094f 89 85 e4 03 00
+ 00 mov DWORD PTR p1$22[rbp], eax
+ 00955 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR t2$20[rbp]
+ 0095b 8b 8d 84 03 00
+ 00 mov ecx, DWORD PTR t1$19[rbp]
+ 00961 03 c8 add ecx, eax
+ 00963 8b c1 mov eax, ecx
+ 00965 89 85 04 04 00
+ 00 mov DWORD PTR p2$23[rbp], eax
+ 0096b 8b 85 44 04 00
+ 00 mov eax, DWORD PTR p4$25[rbp]
+ 00971 8b 8d 24 04 00
+ 00 mov ecx, DWORD PTR p3$24[rbp]
+ 00977 03 c8 add ecx, eax
+ 00979 8b c1 mov eax, ecx
+ 0097b 69 c0 d0 12 00
+ 00 imul eax, eax, 4816 ; 000012d0H
+ 00981 89 85 64 04 00
+ 00 mov DWORD PTR p5$26[rbp], eax
+ 00987 69 85 64 03 00
+ 00 c7 04 00 00 imul eax, DWORD PTR t0$18[rbp], 1223 ; 000004c7H
+ 00991 89 85 64 03 00
+ 00 mov DWORD PTR t0$18[rbp], eax
+ 00997 69 85 84 03 00
+ 00 da 20 00 00 imul eax, DWORD PTR t1$19[rbp], 8410 ; 000020daH
+ 009a1 89 85 84 03 00
+ 00 mov DWORD PTR t1$19[rbp], eax
+ 009a7 69 85 a4 03 00
+ 00 2a 31 00 00 imul eax, DWORD PTR t2$20[rbp], 12586 ; 0000312aH
+ 009b1 89 85 a4 03 00
+ 00 mov DWORD PTR t2$20[rbp], eax
+ 009b7 69 85 c4 03 00
+ 00 05 18 00 00 imul eax, DWORD PTR t3$21[rbp], 6149 ; 00001805H
+ 009c1 89 85 c4 03 00
+ 00 mov DWORD PTR t3$21[rbp], eax
+ 009c7 69 85 e4 03 00
+ 00 9b f1 ff ff imul eax, DWORD PTR p1$22[rbp], -3685 ; fffffffffffff19bH
+ 009d1 8b 8d 64 04 00
+ 00 mov ecx, DWORD PTR p5$26[rbp]
+ 009d7 03 c8 add ecx, eax
+ 009d9 8b c1 mov eax, ecx
+ 009db 89 85 e4 03 00
+ 00 mov DWORD PTR p1$22[rbp], eax
+ 009e1 69 85 04 04 00
+ 00 ff d6 ff ff imul eax, DWORD PTR p2$23[rbp], -10497 ; ffffffffffffd6ffH
+ 009eb 8b 8d 64 04 00
+ 00 mov ecx, DWORD PTR p5$26[rbp]
+ 009f1 03 c8 add ecx, eax
+ 009f3 8b c1 mov eax, ecx
+ 009f5 89 85 04 04 00
+ 00 mov DWORD PTR p2$23[rbp], eax
+ 009fb 69 85 24 04 00
+ 00 9e e0 ff ff imul eax, DWORD PTR p3$24[rbp], -8034 ; ffffffffffffe09eH
+ 00a05 89 85 24 04 00
+ 00 mov DWORD PTR p3$24[rbp], eax
+ 00a0b 69 85 44 04 00
+ 00 c3 f9 ff ff imul eax, DWORD PTR p4$25[rbp], -1597 ; fffffffffffff9c3H
+ 00a15 89 85 44 04 00
+ 00 mov DWORD PTR p4$25[rbp], eax
+ 00a1b 8b 85 44 04 00
+ 00 mov eax, DWORD PTR p4$25[rbp]
+ 00a21 8b 8d e4 03 00
+ 00 mov ecx, DWORD PTR p1$22[rbp]
+ 00a27 03 c8 add ecx, eax
+ 00a29 8b c1 mov eax, ecx
+ 00a2b 8b 8d c4 03 00
+ 00 mov ecx, DWORD PTR t3$21[rbp]
+ 00a31 03 c8 add ecx, eax
+ 00a33 8b c1 mov eax, ecx
+ 00a35 89 85 c4 03 00
+ 00 mov DWORD PTR t3$21[rbp], eax
+ 00a3b 8b 85 24 04 00
+ 00 mov eax, DWORD PTR p3$24[rbp]
+ 00a41 8b 8d 04 04 00
+ 00 mov ecx, DWORD PTR p2$23[rbp]
+ 00a47 03 c8 add ecx, eax
+ 00a49 8b c1 mov eax, ecx
+ 00a4b 8b 8d a4 03 00
+ 00 mov ecx, DWORD PTR t2$20[rbp]
+ 00a51 03 c8 add ecx, eax
+ 00a53 8b c1 mov eax, ecx
+ 00a55 89 85 a4 03 00
+ 00 mov DWORD PTR t2$20[rbp], eax
+ 00a5b 8b 85 44 04 00
+ 00 mov eax, DWORD PTR p4$25[rbp]
+ 00a61 8b 8d 04 04 00
+ 00 mov ecx, DWORD PTR p2$23[rbp]
+ 00a67 03 c8 add ecx, eax
+ 00a69 8b c1 mov eax, ecx
+ 00a6b 8b 8d 84 03 00
+ 00 mov ecx, DWORD PTR t1$19[rbp]
+ 00a71 03 c8 add ecx, eax
+ 00a73 8b c1 mov eax, ecx
+ 00a75 89 85 84 03 00
+ 00 mov DWORD PTR t1$19[rbp], eax
+ 00a7b 8b 85 24 04 00
+ 00 mov eax, DWORD PTR p3$24[rbp]
+ 00a81 8b 8d e4 03 00
+ 00 mov ecx, DWORD PTR p1$22[rbp]
+ 00a87 03 c8 add ecx, eax
+ 00a89 8b c1 mov eax, ecx
+ 00a8b 8b 8d 64 03 00
+ 00 mov ecx, DWORD PTR t0$18[rbp]
+ 00a91 03 c8 add ecx, eax
+ 00a93 8b c1 mov eax, ecx
+ 00a95 89 85 64 03 00
+ 00 mov DWORD PTR t0$18[rbp], eax
+
+; 2785 : // constants scaled things up by 1<<12, plus we had 1<<2 from first
+; 2786 : // loop, plus horizontal and vertical each scale by sqrt(8) so together
+; 2787 : // we've got an extra 1<<3, so 1<<17 total we need to remove.
+; 2788 : // so we want to round that, which means adding 0.5 * 1<<17,
+; 2789 : // aka 65536. Also, we'll end up with -128 to 127 that we want
+; 2790 : // to encode as 0..255 by adding 128, so we'll add that before the shift
+; 2791 : x0 += 65536 + (128 << 17);
+
+ 00a9b 8b 85 84 04 00
+ 00 mov eax, DWORD PTR x0$27[rbp]
+ 00aa1 05 00 00 01 01 add eax, 16842752 ; 01010000H
+ 00aa6 89 85 84 04 00
+ 00 mov DWORD PTR x0$27[rbp], eax
+
+; 2792 : x1 += 65536 + (128 << 17);
+
+ 00aac 8b 85 a4 04 00
+ 00 mov eax, DWORD PTR x1$28[rbp]
+ 00ab2 05 00 00 01 01 add eax, 16842752 ; 01010000H
+ 00ab7 89 85 a4 04 00
+ 00 mov DWORD PTR x1$28[rbp], eax
+
+; 2793 : x2 += 65536 + (128 << 17);
+
+ 00abd 8b 85 c4 04 00
+ 00 mov eax, DWORD PTR x2$29[rbp]
+ 00ac3 05 00 00 01 01 add eax, 16842752 ; 01010000H
+ 00ac8 89 85 c4 04 00
+ 00 mov DWORD PTR x2$29[rbp], eax
+
+; 2794 : x3 += 65536 + (128 << 17);
+
+ 00ace 8b 85 e4 04 00
+ 00 mov eax, DWORD PTR x3$30[rbp]
+ 00ad4 05 00 00 01 01 add eax, 16842752 ; 01010000H
+ 00ad9 89 85 e4 04 00
+ 00 mov DWORD PTR x3$30[rbp], eax
+
+; 2795 : // tried computing the shifts into temps, or'ing the temps to see
+; 2796 : // if any were out of range, but that was slower
+; 2797 : o[0] = stbi__clamp((x0 + t3) >> 17);
+
+ 00adf 8b 85 c4 03 00
+ 00 mov eax, DWORD PTR t3$21[rbp]
+ 00ae5 8b 8d 84 04 00
+ 00 mov ecx, DWORD PTR x0$27[rbp]
+ 00aeb 03 c8 add ecx, eax
+ 00aed 8b c1 mov eax, ecx
+ 00aef c1 f8 11 sar eax, 17
+ 00af2 8b c8 mov ecx, eax
+ 00af4 e8 00 00 00 00 call stbi__clamp
+ 00af9 b9 01 00 00 00 mov ecx, 1
+ 00afe 48 6b c9 00 imul rcx, rcx, 0
+ 00b02 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00b09 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2798 : o[7] = stbi__clamp((x0 - t3) >> 17);
+
+ 00b0c 8b 85 c4 03 00
+ 00 mov eax, DWORD PTR t3$21[rbp]
+ 00b12 8b 8d 84 04 00
+ 00 mov ecx, DWORD PTR x0$27[rbp]
+ 00b18 2b c8 sub ecx, eax
+ 00b1a 8b c1 mov eax, ecx
+ 00b1c c1 f8 11 sar eax, 17
+ 00b1f 8b c8 mov ecx, eax
+ 00b21 e8 00 00 00 00 call stbi__clamp
+ 00b26 b9 01 00 00 00 mov ecx, 1
+ 00b2b 48 6b c9 07 imul rcx, rcx, 7
+ 00b2f 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00b36 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2799 : o[1] = stbi__clamp((x1 + t2) >> 17);
+
+ 00b39 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR t2$20[rbp]
+ 00b3f 8b 8d a4 04 00
+ 00 mov ecx, DWORD PTR x1$28[rbp]
+ 00b45 03 c8 add ecx, eax
+ 00b47 8b c1 mov eax, ecx
+ 00b49 c1 f8 11 sar eax, 17
+ 00b4c 8b c8 mov ecx, eax
+ 00b4e e8 00 00 00 00 call stbi__clamp
+ 00b53 b9 01 00 00 00 mov ecx, 1
+ 00b58 48 6b c9 01 imul rcx, rcx, 1
+ 00b5c 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00b63 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2800 : o[6] = stbi__clamp((x1 - t2) >> 17);
+
+ 00b66 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR t2$20[rbp]
+ 00b6c 8b 8d a4 04 00
+ 00 mov ecx, DWORD PTR x1$28[rbp]
+ 00b72 2b c8 sub ecx, eax
+ 00b74 8b c1 mov eax, ecx
+ 00b76 c1 f8 11 sar eax, 17
+ 00b79 8b c8 mov ecx, eax
+ 00b7b e8 00 00 00 00 call stbi__clamp
+ 00b80 b9 01 00 00 00 mov ecx, 1
+ 00b85 48 6b c9 06 imul rcx, rcx, 6
+ 00b89 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00b90 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2801 : o[2] = stbi__clamp((x2 + t1) >> 17);
+
+ 00b93 8b 85 84 03 00
+ 00 mov eax, DWORD PTR t1$19[rbp]
+ 00b99 8b 8d c4 04 00
+ 00 mov ecx, DWORD PTR x2$29[rbp]
+ 00b9f 03 c8 add ecx, eax
+ 00ba1 8b c1 mov eax, ecx
+ 00ba3 c1 f8 11 sar eax, 17
+ 00ba6 8b c8 mov ecx, eax
+ 00ba8 e8 00 00 00 00 call stbi__clamp
+ 00bad b9 01 00 00 00 mov ecx, 1
+ 00bb2 48 6b c9 02 imul rcx, rcx, 2
+ 00bb6 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00bbd 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2802 : o[5] = stbi__clamp((x2 - t1) >> 17);
+
+ 00bc0 8b 85 84 03 00
+ 00 mov eax, DWORD PTR t1$19[rbp]
+ 00bc6 8b 8d c4 04 00
+ 00 mov ecx, DWORD PTR x2$29[rbp]
+ 00bcc 2b c8 sub ecx, eax
+ 00bce 8b c1 mov eax, ecx
+ 00bd0 c1 f8 11 sar eax, 17
+ 00bd3 8b c8 mov ecx, eax
+ 00bd5 e8 00 00 00 00 call stbi__clamp
+ 00bda b9 01 00 00 00 mov ecx, 1
+ 00bdf 48 6b c9 05 imul rcx, rcx, 5
+ 00be3 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00bea 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2803 : o[3] = stbi__clamp((x3 + t0) >> 17);
+
+ 00bed 8b 85 64 03 00
+ 00 mov eax, DWORD PTR t0$18[rbp]
+ 00bf3 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR x3$30[rbp]
+ 00bf9 03 c8 add ecx, eax
+ 00bfb 8b c1 mov eax, ecx
+ 00bfd c1 f8 11 sar eax, 17
+ 00c00 8b c8 mov ecx, eax
+ 00c02 e8 00 00 00 00 call stbi__clamp
+ 00c07 b9 01 00 00 00 mov ecx, 1
+ 00c0c 48 6b c9 03 imul rcx, rcx, 3
+ 00c10 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00c17 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2804 : o[4] = stbi__clamp((x3 - t0) >> 17);
+
+ 00c1a 8b 85 64 03 00
+ 00 mov eax, DWORD PTR t0$18[rbp]
+ 00c20 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR x3$30[rbp]
+ 00c26 2b c8 sub ecx, eax
+ 00c28 8b c1 mov eax, ecx
+ 00c2a c1 f8 11 sar eax, 17
+ 00c2d 8b c8 mov ecx, eax
+ 00c2f e8 00 00 00 00 call stbi__clamp
+ 00c34 b9 01 00 00 00 mov ecx, 1
+ 00c39 48 6b c9 04 imul rcx, rcx, 4
+ 00c3d 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR o$[rbp]
+ 00c44 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2805 : }
+
+ 00c47 e9 e0 fa ff ff jmp $LN5@stbi__idct
+$LN6@stbi__idct:
+
+; 2806 : }
+
+ 00c4c 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00c50 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__idct_block$rtcFrameData
+ 00c57 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00c5c 48 8b 8d 38 07
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00c63 48 33 cd xor rcx, rbp
+ 00c66 e8 00 00 00 00 call __security_check_cookie
+ 00c6b 48 8d a5 48 07
+ 00 00 lea rsp, QWORD PTR [rbp+1864]
+ 00c72 5f pop rdi
+ 00c73 5d pop rbp
+ 00c74 c3 ret 0
+stbi__idct_block ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__clamp
+_TEXT SEGMENT
+x$ = 224
+stbi__clamp PROC ; COMDAT
+
+; 2694 : {
+
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 2695 : // trick to use a single test to catch both cases
+; 2696 : if ((unsigned int)x > 255) {
+
+ 0001f 81 bd e0 00 00
+ 00 ff 00 00 00 cmp DWORD PTR x$[rbp], 255 ; 000000ffH
+ 00029 76 1d jbe SHORT $LN2@stbi__clam
+
+; 2697 : if (x < 0)
+
+ 0002b 83 bd e0 00 00
+ 00 00 cmp DWORD PTR x$[rbp], 0
+ 00032 7d 04 jge SHORT $LN3@stbi__clam
+
+; 2698 : return 0;
+
+ 00034 32 c0 xor al, al
+ 00036 eb 17 jmp SHORT $LN1@stbi__clam
+$LN3@stbi__clam:
+
+; 2699 : if (x > 255)
+
+ 00038 81 bd e0 00 00
+ 00 ff 00 00 00 cmp DWORD PTR x$[rbp], 255 ; 000000ffH
+ 00042 7e 04 jle SHORT $LN4@stbi__clam
+
+; 2700 : return 255;
+
+ 00044 b0 ff mov al, 255 ; 000000ffH
+ 00046 eb 07 jmp SHORT $LN1@stbi__clam
+$LN4@stbi__clam:
+$LN2@stbi__clam:
+
+; 2701 : }
+; 2702 : return (stbi_uc)x;
+
+ 00048 0f b6 85 e0 00
+ 00 00 movzx eax, BYTE PTR x$[rbp]
+$LN1@stbi__clam:
+
+; 2703 : }
+
+ 0004f 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00056 5f pop rdi
+ 00057 5d pop rbp
+ 00058 c3 ret 0
+stbi__clamp ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_decode_block_prog_ac
+_TEXT SEGMENT
+k$ = 4
+shift$1 = 36
+zig$2 = 68
+c$3 = 100
+r$4 = 132
+s$5 = 164
+rs$6 = 196
+bit$7 = 228
+p$8 = 264
+r$9 = 292
+s$10 = 324
+rs$11 = 356
+p$12 = 392
+tv371 = 596
+tv393 = 596
+tv420 = 596
+tv354 = 600
+j$ = 640
+data$ = 648
+hac$ = 656
+fac$ = 664
+stbi__jpeg_decode_block_prog_ac PROC ; COMDAT
+
+; 2561 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 88 02
+ 00 00 sub rsp, 648 ; 00000288H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 2562 : int k;
+; 2563 : if (j->spec_start == 0)
+
+ 0002f 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00036 83 b8 34 48 00
+ 00 00 cmp DWORD PTR [rax+18484], 0
+ 0003d 75 11 jne SHORT $LN13@stbi__jpeg
+
+; 2564 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
+
+ 0003f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
+ 00046 e8 00 00 00 00 call stbi__err
+ 0004b e9 75 06 00 00 jmp $LN1@stbi__jpeg
+$LN13@stbi__jpeg:
+
+; 2565 :
+; 2566 : if (j->succ_high == 0) {
+
+ 00050 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00057 83 b8 3c 48 00
+ 00 00 cmp DWORD PTR [rax+18492], 0
+ 0005e 0f 85 f4 02 00
+ 00 jne $LN14@stbi__jpeg
+
+; 2567 : int shift = j->succ_low;
+
+ 00064 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0006b 8b 80 40 48 00
+ 00 mov eax, DWORD PTR [rax+18496]
+ 00071 89 45 24 mov DWORD PTR shift$1[rbp], eax
+
+; 2568 :
+; 2569 : if (j->eob_run) {
+
+ 00074 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0007b 83 b8 44 48 00
+ 00 00 cmp DWORD PTR [rax+18500], 0
+ 00082 74 26 je SHORT $LN16@stbi__jpeg
+
+; 2570 : --j->eob_run;
+
+ 00084 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0008b 8b 80 44 48 00
+ 00 mov eax, DWORD PTR [rax+18500]
+ 00091 ff c8 dec eax
+ 00093 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0009a 89 81 44 48 00
+ 00 mov DWORD PTR [rcx+18500], eax
+
+; 2571 : return 1;
+
+ 000a0 b8 01 00 00 00 mov eax, 1
+ 000a5 e9 1b 06 00 00 jmp $LN1@stbi__jpeg
+$LN16@stbi__jpeg:
+
+; 2572 : }
+; 2573 :
+; 2574 : k = j->spec_start;
+
+ 000aa 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000b1 8b 80 34 48 00
+ 00 mov eax, DWORD PTR [rax+18484]
+ 000b7 89 45 04 mov DWORD PTR k$[rbp], eax
+$LN4@stbi__jpeg:
+
+; 2575 : do {
+; 2576 : unsigned int zig;
+; 2577 : int c, r, s;
+; 2578 : if (j->code_bits < 16)
+
+ 000ba 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000c1 83 b8 24 48 00
+ 00 10 cmp DWORD PTR [rax+18468], 16
+ 000c8 7d 0d jge SHORT $LN17@stbi__jpeg
+
+; 2579 : stbi__grow_buffer_unsafe(j);
+
+ 000ca 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000d1 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 000d6 90 npad 1
+$LN17@stbi__jpeg:
+
+; 2580 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1);
+
+ 000d7 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000de 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 000e4 c1 e8 17 shr eax, 23
+ 000e7 25 ff 01 00 00 and eax, 511 ; 000001ffH
+ 000ec 89 45 64 mov DWORD PTR c$3[rbp], eax
+
+; 2581 : r = fac[c];
+
+ 000ef 48 63 45 64 movsxd rax, DWORD PTR c$3[rbp]
+ 000f3 48 8b 8d 98 02
+ 00 00 mov rcx, QWORD PTR fac$[rbp]
+ 000fa 0f bf 04 41 movsx eax, WORD PTR [rcx+rax*2]
+ 000fe 89 85 84 00 00
+ 00 mov DWORD PTR r$4[rbp], eax
+
+; 2582 : if (r) { // fast-AC path
+
+ 00104 83 bd 84 00 00
+ 00 00 cmp DWORD PTR r$4[rbp], 0
+ 0010b 0f 84 e5 00 00
+ 00 je $LN18@stbi__jpeg
+
+; 2583 : k += (r >> 4) & 15; // run
+
+ 00111 8b 85 84 00 00
+ 00 mov eax, DWORD PTR r$4[rbp]
+ 00117 c1 f8 04 sar eax, 4
+ 0011a 83 e0 0f and eax, 15
+ 0011d 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
+ 00120 03 c8 add ecx, eax
+ 00122 8b c1 mov eax, ecx
+ 00124 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2584 : s = r & 15; // combined length
+
+ 00127 8b 85 84 00 00
+ 00 mov eax, DWORD PTR r$4[rbp]
+ 0012d 83 e0 0f and eax, 15
+ 00130 89 85 a4 00 00
+ 00 mov DWORD PTR s$5[rbp], eax
+
+; 2585 : if (s > j->code_bits)
+
+ 00136 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0013d 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 00143 39 85 a4 00 00
+ 00 cmp DWORD PTR s$5[rbp], eax
+ 00149 7e 11 jle SHORT $LN20@stbi__jpeg
+
+; 2586 : return stbi__err(
+
+ 0014b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 00152 e8 00 00 00 00 call stbi__err
+ 00157 e9 69 05 00 00 jmp $LN1@stbi__jpeg
+$LN20@stbi__jpeg:
+
+; 2587 : "bad huffman code",
+; 2588 : "Combined length longer than code bits available");
+; 2589 : j->code_buffer <<= s;
+
+ 0015c 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR s$5[rbp]
+ 00162 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00169 48 89 8d 58 02
+ 00 00 mov QWORD PTR tv354[rbp], rcx
+ 00170 0f b6 c8 movzx ecx, al
+ 00173 48 8b 85 58 02
+ 00 00 mov rax, QWORD PTR tv354[rbp]
+ 0017a 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 00180 d3 e0 shl eax, cl
+ 00182 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00189 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2590 : j->code_bits -= s;
+
+ 0018f 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00196 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR s$5[rbp]
+ 0019c 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 001a2 2b c1 sub eax, ecx
+ 001a4 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 001ab 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2591 : zig = stbi__jpeg_dezigzag[k++];
+
+ 001b1 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
+ 001b5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
+ 001bc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 001c0 89 45 44 mov DWORD PTR zig$2[rbp], eax
+ 001c3 8b 45 04 mov eax, DWORD PTR k$[rbp]
+ 001c6 ff c0 inc eax
+ 001c8 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2592 : data[zig] = (short)((r >> 8) * (1 << shift));
+
+ 001cb 8b 85 84 00 00
+ 00 mov eax, DWORD PTR r$4[rbp]
+ 001d1 c1 f8 08 sar eax, 8
+ 001d4 8b 4d 24 mov ecx, DWORD PTR shift$1[rbp]
+ 001d7 ba 01 00 00 00 mov edx, 1
+ 001dc d3 e2 shl edx, cl
+ 001de 8b ca mov ecx, edx
+ 001e0 0f af c1 imul eax, ecx
+ 001e3 8b 4d 44 mov ecx, DWORD PTR zig$2[rbp]
+ 001e6 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 001ed 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
+
+; 2593 : } else {
+
+ 001f1 e9 47 01 00 00 jmp $LN19@stbi__jpeg
+$LN18@stbi__jpeg:
+
+; 2594 : int rs = stbi__jpeg_huff_decode(j, hac);
+
+ 001f6 48 8b 95 90 02
+ 00 00 mov rdx, QWORD PTR hac$[rbp]
+ 001fd 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00204 e8 00 00 00 00 call stbi__jpeg_huff_decode
+ 00209 89 85 c4 00 00
+ 00 mov DWORD PTR rs$6[rbp], eax
+
+; 2595 : if (rs < 0)
+
+ 0020f 83 bd c4 00 00
+ 00 00 cmp DWORD PTR rs$6[rbp], 0
+ 00216 7d 11 jge SHORT $LN21@stbi__jpeg
+
+; 2596 : return stbi__err("bad huffman code", "Corrupt JPEG");
+
+ 00218 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 0021f e8 00 00 00 00 call stbi__err
+ 00224 e9 9c 04 00 00 jmp $LN1@stbi__jpeg
+$LN21@stbi__jpeg:
+
+; 2597 : s = rs & 15;
+
+ 00229 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR rs$6[rbp]
+ 0022f 83 e0 0f and eax, 15
+ 00232 89 85 a4 00 00
+ 00 mov DWORD PTR s$5[rbp], eax
+
+; 2598 : r = rs >> 4;
+
+ 00238 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR rs$6[rbp]
+ 0023e c1 f8 04 sar eax, 4
+ 00241 89 85 84 00 00
+ 00 mov DWORD PTR r$4[rbp], eax
+
+; 2599 : if (s == 0) {
+
+ 00247 83 bd a4 00 00
+ 00 00 cmp DWORD PTR s$5[rbp], 0
+ 0024e 0f 85 90 00 00
+ 00 jne $LN22@stbi__jpeg
+
+; 2600 : if (r < 15) {
+
+ 00254 83 bd 84 00 00
+ 00 0f cmp DWORD PTR r$4[rbp], 15
+ 0025b 7d 7c jge SHORT $LN24@stbi__jpeg
+
+; 2601 : j->eob_run = (1 << r);
+
+ 0025d 8b 85 84 00 00
+ 00 mov eax, DWORD PTR r$4[rbp]
+ 00263 b9 01 00 00 00 mov ecx, 1
+ 00268 89 8d 54 02 00
+ 00 mov DWORD PTR tv371[rbp], ecx
+ 0026e 0f b6 c8 movzx ecx, al
+ 00271 8b 85 54 02 00
+ 00 mov eax, DWORD PTR tv371[rbp]
+ 00277 d3 e0 shl eax, cl
+ 00279 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00280 89 81 44 48 00
+ 00 mov DWORD PTR [rcx+18500], eax
+
+; 2602 : if (r)
+
+ 00286 83 bd 84 00 00
+ 00 00 cmp DWORD PTR r$4[rbp], 0
+ 0028d 74 2c je SHORT $LN25@stbi__jpeg
+
+; 2603 : j->eob_run += stbi__jpeg_get_bits(j, r);
+
+ 0028f 8b 95 84 00 00
+ 00 mov edx, DWORD PTR r$4[rbp]
+ 00295 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0029c e8 00 00 00 00 call stbi__jpeg_get_bits
+ 002a1 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 002a8 03 81 44 48 00
+ 00 add eax, DWORD PTR [rcx+18500]
+ 002ae 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 002b5 89 81 44 48 00
+ 00 mov DWORD PTR [rcx+18500], eax
+$LN25@stbi__jpeg:
+
+; 2604 : --j->eob_run;
+
+ 002bb 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 002c2 8b 80 44 48 00
+ 00 mov eax, DWORD PTR [rax+18500]
+ 002c8 ff c8 dec eax
+ 002ca 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 002d1 89 81 44 48 00
+ 00 mov DWORD PTR [rcx+18500], eax
+
+; 2605 : break;
+
+ 002d7 eb 7a jmp SHORT $LN3@stbi__jpeg
+$LN24@stbi__jpeg:
+
+; 2606 : }
+; 2607 : k += 16;
+
+ 002d9 8b 45 04 mov eax, DWORD PTR k$[rbp]
+ 002dc 83 c0 10 add eax, 16
+ 002df 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2608 : } else {
+
+ 002e2 eb 59 jmp SHORT $LN23@stbi__jpeg
+$LN22@stbi__jpeg:
+
+; 2609 : k += r;
+
+ 002e4 8b 85 84 00 00
+ 00 mov eax, DWORD PTR r$4[rbp]
+ 002ea 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
+ 002ed 03 c8 add ecx, eax
+ 002ef 8b c1 mov eax, ecx
+ 002f1 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2610 : zig = stbi__jpeg_dezigzag[k++];
+
+ 002f4 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
+ 002f8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
+ 002ff 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00303 89 45 44 mov DWORD PTR zig$2[rbp], eax
+ 00306 8b 45 04 mov eax, DWORD PTR k$[rbp]
+ 00309 ff c0 inc eax
+ 0030b 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2611 : data[zig] =
+
+ 0030e 8b 95 a4 00 00
+ 00 mov edx, DWORD PTR s$5[rbp]
+ 00314 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0031b e8 00 00 00 00 call stbi__extend_receive
+ 00320 8b 4d 24 mov ecx, DWORD PTR shift$1[rbp]
+ 00323 ba 01 00 00 00 mov edx, 1
+ 00328 d3 e2 shl edx, cl
+ 0032a 8b ca mov ecx, edx
+ 0032c 0f af c1 imul eax, ecx
+ 0032f 8b 4d 44 mov ecx, DWORD PTR zig$2[rbp]
+ 00332 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 00339 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
+$LN23@stbi__jpeg:
+$LN19@stbi__jpeg:
+
+; 2612 : (short)(stbi__extend_receive(j, s) * (1 << shift));
+; 2613 : }
+; 2614 : }
+; 2615 : } while (k <= j->spec_end);
+
+ 0033d 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00344 8b 80 38 48 00
+ 00 mov eax, DWORD PTR [rax+18488]
+ 0034a 39 45 04 cmp DWORD PTR k$[rbp], eax
+ 0034d 0f 8e 67 fd ff
+ ff jle $LN4@stbi__jpeg
+$LN3@stbi__jpeg:
+
+; 2616 : } else {
+
+ 00353 e9 68 03 00 00 jmp $LN15@stbi__jpeg
+$LN14@stbi__jpeg:
+
+; 2617 : // refinement scan for these AC coefficients
+; 2618 :
+; 2619 : short bit = (short)(1 << j->succ_low);
+
+ 00358 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0035f 8b 80 40 48 00
+ 00 mov eax, DWORD PTR [rax+18496]
+ 00365 b9 01 00 00 00 mov ecx, 1
+ 0036a 89 8d 54 02 00
+ 00 mov DWORD PTR tv393[rbp], ecx
+ 00370 0f b6 c8 movzx ecx, al
+ 00373 8b 85 54 02 00
+ 00 mov eax, DWORD PTR tv393[rbp]
+ 00379 d3 e0 shl eax, cl
+ 0037b 66 89 85 e4 00
+ 00 00 mov WORD PTR bit$7[rbp], ax
+
+; 2620 :
+; 2621 : if (j->eob_run) {
+
+ 00382 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00389 83 b8 44 48 00
+ 00 00 cmp DWORD PTR [rax+18500], 0
+ 00390 0f 84 fa 00 00
+ 00 je $LN26@stbi__jpeg
+
+; 2622 : --j->eob_run;
+
+ 00396 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0039d 8b 80 44 48 00
+ 00 mov eax, DWORD PTR [rax+18500]
+ 003a3 ff c8 dec eax
+ 003a5 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 003ac 89 81 44 48 00
+ 00 mov DWORD PTR [rcx+18500], eax
+
+; 2623 : for (k = j->spec_start; k <= j->spec_end; ++k) {
+
+ 003b2 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 003b9 8b 80 34 48 00
+ 00 mov eax, DWORD PTR [rax+18484]
+ 003bf 89 45 04 mov DWORD PTR k$[rbp], eax
+ 003c2 eb 08 jmp SHORT $LN7@stbi__jpeg
+$LN5@stbi__jpeg:
+ 003c4 8b 45 04 mov eax, DWORD PTR k$[rbp]
+ 003c7 ff c0 inc eax
+ 003c9 89 45 04 mov DWORD PTR k$[rbp], eax
+$LN7@stbi__jpeg:
+ 003cc 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 003d3 8b 80 38 48 00
+ 00 mov eax, DWORD PTR [rax+18488]
+ 003d9 39 45 04 cmp DWORD PTR k$[rbp], eax
+ 003dc 0f 8f a9 00 00
+ 00 jg $LN6@stbi__jpeg
+
+; 2624 : short *p = &data[stbi__jpeg_dezigzag[k]];
+
+ 003e2 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
+ 003e6 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
+ 003ed 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 003f1 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 003f8 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 003fc 48 89 85 08 01
+ 00 00 mov QWORD PTR p$8[rbp], rax
+
+; 2625 : if (*p != 0)
+
+ 00403 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR p$8[rbp]
+ 0040a 0f bf 00 movsx eax, WORD PTR [rax]
+ 0040d 85 c0 test eax, eax
+ 0040f 74 75 je SHORT $LN28@stbi__jpeg
+
+; 2626 : if (stbi__jpeg_get_bit(j))
+
+ 00411 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00418 e8 00 00 00 00 call stbi__jpeg_get_bit
+ 0041d 85 c0 test eax, eax
+ 0041f 74 65 je SHORT $LN29@stbi__jpeg
+
+; 2627 : if ((*p & bit) == 0) {
+
+ 00421 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR p$8[rbp]
+ 00428 0f bf 00 movsx eax, WORD PTR [rax]
+ 0042b 0f bf 8d e4 00
+ 00 00 movsx ecx, WORD PTR bit$7[rbp]
+ 00432 23 c1 and eax, ecx
+ 00434 85 c0 test eax, eax
+ 00436 75 4e jne SHORT $LN30@stbi__jpeg
+
+; 2628 : if (*p > 0)
+
+ 00438 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR p$8[rbp]
+ 0043f 0f bf 00 movsx eax, WORD PTR [rax]
+ 00442 85 c0 test eax, eax
+ 00444 7e 21 jle SHORT $LN31@stbi__jpeg
+
+; 2629 : *p += bit;
+
+ 00446 0f bf 85 e4 00
+ 00 00 movsx eax, WORD PTR bit$7[rbp]
+ 0044d 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR p$8[rbp]
+ 00454 0f bf 09 movsx ecx, WORD PTR [rcx]
+ 00457 03 c8 add ecx, eax
+ 00459 8b c1 mov eax, ecx
+ 0045b 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR p$8[rbp]
+ 00462 66 89 01 mov WORD PTR [rcx], ax
+ 00465 eb 1f jmp SHORT $LN32@stbi__jpeg
+$LN31@stbi__jpeg:
+
+; 2630 : else
+; 2631 : *p -= bit;
+
+ 00467 0f bf 85 e4 00
+ 00 00 movsx eax, WORD PTR bit$7[rbp]
+ 0046e 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR p$8[rbp]
+ 00475 0f bf 09 movsx ecx, WORD PTR [rcx]
+ 00478 2b c8 sub ecx, eax
+ 0047a 8b c1 mov eax, ecx
+ 0047c 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR p$8[rbp]
+ 00483 66 89 01 mov WORD PTR [rcx], ax
+$LN32@stbi__jpeg:
+$LN30@stbi__jpeg:
+$LN29@stbi__jpeg:
+$LN28@stbi__jpeg:
+
+; 2632 : }
+; 2633 : }
+
+ 00486 e9 39 ff ff ff jmp $LN5@stbi__jpeg
+$LN6@stbi__jpeg:
+
+; 2634 : } else {
+
+ 0048b e9 30 02 00 00 jmp $LN27@stbi__jpeg
+$LN26@stbi__jpeg:
+
+; 2635 : k = j->spec_start;
+
+ 00490 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00497 8b 80 34 48 00
+ 00 mov eax, DWORD PTR [rax+18484]
+ 0049d 89 45 04 mov DWORD PTR k$[rbp], eax
+$LN10@stbi__jpeg:
+
+; 2636 : do {
+; 2637 : int r, s;
+; 2638 : int rs = stbi__jpeg_huff_decode(
+
+ 004a0 48 8b 95 90 02
+ 00 00 mov rdx, QWORD PTR hac$[rbp]
+ 004a7 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 004ae e8 00 00 00 00 call stbi__jpeg_huff_decode
+ 004b3 89 85 64 01 00
+ 00 mov DWORD PTR rs$11[rbp], eax
+
+; 2639 : j,
+; 2640 : hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh
+; 2641 : if (rs < 0)
+
+ 004b9 83 bd 64 01 00
+ 00 00 cmp DWORD PTR rs$11[rbp], 0
+ 004c0 7d 11 jge SHORT $LN33@stbi__jpeg
+
+; 2642 : return stbi__err("bad huffman code", "Corrupt JPEG");
+
+ 004c2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 004c9 e8 00 00 00 00 call stbi__err
+ 004ce e9 f2 01 00 00 jmp $LN1@stbi__jpeg
+$LN33@stbi__jpeg:
+
+; 2643 : s = rs & 15;
+
+ 004d3 8b 85 64 01 00
+ 00 mov eax, DWORD PTR rs$11[rbp]
+ 004d9 83 e0 0f and eax, 15
+ 004dc 89 85 44 01 00
+ 00 mov DWORD PTR s$10[rbp], eax
+
+; 2644 : r = rs >> 4;
+
+ 004e2 8b 85 64 01 00
+ 00 mov eax, DWORD PTR rs$11[rbp]
+ 004e8 c1 f8 04 sar eax, 4
+ 004eb 89 85 24 01 00
+ 00 mov DWORD PTR r$9[rbp], eax
+
+; 2645 : if (s == 0) {
+
+ 004f1 83 bd 44 01 00
+ 00 00 cmp DWORD PTR s$10[rbp], 0
+ 004f8 75 75 jne SHORT $LN34@stbi__jpeg
+
+; 2646 : if (r < 15) {
+
+ 004fa 83 bd 24 01 00
+ 00 0f cmp DWORD PTR r$9[rbp], 15
+ 00501 7d 6a jge SHORT $LN36@stbi__jpeg
+
+; 2647 : j->eob_run = (1 << r) - 1;
+
+ 00503 8b 85 24 01 00
+ 00 mov eax, DWORD PTR r$9[rbp]
+ 00509 b9 01 00 00 00 mov ecx, 1
+ 0050e 89 8d 54 02 00
+ 00 mov DWORD PTR tv420[rbp], ecx
+ 00514 0f b6 c8 movzx ecx, al
+ 00517 8b 85 54 02 00
+ 00 mov eax, DWORD PTR tv420[rbp]
+ 0051d d3 e0 shl eax, cl
+ 0051f ff c8 dec eax
+ 00521 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00528 89 81 44 48 00
+ 00 mov DWORD PTR [rcx+18500], eax
+
+; 2648 : if (r)
+
+ 0052e 83 bd 24 01 00
+ 00 00 cmp DWORD PTR r$9[rbp], 0
+ 00535 74 2c je SHORT $LN38@stbi__jpeg
+
+; 2649 : j->eob_run += stbi__jpeg_get_bits(j, r);
+
+ 00537 8b 95 24 01 00
+ 00 mov edx, DWORD PTR r$9[rbp]
+ 0053d 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00544 e8 00 00 00 00 call stbi__jpeg_get_bits
+ 00549 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00550 03 81 44 48 00
+ 00 add eax, DWORD PTR [rcx+18500]
+ 00556 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0055d 89 81 44 48 00
+ 00 mov DWORD PTR [rcx+18500], eax
+$LN38@stbi__jpeg:
+
+; 2650 : r = 64; // force end of block
+
+ 00563 c7 85 24 01 00
+ 00 40 00 00 00 mov DWORD PTR r$9[rbp], 64 ; 00000040H
+$LN36@stbi__jpeg:
+
+; 2651 : } else {
+; 2652 : // r=15 s=0 should write 16 0s, so we just do
+; 2653 : // a run of 15 0s and then write s (which is 0),
+; 2654 : // so we don't have to do anything special here
+; 2655 : }
+; 2656 : } else {
+
+ 0056d eb 48 jmp SHORT $LN35@stbi__jpeg
+$LN34@stbi__jpeg:
+
+; 2657 : if (s != 1)
+
+ 0056f 83 bd 44 01 00
+ 00 01 cmp DWORD PTR s$10[rbp], 1
+ 00576 74 11 je SHORT $LN39@stbi__jpeg
+
+; 2658 : return stbi__err("bad huffman code",
+
+ 00578 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 0057f e8 00 00 00 00 call stbi__err
+ 00584 e9 3c 01 00 00 jmp $LN1@stbi__jpeg
+$LN39@stbi__jpeg:
+
+; 2659 : "Corrupt JPEG");
+; 2660 : // sign bit
+; 2661 : if (stbi__jpeg_get_bit(j))
+
+ 00589 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00590 e8 00 00 00 00 call stbi__jpeg_get_bit
+ 00595 85 c0 test eax, eax
+ 00597 74 0f je SHORT $LN40@stbi__jpeg
+
+; 2662 : s = bit;
+
+ 00599 0f bf 85 e4 00
+ 00 00 movsx eax, WORD PTR bit$7[rbp]
+ 005a0 89 85 44 01 00
+ 00 mov DWORD PTR s$10[rbp], eax
+ 005a6 eb 0f jmp SHORT $LN41@stbi__jpeg
+$LN40@stbi__jpeg:
+
+; 2663 : else
+; 2664 : s = -bit;
+
+ 005a8 0f bf 85 e4 00
+ 00 00 movsx eax, WORD PTR bit$7[rbp]
+ 005af f7 d8 neg eax
+ 005b1 89 85 44 01 00
+ 00 mov DWORD PTR s$10[rbp], eax
+$LN41@stbi__jpeg:
+$LN35@stbi__jpeg:
+$LN11@stbi__jpeg:
+
+; 2665 : }
+; 2666 :
+; 2667 : // advance by r
+; 2668 : while (k <= j->spec_end) {
+
+ 005b7 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 005be 8b 80 38 48 00
+ 00 mov eax, DWORD PTR [rax+18488]
+ 005c4 39 45 04 cmp DWORD PTR k$[rbp], eax
+ 005c7 0f 8f dd 00 00
+ 00 jg $LN12@stbi__jpeg
+
+; 2669 : short *p = &data[stbi__jpeg_dezigzag[k++]];
+
+ 005cd 48 63 45 04 movsxd rax, DWORD PTR k$[rbp]
+ 005d1 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
+ 005d8 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 005dc 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 005e3 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 005e7 48 89 85 88 01
+ 00 00 mov QWORD PTR p$12[rbp], rax
+ 005ee 8b 45 04 mov eax, DWORD PTR k$[rbp]
+ 005f1 ff c0 inc eax
+ 005f3 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2670 : if (*p != 0) {
+
+ 005f6 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR p$12[rbp]
+ 005fd 0f bf 00 movsx eax, WORD PTR [rax]
+ 00600 85 c0 test eax, eax
+ 00602 74 77 je SHORT $LN42@stbi__jpeg
+
+; 2671 : if (stbi__jpeg_get_bit(j))
+
+ 00604 48 8b 8d 80 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0060b e8 00 00 00 00 call stbi__jpeg_get_bit
+ 00610 85 c0 test eax, eax
+ 00612 74 65 je SHORT $LN44@stbi__jpeg
+
+; 2672 : if ((*p & bit) == 0) {
+
+ 00614 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR p$12[rbp]
+ 0061b 0f bf 00 movsx eax, WORD PTR [rax]
+ 0061e 0f bf 8d e4 00
+ 00 00 movsx ecx, WORD PTR bit$7[rbp]
+ 00625 23 c1 and eax, ecx
+ 00627 85 c0 test eax, eax
+ 00629 75 4e jne SHORT $LN45@stbi__jpeg
+
+; 2673 : if (*p > 0)
+
+ 0062b 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR p$12[rbp]
+ 00632 0f bf 00 movsx eax, WORD PTR [rax]
+ 00635 85 c0 test eax, eax
+ 00637 7e 21 jle SHORT $LN46@stbi__jpeg
+
+; 2674 : *p += bit;
+
+ 00639 0f bf 85 e4 00
+ 00 00 movsx eax, WORD PTR bit$7[rbp]
+ 00640 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR p$12[rbp]
+ 00647 0f bf 09 movsx ecx, WORD PTR [rcx]
+ 0064a 03 c8 add ecx, eax
+ 0064c 8b c1 mov eax, ecx
+ 0064e 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR p$12[rbp]
+ 00655 66 89 01 mov WORD PTR [rcx], ax
+ 00658 eb 1f jmp SHORT $LN47@stbi__jpeg
+$LN46@stbi__jpeg:
+
+; 2675 : else
+; 2676 : *p -= bit;
+
+ 0065a 0f bf 85 e4 00
+ 00 00 movsx eax, WORD PTR bit$7[rbp]
+ 00661 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR p$12[rbp]
+ 00668 0f bf 09 movsx ecx, WORD PTR [rcx]
+ 0066b 2b c8 sub ecx, eax
+ 0066d 8b c1 mov eax, ecx
+ 0066f 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR p$12[rbp]
+ 00676 66 89 01 mov WORD PTR [rcx], ax
+$LN47@stbi__jpeg:
+$LN45@stbi__jpeg:
+$LN44@stbi__jpeg:
+
+; 2677 : }
+; 2678 : } else {
+
+ 00679 eb 2a jmp SHORT $LN43@stbi__jpeg
+$LN42@stbi__jpeg:
+
+; 2679 : if (r == 0) {
+
+ 0067b 83 bd 24 01 00
+ 00 00 cmp DWORD PTR r$9[rbp], 0
+ 00682 75 13 jne SHORT $LN48@stbi__jpeg
+
+; 2680 : *p = (short)s;
+
+ 00684 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR p$12[rbp]
+ 0068b 0f b7 8d 44 01
+ 00 00 movzx ecx, WORD PTR s$10[rbp]
+ 00692 66 89 08 mov WORD PTR [rax], cx
+
+; 2681 : break;
+
+ 00695 eb 13 jmp SHORT $LN12@stbi__jpeg
+$LN48@stbi__jpeg:
+
+; 2682 : }
+; 2683 : --r;
+
+ 00697 8b 85 24 01 00
+ 00 mov eax, DWORD PTR r$9[rbp]
+ 0069d ff c8 dec eax
+ 0069f 89 85 24 01 00
+ 00 mov DWORD PTR r$9[rbp], eax
+$LN43@stbi__jpeg:
+
+; 2684 : }
+; 2685 : }
+
+ 006a5 e9 0d ff ff ff jmp $LN11@stbi__jpeg
+$LN12@stbi__jpeg:
+
+; 2686 : } while (k <= j->spec_end);
+
+ 006aa 48 8b 85 80 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 006b1 8b 80 38 48 00
+ 00 mov eax, DWORD PTR [rax+18488]
+ 006b7 39 45 04 cmp DWORD PTR k$[rbp], eax
+ 006ba 0f 8e e0 fd ff
+ ff jle $LN10@stbi__jpeg
+$LN27@stbi__jpeg:
+$LN15@stbi__jpeg:
+
+; 2687 : }
+; 2688 : }
+; 2689 : return 1;
+
+ 006c0 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__jpeg:
+
+; 2690 : }
+
+ 006c5 48 8d a5 68 02
+ 00 00 lea rsp, QWORD PTR [rbp+616]
+ 006cc 5f pop rdi
+ 006cd 5d pop rbp
+ 006ce c3 ret 0
+stbi__jpeg_decode_block_prog_ac ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_decode_block_prog_dc
+_TEXT SEGMENT
+diff$ = 4
+dc$ = 36
+t$ = 68
+tv87 = 276
+tv206 = 276
+tv210 = 276
+j$ = 320
+data$ = 328
+hdc$ = 336
+b$ = 344
+stbi__jpeg_decode_block_prog_dc PROC ; COMDAT
+
+; 2525 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 2526 : int diff, dc;
+; 2527 : int t;
+; 2528 : if (j->spec_end != 0)
+
+ 0002f 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00036 83 b8 38 48 00
+ 00 00 cmp DWORD PTR [rax+18488], 0
+ 0003d 74 11 je SHORT $LN2@stbi__jpeg
+
+; 2529 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
+
+ 0003f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
+ 00046 e8 00 00 00 00 call stbi__err
+ 0004b e9 f5 01 00 00 jmp $LN1@stbi__jpeg
+$LN2@stbi__jpeg:
+
+; 2530 :
+; 2531 : if (j->code_bits < 16)
+
+ 00050 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00057 83 b8 24 48 00
+ 00 10 cmp DWORD PTR [rax+18468], 16
+ 0005e 7d 0d jge SHORT $LN3@stbi__jpeg
+
+; 2532 : stbi__grow_buffer_unsafe(j);
+
+ 00060 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00067 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 0006c 90 npad 1
+$LN3@stbi__jpeg:
+
+; 2533 :
+; 2534 : if (j->succ_high == 0) {
+
+ 0006d 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00074 83 b8 3c 48 00
+ 00 00 cmp DWORD PTR [rax+18492], 0
+ 0007b 0f 85 6c 01 00
+ 00 jne $LN4@stbi__jpeg
+
+; 2535 : // first scan for DC coefficient, must be first
+; 2536 : memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now
+
+ 00081 41 b8 80 00 00
+ 00 mov r8d, 128 ; 00000080H
+ 00087 33 d2 xor edx, edx
+ 00089 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00090 e8 00 00 00 00 call memset
+ 00095 90 npad 1
+
+; 2537 : t = stbi__jpeg_huff_decode(j, hdc);
+
+ 00096 48 8b 95 50 01
+ 00 00 mov rdx, QWORD PTR hdc$[rbp]
+ 0009d 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000a4 e8 00 00 00 00 call stbi__jpeg_huff_decode
+ 000a9 89 45 44 mov DWORD PTR t$[rbp], eax
+
+; 2538 : if (t < 0 || t > 15)
+
+ 000ac 83 7d 44 00 cmp DWORD PTR t$[rbp], 0
+ 000b0 7c 06 jl SHORT $LN7@stbi__jpeg
+ 000b2 83 7d 44 0f cmp DWORD PTR t$[rbp], 15
+ 000b6 7e 11 jle SHORT $LN6@stbi__jpeg
+$LN7@stbi__jpeg:
+
+; 2539 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
+
+ 000b8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
+ 000bf e8 00 00 00 00 call stbi__err
+ 000c4 e9 7c 01 00 00 jmp $LN1@stbi__jpeg
+$LN6@stbi__jpeg:
+
+; 2540 : diff = t ? stbi__extend_receive(j, t) : 0;
+
+ 000c9 83 7d 44 00 cmp DWORD PTR t$[rbp], 0
+ 000cd 74 17 je SHORT $LN12@stbi__jpeg
+ 000cf 8b 55 44 mov edx, DWORD PTR t$[rbp]
+ 000d2 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000d9 e8 00 00 00 00 call stbi__extend_receive
+ 000de 89 85 14 01 00
+ 00 mov DWORD PTR tv87[rbp], eax
+ 000e4 eb 0a jmp SHORT $LN13@stbi__jpeg
+$LN12@stbi__jpeg:
+ 000e6 c7 85 14 01 00
+ 00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
+$LN13@stbi__jpeg:
+ 000f0 8b 85 14 01 00
+ 00 mov eax, DWORD PTR tv87[rbp]
+ 000f6 89 45 04 mov DWORD PTR diff$[rbp], eax
+
+; 2541 :
+; 2542 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff))
+
+ 000f9 48 63 85 58 01
+ 00 00 movsxd rax, DWORD PTR b$[rbp]
+ 00100 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00104 8b 55 04 mov edx, DWORD PTR diff$[rbp]
+ 00107 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0010e 8b 8c 01 b8 46
+ 00 00 mov ecx, DWORD PTR [rcx+rax+18104]
+ 00115 e8 00 00 00 00 call stbi__addints_valid
+ 0011a 85 c0 test eax, eax
+ 0011c 75 11 jne SHORT $LN8@stbi__jpeg
+
+; 2543 : return stbi__err("bad delta", "Corrupt JPEG");
+
+ 0011e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09IFDKCGFO@bad?5delta@
+ 00125 e8 00 00 00 00 call stbi__err
+ 0012a e9 16 01 00 00 jmp $LN1@stbi__jpeg
+$LN8@stbi__jpeg:
+
+; 2544 : dc = j->img_comp[b].dc_pred + diff;
+
+ 0012f 48 63 85 58 01
+ 00 00 movsxd rax, DWORD PTR b$[rbp]
+ 00136 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 0013a 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00141 8b 84 01 b8 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18104]
+ 00148 03 45 04 add eax, DWORD PTR diff$[rbp]
+ 0014b 89 45 24 mov DWORD PTR dc$[rbp], eax
+
+; 2545 : j->img_comp[b].dc_pred = dc;
+
+ 0014e 48 63 85 58 01
+ 00 00 movsxd rax, DWORD PTR b$[rbp]
+ 00155 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00159 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00160 8b 55 24 mov edx, DWORD PTR dc$[rbp]
+ 00163 89 94 01 b8 46
+ 00 00 mov DWORD PTR [rcx+rax+18104], edx
+
+; 2546 : if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low))
+
+ 0016a 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00171 8b 80 40 48 00
+ 00 mov eax, DWORD PTR [rax+18496]
+ 00177 b9 01 00 00 00 mov ecx, 1
+ 0017c 89 8d 14 01 00
+ 00 mov DWORD PTR tv206[rbp], ecx
+ 00182 0f b6 c8 movzx ecx, al
+ 00185 8b 85 14 01 00
+ 00 mov eax, DWORD PTR tv206[rbp]
+ 0018b d3 e0 shl eax, cl
+ 0018d 8b d0 mov edx, eax
+ 0018f 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
+ 00192 e8 00 00 00 00 call stbi__mul2shorts_valid
+ 00197 85 c0 test eax, eax
+ 00199 75 11 jne SHORT $LN9@stbi__jpeg
+
+; 2547 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
+
+ 0019b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
+ 001a2 e8 00 00 00 00 call stbi__err
+ 001a7 e9 99 00 00 00 jmp $LN1@stbi__jpeg
+$LN9@stbi__jpeg:
+
+; 2548 : data[0] = (short)(dc * (1 << j->succ_low));
+
+ 001ac 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 001b3 8b 80 40 48 00
+ 00 mov eax, DWORD PTR [rax+18496]
+ 001b9 b9 01 00 00 00 mov ecx, 1
+ 001be 89 8d 14 01 00
+ 00 mov DWORD PTR tv210[rbp], ecx
+ 001c4 0f b6 c8 movzx ecx, al
+ 001c7 8b 85 14 01 00
+ 00 mov eax, DWORD PTR tv210[rbp]
+ 001cd d3 e0 shl eax, cl
+ 001cf 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
+ 001d2 0f af c8 imul ecx, eax
+ 001d5 8b c1 mov eax, ecx
+ 001d7 b9 02 00 00 00 mov ecx, 2
+ 001dc 48 6b c9 00 imul rcx, rcx, 0
+ 001e0 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 001e7 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2549 : } else {
+
+ 001eb eb 53 jmp SHORT $LN5@stbi__jpeg
+$LN4@stbi__jpeg:
+
+; 2550 : // refinement scan for DC coefficient
+; 2551 : if (stbi__jpeg_get_bit(j))
+
+ 001ed 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 001f4 e8 00 00 00 00 call stbi__jpeg_get_bit
+ 001f9 85 c0 test eax, eax
+ 001fb 74 43 je SHORT $LN10@stbi__jpeg
+
+; 2552 : data[0] += (short)(1 << j->succ_low);
+
+ 001fd b8 02 00 00 00 mov eax, 2
+ 00202 48 6b c0 00 imul rax, rax, 0
+ 00206 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0020d 8b 89 40 48 00
+ 00 mov ecx, DWORD PTR [rcx+18496]
+ 00213 ba 01 00 00 00 mov edx, 1
+ 00218 d3 e2 shl edx, cl
+ 0021a 8b ca mov ecx, edx
+ 0021c 0f bf c9 movsx ecx, cx
+ 0021f 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 00226 0f bf 04 02 movsx eax, WORD PTR [rdx+rax]
+ 0022a 03 c1 add eax, ecx
+ 0022c b9 02 00 00 00 mov ecx, 2
+ 00231 48 6b c9 00 imul rcx, rcx, 0
+ 00235 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 0023c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+$LN10@stbi__jpeg:
+$LN5@stbi__jpeg:
+
+; 2553 : }
+; 2554 : return 1;
+
+ 00240 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__jpeg:
+
+; 2555 : }
+
+ 00245 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 0024c 5f pop rdi
+ 0024d 5d pop rbp
+ 0024e c3 ret 0
+stbi__jpeg_decode_block_prog_dc ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_decode_block
+_TEXT SEGMENT
+diff$ = 4
+dc$ = 36
+k$ = 68
+t$ = 100
+zig$1 = 132
+c$2 = 164
+r$3 = 196
+s$4 = 228
+rs$5 = 260
+tv81 = 468
+tv276 = 472
+j$ = 512
+data$ = 520
+hdc$ = 528
+hac$ = 536
+fac$ = 544
+b$ = 552
+dequant$ = 560
+stbi__jpeg_decode_block PROC ; COMDAT
+
+; 2461 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 02
+ 00 00 sub rsp, 520 ; 00000208H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 2462 : int diff, dc, k;
+; 2463 : int t;
+; 2464 :
+; 2465 : if (j->code_bits < 16)
+
+ 0002f 48 8b 85 00 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00036 83 b8 24 48 00
+ 00 10 cmp DWORD PTR [rax+18468], 16
+ 0003d 7d 0d jge SHORT $LN5@stbi__jpeg
+
+; 2466 : stbi__grow_buffer_unsafe(j);
+
+ 0003f 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00046 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 0004b 90 npad 1
+$LN5@stbi__jpeg:
+
+; 2467 : t = stbi__jpeg_huff_decode(j, hdc);
+
+ 0004c 48 8b 95 10 02
+ 00 00 mov rdx, QWORD PTR hdc$[rbp]
+ 00053 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0005a e8 00 00 00 00 call stbi__jpeg_huff_decode
+ 0005f 89 45 64 mov DWORD PTR t$[rbp], eax
+
+; 2468 : if (t < 0 || t > 15)
+
+ 00062 83 7d 64 00 cmp DWORD PTR t$[rbp], 0
+ 00066 7c 06 jl SHORT $LN7@stbi__jpeg
+ 00068 83 7d 64 0f cmp DWORD PTR t$[rbp], 15
+ 0006c 7e 11 jle SHORT $LN6@stbi__jpeg
+$LN7@stbi__jpeg:
+
+; 2469 : return stbi__err("bad huffman code", "Corrupt JPEG");
+
+ 0006e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 00075 e8 00 00 00 00 call stbi__err
+ 0007a e9 53 03 00 00 jmp $LN1@stbi__jpeg
+$LN6@stbi__jpeg:
+
+; 2470 :
+; 2471 : // 0 all the ac values now so we can do it 32-bits at a time
+; 2472 : memset(data, 0, 64 * sizeof(data[0]));
+
+ 0007f 41 b8 80 00 00
+ 00 mov r8d, 128 ; 00000080H
+ 00085 33 d2 xor edx, edx
+ 00087 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 0008e e8 00 00 00 00 call memset
+ 00093 90 npad 1
+
+; 2473 :
+; 2474 : diff = t ? stbi__extend_receive(j, t) : 0;
+
+ 00094 83 7d 64 00 cmp DWORD PTR t$[rbp], 0
+ 00098 74 17 je SHORT $LN19@stbi__jpeg
+ 0009a 8b 55 64 mov edx, DWORD PTR t$[rbp]
+ 0009d 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000a4 e8 00 00 00 00 call stbi__extend_receive
+ 000a9 89 85 d4 01 00
+ 00 mov DWORD PTR tv81[rbp], eax
+ 000af eb 0a jmp SHORT $LN20@stbi__jpeg
+$LN19@stbi__jpeg:
+ 000b1 c7 85 d4 01 00
+ 00 00 00 00 00 mov DWORD PTR tv81[rbp], 0
+$LN20@stbi__jpeg:
+ 000bb 8b 85 d4 01 00
+ 00 mov eax, DWORD PTR tv81[rbp]
+ 000c1 89 45 04 mov DWORD PTR diff$[rbp], eax
+
+; 2475 : if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff))
+
+ 000c4 48 63 85 28 02
+ 00 00 movsxd rax, DWORD PTR b$[rbp]
+ 000cb 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 000cf 8b 55 04 mov edx, DWORD PTR diff$[rbp]
+ 000d2 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000d9 8b 8c 01 b8 46
+ 00 00 mov ecx, DWORD PTR [rcx+rax+18104]
+ 000e0 e8 00 00 00 00 call stbi__addints_valid
+ 000e5 85 c0 test eax, eax
+ 000e7 75 11 jne SHORT $LN8@stbi__jpeg
+
+; 2476 : return stbi__err("bad delta", "Corrupt JPEG");
+
+ 000e9 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09IFDKCGFO@bad?5delta@
+ 000f0 e8 00 00 00 00 call stbi__err
+ 000f5 e9 d8 02 00 00 jmp $LN1@stbi__jpeg
+$LN8@stbi__jpeg:
+
+; 2477 : dc = j->img_comp[b].dc_pred + diff;
+
+ 000fa 48 63 85 28 02
+ 00 00 movsxd rax, DWORD PTR b$[rbp]
+ 00101 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00105 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0010c 8b 84 01 b8 46
+ 00 00 mov eax, DWORD PTR [rcx+rax+18104]
+ 00113 03 45 04 add eax, DWORD PTR diff$[rbp]
+ 00116 89 45 24 mov DWORD PTR dc$[rbp], eax
+
+; 2478 : j->img_comp[b].dc_pred = dc;
+
+ 00119 48 63 85 28 02
+ 00 00 movsxd rax, DWORD PTR b$[rbp]
+ 00120 48 6b c0 60 imul rax, rax, 96 ; 00000060H
+ 00124 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0012b 8b 55 24 mov edx, DWORD PTR dc$[rbp]
+ 0012e 89 94 01 b8 46
+ 00 00 mov DWORD PTR [rcx+rax+18104], edx
+
+; 2479 : if (!stbi__mul2shorts_valid(dc, dequant[0]))
+
+ 00135 b8 02 00 00 00 mov eax, 2
+ 0013a 48 6b c0 00 imul rax, rax, 0
+ 0013e 48 8b 8d 30 02
+ 00 00 mov rcx, QWORD PTR dequant$[rbp]
+ 00145 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00149 8b d0 mov edx, eax
+ 0014b 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
+ 0014e e8 00 00 00 00 call stbi__mul2shorts_valid
+ 00153 85 c0 test eax, eax
+ 00155 75 11 jne SHORT $LN9@stbi__jpeg
+
+; 2480 : return stbi__err("can't merge dc and ac", "Corrupt JPEG");
+
+ 00157 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@
+ 0015e e8 00 00 00 00 call stbi__err
+ 00163 e9 6a 02 00 00 jmp $LN1@stbi__jpeg
+$LN9@stbi__jpeg:
+
+; 2481 : data[0] = (short)(dc * dequant[0]);
+
+ 00168 b8 02 00 00 00 mov eax, 2
+ 0016d 48 6b c0 00 imul rax, rax, 0
+ 00171 48 8b 8d 30 02
+ 00 00 mov rcx, QWORD PTR dequant$[rbp]
+ 00178 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 0017c 8b 4d 24 mov ecx, DWORD PTR dc$[rbp]
+ 0017f 0f af c8 imul ecx, eax
+ 00182 8b c1 mov eax, ecx
+ 00184 b9 02 00 00 00 mov ecx, 2
+ 00189 48 6b c9 00 imul rcx, rcx, 0
+ 0018d 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 00194 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2482 :
+; 2483 : // decode AC components, see JPEG spec
+; 2484 : k = 1;
+
+ 00198 c7 45 44 01 00
+ 00 00 mov DWORD PTR k$[rbp], 1
+$LN4@stbi__jpeg:
+
+; 2485 : do {
+; 2486 : unsigned int zig;
+; 2487 : int c, r, s;
+; 2488 : if (j->code_bits < 16)
+
+ 0019f 48 8b 85 00 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 001a6 83 b8 24 48 00
+ 00 10 cmp DWORD PTR [rax+18468], 16
+ 001ad 7d 0d jge SHORT $LN10@stbi__jpeg
+
+; 2489 : stbi__grow_buffer_unsafe(j);
+
+ 001af 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 001b6 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 001bb 90 npad 1
+$LN10@stbi__jpeg:
+
+; 2490 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1);
+
+ 001bc 48 8b 85 00 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 001c3 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 001c9 c1 e8 17 shr eax, 23
+ 001cc 25 ff 01 00 00 and eax, 511 ; 000001ffH
+ 001d1 89 85 a4 00 00
+ 00 mov DWORD PTR c$2[rbp], eax
+
+; 2491 : r = fac[c];
+
+ 001d7 48 63 85 a4 00
+ 00 00 movsxd rax, DWORD PTR c$2[rbp]
+ 001de 48 8b 8d 20 02
+ 00 00 mov rcx, QWORD PTR fac$[rbp]
+ 001e5 0f bf 04 41 movsx eax, WORD PTR [rcx+rax*2]
+ 001e9 89 85 c4 00 00
+ 00 mov DWORD PTR r$3[rbp], eax
+
+; 2492 : if (r) { // fast-AC path
+
+ 001ef 83 bd c4 00 00
+ 00 00 cmp DWORD PTR r$3[rbp], 0
+ 001f6 0f 84 f0 00 00
+ 00 je $LN11@stbi__jpeg
+
+; 2493 : k += (r >> 4) & 15; // run
+
+ 001fc 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR r$3[rbp]
+ 00202 c1 f8 04 sar eax, 4
+ 00205 83 e0 0f and eax, 15
+ 00208 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
+ 0020b 03 c8 add ecx, eax
+ 0020d 8b c1 mov eax, ecx
+ 0020f 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 2494 : s = r & 15; // combined length
+
+ 00212 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR r$3[rbp]
+ 00218 83 e0 0f and eax, 15
+ 0021b 89 85 e4 00 00
+ 00 mov DWORD PTR s$4[rbp], eax
+
+; 2495 : if (s > j->code_bits)
+
+ 00221 48 8b 85 00 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00228 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 0022e 39 85 e4 00 00
+ 00 cmp DWORD PTR s$4[rbp], eax
+ 00234 7e 11 jle SHORT $LN13@stbi__jpeg
+
+; 2496 : return stbi__err("bad huffman code",
+
+ 00236 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 0023d e8 00 00 00 00 call stbi__err
+ 00242 e9 8b 01 00 00 jmp $LN1@stbi__jpeg
+$LN13@stbi__jpeg:
+
+; 2497 : "Combined length longer than code bits available");
+; 2498 : j->code_buffer <<= s;
+
+ 00247 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR s$4[rbp]
+ 0024d 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00254 48 89 8d d8 01
+ 00 00 mov QWORD PTR tv276[rbp], rcx
+ 0025b 0f b6 c8 movzx ecx, al
+ 0025e 48 8b 85 d8 01
+ 00 00 mov rax, QWORD PTR tv276[rbp]
+ 00265 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 0026b d3 e0 shl eax, cl
+ 0026d 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00274 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2499 : j->code_bits -= s;
+
+ 0027a 48 8b 85 00 02
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00281 8b 8d e4 00 00
+ 00 mov ecx, DWORD PTR s$4[rbp]
+ 00287 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 0028d 2b c1 sub eax, ecx
+ 0028f 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00296 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2500 : // decode into unzigzag'd location
+; 2501 : zig = stbi__jpeg_dezigzag[k++];
+
+ 0029c 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 002a0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
+ 002a7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 002ab 89 85 84 00 00
+ 00 mov DWORD PTR zig$1[rbp], eax
+ 002b1 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 002b4 ff c0 inc eax
+ 002b6 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 2502 : data[zig] = (short)((r >> 8) * dequant[zig]);
+
+ 002b9 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR r$3[rbp]
+ 002bf c1 f8 08 sar eax, 8
+ 002c2 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR zig$1[rbp]
+ 002c8 48 8b 95 30 02
+ 00 00 mov rdx, QWORD PTR dequant$[rbp]
+ 002cf 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2]
+ 002d3 0f af c1 imul eax, ecx
+ 002d6 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR zig$1[rbp]
+ 002dc 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 002e3 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
+
+; 2503 : } else {
+
+ 002e7 e9 d7 00 00 00 jmp $LN12@stbi__jpeg
+$LN11@stbi__jpeg:
+
+; 2504 : int rs = stbi__jpeg_huff_decode(j, hac);
+
+ 002ec 48 8b 95 18 02
+ 00 00 mov rdx, QWORD PTR hac$[rbp]
+ 002f3 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 002fa e8 00 00 00 00 call stbi__jpeg_huff_decode
+ 002ff 89 85 04 01 00
+ 00 mov DWORD PTR rs$5[rbp], eax
+
+; 2505 : if (rs < 0)
+
+ 00305 83 bd 04 01 00
+ 00 00 cmp DWORD PTR rs$5[rbp], 0
+ 0030c 7d 11 jge SHORT $LN14@stbi__jpeg
+
+; 2506 : return stbi__err("bad huffman code", "Corrupt JPEG");
+
+ 0030e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@
+ 00315 e8 00 00 00 00 call stbi__err
+ 0031a e9 b3 00 00 00 jmp $LN1@stbi__jpeg
+$LN14@stbi__jpeg:
+
+; 2507 : s = rs & 15;
+
+ 0031f 8b 85 04 01 00
+ 00 mov eax, DWORD PTR rs$5[rbp]
+ 00325 83 e0 0f and eax, 15
+ 00328 89 85 e4 00 00
+ 00 mov DWORD PTR s$4[rbp], eax
+
+; 2508 : r = rs >> 4;
+
+ 0032e 8b 85 04 01 00
+ 00 mov eax, DWORD PTR rs$5[rbp]
+ 00334 c1 f8 04 sar eax, 4
+ 00337 89 85 c4 00 00
+ 00 mov DWORD PTR r$3[rbp], eax
+
+; 2509 : if (s == 0) {
+
+ 0033d 83 bd e4 00 00
+ 00 00 cmp DWORD PTR s$4[rbp], 0
+ 00344 75 19 jne SHORT $LN15@stbi__jpeg
+
+; 2510 : if (rs != 0xf0)
+
+ 00346 81 bd 04 01 00
+ 00 f0 00 00 00 cmp DWORD PTR rs$5[rbp], 240 ; 000000f0H
+ 00350 74 02 je SHORT $LN17@stbi__jpeg
+
+; 2511 : break; // end block
+
+ 00352 eb 79 jmp SHORT $LN3@stbi__jpeg
+$LN17@stbi__jpeg:
+
+; 2512 : k += 16;
+
+ 00354 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 00357 83 c0 10 add eax, 16
+ 0035a 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 2513 : } else {
+
+ 0035d eb 64 jmp SHORT $LN16@stbi__jpeg
+$LN15@stbi__jpeg:
+
+; 2514 : k += r;
+
+ 0035f 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR r$3[rbp]
+ 00365 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
+ 00368 03 c8 add ecx, eax
+ 0036a 8b c1 mov eax, ecx
+ 0036c 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 2515 : // decode into unzigzag'd location
+; 2516 : zig = stbi__jpeg_dezigzag[k++];
+
+ 0036f 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 00373 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag
+ 0037a 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0037e 89 85 84 00 00
+ 00 mov DWORD PTR zig$1[rbp], eax
+ 00384 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 00387 ff c0 inc eax
+ 00389 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 2517 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]);
+
+ 0038c 8b 95 e4 00 00
+ 00 mov edx, DWORD PTR s$4[rbp]
+ 00392 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00399 e8 00 00 00 00 call stbi__extend_receive
+ 0039e 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR zig$1[rbp]
+ 003a4 48 8b 95 30 02
+ 00 00 mov rdx, QWORD PTR dequant$[rbp]
+ 003ab 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2]
+ 003af 0f af c1 imul eax, ecx
+ 003b2 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR zig$1[rbp]
+ 003b8 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR data$[rbp]
+ 003bf 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
+$LN16@stbi__jpeg:
+$LN12@stbi__jpeg:
+
+; 2518 : }
+; 2519 : }
+; 2520 : } while (k < 64);
+
+ 003c3 83 7d 44 40 cmp DWORD PTR k$[rbp], 64 ; 00000040H
+ 003c7 0f 8c d2 fd ff
+ ff jl $LN4@stbi__jpeg
+$LN3@stbi__jpeg:
+
+; 2521 : return 1;
+
+ 003cd b8 01 00 00 00 mov eax, 1
+$LN1@stbi__jpeg:
+
+; 2522 : }
+
+ 003d2 48 8d a5 e8 01
+ 00 00 lea rsp, QWORD PTR [rbp+488]
+ 003d9 5f pop rdi
+ 003da 5d pop rbp
+ 003db c3 ret 0
+stbi__jpeg_decode_block ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_get_bit
+_TEXT SEGMENT
+k$ = 4
+j$ = 256
+stbi__jpeg_get_bit PROC ; COMDAT
+
+; 2435 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 2436 : unsigned int k;
+; 2437 : if (j->code_bits < 1)
+
+ 00020 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00027 83 b8 24 48 00
+ 00 01 cmp DWORD PTR [rax+18468], 1
+ 0002e 7d 0d jge SHORT $LN2@stbi__jpeg
+
+; 2438 : stbi__grow_buffer_unsafe(j);
+
+ 00030 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00037 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 0003c 90 npad 1
+$LN2@stbi__jpeg:
+
+; 2439 : if (j->code_bits < 1)
+
+ 0003d 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00044 83 b8 24 48 00
+ 00 01 cmp DWORD PTR [rax+18468], 1
+ 0004b 7d 04 jge SHORT $LN3@stbi__jpeg
+
+; 2440 : return 0; // ran out of bits from stream, return 0s intead of continuing
+
+ 0004d 33 c0 xor eax, eax
+ 0004f eb 50 jmp SHORT $LN1@stbi__jpeg
+$LN3@stbi__jpeg:
+
+; 2441 : k = j->code_buffer;
+
+ 00051 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00058 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 0005e 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2442 : j->code_buffer <<= 1;
+
+ 00061 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00068 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 0006e d1 e0 shl eax, 1
+ 00070 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00077 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2443 : --j->code_bits;
+
+ 0007d 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00084 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 0008a ff c8 dec eax
+ 0008c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00093 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2444 : return k & 0x80000000;
+
+ 00099 8b 45 04 mov eax, DWORD PTR k$[rbp]
+ 0009c 25 00 00 00 80 and eax, -2147483648 ; 80000000H
+$LN1@stbi__jpeg:
+
+; 2445 : }
+
+ 000a1 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000a8 5f pop rdi
+ 000a9 5d pop rbp
+ 000aa c3 ret 0
+stbi__jpeg_get_bit ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_get_bits
+_TEXT SEGMENT
+k$ = 4
+j$ = 256
+n$ = 264
+stbi__jpeg_get_bits PROC ; COMDAT
+
+; 2421 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 2422 : unsigned int k;
+; 2423 : if (j->code_bits < n)
+
+ 00024 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0002b 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00031 39 88 24 48 00
+ 00 cmp DWORD PTR [rax+18468], ecx
+ 00037 7d 0d jge SHORT $LN2@stbi__jpeg
+
+; 2424 : stbi__grow_buffer_unsafe(j);
+
+ 00039 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00040 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 00045 90 npad 1
+$LN2@stbi__jpeg:
+
+; 2425 : if (j->code_bits < n)
+
+ 00046 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0004d 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00053 39 88 24 48 00
+ 00 cmp DWORD PTR [rax+18468], ecx
+ 00059 7d 07 jge SHORT $LN3@stbi__jpeg
+
+; 2426 : return 0; // ran out of bits from stream, return 0s intead of continuing
+
+ 0005b 33 c0 xor eax, eax
+ 0005d e9 82 00 00 00 jmp $LN1@stbi__jpeg
+$LN3@stbi__jpeg:
+
+; 2427 : k = stbi_lrot(j->code_buffer, n);
+
+ 00062 8b 95 08 01 00
+ 00 mov edx, DWORD PTR n$[rbp]
+ 00068 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0006f 8b 88 20 48 00
+ 00 mov ecx, DWORD PTR [rax+18464]
+ 00075 e8 00 00 00 00 call _lrotl
+ 0007a 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2428 : j->code_buffer = k & ~stbi__bmask[n];
+
+ 0007d 48 63 85 08 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 00084 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__bmask
+ 0008b 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 0008e f7 d0 not eax
+ 00090 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
+ 00093 23 c8 and ecx, eax
+ 00095 8b c1 mov eax, ecx
+ 00097 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0009e 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2429 : k &= stbi__bmask[n];
+
+ 000a4 48 63 85 08 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 000ab 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__bmask
+ 000b2 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 000b5 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
+ 000b8 23 c8 and ecx, eax
+ 000ba 8b c1 mov eax, ecx
+ 000bc 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2430 : j->code_bits -= n;
+
+ 000bf 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000c6 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 000cc 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 000d2 2b c1 sub eax, ecx
+ 000d4 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000db 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2431 : return k;
+
+ 000e1 8b 45 04 mov eax, DWORD PTR k$[rbp]
+$LN1@stbi__jpeg:
+
+; 2432 : }
+
+ 000e4 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000eb 5f pop rdi
+ 000ec 5d pop rbp
+ 000ed c3 ret 0
+stbi__jpeg_get_bits ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__extend_receive
+_TEXT SEGMENT
+k$ = 4
+sgn$ = 36
+j$ = 288
+n$ = 296
+stbi__extend_receive PROC ; COMDAT
+
+; 2402 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 2403 : unsigned int k;
+; 2404 : int sgn;
+; 2405 : if (j->code_bits < n)
+
+ 00024 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0002b 8b 8d 28 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00031 39 88 24 48 00
+ 00 cmp DWORD PTR [rax+18468], ecx
+ 00037 7d 0d jge SHORT $LN2@stbi__exte
+
+; 2406 : stbi__grow_buffer_unsafe(j);
+
+ 00039 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00040 e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 00045 90 npad 1
+$LN2@stbi__exte:
+
+; 2407 : if (j->code_bits < n)
+
+ 00046 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0004d 8b 8d 28 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00053 39 88 24 48 00
+ 00 cmp DWORD PTR [rax+18468], ecx
+ 00059 7d 07 jge SHORT $LN3@stbi__exte
+
+; 2408 : return 0; // ran out of bits from stream, return 0s intead of continuing
+
+ 0005b 33 c0 xor eax, eax
+ 0005d e9 b1 00 00 00 jmp $LN1@stbi__exte
+$LN3@stbi__exte:
+
+; 2409 :
+; 2410 : sgn = j->code_buffer >>
+
+ 00062 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00069 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 0006f c1 e8 1f shr eax, 31
+ 00072 89 45 24 mov DWORD PTR sgn$[rbp], eax
+
+; 2411 : 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative)
+; 2412 : k = stbi_lrot(j->code_buffer, n);
+
+ 00075 8b 95 28 01 00
+ 00 mov edx, DWORD PTR n$[rbp]
+ 0007b 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00082 8b 88 20 48 00
+ 00 mov ecx, DWORD PTR [rax+18464]
+ 00088 e8 00 00 00 00 call _lrotl
+ 0008d 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2413 : j->code_buffer = k & ~stbi__bmask[n];
+
+ 00090 48 63 85 28 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 00097 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__bmask
+ 0009e 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 000a1 f7 d0 not eax
+ 000a3 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
+ 000a6 23 c8 and ecx, eax
+ 000a8 8b c1 mov eax, ecx
+ 000aa 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000b1 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2414 : k &= stbi__bmask[n];
+
+ 000b7 48 63 85 28 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 000be 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__bmask
+ 000c5 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 000c8 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
+ 000cb 23 c8 and ecx, eax
+ 000cd 8b c1 mov eax, ecx
+ 000cf 89 45 04 mov DWORD PTR k$[rbp], eax
+
+; 2415 : j->code_bits -= n;
+
+ 000d2 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000d9 8b 8d 28 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 000df 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 000e5 2b c1 sub eax, ecx
+ 000e7 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000ee 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2416 : return k + (stbi__jbias[n] & (sgn - 1));
+
+ 000f4 48 63 85 28 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 000fb 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:stbi__jbias
+ 00102 8b 55 24 mov edx, DWORD PTR sgn$[rbp]
+ 00105 ff ca dec edx
+ 00107 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 0010a 23 c2 and eax, edx
+ 0010c 8b 4d 04 mov ecx, DWORD PTR k$[rbp]
+ 0010f 03 c8 add ecx, eax
+ 00111 8b c1 mov eax, ecx
+$LN1@stbi__exte:
+
+; 2417 : }
+
+ 00113 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 0011a 5f pop rdi
+ 0011b 5d pop rbp
+ 0011c c3 ret 0
+stbi__extend_receive ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_huff_decode
+_TEXT SEGMENT
+temp$ = 4
+c$ = 36
+k$ = 68
+s$1 = 100
+tv212 = 312
+tv233 = 312
+tv242 = 312
+tv253 = 312
+j$ = 352
+h$ = 360
+stbi__jpeg_huff_decode PROC ; COMDAT
+
+; 2343 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 68 01
+ 00 00 sub rsp, 360 ; 00000168H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 2344 : unsigned int temp;
+; 2345 : int c, k;
+; 2346 :
+; 2347 : if (j->code_bits < 16)
+
+ 00025 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0002c 83 b8 24 48 00
+ 00 10 cmp DWORD PTR [rax+18468], 16
+ 00033 7d 0d jge SHORT $LN5@stbi__jpeg
+
+; 2348 : stbi__grow_buffer_unsafe(j);
+
+ 00035 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0003c e8 00 00 00 00 call stbi__grow_buffer_unsafe
+ 00041 90 npad 1
+$LN5@stbi__jpeg:
+
+; 2349 :
+; 2350 : // look at the top FAST_BITS and determine what symbol ID it is,
+; 2351 : // if the code is <= FAST_BITS
+; 2352 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1);
+
+ 00042 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00049 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 0004f c1 e8 17 shr eax, 23
+ 00052 25 ff 01 00 00 and eax, 511 ; 000001ffH
+ 00057 89 45 24 mov DWORD PTR c$[rbp], eax
+
+; 2353 : k = h->fast[c];
+
+ 0005a 48 63 45 24 movsxd rax, DWORD PTR c$[rbp]
+ 0005e 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00065 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00069 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 2354 : if (k < 255) {
+
+ 0006c 81 7d 44 ff 00
+ 00 00 cmp DWORD PTR k$[rbp], 255 ; 000000ffH
+ 00073 0f 8d 99 00 00
+ 00 jge $LN6@stbi__jpeg
+
+; 2355 : int s = h->size[k];
+
+ 00079 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 0007d 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00084 0f b6 84 01 00
+ 05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
+ 0008c 89 45 64 mov DWORD PTR s$1[rbp], eax
+
+; 2356 : if (s > j->code_bits)
+
+ 0008f 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00096 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 0009c 39 45 64 cmp DWORD PTR s$1[rbp], eax
+ 0009f 7e 0a jle SHORT $LN7@stbi__jpeg
+
+; 2357 : return -1;
+
+ 000a1 b8 ff ff ff ff mov eax, -1
+ 000a6 e9 41 02 00 00 jmp $LN1@stbi__jpeg
+$LN7@stbi__jpeg:
+
+; 2358 : j->code_buffer <<= s;
+
+ 000ab 8b 45 64 mov eax, DWORD PTR s$1[rbp]
+ 000ae 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000b5 48 89 8d 38 01
+ 00 00 mov QWORD PTR tv212[rbp], rcx
+ 000bc 0f b6 c8 movzx ecx, al
+ 000bf 48 8b 85 38 01
+ 00 00 mov rax, QWORD PTR tv212[rbp]
+ 000c6 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 000cc d3 e0 shl eax, cl
+ 000ce 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000d5 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2359 : j->code_bits -= s;
+
+ 000db 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000e2 8b 4d 64 mov ecx, DWORD PTR s$1[rbp]
+ 000e5 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 000eb 2b c1 sub eax, ecx
+ 000ed 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000f4 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2360 : return h->values[k];
+
+ 000fa 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 000fe 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00105 0f b6 84 01 00
+ 04 00 00 movzx eax, BYTE PTR [rcx+rax+1024]
+ 0010d e9 da 01 00 00 jmp $LN1@stbi__jpeg
+$LN6@stbi__jpeg:
+
+; 2361 : }
+; 2362 :
+; 2363 : // naive test is to shift the code_buffer down so k bits are
+; 2364 : // valid, then test against maxcode. To speed this up, we've
+; 2365 : // preshifted maxcode left so that it has (16-k) 0s at the
+; 2366 : // end; in other words, regardless of the number of bits, it
+; 2367 : // wants to be compared against something shifted to have 16;
+; 2368 : // that way we don't need to shift inside the loop.
+; 2369 : temp = j->code_buffer >> 16;
+
+ 00112 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00119 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 0011f c1 e8 10 shr eax, 16
+ 00122 89 45 04 mov DWORD PTR temp$[rbp], eax
+
+; 2370 : for (k = FAST_BITS + 1;; ++k)
+
+ 00125 c7 45 44 0a 00
+ 00 00 mov DWORD PTR k$[rbp], 10
+ 0012c eb 08 jmp SHORT $LN4@stbi__jpeg
+$LN2@stbi__jpeg:
+ 0012e 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 00131 ff c0 inc eax
+ 00133 89 45 44 mov DWORD PTR k$[rbp], eax
+$LN4@stbi__jpeg:
+
+; 2371 : if (temp < h->maxcode[k])
+
+ 00136 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 0013a 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00141 8b 84 81 04 06
+ 00 00 mov eax, DWORD PTR [rcx+rax*4+1540]
+ 00148 39 45 04 cmp DWORD PTR temp$[rbp], eax
+ 0014b 73 02 jae SHORT $LN8@stbi__jpeg
+
+; 2372 : break;
+
+ 0014d eb 02 jmp SHORT $LN3@stbi__jpeg
+$LN8@stbi__jpeg:
+ 0014f eb dd jmp SHORT $LN2@stbi__jpeg
+$LN3@stbi__jpeg:
+
+; 2373 : if (k == 17) {
+
+ 00151 83 7d 44 11 cmp DWORD PTR k$[rbp], 17
+ 00155 75 27 jne SHORT $LN9@stbi__jpeg
+
+; 2374 : // error! code not found
+; 2375 : j->code_bits -= 16;
+
+ 00157 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0015e 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 00164 83 e8 10 sub eax, 16
+ 00167 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 0016e 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2376 : return -1;
+
+ 00174 b8 ff ff ff ff mov eax, -1
+ 00179 e9 6e 01 00 00 jmp $LN1@stbi__jpeg
+$LN9@stbi__jpeg:
+
+; 2377 : }
+; 2378 :
+; 2379 : if (k > j->code_bits)
+
+ 0017e 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00185 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 0018b 39 45 44 cmp DWORD PTR k$[rbp], eax
+ 0018e 7e 0a jle SHORT $LN10@stbi__jpeg
+
+; 2380 : return -1;
+
+ 00190 b8 ff ff ff ff mov eax, -1
+ 00195 e9 52 01 00 00 jmp $LN1@stbi__jpeg
+$LN10@stbi__jpeg:
+
+; 2381 :
+; 2382 : // convert the huffman code to the symbol id
+; 2383 : c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k];
+
+ 0019a b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0019f 2b 45 44 sub eax, DWORD PTR k$[rbp]
+ 001a2 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 001a9 48 89 8d 38 01
+ 00 00 mov QWORD PTR tv233[rbp], rcx
+ 001b0 0f b6 c8 movzx ecx, al
+ 001b3 48 8b 85 38 01
+ 00 00 mov rax, QWORD PTR tv233[rbp]
+ 001ba 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 001c0 d3 e8 shr eax, cl
+ 001c2 48 63 4d 44 movsxd rcx, DWORD PTR k$[rbp]
+ 001c6 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__bmask
+ 001cd 23 04 8a and eax, DWORD PTR [rdx+rcx*4]
+ 001d0 48 63 4d 44 movsxd rcx, DWORD PTR k$[rbp]
+ 001d4 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR h$[rbp]
+ 001db 03 84 8a 4c 06
+ 00 00 add eax, DWORD PTR [rdx+rcx*4+1612]
+ 001e2 89 45 24 mov DWORD PTR c$[rbp], eax
+
+; 2384 : if (c < 0 || c >= 256) // symbol id out of bounds!
+
+ 001e5 83 7d 24 00 cmp DWORD PTR c$[rbp], 0
+ 001e9 7c 09 jl SHORT $LN12@stbi__jpeg
+ 001eb 81 7d 24 00 01
+ 00 00 cmp DWORD PTR c$[rbp], 256 ; 00000100H
+ 001f2 7c 0a jl SHORT $LN11@stbi__jpeg
+$LN12@stbi__jpeg:
+
+; 2385 : return -1;
+
+ 001f4 b8 ff ff ff ff mov eax, -1
+ 001f9 e9 ee 00 00 00 jmp $LN1@stbi__jpeg
+$LN11@stbi__jpeg:
+
+; 2386 : STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) ==
+
+ 001fe 48 63 45 24 movsxd rax, DWORD PTR c$[rbp]
+ 00202 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00209 0f b6 84 01 00
+ 05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
+ 00211 b9 20 00 00 00 mov ecx, 32 ; 00000020H
+ 00216 2b c8 sub ecx, eax
+ 00218 8b c1 mov eax, ecx
+ 0021a 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00221 48 89 8d 38 01
+ 00 00 mov QWORD PTR tv242[rbp], rcx
+ 00228 0f b6 c8 movzx ecx, al
+ 0022b 48 8b 85 38 01
+ 00 00 mov rax, QWORD PTR tv242[rbp]
+ 00232 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 00238 d3 e8 shr eax, cl
+ 0023a 48 63 4d 24 movsxd rcx, DWORD PTR c$[rbp]
+ 0023e 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR h$[rbp]
+ 00245 0f b6 8c 0a 00
+ 05 00 00 movzx ecx, BYTE PTR [rdx+rcx+1280]
+ 0024d 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__bmask
+ 00254 23 04 8a and eax, DWORD PTR [rdx+rcx*4]
+ 00257 48 63 4d 24 movsxd rcx, DWORD PTR c$[rbp]
+ 0025b 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR h$[rbp]
+ 00262 0f b7 8c 4a 00
+ 02 00 00 movzx ecx, WORD PTR [rdx+rcx*2+512]
+ 0026a 3b c1 cmp eax, ecx
+ 0026c 74 1c je SHORT $LN14@stbi__jpeg
+ 0026e 41 b8 53 09 00
+ 00 mov r8d, 2387 ; 00000953H
+ 00274 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 0027b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1KE@JGKPJEBO@?$AA?$CI?$AA?$CI?$AA?$CI?$AAj?$AA?9?$AA?$DO?$AAc?$AAo?$AAd?$AAe?$AA_?$AAb?$AAu?$AAf?$AAf@
+ 00282 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00288 33 c0 xor eax, eax
+$LN14@stbi__jpeg:
+
+; 2387 : h->code[c]);
+; 2388 :
+; 2389 : // convert the id to a symbol
+; 2390 : j->code_bits -= k;
+
+ 0028a 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00291 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
+ 00294 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 0029a 2b c1 sub eax, ecx
+ 0029c 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 002a3 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2391 : j->code_buffer <<= k;
+
+ 002a9 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 002ac 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 002b3 48 89 8d 38 01
+ 00 00 mov QWORD PTR tv253[rbp], rcx
+ 002ba 0f b6 c8 movzx ecx, al
+ 002bd 48 8b 85 38 01
+ 00 00 mov rax, QWORD PTR tv253[rbp]
+ 002c4 8b 80 20 48 00
+ 00 mov eax, DWORD PTR [rax+18464]
+ 002ca d3 e0 shl eax, cl
+ 002cc 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 002d3 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2392 : return h->values[c];
+
+ 002d9 48 63 45 24 movsxd rax, DWORD PTR c$[rbp]
+ 002dd 48 8b 8d 68 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 002e4 0f b6 84 01 00
+ 04 00 00 movzx eax, BYTE PTR [rcx+rax+1024]
+$LN1@stbi__jpeg:
+
+; 2393 : }
+
+ 002ec 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 002f3 5f pop rdi
+ 002f4 5d pop rbp
+ 002f5 c3 ret 0
+stbi__jpeg_huff_decode ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__grow_buffer_unsafe
+_TEXT SEGMENT
+b$1 = 4
+c$2 = 36
+tv70 = 244
+j$ = 288
+stbi__grow_buffer_unsafe PROC ; COMDAT
+
+; 2319 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+$LN4@stbi__grow:
+
+; 2320 : do {
+; 2321 : unsigned int b = j->nomore ? 0 : stbi__get8(j->s);
+
+ 00020 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00027 83 b8 2c 48 00
+ 00 00 cmp DWORD PTR [rax+18476], 0
+ 0002e 74 0c je SHORT $LN10@stbi__grow
+ 00030 c7 85 f4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv70[rbp], 0
+ 0003a eb 18 jmp SHORT $LN11@stbi__grow
+$LN10@stbi__grow:
+ 0003c 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00043 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00046 e8 00 00 00 00 call stbi__get8
+ 0004b 0f b6 c0 movzx eax, al
+ 0004e 89 85 f4 00 00
+ 00 mov DWORD PTR tv70[rbp], eax
+$LN11@stbi__grow:
+ 00054 8b 85 f4 00 00
+ 00 mov eax, DWORD PTR tv70[rbp]
+ 0005a 89 45 04 mov DWORD PTR b$1[rbp], eax
+
+; 2322 : if (b == 0xff) {
+
+ 0005d 81 7d 04 ff 00
+ 00 00 cmp DWORD PTR b$1[rbp], 255 ; 000000ffH
+ 00064 75 5f jne SHORT $LN7@stbi__grow
+
+; 2323 : int c = stbi__get8(j->s);
+
+ 00066 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0006d 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00070 e8 00 00 00 00 call stbi__get8
+ 00075 0f b6 c0 movzx eax, al
+ 00078 89 45 24 mov DWORD PTR c$2[rbp], eax
+$LN5@stbi__grow:
+
+; 2324 : while (c == 0xff)
+
+ 0007b 81 7d 24 ff 00
+ 00 00 cmp DWORD PTR c$2[rbp], 255 ; 000000ffH
+ 00082 75 17 jne SHORT $LN6@stbi__grow
+
+; 2325 : c = stbi__get8(j->s); // consume fill bytes
+
+ 00084 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 0008b 48 8b 08 mov rcx, QWORD PTR [rax]
+ 0008e e8 00 00 00 00 call stbi__get8
+ 00093 0f b6 c0 movzx eax, al
+ 00096 89 45 24 mov DWORD PTR c$2[rbp], eax
+ 00099 eb e0 jmp SHORT $LN5@stbi__grow
+$LN6@stbi__grow:
+
+; 2326 : if (c != 0) {
+
+ 0009b 83 7d 24 00 cmp DWORD PTR c$2[rbp], 0
+ 0009f 74 24 je SHORT $LN8@stbi__grow
+
+; 2327 : j->marker = (unsigned char)c;
+
+ 000a1 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000a8 0f b6 4d 24 movzx ecx, BYTE PTR c$2[rbp]
+ 000ac 88 88 28 48 00
+ 00 mov BYTE PTR [rax+18472], cl
+
+; 2328 : j->nomore = 1;
+
+ 000b2 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000b9 c7 80 2c 48 00
+ 00 01 00 00 00 mov DWORD PTR [rax+18476], 1
+
+; 2329 : return;
+
+ 000c3 eb 6b jmp SHORT $LN1@stbi__grow
+$LN8@stbi__grow:
+$LN7@stbi__grow:
+
+; 2330 : }
+; 2331 : }
+; 2332 : j->code_buffer |= b << (24 - j->code_bits);
+
+ 000c5 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 000cc b9 18 00 00 00 mov ecx, 24
+ 000d1 2b 88 24 48 00
+ 00 sub ecx, DWORD PTR [rax+18468]
+ 000d7 8b c1 mov eax, ecx
+ 000d9 0f b6 c8 movzx ecx, al
+ 000dc 8b 45 04 mov eax, DWORD PTR b$1[rbp]
+ 000df d3 e0 shl eax, cl
+ 000e1 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000e8 8b 89 20 48 00
+ 00 mov ecx, DWORD PTR [rcx+18464]
+ 000ee 0b c8 or ecx, eax
+ 000f0 8b c1 mov eax, ecx
+ 000f2 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 000f9 89 81 20 48 00
+ 00 mov DWORD PTR [rcx+18464], eax
+
+; 2333 : j->code_bits += 8;
+
+ 000ff 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00106 8b 80 24 48 00
+ 00 mov eax, DWORD PTR [rax+18468]
+ 0010c 83 c0 08 add eax, 8
+ 0010f 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR j$[rbp]
+ 00116 89 81 24 48 00
+ 00 mov DWORD PTR [rcx+18468], eax
+
+; 2334 : } while (j->code_bits <= 24);
+
+ 0011c 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR j$[rbp]
+ 00123 83 b8 24 48 00
+ 00 18 cmp DWORD PTR [rax+18468], 24
+ 0012a 0f 8e f0 fe ff
+ ff jle $LN4@stbi__grow
+$LN1@stbi__grow:
+
+; 2335 : }
+
+ 00130 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00137 5f pop rdi
+ 00138 5d pop rbp
+ 00139 c3 ret 0
+stbi__grow_buffer_unsafe ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__build_fast_ac
+_TEXT SEGMENT
+i$ = 4
+fast$1 = 36
+rs$2 = 68
+run$3 = 100
+magbits$4 = 132
+len$5 = 164
+k$6 = 196
+m$7 = 228
+tv174 = 436
+tv178 = 436
+fast_ac$ = 480
+h$ = 488
+stbi__build_fast_ac PROC ; COMDAT
+
+; 2291 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 2292 : int i;
+; 2293 : for (i = 0; i < (1 << FAST_BITS); ++i) {
+
+ 00025 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 0002c eb 08 jmp SHORT $LN4@stbi__buil
+$LN2@stbi__buil:
+ 0002e 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00031 ff c0 inc eax
+ 00033 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__buil:
+ 00036 81 7d 04 00 02
+ 00 00 cmp DWORD PTR i$[rbp], 512 ; 00000200H
+ 0003d 0f 8d 6b 01 00
+ 00 jge $LN3@stbi__buil
+
+; 2294 : stbi_uc fast = h->fast[i];
+
+ 00043 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00047 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 0004e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00052 88 45 24 mov BYTE PTR fast$1[rbp], al
+
+; 2295 : fast_ac[i] = 0;
+
+ 00055 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00059 33 c9 xor ecx, ecx
+ 0005b 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR fast_ac$[rbp]
+ 00062 66 89 0c 42 mov WORD PTR [rdx+rax*2], cx
+
+; 2296 : if (fast < 255) {
+
+ 00066 0f b6 45 24 movzx eax, BYTE PTR fast$1[rbp]
+ 0006a 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 0006f 0f 8d 34 01 00
+ 00 jge $LN5@stbi__buil
+
+; 2297 : int rs = h->values[fast];
+
+ 00075 0f b6 45 24 movzx eax, BYTE PTR fast$1[rbp]
+ 00079 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00080 0f b6 84 01 00
+ 04 00 00 movzx eax, BYTE PTR [rcx+rax+1024]
+ 00088 89 45 44 mov DWORD PTR rs$2[rbp], eax
+
+; 2298 : int run = (rs >> 4) & 15;
+
+ 0008b 8b 45 44 mov eax, DWORD PTR rs$2[rbp]
+ 0008e c1 f8 04 sar eax, 4
+ 00091 83 e0 0f and eax, 15
+ 00094 89 45 64 mov DWORD PTR run$3[rbp], eax
+
+; 2299 : int magbits = rs & 15;
+
+ 00097 8b 45 44 mov eax, DWORD PTR rs$2[rbp]
+ 0009a 83 e0 0f and eax, 15
+ 0009d 89 85 84 00 00
+ 00 mov DWORD PTR magbits$4[rbp], eax
+
+; 2300 : int len = h->size[fast];
+
+ 000a3 0f b6 45 24 movzx eax, BYTE PTR fast$1[rbp]
+ 000a7 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 000ae 0f b6 84 01 00
+ 05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
+ 000b6 89 85 a4 00 00
+ 00 mov DWORD PTR len$5[rbp], eax
+
+; 2301 :
+; 2302 : if (magbits && len + magbits <= FAST_BITS) {
+
+ 000bc 83 bd 84 00 00
+ 00 00 cmp DWORD PTR magbits$4[rbp], 0
+ 000c3 0f 84 e0 00 00
+ 00 je $LN6@stbi__buil
+ 000c9 8b 85 84 00 00
+ 00 mov eax, DWORD PTR magbits$4[rbp]
+ 000cf 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR len$5[rbp]
+ 000d5 03 c8 add ecx, eax
+ 000d7 8b c1 mov eax, ecx
+ 000d9 83 f8 09 cmp eax, 9
+ 000dc 0f 8f c7 00 00
+ 00 jg $LN6@stbi__buil
+
+; 2303 : // magnitude code followed by receive_extend code
+; 2304 : int k = ((i << len) & ((1 << FAST_BITS) - 1)) >>
+
+ 000e2 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR len$5[rbp]
+ 000e8 0f b6 c8 movzx ecx, al
+ 000eb 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000ee d3 e0 shl eax, cl
+ 000f0 25 ff 01 00 00 and eax, 511 ; 000001ffH
+ 000f5 b9 09 00 00 00 mov ecx, 9
+ 000fa 2b 8d 84 00 00
+ 00 sub ecx, DWORD PTR magbits$4[rbp]
+ 00100 d3 f8 sar eax, cl
+ 00102 89 85 c4 00 00
+ 00 mov DWORD PTR k$6[rbp], eax
+
+; 2305 : (FAST_BITS - magbits);
+; 2306 : int m = 1 << (magbits - 1);
+
+ 00108 8b 85 84 00 00
+ 00 mov eax, DWORD PTR magbits$4[rbp]
+ 0010e ff c8 dec eax
+ 00110 b9 01 00 00 00 mov ecx, 1
+ 00115 89 8d b4 01 00
+ 00 mov DWORD PTR tv174[rbp], ecx
+ 0011b 0f b6 c8 movzx ecx, al
+ 0011e 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR tv174[rbp]
+ 00124 d3 e0 shl eax, cl
+ 00126 89 85 e4 00 00
+ 00 mov DWORD PTR m$7[rbp], eax
+
+; 2307 : if (k < m)
+
+ 0012c 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR m$7[rbp]
+ 00132 39 85 c4 00 00
+ 00 cmp DWORD PTR k$6[rbp], eax
+ 00138 7d 2c jge SHORT $LN7@stbi__buil
+
+; 2308 : k += (~0U << magbits) + 1;
+
+ 0013a 8b 85 84 00 00
+ 00 mov eax, DWORD PTR magbits$4[rbp]
+ 00140 b9 ff ff ff ff mov ecx, -1 ; ffffffffH
+ 00145 89 8d b4 01 00
+ 00 mov DWORD PTR tv178[rbp], ecx
+ 0014b 0f b6 c8 movzx ecx, al
+ 0014e 8b 85 b4 01 00
+ 00 mov eax, DWORD PTR tv178[rbp]
+ 00154 d3 e0 shl eax, cl
+ 00156 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR k$6[rbp]
+ 0015c 8d 44 01 01 lea eax, DWORD PTR [rcx+rax+1]
+ 00160 89 85 c4 00 00
+ 00 mov DWORD PTR k$6[rbp], eax
+$LN7@stbi__buil:
+
+; 2309 : // if the result is small enough, we can fit it in fast_ac table
+; 2310 : if (k >= -128 && k <= 127)
+
+ 00166 83 bd c4 00 00
+ 00 80 cmp DWORD PTR k$6[rbp], -128 ; ffffffffffffff80H
+ 0016d 7c 3a jl SHORT $LN8@stbi__buil
+ 0016f 83 bd c4 00 00
+ 00 7f cmp DWORD PTR k$6[rbp], 127 ; 0000007fH
+ 00176 7f 31 jg SHORT $LN8@stbi__buil
+
+; 2311 : fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) +
+
+ 00178 69 85 c4 00 00
+ 00 00 01 00 00 imul eax, DWORD PTR k$6[rbp], 256 ; 00000100H
+ 00182 6b 4d 64 10 imul ecx, DWORD PTR run$3[rbp], 16
+ 00186 03 c1 add eax, ecx
+ 00188 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR magbits$4[rbp]
+ 0018e 8b 95 a4 00 00
+ 00 mov edx, DWORD PTR len$5[rbp]
+ 00194 03 d1 add edx, ecx
+ 00196 8b ca mov ecx, edx
+ 00198 03 c1 add eax, ecx
+ 0019a 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 0019e 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR fast_ac$[rbp]
+ 001a5 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
+$LN8@stbi__buil:
+$LN6@stbi__buil:
+$LN5@stbi__buil:
+
+; 2312 : (len + magbits));
+; 2313 : }
+; 2314 : }
+; 2315 : }
+
+ 001a9 e9 80 fe ff ff jmp $LN2@stbi__buil
+$LN3@stbi__buil:
+
+; 2316 : }
+
+ 001ae 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 001b5 5f pop rdi
+ 001b6 5d pop rbp
+ 001b7 c3 ret 0
+stbi__build_fast_ac ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__build_huffman
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+k$ = 68
+code$ = 100
+s$1 = 132
+c$2 = 164
+m$3 = 196
+tv238 = 404
+h$ = 448
+count$ = 456
+stbi__build_huffman PROC ; COMDAT
+
+; 2242 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec c8 01
+ 00 00 sub rsp, 456 ; 000001c8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 2243 : int i, j, k = 0;
+
+ 00025 c7 45 44 00 00
+ 00 00 mov DWORD PTR k$[rbp], 0
+
+; 2244 : unsigned int code;
+; 2245 : // build size list for each symbol (from JPEG spec)
+; 2246 : for (i = 0; i < 16; ++i) {
+
+ 0002c c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00033 eb 08 jmp SHORT $LN4@stbi__buil
+$LN2@stbi__buil:
+ 00035 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00038 ff c0 inc eax
+ 0003a 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__buil:
+ 0003d 83 7d 04 10 cmp DWORD PTR i$[rbp], 16
+ 00041 7d 61 jge SHORT $LN3@stbi__buil
+
+; 2247 : for (j = 0; j < count[i]; ++j) {
+
+ 00043 c7 45 24 00 00
+ 00 00 mov DWORD PTR j$[rbp], 0
+ 0004a eb 08 jmp SHORT $LN7@stbi__buil
+$LN5@stbi__buil:
+ 0004c 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 0004f ff c0 inc eax
+ 00051 89 45 24 mov DWORD PTR j$[rbp], eax
+$LN7@stbi__buil:
+ 00054 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00058 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR count$[rbp]
+ 0005f 8b 04 81 mov eax, DWORD PTR [rcx+rax*4]
+ 00062 39 45 24 cmp DWORD PTR j$[rbp], eax
+ 00065 7d 3b jge SHORT $LN6@stbi__buil
+
+; 2248 : h->size[k++] = (stbi_uc)(i + 1);
+
+ 00067 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0006a ff c0 inc eax
+ 0006c 48 63 4d 44 movsxd rcx, DWORD PTR k$[rbp]
+ 00070 48 8b 95 c0 01
+ 00 00 mov rdx, QWORD PTR h$[rbp]
+ 00077 88 84 0a 00 05
+ 00 00 mov BYTE PTR [rdx+rcx+1280], al
+ 0007e 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 00081 ff c0 inc eax
+ 00083 89 45 44 mov DWORD PTR k$[rbp], eax
+
+; 2249 : if (k >= 257)
+
+ 00086 81 7d 44 01 01
+ 00 00 cmp DWORD PTR k$[rbp], 257 ; 00000101H
+ 0008d 7c 11 jl SHORT $LN19@stbi__buil
+
+; 2250 : return stbi__err("bad size list", "Corrupt JPEG");
+
+ 0008f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@DEFOLMLB@bad?5size?5list@
+ 00096 e8 00 00 00 00 call stbi__err
+ 0009b e9 10 02 00 00 jmp $LN1@stbi__buil
+$LN19@stbi__buil:
+
+; 2251 : }
+
+ 000a0 eb aa jmp SHORT $LN5@stbi__buil
+$LN6@stbi__buil:
+
+; 2252 : }
+
+ 000a2 eb 91 jmp SHORT $LN2@stbi__buil
+$LN3@stbi__buil:
+
+; 2253 : h->size[k] = 0;
+
+ 000a4 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 000a8 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 000af c6 84 01 00 05
+ 00 00 00 mov BYTE PTR [rcx+rax+1280], 0
+
+; 2254 :
+; 2255 : // compute actual symbols (from jpeg spec)
+; 2256 : code = 0;
+
+ 000b7 c7 45 64 00 00
+ 00 00 mov DWORD PTR code$[rbp], 0
+
+; 2257 : k = 0;
+
+ 000be c7 45 44 00 00
+ 00 00 mov DWORD PTR k$[rbp], 0
+
+; 2258 : for (j = 1; j <= 16; ++j) {
+
+ 000c5 c7 45 24 01 00
+ 00 00 mov DWORD PTR j$[rbp], 1
+ 000cc eb 08 jmp SHORT $LN10@stbi__buil
+$LN8@stbi__buil:
+ 000ce 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 000d1 ff c0 inc eax
+ 000d3 89 45 24 mov DWORD PTR j$[rbp], eax
+$LN10@stbi__buil:
+ 000d6 83 7d 24 10 cmp DWORD PTR j$[rbp], 16
+ 000da 0f 8f ca 00 00
+ 00 jg $LN9@stbi__buil
+
+; 2259 : // compute delta to add to code to compute symbol id
+; 2260 : h->delta[j] = k - code;
+
+ 000e0 8b 45 64 mov eax, DWORD PTR code$[rbp]
+ 000e3 8b 4d 44 mov ecx, DWORD PTR k$[rbp]
+ 000e6 2b c8 sub ecx, eax
+ 000e8 8b c1 mov eax, ecx
+ 000ea 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
+ 000ee 48 8b 95 c0 01
+ 00 00 mov rdx, QWORD PTR h$[rbp]
+ 000f5 89 84 8a 4c 06
+ 00 00 mov DWORD PTR [rdx+rcx*4+1612], eax
+
+; 2261 : if (h->size[k] == j) {
+
+ 000fc 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 00100 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00107 0f b6 84 01 00
+ 05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
+ 0010f 3b 45 24 cmp eax, DWORD PTR j$[rbp]
+ 00112 75 67 jne SHORT $LN20@stbi__buil
+$LN11@stbi__buil:
+
+; 2262 : while (h->size[k] == j)
+
+ 00114 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 00118 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 0011f 0f b6 84 01 00
+ 05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
+ 00127 3b 45 24 cmp eax, DWORD PTR j$[rbp]
+ 0012a 75 29 jne SHORT $LN12@stbi__buil
+
+; 2263 : h->code[k++] = (stbi__uint16)(code++);
+
+ 0012c 48 63 45 44 movsxd rax, DWORD PTR k$[rbp]
+ 00130 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00137 0f b7 55 64 movzx edx, WORD PTR code$[rbp]
+ 0013b 66 89 94 41 00
+ 02 00 00 mov WORD PTR [rcx+rax*2+512], dx
+ 00143 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 00146 ff c0 inc eax
+ 00148 89 45 44 mov DWORD PTR k$[rbp], eax
+ 0014b 8b 45 64 mov eax, DWORD PTR code$[rbp]
+ 0014e ff c0 inc eax
+ 00150 89 45 64 mov DWORD PTR code$[rbp], eax
+ 00153 eb bf jmp SHORT $LN11@stbi__buil
+$LN12@stbi__buil:
+
+; 2264 : if (code - 1 >= (1u << j))
+
+ 00155 8b 45 64 mov eax, DWORD PTR code$[rbp]
+ 00158 ff c8 dec eax
+ 0015a 8b 4d 24 mov ecx, DWORD PTR j$[rbp]
+ 0015d ba 01 00 00 00 mov edx, 1
+ 00162 d3 e2 shl edx, cl
+ 00164 8b ca mov ecx, edx
+ 00166 3b c1 cmp eax, ecx
+ 00168 72 11 jb SHORT $LN21@stbi__buil
+
+; 2265 : return stbi__err("bad code lengths", "Corrupt JPEG");
+
+ 0016a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@FOKGPEKG@bad?5code?5lengths@
+ 00171 e8 00 00 00 00 call stbi__err
+ 00176 e9 35 01 00 00 jmp $LN1@stbi__buil
+$LN21@stbi__buil:
+$LN20@stbi__buil:
+
+; 2266 : }
+; 2267 : // compute largest code + 1 for this size, preshifted as needed later
+; 2268 : h->maxcode[j] = code << (16 - j);
+
+ 0017b b8 10 00 00 00 mov eax, 16
+ 00180 2b 45 24 sub eax, DWORD PTR j$[rbp]
+ 00183 0f b6 c8 movzx ecx, al
+ 00186 8b 45 64 mov eax, DWORD PTR code$[rbp]
+ 00189 d3 e0 shl eax, cl
+ 0018b 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
+ 0018f 48 8b 95 c0 01
+ 00 00 mov rdx, QWORD PTR h$[rbp]
+ 00196 89 84 8a 04 06
+ 00 00 mov DWORD PTR [rdx+rcx*4+1540], eax
+
+; 2269 : code <<= 1;
+
+ 0019d 8b 45 64 mov eax, DWORD PTR code$[rbp]
+ 001a0 d1 e0 shl eax, 1
+ 001a2 89 45 64 mov DWORD PTR code$[rbp], eax
+
+; 2270 : }
+
+ 001a5 e9 24 ff ff ff jmp $LN8@stbi__buil
+$LN9@stbi__buil:
+
+; 2271 : h->maxcode[j] = 0xffffffff;
+
+ 001aa 48 63 45 24 movsxd rax, DWORD PTR j$[rbp]
+ 001ae 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 001b5 c7 84 81 04 06
+ 00 00 ff ff ff
+ ff mov DWORD PTR [rcx+rax*4+1540], -1 ; ffffffffH
+
+; 2272 :
+; 2273 : // build non-spec acceleration table; 255 is flag for not-accelerated
+; 2274 : memset(h->fast, 255, 1 << FAST_BITS);
+
+ 001c0 48 8b 85 c0 01
+ 00 00 mov rax, QWORD PTR h$[rbp]
+ 001c7 41 b8 00 02 00
+ 00 mov r8d, 512 ; 00000200H
+ 001cd ba ff 00 00 00 mov edx, 255 ; 000000ffH
+ 001d2 48 8b c8 mov rcx, rax
+ 001d5 e8 00 00 00 00 call memset
+ 001da 90 npad 1
+
+; 2275 : for (i = 0; i < k; ++i) {
+
+ 001db c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 001e2 eb 08 jmp SHORT $LN15@stbi__buil
+$LN13@stbi__buil:
+ 001e4 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001e7 ff c0 inc eax
+ 001e9 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN15@stbi__buil:
+ 001ec 8b 45 44 mov eax, DWORD PTR k$[rbp]
+ 001ef 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 001f2 0f 8d b3 00 00
+ 00 jge $LN14@stbi__buil
+
+; 2276 : int s = h->size[i];
+
+ 001f8 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 001fc 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00203 0f b6 84 01 00
+ 05 00 00 movzx eax, BYTE PTR [rcx+rax+1280]
+ 0020b 89 85 84 00 00
+ 00 mov DWORD PTR s$1[rbp], eax
+
+; 2277 : if (s <= FAST_BITS) {
+
+ 00211 83 bd 84 00 00
+ 00 09 cmp DWORD PTR s$1[rbp], 9
+ 00218 0f 8f 88 00 00
+ 00 jg $LN22@stbi__buil
+
+; 2278 : int c = h->code[i] << (FAST_BITS - s);
+
+ 0021e 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 00222 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 00229 0f b7 84 41 00
+ 02 00 00 movzx eax, WORD PTR [rcx+rax*2+512]
+ 00231 b9 09 00 00 00 mov ecx, 9
+ 00236 2b 8d 84 00 00
+ 00 sub ecx, DWORD PTR s$1[rbp]
+ 0023c d3 e0 shl eax, cl
+ 0023e 89 85 a4 00 00
+ 00 mov DWORD PTR c$2[rbp], eax
+
+; 2279 : int m = 1 << (FAST_BITS - s);
+
+ 00244 b8 09 00 00 00 mov eax, 9
+ 00249 2b 85 84 00 00
+ 00 sub eax, DWORD PTR s$1[rbp]
+ 0024f b9 01 00 00 00 mov ecx, 1
+ 00254 89 8d 94 01 00
+ 00 mov DWORD PTR tv238[rbp], ecx
+ 0025a 0f b6 c8 movzx ecx, al
+ 0025d 8b 85 94 01 00
+ 00 mov eax, DWORD PTR tv238[rbp]
+ 00263 d3 e0 shl eax, cl
+ 00265 89 85 c4 00 00
+ 00 mov DWORD PTR m$3[rbp], eax
+
+; 2280 : for (j = 0; j < m; ++j) {
+
+ 0026b c7 45 24 00 00
+ 00 00 mov DWORD PTR j$[rbp], 0
+ 00272 eb 08 jmp SHORT $LN18@stbi__buil
+$LN16@stbi__buil:
+ 00274 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 00277 ff c0 inc eax
+ 00279 89 45 24 mov DWORD PTR j$[rbp], eax
+$LN18@stbi__buil:
+ 0027c 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR m$3[rbp]
+ 00282 39 45 24 cmp DWORD PTR j$[rbp], eax
+ 00285 7d 1f jge SHORT $LN17@stbi__buil
+
+; 2281 : h->fast[c + j] = (stbi_uc)i;
+
+ 00287 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 0028a 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR c$2[rbp]
+ 00290 03 c8 add ecx, eax
+ 00292 8b c1 mov eax, ecx
+ 00294 48 98 cdqe
+ 00296 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR h$[rbp]
+ 0029d 0f b6 55 04 movzx edx, BYTE PTR i$[rbp]
+ 002a1 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 2282 : }
+
+ 002a4 eb ce jmp SHORT $LN16@stbi__buil
+$LN17@stbi__buil:
+$LN22@stbi__buil:
+
+; 2283 : }
+; 2284 : }
+
+ 002a6 e9 39 ff ff ff jmp $LN13@stbi__buil
+$LN14@stbi__buil:
+
+; 2285 : return 1;
+
+ 002ab b8 01 00 00 00 mov eax, 1
+$LN1@stbi__buil:
+
+; 2286 : }
+
+ 002b0 48 8d a5 a8 01
+ 00 00 lea rsp, QWORD PTR [rbp+424]
+ 002b7 5f pop rdi
+ 002b8 5d pop rbp
+ 002b9 c3 ret 0
+stbi__build_huffman ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__convert_format16
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+good$ = 72
+src$1 = 104
+dest$2 = 136
+tv129 = 340
+tv261 = 340
+tv281 = 340
+tv303 = 340
+tv323 = 340
+tv82 = 344
+tv356 = 344
+data$ = 384
+img_n$ = 392
+req_comp$ = 400
+x$ = 408
+y$ = 416
+stbi__convert_format16 PROC ; COMDAT
+
+; 1963 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 88 01
+ 00 00 sub rsp, 392 ; 00000188H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002d 90 npad 1
+
+; 1964 : int i, j;
+; 1965 : stbi__uint16 *good;
+; 1966 :
+; 1967 : if (req_comp == img_n)
+
+ 0002e 8b 85 88 01 00
+ 00 mov eax, DWORD PTR img_n$[rbp]
+ 00034 39 85 90 01 00
+ 00 cmp DWORD PTR req_comp$[rbp], eax
+ 0003a 75 0c jne SHORT $LN43@stbi__conv
+
+; 1968 : return data;
+
+ 0003c 48 8b 85 80 01
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 00043 e9 37 0a 00 00 jmp $LN1@stbi__conv
+$LN43@stbi__conv:
+
+; 1969 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4);
+
+ 00048 83 bd 90 01 00
+ 00 01 cmp DWORD PTR req_comp$[rbp], 1
+ 0004f 7c 09 jl SHORT $LN59@stbi__conv
+ 00051 83 bd 90 01 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 00058 7e 1c jle SHORT $LN60@stbi__conv
+$LN59@stbi__conv:
+ 0005a 41 b8 b1 07 00
+ 00 mov r8d, 1969 ; 000007b1H
+ 00060 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00067 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@
+ 0006e ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00074 33 c0 xor eax, eax
+$LN60@stbi__conv:
+
+; 1970 :
+; 1971 : good = (stbi__uint16 *)stbi__malloc(req_comp * x * y * 2);
+
+ 00076 8b 85 90 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 0007c 0f af 85 98 01
+ 00 00 imul eax, DWORD PTR x$[rbp]
+ 00083 0f af 85 a0 01
+ 00 00 imul eax, DWORD PTR y$[rbp]
+ 0008a d1 e0 shl eax, 1
+ 0008c 8b c0 mov eax, eax
+ 0008e 8b c8 mov ecx, eax
+ 00090 e8 00 00 00 00 call stbi__malloc
+ 00095 48 89 45 48 mov QWORD PTR good$[rbp], rax
+
+; 1972 : if (good == NULL) {
+
+ 00099 48 83 7d 48 00 cmp QWORD PTR good$[rbp], 0
+ 0009e 75 42 jne SHORT $LN44@stbi__conv
+
+; 1973 : STBI_FREE(data);
+
+ 000a0 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 000a7 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000ad 90 npad 1
+
+; 1974 : return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory");
+
+ 000ae 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 000b5 e8 00 00 00 00 call stbi__err
+ 000ba 85 c0 test eax, eax
+ 000bc 74 0d je SHORT $LN61@stbi__conv
+ 000be 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv82[rbp], 0
+ 000c9 eb 0b jmp SHORT $LN62@stbi__conv
+$LN61@stbi__conv:
+ 000cb 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv82[rbp], 0
+$LN62@stbi__conv:
+ 000d6 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv82[rbp]
+ 000dd e9 9d 09 00 00 jmp $LN1@stbi__conv
+$LN44@stbi__conv:
+
+; 1975 : }
+; 1976 :
+; 1977 : for (j = 0; j < (int)y; ++j) {
+
+ 000e2 c7 45 24 00 00
+ 00 00 mov DWORD PTR j$[rbp], 0
+ 000e9 eb 08 jmp SHORT $LN4@stbi__conv
+$LN2@stbi__conv:
+ 000eb 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 000ee ff c0 inc eax
+ 000f0 89 45 24 mov DWORD PTR j$[rbp], eax
+$LN4@stbi__conv:
+ 000f3 8b 85 a0 01 00
+ 00 mov eax, DWORD PTR y$[rbp]
+ 000f9 39 45 24 cmp DWORD PTR j$[rbp], eax
+ 000fc 0f 8d 6b 09 00
+ 00 jge $LN3@stbi__conv
+
+; 1978 : stbi__uint16 *src = data + j * x * img_n;
+
+ 00102 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 00105 0f af 85 98 01
+ 00 00 imul eax, DWORD PTR x$[rbp]
+ 0010c 0f af 85 88 01
+ 00 00 imul eax, DWORD PTR img_n$[rbp]
+ 00113 8b c0 mov eax, eax
+ 00115 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 0011c 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 00120 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+
+; 1979 : stbi__uint16 *dest = good + j * x * req_comp;
+
+ 00124 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 00127 0f af 85 98 01
+ 00 00 imul eax, DWORD PTR x$[rbp]
+ 0012e 0f af 85 90 01
+ 00 00 imul eax, DWORD PTR req_comp$[rbp]
+ 00135 8b c0 mov eax, eax
+ 00137 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
+ 0013b 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 0013f 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+
+; 1980 :
+; 1981 : #define STBI__COMBO(a, b) ((a) * 8 + (b))
+; 1982 : #define STBI__CASE(a, b) \
+; 1983 : case STBI__COMBO(a, b): \
+; 1984 : for (i = x - 1; i >= 0; --i, src += a, dest += b)
+; 1985 : // convert source image with img_n components to one with req_comp components;
+; 1986 : // avoid switch per pixel, so use switch per scanline and massive macros
+; 1987 : switch (STBI__COMBO(img_n, req_comp)) {
+
+ 00146 8b 85 90 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 0014c 8b 8d 88 01 00
+ 00 mov ecx, DWORD PTR img_n$[rbp]
+ 00152 8d 04 c8 lea eax, DWORD PTR [rax+rcx*8]
+ 00155 89 85 54 01 00
+ 00 mov DWORD PTR tv129[rbp], eax
+ 0015b 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv129[rbp]
+ 00161 83 e8 0a sub eax, 10
+ 00164 89 85 54 01 00
+ 00 mov DWORD PTR tv129[rbp], eax
+ 0016a 83 bd 54 01 00
+ 00 19 cmp DWORD PTR tv129[rbp], 25
+ 00171 0f 87 85 08 00
+ 00 ja $LN57@stbi__conv
+ 00177 48 63 85 54 01
+ 00 00 movsxd rax, DWORD PTR tv129[rbp]
+ 0017e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__ImageBase
+ 00185 8b 84 81 00 00
+ 00 00 mov eax, DWORD PTR $LN66@stbi__conv[rcx+rax*4]
+ 0018c 48 03 c1 add rax, rcx
+ 0018f ff e0 jmp rax
+$LN45@stbi__conv:
+
+; 1988 : STBI__CASE(1, 2)
+
+ 00191 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00197 ff c8 dec eax
+ 00199 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0019c eb 26 jmp SHORT $LN9@stbi__conv
+$LN7@stbi__conv:
+ 0019e 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001a1 ff c8 dec eax
+ 001a3 89 45 04 mov DWORD PTR i$[rbp], eax
+ 001a6 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 001aa 48 83 c0 02 add rax, 2
+ 001ae 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 001b2 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 001b9 48 83 c0 04 add rax, 4
+ 001bd 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN9@stbi__conv:
+ 001c4 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 001c8 7c 41 jl SHORT $LN8@stbi__conv
+
+; 1989 : {
+; 1990 : dest[0] = src[0];
+
+ 001ca b8 02 00 00 00 mov eax, 2
+ 001cf 48 6b c0 00 imul rax, rax, 0
+ 001d3 b9 02 00 00 00 mov ecx, 2
+ 001d8 48 6b c9 00 imul rcx, rcx, 0
+ 001dc 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 001e3 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 001e7 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 001ec 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 1991 : dest[1] = 0xffff;
+
+ 001f0 b8 02 00 00 00 mov eax, 2
+ 001f5 48 6b c0 01 imul rax, rax, 1
+ 001f9 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
+ 001fe 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00205 66 89 0c 02 mov WORD PTR [rdx+rax], cx
+
+; 1992 : }
+
+ 00209 eb 93 jmp SHORT $LN7@stbi__conv
+$LN8@stbi__conv:
+
+; 1993 : break;
+
+ 0020b e9 58 08 00 00 jmp $LN5@stbi__conv
+$LN46@stbi__conv:
+
+; 1994 : STBI__CASE(1, 3)
+
+ 00210 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00216 ff c8 dec eax
+ 00218 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0021b eb 26 jmp SHORT $LN12@stbi__conv
+$LN10@stbi__conv:
+ 0021d 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00220 ff c8 dec eax
+ 00222 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00225 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00229 48 83 c0 02 add rax, 2
+ 0022d 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 00231 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00238 48 83 c0 06 add rax, 6
+ 0023c 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN12@stbi__conv:
+ 00243 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00247 7c 7d jl SHORT $LN11@stbi__conv
+
+; 1995 : {
+; 1996 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 00249 b8 02 00 00 00 mov eax, 2
+ 0024e 48 6b c0 00 imul rax, rax, 0
+ 00252 b9 02 00 00 00 mov ecx, 2
+ 00257 48 6b c9 02 imul rcx, rcx, 2
+ 0025b 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00262 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00266 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0026b 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 0026f b8 02 00 00 00 mov eax, 2
+ 00274 48 6b c0 02 imul rax, rax, 2
+ 00278 b9 02 00 00 00 mov ecx, 2
+ 0027d 48 6b c9 01 imul rcx, rcx, 1
+ 00281 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00288 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 0028f 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 00294 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 00298 b8 02 00 00 00 mov eax, 2
+ 0029d 48 6b c0 01 imul rax, rax, 1
+ 002a1 b9 02 00 00 00 mov ecx, 2
+ 002a6 48 6b c9 00 imul rcx, rcx, 0
+ 002aa 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 002b1 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 002b8 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 002bd 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 1997 : }
+
+ 002c1 e9 57 ff ff ff jmp $LN10@stbi__conv
+$LN11@stbi__conv:
+
+; 1998 : break;
+
+ 002c6 e9 9d 07 00 00 jmp $LN5@stbi__conv
+$LN47@stbi__conv:
+
+; 1999 : STBI__CASE(1, 4)
+
+ 002cb 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 002d1 ff c8 dec eax
+ 002d3 89 45 04 mov DWORD PTR i$[rbp], eax
+ 002d6 eb 26 jmp SHORT $LN15@stbi__conv
+$LN13@stbi__conv:
+ 002d8 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 002db ff c8 dec eax
+ 002dd 89 45 04 mov DWORD PTR i$[rbp], eax
+ 002e0 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 002e4 48 83 c0 02 add rax, 2
+ 002e8 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 002ec 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 002f3 48 83 c0 08 add rax, 8
+ 002f7 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN15@stbi__conv:
+ 002fe 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00302 0f 8c 96 00 00
+ 00 jl $LN14@stbi__conv
+
+; 2000 : {
+; 2001 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 00308 b8 02 00 00 00 mov eax, 2
+ 0030d 48 6b c0 00 imul rax, rax, 0
+ 00311 b9 02 00 00 00 mov ecx, 2
+ 00316 48 6b c9 02 imul rcx, rcx, 2
+ 0031a 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00321 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00325 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0032a 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 0032e b8 02 00 00 00 mov eax, 2
+ 00333 48 6b c0 02 imul rax, rax, 2
+ 00337 b9 02 00 00 00 mov ecx, 2
+ 0033c 48 6b c9 01 imul rcx, rcx, 1
+ 00340 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00347 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 0034e 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 00353 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 00357 b8 02 00 00 00 mov eax, 2
+ 0035c 48 6b c0 01 imul rax, rax, 1
+ 00360 b9 02 00 00 00 mov ecx, 2
+ 00365 48 6b c9 00 imul rcx, rcx, 0
+ 00369 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00370 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00377 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0037c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2002 : dest[3] = 0xffff;
+
+ 00380 b8 02 00 00 00 mov eax, 2
+ 00385 48 6b c0 03 imul rax, rax, 3
+ 00389 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
+ 0038e 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00395 66 89 0c 02 mov WORD PTR [rdx+rax], cx
+
+; 2003 : }
+
+ 00399 e9 3a ff ff ff jmp $LN13@stbi__conv
+$LN14@stbi__conv:
+
+; 2004 : break;
+
+ 0039e e9 c5 06 00 00 jmp $LN5@stbi__conv
+$LN48@stbi__conv:
+
+; 2005 : STBI__CASE(2, 1)
+
+ 003a3 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 003a9 ff c8 dec eax
+ 003ab 89 45 04 mov DWORD PTR i$[rbp], eax
+ 003ae eb 26 jmp SHORT $LN18@stbi__conv
+$LN16@stbi__conv:
+ 003b0 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 003b3 ff c8 dec eax
+ 003b5 89 45 04 mov DWORD PTR i$[rbp], eax
+ 003b8 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 003bc 48 83 c0 04 add rax, 4
+ 003c0 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 003c4 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 003cb 48 83 c0 02 add rax, 2
+ 003cf 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN18@stbi__conv:
+ 003d6 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 003da 7c 28 jl SHORT $LN17@stbi__conv
+
+; 2006 : {
+; 2007 : dest[0] = src[0];
+
+ 003dc b8 02 00 00 00 mov eax, 2
+ 003e1 48 6b c0 00 imul rax, rax, 0
+ 003e5 b9 02 00 00 00 mov ecx, 2
+ 003ea 48 6b c9 00 imul rcx, rcx, 0
+ 003ee 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 003f5 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 003f9 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 003fe 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2008 : }
+
+ 00402 eb ac jmp SHORT $LN16@stbi__conv
+$LN17@stbi__conv:
+
+; 2009 : break;
+
+ 00404 e9 5f 06 00 00 jmp $LN5@stbi__conv
+$LN49@stbi__conv:
+
+; 2010 : STBI__CASE(2, 3)
+
+ 00409 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 0040f ff c8 dec eax
+ 00411 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00414 eb 26 jmp SHORT $LN21@stbi__conv
+$LN19@stbi__conv:
+ 00416 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00419 ff c8 dec eax
+ 0041b 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0041e 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00422 48 83 c0 04 add rax, 4
+ 00426 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 0042a 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00431 48 83 c0 06 add rax, 6
+ 00435 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN21@stbi__conv:
+ 0043c 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00440 7c 7d jl SHORT $LN20@stbi__conv
+
+; 2011 : {
+; 2012 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 00442 b8 02 00 00 00 mov eax, 2
+ 00447 48 6b c0 00 imul rax, rax, 0
+ 0044b b9 02 00 00 00 mov ecx, 2
+ 00450 48 6b c9 02 imul rcx, rcx, 2
+ 00454 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0045b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0045f 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 00464 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 00468 b8 02 00 00 00 mov eax, 2
+ 0046d 48 6b c0 02 imul rax, rax, 2
+ 00471 b9 02 00 00 00 mov ecx, 2
+ 00476 48 6b c9 01 imul rcx, rcx, 1
+ 0047a 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00481 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00488 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0048d 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 00491 b8 02 00 00 00 mov eax, 2
+ 00496 48 6b c0 01 imul rax, rax, 1
+ 0049a b9 02 00 00 00 mov ecx, 2
+ 0049f 48 6b c9 00 imul rcx, rcx, 0
+ 004a3 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 004aa 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 004b1 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 004b6 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2013 : }
+
+ 004ba e9 57 ff ff ff jmp $LN19@stbi__conv
+$LN20@stbi__conv:
+
+; 2014 : break;
+
+ 004bf e9 a4 05 00 00 jmp $LN5@stbi__conv
+$LN50@stbi__conv:
+
+; 2015 : STBI__CASE(2, 4)
+
+ 004c4 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 004ca ff c8 dec eax
+ 004cc 89 45 04 mov DWORD PTR i$[rbp], eax
+ 004cf eb 26 jmp SHORT $LN24@stbi__conv
+$LN22@stbi__conv:
+ 004d1 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 004d4 ff c8 dec eax
+ 004d6 89 45 04 mov DWORD PTR i$[rbp], eax
+ 004d9 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 004dd 48 83 c0 04 add rax, 4
+ 004e1 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 004e5 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 004ec 48 83 c0 08 add rax, 8
+ 004f0 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN24@stbi__conv:
+ 004f7 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 004fb 0f 8c a3 00 00
+ 00 jl $LN23@stbi__conv
+
+; 2016 : {
+; 2017 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 00501 b8 02 00 00 00 mov eax, 2
+ 00506 48 6b c0 00 imul rax, rax, 0
+ 0050a b9 02 00 00 00 mov ecx, 2
+ 0050f 48 6b c9 02 imul rcx, rcx, 2
+ 00513 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0051a 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0051e 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 00523 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 00527 b8 02 00 00 00 mov eax, 2
+ 0052c 48 6b c0 02 imul rax, rax, 2
+ 00530 b9 02 00 00 00 mov ecx, 2
+ 00535 48 6b c9 01 imul rcx, rcx, 1
+ 00539 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00540 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00547 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0054c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+ 00550 b8 02 00 00 00 mov eax, 2
+ 00555 48 6b c0 01 imul rax, rax, 1
+ 00559 b9 02 00 00 00 mov ecx, 2
+ 0055e 48 6b c9 00 imul rcx, rcx, 0
+ 00562 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00569 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00570 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 00575 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2018 : dest[3] = src[1];
+
+ 00579 b8 02 00 00 00 mov eax, 2
+ 0057e 48 6b c0 01 imul rax, rax, 1
+ 00582 b9 02 00 00 00 mov ecx, 2
+ 00587 48 6b c9 03 imul rcx, rcx, 3
+ 0058b 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00592 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00596 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0059b 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2019 : }
+
+ 0059f e9 2d ff ff ff jmp $LN22@stbi__conv
+$LN23@stbi__conv:
+
+; 2020 : break;
+
+ 005a4 e9 bf 04 00 00 jmp $LN5@stbi__conv
+$LN51@stbi__conv:
+
+; 2021 : STBI__CASE(3, 4)
+
+ 005a9 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 005af ff c8 dec eax
+ 005b1 89 45 04 mov DWORD PTR i$[rbp], eax
+ 005b4 eb 26 jmp SHORT $LN27@stbi__conv
+$LN25@stbi__conv:
+ 005b6 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 005b9 ff c8 dec eax
+ 005bb 89 45 04 mov DWORD PTR i$[rbp], eax
+ 005be 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 005c2 48 83 c0 06 add rax, 6
+ 005c6 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 005ca 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 005d1 48 83 c0 08 add rax, 8
+ 005d5 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN27@stbi__conv:
+ 005dc 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 005e0 0f 8c 90 00 00
+ 00 jl $LN26@stbi__conv
+
+; 2022 : {
+; 2023 : dest[0] = src[0];
+
+ 005e6 b8 02 00 00 00 mov eax, 2
+ 005eb 48 6b c0 00 imul rax, rax, 0
+ 005ef b9 02 00 00 00 mov ecx, 2
+ 005f4 48 6b c9 00 imul rcx, rcx, 0
+ 005f8 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 005ff 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00603 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 00608 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2024 : dest[1] = src[1];
+
+ 0060c b8 02 00 00 00 mov eax, 2
+ 00611 48 6b c0 01 imul rax, rax, 1
+ 00615 b9 02 00 00 00 mov ecx, 2
+ 0061a 48 6b c9 01 imul rcx, rcx, 1
+ 0061e 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00625 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00629 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0062e 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2025 : dest[2] = src[2];
+
+ 00632 b8 02 00 00 00 mov eax, 2
+ 00637 48 6b c0 02 imul rax, rax, 2
+ 0063b b9 02 00 00 00 mov ecx, 2
+ 00640 48 6b c9 02 imul rcx, rcx, 2
+ 00644 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0064b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0064f 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 00654 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2026 : dest[3] = 0xffff;
+
+ 00658 b8 02 00 00 00 mov eax, 2
+ 0065d 48 6b c0 03 imul rax, rax, 3
+ 00661 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
+ 00666 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0066d 66 89 0c 02 mov WORD PTR [rdx+rax], cx
+
+; 2027 : }
+
+ 00671 e9 40 ff ff ff jmp $LN25@stbi__conv
+$LN26@stbi__conv:
+
+; 2028 : break;
+
+ 00676 e9 ed 03 00 00 jmp $LN5@stbi__conv
+$LN52@stbi__conv:
+
+; 2029 : STBI__CASE(3, 1)
+
+ 0067b 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00681 ff c8 dec eax
+ 00683 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00686 eb 26 jmp SHORT $LN30@stbi__conv
+$LN28@stbi__conv:
+ 00688 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0068b ff c8 dec eax
+ 0068d 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00690 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00694 48 83 c0 06 add rax, 6
+ 00698 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 0069c 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 006a3 48 83 c0 02 add rax, 2
+ 006a7 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN30@stbi__conv:
+ 006ae 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 006b2 7c 65 jl SHORT $LN29@stbi__conv
+
+; 2030 : {
+; 2031 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
+
+ 006b4 b8 02 00 00 00 mov eax, 2
+ 006b9 48 6b c0 02 imul rax, rax, 2
+ 006bd 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 006c1 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 006c5 b9 02 00 00 00 mov ecx, 2
+ 006ca 48 6b c9 01 imul rcx, rcx, 1
+ 006ce 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 006d2 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 006d6 ba 02 00 00 00 mov edx, 2
+ 006db 48 6b d2 00 imul rdx, rdx, 0
+ 006df 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 006e3 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
+ 006e8 89 95 54 01 00
+ 00 mov DWORD PTR tv261[rbp], edx
+ 006ee 44 8b c0 mov r8d, eax
+ 006f1 8b d1 mov edx, ecx
+ 006f3 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv261[rbp]
+ 006f9 8b c8 mov ecx, eax
+ 006fb e8 00 00 00 00 call stbi__compute_y_16
+ 00700 b9 02 00 00 00 mov ecx, 2
+ 00705 48 6b c9 00 imul rcx, rcx, 0
+ 00709 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00710 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2032 : }
+
+ 00714 e9 6f ff ff ff jmp $LN28@stbi__conv
+$LN29@stbi__conv:
+
+; 2033 : break;
+
+ 00719 e9 4a 03 00 00 jmp $LN5@stbi__conv
+$LN53@stbi__conv:
+
+; 2034 : STBI__CASE(3, 2)
+
+ 0071e 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00724 ff c8 dec eax
+ 00726 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00729 eb 26 jmp SHORT $LN33@stbi__conv
+$LN31@stbi__conv:
+ 0072b 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0072e ff c8 dec eax
+ 00730 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00733 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00737 48 83 c0 06 add rax, 6
+ 0073b 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 0073f 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00746 48 83 c0 04 add rax, 4
+ 0074a 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN33@stbi__conv:
+ 00751 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00755 7c 7e jl SHORT $LN32@stbi__conv
+
+; 2035 : {
+; 2036 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
+
+ 00757 b8 02 00 00 00 mov eax, 2
+ 0075c 48 6b c0 02 imul rax, rax, 2
+ 00760 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 00764 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00768 b9 02 00 00 00 mov ecx, 2
+ 0076d 48 6b c9 01 imul rcx, rcx, 1
+ 00771 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 00775 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 00779 ba 02 00 00 00 mov edx, 2
+ 0077e 48 6b d2 00 imul rdx, rdx, 0
+ 00782 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00786 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
+ 0078b 89 95 54 01 00
+ 00 mov DWORD PTR tv281[rbp], edx
+ 00791 44 8b c0 mov r8d, eax
+ 00794 8b d1 mov edx, ecx
+ 00796 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv281[rbp]
+ 0079c 8b c8 mov ecx, eax
+ 0079e e8 00 00 00 00 call stbi__compute_y_16
+ 007a3 b9 02 00 00 00 mov ecx, 2
+ 007a8 48 6b c9 00 imul rcx, rcx, 0
+ 007ac 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 007b3 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2037 : dest[1] = 0xffff;
+
+ 007b7 b8 02 00 00 00 mov eax, 2
+ 007bc 48 6b c0 01 imul rax, rax, 1
+ 007c0 b9 ff ff 00 00 mov ecx, 65535 ; 0000ffffH
+ 007c5 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 007cc 66 89 0c 02 mov WORD PTR [rdx+rax], cx
+
+; 2038 : }
+
+ 007d0 e9 56 ff ff ff jmp $LN31@stbi__conv
+$LN32@stbi__conv:
+
+; 2039 : break;
+
+ 007d5 e9 8e 02 00 00 jmp $LN5@stbi__conv
+$LN54@stbi__conv:
+
+; 2040 : STBI__CASE(4, 1)
+
+ 007da 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 007e0 ff c8 dec eax
+ 007e2 89 45 04 mov DWORD PTR i$[rbp], eax
+ 007e5 eb 26 jmp SHORT $LN36@stbi__conv
+$LN34@stbi__conv:
+ 007e7 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 007ea ff c8 dec eax
+ 007ec 89 45 04 mov DWORD PTR i$[rbp], eax
+ 007ef 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 007f3 48 83 c0 08 add rax, 8
+ 007f7 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 007fb 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00802 48 83 c0 02 add rax, 2
+ 00806 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN36@stbi__conv:
+ 0080d 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00811 7c 65 jl SHORT $LN35@stbi__conv
+
+; 2041 : {
+; 2042 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
+
+ 00813 b8 02 00 00 00 mov eax, 2
+ 00818 48 6b c0 02 imul rax, rax, 2
+ 0081c 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 00820 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00824 b9 02 00 00 00 mov ecx, 2
+ 00829 48 6b c9 01 imul rcx, rcx, 1
+ 0082d 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 00831 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 00835 ba 02 00 00 00 mov edx, 2
+ 0083a 48 6b d2 00 imul rdx, rdx, 0
+ 0083e 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00842 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
+ 00847 89 95 54 01 00
+ 00 mov DWORD PTR tv303[rbp], edx
+ 0084d 44 8b c0 mov r8d, eax
+ 00850 8b d1 mov edx, ecx
+ 00852 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv303[rbp]
+ 00858 8b c8 mov ecx, eax
+ 0085a e8 00 00 00 00 call stbi__compute_y_16
+ 0085f b9 02 00 00 00 mov ecx, 2
+ 00864 48 6b c9 00 imul rcx, rcx, 0
+ 00868 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0086f 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2043 : }
+
+ 00873 e9 6f ff ff ff jmp $LN34@stbi__conv
+$LN35@stbi__conv:
+
+; 2044 : break;
+
+ 00878 e9 eb 01 00 00 jmp $LN5@stbi__conv
+$LN55@stbi__conv:
+
+; 2045 : STBI__CASE(4, 2)
+
+ 0087d 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00883 ff c8 dec eax
+ 00885 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00888 eb 26 jmp SHORT $LN39@stbi__conv
+$LN37@stbi__conv:
+ 0088a 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0088d ff c8 dec eax
+ 0088f 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00892 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00896 48 83 c0 08 add rax, 8
+ 0089a 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 0089e 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 008a5 48 83 c0 04 add rax, 4
+ 008a9 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN39@stbi__conv:
+ 008b0 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 008b4 0f 8c 8b 00 00
+ 00 jl $LN38@stbi__conv
+
+; 2046 : {
+; 2047 : dest[0] = stbi__compute_y_16(src[0], src[1], src[2]);
+
+ 008ba b8 02 00 00 00 mov eax, 2
+ 008bf 48 6b c0 02 imul rax, rax, 2
+ 008c3 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 008c7 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 008cb b9 02 00 00 00 mov ecx, 2
+ 008d0 48 6b c9 01 imul rcx, rcx, 1
+ 008d4 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 008d8 0f b7 0c 0a movzx ecx, WORD PTR [rdx+rcx]
+ 008dc ba 02 00 00 00 mov edx, 2
+ 008e1 48 6b d2 00 imul rdx, rdx, 0
+ 008e5 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 008e9 41 0f b7 14 10 movzx edx, WORD PTR [r8+rdx]
+ 008ee 89 95 54 01 00
+ 00 mov DWORD PTR tv323[rbp], edx
+ 008f4 44 8b c0 mov r8d, eax
+ 008f7 8b d1 mov edx, ecx
+ 008f9 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv323[rbp]
+ 008ff 8b c8 mov ecx, eax
+ 00901 e8 00 00 00 00 call stbi__compute_y_16
+ 00906 b9 02 00 00 00 mov ecx, 2
+ 0090b 48 6b c9 00 imul rcx, rcx, 0
+ 0090f 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00916 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2048 : dest[1] = src[3];
+
+ 0091a b8 02 00 00 00 mov eax, 2
+ 0091f 48 6b c0 03 imul rax, rax, 3
+ 00923 b9 02 00 00 00 mov ecx, 2
+ 00928 48 6b c9 01 imul rcx, rcx, 1
+ 0092c 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00933 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00937 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 0093c 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2049 : }
+
+ 00940 e9 45 ff ff ff jmp $LN37@stbi__conv
+$LN38@stbi__conv:
+
+; 2050 : break;
+
+ 00945 e9 1e 01 00 00 jmp $LN5@stbi__conv
+$LN56@stbi__conv:
+
+; 2051 : STBI__CASE(4, 3)
+
+ 0094a 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00950 ff c8 dec eax
+ 00952 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00955 eb 26 jmp SHORT $LN42@stbi__conv
+$LN40@stbi__conv:
+ 00957 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0095a ff c8 dec eax
+ 0095c 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0095f 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00963 48 83 c0 08 add rax, 8
+ 00967 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 0096b 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00972 48 83 c0 06 add rax, 6
+ 00976 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN42@stbi__conv:
+ 0097d 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00981 7c 77 jl SHORT $LN41@stbi__conv
+
+; 2052 : {
+; 2053 : dest[0] = src[0];
+
+ 00983 b8 02 00 00 00 mov eax, 2
+ 00988 48 6b c0 00 imul rax, rax, 0
+ 0098c b9 02 00 00 00 mov ecx, 2
+ 00991 48 6b c9 00 imul rcx, rcx, 0
+ 00995 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0099c 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 009a0 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 009a5 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2054 : dest[1] = src[1];
+
+ 009a9 b8 02 00 00 00 mov eax, 2
+ 009ae 48 6b c0 01 imul rax, rax, 1
+ 009b2 b9 02 00 00 00 mov ecx, 2
+ 009b7 48 6b c9 01 imul rcx, rcx, 1
+ 009bb 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 009c2 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 009c6 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 009cb 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2055 : dest[2] = src[2];
+
+ 009cf b8 02 00 00 00 mov eax, 2
+ 009d4 48 6b c0 02 imul rax, rax, 2
+ 009d8 b9 02 00 00 00 mov ecx, 2
+ 009dd 48 6b c9 02 imul rcx, rcx, 2
+ 009e1 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 009e8 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 009ec 41 0f b7 04 00 movzx eax, WORD PTR [r8+rax]
+ 009f1 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 2056 : }
+
+ 009f5 e9 5d ff ff ff jmp $LN40@stbi__conv
+$LN41@stbi__conv:
+
+; 2057 : break;
+
+ 009fa eb 6c jmp SHORT $LN5@stbi__conv
+$LN57@stbi__conv:
+
+; 2058 : default:
+; 2059 : STBI_ASSERT(0);
+
+ 009fc 33 c0 xor eax, eax
+ 009fe 85 c0 test eax, eax
+ 00a00 75 1c jne SHORT $LN63@stbi__conv
+ 00a02 41 b8 0b 08 00
+ 00 mov r8d, 2059 ; 0000080bH
+ 00a08 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00a0f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_13COJANIEC@?$AA0@
+ 00a16 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00a1c 33 c0 xor eax, eax
+$LN63@stbi__conv:
+
+; 2060 : STBI_FREE(data);
+
+ 00a1e 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00a25 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00a2b 90 npad 1
+
+; 2061 : STBI_FREE(good);
+
+ 00a2c 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
+ 00a30 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00a36 90 npad 1
+
+; 2062 : return (stbi__uint16 *)stbi__errpuc("unsupported",
+
+ 00a37 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@MHDBFHD@unsupported@
+ 00a3e e8 00 00 00 00 call stbi__err
+ 00a43 85 c0 test eax, eax
+ 00a45 74 0d je SHORT $LN64@stbi__conv
+ 00a47 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv356[rbp], 0
+ 00a52 eb 0b jmp SHORT $LN65@stbi__conv
+$LN64@stbi__conv:
+ 00a54 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv356[rbp], 0
+$LN65@stbi__conv:
+ 00a5f 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv356[rbp]
+ 00a66 eb 17 jmp SHORT $LN1@stbi__conv
+$LN5@stbi__conv:
+
+; 2063 : "Unsupported format conversion");
+; 2064 : }
+; 2065 : #undef STBI__CASE
+; 2066 : }
+
+ 00a68 e9 7e f6 ff ff jmp $LN2@stbi__conv
+$LN3@stbi__conv:
+
+; 2067 :
+; 2068 : STBI_FREE(data);
+
+ 00a6d 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00a74 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00a7a 90 npad 1
+
+; 2069 : return good;
+
+ 00a7b 48 8b 45 48 mov rax, QWORD PTR good$[rbp]
+$LN1@stbi__conv:
+
+; 2070 : }
+
+ 00a7f 48 8d a5 68 01
+ 00 00 lea rsp, QWORD PTR [rbp+360]
+ 00a86 5f pop rdi
+ 00a87 5d pop rbp
+ 00a88 c3 ret 0
+ 00a89 0f 1f 00 npad 3
+$LN66@stbi__conv:
+ 00a8c 00 00 00 00 DD $LN45@stbi__conv
+ 00a90 00 00 00 00 DD $LN46@stbi__conv
+ 00a94 00 00 00 00 DD $LN47@stbi__conv
+ 00a98 00 00 00 00 DD $LN57@stbi__conv
+ 00a9c 00 00 00 00 DD $LN57@stbi__conv
+ 00aa0 00 00 00 00 DD $LN57@stbi__conv
+ 00aa4 00 00 00 00 DD $LN57@stbi__conv
+ 00aa8 00 00 00 00 DD $LN48@stbi__conv
+ 00aac 00 00 00 00 DD $LN57@stbi__conv
+ 00ab0 00 00 00 00 DD $LN49@stbi__conv
+ 00ab4 00 00 00 00 DD $LN50@stbi__conv
+ 00ab8 00 00 00 00 DD $LN57@stbi__conv
+ 00abc 00 00 00 00 DD $LN57@stbi__conv
+ 00ac0 00 00 00 00 DD $LN57@stbi__conv
+ 00ac4 00 00 00 00 DD $LN57@stbi__conv
+ 00ac8 00 00 00 00 DD $LN52@stbi__conv
+ 00acc 00 00 00 00 DD $LN53@stbi__conv
+ 00ad0 00 00 00 00 DD $LN57@stbi__conv
+ 00ad4 00 00 00 00 DD $LN51@stbi__conv
+ 00ad8 00 00 00 00 DD $LN57@stbi__conv
+ 00adc 00 00 00 00 DD $LN57@stbi__conv
+ 00ae0 00 00 00 00 DD $LN57@stbi__conv
+ 00ae4 00 00 00 00 DD $LN57@stbi__conv
+ 00ae8 00 00 00 00 DD $LN54@stbi__conv
+ 00aec 00 00 00 00 DD $LN55@stbi__conv
+ 00af0 00 00 00 00 DD $LN56@stbi__conv
+stbi__convert_format16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__compute_y_16
+_TEXT SEGMENT
+r$ = 224
+g$ = 232
+b$ = 240
+stbi__compute_y_16 PROC ; COMDAT
+
+; 1953 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000d 55 push rbp
+ 0000e 57 push rdi
+ 0000f 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00027 90 npad 1
+
+; 1954 : return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8);
+
+ 00028 6b 85 e0 00 00
+ 00 4d imul eax, DWORD PTR r$[rbp], 77 ; 0000004dH
+ 0002f 69 8d e8 00 00
+ 00 96 00 00 00 imul ecx, DWORD PTR g$[rbp], 150 ; 00000096H
+ 00039 03 c1 add eax, ecx
+ 0003b 6b 8d f0 00 00
+ 00 1d imul ecx, DWORD PTR b$[rbp], 29
+ 00042 03 c1 add eax, ecx
+ 00044 c1 f8 08 sar eax, 8
+
+; 1955 : }
+
+ 00047 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0004e 5f pop rdi
+ 0004f 5d pop rbp
+ 00050 c3 ret 0
+stbi__compute_y_16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__convert_format
+_TEXT SEGMENT
+i$ = 4
+j$ = 36
+good$ = 72
+src$1 = 104
+dest$2 = 136
+tv94 = 340
+tv258 = 340
+tv278 = 340
+tv300 = 340
+tv320 = 340
+tv81 = 344
+tv353 = 344
+data$ = 384
+img_n$ = 392
+req_comp$ = 400
+x$ = 408
+y$ = 416
+stbi__convert_format PROC ; COMDAT
+
+; 1840 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 88 01
+ 00 00 sub rsp, 392 ; 00000188H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002d 90 npad 1
+
+; 1841 : int i, j;
+; 1842 : unsigned char *good;
+; 1843 :
+; 1844 : if (req_comp == img_n)
+
+ 0002e 8b 85 88 01 00
+ 00 mov eax, DWORD PTR img_n$[rbp]
+ 00034 39 85 90 01 00
+ 00 cmp DWORD PTR req_comp$[rbp], eax
+ 0003a 75 0c jne SHORT $LN43@stbi__conv
+
+; 1845 : return data;
+
+ 0003c 48 8b 85 80 01
+ 00 00 mov rax, QWORD PTR data$[rbp]
+ 00043 e9 03 0a 00 00 jmp $LN1@stbi__conv
+$LN43@stbi__conv:
+
+; 1846 : STBI_ASSERT(req_comp >= 1 && req_comp <= 4);
+
+ 00048 83 bd 90 01 00
+ 00 01 cmp DWORD PTR req_comp$[rbp], 1
+ 0004f 7c 09 jl SHORT $LN59@stbi__conv
+ 00051 83 bd 90 01 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 00058 7e 1c jle SHORT $LN60@stbi__conv
+$LN59@stbi__conv:
+ 0005a 41 b8 36 07 00
+ 00 mov r8d, 1846 ; 00000736H
+ 00060 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00067 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1DO@MABJBNAJ@?$AAr?$AAe?$AAq?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DO?$AA?$DN?$AA?5?$AA1?$AA?5?$AA?$CG@
+ 0006e ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00074 33 c0 xor eax, eax
+$LN60@stbi__conv:
+
+; 1847 :
+; 1848 : good = (unsigned char *)stbi__malloc_mad3(req_comp, x, y, 0);
+
+ 00076 45 33 c9 xor r9d, r9d
+ 00079 44 8b 85 a0 01
+ 00 00 mov r8d, DWORD PTR y$[rbp]
+ 00080 8b 95 98 01 00
+ 00 mov edx, DWORD PTR x$[rbp]
+ 00086 8b 8d 90 01 00
+ 00 mov ecx, DWORD PTR req_comp$[rbp]
+ 0008c e8 00 00 00 00 call stbi__malloc_mad3
+ 00091 48 89 45 48 mov QWORD PTR good$[rbp], rax
+
+; 1849 : if (good == NULL) {
+
+ 00095 48 83 7d 48 00 cmp QWORD PTR good$[rbp], 0
+ 0009a 75 42 jne SHORT $LN44@stbi__conv
+
+; 1850 : STBI_FREE(data);
+
+ 0009c 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 000a3 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000a9 90 npad 1
+
+; 1851 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 000aa 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 000b1 e8 00 00 00 00 call stbi__err
+ 000b6 85 c0 test eax, eax
+ 000b8 74 0d je SHORT $LN61@stbi__conv
+ 000ba 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv81[rbp], 0
+ 000c5 eb 0b jmp SHORT $LN62@stbi__conv
+$LN61@stbi__conv:
+ 000c7 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv81[rbp], 0
+$LN62@stbi__conv:
+ 000d2 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv81[rbp]
+ 000d9 e9 6d 09 00 00 jmp $LN1@stbi__conv
+$LN44@stbi__conv:
+
+; 1852 : }
+; 1853 :
+; 1854 : for (j = 0; j < (int)y; ++j) {
+
+ 000de c7 45 24 00 00
+ 00 00 mov DWORD PTR j$[rbp], 0
+ 000e5 eb 08 jmp SHORT $LN4@stbi__conv
+$LN2@stbi__conv:
+ 000e7 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 000ea ff c0 inc eax
+ 000ec 89 45 24 mov DWORD PTR j$[rbp], eax
+$LN4@stbi__conv:
+ 000ef 8b 85 a0 01 00
+ 00 mov eax, DWORD PTR y$[rbp]
+ 000f5 39 45 24 cmp DWORD PTR j$[rbp], eax
+ 000f8 0f 8d 3b 09 00
+ 00 jge $LN3@stbi__conv
+
+; 1855 : unsigned char *src = data + j * x * img_n;
+
+ 000fe 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 00101 0f af 85 98 01
+ 00 00 imul eax, DWORD PTR x$[rbp]
+ 00108 0f af 85 88 01
+ 00 00 imul eax, DWORD PTR img_n$[rbp]
+ 0010f 8b c0 mov eax, eax
+ 00111 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00118 48 03 c8 add rcx, rax
+ 0011b 48 8b c1 mov rax, rcx
+ 0011e 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+
+; 1856 : unsigned char *dest = good + j * x * req_comp;
+
+ 00122 8b 45 24 mov eax, DWORD PTR j$[rbp]
+ 00125 0f af 85 98 01
+ 00 00 imul eax, DWORD PTR x$[rbp]
+ 0012c 0f af 85 90 01
+ 00 00 imul eax, DWORD PTR req_comp$[rbp]
+ 00133 8b c0 mov eax, eax
+ 00135 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
+ 00139 48 03 c8 add rcx, rax
+ 0013c 48 8b c1 mov rax, rcx
+ 0013f 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+
+; 1857 :
+; 1858 : #define STBI__COMBO(a, b) ((a) * 8 + (b))
+; 1859 : #define STBI__CASE(a, b) \
+; 1860 : case STBI__COMBO(a, b): \
+; 1861 : for (i = x - 1; i >= 0; --i, src += a, dest += b)
+; 1862 : // convert source image with img_n components to one with req_comp components;
+; 1863 : // avoid switch per pixel, so use switch per scanline and massive macros
+; 1864 : switch (STBI__COMBO(img_n, req_comp)) {
+
+ 00146 8b 85 90 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 0014c 8b 8d 88 01 00
+ 00 mov ecx, DWORD PTR img_n$[rbp]
+ 00152 8d 04 c8 lea eax, DWORD PTR [rax+rcx*8]
+ 00155 89 85 54 01 00
+ 00 mov DWORD PTR tv94[rbp], eax
+ 0015b 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv94[rbp]
+ 00161 83 e8 0a sub eax, 10
+ 00164 89 85 54 01 00
+ 00 mov DWORD PTR tv94[rbp], eax
+ 0016a 83 bd 54 01 00
+ 00 19 cmp DWORD PTR tv94[rbp], 25
+ 00171 0f 87 51 08 00
+ 00 ja $LN57@stbi__conv
+ 00177 48 63 85 54 01
+ 00 00 movsxd rax, DWORD PTR tv94[rbp]
+ 0017e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__ImageBase
+ 00185 8b 84 81 00 00
+ 00 00 mov eax, DWORD PTR $LN66@stbi__conv[rcx+rax*4]
+ 0018c 48 03 c1 add rax, rcx
+ 0018f ff e0 jmp rax
+$LN45@stbi__conv:
+
+; 1865 : STBI__CASE(1, 2)
+
+ 00191 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00197 ff c8 dec eax
+ 00199 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0019c eb 25 jmp SHORT $LN9@stbi__conv
+$LN7@stbi__conv:
+ 0019e 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001a1 ff c8 dec eax
+ 001a3 89 45 04 mov DWORD PTR i$[rbp], eax
+ 001a6 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 001aa 48 ff c0 inc rax
+ 001ad 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 001b1 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 001b8 48 83 c0 02 add rax, 2
+ 001bc 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN9@stbi__conv:
+ 001c3 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 001c7 7c 3b jl SHORT $LN8@stbi__conv
+
+; 1866 : {
+; 1867 : dest[0] = src[0];
+
+ 001c9 b8 01 00 00 00 mov eax, 1
+ 001ce 48 6b c0 00 imul rax, rax, 0
+ 001d2 b9 01 00 00 00 mov ecx, 1
+ 001d7 48 6b c9 00 imul rcx, rcx, 0
+ 001db 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 001e2 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 001e6 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 001eb 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1868 : dest[1] = 255;
+
+ 001ee b8 01 00 00 00 mov eax, 1
+ 001f3 48 6b c0 01 imul rax, rax, 1
+ 001f7 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR dest$2[rbp]
+ 001fe c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 1869 : }
+
+ 00202 eb 9a jmp SHORT $LN7@stbi__conv
+$LN8@stbi__conv:
+
+; 1870 : break;
+
+ 00204 e9 2b 08 00 00 jmp $LN5@stbi__conv
+$LN46@stbi__conv:
+
+; 1871 : STBI__CASE(1, 3)
+
+ 00209 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 0020f ff c8 dec eax
+ 00211 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00214 eb 25 jmp SHORT $LN12@stbi__conv
+$LN10@stbi__conv:
+ 00216 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00219 ff c8 dec eax
+ 0021b 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0021e 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00222 48 ff c0 inc rax
+ 00225 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 00229 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00230 48 83 c0 03 add rax, 3
+ 00234 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN12@stbi__conv:
+ 0023b 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 0023f 7c 7a jl SHORT $LN11@stbi__conv
+
+; 1872 : {
+; 1873 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 00241 b8 01 00 00 00 mov eax, 1
+ 00246 48 6b c0 00 imul rax, rax, 0
+ 0024a b9 01 00 00 00 mov ecx, 1
+ 0024f 48 6b c9 02 imul rcx, rcx, 2
+ 00253 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0025a 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0025e 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00263 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00266 b8 01 00 00 00 mov eax, 1
+ 0026b 48 6b c0 02 imul rax, rax, 2
+ 0026f b9 01 00 00 00 mov ecx, 1
+ 00274 48 6b c9 01 imul rcx, rcx, 1
+ 00278 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0027f 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00286 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0028b 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 0028e b8 01 00 00 00 mov eax, 1
+ 00293 48 6b c0 01 imul rax, rax, 1
+ 00297 b9 01 00 00 00 mov ecx, 1
+ 0029c 48 6b c9 00 imul rcx, rcx, 0
+ 002a0 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 002a7 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 002ae 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 002b3 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1874 : }
+
+ 002b6 e9 5b ff ff ff jmp $LN10@stbi__conv
+$LN11@stbi__conv:
+
+; 1875 : break;
+
+ 002bb e9 74 07 00 00 jmp $LN5@stbi__conv
+$LN47@stbi__conv:
+
+; 1876 : STBI__CASE(1, 4)
+
+ 002c0 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 002c6 ff c8 dec eax
+ 002c8 89 45 04 mov DWORD PTR i$[rbp], eax
+ 002cb eb 25 jmp SHORT $LN15@stbi__conv
+$LN13@stbi__conv:
+ 002cd 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 002d0 ff c8 dec eax
+ 002d2 89 45 04 mov DWORD PTR i$[rbp], eax
+ 002d5 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 002d9 48 ff c0 inc rax
+ 002dc 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 002e0 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 002e7 48 83 c0 04 add rax, 4
+ 002eb 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN15@stbi__conv:
+ 002f2 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 002f6 0f 8c 8e 00 00
+ 00 jl $LN14@stbi__conv
+
+; 1877 : {
+; 1878 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 002fc b8 01 00 00 00 mov eax, 1
+ 00301 48 6b c0 00 imul rax, rax, 0
+ 00305 b9 01 00 00 00 mov ecx, 1
+ 0030a 48 6b c9 02 imul rcx, rcx, 2
+ 0030e 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00315 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00319 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0031e 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00321 b8 01 00 00 00 mov eax, 1
+ 00326 48 6b c0 02 imul rax, rax, 2
+ 0032a b9 01 00 00 00 mov ecx, 1
+ 0032f 48 6b c9 01 imul rcx, rcx, 1
+ 00333 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0033a 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00341 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00346 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00349 b8 01 00 00 00 mov eax, 1
+ 0034e 48 6b c0 01 imul rax, rax, 1
+ 00352 b9 01 00 00 00 mov ecx, 1
+ 00357 48 6b c9 00 imul rcx, rcx, 0
+ 0035b 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00362 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00369 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0036e 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1879 : dest[3] = 255;
+
+ 00371 b8 01 00 00 00 mov eax, 1
+ 00376 48 6b c0 03 imul rax, rax, 3
+ 0037a 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR dest$2[rbp]
+ 00381 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 1880 : }
+
+ 00385 e9 43 ff ff ff jmp $LN13@stbi__conv
+$LN14@stbi__conv:
+
+; 1881 : break;
+
+ 0038a e9 a5 06 00 00 jmp $LN5@stbi__conv
+$LN48@stbi__conv:
+
+; 1882 : STBI__CASE(2, 1)
+
+ 0038f 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00395 ff c8 dec eax
+ 00397 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0039a eb 25 jmp SHORT $LN18@stbi__conv
+$LN16@stbi__conv:
+ 0039c 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0039f ff c8 dec eax
+ 003a1 89 45 04 mov DWORD PTR i$[rbp], eax
+ 003a4 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 003a8 48 83 c0 02 add rax, 2
+ 003ac 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 003b0 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 003b7 48 ff c0 inc rax
+ 003ba 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN18@stbi__conv:
+ 003c1 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 003c5 7c 27 jl SHORT $LN17@stbi__conv
+
+; 1883 : {
+; 1884 : dest[0] = src[0];
+
+ 003c7 b8 01 00 00 00 mov eax, 1
+ 003cc 48 6b c0 00 imul rax, rax, 0
+ 003d0 b9 01 00 00 00 mov ecx, 1
+ 003d5 48 6b c9 00 imul rcx, rcx, 0
+ 003d9 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 003e0 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 003e4 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 003e9 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1885 : }
+
+ 003ec eb ae jmp SHORT $LN16@stbi__conv
+$LN17@stbi__conv:
+
+; 1886 : break;
+
+ 003ee e9 41 06 00 00 jmp $LN5@stbi__conv
+$LN49@stbi__conv:
+
+; 1887 : STBI__CASE(2, 3)
+
+ 003f3 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 003f9 ff c8 dec eax
+ 003fb 89 45 04 mov DWORD PTR i$[rbp], eax
+ 003fe eb 26 jmp SHORT $LN21@stbi__conv
+$LN19@stbi__conv:
+ 00400 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00403 ff c8 dec eax
+ 00405 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00408 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 0040c 48 83 c0 02 add rax, 2
+ 00410 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 00414 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 0041b 48 83 c0 03 add rax, 3
+ 0041f 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN21@stbi__conv:
+ 00426 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 0042a 7c 7a jl SHORT $LN20@stbi__conv
+
+; 1888 : {
+; 1889 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 0042c b8 01 00 00 00 mov eax, 1
+ 00431 48 6b c0 00 imul rax, rax, 0
+ 00435 b9 01 00 00 00 mov ecx, 1
+ 0043a 48 6b c9 02 imul rcx, rcx, 2
+ 0043e 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00445 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00449 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0044e 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00451 b8 01 00 00 00 mov eax, 1
+ 00456 48 6b c0 02 imul rax, rax, 2
+ 0045a b9 01 00 00 00 mov ecx, 1
+ 0045f 48 6b c9 01 imul rcx, rcx, 1
+ 00463 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0046a 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00471 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00476 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00479 b8 01 00 00 00 mov eax, 1
+ 0047e 48 6b c0 01 imul rax, rax, 1
+ 00482 b9 01 00 00 00 mov ecx, 1
+ 00487 48 6b c9 00 imul rcx, rcx, 0
+ 0048b 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00492 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00499 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0049e 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1890 : }
+
+ 004a1 e9 5a ff ff ff jmp $LN19@stbi__conv
+$LN20@stbi__conv:
+
+; 1891 : break;
+
+ 004a6 e9 89 05 00 00 jmp $LN5@stbi__conv
+$LN50@stbi__conv:
+
+; 1892 : STBI__CASE(2, 4)
+
+ 004ab 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 004b1 ff c8 dec eax
+ 004b3 89 45 04 mov DWORD PTR i$[rbp], eax
+ 004b6 eb 26 jmp SHORT $LN24@stbi__conv
+$LN22@stbi__conv:
+ 004b8 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 004bb ff c8 dec eax
+ 004bd 89 45 04 mov DWORD PTR i$[rbp], eax
+ 004c0 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 004c4 48 83 c0 02 add rax, 2
+ 004c8 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 004cc 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 004d3 48 83 c0 04 add rax, 4
+ 004d7 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN24@stbi__conv:
+ 004de 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 004e2 0f 8c 9f 00 00
+ 00 jl $LN23@stbi__conv
+
+; 1893 : {
+; 1894 : dest[0] = dest[1] = dest[2] = src[0];
+
+ 004e8 b8 01 00 00 00 mov eax, 1
+ 004ed 48 6b c0 00 imul rax, rax, 0
+ 004f1 b9 01 00 00 00 mov ecx, 1
+ 004f6 48 6b c9 02 imul rcx, rcx, 2
+ 004fa 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00501 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00505 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0050a 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 0050d b8 01 00 00 00 mov eax, 1
+ 00512 48 6b c0 02 imul rax, rax, 2
+ 00516 b9 01 00 00 00 mov ecx, 1
+ 0051b 48 6b c9 01 imul rcx, rcx, 1
+ 0051f 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00526 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 0052d 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00532 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00535 b8 01 00 00 00 mov eax, 1
+ 0053a 48 6b c0 01 imul rax, rax, 1
+ 0053e b9 01 00 00 00 mov ecx, 1
+ 00543 48 6b c9 00 imul rcx, rcx, 0
+ 00547 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0054e 4c 8b 85 88 00
+ 00 00 mov r8, QWORD PTR dest$2[rbp]
+ 00555 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0055a 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1895 : dest[3] = src[1];
+
+ 0055d b8 01 00 00 00 mov eax, 1
+ 00562 48 6b c0 01 imul rax, rax, 1
+ 00566 b9 01 00 00 00 mov ecx, 1
+ 0056b 48 6b c9 03 imul rcx, rcx, 3
+ 0056f 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00576 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0057a 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0057f 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1896 : }
+
+ 00582 e9 31 ff ff ff jmp $LN22@stbi__conv
+$LN23@stbi__conv:
+
+; 1897 : break;
+
+ 00587 e9 a8 04 00 00 jmp $LN5@stbi__conv
+$LN51@stbi__conv:
+
+; 1898 : STBI__CASE(3, 4)
+
+ 0058c 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00592 ff c8 dec eax
+ 00594 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00597 eb 26 jmp SHORT $LN27@stbi__conv
+$LN25@stbi__conv:
+ 00599 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0059c ff c8 dec eax
+ 0059e 89 45 04 mov DWORD PTR i$[rbp], eax
+ 005a1 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 005a5 48 83 c0 03 add rax, 3
+ 005a9 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 005ad 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 005b4 48 83 c0 04 add rax, 4
+ 005b8 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN27@stbi__conv:
+ 005bf 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 005c3 0f 8c 88 00 00
+ 00 jl $LN26@stbi__conv
+
+; 1899 : {
+; 1900 : dest[0] = src[0];
+
+ 005c9 b8 01 00 00 00 mov eax, 1
+ 005ce 48 6b c0 00 imul rax, rax, 0
+ 005d2 b9 01 00 00 00 mov ecx, 1
+ 005d7 48 6b c9 00 imul rcx, rcx, 0
+ 005db 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 005e2 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 005e6 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 005eb 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1901 : dest[1] = src[1];
+
+ 005ee b8 01 00 00 00 mov eax, 1
+ 005f3 48 6b c0 01 imul rax, rax, 1
+ 005f7 b9 01 00 00 00 mov ecx, 1
+ 005fc 48 6b c9 01 imul rcx, rcx, 1
+ 00600 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00607 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0060b 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00610 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1902 : dest[2] = src[2];
+
+ 00613 b8 01 00 00 00 mov eax, 1
+ 00618 48 6b c0 02 imul rax, rax, 2
+ 0061c b9 01 00 00 00 mov ecx, 1
+ 00621 48 6b c9 02 imul rcx, rcx, 2
+ 00625 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0062c 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00630 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00635 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1903 : dest[3] = 255;
+
+ 00638 b8 01 00 00 00 mov eax, 1
+ 0063d 48 6b c0 03 imul rax, rax, 3
+ 00641 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR dest$2[rbp]
+ 00648 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 1904 : }
+
+ 0064c e9 48 ff ff ff jmp $LN25@stbi__conv
+$LN26@stbi__conv:
+
+; 1905 : break;
+
+ 00651 e9 de 03 00 00 jmp $LN5@stbi__conv
+$LN52@stbi__conv:
+
+; 1906 : STBI__CASE(3, 1)
+
+ 00656 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 0065c ff c8 dec eax
+ 0065e 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00661 eb 25 jmp SHORT $LN30@stbi__conv
+$LN28@stbi__conv:
+ 00663 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00666 ff c8 dec eax
+ 00668 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0066b 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 0066f 48 83 c0 03 add rax, 3
+ 00673 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 00677 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 0067e 48 ff c0 inc rax
+ 00681 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN30@stbi__conv:
+ 00688 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 0068c 7c 64 jl SHORT $LN29@stbi__conv
+
+; 1907 : {
+; 1908 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
+
+ 0068e b8 01 00 00 00 mov eax, 1
+ 00693 48 6b c0 02 imul rax, rax, 2
+ 00697 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 0069b 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0069f b9 01 00 00 00 mov ecx, 1
+ 006a4 48 6b c9 01 imul rcx, rcx, 1
+ 006a8 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 006ac 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 006b0 ba 01 00 00 00 mov edx, 1
+ 006b5 48 6b d2 00 imul rdx, rdx, 0
+ 006b9 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 006bd 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
+ 006c2 89 95 54 01 00
+ 00 mov DWORD PTR tv258[rbp], edx
+ 006c8 44 8b c0 mov r8d, eax
+ 006cb 8b d1 mov edx, ecx
+ 006cd 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv258[rbp]
+ 006d3 8b c8 mov ecx, eax
+ 006d5 e8 00 00 00 00 call stbi__compute_y
+ 006da b9 01 00 00 00 mov ecx, 1
+ 006df 48 6b c9 00 imul rcx, rcx, 0
+ 006e3 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 006ea 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1909 : }
+
+ 006ed e9 71 ff ff ff jmp $LN28@stbi__conv
+$LN29@stbi__conv:
+
+; 1910 : break;
+
+ 006f2 e9 3d 03 00 00 jmp $LN5@stbi__conv
+$LN53@stbi__conv:
+
+; 1911 : STBI__CASE(3, 2)
+
+ 006f7 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 006fd ff c8 dec eax
+ 006ff 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00702 eb 26 jmp SHORT $LN33@stbi__conv
+$LN31@stbi__conv:
+ 00704 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00707 ff c8 dec eax
+ 00709 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0070c 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00710 48 83 c0 03 add rax, 3
+ 00714 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 00718 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 0071f 48 83 c0 02 add rax, 2
+ 00723 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN33@stbi__conv:
+ 0072a 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 0072e 7c 78 jl SHORT $LN32@stbi__conv
+
+; 1912 : {
+; 1913 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
+
+ 00730 b8 01 00 00 00 mov eax, 1
+ 00735 48 6b c0 02 imul rax, rax, 2
+ 00739 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 0073d 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00741 b9 01 00 00 00 mov ecx, 1
+ 00746 48 6b c9 01 imul rcx, rcx, 1
+ 0074a 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 0074e 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00752 ba 01 00 00 00 mov edx, 1
+ 00757 48 6b d2 00 imul rdx, rdx, 0
+ 0075b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0075f 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
+ 00764 89 95 54 01 00
+ 00 mov DWORD PTR tv278[rbp], edx
+ 0076a 44 8b c0 mov r8d, eax
+ 0076d 8b d1 mov edx, ecx
+ 0076f 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv278[rbp]
+ 00775 8b c8 mov ecx, eax
+ 00777 e8 00 00 00 00 call stbi__compute_y
+ 0077c b9 01 00 00 00 mov ecx, 1
+ 00781 48 6b c9 00 imul rcx, rcx, 0
+ 00785 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0078c 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1914 : dest[1] = 255;
+
+ 0078f b8 01 00 00 00 mov eax, 1
+ 00794 48 6b c0 01 imul rax, rax, 1
+ 00798 48 8b 8d 88 00
+ 00 00 mov rcx, QWORD PTR dest$2[rbp]
+ 0079f c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+
+; 1915 : }
+
+ 007a3 e9 5c ff ff ff jmp $LN31@stbi__conv
+$LN32@stbi__conv:
+
+; 1916 : break;
+
+ 007a8 e9 87 02 00 00 jmp $LN5@stbi__conv
+$LN54@stbi__conv:
+
+; 1917 : STBI__CASE(4, 1)
+
+ 007ad 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 007b3 ff c8 dec eax
+ 007b5 89 45 04 mov DWORD PTR i$[rbp], eax
+ 007b8 eb 25 jmp SHORT $LN36@stbi__conv
+$LN34@stbi__conv:
+ 007ba 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 007bd ff c8 dec eax
+ 007bf 89 45 04 mov DWORD PTR i$[rbp], eax
+ 007c2 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 007c6 48 83 c0 04 add rax, 4
+ 007ca 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 007ce 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 007d5 48 ff c0 inc rax
+ 007d8 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN36@stbi__conv:
+ 007df 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 007e3 7c 64 jl SHORT $LN35@stbi__conv
+
+; 1918 : {
+; 1919 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
+
+ 007e5 b8 01 00 00 00 mov eax, 1
+ 007ea 48 6b c0 02 imul rax, rax, 2
+ 007ee 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 007f2 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 007f6 b9 01 00 00 00 mov ecx, 1
+ 007fb 48 6b c9 01 imul rcx, rcx, 1
+ 007ff 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 00803 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 00807 ba 01 00 00 00 mov edx, 1
+ 0080c 48 6b d2 00 imul rdx, rdx, 0
+ 00810 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00814 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
+ 00819 89 95 54 01 00
+ 00 mov DWORD PTR tv300[rbp], edx
+ 0081f 44 8b c0 mov r8d, eax
+ 00822 8b d1 mov edx, ecx
+ 00824 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv300[rbp]
+ 0082a 8b c8 mov ecx, eax
+ 0082c e8 00 00 00 00 call stbi__compute_y
+ 00831 b9 01 00 00 00 mov ecx, 1
+ 00836 48 6b c9 00 imul rcx, rcx, 0
+ 0083a 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00841 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1920 : }
+
+ 00844 e9 71 ff ff ff jmp $LN34@stbi__conv
+$LN35@stbi__conv:
+
+; 1921 : break;
+
+ 00849 e9 e6 01 00 00 jmp $LN5@stbi__conv
+$LN55@stbi__conv:
+
+; 1922 : STBI__CASE(4, 2)
+
+ 0084e 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 00854 ff c8 dec eax
+ 00856 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00859 eb 26 jmp SHORT $LN39@stbi__conv
+$LN37@stbi__conv:
+ 0085b 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0085e ff c8 dec eax
+ 00860 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00863 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00867 48 83 c0 04 add rax, 4
+ 0086b 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 0086f 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00876 48 83 c0 02 add rax, 2
+ 0087a 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN39@stbi__conv:
+ 00881 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00885 0f 8c 89 00 00
+ 00 jl $LN38@stbi__conv
+
+; 1923 : {
+; 1924 : dest[0] = stbi__compute_y(src[0], src[1], src[2]);
+
+ 0088b b8 01 00 00 00 mov eax, 1
+ 00890 48 6b c0 02 imul rax, rax, 2
+ 00894 48 8b 4d 68 mov rcx, QWORD PTR src$1[rbp]
+ 00898 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0089c b9 01 00 00 00 mov ecx, 1
+ 008a1 48 6b c9 01 imul rcx, rcx, 1
+ 008a5 48 8b 55 68 mov rdx, QWORD PTR src$1[rbp]
+ 008a9 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 008ad ba 01 00 00 00 mov edx, 1
+ 008b2 48 6b d2 00 imul rdx, rdx, 0
+ 008b6 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 008ba 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx]
+ 008bf 89 95 54 01 00
+ 00 mov DWORD PTR tv320[rbp], edx
+ 008c5 44 8b c0 mov r8d, eax
+ 008c8 8b d1 mov edx, ecx
+ 008ca 8b 85 54 01 00
+ 00 mov eax, DWORD PTR tv320[rbp]
+ 008d0 8b c8 mov ecx, eax
+ 008d2 e8 00 00 00 00 call stbi__compute_y
+ 008d7 b9 01 00 00 00 mov ecx, 1
+ 008dc 48 6b c9 00 imul rcx, rcx, 0
+ 008e0 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 008e7 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1925 : dest[1] = src[3];
+
+ 008ea b8 01 00 00 00 mov eax, 1
+ 008ef 48 6b c0 03 imul rax, rax, 3
+ 008f3 b9 01 00 00 00 mov ecx, 1
+ 008f8 48 6b c9 01 imul rcx, rcx, 1
+ 008fc 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00903 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00907 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 0090c 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1926 : }
+
+ 0090f e9 47 ff ff ff jmp $LN37@stbi__conv
+$LN38@stbi__conv:
+
+; 1927 : break;
+
+ 00914 e9 1b 01 00 00 jmp $LN5@stbi__conv
+$LN56@stbi__conv:
+
+; 1928 : STBI__CASE(4, 3)
+
+ 00919 8b 85 98 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 0091f ff c8 dec eax
+ 00921 89 45 04 mov DWORD PTR i$[rbp], eax
+ 00924 eb 26 jmp SHORT $LN42@stbi__conv
+$LN40@stbi__conv:
+ 00926 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00929 ff c8 dec eax
+ 0092b 89 45 04 mov DWORD PTR i$[rbp], eax
+ 0092e 48 8b 45 68 mov rax, QWORD PTR src$1[rbp]
+ 00932 48 83 c0 04 add rax, 4
+ 00936 48 89 45 68 mov QWORD PTR src$1[rbp], rax
+ 0093a 48 8b 85 88 00
+ 00 00 mov rax, QWORD PTR dest$2[rbp]
+ 00941 48 83 c0 03 add rax, 3
+ 00945 48 89 85 88 00
+ 00 00 mov QWORD PTR dest$2[rbp], rax
+$LN42@stbi__conv:
+ 0094c 83 7d 04 00 cmp DWORD PTR i$[rbp], 0
+ 00950 7c 74 jl SHORT $LN41@stbi__conv
+
+; 1929 : {
+; 1930 : dest[0] = src[0];
+
+ 00952 b8 01 00 00 00 mov eax, 1
+ 00957 48 6b c0 00 imul rax, rax, 0
+ 0095b b9 01 00 00 00 mov ecx, 1
+ 00960 48 6b c9 00 imul rcx, rcx, 0
+ 00964 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 0096b 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 0096f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00974 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1931 : dest[1] = src[1];
+
+ 00977 b8 01 00 00 00 mov eax, 1
+ 0097c 48 6b c0 01 imul rax, rax, 1
+ 00980 b9 01 00 00 00 mov ecx, 1
+ 00985 48 6b c9 01 imul rcx, rcx, 1
+ 00989 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 00990 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 00994 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 00999 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1932 : dest[2] = src[2];
+
+ 0099c b8 01 00 00 00 mov eax, 1
+ 009a1 48 6b c0 02 imul rax, rax, 2
+ 009a5 b9 01 00 00 00 mov ecx, 1
+ 009aa 48 6b c9 02 imul rcx, rcx, 2
+ 009ae 48 8b 95 88 00
+ 00 00 mov rdx, QWORD PTR dest$2[rbp]
+ 009b5 4c 8b 45 68 mov r8, QWORD PTR src$1[rbp]
+ 009b9 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 009be 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 1933 : }
+
+ 009c1 e9 60 ff ff ff jmp $LN40@stbi__conv
+$LN41@stbi__conv:
+
+; 1934 : break;
+
+ 009c6 eb 6c jmp SHORT $LN5@stbi__conv
+$LN57@stbi__conv:
+
+; 1935 : default:
+; 1936 : STBI_ASSERT(0);
+
+ 009c8 33 c0 xor eax, eax
+ 009ca 85 c0 test eax, eax
+ 009cc 75 1c jne SHORT $LN63@stbi__conv
+ 009ce 41 b8 90 07 00
+ 00 mov r8d, 1936 ; 00000790H
+ 009d4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 009db 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_13COJANIEC@?$AA0@
+ 009e2 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 009e8 33 c0 xor eax, eax
+$LN63@stbi__conv:
+
+; 1937 : STBI_FREE(data);
+
+ 009ea 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 009f1 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 009f7 90 npad 1
+
+; 1938 : STBI_FREE(good);
+
+ 009f8 48 8b 4d 48 mov rcx, QWORD PTR good$[rbp]
+ 009fc ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00a02 90 npad 1
+
+; 1939 : return stbi__errpuc("unsupported", "Unsupported format conversion");
+
+ 00a03 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@MHDBFHD@unsupported@
+ 00a0a e8 00 00 00 00 call stbi__err
+ 00a0f 85 c0 test eax, eax
+ 00a11 74 0d je SHORT $LN64@stbi__conv
+ 00a13 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv353[rbp], 0
+ 00a1e eb 0b jmp SHORT $LN65@stbi__conv
+$LN64@stbi__conv:
+ 00a20 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv353[rbp], 0
+$LN65@stbi__conv:
+ 00a2b 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv353[rbp]
+ 00a32 eb 17 jmp SHORT $LN1@stbi__conv
+$LN5@stbi__conv:
+
+; 1940 : }
+; 1941 : #undef STBI__CASE
+; 1942 : }
+
+ 00a34 e9 ae f6 ff ff jmp $LN2@stbi__conv
+$LN3@stbi__conv:
+
+; 1943 :
+; 1944 : STBI_FREE(data);
+
+ 00a39 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00a40 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00a46 90 npad 1
+
+; 1945 : return good;
+
+ 00a47 48 8b 45 48 mov rax, QWORD PTR good$[rbp]
+$LN1@stbi__conv:
+
+; 1946 : }
+
+ 00a4b 48 8d a5 68 01
+ 00 00 lea rsp, QWORD PTR [rbp+360]
+ 00a52 5f pop rdi
+ 00a53 5d pop rbp
+ 00a54 c3 ret 0
+ 00a55 0f 1f 00 npad 3
+$LN66@stbi__conv:
+ 00a58 00 00 00 00 DD $LN45@stbi__conv
+ 00a5c 00 00 00 00 DD $LN46@stbi__conv
+ 00a60 00 00 00 00 DD $LN47@stbi__conv
+ 00a64 00 00 00 00 DD $LN57@stbi__conv
+ 00a68 00 00 00 00 DD $LN57@stbi__conv
+ 00a6c 00 00 00 00 DD $LN57@stbi__conv
+ 00a70 00 00 00 00 DD $LN57@stbi__conv
+ 00a74 00 00 00 00 DD $LN48@stbi__conv
+ 00a78 00 00 00 00 DD $LN57@stbi__conv
+ 00a7c 00 00 00 00 DD $LN49@stbi__conv
+ 00a80 00 00 00 00 DD $LN50@stbi__conv
+ 00a84 00 00 00 00 DD $LN57@stbi__conv
+ 00a88 00 00 00 00 DD $LN57@stbi__conv
+ 00a8c 00 00 00 00 DD $LN57@stbi__conv
+ 00a90 00 00 00 00 DD $LN57@stbi__conv
+ 00a94 00 00 00 00 DD $LN52@stbi__conv
+ 00a98 00 00 00 00 DD $LN53@stbi__conv
+ 00a9c 00 00 00 00 DD $LN57@stbi__conv
+ 00aa0 00 00 00 00 DD $LN51@stbi__conv
+ 00aa4 00 00 00 00 DD $LN57@stbi__conv
+ 00aa8 00 00 00 00 DD $LN57@stbi__conv
+ 00aac 00 00 00 00 DD $LN57@stbi__conv
+ 00ab0 00 00 00 00 DD $LN57@stbi__conv
+ 00ab4 00 00 00 00 DD $LN54@stbi__conv
+ 00ab8 00 00 00 00 DD $LN55@stbi__conv
+ 00abc 00 00 00 00 DD $LN56@stbi__conv
+stbi__convert_format ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__compute_y
+_TEXT SEGMENT
+r$ = 224
+g$ = 232
+b$ = 240
+stbi__compute_y PROC ; COMDAT
+
+; 1828 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000d 55 push rbp
+ 0000e 57 push rdi
+ 0000f 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00027 90 npad 1
+
+; 1829 : return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8);
+
+ 00028 6b 85 e0 00 00
+ 00 4d imul eax, DWORD PTR r$[rbp], 77 ; 0000004dH
+ 0002f 69 8d e8 00 00
+ 00 96 00 00 00 imul ecx, DWORD PTR g$[rbp], 150 ; 00000096H
+ 00039 03 c1 add eax, ecx
+ 0003b 6b 8d f0 00 00
+ 00 1d imul ecx, DWORD PTR b$[rbp], 29
+ 00042 03 c1 add eax, ecx
+ 00044 c1 f8 08 sar eax, 8
+
+; 1830 : }
+
+ 00047 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0004e 5f pop rdi
+ 0004f 5d pop rbp
+ 00050 c3 ret 0
+stbi__compute_y ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__get32le
+_TEXT SEGMENT
+z$ = 4
+s$ = 256
+stbi__get32le PROC ; COMDAT
+
+; 1802 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1803 : stbi__uint32 z = stbi__get16le(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get16le
+ 0002c 89 45 04 mov DWORD PTR z$[rbp], eax
+
+; 1804 : z += (stbi__uint32)stbi__get16le(s) << 16;
+
+ 0002f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__get16le
+ 0003b c1 e0 10 shl eax, 16
+ 0003e 8b 4d 04 mov ecx, DWORD PTR z$[rbp]
+ 00041 03 c8 add ecx, eax
+ 00043 8b c1 mov eax, ecx
+ 00045 89 45 04 mov DWORD PTR z$[rbp], eax
+
+; 1805 : return z;
+
+ 00048 8b 45 04 mov eax, DWORD PTR z$[rbp]
+
+; 1806 : }
+
+ 0004b 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00052 5f pop rdi
+ 00053 5d pop rbp
+ 00054 c3 ret 0
+stbi__get32le ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__get16le
+_TEXT SEGMENT
+z$ = 4
+s$ = 256
+stbi__get16le PROC ; COMDAT
+
+; 1794 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1795 : int z = stbi__get8(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get8
+ 0002c 0f b6 c0 movzx eax, al
+ 0002f 89 45 04 mov DWORD PTR z$[rbp], eax
+
+; 1796 : return z + (stbi__get8(s) << 8);
+
+ 00032 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00039 e8 00 00 00 00 call stbi__get8
+ 0003e 0f b6 c0 movzx eax, al
+ 00041 c1 e0 08 shl eax, 8
+ 00044 8b 4d 04 mov ecx, DWORD PTR z$[rbp]
+ 00047 03 c8 add ecx, eax
+ 00049 8b c1 mov eax, ecx
+
+; 1797 : }
+
+ 0004b 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00052 5f pop rdi
+ 00053 5d pop rbp
+ 00054 c3 ret 0
+stbi__get16le ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__get32be
+_TEXT SEGMENT
+z$ = 4
+tv66 = 212
+s$ = 256
+stbi__get32be PROC ; COMDAT
+
+; 1784 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1785 : stbi__uint32 z = stbi__get16be(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get16be
+ 0002c 89 45 04 mov DWORD PTR z$[rbp], eax
+
+; 1786 : return (z << 16) + stbi__get16be(s);
+
+ 0002f 8b 45 04 mov eax, DWORD PTR z$[rbp]
+ 00032 c1 e0 10 shl eax, 16
+ 00035 89 85 d4 00 00
+ 00 mov DWORD PTR tv66[rbp], eax
+ 0003b 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00042 e8 00 00 00 00 call stbi__get16be
+ 00047 8b 8d d4 00 00
+ 00 mov ecx, DWORD PTR tv66[rbp]
+ 0004d 03 c8 add ecx, eax
+ 0004f 8b c1 mov eax, ecx
+
+; 1787 : }
+
+ 00051 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00058 5f pop rdi
+ 00059 5d pop rbp
+ 0005a c3 ret 0
+stbi__get32be ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__get16be
+_TEXT SEGMENT
+z$ = 4
+tv67 = 212
+s$ = 256
+stbi__get16be PROC ; COMDAT
+
+; 1774 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1775 : int z = stbi__get8(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get8
+ 0002c 0f b6 c0 movzx eax, al
+ 0002f 89 45 04 mov DWORD PTR z$[rbp], eax
+
+; 1776 : return (z << 8) + stbi__get8(s);
+
+ 00032 8b 45 04 mov eax, DWORD PTR z$[rbp]
+ 00035 c1 e0 08 shl eax, 8
+ 00038 89 85 d4 00 00
+ 00 mov DWORD PTR tv67[rbp], eax
+ 0003e 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00045 e8 00 00 00 00 call stbi__get8
+ 0004a 0f b6 c0 movzx eax, al
+ 0004d 8b 8d d4 00 00
+ 00 mov ecx, DWORD PTR tv67[rbp]
+ 00053 03 c8 add ecx, eax
+ 00055 8b c1 mov eax, ecx
+
+; 1777 : }
+
+ 00057 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 0005e 5f pop rdi
+ 0005f 5d pop rbp
+ 00060 c3 ret 0
+stbi__get16be ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__getn
+_TEXT SEGMENT
+blen$1 = 4
+res$2 = 36
+count$3 = 68
+tv87 = 276
+s$ = 320
+buffer$ = 328
+n$ = 336
+stbi__getn PROC ; COMDAT
+
+; 1746 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 1747 : if (s->io.read) {
+
+ 0002a 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00031 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
+ 00036 0f 84 e1 00 00
+ 00 je $LN2@stbi__getn
+
+; 1748 : int blen = (int)(s->img_buffer_end - s->img_buffer);
+
+ 0003c 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00043 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004a 48 8b 89 c0 00
+ 00 00 mov rcx, QWORD PTR [rcx+192]
+ 00051 48 8b 80 c8 00
+ 00 00 mov rax, QWORD PTR [rax+200]
+ 00058 48 2b c1 sub rax, rcx
+ 0005b 89 45 04 mov DWORD PTR blen$1[rbp], eax
+
+; 1749 : if (blen < n) {
+
+ 0005e 8b 85 50 01 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00064 39 45 04 cmp DWORD PTR blen$1[rbp], eax
+ 00067 0f 8d b0 00 00
+ 00 jge $LN3@stbi__getn
+
+; 1750 : int res, count;
+; 1751 :
+; 1752 : memcpy(buffer, s->img_buffer, blen);
+
+ 0006d 48 63 45 04 movsxd rax, DWORD PTR blen$1[rbp]
+ 00071 4c 8b c0 mov r8, rax
+ 00074 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0007b 48 8b 90 c0 00
+ 00 00 mov rdx, QWORD PTR [rax+192]
+ 00082 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 00089 e8 00 00 00 00 call memcpy
+ 0008e 90 npad 1
+
+; 1753 :
+; 1754 : count = (s->io.read)(s->io_user_data, (char *)buffer + blen, n - blen);
+
+ 0008f 8b 45 04 mov eax, DWORD PTR blen$1[rbp]
+ 00092 8b 8d 50 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 00098 2b c8 sub ecx, eax
+ 0009a 8b c1 mov eax, ecx
+ 0009c 48 63 4d 04 movsxd rcx, DWORD PTR blen$1[rbp]
+ 000a0 48 8b 95 48 01
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 000a7 48 03 d1 add rdx, rcx
+ 000aa 48 8b ca mov rcx, rdx
+ 000ad 44 8b c0 mov r8d, eax
+ 000b0 48 8b d1 mov rdx, rcx
+ 000b3 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000ba 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
+ 000be 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000c5 ff 50 10 call QWORD PTR [rax+16]
+ 000c8 89 45 44 mov DWORD PTR count$3[rbp], eax
+
+; 1755 : res = (count == (n - blen));
+
+ 000cb 8b 45 04 mov eax, DWORD PTR blen$1[rbp]
+ 000ce 8b 8d 50 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 000d4 2b c8 sub ecx, eax
+ 000d6 8b c1 mov eax, ecx
+ 000d8 39 45 44 cmp DWORD PTR count$3[rbp], eax
+ 000db 75 0c jne SHORT $LN7@stbi__getn
+ 000dd c7 85 14 01 00
+ 00 01 00 00 00 mov DWORD PTR tv87[rbp], 1
+ 000e7 eb 0a jmp SHORT $LN8@stbi__getn
+$LN7@stbi__getn:
+ 000e9 c7 85 14 01 00
+ 00 00 00 00 00 mov DWORD PTR tv87[rbp], 0
+$LN8@stbi__getn:
+ 000f3 8b 85 14 01 00
+ 00 mov eax, DWORD PTR tv87[rbp]
+ 000f9 89 45 24 mov DWORD PTR res$2[rbp], eax
+
+; 1756 : s->img_buffer = s->img_buffer_end;
+
+ 000fc 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00103 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0010a 48 8b 89 c8 00
+ 00 00 mov rcx, QWORD PTR [rcx+200]
+ 00111 48 89 88 c0 00
+ 00 00 mov QWORD PTR [rax+192], rcx
+
+; 1757 : return res;
+
+ 00118 8b 45 24 mov eax, DWORD PTR res$2[rbp]
+ 0011b eb 78 jmp SHORT $LN1@stbi__getn
+$LN3@stbi__getn:
+$LN2@stbi__getn:
+
+; 1758 : }
+; 1759 : }
+; 1760 :
+; 1761 : if (s->img_buffer + n <= s->img_buffer_end) {
+
+ 0011d 48 63 85 50 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 00124 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0012b 48 03 81 c0 00
+ 00 00 add rax, QWORD PTR [rcx+192]
+ 00132 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00139 48 3b 81 c8 00
+ 00 00 cmp rax, QWORD PTR [rcx+200]
+ 00140 77 51 ja SHORT $LN4@stbi__getn
+
+; 1762 : memcpy(buffer, s->img_buffer, n);
+
+ 00142 48 63 85 50 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 00149 4c 8b c0 mov r8, rax
+ 0014c 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00153 48 8b 90 c0 00
+ 00 00 mov rdx, QWORD PTR [rax+192]
+ 0015a 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 00161 e8 00 00 00 00 call memcpy
+ 00166 90 npad 1
+
+; 1763 : s->img_buffer += n;
+
+ 00167 48 63 85 50 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 0016e 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00175 48 03 81 c0 00
+ 00 00 add rax, QWORD PTR [rcx+192]
+ 0017c 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00183 48 89 81 c0 00
+ 00 00 mov QWORD PTR [rcx+192], rax
+
+; 1764 : return 1;
+
+ 0018a b8 01 00 00 00 mov eax, 1
+ 0018f eb 04 jmp SHORT $LN1@stbi__getn
+
+; 1765 : } else
+
+ 00191 eb 02 jmp SHORT $LN5@stbi__getn
+$LN4@stbi__getn:
+
+; 1766 : return 0;
+
+ 00193 33 c0 xor eax, eax
+$LN5@stbi__getn:
+$LN1@stbi__getn:
+
+; 1767 : }
+
+ 00195 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 0019c 5f pop rdi
+ 0019d 5d pop rbp
+ 0019e c3 ret 0
+stbi__getn ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__skip
+_TEXT SEGMENT
+blen$1 = 4
+s$ = 256
+n$ = 264
+stbi__skip PROC ; COMDAT
+
+; 1723 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 1724 : if (n == 0)
+
+ 00024 83 bd 08 01 00
+ 00 00 cmp DWORD PTR n$[rbp], 0
+ 0002b 75 05 jne SHORT $LN2@stbi__skip
+
+; 1725 : return; // already there!
+
+ 0002d e9 cb 00 00 00 jmp $LN1@stbi__skip
+$LN2@stbi__skip:
+
+; 1726 : if (n < 0) {
+
+ 00032 83 bd 08 01 00
+ 00 00 cmp DWORD PTR n$[rbp], 0
+ 00039 7d 21 jge SHORT $LN3@stbi__skip
+
+; 1727 : s->img_buffer = s->img_buffer_end;
+
+ 0003b 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00042 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00049 48 8b 89 c8 00
+ 00 00 mov rcx, QWORD PTR [rcx+200]
+ 00050 48 89 88 c0 00
+ 00 00 mov QWORD PTR [rax+192], rcx
+
+; 1728 : return;
+
+ 00057 e9 a1 00 00 00 jmp $LN1@stbi__skip
+$LN3@stbi__skip:
+
+; 1729 : }
+; 1730 : if (s->io.read) {
+
+ 0005c 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00063 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
+ 00068 74 70 je SHORT $LN4@stbi__skip
+
+; 1731 : int blen = (int)(s->img_buffer_end - s->img_buffer);
+
+ 0006a 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00071 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00078 48 8b 89 c0 00
+ 00 00 mov rcx, QWORD PTR [rcx+192]
+ 0007f 48 8b 80 c8 00
+ 00 00 mov rax, QWORD PTR [rax+200]
+ 00086 48 2b c1 sub rax, rcx
+ 00089 89 45 04 mov DWORD PTR blen$1[rbp], eax
+
+; 1732 : if (blen < n) {
+
+ 0008c 8b 85 08 01 00
+ 00 mov eax, DWORD PTR n$[rbp]
+ 00092 39 45 04 cmp DWORD PTR blen$1[rbp], eax
+ 00095 7d 43 jge SHORT $LN5@stbi__skip
+
+; 1733 : s->img_buffer = s->img_buffer_end;
+
+ 00097 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0009e 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a5 48 8b 89 c8 00
+ 00 00 mov rcx, QWORD PTR [rcx+200]
+ 000ac 48 89 88 c0 00
+ 00 00 mov QWORD PTR [rax+192], rcx
+
+; 1734 : (s->io.skip)(s->io_user_data, n - blen);
+
+ 000b3 8b 45 04 mov eax, DWORD PTR blen$1[rbp]
+ 000b6 8b 8d 08 01 00
+ 00 mov ecx, DWORD PTR n$[rbp]
+ 000bc 2b c8 sub ecx, eax
+ 000be 8b c1 mov eax, ecx
+ 000c0 8b d0 mov edx, eax
+ 000c2 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000c9 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
+ 000cd 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000d4 ff 50 18 call QWORD PTR [rax+24]
+ 000d7 90 npad 1
+
+; 1735 : return;
+
+ 000d8 eb 23 jmp SHORT $LN1@stbi__skip
+$LN5@stbi__skip:
+$LN4@stbi__skip:
+
+; 1736 : }
+; 1737 : }
+; 1738 : s->img_buffer += n;
+
+ 000da 48 63 85 08 01
+ 00 00 movsxd rax, DWORD PTR n$[rbp]
+ 000e1 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000e8 48 03 81 c0 00
+ 00 00 add rax, QWORD PTR [rcx+192]
+ 000ef 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000f6 48 89 81 c0 00
+ 00 00 mov QWORD PTR [rcx+192], rax
+$LN1@stbi__skip:
+
+; 1739 : }
+
+ 000fd 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00104 5f pop rdi
+ 00105 5d pop rbp
+ 00106 c3 ret 0
+stbi__skip ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__at_eof
+_TEXT SEGMENT
+tv76 = 192
+s$ = 240
+stbi__at_eof PROC ; COMDAT
+
+; 1703 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1704 : if (s->io.read) {
+
+ 00020 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00027 48 83 78 10 00 cmp QWORD PTR [rax+16], 0
+ 0002c 74 31 je SHORT $LN2@stbi__at_e
+
+; 1705 : if (!(s->io.eof)(s->io_user_data))
+
+ 0002e 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00035 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
+ 00039 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00040 ff 50 20 call QWORD PTR [rax+32]
+ 00043 85 c0 test eax, eax
+ 00045 75 04 jne SHORT $LN3@stbi__at_e
+
+; 1706 : return 0;
+
+ 00047 33 c0 xor eax, eax
+ 00049 eb 4e jmp SHORT $LN1@stbi__at_e
+$LN3@stbi__at_e:
+
+; 1707 : // if feof() is true, check if buffer = end
+; 1708 : // special case: we've only got the special 0 character at the end
+; 1709 : if (s->read_from_callbacks == 0)
+
+ 0004b 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00052 83 78 30 00 cmp DWORD PTR [rax+48], 0
+ 00056 75 07 jne SHORT $LN4@stbi__at_e
+
+; 1710 : return 1;
+
+ 00058 b8 01 00 00 00 mov eax, 1
+ 0005d eb 3a jmp SHORT $LN1@stbi__at_e
+$LN4@stbi__at_e:
+$LN2@stbi__at_e:
+
+; 1711 : }
+; 1712 :
+; 1713 : return s->img_buffer >= s->img_buffer_end;
+
+ 0005f 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00066 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006d 48 8b 89 c8 00
+ 00 00 mov rcx, QWORD PTR [rcx+200]
+ 00074 48 39 88 c0 00
+ 00 00 cmp QWORD PTR [rax+192], rcx
+ 0007b 72 0c jb SHORT $LN6@stbi__at_e
+ 0007d c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv76[rbp], 1
+ 00087 eb 0a jmp SHORT $LN7@stbi__at_e
+$LN6@stbi__at_e:
+ 00089 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv76[rbp], 0
+$LN7@stbi__at_e:
+ 00093 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv76[rbp]
+$LN1@stbi__at_e:
+
+; 1714 : }
+
+ 00099 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000a0 5f pop rdi
+ 000a1 5d pop rbp
+ 000a2 c3 ret 0
+stbi__at_eof ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__get8
+_TEXT SEGMENT
+tv72 = 192
+tv81 = 192
+s$ = 240
+stbi__get8 PROC ; COMDAT
+
+; 1689 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1690 : if (s->img_buffer < s->img_buffer_end)
+
+ 00020 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00027 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002e 48 8b 89 c8 00
+ 00 00 mov rcx, QWORD PTR [rcx+200]
+ 00035 48 39 88 c0 00
+ 00 00 cmp QWORD PTR [rax+192], rcx
+ 0003c 73 3f jae SHORT $LN2@stbi__get8
+
+; 1691 : return *s->img_buffer++;
+
+ 0003e 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00045 48 8b 80 c0 00
+ 00 00 mov rax, QWORD PTR [rax+192]
+ 0004c 0f b6 00 movzx eax, BYTE PTR [rax]
+ 0004f 88 85 c0 00 00
+ 00 mov BYTE PTR tv72[rbp], al
+ 00055 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0005c 48 8b 80 c0 00
+ 00 00 mov rax, QWORD PTR [rax+192]
+ 00063 48 ff c0 inc rax
+ 00066 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006d 48 89 81 c0 00
+ 00 00 mov QWORD PTR [rcx+192], rax
+ 00074 0f b6 85 c0 00
+ 00 00 movzx eax, BYTE PTR tv72[rbp]
+ 0007b eb 5b jmp SHORT $LN1@stbi__get8
+$LN2@stbi__get8:
+
+; 1692 : if (s->read_from_callbacks) {
+
+ 0007d 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00084 83 78 30 00 cmp DWORD PTR [rax+48], 0
+ 00088 74 4c je SHORT $LN3@stbi__get8
+
+; 1693 : stbi__refill_buffer(s);
+
+ 0008a 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00091 e8 00 00 00 00 call stbi__refill_buffer
+ 00096 90 npad 1
+
+; 1694 : return *s->img_buffer++;
+
+ 00097 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0009e 48 8b 80 c0 00
+ 00 00 mov rax, QWORD PTR [rax+192]
+ 000a5 0f b6 00 movzx eax, BYTE PTR [rax]
+ 000a8 88 85 c0 00 00
+ 00 mov BYTE PTR tv81[rbp], al
+ 000ae 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000b5 48 8b 80 c0 00
+ 00 00 mov rax, QWORD PTR [rax+192]
+ 000bc 48 ff c0 inc rax
+ 000bf 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c6 48 89 81 c0 00
+ 00 00 mov QWORD PTR [rcx+192], rax
+ 000cd 0f b6 85 c0 00
+ 00 00 movzx eax, BYTE PTR tv81[rbp]
+ 000d4 eb 02 jmp SHORT $LN1@stbi__get8
+$LN3@stbi__get8:
+
+; 1695 : }
+; 1696 : return 0;
+
+ 000d6 32 c0 xor al, al
+$LN1@stbi__get8:
+
+; 1697 : }
+
+ 000d8 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000df 5f pop rdi
+ 000e0 5d pop rbp
+ 000e1 c3 ret 0
+stbi__get8 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__loadf_main
+_TEXT SEGMENT
+data$ = 8
+ri$4 = 40
+hdr_data$5 = 88
+tv89 = 292
+tv129 = 296
+__$ArrayPad$ = 304
+s$ = 352
+x$ = 360
+y$ = 368
+comp$ = 376
+req_comp$ = 384
+stbi__loadf_main PROC ; COMDAT
+
+; 1526 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 78 01
+ 00 00 sub rsp, 376 ; 00000178H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 22 00 00 00 mov ecx, 34 ; 00000022H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 98
+ 01 00 00 mov rcx, QWORD PTR [rsp+408]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 30 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1527 : unsigned char *data;
+; 1528 : #ifndef STBI_NO_HDR
+; 1529 : if (stbi__hdr_test(s)) {
+
+ 00059 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00060 e8 00 00 00 00 call stbi__hdr_test
+ 00065 85 c0 test eax, eax
+ 00067 74 71 je SHORT $LN2@stbi__load
+
+; 1530 : stbi__result_info ri;
+; 1531 : float *hdr_data = stbi__hdr_load(s, x, y, comp, req_comp, &ri);
+
+ 00069 48 8d 45 28 lea rax, QWORD PTR ri$4[rbp]
+ 0006d 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00072 8b 85 80 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00078 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007c 4c 8b 8d 78 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00083 4c 8b 85 70 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0008a 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00091 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00098 e8 00 00 00 00 call stbi__hdr_load
+ 0009d 48 89 45 58 mov QWORD PTR hdr_data$5[rbp], rax
+
+; 1532 : if (hdr_data)
+
+ 000a1 48 83 7d 58 00 cmp QWORD PTR hdr_data$5[rbp], 0
+ 000a6 74 29 je SHORT $LN3@stbi__load
+
+; 1533 : stbi__float_postprocess(hdr_data, x, y, comp, req_comp);
+
+ 000a8 8b 85 80 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000ae 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 000b2 4c 8b 8d 78 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 000b9 4c 8b 85 70 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 000c0 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 000c7 48 8b 4d 58 mov rcx, QWORD PTR hdr_data$5[rbp]
+ 000cb e8 00 00 00 00 call stbi__float_postprocess
+ 000d0 90 npad 1
+$LN3@stbi__load:
+
+; 1534 : return hdr_data;
+
+ 000d1 48 8b 45 58 mov rax, QWORD PTR hdr_data$5[rbp]
+ 000d5 e9 b0 00 00 00 jmp $LN1@stbi__load
+$LN2@stbi__load:
+
+; 1535 : }
+; 1536 : #endif
+; 1537 : data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp);
+
+ 000da 8b 85 80 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000e0 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 000e4 4c 8b 8d 78 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 000eb 4c 8b 85 70 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 000f2 48 8b 95 68 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 000f9 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00100 e8 00 00 00 00 call stbi__load_and_postprocess_8bit
+ 00105 48 89 45 08 mov QWORD PTR data$[rbp], rax
+
+; 1538 : if (data)
+
+ 00109 48 83 7d 08 00 cmp QWORD PTR data$[rbp], 0
+ 0010e 74 4b je SHORT $LN4@stbi__load
+
+; 1539 : return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp);
+
+ 00110 83 bd 80 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 00117 74 0e je SHORT $LN6@stbi__load
+ 00119 8b 85 80 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 0011f 89 85 24 01 00
+ 00 mov DWORD PTR tv89[rbp], eax
+ 00125 eb 0f jmp SHORT $LN7@stbi__load
+$LN6@stbi__load:
+ 00127 48 8b 85 78 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 0012e 8b 00 mov eax, DWORD PTR [rax]
+ 00130 89 85 24 01 00
+ 00 mov DWORD PTR tv89[rbp], eax
+$LN7@stbi__load:
+ 00136 44 8b 8d 24 01
+ 00 00 mov r9d, DWORD PTR tv89[rbp]
+ 0013d 48 8b 85 70 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 00144 44 8b 00 mov r8d, DWORD PTR [rax]
+ 00147 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 0014e 8b 10 mov edx, DWORD PTR [rax]
+ 00150 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp]
+ 00154 e8 00 00 00 00 call stbi__ldr_to_hdr
+ 00159 eb 2f jmp SHORT $LN1@stbi__load
+$LN4@stbi__load:
+
+; 1540 : return stbi__errpf("unknown image type", "Image not of any known type, or corrupt");
+
+ 0015b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@CBEDEJPH@unknown?5image?5type@
+ 00162 e8 00 00 00 00 call stbi__err
+ 00167 85 c0 test eax, eax
+ 00169 74 0d je SHORT $LN8@stbi__load
+ 0016b 48 c7 85 28 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv129[rbp], 0
+ 00176 eb 0b jmp SHORT $LN9@stbi__load
+$LN8@stbi__load:
+ 00178 48 c7 85 28 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv129[rbp], 0
+$LN9@stbi__load:
+ 00183 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR tv129[rbp]
+$LN1@stbi__load:
+
+; 1541 : }
+
+ 0018a 48 8b f8 mov rdi, rax
+ 0018d 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00191 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__loadf_main$rtcFrameData
+ 00198 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0019d 48 8b c7 mov rax, rdi
+ 001a0 48 8b 8d 30 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 001a7 48 33 cd xor rcx, rbp
+ 001aa e8 00 00 00 00 call __security_check_cookie
+ 001af 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 001b6 5f pop rdi
+ 001b7 5d pop rbp
+ 001b8 c3 ret 0
+stbi__loadf_main ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__fopen
+_TEXT SEGMENT
+f$ = 8
+__$ArrayPad$ = 216
+filename$ = 256
+mode$ = 264
+stbi__fopen PROC ; COMDAT
+
+; 1396 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001d b9 0a 00 00 00 mov ecx, 10
+ 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00027 f3 ab rep stosd
+ 00029 48 8b 8c 24 28
+ 01 00 00 mov rcx, QWORD PTR [rsp+296]
+ 00031 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00038 48 33 c5 xor rax, rbp
+ 0003b 48 89 85 d8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00042 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004e 90 npad 1
+
+; 1397 : FILE *f;
+; 1398 : #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8)
+; 1399 : wchar_t wMode[64];
+; 1400 : wchar_t wFilename[1024];
+; 1401 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename,
+; 1402 : sizeof(wFilename) / sizeof(*wFilename)))
+; 1403 : return 0;
+; 1404 :
+; 1405 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode,
+; 1406 : sizeof(wMode) / sizeof(*wMode)))
+; 1407 : return 0;
+; 1408 :
+; 1409 : #if defined(_MSC_VER) && _MSC_VER >= 1400
+; 1410 : if (0 != _wfopen_s(&f, wFilename, wMode))
+; 1411 : f = 0;
+; 1412 : #else
+; 1413 : f = _wfopen(wFilename, wMode);
+; 1414 : #endif
+; 1415 :
+; 1416 : #elif defined(_MSC_VER) && _MSC_VER >= 1400
+; 1417 : if (0 != fopen_s(&f, filename, mode))
+
+ 0004f 4c 8b 85 08 01
+ 00 00 mov r8, QWORD PTR mode$[rbp]
+ 00056 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR filename$[rbp]
+ 0005d 48 8d 4d 08 lea rcx, QWORD PTR f$[rbp]
+ 00061 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fopen_s
+ 00067 85 c0 test eax, eax
+ 00069 74 08 je SHORT $LN2@stbi__fope
+
+; 1418 : f = 0;
+
+ 0006b 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR f$[rbp], 0
+$LN2@stbi__fope:
+
+; 1419 : #else
+; 1420 : f = fopen(filename, mode);
+; 1421 : #endif
+; 1422 : return f;
+
+ 00073 48 8b 45 08 mov rax, QWORD PTR f$[rbp]
+
+; 1423 : }
+
+ 00077 48 8b f8 mov rdi, rax
+ 0007a 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0007e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__fopen$rtcFrameData
+ 00085 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0008a 48 8b c7 mov rax, rdi
+ 0008d 48 8b 8d d8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00094 48 33 cd xor rcx, rbp
+ 00097 e8 00 00 00 00 call __security_check_cookie
+ 0009c 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000a3 5f pop rdi
+ 000a4 5d pop rbp
+ 000a5 c3 ret 0
+stbi__fopen ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__float_postprocess
+_TEXT SEGMENT
+channels$1 = 4
+tv77 = 212
+tv81 = 212
+result$ = 256
+x$ = 264
+y$ = 272
+comp$ = 280
+req_comp$ = 288
+stbi__float_postprocess PROC ; COMDAT
+
+; 1367 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 1368 : if (stbi__vertically_flip_on_load && result != NULL) {
+
+ 0002f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
+ 00034 8b c0 mov eax, eax
+ 00036 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0003c 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00045 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00049 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
+ 0004d 74 25 je SHORT $LN4@stbi__floa
+ 0004f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
+ 00054 8b c0 mov eax, eax
+ 00056 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0005c 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00065 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00069 8b 04 08 mov eax, DWORD PTR [rax+rcx]
+ 0006c 89 85 d4 00 00
+ 00 mov DWORD PTR tv77[rbp], eax
+ 00072 eb 0c jmp SHORT $LN5@stbi__floa
+$LN4@stbi__floa:
+ 00074 8b 05 00 00 00
+ 00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
+ 0007a 89 85 d4 00 00
+ 00 mov DWORD PTR tv77[rbp], eax
+$LN5@stbi__floa:
+ 00080 83 bd d4 00 00
+ 00 00 cmp DWORD PTR tv77[rbp], 0
+ 00087 74 64 je SHORT $LN2@stbi__floa
+ 00089 48 83 bd 00 01
+ 00 00 00 cmp QWORD PTR result$[rbp], 0
+ 00091 74 5a je SHORT $LN2@stbi__floa
+
+; 1369 : int channels = req_comp ? req_comp : *comp;
+
+ 00093 83 bd 20 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 0009a 74 0e je SHORT $LN6@stbi__floa
+ 0009c 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000a2 89 85 d4 00 00
+ 00 mov DWORD PTR tv81[rbp], eax
+ 000a8 eb 0f jmp SHORT $LN7@stbi__floa
+$LN6@stbi__floa:
+ 000aa 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 000b1 8b 00 mov eax, DWORD PTR [rax]
+ 000b3 89 85 d4 00 00
+ 00 mov DWORD PTR tv81[rbp], eax
+$LN7@stbi__floa:
+ 000b9 8b 85 d4 00 00
+ 00 mov eax, DWORD PTR tv81[rbp]
+ 000bf 89 45 04 mov DWORD PTR channels$1[rbp], eax
+
+; 1370 : stbi__vertical_flip(result, *x, *y, channels * sizeof(float));
+
+ 000c2 48 63 45 04 movsxd rax, DWORD PTR channels$1[rbp]
+ 000c6 48 c1 e0 02 shl rax, 2
+ 000ca 44 8b c8 mov r9d, eax
+ 000cd 48 8b 85 10 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 000d4 44 8b 00 mov r8d, DWORD PTR [rax]
+ 000d7 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 000de 8b 10 mov edx, DWORD PTR [rax]
+ 000e0 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR result$[rbp]
+ 000e7 e8 00 00 00 00 call stbi__vertical_flip
+ 000ec 90 npad 1
+$LN2@stbi__floa:
+
+; 1371 : }
+; 1372 : }
+
+ 000ed 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 000f4 5f pop rdi
+ 000f5 5d pop rbp
+ 000f6 c3 ret 0
+stbi__float_postprocess ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__load_and_postprocess_16bit
+_TEXT SEGMENT
+ri$ = 8
+result$ = 56
+channels$4 = 84
+tv82 = 292
+tv132 = 292
+tv135 = 292
+__$ArrayPad$ = 296
+s$ = 336
+x$ = 344
+y$ = 352
+comp$ = 360
+req_comp$ = 368
+stbi__load_and_postprocess_16bit PROC ; COMDAT
+
+; 1338 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 78 01
+ 00 00 sub rsp, 376 ; 00000178H
+ 0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00022 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
+ 00027 b9 1e 00 00 00 mov ecx, 30
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 98
+ 01 00 00 mov rcx, QWORD PTR [rsp+408]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 28 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1339 : stbi__result_info ri;
+; 1340 : void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16);
+
+ 00059 c7 44 24 30 10
+ 00 00 00 mov DWORD PTR [rsp+48], 16
+ 00061 48 8d 45 08 lea rax, QWORD PTR ri$[rbp]
+ 00065 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 0006a 8b 85 70 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00074 4c 8b 8d 68 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0007b 4c 8b 85 60 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00082 48 8b 95 58 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00089 48 8b 8d 50 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00090 e8 00 00 00 00 call stbi__load_main
+ 00095 48 89 45 38 mov QWORD PTR result$[rbp], rax
+
+; 1341 :
+; 1342 : if (result == NULL)
+
+ 00099 48 83 7d 38 00 cmp QWORD PTR result$[rbp], 0
+ 0009e 75 07 jne SHORT $LN2@stbi__load
+
+; 1343 : return NULL;
+
+ 000a0 33 c0 xor eax, eax
+ 000a2 e9 36 01 00 00 jmp $LN1@stbi__load
+$LN2@stbi__load:
+
+; 1344 :
+; 1345 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.
+; 1346 : STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);
+
+ 000a7 83 7d 08 08 cmp DWORD PTR ri$[rbp], 8
+ 000ab 74 22 je SHORT $LN6@stbi__load
+ 000ad 83 7d 08 10 cmp DWORD PTR ri$[rbp], 16
+ 000b1 74 1c je SHORT $LN6@stbi__load
+ 000b3 41 b8 42 05 00
+ 00 mov r8d, 1346 ; 00000542H
+ 000b9 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 000c0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@
+ 000c7 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 000cd 33 c0 xor eax, eax
+$LN6@stbi__load:
+
+; 1347 :
+; 1348 : if (ri.bits_per_channel != 16) {
+
+ 000cf 83 7d 08 10 cmp DWORD PTR ri$[rbp], 16
+ 000d3 74 54 je SHORT $LN3@stbi__load
+
+; 1349 : result = stbi__convert_8_to_16((stbi_uc *)result, *x, *y,
+
+ 000d5 83 bd 70 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 000dc 75 11 jne SHORT $LN7@stbi__load
+ 000de 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 000e5 8b 00 mov eax, DWORD PTR [rax]
+ 000e7 89 85 24 01 00
+ 00 mov DWORD PTR tv82[rbp], eax
+ 000ed eb 0c jmp SHORT $LN8@stbi__load
+$LN7@stbi__load:
+ 000ef 8b 85 70 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000f5 89 85 24 01 00
+ 00 mov DWORD PTR tv82[rbp], eax
+$LN8@stbi__load:
+ 000fb 44 8b 8d 24 01
+ 00 00 mov r9d, DWORD PTR tv82[rbp]
+ 00102 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 00109 44 8b 00 mov r8d, DWORD PTR [rax]
+ 0010c 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00113 8b 10 mov edx, DWORD PTR [rax]
+ 00115 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
+ 00119 e8 00 00 00 00 call stbi__convert_8_to_16
+ 0011e 48 89 45 38 mov QWORD PTR result$[rbp], rax
+
+; 1350 : req_comp == 0 ? *comp : req_comp);
+; 1351 : ri.bits_per_channel = 16;
+
+ 00122 c7 45 08 10 00
+ 00 00 mov DWORD PTR ri$[rbp], 16
+$LN3@stbi__load:
+
+; 1352 : }
+; 1353 :
+; 1354 : // @TODO: move stbi__convert_format16 to here
+; 1355 : // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision
+; 1356 :
+; 1357 : if (stbi__vertically_flip_on_load) {
+
+ 00129 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
+ 0012e 8b c0 mov eax, eax
+ 00130 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00136 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 0013f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00143 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
+ 00147 74 25 je SHORT $LN9@stbi__load
+ 00149 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
+ 0014e 8b c0 mov eax, eax
+ 00150 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00156 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 0015f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00163 8b 04 08 mov eax, DWORD PTR [rax+rcx]
+ 00166 89 85 24 01 00
+ 00 mov DWORD PTR tv132[rbp], eax
+ 0016c eb 0c jmp SHORT $LN10@stbi__load
+$LN9@stbi__load:
+ 0016e 8b 05 00 00 00
+ 00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
+ 00174 89 85 24 01 00
+ 00 mov DWORD PTR tv132[rbp], eax
+$LN10@stbi__load:
+ 0017a 83 bd 24 01 00
+ 00 00 cmp DWORD PTR tv132[rbp], 0
+ 00181 74 56 je SHORT $LN4@stbi__load
+
+; 1358 : int channels = req_comp ? req_comp : *comp;
+
+ 00183 83 bd 70 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 0018a 74 0e je SHORT $LN11@stbi__load
+ 0018c 8b 85 70 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00192 89 85 24 01 00
+ 00 mov DWORD PTR tv135[rbp], eax
+ 00198 eb 0f jmp SHORT $LN12@stbi__load
+$LN11@stbi__load:
+ 0019a 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 001a1 8b 00 mov eax, DWORD PTR [rax]
+ 001a3 89 85 24 01 00
+ 00 mov DWORD PTR tv135[rbp], eax
+$LN12@stbi__load:
+ 001a9 8b 85 24 01 00
+ 00 mov eax, DWORD PTR tv135[rbp]
+ 001af 89 45 54 mov DWORD PTR channels$4[rbp], eax
+
+; 1359 : stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16));
+
+ 001b2 48 63 45 54 movsxd rax, DWORD PTR channels$4[rbp]
+ 001b6 48 d1 e0 shl rax, 1
+ 001b9 44 8b c8 mov r9d, eax
+ 001bc 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 001c3 44 8b 00 mov r8d, DWORD PTR [rax]
+ 001c6 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 001cd 8b 10 mov edx, DWORD PTR [rax]
+ 001cf 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
+ 001d3 e8 00 00 00 00 call stbi__vertical_flip
+ 001d8 90 npad 1
+$LN4@stbi__load:
+
+; 1360 : }
+; 1361 :
+; 1362 : return (stbi__uint16 *)result;
+
+ 001d9 48 8b 45 38 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi__load:
+
+; 1363 : }
+
+ 001dd 48 8b f8 mov rdi, rax
+ 001e0 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
+ 001e4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__load_and_postprocess_16bit$rtcFrameData
+ 001eb e8 00 00 00 00 call _RTC_CheckStackVars
+ 001f0 48 8b c7 mov rax, rdi
+ 001f3 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 001fa 48 33 cd xor rcx, rbp
+ 001fd e8 00 00 00 00 call __security_check_cookie
+ 00202 48 8d a5 38 01
+ 00 00 lea rsp, QWORD PTR [rbp+312]
+ 00209 5f pop rdi
+ 0020a 5d pop rbp
+ 0020b c3 ret 0
+stbi__load_and_postprocess_16bit ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__load_and_postprocess_8bit
+_TEXT SEGMENT
+ri$ = 8
+result$ = 56
+channels$4 = 84
+tv82 = 292
+tv132 = 292
+tv135 = 292
+__$ArrayPad$ = 296
+s$ = 336
+x$ = 344
+y$ = 352
+comp$ = 360
+req_comp$ = 368
+stbi__load_and_postprocess_8bit PROC ; COMDAT
+
+; 1310 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 78 01
+ 00 00 sub rsp, 376 ; 00000178H
+ 0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00022 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
+ 00027 b9 1e 00 00 00 mov ecx, 30
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 98
+ 01 00 00 mov rcx, QWORD PTR [rsp+408]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 28 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1311 : stbi__result_info ri;
+; 1312 : void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8);
+
+ 00059 c7 44 24 30 08
+ 00 00 00 mov DWORD PTR [rsp+48], 8
+ 00061 48 8d 45 08 lea rax, QWORD PTR ri$[rbp]
+ 00065 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 0006a 8b 85 70 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00074 4c 8b 8d 68 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0007b 4c 8b 85 60 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00082 48 8b 95 58 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00089 48 8b 8d 50 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00090 e8 00 00 00 00 call stbi__load_main
+ 00095 48 89 45 38 mov QWORD PTR result$[rbp], rax
+
+; 1313 :
+; 1314 : if (result == NULL)
+
+ 00099 48 83 7d 38 00 cmp QWORD PTR result$[rbp], 0
+ 0009e 75 07 jne SHORT $LN2@stbi__load
+
+; 1315 : return NULL;
+
+ 000a0 33 c0 xor eax, eax
+ 000a2 e9 30 01 00 00 jmp $LN1@stbi__load
+$LN2@stbi__load:
+
+; 1316 :
+; 1317 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.
+; 1318 : STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);
+
+ 000a7 83 7d 08 08 cmp DWORD PTR ri$[rbp], 8
+ 000ab 74 22 je SHORT $LN6@stbi__load
+ 000ad 83 7d 08 10 cmp DWORD PTR ri$[rbp], 16
+ 000b1 74 1c je SHORT $LN6@stbi__load
+ 000b3 41 b8 26 05 00
+ 00 mov r8d, 1318 ; 00000526H
+ 000b9 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 000c0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1GM@LFNCFCEN@?$AAr?$AAi?$AA?4?$AAb?$AAi?$AAt?$AAs?$AA_?$AAp?$AAe?$AAr?$AA_?$AAc?$AAh?$AAa@
+ 000c7 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 000cd 33 c0 xor eax, eax
+$LN6@stbi__load:
+
+; 1319 :
+; 1320 : if (ri.bits_per_channel != 8) {
+
+ 000cf 83 7d 08 08 cmp DWORD PTR ri$[rbp], 8
+ 000d3 74 54 je SHORT $LN3@stbi__load
+
+; 1321 : result = stbi__convert_16_to_8((stbi__uint16 *)result, *x, *y,
+
+ 000d5 83 bd 70 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 000dc 75 11 jne SHORT $LN7@stbi__load
+ 000de 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 000e5 8b 00 mov eax, DWORD PTR [rax]
+ 000e7 89 85 24 01 00
+ 00 mov DWORD PTR tv82[rbp], eax
+ 000ed eb 0c jmp SHORT $LN8@stbi__load
+$LN7@stbi__load:
+ 000ef 8b 85 70 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000f5 89 85 24 01 00
+ 00 mov DWORD PTR tv82[rbp], eax
+$LN8@stbi__load:
+ 000fb 44 8b 8d 24 01
+ 00 00 mov r9d, DWORD PTR tv82[rbp]
+ 00102 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 00109 44 8b 00 mov r8d, DWORD PTR [rax]
+ 0010c 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00113 8b 10 mov edx, DWORD PTR [rax]
+ 00115 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
+ 00119 e8 00 00 00 00 call stbi__convert_16_to_8
+ 0011e 48 89 45 38 mov QWORD PTR result$[rbp], rax
+
+; 1322 : req_comp == 0 ? *comp : req_comp);
+; 1323 : ri.bits_per_channel = 8;
+
+ 00122 c7 45 08 08 00
+ 00 00 mov DWORD PTR ri$[rbp], 8
+$LN3@stbi__load:
+
+; 1324 : }
+; 1325 :
+; 1326 : // @TODO: move stbi__convert_format to here
+; 1327 :
+; 1328 : if (stbi__vertically_flip_on_load) {
+
+ 00129 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
+ 0012e 8b c0 mov eax, eax
+ 00130 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00136 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 0013f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00143 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
+ 00147 74 25 je SHORT $LN9@stbi__load
+ 00149 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
+ 0014e 8b c0 mov eax, eax
+ 00150 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00156 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 0015f 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00163 8b 04 08 mov eax, DWORD PTR [rax+rcx]
+ 00166 89 85 24 01 00
+ 00 mov DWORD PTR tv132[rbp], eax
+ 0016c eb 0c jmp SHORT $LN10@stbi__load
+$LN9@stbi__load:
+ 0016e 8b 05 00 00 00
+ 00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
+ 00174 89 85 24 01 00
+ 00 mov DWORD PTR tv132[rbp], eax
+$LN10@stbi__load:
+ 0017a 83 bd 24 01 00
+ 00 00 cmp DWORD PTR tv132[rbp], 0
+ 00181 74 50 je SHORT $LN4@stbi__load
+
+; 1329 : int channels = req_comp ? req_comp : *comp;
+
+ 00183 83 bd 70 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 0018a 74 0e je SHORT $LN11@stbi__load
+ 0018c 8b 85 70 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00192 89 85 24 01 00
+ 00 mov DWORD PTR tv135[rbp], eax
+ 00198 eb 0f jmp SHORT $LN12@stbi__load
+$LN11@stbi__load:
+ 0019a 48 8b 85 68 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 001a1 8b 00 mov eax, DWORD PTR [rax]
+ 001a3 89 85 24 01 00
+ 00 mov DWORD PTR tv135[rbp], eax
+$LN12@stbi__load:
+ 001a9 8b 85 24 01 00
+ 00 mov eax, DWORD PTR tv135[rbp]
+ 001af 89 45 54 mov DWORD PTR channels$4[rbp], eax
+
+; 1330 : stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc));
+
+ 001b2 44 8b 4d 54 mov r9d, DWORD PTR channels$4[rbp]
+ 001b6 48 8b 85 60 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 001bd 44 8b 00 mov r8d, DWORD PTR [rax]
+ 001c0 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 001c7 8b 10 mov edx, DWORD PTR [rax]
+ 001c9 48 8b 4d 38 mov rcx, QWORD PTR result$[rbp]
+ 001cd e8 00 00 00 00 call stbi__vertical_flip
+ 001d2 90 npad 1
+$LN4@stbi__load:
+
+; 1331 : }
+; 1332 :
+; 1333 : return (unsigned char *)result;
+
+ 001d3 48 8b 45 38 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi__load:
+
+; 1334 : }
+
+ 001d7 48 8b f8 mov rdi, rax
+ 001da 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
+ 001de 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__load_and_postprocess_8bit$rtcFrameData
+ 001e5 e8 00 00 00 00 call _RTC_CheckStackVars
+ 001ea 48 8b c7 mov rax, rdi
+ 001ed 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 001f4 48 33 cd xor rcx, rbp
+ 001f7 e8 00 00 00 00 call __security_check_cookie
+ 001fc 48 8d a5 38 01
+ 00 00 lea rsp, QWORD PTR [rbp+312]
+ 00203 5f pop rdi
+ 00204 5d pop rbp
+ 00205 c3 ret 0
+stbi__load_and_postprocess_8bit ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__vertical_flip_slices
+_TEXT SEGMENT
+slice$ = 4
+slice_size$ = 36
+bytes$ = 72
+image$ = 320
+w$ = 328
+h$ = 336
+z$ = 344
+bytes_per_pixel$ = 352
+stbi__vertical_flip_slices PROC ; COMDAT
+
+; 1296 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002d 90 npad 1
+
+; 1297 : int slice;
+; 1298 : int slice_size = w * h * bytes_per_pixel;
+
+ 0002e 8b 85 48 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00034 0f af 85 50 01
+ 00 00 imul eax, DWORD PTR h$[rbp]
+ 0003b 0f af 85 60 01
+ 00 00 imul eax, DWORD PTR bytes_per_pixel$[rbp]
+ 00042 89 45 24 mov DWORD PTR slice_size$[rbp], eax
+
+; 1299 :
+; 1300 : stbi_uc *bytes = (stbi_uc *)image;
+
+ 00045 48 8b 85 40 01
+ 00 00 mov rax, QWORD PTR image$[rbp]
+ 0004c 48 89 45 48 mov QWORD PTR bytes$[rbp], rax
+
+; 1301 : for (slice = 0; slice < z; ++slice) {
+
+ 00050 c7 45 04 00 00
+ 00 00 mov DWORD PTR slice$[rbp], 0
+ 00057 eb 08 jmp SHORT $LN4@stbi__vert
+$LN2@stbi__vert:
+ 00059 8b 45 04 mov eax, DWORD PTR slice$[rbp]
+ 0005c ff c0 inc eax
+ 0005e 89 45 04 mov DWORD PTR slice$[rbp], eax
+$LN4@stbi__vert:
+ 00061 8b 85 58 01 00
+ 00 mov eax, DWORD PTR z$[rbp]
+ 00067 39 45 04 cmp DWORD PTR slice$[rbp], eax
+ 0006a 7d 32 jge SHORT $LN3@stbi__vert
+
+; 1302 : stbi__vertical_flip(bytes, w, h, bytes_per_pixel);
+
+ 0006c 44 8b 8d 60 01
+ 00 00 mov r9d, DWORD PTR bytes_per_pixel$[rbp]
+ 00073 44 8b 85 50 01
+ 00 00 mov r8d, DWORD PTR h$[rbp]
+ 0007a 8b 95 48 01 00
+ 00 mov edx, DWORD PTR w$[rbp]
+ 00080 48 8b 4d 48 mov rcx, QWORD PTR bytes$[rbp]
+ 00084 e8 00 00 00 00 call stbi__vertical_flip
+ 00089 90 npad 1
+
+; 1303 : bytes += slice_size;
+
+ 0008a 48 63 45 24 movsxd rax, DWORD PTR slice_size$[rbp]
+ 0008e 48 8b 4d 48 mov rcx, QWORD PTR bytes$[rbp]
+ 00092 48 03 c8 add rcx, rax
+ 00095 48 8b c1 mov rax, rcx
+ 00098 48 89 45 48 mov QWORD PTR bytes$[rbp], rax
+
+; 1304 : }
+
+ 0009c eb bb jmp SHORT $LN2@stbi__vert
+$LN3@stbi__vert:
+
+; 1305 : }
+
+ 0009e 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 000a5 5f pop rdi
+ 000a6 5d pop rbp
+ 000a7 c3 ret 0
+stbi__vertical_flip_slices ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__vertical_flip
+_TEXT SEGMENT
+row$ = 4
+bytes_per_row$ = 40
+temp$ = 80
+bytes$ = 2152
+row0$4 = 2184
+row1$5 = 2216
+bytes_left$6 = 2248
+bytes_copy$7 = 2280
+tv80 = 3256
+__$ArrayPad$ = 3264
+image$ = 3312
+w$ = 3320
+h$ = 3328
+bytes_per_pixel$ = 3336
+stbi__vertical_flip PROC ; COMDAT
+
+; 1271 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec f8 0c
+ 00 00 sub rsp, 3320 ; 00000cf8H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00026 b9 46 02 00 00 mov ecx, 582 ; 00000246H
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 48 8b 8c 24 18
+ 0d 00 00 mov rcx, QWORD PTR [rsp+3352]
+ 0003a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00041 48 33 c5 xor rax, rbp
+ 00044 48 89 85 c0 0c
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00057 90 npad 1
+
+; 1272 : int row;
+; 1273 : size_t bytes_per_row = (size_t)w * bytes_per_pixel;
+
+ 00058 48 63 85 f8 0c
+ 00 00 movsxd rax, DWORD PTR w$[rbp]
+ 0005f 48 63 8d 08 0d
+ 00 00 movsxd rcx, DWORD PTR bytes_per_pixel$[rbp]
+ 00066 48 0f af c1 imul rax, rcx
+ 0006a 48 89 45 28 mov QWORD PTR bytes_per_row$[rbp], rax
+
+; 1274 : stbi_uc temp[2048];
+; 1275 : stbi_uc *bytes = (stbi_uc *)image;
+
+ 0006e 48 8b 85 f0 0c
+ 00 00 mov rax, QWORD PTR image$[rbp]
+ 00075 48 89 85 68 08
+ 00 00 mov QWORD PTR bytes$[rbp], rax
+
+; 1276 :
+; 1277 : for (row = 0; row < (h >> 1); row++) {
+
+ 0007c c7 45 04 00 00
+ 00 00 mov DWORD PTR row$[rbp], 0
+ 00083 eb 08 jmp SHORT $LN4@stbi__vert
+$LN2@stbi__vert:
+ 00085 8b 45 04 mov eax, DWORD PTR row$[rbp]
+ 00088 ff c0 inc eax
+ 0008a 89 45 04 mov DWORD PTR row$[rbp], eax
+$LN4@stbi__vert:
+ 0008d 8b 85 00 0d 00
+ 00 mov eax, DWORD PTR h$[rbp]
+ 00093 d1 f8 sar eax, 1
+ 00095 39 45 04 cmp DWORD PTR row$[rbp], eax
+ 00098 0f 8d 3c 01 00
+ 00 jge $LN3@stbi__vert
+
+; 1278 : stbi_uc *row0 = bytes + row * bytes_per_row;
+
+ 0009e 48 63 45 04 movsxd rax, DWORD PTR row$[rbp]
+ 000a2 48 0f af 45 28 imul rax, QWORD PTR bytes_per_row$[rbp]
+ 000a7 48 8b 8d 68 08
+ 00 00 mov rcx, QWORD PTR bytes$[rbp]
+ 000ae 48 03 c8 add rcx, rax
+ 000b1 48 8b c1 mov rax, rcx
+ 000b4 48 89 85 88 08
+ 00 00 mov QWORD PTR row0$4[rbp], rax
+
+; 1279 : stbi_uc *row1 = bytes + (h - row - 1) * bytes_per_row;
+
+ 000bb 8b 45 04 mov eax, DWORD PTR row$[rbp]
+ 000be 8b 8d 00 0d 00
+ 00 mov ecx, DWORD PTR h$[rbp]
+ 000c4 2b c8 sub ecx, eax
+ 000c6 8b c1 mov eax, ecx
+ 000c8 ff c8 dec eax
+ 000ca 48 98 cdqe
+ 000cc 48 0f af 45 28 imul rax, QWORD PTR bytes_per_row$[rbp]
+ 000d1 48 8b 8d 68 08
+ 00 00 mov rcx, QWORD PTR bytes$[rbp]
+ 000d8 48 03 c8 add rcx, rax
+ 000db 48 8b c1 mov rax, rcx
+ 000de 48 89 85 a8 08
+ 00 00 mov QWORD PTR row1$5[rbp], rax
+
+; 1280 : // swap row0 with row1
+; 1281 : size_t bytes_left = bytes_per_row;
+
+ 000e5 48 8b 45 28 mov rax, QWORD PTR bytes_per_row$[rbp]
+ 000e9 48 89 85 c8 08
+ 00 00 mov QWORD PTR bytes_left$6[rbp], rax
+$LN5@stbi__vert:
+
+; 1282 : while (bytes_left) {
+
+ 000f0 48 83 bd c8 08
+ 00 00 00 cmp QWORD PTR bytes_left$6[rbp], 0
+ 000f8 0f 84 d7 00 00
+ 00 je $LN6@stbi__vert
+
+; 1283 : size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp);
+
+ 000fe 48 81 bd c8 08
+ 00 00 00 08 00
+ 00 cmp QWORD PTR bytes_left$6[rbp], 2048 ; 00000800H
+ 00109 73 10 jae SHORT $LN8@stbi__vert
+ 0010b 48 8b 85 c8 08
+ 00 00 mov rax, QWORD PTR bytes_left$6[rbp]
+ 00112 48 89 85 b8 0c
+ 00 00 mov QWORD PTR tv80[rbp], rax
+ 00119 eb 0b jmp SHORT $LN9@stbi__vert
+$LN8@stbi__vert:
+ 0011b 48 c7 85 b8 0c
+ 00 00 00 08 00
+ 00 mov QWORD PTR tv80[rbp], 2048 ; 00000800H
+$LN9@stbi__vert:
+ 00126 48 8b 85 b8 0c
+ 00 00 mov rax, QWORD PTR tv80[rbp]
+ 0012d 48 89 85 e8 08
+ 00 00 mov QWORD PTR bytes_copy$7[rbp], rax
+
+; 1284 : memcpy(temp, row0, bytes_copy);
+
+ 00134 4c 8b 85 e8 08
+ 00 00 mov r8, QWORD PTR bytes_copy$7[rbp]
+ 0013b 48 8b 95 88 08
+ 00 00 mov rdx, QWORD PTR row0$4[rbp]
+ 00142 48 8d 4d 50 lea rcx, QWORD PTR temp$[rbp]
+ 00146 e8 00 00 00 00 call memcpy
+ 0014b 90 npad 1
+
+; 1285 : memcpy(row0, row1, bytes_copy);
+
+ 0014c 4c 8b 85 e8 08
+ 00 00 mov r8, QWORD PTR bytes_copy$7[rbp]
+ 00153 48 8b 95 a8 08
+ 00 00 mov rdx, QWORD PTR row1$5[rbp]
+ 0015a 48 8b 8d 88 08
+ 00 00 mov rcx, QWORD PTR row0$4[rbp]
+ 00161 e8 00 00 00 00 call memcpy
+ 00166 90 npad 1
+
+; 1286 : memcpy(row1, temp, bytes_copy);
+
+ 00167 4c 8b 85 e8 08
+ 00 00 mov r8, QWORD PTR bytes_copy$7[rbp]
+ 0016e 48 8d 55 50 lea rdx, QWORD PTR temp$[rbp]
+ 00172 48 8b 8d a8 08
+ 00 00 mov rcx, QWORD PTR row1$5[rbp]
+ 00179 e8 00 00 00 00 call memcpy
+ 0017e 90 npad 1
+
+; 1287 : row0 += bytes_copy;
+
+ 0017f 48 8b 85 e8 08
+ 00 00 mov rax, QWORD PTR bytes_copy$7[rbp]
+ 00186 48 8b 8d 88 08
+ 00 00 mov rcx, QWORD PTR row0$4[rbp]
+ 0018d 48 03 c8 add rcx, rax
+ 00190 48 8b c1 mov rax, rcx
+ 00193 48 89 85 88 08
+ 00 00 mov QWORD PTR row0$4[rbp], rax
+
+; 1288 : row1 += bytes_copy;
+
+ 0019a 48 8b 85 e8 08
+ 00 00 mov rax, QWORD PTR bytes_copy$7[rbp]
+ 001a1 48 8b 8d a8 08
+ 00 00 mov rcx, QWORD PTR row1$5[rbp]
+ 001a8 48 03 c8 add rcx, rax
+ 001ab 48 8b c1 mov rax, rcx
+ 001ae 48 89 85 a8 08
+ 00 00 mov QWORD PTR row1$5[rbp], rax
+
+; 1289 : bytes_left -= bytes_copy;
+
+ 001b5 48 8b 85 e8 08
+ 00 00 mov rax, QWORD PTR bytes_copy$7[rbp]
+ 001bc 48 8b 8d c8 08
+ 00 00 mov rcx, QWORD PTR bytes_left$6[rbp]
+ 001c3 48 2b c8 sub rcx, rax
+ 001c6 48 8b c1 mov rax, rcx
+ 001c9 48 89 85 c8 08
+ 00 00 mov QWORD PTR bytes_left$6[rbp], rax
+
+; 1290 : }
+
+ 001d0 e9 1b ff ff ff jmp $LN5@stbi__vert
+$LN6@stbi__vert:
+
+; 1291 : }
+
+ 001d5 e9 ab fe ff ff jmp $LN2@stbi__vert
+$LN3@stbi__vert:
+
+; 1292 : }
+
+ 001da 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 001de 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__vertical_flip$rtcFrameData
+ 001e5 e8 00 00 00 00 call _RTC_CheckStackVars
+ 001ea 48 8b 8d c0 0c
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 001f1 48 33 cd xor rcx, rbp
+ 001f4 e8 00 00 00 00 call __security_check_cookie
+ 001f9 48 8d a5 d8 0c
+ 00 00 lea rsp, QWORD PTR [rbp+3288]
+ 00200 5f pop rdi
+ 00201 5d pop rbp
+ 00202 c3 ret 0
+stbi__vertical_flip ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__convert_8_to_16
+_TEXT SEGMENT
+i$ = 4
+img_len$ = 36
+enlarged$ = 72
+tv74 = 280
+orig$ = 320
+w$ = 328
+h$ = 336
+channels$ = 344
+stbi__convert_8_to_16 PROC ; COMDAT
+
+; 1252 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002d 90 npad 1
+
+; 1253 : int i;
+; 1254 : int img_len = w * h * channels;
+
+ 0002e 8b 85 48 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00034 0f af 85 50 01
+ 00 00 imul eax, DWORD PTR h$[rbp]
+ 0003b 0f af 85 58 01
+ 00 00 imul eax, DWORD PTR channels$[rbp]
+ 00042 89 45 24 mov DWORD PTR img_len$[rbp], eax
+
+; 1255 : stbi__uint16 *enlarged;
+; 1256 :
+; 1257 : enlarged = (stbi__uint16 *)stbi__malloc(img_len * 2);
+
+ 00045 8b 45 24 mov eax, DWORD PTR img_len$[rbp]
+ 00048 d1 e0 shl eax, 1
+ 0004a 48 98 cdqe
+ 0004c 48 8b c8 mov rcx, rax
+ 0004f e8 00 00 00 00 call stbi__malloc
+ 00054 48 89 45 48 mov QWORD PTR enlarged$[rbp], rax
+
+; 1258 : if (enlarged == NULL)
+
+ 00058 48 83 7d 48 00 cmp QWORD PTR enlarged$[rbp], 0
+ 0005d 75 31 jne SHORT $LN5@stbi__conv
+
+; 1259 : return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory");
+
+ 0005f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00066 e8 00 00 00 00 call stbi__err
+ 0006b 85 c0 test eax, eax
+ 0006d 74 0d je SHORT $LN7@stbi__conv
+ 0006f 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv74[rbp], 0
+ 0007a eb 0b jmp SHORT $LN8@stbi__conv
+$LN7@stbi__conv:
+ 0007c 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv74[rbp], 0
+$LN8@stbi__conv:
+ 00087 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv74[rbp]
+ 0008e eb 5c jmp SHORT $LN1@stbi__conv
+$LN5@stbi__conv:
+
+; 1260 :
+; 1261 : for (i = 0; i < img_len; ++i)
+
+ 00090 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00097 eb 08 jmp SHORT $LN4@stbi__conv
+$LN2@stbi__conv:
+ 00099 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 0009c ff c0 inc eax
+ 0009e 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__conv:
+ 000a1 8b 45 24 mov eax, DWORD PTR img_len$[rbp]
+ 000a4 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 000a7 7d 31 jge SHORT $LN3@stbi__conv
+
+; 1262 : enlarged[i] =
+
+ 000a9 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000ad 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR orig$[rbp]
+ 000b4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 000b8 c1 e0 08 shl eax, 8
+ 000bb 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 000bf 48 8b 95 40 01
+ 00 00 mov rdx, QWORD PTR orig$[rbp]
+ 000c6 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx]
+ 000ca 03 c1 add eax, ecx
+ 000cc 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 000d0 48 8b 55 48 mov rdx, QWORD PTR enlarged$[rbp]
+ 000d4 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax
+ 000d8 eb bf jmp SHORT $LN2@stbi__conv
+$LN3@stbi__conv:
+
+; 1263 : (stbi__uint16)((orig[i] << 8) +
+; 1264 : orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff
+; 1265 :
+; 1266 : STBI_FREE(orig);
+
+ 000da 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR orig$[rbp]
+ 000e1 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000e7 90 npad 1
+
+; 1267 : return enlarged;
+
+ 000e8 48 8b 45 48 mov rax, QWORD PTR enlarged$[rbp]
+$LN1@stbi__conv:
+
+; 1268 : }
+
+ 000ec 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 000f3 5f pop rdi
+ 000f4 5d pop rbp
+ 000f5 c3 ret 0
+stbi__convert_8_to_16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__convert_16_to_8
+_TEXT SEGMENT
+i$ = 4
+img_len$ = 36
+reduced$ = 72
+tv73 = 280
+orig$ = 320
+w$ = 328
+h$ = 336
+channels$ = 344
+stbi__convert_16_to_8 PROC ; COMDAT
+
+; 1233 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002d 90 npad 1
+
+; 1234 : int i;
+; 1235 : int img_len = w * h * channels;
+
+ 0002e 8b 85 48 01 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00034 0f af 85 50 01
+ 00 00 imul eax, DWORD PTR h$[rbp]
+ 0003b 0f af 85 58 01
+ 00 00 imul eax, DWORD PTR channels$[rbp]
+ 00042 89 45 24 mov DWORD PTR img_len$[rbp], eax
+
+; 1236 : stbi_uc *reduced;
+; 1237 :
+; 1238 : reduced = (stbi_uc *)stbi__malloc(img_len);
+
+ 00045 48 63 45 24 movsxd rax, DWORD PTR img_len$[rbp]
+ 00049 48 8b c8 mov rcx, rax
+ 0004c e8 00 00 00 00 call stbi__malloc
+ 00051 48 89 45 48 mov QWORD PTR reduced$[rbp], rax
+
+; 1239 : if (reduced == NULL)
+
+ 00055 48 83 7d 48 00 cmp QWORD PTR reduced$[rbp], 0
+ 0005a 75 31 jne SHORT $LN5@stbi__conv
+
+; 1240 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 0005c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00063 e8 00 00 00 00 call stbi__err
+ 00068 85 c0 test eax, eax
+ 0006a 74 0d je SHORT $LN7@stbi__conv
+ 0006c 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv73[rbp], 0
+ 00077 eb 0b jmp SHORT $LN8@stbi__conv
+$LN7@stbi__conv:
+ 00079 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv73[rbp], 0
+$LN8@stbi__conv:
+ 00084 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR tv73[rbp]
+ 0008b eb 4f jmp SHORT $LN1@stbi__conv
+$LN5@stbi__conv:
+
+; 1241 :
+; 1242 : for (i = 0; i < img_len; ++i)
+
+ 0008d c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00094 eb 08 jmp SHORT $LN4@stbi__conv
+$LN2@stbi__conv:
+ 00096 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00099 ff c0 inc eax
+ 0009b 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__conv:
+ 0009e 8b 45 24 mov eax, DWORD PTR img_len$[rbp]
+ 000a1 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 000a4 7d 24 jge SHORT $LN3@stbi__conv
+
+; 1243 : reduced[i] =
+
+ 000a6 48 63 45 04 movsxd rax, DWORD PTR i$[rbp]
+ 000aa 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR orig$[rbp]
+ 000b1 0f b7 04 41 movzx eax, WORD PTR [rcx+rax*2]
+ 000b5 c1 f8 08 sar eax, 8
+ 000b8 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 000bd 48 63 4d 04 movsxd rcx, DWORD PTR i$[rbp]
+ 000c1 48 8b 55 48 mov rdx, QWORD PTR reduced$[rbp]
+ 000c5 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 000c8 eb cc jmp SHORT $LN2@stbi__conv
+$LN3@stbi__conv:
+
+; 1244 : (stbi_uc)((orig[i] >> 8) &
+; 1245 : 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling
+; 1246 :
+; 1247 : STBI_FREE(orig);
+
+ 000ca 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR orig$[rbp]
+ 000d1 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000d7 90 npad 1
+
+; 1248 : return reduced;
+
+ 000d8 48 8b 45 48 mov rax, QWORD PTR reduced$[rbp]
+$LN1@stbi__conv:
+
+; 1249 : }
+
+ 000dc 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 000e3 5f pop rdi
+ 000e4 5d pop rbp
+ 000e5 c3 ret 0
+stbi__convert_16_to_8 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__load_main
+_TEXT SEGMENT
+hdr$1 = 8
+tv185 = 212
+tv203 = 216
+s$ = 256
+x$ = 264
+y$ = 272
+comp$ = 280
+req_comp$ = 288
+ri$ = 296
+bpc$ = 304
+stbi__load_main PROC ; COMDAT
+
+; 1172 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0001d 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 1173 : memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields
+
+ 0002f 41 b8 0c 00 00
+ 00 mov r8d, 12
+ 00035 33 d2 xor edx, edx
+ 00037 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR ri$[rbp]
+ 0003e e8 00 00 00 00 call memset
+ 00043 90 npad 1
+
+; 1174 : ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed
+
+ 00044 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 0004b c7 00 08 00 00
+ 00 mov DWORD PTR [rax], 8
+
+; 1175 : ri->channel_order =
+
+ 00051 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00058 c7 40 08 00 00
+ 00 00 mov DWORD PTR [rax+8], 0
+
+; 1176 : STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order
+; 1177 : ri->num_channels = 0;
+
+ 0005f 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00066 c7 40 04 00 00
+ 00 00 mov DWORD PTR [rax+4], 0
+
+; 1178 :
+; 1179 : // test the formats with a very explicit header first (at least a FOURCC
+; 1180 : // or distinctive magic number first)
+; 1181 : #ifndef STBI_NO_PNG
+; 1182 : if (stbi__png_test(s))
+
+ 0006d 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00074 e8 00 00 00 00 call stbi__png_test
+ 00079 85 c0 test eax, eax
+ 0007b 74 3c je SHORT $LN2@stbi__load
+
+; 1183 : return stbi__png_load(s, x, y, comp, req_comp, ri);
+
+ 0007d 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00084 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00089 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 0008f 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00093 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0009a 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 000a1 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 000a8 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000af e8 00 00 00 00 call stbi__png_load
+ 000b4 e9 e4 02 00 00 jmp $LN1@stbi__load
+$LN2@stbi__load:
+
+; 1184 : #endif
+; 1185 : #ifndef STBI_NO_BMP
+; 1186 : if (stbi__bmp_test(s))
+
+ 000b9 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c0 e8 00 00 00 00 call stbi__bmp_test
+ 000c5 85 c0 test eax, eax
+ 000c7 74 3c je SHORT $LN3@stbi__load
+
+; 1187 : return stbi__bmp_load(s, x, y, comp, req_comp, ri);
+
+ 000c9 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 000d0 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 000d5 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000db 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 000df 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 000e6 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 000ed 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 000f4 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000fb e8 00 00 00 00 call stbi__bmp_load
+ 00100 e9 98 02 00 00 jmp $LN1@stbi__load
+$LN3@stbi__load:
+
+; 1188 : #endif
+; 1189 : #ifndef STBI_NO_GIF
+; 1190 : if (stbi__gif_test(s))
+
+ 00105 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0010c e8 00 00 00 00 call stbi__gif_test
+ 00111 85 c0 test eax, eax
+ 00113 74 3c je SHORT $LN4@stbi__load
+
+; 1191 : return stbi__gif_load(s, x, y, comp, req_comp, ri);
+
+ 00115 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 0011c 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00121 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00127 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0012b 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00132 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00139 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00140 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00147 e8 00 00 00 00 call stbi__gif_load
+ 0014c e9 4c 02 00 00 jmp $LN1@stbi__load
+$LN4@stbi__load:
+
+; 1192 : #endif
+; 1193 : #ifndef STBI_NO_PSD
+; 1194 : if (stbi__psd_test(s))
+
+ 00151 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00158 e8 00 00 00 00 call stbi__psd_test
+ 0015d 85 c0 test eax, eax
+ 0015f 74 46 je SHORT $LN5@stbi__load
+
+; 1195 : return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc);
+
+ 00161 8b 85 30 01 00
+ 00 mov eax, DWORD PTR bpc$[rbp]
+ 00167 89 44 24 30 mov DWORD PTR [rsp+48], eax
+ 0016b 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00172 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00177 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 0017d 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00181 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00188 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0018f 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00196 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0019d e8 00 00 00 00 call stbi__psd_load
+ 001a2 e9 f6 01 00 00 jmp $LN1@stbi__load
+$LN5@stbi__load:
+
+; 1196 : #else
+; 1197 : STBI_NOTUSED(bpc);
+; 1198 : #endif
+; 1199 : #ifndef STBI_NO_PIC
+; 1200 : if (stbi__pic_test(s))
+
+ 001a7 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001ae e8 00 00 00 00 call stbi__pic_test
+ 001b3 85 c0 test eax, eax
+ 001b5 74 3c je SHORT $LN6@stbi__load
+
+; 1201 : return stbi__pic_load(s, x, y, comp, req_comp, ri);
+
+ 001b7 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 001be 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 001c3 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 001c9 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 001cd 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 001d4 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 001db 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 001e2 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001e9 e8 00 00 00 00 call stbi__pic_load
+ 001ee e9 aa 01 00 00 jmp $LN1@stbi__load
+$LN6@stbi__load:
+
+; 1202 : #endif
+; 1203 :
+; 1204 : // then the formats that can end up attempting to load with just 1 or 2
+; 1205 : // bytes matching expectations; these are prone to false positives, so
+; 1206 : // try them later
+; 1207 : #ifndef STBI_NO_JPEG
+; 1208 : if (stbi__jpeg_test(s))
+
+ 001f3 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001fa e8 00 00 00 00 call stbi__jpeg_test
+ 001ff 85 c0 test eax, eax
+ 00201 74 3c je SHORT $LN7@stbi__load
+
+; 1209 : return stbi__jpeg_load(s, x, y, comp, req_comp, ri);
+
+ 00203 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 0020a 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 0020f 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00215 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00219 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00220 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00227 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0022e 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00235 e8 00 00 00 00 call stbi__jpeg_load
+ 0023a e9 5e 01 00 00 jmp $LN1@stbi__load
+$LN7@stbi__load:
+
+; 1210 : #endif
+; 1211 : #ifndef STBI_NO_PNM
+; 1212 : if (stbi__pnm_test(s))
+
+ 0023f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00246 e8 00 00 00 00 call stbi__pnm_test
+ 0024b 85 c0 test eax, eax
+ 0024d 74 3c je SHORT $LN8@stbi__load
+
+; 1213 : return stbi__pnm_load(s, x, y, comp, req_comp, ri);
+
+ 0024f 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00256 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 0025b 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00261 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00265 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0026c 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00273 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0027a 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00281 e8 00 00 00 00 call stbi__pnm_load
+ 00286 e9 12 01 00 00 jmp $LN1@stbi__load
+$LN8@stbi__load:
+
+; 1214 : #endif
+; 1215 :
+; 1216 : #ifndef STBI_NO_HDR
+; 1217 : if (stbi__hdr_test(s)) {
+
+ 0028b 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00292 e8 00 00 00 00 call stbi__hdr_test
+ 00297 85 c0 test eax, eax
+ 00299 0f 84 86 00 00
+ 00 je $LN9@stbi__load
+
+; 1218 : float *hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri);
+
+ 0029f 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 002a6 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 002ab 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 002b1 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 002b5 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 002bc 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 002c3 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 002ca 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 002d1 e8 00 00 00 00 call stbi__hdr_load
+ 002d6 48 89 45 08 mov QWORD PTR hdr$1[rbp], rax
+
+; 1219 : return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);
+
+ 002da 83 bd 20 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 002e1 74 0e je SHORT $LN12@stbi__load
+ 002e3 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 002e9 89 85 d4 00 00
+ 00 mov DWORD PTR tv185[rbp], eax
+ 002ef eb 0f jmp SHORT $LN13@stbi__load
+$LN12@stbi__load:
+ 002f1 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 002f8 8b 00 mov eax, DWORD PTR [rax]
+ 002fa 89 85 d4 00 00
+ 00 mov DWORD PTR tv185[rbp], eax
+$LN13@stbi__load:
+ 00300 44 8b 8d d4 00
+ 00 00 mov r9d, DWORD PTR tv185[rbp]
+ 00307 48 8b 85 10 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 0030e 44 8b 00 mov r8d, DWORD PTR [rax]
+ 00311 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00318 8b 10 mov edx, DWORD PTR [rax]
+ 0031a 48 8b 4d 08 mov rcx, QWORD PTR hdr$1[rbp]
+ 0031e e8 00 00 00 00 call stbi__hdr_to_ldr
+ 00323 eb 78 jmp SHORT $LN1@stbi__load
+$LN9@stbi__load:
+
+; 1220 : }
+; 1221 : #endif
+; 1222 :
+; 1223 : #ifndef STBI_NO_TGA
+; 1224 : // test tga last because it's a crappy test!
+; 1225 : if (stbi__tga_test(s))
+
+ 00325 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0032c e8 00 00 00 00 call stbi__tga_test
+ 00331 85 c0 test eax, eax
+ 00333 74 39 je SHORT $LN10@stbi__load
+
+; 1226 : return stbi__tga_load(s, x, y, comp, req_comp, ri);
+
+ 00335 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 0033c 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00341 8b 85 20 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00347 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0034b 4c 8b 8d 18 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00352 4c 8b 85 10 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00359 48 8b 95 08 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00360 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00367 e8 00 00 00 00 call stbi__tga_load
+ 0036c eb 2f jmp SHORT $LN1@stbi__load
+$LN10@stbi__load:
+
+; 1227 : #endif
+; 1228 :
+; 1229 : return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt");
+
+ 0036e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@CBEDEJPH@unknown?5image?5type@
+ 00375 e8 00 00 00 00 call stbi__err
+ 0037a 85 c0 test eax, eax
+ 0037c 74 0d je SHORT $LN14@stbi__load
+ 0037e 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv203[rbp], 0
+ 00389 eb 0b jmp SHORT $LN15@stbi__load
+$LN14@stbi__load:
+ 0038b 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv203[rbp], 0
+$LN15@stbi__load:
+ 00396 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv203[rbp]
+$LN1@stbi__load:
+
+; 1230 : }
+
+ 0039d 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 003a4 5f pop rdi
+ 003a5 5d pop rbp
+ 003a6 c3 ret 0
+stbi__load_main ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__hdr_to_ldr
+_TEXT SEGMENT
+i$ = 4
+k$ = 36
+n$ = 68
+output$ = 104
+z$1 = 132
+z$2 = 164
+tv75 = 376
+tv93 = 376
+data$ = 416
+x$ = 424
+y$ = 432
+comp$ = 440
+stbi__hdr_to_ldr PROC ; COMDAT
+
+; 2110 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec a8 01
+ 00 00 sub rsp, 424 ; 000001a8H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002d 90 npad 1
+
+; 2111 : int i, k, n;
+; 2112 : stbi_uc *output;
+; 2113 : if (!data)
+
+ 0002e 48 83 bd a0 01
+ 00 00 00 cmp QWORD PTR data$[rbp], 0
+ 00036 75 07 jne SHORT $LN8@stbi__hdr_
+
+; 2114 : return NULL;
+
+ 00038 33 c0 xor eax, eax
+ 0003a e9 3e 02 00 00 jmp $LN1@stbi__hdr_
+$LN8@stbi__hdr_:
+
+; 2115 : output = (stbi_uc *)stbi__malloc_mad3(x, y, comp, 0);
+
+ 0003f 45 33 c9 xor r9d, r9d
+ 00042 44 8b 85 b8 01
+ 00 00 mov r8d, DWORD PTR comp$[rbp]
+ 00049 8b 95 b0 01 00
+ 00 mov edx, DWORD PTR y$[rbp]
+ 0004f 8b 8d a8 01 00
+ 00 mov ecx, DWORD PTR x$[rbp]
+ 00055 e8 00 00 00 00 call stbi__malloc_mad3
+ 0005a 48 89 45 68 mov QWORD PTR output$[rbp], rax
+
+; 2116 : if (output == NULL) {
+
+ 0005e 48 83 7d 68 00 cmp QWORD PTR output$[rbp], 0
+ 00063 75 42 jne SHORT $LN9@stbi__hdr_
+
+; 2117 : STBI_FREE(data);
+
+ 00065 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 0006c ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00072 90 npad 1
+
+; 2118 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 00073 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0007a e8 00 00 00 00 call stbi__err
+ 0007f 85 c0 test eax, eax
+ 00081 74 0d je SHORT $LN18@stbi__hdr_
+ 00083 48 c7 85 78 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv75[rbp], 0
+ 0008e eb 0b jmp SHORT $LN19@stbi__hdr_
+$LN18@stbi__hdr_:
+ 00090 48 c7 85 78 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv75[rbp], 0
+$LN19@stbi__hdr_:
+ 0009b 48 8b 85 78 01
+ 00 00 mov rax, QWORD PTR tv75[rbp]
+ 000a2 e9 d6 01 00 00 jmp $LN1@stbi__hdr_
+$LN9@stbi__hdr_:
+
+; 2119 : }
+; 2120 : // compute number of non-alpha components
+; 2121 : if (comp & 1)
+
+ 000a7 8b 85 b8 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 000ad 83 e0 01 and eax, 1
+ 000b0 85 c0 test eax, eax
+ 000b2 74 0b je SHORT $LN10@stbi__hdr_
+
+; 2122 : n = comp;
+
+ 000b4 8b 85 b8 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 000ba 89 45 44 mov DWORD PTR n$[rbp], eax
+ 000bd eb 0b jmp SHORT $LN11@stbi__hdr_
+$LN10@stbi__hdr_:
+
+; 2123 : else
+; 2124 : n = comp - 1;
+
+ 000bf 8b 85 b8 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 000c5 ff c8 dec eax
+ 000c7 89 45 44 mov DWORD PTR n$[rbp], eax
+$LN11@stbi__hdr_:
+
+; 2125 : for (i = 0; i < x * y; ++i) {
+
+ 000ca c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 000d1 eb 08 jmp SHORT $LN4@stbi__hdr_
+$LN2@stbi__hdr_:
+ 000d3 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000d6 ff c0 inc eax
+ 000d8 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__hdr_:
+ 000db 8b 85 a8 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 000e1 0f af 85 b0 01
+ 00 00 imul eax, DWORD PTR y$[rbp]
+ 000e8 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 000eb 0f 8d 7a 01 00
+ 00 jge $LN3@stbi__hdr_
+
+; 2126 : for (k = 0; k < n; ++k) {
+
+ 000f1 c7 45 24 00 00
+ 00 00 mov DWORD PTR k$[rbp], 0
+ 000f8 eb 08 jmp SHORT $LN7@stbi__hdr_
+$LN5@stbi__hdr_:
+ 000fa 8b 45 24 mov eax, DWORD PTR k$[rbp]
+ 000fd ff c0 inc eax
+ 000ff 89 45 24 mov DWORD PTR k$[rbp], eax
+$LN7@stbi__hdr_:
+ 00102 8b 45 44 mov eax, DWORD PTR n$[rbp]
+ 00105 39 45 24 cmp DWORD PTR k$[rbp], eax
+ 00108 0f 8d bf 00 00
+ 00 jge $LN6@stbi__hdr_
+
+; 2127 : float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i,
+
+ 0010e f3 0f 5a 05 00
+ 00 00 00 cvtss2sd xmm0, DWORD PTR stbi__h2l_gamma_i
+ 00116 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00119 0f af 85 b8 01
+ 00 00 imul eax, DWORD PTR comp$[rbp]
+ 00120 03 45 24 add eax, DWORD PTR k$[rbp]
+ 00123 48 98 cdqe
+ 00125 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 0012c f3 0f 10 0c 81 movss xmm1, DWORD PTR [rcx+rax*4]
+ 00131 f3 0f 59 0d 00
+ 00 00 00 mulss xmm1, DWORD PTR stbi__h2l_scale_i
+ 00139 f3 0f 5a c9 cvtss2sd xmm1, xmm1
+ 0013d f2 0f 11 8d 78
+ 01 00 00 movsd QWORD PTR tv93[rbp], xmm1
+ 00145 0f 28 c8 movaps xmm1, xmm0
+ 00148 f2 0f 10 85 78
+ 01 00 00 movsd xmm0, QWORD PTR tv93[rbp]
+ 00150 e8 00 00 00 00 call pow
+ 00155 f2 0f 5a c0 cvtsd2ss xmm0, xmm0
+ 00159 f3 0f 59 05 00
+ 00 00 00 mulss xmm0, DWORD PTR __real@437f0000
+ 00161 f3 0f 58 05 00
+ 00 00 00 addss xmm0, DWORD PTR __real@3f000000
+ 00169 f3 0f 11 85 84
+ 00 00 00 movss DWORD PTR z$1[rbp], xmm0
+
+; 2128 : stbi__h2l_gamma_i) *
+; 2129 : 255 +
+; 2130 : 0.5f;
+; 2131 : if (z < 0)
+
+ 00171 0f 57 c0 xorps xmm0, xmm0
+ 00174 0f 2f 85 84 00
+ 00 00 comiss xmm0, DWORD PTR z$1[rbp]
+ 0017b 76 0b jbe SHORT $LN12@stbi__hdr_
+
+; 2132 : z = 0;
+
+ 0017d 0f 57 c0 xorps xmm0, xmm0
+ 00180 f3 0f 11 85 84
+ 00 00 00 movss DWORD PTR z$1[rbp], xmm0
+$LN12@stbi__hdr_:
+
+; 2133 : if (z > 255)
+
+ 00188 f3 0f 10 85 84
+ 00 00 00 movss xmm0, DWORD PTR z$1[rbp]
+ 00190 0f 2f 05 00 00
+ 00 00 comiss xmm0, DWORD PTR __real@437f0000
+ 00197 76 10 jbe SHORT $LN13@stbi__hdr_
+
+; 2134 : z = 255;
+
+ 00199 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@437f0000
+ 001a1 f3 0f 11 85 84
+ 00 00 00 movss DWORD PTR z$1[rbp], xmm0
+$LN13@stbi__hdr_:
+
+; 2135 : output[i * comp + k] = (stbi_uc)stbi__float2int(z);
+
+ 001a9 f3 0f 2c 85 84
+ 00 00 00 cvttss2si eax, DWORD PTR z$1[rbp]
+ 001b1 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 001b4 0f af 8d b8 01
+ 00 00 imul ecx, DWORD PTR comp$[rbp]
+ 001bb 03 4d 24 add ecx, DWORD PTR k$[rbp]
+ 001be 48 63 c9 movsxd rcx, ecx
+ 001c1 48 8b 55 68 mov rdx, QWORD PTR output$[rbp]
+ 001c5 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 2136 : }
+
+ 001c8 e9 2d ff ff ff jmp $LN5@stbi__hdr_
+$LN6@stbi__hdr_:
+
+; 2137 : if (k < comp) {
+
+ 001cd 8b 85 b8 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 001d3 39 45 24 cmp DWORD PTR k$[rbp], eax
+ 001d6 0f 8d 8a 00 00
+ 00 jge $LN14@stbi__hdr_
+
+; 2138 : float z = data[i * comp + k] * 255 + 0.5f;
+
+ 001dc 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001df 0f af 85 b8 01
+ 00 00 imul eax, DWORD PTR comp$[rbp]
+ 001e6 03 45 24 add eax, DWORD PTR k$[rbp]
+ 001e9 48 98 cdqe
+ 001eb 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 001f2 f3 0f 10 04 81 movss xmm0, DWORD PTR [rcx+rax*4]
+ 001f7 f3 0f 59 05 00
+ 00 00 00 mulss xmm0, DWORD PTR __real@437f0000
+ 001ff f3 0f 58 05 00
+ 00 00 00 addss xmm0, DWORD PTR __real@3f000000
+ 00207 f3 0f 11 85 a4
+ 00 00 00 movss DWORD PTR z$2[rbp], xmm0
+
+; 2139 : if (z < 0)
+
+ 0020f 0f 57 c0 xorps xmm0, xmm0
+ 00212 0f 2f 85 a4 00
+ 00 00 comiss xmm0, DWORD PTR z$2[rbp]
+ 00219 76 0b jbe SHORT $LN15@stbi__hdr_
+
+; 2140 : z = 0;
+
+ 0021b 0f 57 c0 xorps xmm0, xmm0
+ 0021e f3 0f 11 85 a4
+ 00 00 00 movss DWORD PTR z$2[rbp], xmm0
+$LN15@stbi__hdr_:
+
+; 2141 : if (z > 255)
+
+ 00226 f3 0f 10 85 a4
+ 00 00 00 movss xmm0, DWORD PTR z$2[rbp]
+ 0022e 0f 2f 05 00 00
+ 00 00 comiss xmm0, DWORD PTR __real@437f0000
+ 00235 76 10 jbe SHORT $LN16@stbi__hdr_
+
+; 2142 : z = 255;
+
+ 00237 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@437f0000
+ 0023f f3 0f 11 85 a4
+ 00 00 00 movss DWORD PTR z$2[rbp], xmm0
+$LN16@stbi__hdr_:
+
+; 2143 : output[i * comp + k] = (stbi_uc)stbi__float2int(z);
+
+ 00247 f3 0f 2c 85 a4
+ 00 00 00 cvttss2si eax, DWORD PTR z$2[rbp]
+ 0024f 8b 4d 04 mov ecx, DWORD PTR i$[rbp]
+ 00252 0f af 8d b8 01
+ 00 00 imul ecx, DWORD PTR comp$[rbp]
+ 00259 03 4d 24 add ecx, DWORD PTR k$[rbp]
+ 0025c 48 63 c9 movsxd rcx, ecx
+ 0025f 48 8b 55 68 mov rdx, QWORD PTR output$[rbp]
+ 00263 88 04 0a mov BYTE PTR [rdx+rcx], al
+$LN14@stbi__hdr_:
+
+; 2144 : }
+; 2145 : }
+
+ 00266 e9 68 fe ff ff jmp $LN2@stbi__hdr_
+$LN3@stbi__hdr_:
+
+; 2146 : STBI_FREE(data);
+
+ 0026b 48 8b 8d a0 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00272 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00278 90 npad 1
+
+; 2147 : return output;
+
+ 00279 48 8b 45 68 mov rax, QWORD PTR output$[rbp]
+$LN1@stbi__hdr_:
+
+; 2148 : }
+
+ 0027d 48 8d a5 88 01
+ 00 00 lea rsp, QWORD PTR [rbp+392]
+ 00284 5f pop rdi
+ 00285 5d pop rbp
+ 00286 c3 ret 0
+stbi__hdr_to_ldr ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__ldr_to_hdr
+_TEXT SEGMENT
+i$ = 4
+k$ = 36
+n$ = 68
+output$ = 104
+tv76 = 312
+tv133 = 312
+data$ = 352
+x$ = 360
+y$ = 368
+comp$ = 376
+stbi__ldr_to_hdr PROC ; COMDAT
+
+; 2075 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 78 01
+ 00 00 sub rsp, 376 ; 00000178H
+ 0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00021 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002d 90 npad 1
+
+; 2076 : int i, k, n;
+; 2077 : float *output;
+; 2078 : if (!data)
+
+ 0002e 48 83 bd 60 01
+ 00 00 00 cmp QWORD PTR data$[rbp], 0
+ 00036 75 07 jne SHORT $LN11@stbi__ldr_
+
+; 2079 : return NULL;
+
+ 00038 33 c0 xor eax, eax
+ 0003a e9 d2 01 00 00 jmp $LN1@stbi__ldr_
+$LN11@stbi__ldr_:
+
+; 2080 : output = (float *)stbi__malloc_mad4(x, y, comp, sizeof(float), 0);
+
+ 0003f c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 00047 41 b9 04 00 00
+ 00 mov r9d, 4
+ 0004d 44 8b 85 78 01
+ 00 00 mov r8d, DWORD PTR comp$[rbp]
+ 00054 8b 95 70 01 00
+ 00 mov edx, DWORD PTR y$[rbp]
+ 0005a 8b 8d 68 01 00
+ 00 mov ecx, DWORD PTR x$[rbp]
+ 00060 e8 00 00 00 00 call stbi__malloc_mad4
+ 00065 48 89 45 68 mov QWORD PTR output$[rbp], rax
+
+; 2081 : if (output == NULL) {
+
+ 00069 48 83 7d 68 00 cmp QWORD PTR output$[rbp], 0
+ 0006e 75 42 jne SHORT $LN12@stbi__ldr_
+
+; 2082 : STBI_FREE(data);
+
+ 00070 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00077 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0007d 90 npad 1
+
+; 2083 : return stbi__errpf("outofmem", "Out of memory");
+
+ 0007e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00085 e8 00 00 00 00 call stbi__err
+ 0008a 85 c0 test eax, eax
+ 0008c 74 0d je SHORT $LN17@stbi__ldr_
+ 0008e 48 c7 85 38 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv76[rbp], 0
+ 00099 eb 0b jmp SHORT $LN18@stbi__ldr_
+$LN17@stbi__ldr_:
+ 0009b 48 c7 85 38 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv76[rbp], 0
+$LN18@stbi__ldr_:
+ 000a6 48 8b 85 38 01
+ 00 00 mov rax, QWORD PTR tv76[rbp]
+ 000ad e9 5f 01 00 00 jmp $LN1@stbi__ldr_
+$LN12@stbi__ldr_:
+
+; 2084 : }
+; 2085 : // compute number of non-alpha components
+; 2086 : if (comp & 1)
+
+ 000b2 8b 85 78 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 000b8 83 e0 01 and eax, 1
+ 000bb 85 c0 test eax, eax
+ 000bd 74 0b je SHORT $LN13@stbi__ldr_
+
+; 2087 : n = comp;
+
+ 000bf 8b 85 78 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 000c5 89 45 44 mov DWORD PTR n$[rbp], eax
+ 000c8 eb 0b jmp SHORT $LN14@stbi__ldr_
+$LN13@stbi__ldr_:
+
+; 2088 : else
+; 2089 : n = comp - 1;
+
+ 000ca 8b 85 78 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 000d0 ff c8 dec eax
+ 000d2 89 45 44 mov DWORD PTR n$[rbp], eax
+$LN14@stbi__ldr_:
+
+; 2090 : for (i = 0; i < x * y; ++i) {
+
+ 000d5 c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 000dc eb 08 jmp SHORT $LN4@stbi__ldr_
+$LN2@stbi__ldr_:
+ 000de 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 000e1 ff c0 inc eax
+ 000e3 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__ldr_:
+ 000e6 8b 85 68 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 000ec 0f af 85 70 01
+ 00 00 imul eax, DWORD PTR y$[rbp]
+ 000f3 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 000f6 0f 8d 95 00 00
+ 00 jge $LN3@stbi__ldr_
+
+; 2091 : for (k = 0; k < n; ++k) {
+
+ 000fc c7 45 24 00 00
+ 00 00 mov DWORD PTR k$[rbp], 0
+ 00103 eb 08 jmp SHORT $LN7@stbi__ldr_
+$LN5@stbi__ldr_:
+ 00105 8b 45 24 mov eax, DWORD PTR k$[rbp]
+ 00108 ff c0 inc eax
+ 0010a 89 45 24 mov DWORD PTR k$[rbp], eax
+$LN7@stbi__ldr_:
+ 0010d 8b 45 44 mov eax, DWORD PTR n$[rbp]
+ 00110 39 45 24 cmp DWORD PTR k$[rbp], eax
+ 00113 7d 77 jge SHORT $LN6@stbi__ldr_
+
+; 2092 : output[i * comp + k] =
+
+ 00115 f3 0f 5a 05 00
+ 00 00 00 cvtss2sd xmm0, DWORD PTR stbi__l2h_gamma
+ 0011d 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00120 0f af 85 78 01
+ 00 00 imul eax, DWORD PTR comp$[rbp]
+ 00127 03 45 24 add eax, DWORD PTR k$[rbp]
+ 0012a 48 98 cdqe
+ 0012c 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00133 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00137 f3 0f 2a c8 cvtsi2ss xmm1, eax
+ 0013b f3 0f 5e 0d 00
+ 00 00 00 divss xmm1, DWORD PTR __real@437f0000
+ 00143 f3 0f 5a c9 cvtss2sd xmm1, xmm1
+ 00147 f2 0f 11 8d 38
+ 01 00 00 movsd QWORD PTR tv133[rbp], xmm1
+ 0014f 0f 28 c8 movaps xmm1, xmm0
+ 00152 f2 0f 10 85 38
+ 01 00 00 movsd xmm0, QWORD PTR tv133[rbp]
+ 0015a e8 00 00 00 00 call pow
+ 0015f f3 0f 5a 0d 00
+ 00 00 00 cvtss2sd xmm1, DWORD PTR stbi__l2h_scale
+ 00167 f2 0f 59 c1 mulsd xmm0, xmm1
+ 0016b f2 0f 5a c0 cvtsd2ss xmm0, xmm0
+ 0016f 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 00172 0f af 85 78 01
+ 00 00 imul eax, DWORD PTR comp$[rbp]
+ 00179 03 45 24 add eax, DWORD PTR k$[rbp]
+ 0017c 48 98 cdqe
+ 0017e 48 8b 4d 68 mov rcx, QWORD PTR output$[rbp]
+ 00182 f3 0f 11 04 81 movss DWORD PTR [rcx+rax*4], xmm0
+
+; 2093 : (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) *
+; 2094 : stbi__l2h_scale);
+; 2095 : }
+
+ 00187 e9 79 ff ff ff jmp $LN5@stbi__ldr_
+$LN6@stbi__ldr_:
+
+; 2096 : }
+
+ 0018c e9 4d ff ff ff jmp $LN2@stbi__ldr_
+$LN3@stbi__ldr_:
+
+; 2097 : if (n < comp) {
+
+ 00191 8b 85 78 01 00
+ 00 mov eax, DWORD PTR comp$[rbp]
+ 00197 39 45 44 cmp DWORD PTR n$[rbp], eax
+ 0019a 7d 63 jge SHORT $LN15@stbi__ldr_
+
+; 2098 : for (i = 0; i < x * y; ++i) {
+
+ 0019c c7 45 04 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 001a3 eb 08 jmp SHORT $LN10@stbi__ldr_
+$LN8@stbi__ldr_:
+ 001a5 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001a8 ff c0 inc eax
+ 001aa 89 45 04 mov DWORD PTR i$[rbp], eax
+$LN10@stbi__ldr_:
+ 001ad 8b 85 68 01 00
+ 00 mov eax, DWORD PTR x$[rbp]
+ 001b3 0f af 85 70 01
+ 00 00 imul eax, DWORD PTR y$[rbp]
+ 001ba 39 45 04 cmp DWORD PTR i$[rbp], eax
+ 001bd 7d 40 jge SHORT $LN9@stbi__ldr_
+
+; 2099 : output[i * comp + n] = data[i * comp + n] / 255.0f;
+
+ 001bf 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001c2 0f af 85 78 01
+ 00 00 imul eax, DWORD PTR comp$[rbp]
+ 001c9 03 45 44 add eax, DWORD PTR n$[rbp]
+ 001cc 48 98 cdqe
+ 001ce 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 001d5 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 001d9 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 001dd f3 0f 5e 05 00
+ 00 00 00 divss xmm0, DWORD PTR __real@437f0000
+ 001e5 8b 45 04 mov eax, DWORD PTR i$[rbp]
+ 001e8 0f af 85 78 01
+ 00 00 imul eax, DWORD PTR comp$[rbp]
+ 001ef 03 45 44 add eax, DWORD PTR n$[rbp]
+ 001f2 48 98 cdqe
+ 001f4 48 8b 4d 68 mov rcx, QWORD PTR output$[rbp]
+ 001f8 f3 0f 11 04 81 movss DWORD PTR [rcx+rax*4], xmm0
+
+; 2100 : }
+
+ 001fd eb a6 jmp SHORT $LN8@stbi__ldr_
+$LN9@stbi__ldr_:
+$LN15@stbi__ldr_:
+
+; 2101 : }
+; 2102 : STBI_FREE(data);
+
+ 001ff 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00206 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0020c 90 npad 1
+
+; 2103 : return output;
+
+ 0020d 48 8b 45 68 mov rax, QWORD PTR output$[rbp]
+$LN1@stbi__ldr_:
+
+; 2104 : }
+
+ 00211 48 8d a5 48 01
+ 00 00 lea rsp, QWORD PTR [rbp+328]
+ 00218 5f pop rdi
+ 00219 5d pop rbp
+ 0021a c3 ret 0
+stbi__ldr_to_hdr ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__mul2shorts_valid
+_TEXT SEGMENT
+tv69 = 192
+tv73 = 192
+tv77 = 192
+tv80 = 192
+tv68 = 196
+a$ = 240
+b$ = 248
+stbi__mul2shorts_valid PROC ; COMDAT
+
+; 1109 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00008 55 push rbp
+ 00009 57 push rdi
+ 0000a 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00016 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00022 90 npad 1
+
+; 1110 : if (b == 0 || b == -1)
+
+ 00023 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 0002a 74 09 je SHORT $LN3@stbi__mul2
+ 0002c 83 bd f8 00 00
+ 00 ff cmp DWORD PTR b$[rbp], -1
+ 00033 75 0a jne SHORT $LN2@stbi__mul2
+$LN3@stbi__mul2:
+
+; 1111 : return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow
+
+ 00035 b8 01 00 00 00 mov eax, 1
+ 0003a e9 e9 00 00 00 jmp $LN1@stbi__mul2
+$LN2@stbi__mul2:
+
+; 1112 : if ((a >= 0) == (b >= 0))
+
+ 0003f 83 bd f0 00 00
+ 00 00 cmp DWORD PTR a$[rbp], 0
+ 00046 7c 0c jl SHORT $LN9@stbi__mul2
+ 00048 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv69[rbp], 1
+ 00052 eb 0a jmp SHORT $LN10@stbi__mul2
+$LN9@stbi__mul2:
+ 00054 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv69[rbp], 0
+$LN10@stbi__mul2:
+ 0005e 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 00065 7c 0c jl SHORT $LN7@stbi__mul2
+ 00067 c7 85 c4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
+ 00071 eb 0a jmp SHORT $LN8@stbi__mul2
+$LN7@stbi__mul2:
+ 00073 c7 85 c4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
+$LN8@stbi__mul2:
+ 0007d 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR tv68[rbp]
+ 00083 39 85 c0 00 00
+ 00 cmp DWORD PTR tv69[rbp], eax
+ 00089 75 32 jne SHORT $LN4@stbi__mul2
+
+; 1113 : return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid
+
+ 0008b b8 ff 7f 00 00 mov eax, 32767 ; 00007fffH
+ 00090 99 cdq
+ 00091 f7 bd f8 00 00
+ 00 idiv DWORD PTR b$[rbp]
+ 00097 39 85 f0 00 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 0009d 7f 0c jg SHORT $LN11@stbi__mul2
+ 0009f c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv73[rbp], 1
+ 000a9 eb 0a jmp SHORT $LN12@stbi__mul2
+$LN11@stbi__mul2:
+ 000ab c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
+$LN12@stbi__mul2:
+ 000b5 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv73[rbp]
+ 000bb eb 6b jmp SHORT $LN1@stbi__mul2
+$LN4@stbi__mul2:
+
+; 1114 : if (b < 0)
+
+ 000bd 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 000c4 7d 32 jge SHORT $LN5@stbi__mul2
+
+; 1115 : return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN
+
+ 000c6 b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H
+ 000cb 99 cdq
+ 000cc f7 bd f8 00 00
+ 00 idiv DWORD PTR b$[rbp]
+ 000d2 39 85 f0 00 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 000d8 7f 0c jg SHORT $LN13@stbi__mul2
+ 000da c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv77[rbp], 1
+ 000e4 eb 0a jmp SHORT $LN14@stbi__mul2
+$LN13@stbi__mul2:
+ 000e6 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv77[rbp], 0
+$LN14@stbi__mul2:
+ 000f0 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv77[rbp]
+ 000f6 eb 30 jmp SHORT $LN1@stbi__mul2
+$LN5@stbi__mul2:
+
+; 1116 : return a >= SHRT_MIN / b;
+
+ 000f8 b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H
+ 000fd 99 cdq
+ 000fe f7 bd f8 00 00
+ 00 idiv DWORD PTR b$[rbp]
+ 00104 39 85 f0 00 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 0010a 7c 0c jl SHORT $LN15@stbi__mul2
+ 0010c c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv80[rbp], 1
+ 00116 eb 0a jmp SHORT $LN16@stbi__mul2
+$LN15@stbi__mul2:
+ 00118 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv80[rbp], 0
+$LN16@stbi__mul2:
+ 00122 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv80[rbp]
+$LN1@stbi__mul2:
+
+; 1117 : }
+
+ 00128 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 0012f 5f pop rdi
+ 00130 5d pop rbp
+ 00131 c3 ret 0
+stbi__mul2shorts_valid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__addints_valid
+_TEXT SEGMENT
+tv67 = 192
+tv73 = 192
+tv76 = 192
+tv66 = 196
+a$ = 240
+b$ = 248
+stbi__addints_valid PROC ; COMDAT
+
+; 1097 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00008 55 push rbp
+ 00009 57 push rdi
+ 0000a 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00016 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00022 90 npad 1
+
+; 1098 : if ((a >= 0) != (b >= 0))
+
+ 00023 83 bd f0 00 00
+ 00 00 cmp DWORD PTR a$[rbp], 0
+ 0002a 7c 0c jl SHORT $LN7@stbi__addi
+ 0002c c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
+ 00036 eb 0a jmp SHORT $LN8@stbi__addi
+$LN7@stbi__addi:
+ 00038 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
+$LN8@stbi__addi:
+ 00042 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 00049 7c 0c jl SHORT $LN5@stbi__addi
+ 0004b c7 85 c4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv66[rbp], 1
+ 00055 eb 0a jmp SHORT $LN6@stbi__addi
+$LN5@stbi__addi:
+ 00057 c7 85 c4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv66[rbp], 0
+$LN6@stbi__addi:
+ 00061 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR tv66[rbp]
+ 00067 39 85 c0 00 00
+ 00 cmp DWORD PTR tv67[rbp], eax
+ 0006d 74 07 je SHORT $LN2@stbi__addi
+
+; 1099 : return 1; // a and b have different signs, so no overflow
+
+ 0006f b8 01 00 00 00 mov eax, 1
+ 00074 eb 72 jmp SHORT $LN1@stbi__addi
+$LN2@stbi__addi:
+
+; 1100 : if (a < 0 && b < 0)
+
+ 00076 83 bd f0 00 00
+ 00 00 cmp DWORD PTR a$[rbp], 0
+ 0007d 7d 3a jge SHORT $LN3@stbi__addi
+ 0007f 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 00086 7d 31 jge SHORT $LN3@stbi__addi
+
+; 1101 : return a >=
+
+ 00088 b8 00 00 00 80 mov eax, -2147483648 ; ffffffff80000000H
+ 0008d 2b 85 f8 00 00
+ 00 sub eax, DWORD PTR b$[rbp]
+ 00093 39 85 f0 00 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 00099 7c 0c jl SHORT $LN9@stbi__addi
+ 0009b c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv73[rbp], 1
+ 000a5 eb 0a jmp SHORT $LN10@stbi__addi
+$LN9@stbi__addi:
+ 000a7 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
+$LN10@stbi__addi:
+ 000b1 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv73[rbp]
+ 000b7 eb 2f jmp SHORT $LN1@stbi__addi
+$LN3@stbi__addi:
+
+; 1102 : INT_MIN -
+; 1103 : b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0.
+; 1104 : return a <= INT_MAX - b;
+
+ 000b9 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH
+ 000be 2b 85 f8 00 00
+ 00 sub eax, DWORD PTR b$[rbp]
+ 000c4 39 85 f0 00 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 000ca 7f 0c jg SHORT $LN11@stbi__addi
+ 000cc c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv76[rbp], 1
+ 000d6 eb 0a jmp SHORT $LN12@stbi__addi
+$LN11@stbi__addi:
+ 000d8 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv76[rbp], 0
+$LN12@stbi__addi:
+ 000e2 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv76[rbp]
+$LN1@stbi__addi:
+
+; 1105 : }
+
+ 000e8 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000ef 5f pop rdi
+ 000f0 5d pop rbp
+ 000f1 c3 ret 0
+stbi__addints_valid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__malloc_mad4
+_TEXT SEGMENT
+a$ = 224
+b$ = 232
+c$ = 240
+d$ = 248
+add$ = 256
+stbi__malloc_mad4 PROC ; COMDAT
+
+; 1088 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00012 55 push rbp
+ 00013 57 push rdi
+ 00014 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0001b 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00020 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002c 90 npad 1
+
+; 1089 : if (!stbi__mad4sizes_valid(a, b, c, d, add))
+
+ 0002d 8b 85 00 01 00
+ 00 mov eax, DWORD PTR add$[rbp]
+ 00033 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00037 44 8b 8d f8 00
+ 00 00 mov r9d, DWORD PTR d$[rbp]
+ 0003e 44 8b 85 f0 00
+ 00 00 mov r8d, DWORD PTR c$[rbp]
+ 00045 8b 95 e8 00 00
+ 00 mov edx, DWORD PTR b$[rbp]
+ 0004b 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00051 e8 00 00 00 00 call stbi__mad4sizes_valid
+ 00056 85 c0 test eax, eax
+ 00058 75 04 jne SHORT $LN2@stbi__mall
+
+; 1090 : return NULL;
+
+ 0005a 33 c0 xor eax, eax
+ 0005c eb 2b jmp SHORT $LN1@stbi__mall
+$LN2@stbi__mall:
+
+; 1091 : return stbi__malloc(a * b * c * d + add);
+
+ 0005e 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00064 0f af 85 e8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 0006b 0f af 85 f0 00
+ 00 00 imul eax, DWORD PTR c$[rbp]
+ 00072 0f af 85 f8 00
+ 00 00 imul eax, DWORD PTR d$[rbp]
+ 00079 03 85 00 01 00
+ 00 add eax, DWORD PTR add$[rbp]
+ 0007f 48 98 cdqe
+ 00081 48 8b c8 mov rcx, rax
+ 00084 e8 00 00 00 00 call stbi__malloc
+$LN1@stbi__mall:
+
+; 1092 : }
+
+ 00089 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00090 5f pop rdi
+ 00091 5d pop rbp
+ 00092 c3 ret 0
+stbi__malloc_mad4 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__malloc_mad3
+_TEXT SEGMENT
+a$ = 224
+b$ = 232
+c$ = 240
+add$ = 248
+stbi__malloc_mad3 PROC ; COMDAT
+
+; 1080 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00012 55 push rbp
+ 00013 57 push rdi
+ 00014 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0001b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00020 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002c 90 npad 1
+
+; 1081 : if (!stbi__mad3sizes_valid(a, b, c, add))
+
+ 0002d 44 8b 8d f8 00
+ 00 00 mov r9d, DWORD PTR add$[rbp]
+ 00034 44 8b 85 f0 00
+ 00 00 mov r8d, DWORD PTR c$[rbp]
+ 0003b 8b 95 e8 00 00
+ 00 mov edx, DWORD PTR b$[rbp]
+ 00041 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00047 e8 00 00 00 00 call stbi__mad3sizes_valid
+ 0004c 85 c0 test eax, eax
+ 0004e 75 04 jne SHORT $LN2@stbi__mall
+
+; 1082 : return NULL;
+
+ 00050 33 c0 xor eax, eax
+ 00052 eb 24 jmp SHORT $LN1@stbi__mall
+$LN2@stbi__mall:
+
+; 1083 : return stbi__malloc(a * b * c + add);
+
+ 00054 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 0005a 0f af 85 e8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 00061 0f af 85 f0 00
+ 00 00 imul eax, DWORD PTR c$[rbp]
+ 00068 03 85 f8 00 00
+ 00 add eax, DWORD PTR add$[rbp]
+ 0006e 48 98 cdqe
+ 00070 48 8b c8 mov rcx, rax
+ 00073 e8 00 00 00 00 call stbi__malloc
+$LN1@stbi__mall:
+
+; 1084 : }
+
+ 00078 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0007f 5f pop rdi
+ 00080 5d pop rbp
+ 00081 c3 ret 0
+stbi__malloc_mad3 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__malloc_mad2
+_TEXT SEGMENT
+a$ = 224
+b$ = 232
+add$ = 240
+stbi__malloc_mad2 PROC ; COMDAT
+
+; 1072 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000d 55 push rbp
+ 0000e 57 push rdi
+ 0000f 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00027 90 npad 1
+
+; 1073 : if (!stbi__mad2sizes_valid(a, b, add))
+
+ 00028 44 8b 85 f0 00
+ 00 00 mov r8d, DWORD PTR add$[rbp]
+ 0002f 8b 95 e8 00 00
+ 00 mov edx, DWORD PTR b$[rbp]
+ 00035 8b 8d e0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 0003b e8 00 00 00 00 call stbi__mad2sizes_valid
+ 00040 85 c0 test eax, eax
+ 00042 75 04 jne SHORT $LN2@stbi__mall
+
+; 1074 : return NULL;
+
+ 00044 33 c0 xor eax, eax
+ 00046 eb 1d jmp SHORT $LN1@stbi__mall
+$LN2@stbi__mall:
+
+; 1075 : return stbi__malloc(a * b + add);
+
+ 00048 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 0004e 0f af 85 e8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 00055 03 85 f0 00 00
+ 00 add eax, DWORD PTR add$[rbp]
+ 0005b 48 98 cdqe
+ 0005d 48 8b c8 mov rcx, rax
+ 00060 e8 00 00 00 00 call stbi__malloc
+$LN1@stbi__mall:
+
+; 1076 : }
+
+ 00065 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0006c 5f pop rdi
+ 0006d 5d pop rbp
+ 0006e c3 ret 0
+stbi__malloc_mad2 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__mad4sizes_valid
+_TEXT SEGMENT
+tv86 = 192
+a$ = 240
+b$ = 248
+c$ = 256
+d$ = 264
+add$ = 272
+stbi__mad4sizes_valid PROC ; COMDAT
+
+; 1062 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00012 55 push rbp
+ 00013 57 push rdi
+ 00014 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0001b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00020 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002c 90 npad 1
+
+; 1063 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) &&
+
+ 0002d 8b 95 f8 00 00
+ 00 mov edx, DWORD PTR b$[rbp]
+ 00033 8b 8d f0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00039 e8 00 00 00 00 call stbi__mul2sizes_valid
+ 0003e 85 c0 test eax, eax
+ 00040 74 7b je SHORT $LN3@stbi__mad4
+ 00042 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00048 0f af 85 f8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 0004f 8b 95 00 01 00
+ 00 mov edx, DWORD PTR c$[rbp]
+ 00055 8b c8 mov ecx, eax
+ 00057 e8 00 00 00 00 call stbi__mul2sizes_valid
+ 0005c 85 c0 test eax, eax
+ 0005e 74 5d je SHORT $LN3@stbi__mad4
+ 00060 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00066 0f af 85 f8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 0006d 0f af 85 00 01
+ 00 00 imul eax, DWORD PTR c$[rbp]
+ 00074 8b 95 08 01 00
+ 00 mov edx, DWORD PTR d$[rbp]
+ 0007a 8b c8 mov ecx, eax
+ 0007c e8 00 00 00 00 call stbi__mul2sizes_valid
+ 00081 85 c0 test eax, eax
+ 00083 74 38 je SHORT $LN3@stbi__mad4
+ 00085 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 0008b 0f af 85 f8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 00092 0f af 85 00 01
+ 00 00 imul eax, DWORD PTR c$[rbp]
+ 00099 0f af 85 08 01
+ 00 00 imul eax, DWORD PTR d$[rbp]
+ 000a0 8b 95 10 01 00
+ 00 mov edx, DWORD PTR add$[rbp]
+ 000a6 8b c8 mov ecx, eax
+ 000a8 e8 00 00 00 00 call stbi__addsizes_valid
+ 000ad 85 c0 test eax, eax
+ 000af 74 0c je SHORT $LN3@stbi__mad4
+ 000b1 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv86[rbp], 1
+ 000bb eb 0a jmp SHORT $LN4@stbi__mad4
+$LN3@stbi__mad4:
+ 000bd c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv86[rbp], 0
+$LN4@stbi__mad4:
+ 000c7 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv86[rbp]
+
+; 1064 : stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add);
+; 1065 : }
+
+ 000cd 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000d4 5f pop rdi
+ 000d5 5d pop rbp
+ 000d6 c3 ret 0
+stbi__mad4sizes_valid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__mad3sizes_valid
+_TEXT SEGMENT
+tv79 = 192
+a$ = 240
+b$ = 248
+c$ = 256
+add$ = 264
+stbi__mad3sizes_valid PROC ; COMDAT
+
+; 1054 : {
+
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00012 55 push rbp
+ 00013 57 push rdi
+ 00014 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0001b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00020 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002c 90 npad 1
+
+; 1055 : return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) &&
+
+ 0002d 8b 95 f8 00 00
+ 00 mov edx, DWORD PTR b$[rbp]
+ 00033 8b 8d f0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00039 e8 00 00 00 00 call stbi__mul2sizes_valid
+ 0003e 85 c0 test eax, eax
+ 00040 74 4f je SHORT $LN3@stbi__mad3
+ 00042 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00048 0f af 85 f8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 0004f 8b 95 00 01 00
+ 00 mov edx, DWORD PTR c$[rbp]
+ 00055 8b c8 mov ecx, eax
+ 00057 e8 00 00 00 00 call stbi__mul2sizes_valid
+ 0005c 85 c0 test eax, eax
+ 0005e 74 31 je SHORT $LN3@stbi__mad3
+ 00060 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00066 0f af 85 f8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 0006d 0f af 85 00 01
+ 00 00 imul eax, DWORD PTR c$[rbp]
+ 00074 8b 95 08 01 00
+ 00 mov edx, DWORD PTR add$[rbp]
+ 0007a 8b c8 mov ecx, eax
+ 0007c e8 00 00 00 00 call stbi__addsizes_valid
+ 00081 85 c0 test eax, eax
+ 00083 74 0c je SHORT $LN3@stbi__mad3
+ 00085 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv79[rbp], 1
+ 0008f eb 0a jmp SHORT $LN4@stbi__mad3
+$LN3@stbi__mad3:
+ 00091 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv79[rbp], 0
+$LN4@stbi__mad3:
+ 0009b 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv79[rbp]
+
+; 1056 : stbi__addsizes_valid(a * b * c, add);
+; 1057 : }
+
+ 000a1 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000a8 5f pop rdi
+ 000a9 5d pop rbp
+ 000aa c3 ret 0
+stbi__mad3sizes_valid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__mad2sizes_valid
+_TEXT SEGMENT
+tv73 = 192
+a$ = 240
+b$ = 248
+add$ = 256
+stbi__mad2sizes_valid PROC ; COMDAT
+
+; 1047 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 0000d 55 push rbp
+ 0000e 57 push rdi
+ 0000f 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00027 90 npad 1
+
+; 1048 : return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add);
+
+ 00028 8b 95 f8 00 00
+ 00 mov edx, DWORD PTR b$[rbp]
+ 0002e 8b 8d f0 00 00
+ 00 mov ecx, DWORD PTR a$[rbp]
+ 00034 e8 00 00 00 00 call stbi__mul2sizes_valid
+ 00039 85 c0 test eax, eax
+ 0003b 74 2a je SHORT $LN3@stbi__mad2
+ 0003d 8b 85 f0 00 00
+ 00 mov eax, DWORD PTR a$[rbp]
+ 00043 0f af 85 f8 00
+ 00 00 imul eax, DWORD PTR b$[rbp]
+ 0004a 8b 95 00 01 00
+ 00 mov edx, DWORD PTR add$[rbp]
+ 00050 8b c8 mov ecx, eax
+ 00052 e8 00 00 00 00 call stbi__addsizes_valid
+ 00057 85 c0 test eax, eax
+ 00059 74 0c je SHORT $LN3@stbi__mad2
+ 0005b c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv73[rbp], 1
+ 00065 eb 0a jmp SHORT $LN4@stbi__mad2
+$LN3@stbi__mad2:
+ 00067 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv73[rbp], 0
+$LN4@stbi__mad2:
+ 00071 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv73[rbp]
+
+; 1049 : }
+
+ 00077 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 0007e 5f pop rdi
+ 0007f 5d pop rbp
+ 00080 c3 ret 0
+stbi__mad2sizes_valid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__mul2sizes_valid
+_TEXT SEGMENT
+tv69 = 192
+a$ = 240
+b$ = 248
+stbi__mul2sizes_valid PROC ; COMDAT
+
+; 1034 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00008 55 push rbp
+ 00009 57 push rdi
+ 0000a 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00016 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00022 90 npad 1
+
+; 1035 : if (a < 0 || b < 0)
+
+ 00023 83 bd f0 00 00
+ 00 00 cmp DWORD PTR a$[rbp], 0
+ 0002a 7c 09 jl SHORT $LN3@stbi__mul2
+ 0002c 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 00033 7d 04 jge SHORT $LN2@stbi__mul2
+$LN3@stbi__mul2:
+
+; 1036 : return 0;
+
+ 00035 33 c0 xor eax, eax
+ 00037 eb 40 jmp SHORT $LN1@stbi__mul2
+$LN2@stbi__mul2:
+
+; 1037 : if (b == 0)
+
+ 00039 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 00040 75 07 jne SHORT $LN4@stbi__mul2
+
+; 1038 : return 1; // mul-by-0 is always safe
+
+ 00042 b8 01 00 00 00 mov eax, 1
+ 00047 eb 30 jmp SHORT $LN1@stbi__mul2
+$LN4@stbi__mul2:
+
+; 1039 : // portable way to check for no overflows in a*b
+; 1040 : return a <= INT_MAX / b;
+
+ 00049 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH
+ 0004e 99 cdq
+ 0004f f7 bd f8 00 00
+ 00 idiv DWORD PTR b$[rbp]
+ 00055 39 85 f0 00 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 0005b 7f 0c jg SHORT $LN6@stbi__mul2
+ 0005d c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv69[rbp], 1
+ 00067 eb 0a jmp SHORT $LN7@stbi__mul2
+$LN6@stbi__mul2:
+ 00069 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv69[rbp], 0
+$LN7@stbi__mul2:
+ 00073 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv69[rbp]
+$LN1@stbi__mul2:
+
+; 1041 : }
+
+ 00079 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 00080 5f pop rdi
+ 00081 5d pop rbp
+ 00082 c3 ret 0
+stbi__mul2sizes_valid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__addsizes_valid
+_TEXT SEGMENT
+tv67 = 192
+a$ = 240
+b$ = 248
+stbi__addsizes_valid PROC ; COMDAT
+
+; 1021 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00008 55 push rbp
+ 00009 57 push rdi
+ 0000a 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00011 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00016 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00022 90 npad 1
+
+; 1022 : if (b < 0)
+
+ 00023 83 bd f8 00 00
+ 00 00 cmp DWORD PTR b$[rbp], 0
+ 0002a 7d 04 jge SHORT $LN2@stbi__adds
+
+; 1023 : return 0;
+
+ 0002c 33 c0 xor eax, eax
+ 0002e eb 2f jmp SHORT $LN1@stbi__adds
+$LN2@stbi__adds:
+
+; 1024 : // now 0 <= b <= INT_MAX, hence also
+; 1025 : // 0 <= INT_MAX - b <= INTMAX.
+; 1026 : // And "a + b <= INT_MAX" (which might overflow) is the
+; 1027 : // same as a <= INT_MAX - b (no overflow)
+; 1028 : return a <= INT_MAX - b;
+
+ 00030 b8 ff ff ff 7f mov eax, 2147483647 ; 7fffffffH
+ 00035 2b 85 f8 00 00
+ 00 sub eax, DWORD PTR b$[rbp]
+ 0003b 39 85 f0 00 00
+ 00 cmp DWORD PTR a$[rbp], eax
+ 00041 7f 0c jg SHORT $LN4@stbi__adds
+ 00043 c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
+ 0004d eb 0a jmp SHORT $LN5@stbi__adds
+$LN4@stbi__adds:
+ 0004f c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
+$LN5@stbi__adds:
+ 00059 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv67[rbp]
+$LN1@stbi__adds:
+
+; 1029 : }
+
+ 0005f 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 00066 5f pop rdi
+ 00067 5d pop rbp
+ 00068 c3 ret 0
+stbi__addsizes_valid ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__malloc
+_TEXT SEGMENT
+size$ = 224
+stbi__malloc PROC ; COMDAT
+
+; 1004 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1005 : return STBI_MALLOC(size);
+
+ 00020 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR size$[rbp]
+ 00027 ff 15 00 00 00
+ 00 call QWORD PTR __imp_malloc
+
+; 1006 : }
+
+ 0002d 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00034 5f pop rdi
+ 00035 5d pop rbp
+ 00036 c3 ret 0
+stbi__malloc ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__err
+_TEXT SEGMENT
+str$ = 224
+stbi__err PROC ; COMDAT
+
+; 997 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 998 : stbi__g_failure_reason = str;
+
+ 00020 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__g_failure_reason
+ 00025 8b c0 mov eax, eax
+ 00027 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0002d 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00036 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 0003a 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR str$[rbp]
+ 00041 48 89 14 08 mov QWORD PTR [rax+rcx], rdx
+
+; 999 : return 0;
+
+ 00045 33 c0 xor eax, eax
+
+; 1000 : }
+
+ 00047 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0004e 5f pop rdi
+ 0004f 5d pop rbp
+ 00050 c3 ret 0
+stbi__err ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_is16
+_TEXT SEGMENT
+s$ = 224
+stbi__pnm_is16 PROC ; COMDAT
+
+; 8552 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 8553 : if (stbi__pnm_info(s, NULL, NULL, NULL) == 16)
+
+ 00020 45 33 c9 xor r9d, r9d
+ 00023 45 33 c0 xor r8d, r8d
+ 00026 33 d2 xor edx, edx
+ 00028 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002f e8 00 00 00 00 call stbi__pnm_info
+ 00034 83 f8 10 cmp eax, 16
+ 00037 75 07 jne SHORT $LN2@stbi__pnm_
+
+; 8554 : return 1;
+
+ 00039 b8 01 00 00 00 mov eax, 1
+ 0003e eb 02 jmp SHORT $LN1@stbi__pnm_
+$LN2@stbi__pnm_:
+
+; 8555 : return 0;
+
+ 00040 33 c0 xor eax, eax
+$LN1@stbi__pnm_:
+
+; 8556 : }
+
+ 00042 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00049 5f pop rdi
+ 0004a 5d pop rbp
+ 0004b c3 ret 0
+stbi__pnm_is16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_info
+_TEXT SEGMENT
+maxv$ = 4
+dummy$ = 36
+c$ = 68
+p$ = 100
+t$ = 132
+tv81 = 340
+__$ArrayPad$ = 344
+s$ = 384
+x$ = 392
+y$ = 400
+comp$ = 408
+stbi__pnm_info PROC ; COMDAT
+
+; 8505 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 88 01
+ 00 00 sub rsp, 392 ; 00000188H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 2a 00 00 00 mov ecx, 42 ; 0000002aH
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 a8
+ 01 00 00 mov rcx, QWORD PTR [rsp+424]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 58 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8506 : int maxv, dummy;
+; 8507 : char c, p, t;
+; 8508 :
+; 8509 : if (!x)
+
+ 00059 48 83 bd 88 01
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 00061 75 0b jne SHORT $LN2@stbi__pnm_
+
+; 8510 : x = &dummy;
+
+ 00063 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
+ 00067 48 89 85 88 01
+ 00 00 mov QWORD PTR x$[rbp], rax
+$LN2@stbi__pnm_:
+
+; 8511 : if (!y)
+
+ 0006e 48 83 bd 90 01
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 00076 75 0b jne SHORT $LN3@stbi__pnm_
+
+; 8512 : y = &dummy;
+
+ 00078 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
+ 0007c 48 89 85 90 01
+ 00 00 mov QWORD PTR y$[rbp], rax
+$LN3@stbi__pnm_:
+
+; 8513 : if (!comp)
+
+ 00083 48 83 bd 98 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 0008b 75 0b jne SHORT $LN4@stbi__pnm_
+
+; 8514 : comp = &dummy;
+
+ 0008d 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
+ 00091 48 89 85 98 01
+ 00 00 mov QWORD PTR comp$[rbp], rax
+$LN4@stbi__pnm_:
+
+; 8515 :
+; 8516 : stbi__rewind(s);
+
+ 00098 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0009f e8 00 00 00 00 call stbi__rewind
+ 000a4 90 npad 1
+
+; 8517 :
+; 8518 : // Get identifier
+; 8519 : p = (char)stbi__get8(s);
+
+ 000a5 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000ac e8 00 00 00 00 call stbi__get8
+ 000b1 88 45 64 mov BYTE PTR p$[rbp], al
+
+; 8520 : t = (char)stbi__get8(s);
+
+ 000b4 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000bb e8 00 00 00 00 call stbi__get8
+ 000c0 88 85 84 00 00
+ 00 mov BYTE PTR t$[rbp], al
+
+; 8521 : if (p != 'P' || (t != '5' && t != '6')) {
+
+ 000c6 0f be 45 64 movsx eax, BYTE PTR p$[rbp]
+ 000ca 83 f8 50 cmp eax, 80 ; 00000050H
+ 000cd 75 18 jne SHORT $LN6@stbi__pnm_
+ 000cf 0f be 85 84 00
+ 00 00 movsx eax, BYTE PTR t$[rbp]
+ 000d6 83 f8 35 cmp eax, 53 ; 00000035H
+ 000d9 74 20 je SHORT $LN5@stbi__pnm_
+ 000db 0f be 85 84 00
+ 00 00 movsx eax, BYTE PTR t$[rbp]
+ 000e2 83 f8 36 cmp eax, 54 ; 00000036H
+ 000e5 74 14 je SHORT $LN5@stbi__pnm_
+$LN6@stbi__pnm_:
+
+; 8522 : stbi__rewind(s);
+
+ 000e7 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000ee e8 00 00 00 00 call stbi__rewind
+ 000f3 90 npad 1
+
+; 8523 : return 0;
+
+ 000f4 33 c0 xor eax, eax
+ 000f6 e9 1f 01 00 00 jmp $LN1@stbi__pnm_
+$LN5@stbi__pnm_:
+
+; 8524 : }
+; 8525 :
+; 8526 : *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm
+
+ 000fb 0f be 85 84 00
+ 00 00 movsx eax, BYTE PTR t$[rbp]
+ 00102 83 f8 36 cmp eax, 54 ; 00000036H
+ 00105 75 0c jne SHORT $LN14@stbi__pnm_
+ 00107 c7 85 54 01 00
+ 00 03 00 00 00 mov DWORD PTR tv81[rbp], 3
+ 00111 eb 0a jmp SHORT $LN15@stbi__pnm_
+$LN14@stbi__pnm_:
+ 00113 c7 85 54 01 00
+ 00 01 00 00 00 mov DWORD PTR tv81[rbp], 1
+$LN15@stbi__pnm_:
+ 0011d 48 8b 85 98 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00124 8b 8d 54 01 00
+ 00 mov ecx, DWORD PTR tv81[rbp]
+ 0012a 89 08 mov DWORD PTR [rax], ecx
+
+; 8527 :
+; 8528 : c = (char)stbi__get8(s);
+
+ 0012c 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00133 e8 00 00 00 00 call stbi__get8
+ 00138 88 45 44 mov BYTE PTR c$[rbp], al
+
+; 8529 : stbi__pnm_skip_whitespace(s, &c);
+
+ 0013b 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
+ 0013f 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00146 e8 00 00 00 00 call stbi__pnm_skip_whitespace
+ 0014b 90 npad 1
+
+; 8530 :
+; 8531 : *x = stbi__pnm_getinteger(s, &c); // read width
+
+ 0014c 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
+ 00150 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00157 e8 00 00 00 00 call stbi__pnm_getinteger
+ 0015c 48 8b 8d 88 01
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 00163 89 01 mov DWORD PTR [rcx], eax
+
+; 8532 : if (*x == 0)
+
+ 00165 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 0016c 83 38 00 cmp DWORD PTR [rax], 0
+ 0016f 75 11 jne SHORT $LN7@stbi__pnm_
+
+; 8533 : return stbi__err("invalid width", "PPM image header had zero or overflowing width");
+
+ 00171 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@MKGNGALN@invalid?5width@
+ 00178 e8 00 00 00 00 call stbi__err
+ 0017d e9 98 00 00 00 jmp $LN1@stbi__pnm_
+$LN7@stbi__pnm_:
+
+; 8534 : stbi__pnm_skip_whitespace(s, &c);
+
+ 00182 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
+ 00186 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0018d e8 00 00 00 00 call stbi__pnm_skip_whitespace
+ 00192 90 npad 1
+
+; 8535 :
+; 8536 : *y = stbi__pnm_getinteger(s, &c); // read height
+
+ 00193 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
+ 00197 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0019e e8 00 00 00 00 call stbi__pnm_getinteger
+ 001a3 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 001aa 89 01 mov DWORD PTR [rcx], eax
+
+; 8537 : if (*y == 0)
+
+ 001ac 48 8b 85 90 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 001b3 83 38 00 cmp DWORD PTR [rax], 0
+ 001b6 75 0e jne SHORT $LN8@stbi__pnm_
+
+; 8538 : return stbi__err("invalid width", "PPM image header had zero or overflowing width");
+
+ 001b8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@MKGNGALN@invalid?5width@
+ 001bf e8 00 00 00 00 call stbi__err
+ 001c4 eb 54 jmp SHORT $LN1@stbi__pnm_
+$LN8@stbi__pnm_:
+
+; 8539 : stbi__pnm_skip_whitespace(s, &c);
+
+ 001c6 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
+ 001ca 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001d1 e8 00 00 00 00 call stbi__pnm_skip_whitespace
+ 001d6 90 npad 1
+
+; 8540 :
+; 8541 : maxv = stbi__pnm_getinteger(s, &c); // read max value
+
+ 001d7 48 8d 55 44 lea rdx, QWORD PTR c$[rbp]
+ 001db 48 8b 8d 80 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001e2 e8 00 00 00 00 call stbi__pnm_getinteger
+ 001e7 89 45 04 mov DWORD PTR maxv$[rbp], eax
+
+; 8542 : if (maxv > 65535)
+
+ 001ea 81 7d 04 ff ff
+ 00 00 cmp DWORD PTR maxv$[rbp], 65535 ; 0000ffffH
+ 001f1 7e 10 jle SHORT $LN9@stbi__pnm_
+
+; 8543 : return stbi__err("max value > 65535",
+
+ 001f3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@
+ 001fa e8 00 00 00 00 call stbi__err
+ 001ff eb 19 jmp SHORT $LN1@stbi__pnm_
+ 00201 eb 17 jmp SHORT $LN10@stbi__pnm_
+$LN9@stbi__pnm_:
+
+; 8544 : "PPM image supports only 8-bit and 16-bit images");
+; 8545 : else if (maxv > 255)
+
+ 00203 81 7d 04 ff 00
+ 00 00 cmp DWORD PTR maxv$[rbp], 255 ; 000000ffH
+ 0020a 7e 09 jle SHORT $LN11@stbi__pnm_
+
+; 8546 : return 16;
+
+ 0020c b8 10 00 00 00 mov eax, 16
+ 00211 eb 07 jmp SHORT $LN1@stbi__pnm_
+ 00213 eb 05 jmp SHORT $LN12@stbi__pnm_
+$LN11@stbi__pnm_:
+
+; 8547 : else
+; 8548 : return 8;
+
+ 00215 b8 08 00 00 00 mov eax, 8
+$LN12@stbi__pnm_:
+$LN10@stbi__pnm_:
+$LN1@stbi__pnm_:
+
+; 8549 : }
+
+ 0021a 48 8b f8 mov rdi, rax
+ 0021d 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00221 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__pnm_info$rtcFrameData
+ 00228 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0022d 48 8b c7 mov rax, rdi
+ 00230 48 8b 8d 58 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00237 48 33 cd xor rcx, rbp
+ 0023a e8 00 00 00 00 call __security_check_cookie
+ 0023f 48 8d a5 68 01
+ 00 00 lea rsp, QWORD PTR [rbp+360]
+ 00246 5f pop rdi
+ 00247 5d pop rbp
+ 00248 c3 ret 0
+stbi__pnm_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_load
+_TEXT SEGMENT
+out$ = 8
+tv160 = 212
+tv80 = 216
+tv86 = 216
+tv138 = 216
+tv154 = 216
+tv172 = 216
+s$ = 256
+x$ = 264
+y$ = 272
+comp$ = 280
+req_comp$ = 288
+ri$ = 296
+stbi__pnm_load PROC ; COMDAT
+
+; 8420 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 18 01
+ 00 00 sub rsp, 280 ; 00000118H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 8421 : stbi_uc *out;
+; 8422 : STBI_NOTUSED(ri);
+; 8423 :
+; 8424 : ri->bits_per_channel =
+
+ 0002f 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00036 48 83 c0 08 add rax, 8
+ 0003a 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00041 48 83 c1 04 add rcx, 4
+ 00045 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR s$[rbp]
+ 0004c 4c 8b c8 mov r9, rax
+ 0004f 4c 8b c1 mov r8, rcx
+ 00052 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00059 e8 00 00 00 00 call stbi__pnm_info
+ 0005e 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR ri$[rbp]
+ 00065 89 01 mov DWORD PTR [rcx], eax
+
+; 8425 : stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n);
+; 8426 : if (ri->bits_per_channel == 0)
+
+ 00067 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 0006e 83 38 00 cmp DWORD PTR [rax], 0
+ 00071 75 07 jne SHORT $LN2@stbi__pnm_
+
+; 8427 : return 0;
+
+ 00073 33 c0 xor eax, eax
+ 00075 e9 06 03 00 00 jmp $LN1@stbi__pnm_
+$LN2@stbi__pnm_:
+
+; 8428 :
+; 8429 : if (s->img_y > STBI_MAX_DIMENSIONS)
+
+ 0007a 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00081 81 78 04 00 00
+ 00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
+ 00088 76 34 jbe SHORT $LN3@stbi__pnm_
+
+; 8430 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 0008a 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00091 e8 00 00 00 00 call stbi__err
+ 00096 85 c0 test eax, eax
+ 00098 74 0d je SHORT $LN14@stbi__pnm_
+ 0009a 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv80[rbp], 0
+ 000a5 eb 0b jmp SHORT $LN15@stbi__pnm_
+$LN14@stbi__pnm_:
+ 000a7 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv80[rbp], 0
+$LN15@stbi__pnm_:
+ 000b2 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv80[rbp]
+ 000b9 e9 c2 02 00 00 jmp $LN1@stbi__pnm_
+$LN3@stbi__pnm_:
+
+; 8431 : if (s->img_x > STBI_MAX_DIMENSIONS)
+
+ 000be 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000c5 81 38 00 00 00
+ 01 cmp DWORD PTR [rax], 16777216 ; 01000000H
+ 000cb 76 34 jbe SHORT $LN4@stbi__pnm_
+
+; 8432 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 000cd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 000d4 e8 00 00 00 00 call stbi__err
+ 000d9 85 c0 test eax, eax
+ 000db 74 0d je SHORT $LN16@stbi__pnm_
+ 000dd 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv86[rbp], 0
+ 000e8 eb 0b jmp SHORT $LN17@stbi__pnm_
+$LN16@stbi__pnm_:
+ 000ea 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv86[rbp], 0
+$LN17@stbi__pnm_:
+ 000f5 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv86[rbp]
+ 000fc e9 7f 02 00 00 jmp $LN1@stbi__pnm_
+$LN4@stbi__pnm_:
+
+; 8433 :
+; 8434 : *x = s->img_x;
+
+ 00101 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00108 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0010f 8b 09 mov ecx, DWORD PTR [rcx]
+ 00111 89 08 mov DWORD PTR [rax], ecx
+
+; 8435 : *y = s->img_y;
+
+ 00113 48 8b 85 10 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 0011a 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00121 8b 49 04 mov ecx, DWORD PTR [rcx+4]
+ 00124 89 08 mov DWORD PTR [rax], ecx
+
+; 8436 : if (comp)
+
+ 00126 48 83 bd 18 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 0012e 74 13 je SHORT $LN5@stbi__pnm_
+
+; 8437 : *comp = s->img_n;
+
+ 00130 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00137 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0013e 8b 49 08 mov ecx, DWORD PTR [rcx+8]
+ 00141 89 08 mov DWORD PTR [rax], ecx
+$LN5@stbi__pnm_:
+
+; 8438 :
+; 8439 : if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0))
+
+ 00143 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 0014a 8b 00 mov eax, DWORD PTR [rax]
+ 0014c 99 cdq
+ 0014d 83 e2 07 and edx, 7
+ 00150 03 c2 add eax, edx
+ 00152 c1 f8 03 sar eax, 3
+ 00155 c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 0015d 44 8b c8 mov r9d, eax
+ 00160 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00167 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
+ 0016b 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00172 8b 10 mov edx, DWORD PTR [rax]
+ 00174 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0017b 8b 48 08 mov ecx, DWORD PTR [rax+8]
+ 0017e e8 00 00 00 00 call stbi__mad4sizes_valid
+ 00183 85 c0 test eax, eax
+ 00185 75 34 jne SHORT $LN6@stbi__pnm_
+
+; 8440 : return stbi__errpuc("too large", "PNM too large");
+
+ 00187 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 0018e e8 00 00 00 00 call stbi__err
+ 00193 85 c0 test eax, eax
+ 00195 74 0d je SHORT $LN18@stbi__pnm_
+ 00197 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv138[rbp], 0
+ 001a2 eb 0b jmp SHORT $LN19@stbi__pnm_
+$LN18@stbi__pnm_:
+ 001a4 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv138[rbp], 0
+$LN19@stbi__pnm_:
+ 001af 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv138[rbp]
+ 001b6 e9 c5 01 00 00 jmp $LN1@stbi__pnm_
+$LN6@stbi__pnm_:
+
+; 8441 :
+; 8442 : out = (stbi_uc *)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8,
+
+ 001bb 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 001c2 8b 00 mov eax, DWORD PTR [rax]
+ 001c4 99 cdq
+ 001c5 83 e2 07 and edx, 7
+ 001c8 03 c2 add eax, edx
+ 001ca c1 f8 03 sar eax, 3
+ 001cd c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 001d5 44 8b c8 mov r9d, eax
+ 001d8 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 001df 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
+ 001e3 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 001ea 8b 10 mov edx, DWORD PTR [rax]
+ 001ec 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 001f3 8b 48 08 mov ecx, DWORD PTR [rax+8]
+ 001f6 e8 00 00 00 00 call stbi__malloc_mad4
+ 001fb 48 89 45 08 mov QWORD PTR out$[rbp], rax
+
+; 8443 : 0);
+; 8444 : if (!out)
+
+ 001ff 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
+ 00204 75 34 jne SHORT $LN7@stbi__pnm_
+
+; 8445 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 00206 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0020d e8 00 00 00 00 call stbi__err
+ 00212 85 c0 test eax, eax
+ 00214 74 0d je SHORT $LN20@stbi__pnm_
+ 00216 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv154[rbp], 0
+ 00221 eb 0b jmp SHORT $LN21@stbi__pnm_
+$LN20@stbi__pnm_:
+ 00223 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv154[rbp], 0
+$LN21@stbi__pnm_:
+ 0022e 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv154[rbp]
+ 00235 e9 46 01 00 00 jmp $LN1@stbi__pnm_
+$LN7@stbi__pnm_:
+
+; 8446 : if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) {
+
+ 0023a 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00241 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00248 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 0024b 0f af 01 imul eax, DWORD PTR [rcx]
+ 0024e 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00255 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 00259 89 85 d4 00 00
+ 00 mov DWORD PTR tv160[rbp], eax
+ 0025f 48 8b 8d 28 01
+ 00 00 mov rcx, QWORD PTR ri$[rbp]
+ 00266 8b 01 mov eax, DWORD PTR [rcx]
+ 00268 99 cdq
+ 00269 83 e2 07 and edx, 7
+ 0026c 03 c2 add eax, edx
+ 0026e c1 f8 03 sar eax, 3
+ 00271 8b 8d d4 00 00
+ 00 mov ecx, DWORD PTR tv160[rbp]
+ 00277 0f af c8 imul ecx, eax
+ 0027a 8b c1 mov eax, ecx
+ 0027c 44 8b c0 mov r8d, eax
+ 0027f 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 00283 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0028a e8 00 00 00 00 call stbi__getn
+ 0028f 85 c0 test eax, eax
+ 00291 75 3f jne SHORT $LN8@stbi__pnm_
+
+; 8447 : STBI_FREE(out);
+
+ 00293 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00297 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0029d 90 npad 1
+
+; 8448 : return stbi__errpuc("bad PNM", "PNM file truncated");
+
+ 0029e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07IDKIDMGJ@bad?5PNM@
+ 002a5 e8 00 00 00 00 call stbi__err
+ 002aa 85 c0 test eax, eax
+ 002ac 74 0d je SHORT $LN22@stbi__pnm_
+ 002ae 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv172[rbp], 0
+ 002b9 eb 0b jmp SHORT $LN23@stbi__pnm_
+$LN22@stbi__pnm_:
+ 002bb 48 c7 85 d8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv172[rbp], 0
+$LN23@stbi__pnm_:
+ 002c6 48 8b 85 d8 00
+ 00 00 mov rax, QWORD PTR tv172[rbp]
+ 002cd e9 ae 00 00 00 jmp $LN1@stbi__pnm_
+$LN8@stbi__pnm_:
+
+; 8449 : }
+; 8450 :
+; 8451 : if (req_comp && req_comp != s->img_n) {
+
+ 002d2 83 bd 20 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 002d9 0f 84 9d 00 00
+ 00 je $LN9@stbi__pnm_
+ 002df 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 002e6 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 002e9 39 85 20 01 00
+ 00 cmp DWORD PTR req_comp$[rbp], eax
+ 002ef 0f 84 87 00 00
+ 00 je $LN9@stbi__pnm_
+
+; 8452 : if (ri->bits_per_channel == 16) {
+
+ 002f5 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 002fc 83 38 10 cmp DWORD PTR [rax], 16
+ 002ff 75 38 jne SHORT $LN10@stbi__pnm_
+
+; 8453 : out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, s->img_n,
+
+ 00301 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00308 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 0030b 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0030f 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00316 44 8b 08 mov r9d, DWORD PTR [rax]
+ 00319 44 8b 85 20 01
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00320 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00327 8b 50 08 mov edx, DWORD PTR [rax+8]
+ 0032a 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 0032e e8 00 00 00 00 call stbi__convert_format16
+ 00333 48 89 45 08 mov QWORD PTR out$[rbp], rax
+
+; 8454 : req_comp, s->img_x, s->img_y);
+; 8455 : } else {
+
+ 00337 eb 36 jmp SHORT $LN11@stbi__pnm_
+$LN10@stbi__pnm_:
+
+; 8456 : out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);
+
+ 00339 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00340 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 00343 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00347 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0034e 44 8b 08 mov r9d, DWORD PTR [rax]
+ 00351 44 8b 85 20 01
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00358 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0035f 8b 50 08 mov edx, DWORD PTR [rax+8]
+ 00362 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00366 e8 00 00 00 00 call stbi__convert_format
+ 0036b 48 89 45 08 mov QWORD PTR out$[rbp], rax
+$LN11@stbi__pnm_:
+
+; 8457 : }
+; 8458 : if (out == NULL)
+
+ 0036f 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
+ 00374 75 06 jne SHORT $LN12@stbi__pnm_
+
+; 8459 : return out; // stbi__convert_format frees input on failure
+
+ 00376 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
+ 0037a eb 04 jmp SHORT $LN1@stbi__pnm_
+$LN12@stbi__pnm_:
+$LN9@stbi__pnm_:
+
+; 8460 : }
+; 8461 : return out;
+
+ 0037c 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
+$LN1@stbi__pnm_:
+
+; 8462 : }
+
+ 00380 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00387 5f pop rdi
+ 00388 5d pop rbp
+ 00389 c3 ret 0
+stbi__pnm_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pnm_test
+_TEXT SEGMENT
+p$ = 4
+t$ = 36
+s$ = 288
+stbi__pnm_test PROC ; COMDAT
+
+; 8407 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 8408 : char p, t;
+; 8409 : p = (char)stbi__get8(s);
+
+ 00020 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get8
+ 0002c 88 45 04 mov BYTE PTR p$[rbp], al
+
+; 8410 : t = (char)stbi__get8(s);
+
+ 0002f 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__get8
+ 0003b 88 45 24 mov BYTE PTR t$[rbp], al
+
+; 8411 : if (p != 'P' || (t != '5' && t != '6')) {
+
+ 0003e 0f be 45 04 movsx eax, BYTE PTR p$[rbp]
+ 00042 83 f8 50 cmp eax, 80 ; 00000050H
+ 00045 75 12 jne SHORT $LN3@stbi__pnm_
+ 00047 0f be 45 24 movsx eax, BYTE PTR t$[rbp]
+ 0004b 83 f8 35 cmp eax, 53 ; 00000035H
+ 0004e 74 1a je SHORT $LN2@stbi__pnm_
+ 00050 0f be 45 24 movsx eax, BYTE PTR t$[rbp]
+ 00054 83 f8 36 cmp eax, 54 ; 00000036H
+ 00057 74 11 je SHORT $LN2@stbi__pnm_
+$LN3@stbi__pnm_:
+
+; 8412 : stbi__rewind(s);
+
+ 00059 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00060 e8 00 00 00 00 call stbi__rewind
+ 00065 90 npad 1
+
+; 8413 : return 0;
+
+ 00066 33 c0 xor eax, eax
+ 00068 eb 05 jmp SHORT $LN1@stbi__pnm_
+$LN2@stbi__pnm_:
+
+; 8414 : }
+; 8415 : return 1;
+
+ 0006a b8 01 00 00 00 mov eax, 1
+$LN1@stbi__pnm_:
+
+; 8416 : }
+
+ 0006f 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00076 5f pop rdi
+ 00077 5d pop rbp
+ 00078 c3 ret 0
+stbi__pnm_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_info
+_TEXT SEGMENT
+s$ = 224
+x$ = 232
+y$ = 240
+comp$ = 248
+stbi__gif_info PROC ; COMDAT
+
+; 7942 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 7943 : return stbi__gif_info_raw(s, x, y, comp);
+
+ 0002f 4c 8b 8d f8 00
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00036 4c 8b 85 f0 00
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0003d 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00044 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004b e8 00 00 00 00 call stbi__gif_info_raw
+
+; 7944 : }
+
+ 00050 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00057 5f pop rdi
+ 00058 5d pop rbp
+ 00059 c3 ret 0
+stbi__gif_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__load_gif_main
+_TEXT SEGMENT
+layers$4 = 4
+u$5 = 40
+out$6 = 72
+two_back$7 = 104
+g$8 = 144
+stride$9 = 35092
+out_size$10 = 35124
+delays_size$11 = 35156
+tmp$12 = 35192
+new_delays$13 = 35224
+tv137 = 36776
+tv211 = 36776
+__$ArrayPad$ = 36784
+s$ = 36832
+delays$ = 36840
+x$ = 36848
+y$ = 36856
+z$ = 36864
+comp$ = 36872
+req_comp$ = 36880
+stbi__load_gif_main PROC ; COMDAT
+
+; 7819 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 b8 f8 8f 00 00 mov eax, 36856 ; 00008ff8H
+ 0001b e8 00 00 00 00 call __chkstk
+ 00020 48 2b e0 sub rsp, rax
+ 00023 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00028 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 0002d b9 72 22 00 00 mov ecx, 8818 ; 00002272H
+ 00032 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00037 f3 ab rep stosd
+ 00039 48 8b 8c 24 18
+ 90 00 00 mov rcx, QWORD PTR [rsp+36888]
+ 00041 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00048 48 33 c5 xor rax, rbp
+ 0004b 48 89 85 b0 8f
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00052 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00059 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0005e 90 npad 1
+
+; 7820 : if (stbi__gif_test(s)) {
+
+ 0005f 48 8b 8d e0 8f
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00066 e8 00 00 00 00 call stbi__gif_test
+ 0006b 85 c0 test eax, eax
+ 0006d 0f 84 9a 03 00
+ 00 je $LN5@stbi__load
+
+; 7821 : int layers = 0;
+
+ 00073 c7 45 04 00 00
+ 00 00 mov DWORD PTR layers$4[rbp], 0
+
+; 7822 : stbi_uc *u = 0;
+
+ 0007a 48 c7 45 28 00
+ 00 00 00 mov QWORD PTR u$5[rbp], 0
+
+; 7823 : stbi_uc *out = 0;
+
+ 00082 48 c7 45 48 00
+ 00 00 00 mov QWORD PTR out$6[rbp], 0
+
+; 7824 : stbi_uc *two_back = 0;
+
+ 0008a 48 c7 45 68 00
+ 00 00 00 mov QWORD PTR two_back$7[rbp], 0
+
+; 7825 : stbi__gif g;
+; 7826 : int stride;
+; 7827 : int out_size = 0;
+
+ 00092 c7 85 34 89 00
+ 00 00 00 00 00 mov DWORD PTR out_size$10[rbp], 0
+
+; 7828 : int delays_size = 0;
+
+ 0009c c7 85 54 89 00
+ 00 00 00 00 00 mov DWORD PTR delays_size$11[rbp], 0
+
+; 7829 :
+; 7830 : STBI_NOTUSED(out_size);
+; 7831 : STBI_NOTUSED(delays_size);
+; 7832 :
+; 7833 : memset(&g, 0, sizeof(g));
+
+ 000a6 41 b8 70 88 00
+ 00 mov r8d, 34928 ; 00008870H
+ 000ac 33 d2 xor edx, edx
+ 000ae 48 8d 8d 90 00
+ 00 00 lea rcx, QWORD PTR g$8[rbp]
+ 000b5 e8 00 00 00 00 call memset
+ 000ba 90 npad 1
+
+; 7834 : if (delays) {
+
+ 000bb 48 83 bd e8 8f
+ 00 00 00 cmp QWORD PTR delays$[rbp], 0
+ 000c3 74 0e je SHORT $LN7@stbi__load
+
+; 7835 : *delays = 0;
+
+ 000c5 48 8b 85 e8 8f
+ 00 00 mov rax, QWORD PTR delays$[rbp]
+ 000cc 48 c7 00 00 00
+ 00 00 mov QWORD PTR [rax], 0
+$LN7@stbi__load:
+$LN4@stbi__load:
+
+; 7836 : }
+; 7837 :
+; 7838 : do {
+; 7839 : u = stbi__gif_load_next(s, &g, comp, req_comp, two_back);
+
+ 000d3 48 8b 45 68 mov rax, QWORD PTR two_back$7[rbp]
+ 000d7 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 000dc 44 8b 8d 10 90
+ 00 00 mov r9d, DWORD PTR req_comp$[rbp]
+ 000e3 4c 8b 85 08 90
+ 00 00 mov r8, QWORD PTR comp$[rbp]
+ 000ea 48 8d 95 90 00
+ 00 00 lea rdx, QWORD PTR g$8[rbp]
+ 000f1 48 8b 8d e0 8f
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000f8 e8 00 00 00 00 call stbi__gif_load_next
+ 000fd 48 89 45 28 mov QWORD PTR u$5[rbp], rax
+
+; 7840 : if (u == (stbi_uc *)s)
+
+ 00101 48 8b 85 e0 8f
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00108 48 39 45 28 cmp QWORD PTR u$5[rbp], rax
+ 0010c 75 08 jne SHORT $LN8@stbi__load
+
+; 7841 : u = 0; // end of animated gif marker
+
+ 0010e 48 c7 45 28 00
+ 00 00 00 mov QWORD PTR u$5[rbp], 0
+$LN8@stbi__load:
+
+; 7842 :
+; 7843 : if (u) {
+
+ 00116 48 83 7d 28 00 cmp QWORD PTR u$5[rbp], 0
+ 0011b 0f 84 61 02 00
+ 00 je $LN9@stbi__load
+
+; 7844 : *x = g.w;
+
+ 00121 48 8b 85 f0 8f
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00128 8b 8d 90 00 00
+ 00 mov ecx, DWORD PTR g$8[rbp]
+ 0012e 89 08 mov DWORD PTR [rax], ecx
+
+; 7845 : *y = g.h;
+
+ 00130 48 8b 85 f8 8f
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 00137 8b 8d 94 00 00
+ 00 mov ecx, DWORD PTR g$8[rbp+4]
+ 0013d 89 08 mov DWORD PTR [rax], ecx
+
+; 7846 : ++layers;
+
+ 0013f 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
+ 00142 ff c0 inc eax
+ 00144 89 45 04 mov DWORD PTR layers$4[rbp], eax
+
+; 7847 : stride = g.w * g.h * 4;
+
+ 00147 8b 85 90 00 00
+ 00 mov eax, DWORD PTR g$8[rbp]
+ 0014d 0f af 85 94 00
+ 00 00 imul eax, DWORD PTR g$8[rbp+4]
+ 00154 c1 e0 02 shl eax, 2
+ 00157 89 85 14 89 00
+ 00 mov DWORD PTR stride$9[rbp], eax
+
+; 7848 :
+; 7849 : if (out) {
+
+ 0015d 48 83 7d 48 00 cmp QWORD PTR out$6[rbp], 0
+ 00162 0f 84 05 01 00
+ 00 je $LN10@stbi__load
+
+; 7850 : void *tmp = (stbi_uc *)STBI_REALLOC_SIZED(out, out_size,
+
+ 00168 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
+ 0016b 0f af 85 14 89
+ 00 00 imul eax, DWORD PTR stride$9[rbp]
+ 00172 48 98 cdqe
+ 00174 48 c7 c1 ff ff
+ ff ff mov rcx, -1
+ 0017b 48 0f 40 c1 cmovo rax, rcx
+ 0017f 48 8b d0 mov rdx, rax
+ 00182 48 8b 4d 48 mov rcx, QWORD PTR out$6[rbp]
+ 00186 ff 15 00 00 00
+ 00 call QWORD PTR __imp_realloc
+ 0018c 48 89 85 78 89
+ 00 00 mov QWORD PTR tmp$12[rbp], rax
+
+; 7851 : layers * stride);
+; 7852 : if (!tmp)
+
+ 00193 48 83 bd 78 89
+ 00 00 00 cmp QWORD PTR tmp$12[rbp], 0
+ 0019b 75 1e jne SHORT $LN12@stbi__load
+
+; 7853 : return stbi__load_gif_main_outofmem(&g, out,
+
+ 0019d 4c 8b 85 e8 8f
+ 00 00 mov r8, QWORD PTR delays$[rbp]
+ 001a4 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
+ 001a8 48 8d 8d 90 00
+ 00 00 lea rcx, QWORD PTR g$8[rbp]
+ 001af e8 00 00 00 00 call stbi__load_gif_main_outofmem
+ 001b4 e9 83 02 00 00 jmp $LN1@stbi__load
+ 001b9 eb 1b jmp SHORT $LN13@stbi__load
+$LN12@stbi__load:
+
+; 7854 : delays);
+; 7855 : else {
+; 7856 : out = (stbi_uc *)tmp;
+
+ 001bb 48 8b 85 78 89
+ 00 00 mov rax, QWORD PTR tmp$12[rbp]
+ 001c2 48 89 45 48 mov QWORD PTR out$6[rbp], rax
+
+; 7857 : out_size = layers * stride;
+
+ 001c6 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
+ 001c9 0f af 85 14 89
+ 00 00 imul eax, DWORD PTR stride$9[rbp]
+ 001d0 89 85 34 89 00
+ 00 mov DWORD PTR out_size$10[rbp], eax
+$LN13@stbi__load:
+
+; 7858 : }
+; 7859 :
+; 7860 : if (delays) {
+
+ 001d6 48 83 bd e8 8f
+ 00 00 00 cmp QWORD PTR delays$[rbp], 0
+ 001de 0f 84 84 00 00
+ 00 je $LN14@stbi__load
+
+; 7861 : int *new_delays = (int *)STBI_REALLOC_SIZED(
+
+ 001e4 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
+ 001e8 48 89 85 a8 8f
+ 00 00 mov QWORD PTR tv137[rbp], rax
+ 001ef b8 04 00 00 00 mov eax, 4
+ 001f4 48 8b 8d a8 8f
+ 00 00 mov rcx, QWORD PTR tv137[rbp]
+ 001fb 48 f7 e1 mul rcx
+ 001fe 48 c7 c1 ff ff
+ ff ff mov rcx, -1
+ 00205 48 0f 42 c1 cmovb rax, rcx
+ 00209 48 8b d0 mov rdx, rax
+ 0020c 48 8b 85 e8 8f
+ 00 00 mov rax, QWORD PTR delays$[rbp]
+ 00213 48 8b 08 mov rcx, QWORD PTR [rax]
+ 00216 ff 15 00 00 00
+ 00 call QWORD PTR __imp_realloc
+ 0021c 48 89 85 98 89
+ 00 00 mov QWORD PTR new_delays$13[rbp], rax
+
+; 7862 : *delays, delays_size, sizeof(int) * layers);
+; 7863 : if (!new_delays)
+
+ 00223 48 83 bd 98 89
+ 00 00 00 cmp QWORD PTR new_delays$13[rbp], 0
+ 0022b 75 1c jne SHORT $LN15@stbi__load
+
+; 7864 : return stbi__load_gif_main_outofmem(&g, out,
+
+ 0022d 4c 8b 85 e8 8f
+ 00 00 mov r8, QWORD PTR delays$[rbp]
+ 00234 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
+ 00238 48 8d 8d 90 00
+ 00 00 lea rcx, QWORD PTR g$8[rbp]
+ 0023f e8 00 00 00 00 call stbi__load_gif_main_outofmem
+ 00244 e9 f3 01 00 00 jmp $LN1@stbi__load
+$LN15@stbi__load:
+
+; 7865 : delays);
+; 7866 : *delays = new_delays;
+
+ 00249 48 8b 85 e8 8f
+ 00 00 mov rax, QWORD PTR delays$[rbp]
+ 00250 48 8b 8d 98 89
+ 00 00 mov rcx, QWORD PTR new_delays$13[rbp]
+ 00257 48 89 08 mov QWORD PTR [rax], rcx
+
+; 7867 : delays_size = layers * sizeof(int);
+
+ 0025a 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
+ 0025e 48 c1 e0 02 shl rax, 2
+ 00262 89 85 54 89 00
+ 00 mov DWORD PTR delays_size$11[rbp], eax
+$LN14@stbi__load:
+
+; 7868 : }
+; 7869 : } else {
+
+ 00268 e9 a6 00 00 00 jmp $LN11@stbi__load
+$LN10@stbi__load:
+
+; 7870 : out = (stbi_uc *)stbi__malloc(layers * stride);
+
+ 0026d 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
+ 00270 0f af 85 14 89
+ 00 00 imul eax, DWORD PTR stride$9[rbp]
+ 00277 48 98 cdqe
+ 00279 48 8b c8 mov rcx, rax
+ 0027c e8 00 00 00 00 call stbi__malloc
+ 00281 48 89 45 48 mov QWORD PTR out$6[rbp], rax
+
+; 7871 : if (!out)
+
+ 00285 48 83 7d 48 00 cmp QWORD PTR out$6[rbp], 0
+ 0028a 75 1c jne SHORT $LN16@stbi__load
+
+; 7872 : return stbi__load_gif_main_outofmem(&g, out,
+
+ 0028c 4c 8b 85 e8 8f
+ 00 00 mov r8, QWORD PTR delays$[rbp]
+ 00293 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
+ 00297 48 8d 8d 90 00
+ 00 00 lea rcx, QWORD PTR g$8[rbp]
+ 0029e e8 00 00 00 00 call stbi__load_gif_main_outofmem
+ 002a3 e9 94 01 00 00 jmp $LN1@stbi__load
+$LN16@stbi__load:
+
+; 7873 : delays);
+; 7874 : out_size = layers * stride;
+
+ 002a8 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
+ 002ab 0f af 85 14 89
+ 00 00 imul eax, DWORD PTR stride$9[rbp]
+ 002b2 89 85 34 89 00
+ 00 mov DWORD PTR out_size$10[rbp], eax
+
+; 7875 : if (delays) {
+
+ 002b8 48 83 bd e8 8f
+ 00 00 00 cmp QWORD PTR delays$[rbp], 0
+ 002c0 74 51 je SHORT $LN17@stbi__load
+
+; 7876 : *delays = (int *)stbi__malloc(layers * sizeof(int));
+
+ 002c2 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
+ 002c6 48 c1 e0 02 shl rax, 2
+ 002ca 48 8b c8 mov rcx, rax
+ 002cd e8 00 00 00 00 call stbi__malloc
+ 002d2 48 8b 8d e8 8f
+ 00 00 mov rcx, QWORD PTR delays$[rbp]
+ 002d9 48 89 01 mov QWORD PTR [rcx], rax
+
+; 7877 : if (!*delays)
+
+ 002dc 48 8b 85 e8 8f
+ 00 00 mov rax, QWORD PTR delays$[rbp]
+ 002e3 48 83 38 00 cmp QWORD PTR [rax], 0
+ 002e7 75 1c jne SHORT $LN18@stbi__load
+
+; 7878 : return stbi__load_gif_main_outofmem(&g, out,
+
+ 002e9 4c 8b 85 e8 8f
+ 00 00 mov r8, QWORD PTR delays$[rbp]
+ 002f0 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
+ 002f4 48 8d 8d 90 00
+ 00 00 lea rcx, QWORD PTR g$8[rbp]
+ 002fb e8 00 00 00 00 call stbi__load_gif_main_outofmem
+ 00300 e9 37 01 00 00 jmp $LN1@stbi__load
+$LN18@stbi__load:
+
+; 7879 : delays);
+; 7880 : delays_size = layers * sizeof(int);
+
+ 00305 48 63 45 04 movsxd rax, DWORD PTR layers$4[rbp]
+ 00309 48 c1 e0 02 shl rax, 2
+ 0030d 89 85 54 89 00
+ 00 mov DWORD PTR delays_size$11[rbp], eax
+$LN17@stbi__load:
+$LN11@stbi__load:
+
+; 7881 : }
+; 7882 : }
+; 7883 : memcpy(out + ((layers - 1) * stride), u, stride);
+
+ 00313 48 63 85 14 89
+ 00 00 movsxd rax, DWORD PTR stride$9[rbp]
+ 0031a 8b 4d 04 mov ecx, DWORD PTR layers$4[rbp]
+ 0031d ff c9 dec ecx
+ 0031f 0f af 8d 14 89
+ 00 00 imul ecx, DWORD PTR stride$9[rbp]
+ 00326 48 63 c9 movsxd rcx, ecx
+ 00329 48 8b 55 48 mov rdx, QWORD PTR out$6[rbp]
+ 0032d 48 03 d1 add rdx, rcx
+ 00330 48 8b ca mov rcx, rdx
+ 00333 4c 8b c0 mov r8, rax
+ 00336 48 8b 55 28 mov rdx, QWORD PTR u$5[rbp]
+ 0033a e8 00 00 00 00 call memcpy
+ 0033f 90 npad 1
+
+; 7884 : if (layers >= 2) {
+
+ 00340 83 7d 04 02 cmp DWORD PTR layers$4[rbp], 2
+ 00344 7c 18 jl SHORT $LN19@stbi__load
+
+; 7885 : two_back = out - 2 * stride;
+
+ 00346 8b 85 14 89 00
+ 00 mov eax, DWORD PTR stride$9[rbp]
+ 0034c d1 e0 shl eax, 1
+ 0034e 48 98 cdqe
+ 00350 48 8b 4d 48 mov rcx, QWORD PTR out$6[rbp]
+ 00354 48 2b c8 sub rcx, rax
+ 00357 48 8b c1 mov rax, rcx
+ 0035a 48 89 45 68 mov QWORD PTR two_back$7[rbp], rax
+$LN19@stbi__load:
+
+; 7886 : }
+; 7887 :
+; 7888 : if (delays) {
+
+ 0035e 48 83 bd e8 8f
+ 00 00 00 cmp QWORD PTR delays$[rbp], 0
+ 00366 74 1a je SHORT $LN20@stbi__load
+
+; 7889 : (*delays)[layers - 1U] = g.delay;
+
+ 00368 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
+ 0036b ff c8 dec eax
+ 0036d 8b c0 mov eax, eax
+ 0036f 48 8b 8d e8 8f
+ 00 00 mov rcx, QWORD PTR delays$[rbp]
+ 00376 48 8b 09 mov rcx, QWORD PTR [rcx]
+ 00379 8b 95 f8 88 00
+ 00 mov edx, DWORD PTR g$8[rbp+34920]
+ 0037f 89 14 81 mov DWORD PTR [rcx+rax*4], edx
+$LN20@stbi__load:
+$LN9@stbi__load:
+
+; 7890 : }
+; 7891 : }
+; 7892 : } while (u != 0);
+
+ 00382 48 83 7d 28 00 cmp QWORD PTR u$5[rbp], 0
+ 00387 0f 85 46 fd ff
+ ff jne $LN4@stbi__load
+
+; 7893 :
+; 7894 : // free temp buffer;
+; 7895 : STBI_FREE(g.out);
+
+ 0038d 48 8b 8d 98 00
+ 00 00 mov rcx, QWORD PTR g$8[rbp+8]
+ 00394 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0039a 90 npad 1
+
+; 7896 : STBI_FREE(g.history);
+
+ 0039b 48 8b 8d a8 00
+ 00 00 mov rcx, QWORD PTR g$8[rbp+24]
+ 003a2 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 003a8 90 npad 1
+
+; 7897 : STBI_FREE(g.background);
+
+ 003a9 48 8b 8d a0 00
+ 00 00 mov rcx, QWORD PTR g$8[rbp+16]
+ 003b0 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 003b6 90 npad 1
+
+; 7898 :
+; 7899 : // do the final conversion after loading everything;
+; 7900 : if (req_comp && req_comp != 4)
+
+ 003b7 83 bd 10 90 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 003be 74 39 je SHORT $LN21@stbi__load
+ 003c0 83 bd 10 90 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 003c7 74 30 je SHORT $LN21@stbi__load
+
+; 7901 : out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h);
+
+ 003c9 8b 45 04 mov eax, DWORD PTR layers$4[rbp]
+ 003cc 0f af 85 90 00
+ 00 00 imul eax, DWORD PTR g$8[rbp]
+ 003d3 8b 8d 94 00 00
+ 00 mov ecx, DWORD PTR g$8[rbp+4]
+ 003d9 89 4c 24 20 mov DWORD PTR [rsp+32], ecx
+ 003dd 44 8b c8 mov r9d, eax
+ 003e0 44 8b 85 10 90
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 003e7 ba 04 00 00 00 mov edx, 4
+ 003ec 48 8b 4d 48 mov rcx, QWORD PTR out$6[rbp]
+ 003f0 e8 00 00 00 00 call stbi__convert_format
+ 003f5 48 89 45 48 mov QWORD PTR out$6[rbp], rax
+$LN21@stbi__load:
+
+; 7902 :
+; 7903 : *z = layers;
+
+ 003f9 48 8b 85 00 90
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00400 8b 4d 04 mov ecx, DWORD PTR layers$4[rbp]
+ 00403 89 08 mov DWORD PTR [rax], ecx
+
+; 7904 : return out;
+
+ 00405 48 8b 45 48 mov rax, QWORD PTR out$6[rbp]
+ 00409 eb 31 jmp SHORT $LN1@stbi__load
+
+; 7905 : } else {
+
+ 0040b eb 2f jmp SHORT $LN6@stbi__load
+$LN5@stbi__load:
+
+; 7906 : return stbi__errpuc("not GIF", "Image was not as a gif type.");
+
+ 0040d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07KMJLPAII@not?5GIF@
+ 00414 e8 00 00 00 00 call stbi__err
+ 00419 85 c0 test eax, eax
+ 0041b 74 0d je SHORT $LN23@stbi__load
+ 0041d 48 c7 85 a8 8f
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv211[rbp], 0
+ 00428 eb 0b jmp SHORT $LN24@stbi__load
+$LN23@stbi__load:
+ 0042a 48 c7 85 a8 8f
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv211[rbp], 0
+$LN24@stbi__load:
+ 00435 48 8b 85 a8 8f
+ 00 00 mov rax, QWORD PTR tv211[rbp]
+$LN6@stbi__load:
+$LN1@stbi__load:
+
+; 7907 : }
+; 7908 : }
+
+ 0043c 48 8b f8 mov rdi, rax
+ 0043f 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00443 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__load_gif_main$rtcFrameData
+ 0044a e8 00 00 00 00 call _RTC_CheckStackVars
+ 0044f 48 8b c7 mov rax, rdi
+ 00452 48 8b 8d b0 8f
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00459 48 33 cd xor rcx, rbp
+ 0045c e8 00 00 00 00 call __security_check_cookie
+ 00461 48 8d a5 c8 8f
+ 00 00 lea rsp, QWORD PTR [rbp+36808]
+ 00468 5f pop rdi
+ 00469 5d pop rbp
+ 0046a c3 ret 0
+stbi__load_gif_main ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_load
+_TEXT SEGMENT
+u$ = 8
+g$ = 48
+__$ArrayPad$ = 36520
+s$ = 36560
+x$ = 36568
+y$ = 36576
+comp$ = 36584
+req_comp$ = 36592
+ri$ = 36600
+stbi__gif_load PROC ; COMDAT
+
+; 7912 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 b8 e8 8e 00 00 mov eax, 36584 ; 00008ee8H
+ 0001b e8 00 00 00 00 call __chkstk
+ 00020 48 2b e0 sub rsp, rax
+ 00023 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00028 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 0002d b9 2e 22 00 00 mov ecx, 8750 ; 0000222eH
+ 00032 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00037 f3 ab rep stosd
+ 00039 48 8b 8c 24 08
+ 8f 00 00 mov rcx, QWORD PTR [rsp+36616]
+ 00041 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00048 48 33 c5 xor rax, rbp
+ 0004b 48 89 85 a8 8e
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00052 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00059 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0005e 90 npad 1
+
+; 7913 : stbi_uc *u = 0;
+
+ 0005f 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR u$[rbp], 0
+
+; 7914 : stbi__gif g;
+; 7915 : memset(&g, 0, sizeof(g));
+
+ 00067 41 b8 70 88 00
+ 00 mov r8d, 34928 ; 00008870H
+ 0006d 33 d2 xor edx, edx
+ 0006f 48 8d 4d 30 lea rcx, QWORD PTR g$[rbp]
+ 00073 e8 00 00 00 00 call memset
+ 00078 90 npad 1
+
+; 7916 : STBI_NOTUSED(ri);
+; 7917 :
+; 7918 : u = stbi__gif_load_next(s, &g, comp, req_comp, 0);
+
+ 00079 48 c7 44 24 20
+ 00 00 00 00 mov QWORD PTR [rsp+32], 0
+ 00082 44 8b 8d f0 8e
+ 00 00 mov r9d, DWORD PTR req_comp$[rbp]
+ 00089 4c 8b 85 e8 8e
+ 00 00 mov r8, QWORD PTR comp$[rbp]
+ 00090 48 8d 55 30 lea rdx, QWORD PTR g$[rbp]
+ 00094 48 8b 8d d0 8e
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0009b e8 00 00 00 00 call stbi__gif_load_next
+ 000a0 48 89 45 08 mov QWORD PTR u$[rbp], rax
+
+; 7919 : if (u == (stbi_uc *)s)
+
+ 000a4 48 8b 85 d0 8e
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000ab 48 39 45 08 cmp QWORD PTR u$[rbp], rax
+ 000af 75 08 jne SHORT $LN2@stbi__gif_
+
+; 7920 : u = 0; // end of animated gif marker
+
+ 000b1 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR u$[rbp], 0
+$LN2@stbi__gif_:
+
+; 7921 : if (u) {
+
+ 000b9 48 83 7d 08 00 cmp QWORD PTR u$[rbp], 0
+ 000be 74 50 je SHORT $LN3@stbi__gif_
+
+; 7922 : *x = g.w;
+
+ 000c0 48 8b 85 d8 8e
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 000c7 8b 4d 30 mov ecx, DWORD PTR g$[rbp]
+ 000ca 89 08 mov DWORD PTR [rax], ecx
+
+; 7923 : *y = g.h;
+
+ 000cc 48 8b 85 e0 8e
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 000d3 8b 4d 34 mov ecx, DWORD PTR g$[rbp+4]
+ 000d6 89 08 mov DWORD PTR [rax], ecx
+
+; 7924 :
+; 7925 : // moved conversion to after successful load so that the same
+; 7926 : // can be done for multiple frames.
+; 7927 : if (req_comp && req_comp != 4)
+
+ 000d8 83 bd f0 8e 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 000df 74 2d je SHORT $LN5@stbi__gif_
+ 000e1 83 bd f0 8e 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 000e8 74 24 je SHORT $LN5@stbi__gif_
+
+; 7928 : u = stbi__convert_format(u, 4, req_comp, g.w, g.h);
+
+ 000ea 8b 45 34 mov eax, DWORD PTR g$[rbp+4]
+ 000ed 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 000f1 44 8b 4d 30 mov r9d, DWORD PTR g$[rbp]
+ 000f5 44 8b 85 f0 8e
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 000fc ba 04 00 00 00 mov edx, 4
+ 00101 48 8b 4d 08 mov rcx, QWORD PTR u$[rbp]
+ 00105 e8 00 00 00 00 call stbi__convert_format
+ 0010a 48 89 45 08 mov QWORD PTR u$[rbp], rax
+$LN5@stbi__gif_:
+
+; 7929 : } else if (g.out) {
+
+ 0010e eb 12 jmp SHORT $LN4@stbi__gif_
+$LN3@stbi__gif_:
+ 00110 48 83 7d 38 00 cmp QWORD PTR g$[rbp+8], 0
+ 00115 74 0b je SHORT $LN6@stbi__gif_
+
+; 7930 : // if there was an error and we allocated an image buffer, free it!
+; 7931 : STBI_FREE(g.out);
+
+ 00117 48 8b 4d 38 mov rcx, QWORD PTR g$[rbp+8]
+ 0011b ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00121 90 npad 1
+$LN6@stbi__gif_:
+$LN4@stbi__gif_:
+
+; 7932 : }
+; 7933 :
+; 7934 : // free buffers needed for multiple frame loading;
+; 7935 : STBI_FREE(g.history);
+
+ 00122 48 8b 4d 48 mov rcx, QWORD PTR g$[rbp+24]
+ 00126 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0012c 90 npad 1
+
+; 7936 : STBI_FREE(g.background);
+
+ 0012d 48 8b 4d 40 mov rcx, QWORD PTR g$[rbp+16]
+ 00131 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00137 90 npad 1
+
+; 7937 :
+; 7938 : return u;
+
+ 00138 48 8b 45 08 mov rax, QWORD PTR u$[rbp]
+
+; 7939 : }
+
+ 0013c 48 8b f8 mov rdi, rax
+ 0013f 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00143 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__gif_load$rtcFrameData
+ 0014a e8 00 00 00 00 call _RTC_CheckStackVars
+ 0014f 48 8b c7 mov rax, rdi
+ 00152 48 8b 8d a8 8e
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00159 48 33 cd xor rcx, rbp
+ 0015c e8 00 00 00 00 call __security_check_cookie
+ 00161 48 8d a5 b8 8e
+ 00 00 lea rsp, QWORD PTR [rbp+36536]
+ 00168 5f pop rdi
+ 00169 5d pop rbp
+ 0016a c3 ret 0
+stbi__gif_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__gif_test
+_TEXT SEGMENT
+r$ = 4
+s$ = 256
+stbi__gif_test PROC ; COMDAT
+
+; 7417 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 7418 : int r = stbi__gif_test_raw(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__gif_test_raw
+ 0002c 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 7419 : stbi__rewind(s);
+
+ 0002f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__rewind
+ 0003b 90 npad 1
+
+; 7420 : return r;
+
+ 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 7421 : }
+
+ 0003f 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00046 5f pop rdi
+ 00047 5d pop rbp
+ 00048 c3 ret 0
+stbi__gif_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pic_info
+_TEXT SEGMENT
+act_comp$ = 4
+num_packets$ = 36
+chained$ = 68
+dummy$ = 100
+packets$ = 136
+packet$5 = 200
+tv152 = 404
+__$ArrayPad$ = 408
+s$ = 448
+x$ = 456
+y$ = 464
+comp$ = 472
+stbi__pic_info PROC ; COMDAT
+
+; 8333 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec c8 01
+ 00 00 sub rsp, 456 ; 000001c8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 3a 00 00 00 mov ecx, 58 ; 0000003aH
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 e8
+ 01 00 00 mov rcx, QWORD PTR [rsp+488]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 98 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8334 : int act_comp = 0, num_packets = 0, chained, dummy;
+
+ 00059 c7 45 04 00 00
+ 00 00 mov DWORD PTR act_comp$[rbp], 0
+ 00060 c7 45 24 00 00
+ 00 00 mov DWORD PTR num_packets$[rbp], 0
+
+; 8335 : stbi__pic_packet packets[10];
+; 8336 :
+; 8337 : if (!x)
+
+ 00067 48 83 bd c8 01
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 0006f 75 0b jne SHORT $LN5@stbi__pic_
+
+; 8338 : x = &dummy;
+
+ 00071 48 8d 45 64 lea rax, QWORD PTR dummy$[rbp]
+ 00075 48 89 85 c8 01
+ 00 00 mov QWORD PTR x$[rbp], rax
+$LN5@stbi__pic_:
+
+; 8339 : if (!y)
+
+ 0007c 48 83 bd d0 01
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 00084 75 0b jne SHORT $LN6@stbi__pic_
+
+; 8340 : y = &dummy;
+
+ 00086 48 8d 45 64 lea rax, QWORD PTR dummy$[rbp]
+ 0008a 48 89 85 d0 01
+ 00 00 mov QWORD PTR y$[rbp], rax
+$LN6@stbi__pic_:
+
+; 8341 : if (!comp)
+
+ 00091 48 83 bd d8 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 00099 75 0b jne SHORT $LN7@stbi__pic_
+
+; 8342 : comp = &dummy;
+
+ 0009b 48 8d 45 64 lea rax, QWORD PTR dummy$[rbp]
+ 0009f 48 89 85 d8 01
+ 00 00 mov QWORD PTR comp$[rbp], rax
+$LN7@stbi__pic_:
+
+; 8343 :
+; 8344 : if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) {
+
+ 000a6 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_04KBFEPHFH@S?$IA?v4@
+ 000ad 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000b4 e8 00 00 00 00 call stbi__pic_is4
+ 000b9 85 c0 test eax, eax
+ 000bb 75 14 jne SHORT $LN8@stbi__pic_
+
+; 8345 : stbi__rewind(s);
+
+ 000bd 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c4 e8 00 00 00 00 call stbi__rewind
+ 000c9 90 npad 1
+
+; 8346 : return 0;
+
+ 000ca 33 c0 xor eax, eax
+ 000cc e9 c3 01 00 00 jmp $LN1@stbi__pic_
+$LN8@stbi__pic_:
+
+; 8347 : }
+; 8348 :
+; 8349 : stbi__skip(s, 88);
+
+ 000d1 ba 58 00 00 00 mov edx, 88 ; 00000058H
+ 000d6 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000dd e8 00 00 00 00 call stbi__skip
+ 000e2 90 npad 1
+
+; 8350 :
+; 8351 : *x = stbi__get16be(s);
+
+ 000e3 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000ea e8 00 00 00 00 call stbi__get16be
+ 000ef 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 000f6 89 01 mov DWORD PTR [rcx], eax
+
+; 8352 : *y = stbi__get16be(s);
+
+ 000f8 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000ff e8 00 00 00 00 call stbi__get16be
+ 00104 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 0010b 89 01 mov DWORD PTR [rcx], eax
+
+; 8353 : if (stbi__at_eof(s)) {
+
+ 0010d 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00114 e8 00 00 00 00 call stbi__at_eof
+ 00119 85 c0 test eax, eax
+ 0011b 74 14 je SHORT $LN9@stbi__pic_
+
+; 8354 : stbi__rewind(s);
+
+ 0011d 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00124 e8 00 00 00 00 call stbi__rewind
+ 00129 90 npad 1
+
+; 8355 : return 0;
+
+ 0012a 33 c0 xor eax, eax
+ 0012c e9 63 01 00 00 jmp $LN1@stbi__pic_
+$LN9@stbi__pic_:
+
+; 8356 : }
+; 8357 : if ((*x) != 0 && (1 << 28) / (*x) < (*y)) {
+
+ 00131 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00138 83 38 00 cmp DWORD PTR [rax], 0
+ 0013b 74 2e je SHORT $LN10@stbi__pic_
+ 0013d b8 00 00 00 10 mov eax, 268435456 ; 10000000H
+ 00142 99 cdq
+ 00143 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 0014a f7 39 idiv DWORD PTR [rcx]
+ 0014c 48 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 00153 3b 01 cmp eax, DWORD PTR [rcx]
+ 00155 7d 14 jge SHORT $LN10@stbi__pic_
+
+; 8358 : stbi__rewind(s);
+
+ 00157 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0015e e8 00 00 00 00 call stbi__rewind
+ 00163 90 npad 1
+
+; 8359 : return 0;
+
+ 00164 33 c0 xor eax, eax
+ 00166 e9 29 01 00 00 jmp $LN1@stbi__pic_
+$LN10@stbi__pic_:
+
+; 8360 : }
+; 8361 :
+; 8362 : stbi__skip(s, 8);
+
+ 0016b ba 08 00 00 00 mov edx, 8
+ 00170 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00177 e8 00 00 00 00 call stbi__skip
+ 0017c 90 npad 1
+$LN4@stbi__pic_:
+
+; 8363 :
+; 8364 : do {
+; 8365 : stbi__pic_packet *packet;
+; 8366 :
+; 8367 : if (num_packets == sizeof(packets) / sizeof(packets[0]))
+
+ 0017d 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
+ 00181 48 83 f8 0a cmp rax, 10
+ 00185 75 07 jne SHORT $LN11@stbi__pic_
+
+; 8368 : return 0;
+
+ 00187 33 c0 xor eax, eax
+ 00189 e9 06 01 00 00 jmp $LN1@stbi__pic_
+$LN11@stbi__pic_:
+
+; 8369 :
+; 8370 : packet = &packets[num_packets++];
+
+ 0018e 48 63 45 24 movsxd rax, DWORD PTR num_packets$[rbp]
+ 00192 48 6b c0 03 imul rax, rax, 3
+ 00196 48 8d 84 05 88
+ 00 00 00 lea rax, QWORD PTR packets$[rbp+rax]
+ 0019e 48 89 85 c8 00
+ 00 00 mov QWORD PTR packet$5[rbp], rax
+ 001a5 8b 45 24 mov eax, DWORD PTR num_packets$[rbp]
+ 001a8 ff c0 inc eax
+ 001aa 89 45 24 mov DWORD PTR num_packets$[rbp], eax
+
+; 8371 : chained = stbi__get8(s);
+
+ 001ad 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001b4 e8 00 00 00 00 call stbi__get8
+ 001b9 0f b6 c0 movzx eax, al
+ 001bc 89 45 44 mov DWORD PTR chained$[rbp], eax
+
+; 8372 : packet->size = stbi__get8(s);
+
+ 001bf 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001c6 e8 00 00 00 00 call stbi__get8
+ 001cb 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR packet$5[rbp]
+ 001d2 88 01 mov BYTE PTR [rcx], al
+
+; 8373 : packet->type = stbi__get8(s);
+
+ 001d4 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001db e8 00 00 00 00 call stbi__get8
+ 001e0 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR packet$5[rbp]
+ 001e7 88 41 01 mov BYTE PTR [rcx+1], al
+
+; 8374 : packet->channel = stbi__get8(s);
+
+ 001ea 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001f1 e8 00 00 00 00 call stbi__get8
+ 001f6 48 8b 8d c8 00
+ 00 00 mov rcx, QWORD PTR packet$5[rbp]
+ 001fd 88 41 02 mov BYTE PTR [rcx+2], al
+
+; 8375 : act_comp |= packet->channel;
+
+ 00200 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR packet$5[rbp]
+ 00207 0f b6 40 02 movzx eax, BYTE PTR [rax+2]
+ 0020b 8b 4d 04 mov ecx, DWORD PTR act_comp$[rbp]
+ 0020e 0b c8 or ecx, eax
+ 00210 8b c1 mov eax, ecx
+ 00212 89 45 04 mov DWORD PTR act_comp$[rbp], eax
+
+; 8376 :
+; 8377 : if (stbi__at_eof(s)) {
+
+ 00215 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0021c e8 00 00 00 00 call stbi__at_eof
+ 00221 85 c0 test eax, eax
+ 00223 74 11 je SHORT $LN12@stbi__pic_
+
+; 8378 : stbi__rewind(s);
+
+ 00225 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0022c e8 00 00 00 00 call stbi__rewind
+ 00231 90 npad 1
+
+; 8379 : return 0;
+
+ 00232 33 c0 xor eax, eax
+ 00234 eb 5e jmp SHORT $LN1@stbi__pic_
+$LN12@stbi__pic_:
+
+; 8380 : }
+; 8381 : if (packet->size != 8) {
+
+ 00236 48 8b 85 c8 00
+ 00 00 mov rax, QWORD PTR packet$5[rbp]
+ 0023d 0f b6 00 movzx eax, BYTE PTR [rax]
+ 00240 83 f8 08 cmp eax, 8
+ 00243 74 11 je SHORT $LN13@stbi__pic_
+
+; 8382 : stbi__rewind(s);
+
+ 00245 48 8b 8d c0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0024c e8 00 00 00 00 call stbi__rewind
+ 00251 90 npad 1
+
+; 8383 : return 0;
+
+ 00252 33 c0 xor eax, eax
+ 00254 eb 3e jmp SHORT $LN1@stbi__pic_
+$LN13@stbi__pic_:
+
+; 8384 : }
+; 8385 : } while (chained);
+
+ 00256 83 7d 44 00 cmp DWORD PTR chained$[rbp], 0
+ 0025a 0f 85 1d ff ff
+ ff jne $LN4@stbi__pic_
+
+; 8386 :
+; 8387 : *comp = (act_comp & 0x10 ? 4 : 3);
+
+ 00260 8b 45 04 mov eax, DWORD PTR act_comp$[rbp]
+ 00263 83 e0 10 and eax, 16
+ 00266 85 c0 test eax, eax
+ 00268 74 0c je SHORT $LN15@stbi__pic_
+ 0026a c7 85 94 01 00
+ 00 04 00 00 00 mov DWORD PTR tv152[rbp], 4
+ 00274 eb 0a jmp SHORT $LN16@stbi__pic_
+$LN15@stbi__pic_:
+ 00276 c7 85 94 01 00
+ 00 03 00 00 00 mov DWORD PTR tv152[rbp], 3
+$LN16@stbi__pic_:
+ 00280 48 8b 85 d8 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00287 8b 8d 94 01 00
+ 00 mov ecx, DWORD PTR tv152[rbp]
+ 0028d 89 08 mov DWORD PTR [rax], ecx
+
+; 8388 :
+; 8389 : return 1;
+
+ 0028f b8 01 00 00 00 mov eax, 1
+$LN1@stbi__pic_:
+
+; 8390 : }
+
+ 00294 48 8b f8 mov rdi, rax
+ 00297 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0029b 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__pic_info$rtcFrameData
+ 002a2 e8 00 00 00 00 call _RTC_CheckStackVars
+ 002a7 48 8b c7 mov rax, rdi
+ 002aa 48 8b 8d 98 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 002b1 48 33 cd xor rcx, rbp
+ 002b4 e8 00 00 00 00 call __security_check_cookie
+ 002b9 48 8d a5 a8 01
+ 00 00 lea rsp, QWORD PTR [rbp+424]
+ 002c0 5f pop rdi
+ 002c1 5d pop rbp
+ 002c2 c3 ret 0
+stbi__pic_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pic_load
+_TEXT SEGMENT
+result$ = 8
+i$ = 36
+x$ = 68
+y$ = 100
+internal_comp$ = 132
+tv76 = 344
+tv81 = 344
+tv88 = 344
+tv130 = 344
+tv143 = 344
+__$ArrayPad$ = 352
+s$ = 400
+px$ = 408
+py$ = 416
+comp$ = 424
+req_comp$ = 432
+ri$ = 440
+stbi__pic_load PROC ; COMDAT
+
+; 7318 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec a8 01
+ 00 00 sub rsp, 424 ; 000001a8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 2e 00 00 00 mov ecx, 46 ; 0000002eH
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 c8
+ 01 00 00 mov rcx, QWORD PTR [rsp+456]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 60 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 7319 : stbi_uc *result;
+; 7320 : int i, x, y, internal_comp;
+; 7321 : STBI_NOTUSED(ri);
+; 7322 :
+; 7323 : if (!comp)
+
+ 00059 48 83 bd a8 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 00061 75 0e jne SHORT $LN5@stbi__pic_
+
+; 7324 : comp = &internal_comp;
+
+ 00063 48 8d 85 84 00
+ 00 00 lea rax, QWORD PTR internal_comp$[rbp]
+ 0006a 48 89 85 a8 01
+ 00 00 mov QWORD PTR comp$[rbp], rax
+$LN5@stbi__pic_:
+
+; 7325 :
+; 7326 : for (i = 0; i < 92; ++i)
+
+ 00071 c7 45 24 00 00
+ 00 00 mov DWORD PTR i$[rbp], 0
+ 00078 eb 08 jmp SHORT $LN4@stbi__pic_
+$LN2@stbi__pic_:
+ 0007a 8b 45 24 mov eax, DWORD PTR i$[rbp]
+ 0007d ff c0 inc eax
+ 0007f 89 45 24 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__pic_:
+ 00082 83 7d 24 5c cmp DWORD PTR i$[rbp], 92 ; 0000005cH
+ 00086 7d 0f jge SHORT $LN3@stbi__pic_
+
+; 7327 : stbi__get8(s);
+
+ 00088 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0008f e8 00 00 00 00 call stbi__get8
+ 00094 90 npad 1
+ 00095 eb e3 jmp SHORT $LN2@stbi__pic_
+$LN3@stbi__pic_:
+
+; 7328 :
+; 7329 : x = stbi__get16be(s);
+
+ 00097 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0009e e8 00 00 00 00 call stbi__get16be
+ 000a3 89 45 44 mov DWORD PTR x$[rbp], eax
+
+; 7330 : y = stbi__get16be(s);
+
+ 000a6 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000ad e8 00 00 00 00 call stbi__get16be
+ 000b2 89 45 64 mov DWORD PTR y$[rbp], eax
+
+; 7331 :
+; 7332 : if (y > STBI_MAX_DIMENSIONS)
+
+ 000b5 81 7d 64 00 00
+ 00 01 cmp DWORD PTR y$[rbp], 16777216 ; 01000000H
+ 000bc 7e 34 jle SHORT $LN6@stbi__pic_
+
+; 7333 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 000be 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 000c5 e8 00 00 00 00 call stbi__err
+ 000ca 85 c0 test eax, eax
+ 000cc 74 0d je SHORT $LN14@stbi__pic_
+ 000ce 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv76[rbp], 0
+ 000d9 eb 0b jmp SHORT $LN15@stbi__pic_
+$LN14@stbi__pic_:
+ 000db 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv76[rbp], 0
+$LN15@stbi__pic_:
+ 000e6 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv76[rbp]
+ 000ed e9 f8 01 00 00 jmp $LN1@stbi__pic_
+$LN6@stbi__pic_:
+
+; 7334 : if (x > STBI_MAX_DIMENSIONS)
+
+ 000f2 81 7d 44 00 00
+ 00 01 cmp DWORD PTR x$[rbp], 16777216 ; 01000000H
+ 000f9 7e 34 jle SHORT $LN7@stbi__pic_
+
+; 7335 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 000fb 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00102 e8 00 00 00 00 call stbi__err
+ 00107 85 c0 test eax, eax
+ 00109 74 0d je SHORT $LN16@stbi__pic_
+ 0010b 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv81[rbp], 0
+ 00116 eb 0b jmp SHORT $LN17@stbi__pic_
+$LN16@stbi__pic_:
+ 00118 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv81[rbp], 0
+$LN17@stbi__pic_:
+ 00123 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv81[rbp]
+ 0012a e9 bb 01 00 00 jmp $LN1@stbi__pic_
+$LN7@stbi__pic_:
+
+; 7336 :
+; 7337 : if (stbi__at_eof(s))
+
+ 0012f 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00136 e8 00 00 00 00 call stbi__at_eof
+ 0013b 85 c0 test eax, eax
+ 0013d 74 34 je SHORT $LN8@stbi__pic_
+
+; 7338 : return stbi__errpuc("bad file", "file too short (pic header)");
+
+ 0013f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08GGMBIFE@bad?5file@
+ 00146 e8 00 00 00 00 call stbi__err
+ 0014b 85 c0 test eax, eax
+ 0014d 74 0d je SHORT $LN18@stbi__pic_
+ 0014f 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv88[rbp], 0
+ 0015a eb 0b jmp SHORT $LN19@stbi__pic_
+$LN18@stbi__pic_:
+ 0015c 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv88[rbp], 0
+$LN19@stbi__pic_:
+ 00167 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv88[rbp]
+ 0016e e9 77 01 00 00 jmp $LN1@stbi__pic_
+$LN8@stbi__pic_:
+
+; 7339 : if (!stbi__mad3sizes_valid(x, y, 4, 0))
+
+ 00173 45 33 c9 xor r9d, r9d
+ 00176 41 b8 04 00 00
+ 00 mov r8d, 4
+ 0017c 8b 55 64 mov edx, DWORD PTR y$[rbp]
+ 0017f 8b 4d 44 mov ecx, DWORD PTR x$[rbp]
+ 00182 e8 00 00 00 00 call stbi__mad3sizes_valid
+ 00187 85 c0 test eax, eax
+ 00189 75 34 jne SHORT $LN9@stbi__pic_
+
+; 7340 : return stbi__errpuc("too large", "PIC image too large to decode");
+
+ 0018b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00192 e8 00 00 00 00 call stbi__err
+ 00197 85 c0 test eax, eax
+ 00199 74 0d je SHORT $LN20@stbi__pic_
+ 0019b 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv130[rbp], 0
+ 001a6 eb 0b jmp SHORT $LN21@stbi__pic_
+$LN20@stbi__pic_:
+ 001a8 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv130[rbp], 0
+$LN21@stbi__pic_:
+ 001b3 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv130[rbp]
+ 001ba e9 2b 01 00 00 jmp $LN1@stbi__pic_
+$LN9@stbi__pic_:
+
+; 7341 :
+; 7342 : stbi__get32be(s); //skip `ratio'
+
+ 001bf 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001c6 e8 00 00 00 00 call stbi__get32be
+ 001cb 90 npad 1
+
+; 7343 : stbi__get16be(s); //skip `fields'
+
+ 001cc 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001d3 e8 00 00 00 00 call stbi__get16be
+ 001d8 90 npad 1
+
+; 7344 : stbi__get16be(s); //skip `pad'
+
+ 001d9 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001e0 e8 00 00 00 00 call stbi__get16be
+ 001e5 90 npad 1
+
+; 7345 :
+; 7346 : // intermediate buffer is RGBA
+; 7347 : result = (stbi_uc *)stbi__malloc_mad3(x, y, 4, 0);
+
+ 001e6 45 33 c9 xor r9d, r9d
+ 001e9 41 b8 04 00 00
+ 00 mov r8d, 4
+ 001ef 8b 55 64 mov edx, DWORD PTR y$[rbp]
+ 001f2 8b 4d 44 mov ecx, DWORD PTR x$[rbp]
+ 001f5 e8 00 00 00 00 call stbi__malloc_mad3
+ 001fa 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 7348 : if (!result)
+
+ 001fe 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
+ 00203 75 34 jne SHORT $LN10@stbi__pic_
+
+; 7349 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 00205 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0020c e8 00 00 00 00 call stbi__err
+ 00211 85 c0 test eax, eax
+ 00213 74 0d je SHORT $LN22@stbi__pic_
+ 00215 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv143[rbp], 0
+ 00220 eb 0b jmp SHORT $LN23@stbi__pic_
+$LN22@stbi__pic_:
+ 00222 48 c7 85 58 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv143[rbp], 0
+$LN23@stbi__pic_:
+ 0022d 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR tv143[rbp]
+ 00234 e9 b1 00 00 00 jmp $LN1@stbi__pic_
+$LN10@stbi__pic_:
+
+; 7350 : memset(result, 0xff, x * y * 4);
+
+ 00239 8b 45 44 mov eax, DWORD PTR x$[rbp]
+ 0023c 0f af 45 64 imul eax, DWORD PTR y$[rbp]
+ 00240 c1 e0 02 shl eax, 2
+ 00243 48 98 cdqe
+ 00245 4c 8b c0 mov r8, rax
+ 00248 ba ff 00 00 00 mov edx, 255 ; 000000ffH
+ 0024d 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
+ 00251 e8 00 00 00 00 call memset
+ 00256 90 npad 1
+
+; 7351 :
+; 7352 : if (!stbi__pic_load_core(s, x, y, comp, result)) {
+
+ 00257 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+ 0025b 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 00260 4c 8b 8d a8 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00267 44 8b 45 64 mov r8d, DWORD PTR y$[rbp]
+ 0026b 8b 55 44 mov edx, DWORD PTR x$[rbp]
+ 0026e 48 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00275 e8 00 00 00 00 call stbi__pic_load_core
+ 0027a 48 85 c0 test rax, rax
+ 0027d 75 13 jne SHORT $LN11@stbi__pic_
+
+; 7353 : STBI_FREE(result);
+
+ 0027f 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
+ 00283 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00289 90 npad 1
+
+; 7354 : result = 0;
+
+ 0028a 48 c7 45 08 00
+ 00 00 00 mov QWORD PTR result$[rbp], 0
+$LN11@stbi__pic_:
+
+; 7355 : }
+; 7356 : *px = x;
+
+ 00292 48 8b 85 98 01
+ 00 00 mov rax, QWORD PTR px$[rbp]
+ 00299 8b 4d 44 mov ecx, DWORD PTR x$[rbp]
+ 0029c 89 08 mov DWORD PTR [rax], ecx
+
+; 7357 : *py = y;
+
+ 0029e 48 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR py$[rbp]
+ 002a5 8b 4d 64 mov ecx, DWORD PTR y$[rbp]
+ 002a8 89 08 mov DWORD PTR [rax], ecx
+
+; 7358 : if (req_comp == 0)
+
+ 002aa 83 bd b0 01 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 002b1 75 0f jne SHORT $LN12@stbi__pic_
+
+; 7359 : req_comp = *comp;
+
+ 002b3 48 8b 85 a8 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 002ba 8b 00 mov eax, DWORD PTR [rax]
+ 002bc 89 85 b0 01 00
+ 00 mov DWORD PTR req_comp$[rbp], eax
+$LN12@stbi__pic_:
+
+; 7360 : result = stbi__convert_format(result, 4, req_comp, x, y);
+
+ 002c2 8b 45 64 mov eax, DWORD PTR y$[rbp]
+ 002c5 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 002c9 44 8b 4d 44 mov r9d, DWORD PTR x$[rbp]
+ 002cd 44 8b 85 b0 01
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 002d4 ba 04 00 00 00 mov edx, 4
+ 002d9 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
+ 002dd e8 00 00 00 00 call stbi__convert_format
+ 002e2 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 7361 :
+; 7362 : return result;
+
+ 002e6 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi__pic_:
+
+; 7363 : }
+
+ 002ea 48 8b f8 mov rdi, rax
+ 002ed 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 002f1 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__pic_load$rtcFrameData
+ 002f8 e8 00 00 00 00 call _RTC_CheckStackVars
+ 002fd 48 8b c7 mov rax, rdi
+ 00300 48 8b 8d 60 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00307 48 33 cd xor rcx, rbp
+ 0030a e8 00 00 00 00 call __security_check_cookie
+ 0030f 48 8d a5 78 01
+ 00 00 lea rsp, QWORD PTR [rbp+376]
+ 00316 5f pop rdi
+ 00317 5d pop rbp
+ 00318 c3 ret 0
+stbi__pic_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__pic_test
+_TEXT SEGMENT
+r$ = 4
+s$ = 256
+stbi__pic_test PROC ; COMDAT
+
+; 7366 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 7367 : int r = stbi__pic_test_core(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__pic_test_core
+ 0002c 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 7368 : stbi__rewind(s);
+
+ 0002f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__rewind
+ 0003b 90 npad 1
+
+; 7369 : return r;
+
+ 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 7370 : }
+
+ 0003f 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00046 5f pop rdi
+ 00047 5d pop rbp
+ 00048 c3 ret 0
+stbi__pic_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__hdr_info
+_TEXT SEGMENT
+buffer$ = 16
+token$ = 1064
+valid$ = 1092
+dummy$ = 1124
+__$ArrayPad$ = 1720
+s$ = 1760
+x$ = 1768
+y$ = 1776
+comp$ = 1784
+stbi__hdr_info PROC ; COMDAT
+
+; 8188 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 06
+ 00 00 sub rsp, 1768 ; 000006e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 22 01 00 00 mov ecx, 290 ; 00000122H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 08
+ 07 00 00 mov rcx, QWORD PTR [rsp+1800]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 b8 06
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8189 : char buffer[STBI__HDR_BUFLEN];
+; 8190 : char *token;
+; 8191 : int valid = 0;
+
+ 00059 c7 85 44 04 00
+ 00 00 00 00 00 mov DWORD PTR valid$[rbp], 0
+
+; 8192 : int dummy;
+; 8193 :
+; 8194 : if (!x)
+
+ 00063 48 83 bd e8 06
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 0006b 75 0e jne SHORT $LN7@stbi__hdr_
+
+; 8195 : x = &dummy;
+
+ 0006d 48 8d 85 64 04
+ 00 00 lea rax, QWORD PTR dummy$[rbp]
+ 00074 48 89 85 e8 06
+ 00 00 mov QWORD PTR x$[rbp], rax
+$LN7@stbi__hdr_:
+
+; 8196 : if (!y)
+
+ 0007b 48 83 bd f0 06
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 00083 75 0e jne SHORT $LN8@stbi__hdr_
+
+; 8197 : y = &dummy;
+
+ 00085 48 8d 85 64 04
+ 00 00 lea rax, QWORD PTR dummy$[rbp]
+ 0008c 48 89 85 f0 06
+ 00 00 mov QWORD PTR y$[rbp], rax
+$LN8@stbi__hdr_:
+
+; 8198 : if (!comp)
+
+ 00093 48 83 bd f8 06
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 0009b 75 0e jne SHORT $LN9@stbi__hdr_
+
+; 8199 : comp = &dummy;
+
+ 0009d 48 8d 85 64 04
+ 00 00 lea rax, QWORD PTR dummy$[rbp]
+ 000a4 48 89 85 f8 06
+ 00 00 mov QWORD PTR comp$[rbp], rax
+$LN9@stbi__hdr_:
+
+; 8200 :
+; 8201 : if (stbi__hdr_test(s) == 0) {
+
+ 000ab 48 8b 8d e0 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000b2 e8 00 00 00 00 call stbi__hdr_test
+ 000b7 85 c0 test eax, eax
+ 000b9 75 14 jne SHORT $LN10@stbi__hdr_
+
+; 8202 : stbi__rewind(s);
+
+ 000bb 48 8b 8d e0 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c2 e8 00 00 00 00 call stbi__rewind
+ 000c7 90 npad 1
+
+; 8203 : return 0;
+
+ 000c8 33 c0 xor eax, eax
+ 000ca e9 82 01 00 00 jmp $LN1@stbi__hdr_
+$LN10@stbi__hdr_:
+$LN2@stbi__hdr_:
+
+; 8204 : }
+; 8205 :
+; 8206 : for (;;) {
+; 8207 : token = stbi__hdr_gettoken(s, buffer);
+
+ 000cf 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
+ 000d3 48 8b 8d e0 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000da e8 00 00 00 00 call stbi__hdr_gettoken
+ 000df 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8208 : if (token[0] == 0)
+
+ 000e6 b8 01 00 00 00 mov eax, 1
+ 000eb 48 6b c0 00 imul rax, rax, 0
+ 000ef 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 000f6 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
+ 000fa 85 c0 test eax, eax
+ 000fc 75 02 jne SHORT $LN11@stbi__hdr_
+
+; 8209 : break;
+
+ 000fe eb 23 jmp SHORT $LN3@stbi__hdr_
+$LN11@stbi__hdr_:
+
+; 8210 : if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0)
+
+ 00100 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@
+ 00107 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 0010e e8 00 00 00 00 call strcmp
+ 00113 85 c0 test eax, eax
+ 00115 75 0a jne SHORT $LN12@stbi__hdr_
+
+; 8211 : valid = 1;
+
+ 00117 c7 85 44 04 00
+ 00 01 00 00 00 mov DWORD PTR valid$[rbp], 1
+$LN12@stbi__hdr_:
+
+; 8212 : }
+
+ 00121 eb ac jmp SHORT $LN2@stbi__hdr_
+$LN3@stbi__hdr_:
+
+; 8213 :
+; 8214 : if (!valid) {
+
+ 00123 83 bd 44 04 00
+ 00 00 cmp DWORD PTR valid$[rbp], 0
+ 0012a 75 14 jne SHORT $LN13@stbi__hdr_
+
+; 8215 : stbi__rewind(s);
+
+ 0012c 48 8b 8d e0 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00133 e8 00 00 00 00 call stbi__rewind
+ 00138 90 npad 1
+
+; 8216 : return 0;
+
+ 00139 33 c0 xor eax, eax
+ 0013b e9 11 01 00 00 jmp $LN1@stbi__hdr_
+$LN13@stbi__hdr_:
+
+; 8217 : }
+; 8218 : token = stbi__hdr_gettoken(s, buffer);
+
+ 00140 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
+ 00144 48 8b 8d e0 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0014b e8 00 00 00 00 call stbi__hdr_gettoken
+ 00150 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8219 : if (strncmp(token, "-Y ", 3)) {
+
+ 00157 41 b8 03 00 00
+ 00 mov r8d, 3
+ 0015d 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_03HKAKGGJN@?9Y?5@
+ 00164 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 0016b ff 15 00 00 00
+ 00 call QWORD PTR __imp_strncmp
+ 00171 85 c0 test eax, eax
+ 00173 74 14 je SHORT $LN14@stbi__hdr_
+
+; 8220 : stbi__rewind(s);
+
+ 00175 48 8b 8d e0 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0017c e8 00 00 00 00 call stbi__rewind
+ 00181 90 npad 1
+
+; 8221 : return 0;
+
+ 00182 33 c0 xor eax, eax
+ 00184 e9 c8 00 00 00 jmp $LN1@stbi__hdr_
+$LN14@stbi__hdr_:
+
+; 8222 : }
+; 8223 : token += 3;
+
+ 00189 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 00190 48 83 c0 03 add rax, 3
+ 00194 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8224 : *y = (int)strtol(token, &token, 10);
+
+ 0019b 41 b8 0a 00 00
+ 00 mov r8d, 10
+ 001a1 48 8d 95 28 04
+ 00 00 lea rdx, QWORD PTR token$[rbp]
+ 001a8 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 001af ff 15 00 00 00
+ 00 call QWORD PTR __imp_strtol
+ 001b5 48 8b 8d f0 06
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 001bc 89 01 mov DWORD PTR [rcx], eax
+$LN5@stbi__hdr_:
+
+; 8225 : while (*token == ' ')
+
+ 001be 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 001c5 0f be 00 movsx eax, BYTE PTR [rax]
+ 001c8 83 f8 20 cmp eax, 32 ; 00000020H
+ 001cb 75 13 jne SHORT $LN6@stbi__hdr_
+
+; 8226 : ++token;
+
+ 001cd 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 001d4 48 ff c0 inc rax
+ 001d7 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+ 001de eb de jmp SHORT $LN5@stbi__hdr_
+$LN6@stbi__hdr_:
+
+; 8227 : if (strncmp(token, "+X ", 3)) {
+
+ 001e0 41 b8 03 00 00
+ 00 mov r8d, 3
+ 001e6 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_03FOKDFDHG@?$CLX?5@
+ 001ed 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 001f4 ff 15 00 00 00
+ 00 call QWORD PTR __imp_strncmp
+ 001fa 85 c0 test eax, eax
+ 001fc 74 11 je SHORT $LN15@stbi__hdr_
+
+; 8228 : stbi__rewind(s);
+
+ 001fe 48 8b 8d e0 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00205 e8 00 00 00 00 call stbi__rewind
+ 0020a 90 npad 1
+
+; 8229 : return 0;
+
+ 0020b 33 c0 xor eax, eax
+ 0020d eb 42 jmp SHORT $LN1@stbi__hdr_
+$LN15@stbi__hdr_:
+
+; 8230 : }
+; 8231 : token += 3;
+
+ 0020f 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 00216 48 83 c0 03 add rax, 3
+ 0021a 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8232 : *x = (int)strtol(token, NULL, 10);
+
+ 00221 41 b8 0a 00 00
+ 00 mov r8d, 10
+ 00227 33 d2 xor edx, edx
+ 00229 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 00230 ff 15 00 00 00
+ 00 call QWORD PTR __imp_strtol
+ 00236 48 8b 8d e8 06
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 0023d 89 01 mov DWORD PTR [rcx], eax
+
+; 8233 : *comp = 3;
+
+ 0023f 48 8b 85 f8 06
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00246 c7 00 03 00 00
+ 00 mov DWORD PTR [rax], 3
+
+; 8234 : return 1;
+
+ 0024c b8 01 00 00 00 mov eax, 1
+$LN1@stbi__hdr_:
+
+; 8235 : }
+
+ 00251 48 8b f8 mov rdi, rax
+ 00254 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00258 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__hdr_info$rtcFrameData
+ 0025f e8 00 00 00 00 call _RTC_CheckStackVars
+ 00264 48 8b c7 mov rax, rdi
+ 00267 48 8b 8d b8 06
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0026e 48 33 cd xor rcx, rbp
+ 00271 e8 00 00 00 00 call __security_check_cookie
+ 00276 48 8d a5 c8 06
+ 00 00 lea rsp, QWORD PTR [rbp+1736]
+ 0027d 5f pop rdi
+ 0027e 5d pop rbp
+ 0027f c3 ret 0
+stbi__hdr_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__hdr_load
+_TEXT SEGMENT
+buffer$ = 16
+token$ = 1064
+valid$ = 1092
+width$ = 1124
+height$ = 1156
+scanline$ = 1192
+hdr_data$ = 1224
+len$ = 1252
+count$ = 1284
+value$ = 1316
+i$ = 1348
+j$ = 1380
+k$ = 1412
+c1$ = 1444
+c2$ = 1476
+z$ = 1508
+headerToken$ = 1544
+rgbe$7 = 1572
+rgbe$8 = 1604
+nleft$9 = 1636
+tv309 = 2424
+tv78 = 2424
+tv94 = 2424
+tv138 = 2424
+tv155 = 2424
+tv165 = 2424
+tv170 = 2424
+tv183 = 2424
+tv194 = 2424
+tv256 = 2424
+tv267 = 2424
+tv290 = 2424
+__$ArrayPad$ = 2432
+s$ = 2480
+x$ = 2488
+y$ = 2496
+comp$ = 2504
+req_comp$ = 2512
+ri$ = 2520
+stbi__hdr_load PROC ; COMDAT
+
+; 8030 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec c8 09
+ 00 00 sub rsp, 2504 ; 000009c8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 a6 01 00 00 mov ecx, 422 ; 000001a6H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 e8
+ 09 00 00 mov rcx, QWORD PTR [rsp+2536]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 80 09
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8031 : char buffer[STBI__HDR_BUFLEN];
+; 8032 : char *token;
+; 8033 : int valid = 0;
+
+ 00059 c7 85 44 04 00
+ 00 00 00 00 00 mov DWORD PTR valid$[rbp], 0
+
+; 8034 : int width, height;
+; 8035 : stbi_uc *scanline;
+; 8036 : float *hdr_data;
+; 8037 : int len;
+; 8038 : unsigned char count, value;
+; 8039 : int i, j, k, c1, c2, z;
+; 8040 : const char *headerToken;
+; 8041 : STBI_NOTUSED(ri);
+; 8042 :
+; 8043 : // Check identifier
+; 8044 : headerToken = stbi__hdr_gettoken(s, buffer);
+
+ 00063 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
+ 00067 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006e e8 00 00 00 00 call stbi__hdr_gettoken
+ 00073 48 89 85 08 06
+ 00 00 mov QWORD PTR headerToken$[rbp], rax
+
+; 8045 : if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0)
+
+ 0007a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@
+ 00081 48 8b 8d 08 06
+ 00 00 mov rcx, QWORD PTR headerToken$[rbp]
+ 00088 e8 00 00 00 00 call strcmp
+ 0008d 85 c0 test eax, eax
+ 0008f 74 4b je SHORT $LN30@stbi__hdr_
+ 00091 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_06NDOKKIDJ@?$CD?$DPRGBE@
+ 00098 48 8b 8d 08 06
+ 00 00 mov rcx, QWORD PTR headerToken$[rbp]
+ 0009f e8 00 00 00 00 call strcmp
+ 000a4 85 c0 test eax, eax
+ 000a6 74 34 je SHORT $LN30@stbi__hdr_
+
+; 8046 : return stbi__errpf("not HDR", "Corrupt HDR image");
+
+ 000a8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07NCIOKENI@not?5HDR@
+ 000af e8 00 00 00 00 call stbi__err
+ 000b4 85 c0 test eax, eax
+ 000b6 74 0d je SHORT $LN58@stbi__hdr_
+ 000b8 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv78[rbp], 0
+ 000c3 eb 0b jmp SHORT $LN59@stbi__hdr_
+$LN58@stbi__hdr_:
+ 000c5 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv78[rbp], 0
+$LN59@stbi__hdr_:
+ 000d0 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv78[rbp]
+ 000d7 e9 53 09 00 00 jmp $LN1@stbi__hdr_
+$LN30@stbi__hdr_:
+$LN2@stbi__hdr_:
+
+; 8047 :
+; 8048 : // Parse header
+; 8049 : for (;;) {
+; 8050 : token = stbi__hdr_gettoken(s, buffer);
+
+ 000dc 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
+ 000e0 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000e7 e8 00 00 00 00 call stbi__hdr_gettoken
+ 000ec 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8051 : if (token[0] == 0)
+
+ 000f3 b8 01 00 00 00 mov eax, 1
+ 000f8 48 6b c0 00 imul rax, rax, 0
+ 000fc 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 00103 0f be 04 01 movsx eax, BYTE PTR [rcx+rax]
+ 00107 85 c0 test eax, eax
+ 00109 75 02 jne SHORT $LN31@stbi__hdr_
+
+; 8052 : break;
+
+ 0010b eb 23 jmp SHORT $LN3@stbi__hdr_
+$LN31@stbi__hdr_:
+
+; 8053 : if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0)
+
+ 0010d 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@
+ 00114 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 0011b e8 00 00 00 00 call strcmp
+ 00120 85 c0 test eax, eax
+ 00122 75 0a jne SHORT $LN32@stbi__hdr_
+
+; 8054 : valid = 1;
+
+ 00124 c7 85 44 04 00
+ 00 01 00 00 00 mov DWORD PTR valid$[rbp], 1
+$LN32@stbi__hdr_:
+
+; 8055 : }
+
+ 0012e eb ac jmp SHORT $LN2@stbi__hdr_
+$LN3@stbi__hdr_:
+
+; 8056 :
+; 8057 : if (!valid)
+
+ 00130 83 bd 44 04 00
+ 00 00 cmp DWORD PTR valid$[rbp], 0
+ 00137 75 34 jne SHORT $LN33@stbi__hdr_
+
+; 8058 : return stbi__errpf("unsupported format", "Unsupported HDR format");
+
+ 00139 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@NKJFFLKL@unsupported?5format@
+ 00140 e8 00 00 00 00 call stbi__err
+ 00145 85 c0 test eax, eax
+ 00147 74 0d je SHORT $LN60@stbi__hdr_
+ 00149 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv94[rbp], 0
+ 00154 eb 0b jmp SHORT $LN61@stbi__hdr_
+$LN60@stbi__hdr_:
+ 00156 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv94[rbp], 0
+$LN61@stbi__hdr_:
+ 00161 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv94[rbp]
+ 00168 e9 c2 08 00 00 jmp $LN1@stbi__hdr_
+$LN33@stbi__hdr_:
+
+; 8059 :
+; 8060 : // Parse width and height
+; 8061 : // can't use sscanf() if we're not using stdio!
+; 8062 : token = stbi__hdr_gettoken(s, buffer);
+
+ 0016d 48 8d 55 10 lea rdx, QWORD PTR buffer$[rbp]
+ 00171 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00178 e8 00 00 00 00 call stbi__hdr_gettoken
+ 0017d 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8063 : if (strncmp(token, "-Y ", 3))
+
+ 00184 41 b8 03 00 00
+ 00 mov r8d, 3
+ 0018a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_03HKAKGGJN@?9Y?5@
+ 00191 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 00198 ff 15 00 00 00
+ 00 call QWORD PTR __imp_strncmp
+ 0019e 85 c0 test eax, eax
+ 001a0 74 34 je SHORT $LN34@stbi__hdr_
+
+; 8064 : return stbi__errpf("unsupported data layout", "Unsupported HDR format");
+
+ 001a2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@
+ 001a9 e8 00 00 00 00 call stbi__err
+ 001ae 85 c0 test eax, eax
+ 001b0 74 0d je SHORT $LN62@stbi__hdr_
+ 001b2 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv138[rbp], 0
+ 001bd eb 0b jmp SHORT $LN63@stbi__hdr_
+$LN62@stbi__hdr_:
+ 001bf 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv138[rbp], 0
+$LN63@stbi__hdr_:
+ 001ca 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv138[rbp]
+ 001d1 e9 59 08 00 00 jmp $LN1@stbi__hdr_
+$LN34@stbi__hdr_:
+
+; 8065 : token += 3;
+
+ 001d6 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 001dd 48 83 c0 03 add rax, 3
+ 001e1 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8066 : height = (int)strtol(token, &token, 10);
+
+ 001e8 41 b8 0a 00 00
+ 00 mov r8d, 10
+ 001ee 48 8d 95 28 04
+ 00 00 lea rdx, QWORD PTR token$[rbp]
+ 001f5 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 001fc ff 15 00 00 00
+ 00 call QWORD PTR __imp_strtol
+ 00202 89 85 84 04 00
+ 00 mov DWORD PTR height$[rbp], eax
+$LN5@stbi__hdr_:
+
+; 8067 : while (*token == ' ')
+
+ 00208 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 0020f 0f be 00 movsx eax, BYTE PTR [rax]
+ 00212 83 f8 20 cmp eax, 32 ; 00000020H
+ 00215 75 13 jne SHORT $LN6@stbi__hdr_
+
+; 8068 : ++token;
+
+ 00217 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 0021e 48 ff c0 inc rax
+ 00221 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+ 00228 eb de jmp SHORT $LN5@stbi__hdr_
+$LN6@stbi__hdr_:
+
+; 8069 : if (strncmp(token, "+X ", 3))
+
+ 0022a 41 b8 03 00 00
+ 00 mov r8d, 3
+ 00230 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_03FOKDFDHG@?$CLX?5@
+ 00237 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 0023e ff 15 00 00 00
+ 00 call QWORD PTR __imp_strncmp
+ 00244 85 c0 test eax, eax
+ 00246 74 34 je SHORT $LN35@stbi__hdr_
+
+; 8070 : return stbi__errpf("unsupported data layout", "Unsupported HDR format");
+
+ 00248 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@
+ 0024f e8 00 00 00 00 call stbi__err
+ 00254 85 c0 test eax, eax
+ 00256 74 0d je SHORT $LN64@stbi__hdr_
+ 00258 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv155[rbp], 0
+ 00263 eb 0b jmp SHORT $LN65@stbi__hdr_
+$LN64@stbi__hdr_:
+ 00265 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv155[rbp], 0
+$LN65@stbi__hdr_:
+ 00270 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv155[rbp]
+ 00277 e9 b3 07 00 00 jmp $LN1@stbi__hdr_
+$LN35@stbi__hdr_:
+
+; 8071 : token += 3;
+
+ 0027c 48 8b 85 28 04
+ 00 00 mov rax, QWORD PTR token$[rbp]
+ 00283 48 83 c0 03 add rax, 3
+ 00287 48 89 85 28 04
+ 00 00 mov QWORD PTR token$[rbp], rax
+
+; 8072 : width = (int)strtol(token, NULL, 10);
+
+ 0028e 41 b8 0a 00 00
+ 00 mov r8d, 10
+ 00294 33 d2 xor edx, edx
+ 00296 48 8b 8d 28 04
+ 00 00 mov rcx, QWORD PTR token$[rbp]
+ 0029d ff 15 00 00 00
+ 00 call QWORD PTR __imp_strtol
+ 002a3 89 85 64 04 00
+ 00 mov DWORD PTR width$[rbp], eax
+
+; 8073 :
+; 8074 : if (height > STBI_MAX_DIMENSIONS)
+
+ 002a9 81 bd 84 04 00
+ 00 00 00 00 01 cmp DWORD PTR height$[rbp], 16777216 ; 01000000H
+ 002b3 7e 34 jle SHORT $LN36@stbi__hdr_
+
+; 8075 : return stbi__errpf("too large", "Very large image (corrupt?)");
+
+ 002b5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 002bc e8 00 00 00 00 call stbi__err
+ 002c1 85 c0 test eax, eax
+ 002c3 74 0d je SHORT $LN66@stbi__hdr_
+ 002c5 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv165[rbp], 0
+ 002d0 eb 0b jmp SHORT $LN67@stbi__hdr_
+$LN66@stbi__hdr_:
+ 002d2 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv165[rbp], 0
+$LN67@stbi__hdr_:
+ 002dd 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv165[rbp]
+ 002e4 e9 46 07 00 00 jmp $LN1@stbi__hdr_
+$LN36@stbi__hdr_:
+
+; 8076 : if (width > STBI_MAX_DIMENSIONS)
+
+ 002e9 81 bd 64 04 00
+ 00 00 00 00 01 cmp DWORD PTR width$[rbp], 16777216 ; 01000000H
+ 002f3 7e 34 jle SHORT $LN37@stbi__hdr_
+
+; 8077 : return stbi__errpf("too large", "Very large image (corrupt?)");
+
+ 002f5 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 002fc e8 00 00 00 00 call stbi__err
+ 00301 85 c0 test eax, eax
+ 00303 74 0d je SHORT $LN68@stbi__hdr_
+ 00305 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv170[rbp], 0
+ 00310 eb 0b jmp SHORT $LN69@stbi__hdr_
+$LN68@stbi__hdr_:
+ 00312 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv170[rbp], 0
+$LN69@stbi__hdr_:
+ 0031d 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv170[rbp]
+ 00324 e9 06 07 00 00 jmp $LN1@stbi__hdr_
+$LN37@stbi__hdr_:
+
+; 8078 :
+; 8079 : *x = width;
+
+ 00329 48 8b 85 b8 09
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00330 8b 8d 64 04 00
+ 00 mov ecx, DWORD PTR width$[rbp]
+ 00336 89 08 mov DWORD PTR [rax], ecx
+
+; 8080 : *y = height;
+
+ 00338 48 8b 85 c0 09
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 0033f 8b 8d 84 04 00
+ 00 mov ecx, DWORD PTR height$[rbp]
+ 00345 89 08 mov DWORD PTR [rax], ecx
+
+; 8081 :
+; 8082 : if (comp)
+
+ 00347 48 83 bd c8 09
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 0034f 74 0d je SHORT $LN38@stbi__hdr_
+
+; 8083 : *comp = 3;
+
+ 00351 48 8b 85 c8 09
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00358 c7 00 03 00 00
+ 00 mov DWORD PTR [rax], 3
+$LN38@stbi__hdr_:
+
+; 8084 : if (req_comp == 0)
+
+ 0035e 83 bd d0 09 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 00365 75 0a jne SHORT $LN39@stbi__hdr_
+
+; 8085 : req_comp = 3;
+
+ 00367 c7 85 d0 09 00
+ 00 03 00 00 00 mov DWORD PTR req_comp$[rbp], 3
+$LN39@stbi__hdr_:
+
+; 8086 :
+; 8087 : if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0))
+
+ 00371 c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 00379 41 b9 04 00 00
+ 00 mov r9d, 4
+ 0037f 44 8b 85 d0 09
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00386 8b 95 84 04 00
+ 00 mov edx, DWORD PTR height$[rbp]
+ 0038c 8b 8d 64 04 00
+ 00 mov ecx, DWORD PTR width$[rbp]
+ 00392 e8 00 00 00 00 call stbi__mad4sizes_valid
+ 00397 85 c0 test eax, eax
+ 00399 75 34 jne SHORT $LN40@stbi__hdr_
+
+; 8088 : return stbi__errpf("too large", "HDR image is too large");
+
+ 0039b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 003a2 e8 00 00 00 00 call stbi__err
+ 003a7 85 c0 test eax, eax
+ 003a9 74 0d je SHORT $LN70@stbi__hdr_
+ 003ab 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv183[rbp], 0
+ 003b6 eb 0b jmp SHORT $LN71@stbi__hdr_
+$LN70@stbi__hdr_:
+ 003b8 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv183[rbp], 0
+$LN71@stbi__hdr_:
+ 003c3 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv183[rbp]
+ 003ca e9 60 06 00 00 jmp $LN1@stbi__hdr_
+$LN40@stbi__hdr_:
+
+; 8089 :
+; 8090 : // Read data
+; 8091 : hdr_data = (float *)stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0);
+
+ 003cf c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 003d7 41 b9 04 00 00
+ 00 mov r9d, 4
+ 003dd 44 8b 85 d0 09
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 003e4 8b 95 84 04 00
+ 00 mov edx, DWORD PTR height$[rbp]
+ 003ea 8b 8d 64 04 00
+ 00 mov ecx, DWORD PTR width$[rbp]
+ 003f0 e8 00 00 00 00 call stbi__malloc_mad4
+ 003f5 48 89 85 c8 04
+ 00 00 mov QWORD PTR hdr_data$[rbp], rax
+
+; 8092 : if (!hdr_data)
+
+ 003fc 48 83 bd c8 04
+ 00 00 00 cmp QWORD PTR hdr_data$[rbp], 0
+ 00404 75 34 jne SHORT $LN41@stbi__hdr_
+
+; 8093 : return stbi__errpf("outofmem", "Out of memory");
+
+ 00406 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0040d e8 00 00 00 00 call stbi__err
+ 00412 85 c0 test eax, eax
+ 00414 74 0d je SHORT $LN72@stbi__hdr_
+ 00416 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv194[rbp], 0
+ 00421 eb 0b jmp SHORT $LN73@stbi__hdr_
+$LN72@stbi__hdr_:
+ 00423 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv194[rbp], 0
+$LN73@stbi__hdr_:
+ 0042e 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv194[rbp]
+ 00435 e9 f5 05 00 00 jmp $LN1@stbi__hdr_
+$LN41@stbi__hdr_:
+
+; 8094 :
+; 8095 : // Load image data
+; 8096 : // image data is stored as some number of sca
+; 8097 : if (width < 8 || width >= 32768) {
+
+ 0043a 83 bd 64 04 00
+ 00 08 cmp DWORD PTR width$[rbp], 8
+ 00441 7c 10 jl SHORT $LN44@stbi__hdr_
+ 00443 81 bd 64 04 00
+ 00 00 80 00 00 cmp DWORD PTR width$[rbp], 32768 ; 00008000H
+ 0044d 0f 8c c9 00 00
+ 00 jl $LN42@stbi__hdr_
+$LN44@stbi__hdr_:
+
+; 8098 : // Read flat data
+; 8099 : for (j = 0; j < height; ++j) {
+
+ 00453 c7 85 64 05 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 0045d eb 0e jmp SHORT $LN9@stbi__hdr_
+$LN7@stbi__hdr_:
+ 0045f 8b 85 64 05 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 00465 ff c0 inc eax
+ 00467 89 85 64 05 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN9@stbi__hdr_:
+ 0046d 8b 85 84 04 00
+ 00 mov eax, DWORD PTR height$[rbp]
+ 00473 39 85 64 05 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 00479 0f 8d 98 00 00
+ 00 jge $LN8@stbi__hdr_
+
+; 8100 : for (i = 0; i < width; ++i) {
+
+ 0047f c7 85 44 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00489 eb 0e jmp SHORT $LN12@stbi__hdr_
+$LN10@stbi__hdr_:
+ 0048b 8b 85 44 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00491 ff c0 inc eax
+ 00493 89 85 44 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN12@stbi__hdr_:
+ 00499 8b 85 64 04 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 0049f 39 85 44 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 004a5 7d 6b jge SHORT $LN11@stbi__hdr_
+$main_decode_loop$82:
+
+; 8101 : stbi_uc rgbe[4];
+; 8102 : main_decode_loop:
+; 8103 : stbi__getn(s, rgbe, 4);
+
+ 004a7 41 b8 04 00 00
+ 00 mov r8d, 4
+ 004ad 48 8d 95 24 06
+ 00 00 lea rdx, QWORD PTR rgbe$7[rbp]
+ 004b4 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004bb e8 00 00 00 00 call stbi__getn
+ 004c0 90 npad 1
+
+; 8104 : stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp,
+
+ 004c1 8b 85 64 05 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 004c7 0f af 85 64 04
+ 00 00 imul eax, DWORD PTR width$[rbp]
+ 004ce 0f af 85 d0 09
+ 00 00 imul eax, DWORD PTR req_comp$[rbp]
+ 004d5 48 98 cdqe
+ 004d7 48 8b 8d c8 04
+ 00 00 mov rcx, QWORD PTR hdr_data$[rbp]
+ 004de 48 8d 04 81 lea rax, QWORD PTR [rcx+rax*4]
+ 004e2 8b 8d 44 05 00
+ 00 mov ecx, DWORD PTR i$[rbp]
+ 004e8 0f af 8d d0 09
+ 00 00 imul ecx, DWORD PTR req_comp$[rbp]
+ 004ef 48 63 c9 movsxd rcx, ecx
+ 004f2 48 8d 04 88 lea rax, QWORD PTR [rax+rcx*4]
+ 004f6 44 8b 85 d0 09
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 004fd 48 8d 95 24 06
+ 00 00 lea rdx, QWORD PTR rgbe$7[rbp]
+ 00504 48 8b c8 mov rcx, rax
+ 00507 e8 00 00 00 00 call stbi__hdr_convert
+ 0050c 90 npad 1
+
+; 8105 : rgbe, req_comp);
+; 8106 : }
+
+ 0050d e9 79 ff ff ff jmp $LN10@stbi__hdr_
+$LN11@stbi__hdr_:
+
+; 8107 : }
+
+ 00512 e9 48 ff ff ff jmp $LN7@stbi__hdr_
+$LN8@stbi__hdr_:
+
+; 8108 : } else {
+
+ 00517 e9 0c 05 00 00 jmp $LN43@stbi__hdr_
+$LN42@stbi__hdr_:
+
+; 8109 : // Read RLE-encoded data
+; 8110 : scanline = NULL;
+
+ 0051c 48 c7 85 a8 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR scanline$[rbp], 0
+
+; 8111 :
+; 8112 : for (j = 0; j < height; ++j) {
+
+ 00527 c7 85 64 05 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 00531 eb 0e jmp SHORT $LN15@stbi__hdr_
+$LN13@stbi__hdr_:
+ 00533 8b 85 64 05 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 00539 ff c0 inc eax
+ 0053b 89 85 64 05 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN15@stbi__hdr_:
+ 00541 8b 85 84 04 00
+ 00 mov eax, DWORD PTR height$[rbp]
+ 00547 39 85 64 05 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 0054d 0f 8d bd 04 00
+ 00 jge $LN14@stbi__hdr_
+
+; 8113 : c1 = stbi__get8(s);
+
+ 00553 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0055a e8 00 00 00 00 call stbi__get8
+ 0055f 0f b6 c0 movzx eax, al
+ 00562 89 85 a4 05 00
+ 00 mov DWORD PTR c1$[rbp], eax
+
+; 8114 : c2 = stbi__get8(s);
+
+ 00568 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0056f e8 00 00 00 00 call stbi__get8
+ 00574 0f b6 c0 movzx eax, al
+ 00577 89 85 c4 05 00
+ 00 mov DWORD PTR c2$[rbp], eax
+
+; 8115 : len = stbi__get8(s);
+
+ 0057d 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00584 e8 00 00 00 00 call stbi__get8
+ 00589 0f b6 c0 movzx eax, al
+ 0058c 89 85 e4 04 00
+ 00 mov DWORD PTR len$[rbp], eax
+
+; 8116 : if (c1 != 2 || c2 != 2 || (len & 0x80)) {
+
+ 00592 83 bd a4 05 00
+ 00 02 cmp DWORD PTR c1$[rbp], 2
+ 00599 75 1c jne SHORT $LN46@stbi__hdr_
+ 0059b 83 bd c4 05 00
+ 00 02 cmp DWORD PTR c2$[rbp], 2
+ 005a2 75 13 jne SHORT $LN46@stbi__hdr_
+ 005a4 8b 85 e4 04 00
+ 00 mov eax, DWORD PTR len$[rbp]
+ 005aa 25 80 00 00 00 and eax, 128 ; 00000080H
+ 005af 85 c0 test eax, eax
+ 005b1 0f 84 a3 00 00
+ 00 je $LN45@stbi__hdr_
+$LN46@stbi__hdr_:
+
+; 8117 : // not run-length encoded, so we have to actually use THIS data as a decoded
+; 8118 : // pixel (note this can't be a valid pixel--one of RGB must be >= 128)
+; 8119 : stbi_uc rgbe[4];
+; 8120 : rgbe[0] = (stbi_uc)c1;
+
+ 005b7 b8 01 00 00 00 mov eax, 1
+ 005bc 48 6b c0 00 imul rax, rax, 0
+ 005c0 0f b6 8d a4 05
+ 00 00 movzx ecx, BYTE PTR c1$[rbp]
+ 005c7 88 8c 05 44 06
+ 00 00 mov BYTE PTR rgbe$8[rbp+rax], cl
+
+; 8121 : rgbe[1] = (stbi_uc)c2;
+
+ 005ce b8 01 00 00 00 mov eax, 1
+ 005d3 48 6b c0 01 imul rax, rax, 1
+ 005d7 0f b6 8d c4 05
+ 00 00 movzx ecx, BYTE PTR c2$[rbp]
+ 005de 88 8c 05 44 06
+ 00 00 mov BYTE PTR rgbe$8[rbp+rax], cl
+
+; 8122 : rgbe[2] = (stbi_uc)len;
+
+ 005e5 b8 01 00 00 00 mov eax, 1
+ 005ea 48 6b c0 02 imul rax, rax, 2
+ 005ee 0f b6 8d e4 04
+ 00 00 movzx ecx, BYTE PTR len$[rbp]
+ 005f5 88 8c 05 44 06
+ 00 00 mov BYTE PTR rgbe$8[rbp+rax], cl
+
+; 8123 : rgbe[3] = (stbi_uc)stbi__get8(s);
+
+ 005fc 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00603 e8 00 00 00 00 call stbi__get8
+ 00608 b9 01 00 00 00 mov ecx, 1
+ 0060d 48 6b c9 03 imul rcx, rcx, 3
+ 00611 88 84 0d 44 06
+ 00 00 mov BYTE PTR rgbe$8[rbp+rcx], al
+
+; 8124 : stbi__hdr_convert(hdr_data, rgbe, req_comp);
+
+ 00618 44 8b 85 d0 09
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 0061f 48 8d 95 44 06
+ 00 00 lea rdx, QWORD PTR rgbe$8[rbp]
+ 00626 48 8b 8d c8 04
+ 00 00 mov rcx, QWORD PTR hdr_data$[rbp]
+ 0062d e8 00 00 00 00 call stbi__hdr_convert
+ 00632 90 npad 1
+
+; 8125 : i = 1;
+
+ 00633 c7 85 44 05 00
+ 00 01 00 00 00 mov DWORD PTR i$[rbp], 1
+
+; 8126 : j = 0;
+
+ 0063d c7 85 64 05 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+
+; 8127 : STBI_FREE(scanline);
+
+ 00647 48 8b 8d a8 04
+ 00 00 mov rcx, QWORD PTR scanline$[rbp]
+ 0064e ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00654 90 npad 1
+
+; 8128 : goto main_decode_loop; // yes, this makes no sense
+
+ 00655 e9 4d fe ff ff jmp $main_decode_loop$82
+$LN45@stbi__hdr_:
+
+; 8129 : }
+; 8130 : len <<= 8;
+
+ 0065a 8b 85 e4 04 00
+ 00 mov eax, DWORD PTR len$[rbp]
+ 00660 c1 e0 08 shl eax, 8
+ 00663 89 85 e4 04 00
+ 00 mov DWORD PTR len$[rbp], eax
+
+; 8131 : len |= stbi__get8(s);
+
+ 00669 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00670 e8 00 00 00 00 call stbi__get8
+ 00675 0f b6 c0 movzx eax, al
+ 00678 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR len$[rbp]
+ 0067e 0b c8 or ecx, eax
+ 00680 8b c1 mov eax, ecx
+ 00682 89 85 e4 04 00
+ 00 mov DWORD PTR len$[rbp], eax
+
+; 8132 : if (len != width) {
+
+ 00688 8b 85 64 04 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 0068e 39 85 e4 04 00
+ 00 cmp DWORD PTR len$[rbp], eax
+ 00694 74 50 je SHORT $LN47@stbi__hdr_
+
+; 8133 : STBI_FREE(hdr_data);
+
+ 00696 48 8b 8d c8 04
+ 00 00 mov rcx, QWORD PTR hdr_data$[rbp]
+ 0069d ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 006a3 90 npad 1
+
+; 8134 : STBI_FREE(scanline);
+
+ 006a4 48 8b 8d a8 04
+ 00 00 mov rcx, QWORD PTR scanline$[rbp]
+ 006ab ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 006b1 90 npad 1
+
+; 8135 : return stbi__errpf("invalid decoded scanline length",
+
+ 006b2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@
+ 006b9 e8 00 00 00 00 call stbi__err
+ 006be 85 c0 test eax, eax
+ 006c0 74 0d je SHORT $LN74@stbi__hdr_
+ 006c2 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv256[rbp], 0
+ 006cd eb 0b jmp SHORT $LN75@stbi__hdr_
+$LN74@stbi__hdr_:
+ 006cf 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv256[rbp], 0
+$LN75@stbi__hdr_:
+ 006da 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv256[rbp]
+ 006e1 e9 49 03 00 00 jmp $LN1@stbi__hdr_
+$LN47@stbi__hdr_:
+
+; 8136 : "corrupt HDR");
+; 8137 : }
+; 8138 : if (scanline == NULL) {
+
+ 006e6 48 83 bd a8 04
+ 00 00 00 cmp QWORD PTR scanline$[rbp], 0
+ 006ee 75 66 jne SHORT $LN48@stbi__hdr_
+
+; 8139 : scanline = (stbi_uc *)stbi__malloc_mad2(width, 4, 0);
+
+ 006f0 45 33 c0 xor r8d, r8d
+ 006f3 ba 04 00 00 00 mov edx, 4
+ 006f8 8b 8d 64 04 00
+ 00 mov ecx, DWORD PTR width$[rbp]
+ 006fe e8 00 00 00 00 call stbi__malloc_mad2
+ 00703 48 89 85 a8 04
+ 00 00 mov QWORD PTR scanline$[rbp], rax
+
+; 8140 : if (!scanline) {
+
+ 0070a 48 83 bd a8 04
+ 00 00 00 cmp QWORD PTR scanline$[rbp], 0
+ 00712 75 42 jne SHORT $LN49@stbi__hdr_
+
+; 8141 : STBI_FREE(hdr_data);
+
+ 00714 48 8b 8d c8 04
+ 00 00 mov rcx, QWORD PTR hdr_data$[rbp]
+ 0071b ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00721 90 npad 1
+
+; 8142 : return stbi__errpf("outofmem", "Out of memory");
+
+ 00722 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00729 e8 00 00 00 00 call stbi__err
+ 0072e 85 c0 test eax, eax
+ 00730 74 0d je SHORT $LN76@stbi__hdr_
+ 00732 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv267[rbp], 0
+ 0073d eb 0b jmp SHORT $LN77@stbi__hdr_
+$LN76@stbi__hdr_:
+ 0073f 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv267[rbp], 0
+$LN77@stbi__hdr_:
+ 0074a 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv267[rbp]
+ 00751 e9 d9 02 00 00 jmp $LN1@stbi__hdr_
+$LN49@stbi__hdr_:
+$LN48@stbi__hdr_:
+
+; 8143 : }
+; 8144 : }
+; 8145 :
+; 8146 : for (k = 0; k < 4; ++k) {
+
+ 00756 c7 85 84 05 00
+ 00 00 00 00 00 mov DWORD PTR k$[rbp], 0
+ 00760 eb 0e jmp SHORT $LN18@stbi__hdr_
+$LN16@stbi__hdr_:
+ 00762 8b 85 84 05 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 00768 ff c0 inc eax
+ 0076a 89 85 84 05 00
+ 00 mov DWORD PTR k$[rbp], eax
+$LN18@stbi__hdr_:
+ 00770 83 bd 84 05 00
+ 00 04 cmp DWORD PTR k$[rbp], 4
+ 00777 0f 8d 14 02 00
+ 00 jge $LN17@stbi__hdr_
+
+; 8147 : int nleft;
+; 8148 : i = 0;
+
+ 0077d c7 85 44 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+$LN19@stbi__hdr_:
+
+; 8149 : while ((nleft = width - i) > 0) {
+
+ 00787 8b 85 44 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 0078d 8b 8d 64 04 00
+ 00 mov ecx, DWORD PTR width$[rbp]
+ 00793 2b c8 sub ecx, eax
+ 00795 8b c1 mov eax, ecx
+ 00797 89 85 64 06 00
+ 00 mov DWORD PTR nleft$9[rbp], eax
+ 0079d 83 bd 64 06 00
+ 00 00 cmp DWORD PTR nleft$9[rbp], 0
+ 007a4 0f 8e e2 01 00
+ 00 jle $LN20@stbi__hdr_
+
+; 8150 : count = stbi__get8(s);
+
+ 007aa 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 007b1 e8 00 00 00 00 call stbi__get8
+ 007b6 88 85 04 05 00
+ 00 mov BYTE PTR count$[rbp], al
+
+; 8151 : if (count > 128) {
+
+ 007bc 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 007c3 3d 80 00 00 00 cmp eax, 128 ; 00000080H
+ 007c8 0f 8e ee 00 00
+ 00 jle $LN50@stbi__hdr_
+
+; 8152 : // Run
+; 8153 : value = stbi__get8(s);
+
+ 007ce 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 007d5 e8 00 00 00 00 call stbi__get8
+ 007da 88 85 24 05 00
+ 00 mov BYTE PTR value$[rbp], al
+
+; 8154 : count -= 128;
+
+ 007e0 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 007e7 2d 80 00 00 00 sub eax, 128 ; 00000080H
+ 007ec 88 85 04 05 00
+ 00 mov BYTE PTR count$[rbp], al
+
+; 8155 : if ((count == 0) || (count > nleft)) {
+
+ 007f2 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 007f9 85 c0 test eax, eax
+ 007fb 74 0f je SHORT $LN53@stbi__hdr_
+ 007fd 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 00804 3b 85 64 06 00
+ 00 cmp eax, DWORD PTR nleft$9[rbp]
+ 0080a 7e 50 jle SHORT $LN52@stbi__hdr_
+$LN53@stbi__hdr_:
+
+; 8156 : STBI_FREE(hdr_data);
+
+ 0080c 48 8b 8d c8 04
+ 00 00 mov rcx, QWORD PTR hdr_data$[rbp]
+ 00813 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00819 90 npad 1
+
+; 8157 : STBI_FREE(scanline);
+
+ 0081a 48 8b 8d a8 04
+ 00 00 mov rcx, QWORD PTR scanline$[rbp]
+ 00821 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00827 90 npad 1
+
+; 8158 : return stbi__errpf("corrupt",
+
+ 00828 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@
+ 0082f e8 00 00 00 00 call stbi__err
+ 00834 85 c0 test eax, eax
+ 00836 74 0d je SHORT $LN78@stbi__hdr_
+ 00838 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv290[rbp], 0
+ 00843 eb 0b jmp SHORT $LN79@stbi__hdr_
+$LN78@stbi__hdr_:
+ 00845 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv290[rbp], 0
+$LN79@stbi__hdr_:
+ 00850 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv290[rbp]
+ 00857 e9 d3 01 00 00 jmp $LN1@stbi__hdr_
+$LN52@stbi__hdr_:
+
+; 8159 : "bad RLE data in HDR");
+; 8160 : }
+; 8161 : for (z = 0; z < count; ++z)
+
+ 0085c c7 85 e4 05 00
+ 00 00 00 00 00 mov DWORD PTR z$[rbp], 0
+ 00866 eb 0e jmp SHORT $LN23@stbi__hdr_
+$LN21@stbi__hdr_:
+ 00868 8b 85 e4 05 00
+ 00 mov eax, DWORD PTR z$[rbp]
+ 0086e ff c0 inc eax
+ 00870 89 85 e4 05 00
+ 00 mov DWORD PTR z$[rbp], eax
+$LN23@stbi__hdr_:
+ 00876 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 0087d 39 85 e4 05 00
+ 00 cmp DWORD PTR z$[rbp], eax
+ 00883 7d 32 jge SHORT $LN22@stbi__hdr_
+
+; 8162 : scanline[i++ * 4 + k] = value;
+
+ 00885 8b 85 84 05 00
+ 00 mov eax, DWORD PTR k$[rbp]
+ 0088b 8b 8d 44 05 00
+ 00 mov ecx, DWORD PTR i$[rbp]
+ 00891 8d 04 88 lea eax, DWORD PTR [rax+rcx*4]
+ 00894 48 98 cdqe
+ 00896 48 8b 8d a8 04
+ 00 00 mov rcx, QWORD PTR scanline$[rbp]
+ 0089d 0f b6 95 24 05
+ 00 00 movzx edx, BYTE PTR value$[rbp]
+ 008a4 88 14 01 mov BYTE PTR [rcx+rax], dl
+ 008a7 8b 85 44 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 008ad ff c0 inc eax
+ 008af 89 85 44 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 008b5 eb b1 jmp SHORT $LN21@stbi__hdr_
+$LN22@stbi__hdr_:
+
+; 8163 : } else {
+
+ 008b7 e9 cb 00 00 00 jmp $LN51@stbi__hdr_
+$LN50@stbi__hdr_:
+
+; 8164 : // Dump
+; 8165 : if ((count == 0) || (count > nleft)) {
+
+ 008bc 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 008c3 85 c0 test eax, eax
+ 008c5 74 0f je SHORT $LN55@stbi__hdr_
+ 008c7 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 008ce 3b 85 64 06 00
+ 00 cmp eax, DWORD PTR nleft$9[rbp]
+ 008d4 7e 50 jle SHORT $LN54@stbi__hdr_
+$LN55@stbi__hdr_:
+
+; 8166 : STBI_FREE(hdr_data);
+
+ 008d6 48 8b 8d c8 04
+ 00 00 mov rcx, QWORD PTR hdr_data$[rbp]
+ 008dd ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 008e3 90 npad 1
+
+; 8167 : STBI_FREE(scanline);
+
+ 008e4 48 8b 8d a8 04
+ 00 00 mov rcx, QWORD PTR scanline$[rbp]
+ 008eb ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 008f1 90 npad 1
+
+; 8168 : return stbi__errpf("corrupt",
+
+ 008f2 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@
+ 008f9 e8 00 00 00 00 call stbi__err
+ 008fe 85 c0 test eax, eax
+ 00900 74 0d je SHORT $LN80@stbi__hdr_
+ 00902 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv309[rbp], 0
+ 0090d eb 0b jmp SHORT $LN81@stbi__hdr_
+$LN80@stbi__hdr_:
+ 0090f 48 c7 85 78 09
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv309[rbp], 0
+$LN81@stbi__hdr_:
+ 0091a 48 8b 85 78 09
+ 00 00 mov rax, QWORD PTR tv309[rbp]
+ 00921 e9 09 01 00 00 jmp $LN1@stbi__hdr_
+$LN54@stbi__hdr_:
+
+; 8169 : "bad RLE data in HDR");
+; 8170 : }
+; 8171 : for (z = 0; z < count; ++z)
+
+ 00926 c7 85 e4 05 00
+ 00 00 00 00 00 mov DWORD PTR z$[rbp], 0
+ 00930 eb 0e jmp SHORT $LN26@stbi__hdr_
+$LN24@stbi__hdr_:
+ 00932 8b 85 e4 05 00
+ 00 mov eax, DWORD PTR z$[rbp]
+ 00938 ff c0 inc eax
+ 0093a 89 85 e4 05 00
+ 00 mov DWORD PTR z$[rbp], eax
+$LN26@stbi__hdr_:
+ 00940 0f b6 85 04 05
+ 00 00 movzx eax, BYTE PTR count$[rbp]
+ 00947 39 85 e4 05 00
+ 00 cmp DWORD PTR z$[rbp], eax
+ 0094d 7d 38 jge SHORT $LN25@stbi__hdr_
+
+; 8172 : scanline[i++ * 4 + k] = stbi__get8(s);
+
+ 0094f 48 8b 8d b0 09
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00956 e8 00 00 00 00 call stbi__get8
+ 0095b 8b 8d 84 05 00
+ 00 mov ecx, DWORD PTR k$[rbp]
+ 00961 8b 95 44 05 00
+ 00 mov edx, DWORD PTR i$[rbp]
+ 00967 8d 0c 91 lea ecx, DWORD PTR [rcx+rdx*4]
+ 0096a 48 63 c9 movsxd rcx, ecx
+ 0096d 48 8b 95 a8 04
+ 00 00 mov rdx, QWORD PTR scanline$[rbp]
+ 00974 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00977 8b 85 44 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 0097d ff c0 inc eax
+ 0097f 89 85 44 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 00985 eb ab jmp SHORT $LN24@stbi__hdr_
+$LN25@stbi__hdr_:
+$LN51@stbi__hdr_:
+
+; 8173 : }
+; 8174 : }
+
+ 00987 e9 fb fd ff ff jmp $LN19@stbi__hdr_
+$LN20@stbi__hdr_:
+
+; 8175 : }
+
+ 0098c e9 d1 fd ff ff jmp $LN16@stbi__hdr_
+$LN17@stbi__hdr_:
+
+; 8176 : for (i = 0; i < width; ++i)
+
+ 00991 c7 85 44 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 0099b eb 0e jmp SHORT $LN29@stbi__hdr_
+$LN27@stbi__hdr_:
+ 0099d 8b 85 44 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 009a3 ff c0 inc eax
+ 009a5 89 85 44 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN29@stbi__hdr_:
+ 009ab 8b 85 64 04 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 009b1 39 85 44 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 009b7 7d 52 jge SHORT $LN28@stbi__hdr_
+
+; 8177 : stbi__hdr_convert(hdr_data + (j * width + i) * req_comp,
+
+ 009b9 8b 85 44 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 009bf c1 e0 02 shl eax, 2
+ 009c2 48 98 cdqe
+ 009c4 48 8b 8d a8 04
+ 00 00 mov rcx, QWORD PTR scanline$[rbp]
+ 009cb 48 03 c8 add rcx, rax
+ 009ce 48 8b c1 mov rax, rcx
+ 009d1 8b 8d 64 05 00
+ 00 mov ecx, DWORD PTR j$[rbp]
+ 009d7 0f af 8d 64 04
+ 00 00 imul ecx, DWORD PTR width$[rbp]
+ 009de 03 8d 44 05 00
+ 00 add ecx, DWORD PTR i$[rbp]
+ 009e4 0f af 8d d0 09
+ 00 00 imul ecx, DWORD PTR req_comp$[rbp]
+ 009eb 48 63 c9 movsxd rcx, ecx
+ 009ee 48 8b 95 c8 04
+ 00 00 mov rdx, QWORD PTR hdr_data$[rbp]
+ 009f5 48 8d 0c 8a lea rcx, QWORD PTR [rdx+rcx*4]
+ 009f9 44 8b 85 d0 09
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00a00 48 8b d0 mov rdx, rax
+ 00a03 e8 00 00 00 00 call stbi__hdr_convert
+ 00a08 90 npad 1
+ 00a09 eb 92 jmp SHORT $LN27@stbi__hdr_
+$LN28@stbi__hdr_:
+
+; 8178 : scanline + i * 4, req_comp);
+; 8179 : }
+
+ 00a0b e9 23 fb ff ff jmp $LN13@stbi__hdr_
+$LN14@stbi__hdr_:
+
+; 8180 : if (scanline)
+
+ 00a10 48 83 bd a8 04
+ 00 00 00 cmp QWORD PTR scanline$[rbp], 0
+ 00a18 74 0e je SHORT $LN56@stbi__hdr_
+
+; 8181 : STBI_FREE(scanline);
+
+ 00a1a 48 8b 8d a8 04
+ 00 00 mov rcx, QWORD PTR scanline$[rbp]
+ 00a21 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00a27 90 npad 1
+$LN56@stbi__hdr_:
+$LN43@stbi__hdr_:
+
+; 8182 : }
+; 8183 :
+; 8184 : return hdr_data;
+
+ 00a28 48 8b 85 c8 04
+ 00 00 mov rax, QWORD PTR hdr_data$[rbp]
+$LN1@stbi__hdr_:
+
+; 8185 : }
+
+ 00a2f 48 8b f8 mov rdi, rax
+ 00a32 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00a36 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__hdr_load$rtcFrameData
+ 00a3d e8 00 00 00 00 call _RTC_CheckStackVars
+ 00a42 48 8b c7 mov rax, rdi
+ 00a45 48 8b 8d 80 09
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00a4c 48 33 cd xor rcx, rbp
+ 00a4f e8 00 00 00 00 call __security_check_cookie
+ 00a54 48 8d a5 98 09
+ 00 00 lea rsp, QWORD PTR [rbp+2456]
+ 00a5b 5f pop rdi
+ 00a5c 5d pop rbp
+ 00a5d c3 ret 0
+stbi__hdr_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__hdr_test
+_TEXT SEGMENT
+r$ = 4
+s$ = 256
+stbi__hdr_test PROC ; COMDAT
+
+; 7962 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 7963 : int r = stbi__hdr_test_core(s, "#?RADIANCE\n");
+
+ 00020 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@
+ 00027 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002e e8 00 00 00 00 call stbi__hdr_test_core
+ 00033 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 7964 : stbi__rewind(s);
+
+ 00036 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0003d e8 00 00 00 00 call stbi__rewind
+ 00042 90 npad 1
+
+; 7965 : if (!r) {
+
+ 00043 83 7d 04 00 cmp DWORD PTR r$[rbp], 0
+ 00047 75 23 jne SHORT $LN2@stbi__hdr_
+
+; 7966 : r = stbi__hdr_test_core(s, "#?RGBE\n");
+
+ 00049 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@
+ 00050 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00057 e8 00 00 00 00 call stbi__hdr_test_core
+ 0005c 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 7967 : stbi__rewind(s);
+
+ 0005f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00066 e8 00 00 00 00 call stbi__rewind
+ 0006b 90 npad 1
+$LN2@stbi__hdr_:
+
+; 7968 : }
+; 7969 : return r;
+
+ 0006c 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 7970 : }
+
+ 0006f 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00076 5f pop rdi
+ 00077 5d pop rbp
+ 00078 c3 ret 0
+stbi__hdr_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__psd_is16
+_TEXT SEGMENT
+channelCount$ = 4
+depth$ = 36
+s$ = 288
+stbi__psd_is16 PROC ; COMDAT
+
+; 8304 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 8305 : int channelCount, depth;
+; 8306 : if (stbi__get32be(s) != 0x38425053) {
+
+ 00020 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get32be
+ 0002c 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
+ 00031 74 14 je SHORT $LN2@stbi__psd_
+
+; 8307 : stbi__rewind(s);
+
+ 00033 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0003a e8 00 00 00 00 call stbi__rewind
+ 0003f 90 npad 1
+
+; 8308 : return 0;
+
+ 00040 33 c0 xor eax, eax
+ 00042 e9 a8 00 00 00 jmp $LN1@stbi__psd_
+$LN2@stbi__psd_:
+
+; 8309 : }
+; 8310 : if (stbi__get16be(s) != 1) {
+
+ 00047 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004e e8 00 00 00 00 call stbi__get16be
+ 00053 83 f8 01 cmp eax, 1
+ 00056 74 14 je SHORT $LN3@stbi__psd_
+
+; 8311 : stbi__rewind(s);
+
+ 00058 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0005f e8 00 00 00 00 call stbi__rewind
+ 00064 90 npad 1
+
+; 8312 : return 0;
+
+ 00065 33 c0 xor eax, eax
+ 00067 e9 83 00 00 00 jmp $LN1@stbi__psd_
+$LN3@stbi__psd_:
+
+; 8313 : }
+; 8314 : stbi__skip(s, 6);
+
+ 0006c ba 06 00 00 00 mov edx, 6
+ 00071 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00078 e8 00 00 00 00 call stbi__skip
+ 0007d 90 npad 1
+
+; 8315 : channelCount = stbi__get16be(s);
+
+ 0007e 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00085 e8 00 00 00 00 call stbi__get16be
+ 0008a 89 45 04 mov DWORD PTR channelCount$[rbp], eax
+
+; 8316 : if (channelCount < 0 || channelCount > 16) {
+
+ 0008d 83 7d 04 00 cmp DWORD PTR channelCount$[rbp], 0
+ 00091 7c 06 jl SHORT $LN5@stbi__psd_
+ 00093 83 7d 04 10 cmp DWORD PTR channelCount$[rbp], 16
+ 00097 7e 11 jle SHORT $LN4@stbi__psd_
+$LN5@stbi__psd_:
+
+; 8317 : stbi__rewind(s);
+
+ 00099 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a0 e8 00 00 00 00 call stbi__rewind
+ 000a5 90 npad 1
+
+; 8318 : return 0;
+
+ 000a6 33 c0 xor eax, eax
+ 000a8 eb 45 jmp SHORT $LN1@stbi__psd_
+$LN4@stbi__psd_:
+
+; 8319 : }
+; 8320 : STBI_NOTUSED(stbi__get32be(s));
+
+ 000aa 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000b1 e8 00 00 00 00 call stbi__get32be
+ 000b6 90 npad 1
+
+; 8321 : STBI_NOTUSED(stbi__get32be(s));
+
+ 000b7 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000be e8 00 00 00 00 call stbi__get32be
+ 000c3 90 npad 1
+
+; 8322 : depth = stbi__get16be(s);
+
+ 000c4 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000cb e8 00 00 00 00 call stbi__get16be
+ 000d0 89 45 24 mov DWORD PTR depth$[rbp], eax
+
+; 8323 : if (depth != 16) {
+
+ 000d3 83 7d 24 10 cmp DWORD PTR depth$[rbp], 16
+ 000d7 74 11 je SHORT $LN6@stbi__psd_
+
+; 8324 : stbi__rewind(s);
+
+ 000d9 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000e0 e8 00 00 00 00 call stbi__rewind
+ 000e5 90 npad 1
+
+; 8325 : return 0;
+
+ 000e6 33 c0 xor eax, eax
+ 000e8 eb 05 jmp SHORT $LN1@stbi__psd_
+$LN6@stbi__psd_:
+
+; 8326 : }
+; 8327 : return 1;
+
+ 000ea b8 01 00 00 00 mov eax, 1
+$LN1@stbi__psd_:
+
+; 8328 : }
+
+ 000ef 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000f6 5f pop rdi
+ 000f7 5d pop rbp
+ 000f8 c3 ret 0
+stbi__psd_is16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__psd_info
+_TEXT SEGMENT
+channelCount$ = 4
+dummy$ = 36
+depth$ = 68
+__$ArrayPad$ = 280
+s$ = 320
+x$ = 328
+y$ = 336
+comp$ = 344
+stbi__psd_info PROC ; COMDAT
+
+; 8266 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 1a 00 00 00 mov ecx, 26
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 68
+ 01 00 00 mov rcx, QWORD PTR [rsp+360]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 18 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8267 : int channelCount, dummy, depth;
+; 8268 : if (!x)
+
+ 00059 48 83 bd 48 01
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 00061 75 0b jne SHORT $LN2@stbi__psd_
+
+; 8269 : x = &dummy;
+
+ 00063 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
+ 00067 48 89 85 48 01
+ 00 00 mov QWORD PTR x$[rbp], rax
+$LN2@stbi__psd_:
+
+; 8270 : if (!y)
+
+ 0006e 48 83 bd 50 01
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 00076 75 0b jne SHORT $LN3@stbi__psd_
+
+; 8271 : y = &dummy;
+
+ 00078 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
+ 0007c 48 89 85 50 01
+ 00 00 mov QWORD PTR y$[rbp], rax
+$LN3@stbi__psd_:
+
+; 8272 : if (!comp)
+
+ 00083 48 83 bd 58 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 0008b 75 0b jne SHORT $LN4@stbi__psd_
+
+; 8273 : comp = &dummy;
+
+ 0008d 48 8d 45 24 lea rax, QWORD PTR dummy$[rbp]
+ 00091 48 89 85 58 01
+ 00 00 mov QWORD PTR comp$[rbp], rax
+$LN4@stbi__psd_:
+
+; 8274 : if (stbi__get32be(s) != 0x38425053) {
+
+ 00098 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0009f e8 00 00 00 00 call stbi__get32be
+ 000a4 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
+ 000a9 74 14 je SHORT $LN5@stbi__psd_
+
+; 8275 : stbi__rewind(s);
+
+ 000ab 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000b2 e8 00 00 00 00 call stbi__rewind
+ 000b7 90 npad 1
+
+; 8276 : return 0;
+
+ 000b8 33 c0 xor eax, eax
+ 000ba e9 f0 00 00 00 jmp $LN1@stbi__psd_
+$LN5@stbi__psd_:
+
+; 8277 : }
+; 8278 : if (stbi__get16be(s) != 1) {
+
+ 000bf 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c6 e8 00 00 00 00 call stbi__get16be
+ 000cb 83 f8 01 cmp eax, 1
+ 000ce 74 14 je SHORT $LN6@stbi__psd_
+
+; 8279 : stbi__rewind(s);
+
+ 000d0 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000d7 e8 00 00 00 00 call stbi__rewind
+ 000dc 90 npad 1
+
+; 8280 : return 0;
+
+ 000dd 33 c0 xor eax, eax
+ 000df e9 cb 00 00 00 jmp $LN1@stbi__psd_
+$LN6@stbi__psd_:
+
+; 8281 : }
+; 8282 : stbi__skip(s, 6);
+
+ 000e4 ba 06 00 00 00 mov edx, 6
+ 000e9 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000f0 e8 00 00 00 00 call stbi__skip
+ 000f5 90 npad 1
+
+; 8283 : channelCount = stbi__get16be(s);
+
+ 000f6 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000fd e8 00 00 00 00 call stbi__get16be
+ 00102 89 45 04 mov DWORD PTR channelCount$[rbp], eax
+
+; 8284 : if (channelCount < 0 || channelCount > 16) {
+
+ 00105 83 7d 04 00 cmp DWORD PTR channelCount$[rbp], 0
+ 00109 7c 06 jl SHORT $LN8@stbi__psd_
+ 0010b 83 7d 04 10 cmp DWORD PTR channelCount$[rbp], 16
+ 0010f 7e 14 jle SHORT $LN7@stbi__psd_
+$LN8@stbi__psd_:
+
+; 8285 : stbi__rewind(s);
+
+ 00111 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00118 e8 00 00 00 00 call stbi__rewind
+ 0011d 90 npad 1
+
+; 8286 : return 0;
+
+ 0011e 33 c0 xor eax, eax
+ 00120 e9 8a 00 00 00 jmp $LN1@stbi__psd_
+$LN7@stbi__psd_:
+
+; 8287 : }
+; 8288 : *y = stbi__get32be(s);
+
+ 00125 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0012c e8 00 00 00 00 call stbi__get32be
+ 00131 48 8b 8d 50 01
+ 00 00 mov rcx, QWORD PTR y$[rbp]
+ 00138 89 01 mov DWORD PTR [rcx], eax
+
+; 8289 : *x = stbi__get32be(s);
+
+ 0013a 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00141 e8 00 00 00 00 call stbi__get32be
+ 00146 48 8b 8d 48 01
+ 00 00 mov rcx, QWORD PTR x$[rbp]
+ 0014d 89 01 mov DWORD PTR [rcx], eax
+
+; 8290 : depth = stbi__get16be(s);
+
+ 0014f 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00156 e8 00 00 00 00 call stbi__get16be
+ 0015b 89 45 44 mov DWORD PTR depth$[rbp], eax
+
+; 8291 : if (depth != 8 && depth != 16) {
+
+ 0015e 83 7d 44 08 cmp DWORD PTR depth$[rbp], 8
+ 00162 74 17 je SHORT $LN9@stbi__psd_
+ 00164 83 7d 44 10 cmp DWORD PTR depth$[rbp], 16
+ 00168 74 11 je SHORT $LN9@stbi__psd_
+
+; 8292 : stbi__rewind(s);
+
+ 0016a 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00171 e8 00 00 00 00 call stbi__rewind
+ 00176 90 npad 1
+
+; 8293 : return 0;
+
+ 00177 33 c0 xor eax, eax
+ 00179 eb 34 jmp SHORT $LN1@stbi__psd_
+$LN9@stbi__psd_:
+
+; 8294 : }
+; 8295 : if (stbi__get16be(s) != 3) {
+
+ 0017b 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00182 e8 00 00 00 00 call stbi__get16be
+ 00187 83 f8 03 cmp eax, 3
+ 0018a 74 11 je SHORT $LN10@stbi__psd_
+
+; 8296 : stbi__rewind(s);
+
+ 0018c 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00193 e8 00 00 00 00 call stbi__rewind
+ 00198 90 npad 1
+
+; 8297 : return 0;
+
+ 00199 33 c0 xor eax, eax
+ 0019b eb 12 jmp SHORT $LN1@stbi__psd_
+$LN10@stbi__psd_:
+
+; 8298 : }
+; 8299 : *comp = 4;
+
+ 0019d 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 001a4 c7 00 04 00 00
+ 00 mov DWORD PTR [rax], 4
+
+; 8300 : return 1;
+
+ 001aa b8 01 00 00 00 mov eax, 1
+$LN1@stbi__psd_:
+
+; 8301 : }
+
+ 001af 48 8b f8 mov rdi, rax
+ 001b2 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 001b6 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__psd_info$rtcFrameData
+ 001bd e8 00 00 00 00 call _RTC_CheckStackVars
+ 001c2 48 8b c7 mov rax, rdi
+ 001c5 48 8b 8d 18 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 001cc 48 33 cd xor rcx, rbp
+ 001cf e8 00 00 00 00 call __security_check_cookie
+ 001d4 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 001db 5f pop rdi
+ 001dc 5d pop rbp
+ 001dd c3 ret 0
+stbi__psd_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__psd_load
+_TEXT SEGMENT
+pixelCount$ = 4
+channelCount$ = 36
+compression$ = 68
+channel$ = 100
+i$ = 132
+bitdepth$ = 164
+w$ = 196
+h$ = 228
+out$ = 264
+p$1 = 296
+q$2 = 328
+val$3 = 356
+p$4 = 392
+val$5 = 420
+q$6 = 456
+p$7 = 488
+pixel$8 = 520
+a$9 = 548
+ra$10 = 580
+inv_a$11 = 612
+pixel$12 = 648
+a$13 = 676
+ra$14 = 708
+inv_a$15 = 740
+tv241 = 1140
+tv212 = 1140
+tv233 = 1140
+tv87 = 1144
+tv128 = 1144
+tv133 = 1144
+tv141 = 1144
+tv148 = 1144
+tv167 = 1144
+tv196 = 1144
+tv70 = 1144
+tv223 = 1144
+tv77 = 1144
+tv177 = 1144
+s$ = 1184
+x$ = 1192
+y$ = 1200
+comp$ = 1208
+req_comp$ = 1216
+ri$ = 1224
+bpc$ = 1232
+stbi__psd_load PROC ; COMDAT
+
+; 6922 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec b8 04
+ 00 00 sub rsp, 1208 ; 000004b8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 6923 : int pixelCount;
+; 6924 : int channelCount, compression;
+; 6925 : int channel, i;
+; 6926 : int bitdepth;
+; 6927 : int w, h;
+; 6928 : stbi_uc *out;
+; 6929 : STBI_NOTUSED(ri);
+; 6930 :
+; 6931 : // Check identifier
+; 6932 : if (stbi__get32be(s) != 0x38425053) // "8BPS"
+
+ 0002f 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__get32be
+ 0003b 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
+ 00040 74 34 je SHORT $LN32@stbi__psd_
+
+; 6933 : return stbi__errpuc("not PSD", "Corrupt PSD image");
+
+ 00042 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07ECNCNLIK@not?5PSD@
+ 00049 e8 00 00 00 00 call stbi__err
+ 0004e 85 c0 test eax, eax
+ 00050 74 0d je SHORT $LN69@stbi__psd_
+ 00052 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv70[rbp], 0
+ 0005d eb 0b jmp SHORT $LN70@stbi__psd_
+$LN69@stbi__psd_:
+ 0005f 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv70[rbp], 0
+$LN70@stbi__psd_:
+ 0006a 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv70[rbp]
+ 00071 e9 b7 0b 00 00 jmp $LN1@stbi__psd_
+$LN32@stbi__psd_:
+
+; 6934 :
+; 6935 : // Check file type version.
+; 6936 : if (stbi__get16be(s) != 1)
+
+ 00076 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0007d e8 00 00 00 00 call stbi__get16be
+ 00082 83 f8 01 cmp eax, 1
+ 00085 74 34 je SHORT $LN33@stbi__psd_
+
+; 6937 : return stbi__errpuc("wrong version", "Unsupported version of PSD image");
+
+ 00087 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0O@CHBCDKKC@wrong?5version@
+ 0008e e8 00 00 00 00 call stbi__err
+ 00093 85 c0 test eax, eax
+ 00095 74 0d je SHORT $LN71@stbi__psd_
+ 00097 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv77[rbp], 0
+ 000a2 eb 0b jmp SHORT $LN72@stbi__psd_
+$LN71@stbi__psd_:
+ 000a4 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv77[rbp], 0
+$LN72@stbi__psd_:
+ 000af 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv77[rbp]
+ 000b6 e9 72 0b 00 00 jmp $LN1@stbi__psd_
+$LN33@stbi__psd_:
+
+; 6938 :
+; 6939 : // Skip 6 reserved bytes.
+; 6940 : stbi__skip(s, 6);
+
+ 000bb ba 06 00 00 00 mov edx, 6
+ 000c0 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c7 e8 00 00 00 00 call stbi__skip
+ 000cc 90 npad 1
+
+; 6941 :
+; 6942 : // Read the number of channels (R, G, B, A, etc).
+; 6943 : channelCount = stbi__get16be(s);
+
+ 000cd 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000d4 e8 00 00 00 00 call stbi__get16be
+ 000d9 89 45 24 mov DWORD PTR channelCount$[rbp], eax
+
+; 6944 : if (channelCount < 0 || channelCount > 16)
+
+ 000dc 83 7d 24 00 cmp DWORD PTR channelCount$[rbp], 0
+ 000e0 7c 06 jl SHORT $LN35@stbi__psd_
+ 000e2 83 7d 24 10 cmp DWORD PTR channelCount$[rbp], 16
+ 000e6 7e 34 jle SHORT $LN34@stbi__psd_
+$LN35@stbi__psd_:
+
+; 6945 : return stbi__errpuc("wrong channel count",
+
+ 000e8 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BE@PJBNGDBE@wrong?5channel?5count@
+ 000ef e8 00 00 00 00 call stbi__err
+ 000f4 85 c0 test eax, eax
+ 000f6 74 0d je SHORT $LN73@stbi__psd_
+ 000f8 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv87[rbp], 0
+ 00103 eb 0b jmp SHORT $LN74@stbi__psd_
+$LN73@stbi__psd_:
+ 00105 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv87[rbp], 0
+$LN74@stbi__psd_:
+ 00110 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv87[rbp]
+ 00117 e9 11 0b 00 00 jmp $LN1@stbi__psd_
+$LN34@stbi__psd_:
+
+; 6946 : "Unsupported number of channels in PSD image");
+; 6947 :
+; 6948 : // Read the rows and columns of the image.
+; 6949 : h = stbi__get32be(s);
+
+ 0011c 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00123 e8 00 00 00 00 call stbi__get32be
+ 00128 89 85 e4 00 00
+ 00 mov DWORD PTR h$[rbp], eax
+
+; 6950 : w = stbi__get32be(s);
+
+ 0012e 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00135 e8 00 00 00 00 call stbi__get32be
+ 0013a 89 85 c4 00 00
+ 00 mov DWORD PTR w$[rbp], eax
+
+; 6951 :
+; 6952 : if (h > STBI_MAX_DIMENSIONS)
+
+ 00140 81 bd e4 00 00
+ 00 00 00 00 01 cmp DWORD PTR h$[rbp], 16777216 ; 01000000H
+ 0014a 7e 34 jle SHORT $LN36@stbi__psd_
+
+; 6953 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 0014c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00153 e8 00 00 00 00 call stbi__err
+ 00158 85 c0 test eax, eax
+ 0015a 74 0d je SHORT $LN75@stbi__psd_
+ 0015c 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv128[rbp], 0
+ 00167 eb 0b jmp SHORT $LN76@stbi__psd_
+$LN75@stbi__psd_:
+ 00169 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv128[rbp], 0
+$LN76@stbi__psd_:
+ 00174 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv128[rbp]
+ 0017b e9 ad 0a 00 00 jmp $LN1@stbi__psd_
+$LN36@stbi__psd_:
+
+; 6954 : if (w > STBI_MAX_DIMENSIONS)
+
+ 00180 81 bd c4 00 00
+ 00 00 00 00 01 cmp DWORD PTR w$[rbp], 16777216 ; 01000000H
+ 0018a 7e 34 jle SHORT $LN37@stbi__psd_
+
+; 6955 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 0018c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 00193 e8 00 00 00 00 call stbi__err
+ 00198 85 c0 test eax, eax
+ 0019a 74 0d je SHORT $LN77@stbi__psd_
+ 0019c 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv133[rbp], 0
+ 001a7 eb 0b jmp SHORT $LN78@stbi__psd_
+$LN77@stbi__psd_:
+ 001a9 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv133[rbp], 0
+$LN78@stbi__psd_:
+ 001b4 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv133[rbp]
+ 001bb e9 6d 0a 00 00 jmp $LN1@stbi__psd_
+$LN37@stbi__psd_:
+
+; 6956 :
+; 6957 : // Make sure the depth is 8 bits.
+; 6958 : bitdepth = stbi__get16be(s);
+
+ 001c0 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001c7 e8 00 00 00 00 call stbi__get16be
+ 001cc 89 85 a4 00 00
+ 00 mov DWORD PTR bitdepth$[rbp], eax
+
+; 6959 : if (bitdepth != 8 && bitdepth != 16)
+
+ 001d2 83 bd a4 00 00
+ 00 08 cmp DWORD PTR bitdepth$[rbp], 8
+ 001d9 74 3d je SHORT $LN38@stbi__psd_
+ 001db 83 bd a4 00 00
+ 00 10 cmp DWORD PTR bitdepth$[rbp], 16
+ 001e2 74 34 je SHORT $LN38@stbi__psd_
+
+; 6960 : return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit");
+
+ 001e4 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@
+ 001eb e8 00 00 00 00 call stbi__err
+ 001f0 85 c0 test eax, eax
+ 001f2 74 0d je SHORT $LN79@stbi__psd_
+ 001f4 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv141[rbp], 0
+ 001ff eb 0b jmp SHORT $LN80@stbi__psd_
+$LN79@stbi__psd_:
+ 00201 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv141[rbp], 0
+$LN80@stbi__psd_:
+ 0020c 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv141[rbp]
+ 00213 e9 15 0a 00 00 jmp $LN1@stbi__psd_
+$LN38@stbi__psd_:
+
+; 6961 :
+; 6962 : // Make sure the color mode is RGB.
+; 6963 : // Valid options are:
+; 6964 : // 0: Bitmap
+; 6965 : // 1: Grayscale
+; 6966 : // 2: Indexed color
+; 6967 : // 3: RGB color
+; 6968 : // 4: CMYK color
+; 6969 : // 7: Multichannel
+; 6970 : // 8: Duotone
+; 6971 : // 9: Lab color
+; 6972 : if (stbi__get16be(s) != 3)
+
+ 00218 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0021f e8 00 00 00 00 call stbi__get16be
+ 00224 83 f8 03 cmp eax, 3
+ 00227 74 34 je SHORT $LN39@stbi__psd_
+
+; 6973 : return stbi__errpuc("wrong color format", "PSD is not in RGB color format");
+
+ 00229 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BD@IOGGBMNK@wrong?5color?5format@
+ 00230 e8 00 00 00 00 call stbi__err
+ 00235 85 c0 test eax, eax
+ 00237 74 0d je SHORT $LN81@stbi__psd_
+ 00239 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv148[rbp], 0
+ 00244 eb 0b jmp SHORT $LN82@stbi__psd_
+$LN81@stbi__psd_:
+ 00246 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv148[rbp], 0
+$LN82@stbi__psd_:
+ 00251 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv148[rbp]
+ 00258 e9 d0 09 00 00 jmp $LN1@stbi__psd_
+$LN39@stbi__psd_:
+
+; 6974 :
+; 6975 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.)
+; 6976 : stbi__skip(s, stbi__get32be(s));
+
+ 0025d 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00264 e8 00 00 00 00 call stbi__get32be
+ 00269 8b d0 mov edx, eax
+ 0026b 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00272 e8 00 00 00 00 call stbi__skip
+ 00277 90 npad 1
+
+; 6977 :
+; 6978 : // Skip the image resources. (resolution, pen tool paths, etc)
+; 6979 : stbi__skip(s, stbi__get32be(s));
+
+ 00278 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0027f e8 00 00 00 00 call stbi__get32be
+ 00284 8b d0 mov edx, eax
+ 00286 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0028d e8 00 00 00 00 call stbi__skip
+ 00292 90 npad 1
+
+; 6980 :
+; 6981 : // Skip the reserved data.
+; 6982 : stbi__skip(s, stbi__get32be(s));
+
+ 00293 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0029a e8 00 00 00 00 call stbi__get32be
+ 0029f 8b d0 mov edx, eax
+ 002a1 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 002a8 e8 00 00 00 00 call stbi__skip
+ 002ad 90 npad 1
+
+; 6983 :
+; 6984 : // Find out if the data is compressed.
+; 6985 : // Known values:
+; 6986 : // 0: no compression
+; 6987 : // 1: RLE compressed
+; 6988 : compression = stbi__get16be(s);
+
+ 002ae 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 002b5 e8 00 00 00 00 call stbi__get16be
+ 002ba 89 45 44 mov DWORD PTR compression$[rbp], eax
+
+; 6989 : if (compression > 1)
+
+ 002bd 83 7d 44 01 cmp DWORD PTR compression$[rbp], 1
+ 002c1 7e 34 jle SHORT $LN40@stbi__psd_
+
+; 6990 : return stbi__errpuc("bad compression", "PSD has an unknown compression format");
+
+ 002c3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@MCNBDLPD@bad?5compression@
+ 002ca e8 00 00 00 00 call stbi__err
+ 002cf 85 c0 test eax, eax
+ 002d1 74 0d je SHORT $LN83@stbi__psd_
+ 002d3 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv167[rbp], 0
+ 002de eb 0b jmp SHORT $LN84@stbi__psd_
+$LN83@stbi__psd_:
+ 002e0 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv167[rbp], 0
+$LN84@stbi__psd_:
+ 002eb 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv167[rbp]
+ 002f2 e9 36 09 00 00 jmp $LN1@stbi__psd_
+$LN40@stbi__psd_:
+
+; 6991 :
+; 6992 : // Check size
+; 6993 : if (!stbi__mad3sizes_valid(4, w, h, 0))
+
+ 002f7 45 33 c9 xor r9d, r9d
+ 002fa 44 8b 85 e4 00
+ 00 00 mov r8d, DWORD PTR h$[rbp]
+ 00301 8b 95 c4 00 00
+ 00 mov edx, DWORD PTR w$[rbp]
+ 00307 b9 04 00 00 00 mov ecx, 4
+ 0030c e8 00 00 00 00 call stbi__mad3sizes_valid
+ 00311 85 c0 test eax, eax
+ 00313 75 34 jne SHORT $LN41@stbi__psd_
+
+; 6994 : return stbi__errpuc("too large", "Corrupt PSD");
+
+ 00315 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 0031c e8 00 00 00 00 call stbi__err
+ 00321 85 c0 test eax, eax
+ 00323 74 0d je SHORT $LN85@stbi__psd_
+ 00325 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv177[rbp], 0
+ 00330 eb 0b jmp SHORT $LN86@stbi__psd_
+$LN85@stbi__psd_:
+ 00332 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv177[rbp], 0
+$LN86@stbi__psd_:
+ 0033d 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv177[rbp]
+ 00344 e9 e4 08 00 00 jmp $LN1@stbi__psd_
+$LN41@stbi__psd_:
+
+; 6995 :
+; 6996 : // Create the destination image.
+; 6997 :
+; 6998 : if (!compression && bitdepth == 16 && bpc == 16) {
+
+ 00349 83 7d 44 00 cmp DWORD PTR compression$[rbp], 0
+ 0034d 75 42 jne SHORT $LN42@stbi__psd_
+ 0034f 83 bd a4 00 00
+ 00 10 cmp DWORD PTR bitdepth$[rbp], 16
+ 00356 75 39 jne SHORT $LN42@stbi__psd_
+ 00358 83 bd d0 04 00
+ 00 10 cmp DWORD PTR bpc$[rbp], 16
+ 0035f 75 30 jne SHORT $LN42@stbi__psd_
+
+; 6999 : out = (stbi_uc *)stbi__malloc_mad3(8, w, h, 0);
+
+ 00361 45 33 c9 xor r9d, r9d
+ 00364 44 8b 85 e4 00
+ 00 00 mov r8d, DWORD PTR h$[rbp]
+ 0036b 8b 95 c4 00 00
+ 00 mov edx, DWORD PTR w$[rbp]
+ 00371 b9 08 00 00 00 mov ecx, 8
+ 00376 e8 00 00 00 00 call stbi__malloc_mad3
+ 0037b 48 89 85 08 01
+ 00 00 mov QWORD PTR out$[rbp], rax
+
+; 7000 : ri->bits_per_channel = 16;
+
+ 00382 48 8b 85 c8 04
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00389 c7 00 10 00 00
+ 00 mov DWORD PTR [rax], 16
+
+; 7001 : } else
+
+ 0038f eb 21 jmp SHORT $LN43@stbi__psd_
+$LN42@stbi__psd_:
+
+; 7002 : out = (stbi_uc *)stbi__malloc(4 * w * h);
+
+ 00391 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00397 c1 e0 02 shl eax, 2
+ 0039a 0f af 85 e4 00
+ 00 00 imul eax, DWORD PTR h$[rbp]
+ 003a1 48 98 cdqe
+ 003a3 48 8b c8 mov rcx, rax
+ 003a6 e8 00 00 00 00 call stbi__malloc
+ 003ab 48 89 85 08 01
+ 00 00 mov QWORD PTR out$[rbp], rax
+$LN43@stbi__psd_:
+
+; 7003 :
+; 7004 : if (!out)
+
+ 003b2 48 83 bd 08 01
+ 00 00 00 cmp QWORD PTR out$[rbp], 0
+ 003ba 75 34 jne SHORT $LN44@stbi__psd_
+
+; 7005 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 003bc 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 003c3 e8 00 00 00 00 call stbi__err
+ 003c8 85 c0 test eax, eax
+ 003ca 74 0d je SHORT $LN87@stbi__psd_
+ 003cc 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv196[rbp], 0
+ 003d7 eb 0b jmp SHORT $LN88@stbi__psd_
+$LN87@stbi__psd_:
+ 003d9 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv196[rbp], 0
+$LN88@stbi__psd_:
+ 003e4 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv196[rbp]
+ 003eb e9 3d 08 00 00 jmp $LN1@stbi__psd_
+$LN44@stbi__psd_:
+
+; 7006 : pixelCount = w * h;
+
+ 003f0 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 003f6 0f af 85 e4 00
+ 00 00 imul eax, DWORD PTR h$[rbp]
+ 003fd 89 45 04 mov DWORD PTR pixelCount$[rbp], eax
+
+; 7007 :
+; 7008 : // Initialize the data to zero.
+; 7009 : //memset( out, 0, pixelCount * 4 );
+; 7010 :
+; 7011 : // Finally, the image data.
+; 7012 : if (compression) {
+
+ 00400 83 7d 44 00 cmp DWORD PTR compression$[rbp], 0
+ 00404 0f 84 24 01 00
+ 00 je $LN45@stbi__psd_
+
+; 7013 : // RLE as used by .PSD and .TIFF
+; 7014 : // Loop until you get the number of unpacked bytes you are expecting:
+; 7015 : // Read the next source byte into n.
+; 7016 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.
+; 7017 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.
+; 7018 : // Else if n is 128, noop.
+; 7019 : // Endloop
+; 7020 :
+; 7021 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data,
+; 7022 : // which we're going to just skip.
+; 7023 : stbi__skip(s, h * channelCount * 2);
+
+ 0040a 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR h$[rbp]
+ 00410 0f af 45 24 imul eax, DWORD PTR channelCount$[rbp]
+ 00414 d1 e0 shl eax, 1
+ 00416 8b d0 mov edx, eax
+ 00418 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0041f e8 00 00 00 00 call stbi__skip
+ 00424 90 npad 1
+
+; 7024 :
+; 7025 : // Read the RLE data by channel.
+; 7026 : for (channel = 0; channel < 4; channel++) {
+
+ 00425 c7 45 64 00 00
+ 00 00 mov DWORD PTR channel$[rbp], 0
+ 0042c eb 08 jmp SHORT $LN4@stbi__psd_
+$LN2@stbi__psd_:
+ 0042e 8b 45 64 mov eax, DWORD PTR channel$[rbp]
+ 00431 ff c0 inc eax
+ 00433 89 45 64 mov DWORD PTR channel$[rbp], eax
+$LN4@stbi__psd_:
+ 00436 83 7d 64 04 cmp DWORD PTR channel$[rbp], 4
+ 0043a 0f 8d e9 00 00
+ 00 jge $LN3@stbi__psd_
+
+; 7027 : stbi_uc *p;
+; 7028 :
+; 7029 : p = out + channel;
+
+ 00440 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
+ 00444 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0044b 48 03 c8 add rcx, rax
+ 0044e 48 8b c1 mov rax, rcx
+ 00451 48 89 85 28 01
+ 00 00 mov QWORD PTR p$1[rbp], rax
+
+; 7030 : if (channel >= channelCount) {
+
+ 00458 8b 45 24 mov eax, DWORD PTR channelCount$[rbp]
+ 0045b 39 45 64 cmp DWORD PTR channel$[rbp], eax
+ 0045e 7c 67 jl SHORT $LN47@stbi__psd_
+
+; 7031 : // Fill this channel with default data.
+; 7032 : for (i = 0; i < pixelCount; i++, p += 4)
+
+ 00460 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 0046a eb 20 jmp SHORT $LN7@stbi__psd_
+$LN5@stbi__psd_:
+ 0046c 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00472 ff c0 inc eax
+ 00474 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 0047a 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR p$1[rbp]
+ 00481 48 83 c0 04 add rax, 4
+ 00485 48 89 85 28 01
+ 00 00 mov QWORD PTR p$1[rbp], rax
+$LN7@stbi__psd_:
+ 0048c 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
+ 0048f 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00495 7d 2e jge SHORT $LN6@stbi__psd_
+
+; 7033 : *p = (channel == 3 ? 255 : 0);
+
+ 00497 83 7d 64 03 cmp DWORD PTR channel$[rbp], 3
+ 0049b 75 0c jne SHORT $LN89@stbi__psd_
+ 0049d c7 85 74 04 00
+ 00 ff 00 00 00 mov DWORD PTR tv212[rbp], 255 ; 000000ffH
+ 004a7 eb 0a jmp SHORT $LN90@stbi__psd_
+$LN89@stbi__psd_:
+ 004a9 c7 85 74 04 00
+ 00 00 00 00 00 mov DWORD PTR tv212[rbp], 0
+$LN90@stbi__psd_:
+ 004b3 48 8b 85 28 01
+ 00 00 mov rax, QWORD PTR p$1[rbp]
+ 004ba 0f b6 8d 74 04
+ 00 00 movzx ecx, BYTE PTR tv212[rbp]
+ 004c1 88 08 mov BYTE PTR [rax], cl
+ 004c3 eb a7 jmp SHORT $LN5@stbi__psd_
+$LN6@stbi__psd_:
+
+; 7034 : } else {
+
+ 004c5 eb 5d jmp SHORT $LN48@stbi__psd_
+$LN47@stbi__psd_:
+
+; 7035 : // Read the RLE data.
+; 7036 : if (!stbi__psd_decode_rle(s, p, pixelCount)) {
+
+ 004c7 44 8b 45 04 mov r8d, DWORD PTR pixelCount$[rbp]
+ 004cb 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR p$1[rbp]
+ 004d2 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 004d9 e8 00 00 00 00 call stbi__psd_decode_rle
+ 004de 85 c0 test eax, eax
+ 004e0 75 42 jne SHORT $LN49@stbi__psd_
+
+; 7037 : STBI_FREE(out);
+
+ 004e2 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 004e9 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 004ef 90 npad 1
+
+; 7038 : return stbi__errpuc("corrupt", "bad RLE data");
+
+ 004f0 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07DPPMCAKL@corrupt@
+ 004f7 e8 00 00 00 00 call stbi__err
+ 004fc 85 c0 test eax, eax
+ 004fe 74 0d je SHORT $LN91@stbi__psd_
+ 00500 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv223[rbp], 0
+ 0050b eb 0b jmp SHORT $LN92@stbi__psd_
+$LN91@stbi__psd_:
+ 0050d 48 c7 85 78 04
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv223[rbp], 0
+$LN92@stbi__psd_:
+ 00518 48 8b 85 78 04
+ 00 00 mov rax, QWORD PTR tv223[rbp]
+ 0051f e9 09 07 00 00 jmp $LN1@stbi__psd_
+$LN49@stbi__psd_:
+$LN48@stbi__psd_:
+
+; 7039 : }
+; 7040 : }
+; 7041 : }
+
+ 00524 e9 05 ff ff ff jmp $LN2@stbi__psd_
+$LN3@stbi__psd_:
+
+; 7042 :
+; 7043 : } else {
+
+ 00529 e9 9c 02 00 00 jmp $LN46@stbi__psd_
+$LN45@stbi__psd_:
+
+; 7044 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...)
+; 7045 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image.
+; 7046 :
+; 7047 : // Read the data by channel.
+; 7048 : for (channel = 0; channel < 4; channel++) {
+
+ 0052e c7 45 64 00 00
+ 00 00 mov DWORD PTR channel$[rbp], 0
+ 00535 eb 08 jmp SHORT $LN10@stbi__psd_
+$LN8@stbi__psd_:
+ 00537 8b 45 64 mov eax, DWORD PTR channel$[rbp]
+ 0053a ff c0 inc eax
+ 0053c 89 45 64 mov DWORD PTR channel$[rbp], eax
+$LN10@stbi__psd_:
+ 0053f 83 7d 64 04 cmp DWORD PTR channel$[rbp], 4
+ 00543 0f 8d 81 02 00
+ 00 jge $LN9@stbi__psd_
+
+; 7049 : if (channel >= channelCount) {
+
+ 00549 8b 45 24 mov eax, DWORD PTR channelCount$[rbp]
+ 0054c 39 45 64 cmp DWORD PTR channel$[rbp], eax
+ 0054f 0f 8c 38 01 00
+ 00 jl $LN50@stbi__psd_
+
+; 7050 : // Fill this channel with default data.
+; 7051 : if (bitdepth == 16 && bpc == 16) {
+
+ 00555 83 bd a4 00 00
+ 00 10 cmp DWORD PTR bitdepth$[rbp], 16
+ 0055c 0f 85 9c 00 00
+ 00 jne $LN52@stbi__psd_
+ 00562 83 bd d0 04 00
+ 00 10 cmp DWORD PTR bpc$[rbp], 16
+ 00569 0f 85 8f 00 00
+ 00 jne $LN52@stbi__psd_
+
+; 7052 : stbi__uint16 *q = ((stbi__uint16 *)out) + channel;
+
+ 0056f 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
+ 00573 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0057a 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 0057e 48 89 85 48 01
+ 00 00 mov QWORD PTR q$2[rbp], rax
+
+; 7053 : stbi__uint16 val = channel == 3 ? 65535 : 0;
+
+ 00585 83 7d 64 03 cmp DWORD PTR channel$[rbp], 3
+ 00589 75 0c jne SHORT $LN93@stbi__psd_
+ 0058b c7 85 74 04 00
+ 00 ff ff 00 00 mov DWORD PTR tv233[rbp], 65535 ; 0000ffffH
+ 00595 eb 0a jmp SHORT $LN94@stbi__psd_
+$LN93@stbi__psd_:
+ 00597 c7 85 74 04 00
+ 00 00 00 00 00 mov DWORD PTR tv233[rbp], 0
+$LN94@stbi__psd_:
+ 005a1 0f b7 85 74 04
+ 00 00 movzx eax, WORD PTR tv233[rbp]
+ 005a8 66 89 85 64 01
+ 00 00 mov WORD PTR val$3[rbp], ax
+
+; 7054 : for (i = 0; i < pixelCount; i++, q += 4)
+
+ 005af c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 005b9 eb 20 jmp SHORT $LN13@stbi__psd_
+$LN11@stbi__psd_:
+ 005bb 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 005c1 ff c0 inc eax
+ 005c3 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 005c9 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR q$2[rbp]
+ 005d0 48 83 c0 08 add rax, 8
+ 005d4 48 89 85 48 01
+ 00 00 mov QWORD PTR q$2[rbp], rax
+$LN13@stbi__psd_:
+ 005db 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
+ 005de 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 005e4 7d 13 jge SHORT $LN12@stbi__psd_
+
+; 7055 : *q = val;
+
+ 005e6 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR q$2[rbp]
+ 005ed 0f b7 8d 64 01
+ 00 00 movzx ecx, WORD PTR val$3[rbp]
+ 005f4 66 89 08 mov WORD PTR [rax], cx
+ 005f7 eb c2 jmp SHORT $LN11@stbi__psd_
+$LN12@stbi__psd_:
+
+; 7056 : } else {
+
+ 005f9 e9 8a 00 00 00 jmp $LN53@stbi__psd_
+$LN52@stbi__psd_:
+
+; 7057 : stbi_uc *p = out + channel;
+
+ 005fe 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
+ 00602 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00609 48 03 c8 add rcx, rax
+ 0060c 48 8b c1 mov rax, rcx
+ 0060f 48 89 85 88 01
+ 00 00 mov QWORD PTR p$4[rbp], rax
+
+; 7058 : stbi_uc val = channel == 3 ? 255 : 0;
+
+ 00616 83 7d 64 03 cmp DWORD PTR channel$[rbp], 3
+ 0061a 75 0c jne SHORT $LN95@stbi__psd_
+ 0061c c7 85 74 04 00
+ 00 ff 00 00 00 mov DWORD PTR tv241[rbp], 255 ; 000000ffH
+ 00626 eb 0a jmp SHORT $LN96@stbi__psd_
+$LN95@stbi__psd_:
+ 00628 c7 85 74 04 00
+ 00 00 00 00 00 mov DWORD PTR tv241[rbp], 0
+$LN96@stbi__psd_:
+ 00632 0f b6 85 74 04
+ 00 00 movzx eax, BYTE PTR tv241[rbp]
+ 00639 88 85 a4 01 00
+ 00 mov BYTE PTR val$5[rbp], al
+
+; 7059 : for (i = 0; i < pixelCount; i++, p += 4)
+
+ 0063f c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00649 eb 20 jmp SHORT $LN16@stbi__psd_
+$LN14@stbi__psd_:
+ 0064b 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00651 ff c0 inc eax
+ 00653 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 00659 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR p$4[rbp]
+ 00660 48 83 c0 04 add rax, 4
+ 00664 48 89 85 88 01
+ 00 00 mov QWORD PTR p$4[rbp], rax
+$LN16@stbi__psd_:
+ 0066b 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
+ 0066e 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00674 7d 12 jge SHORT $LN15@stbi__psd_
+
+; 7060 : *p = val;
+
+ 00676 48 8b 85 88 01
+ 00 00 mov rax, QWORD PTR p$4[rbp]
+ 0067d 0f b6 8d a4 01
+ 00 00 movzx ecx, BYTE PTR val$5[rbp]
+ 00684 88 08 mov BYTE PTR [rax], cl
+ 00686 eb c3 jmp SHORT $LN14@stbi__psd_
+$LN15@stbi__psd_:
+$LN53@stbi__psd_:
+
+; 7061 : }
+; 7062 : } else {
+
+ 00688 e9 38 01 00 00 jmp $LN51@stbi__psd_
+$LN50@stbi__psd_:
+
+; 7063 : if (ri->bits_per_channel == 16) { // output bpc
+
+ 0068d 48 8b 85 c8 04
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00694 83 38 10 cmp DWORD PTR [rax], 16
+ 00697 75 6a jne SHORT $LN54@stbi__psd_
+
+; 7064 : stbi__uint16 *q = ((stbi__uint16 *)out) + channel;
+
+ 00699 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
+ 0069d 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 006a4 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 006a8 48 89 85 c8 01
+ 00 00 mov QWORD PTR q$6[rbp], rax
+
+; 7065 : for (i = 0; i < pixelCount; i++, q += 4)
+
+ 006af c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 006b9 eb 20 jmp SHORT $LN19@stbi__psd_
+$LN17@stbi__psd_:
+ 006bb 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 006c1 ff c0 inc eax
+ 006c3 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 006c9 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR q$6[rbp]
+ 006d0 48 83 c0 08 add rax, 8
+ 006d4 48 89 85 c8 01
+ 00 00 mov QWORD PTR q$6[rbp], rax
+$LN19@stbi__psd_:
+ 006db 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
+ 006de 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 006e4 7d 18 jge SHORT $LN18@stbi__psd_
+
+; 7066 : *q = (stbi__uint16)stbi__get16be(s);
+
+ 006e6 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 006ed e8 00 00 00 00 call stbi__get16be
+ 006f2 48 8b 8d c8 01
+ 00 00 mov rcx, QWORD PTR q$6[rbp]
+ 006f9 66 89 01 mov WORD PTR [rcx], ax
+ 006fc eb bd jmp SHORT $LN17@stbi__psd_
+$LN18@stbi__psd_:
+
+; 7067 : } else {
+
+ 006fe e9 c2 00 00 00 jmp $LN55@stbi__psd_
+$LN54@stbi__psd_:
+
+; 7068 : stbi_uc *p = out + channel;
+
+ 00703 48 63 45 64 movsxd rax, DWORD PTR channel$[rbp]
+ 00707 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 0070e 48 03 c8 add rcx, rax
+ 00711 48 8b c1 mov rax, rcx
+ 00714 48 89 85 e8 01
+ 00 00 mov QWORD PTR p$7[rbp], rax
+
+; 7069 : if (bitdepth == 16) { // input bpc
+
+ 0071b 83 bd a4 00 00
+ 00 10 cmp DWORD PTR bitdepth$[rbp], 16
+ 00722 75 53 jne SHORT $LN56@stbi__psd_
+
+; 7070 : for (i = 0; i < pixelCount; i++, p += 4)
+
+ 00724 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 0072e eb 20 jmp SHORT $LN22@stbi__psd_
+$LN20@stbi__psd_:
+ 00730 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00736 ff c0 inc eax
+ 00738 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 0073e 48 8b 85 e8 01
+ 00 00 mov rax, QWORD PTR p$7[rbp]
+ 00745 48 83 c0 04 add rax, 4
+ 00749 48 89 85 e8 01
+ 00 00 mov QWORD PTR p$7[rbp], rax
+$LN22@stbi__psd_:
+ 00750 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
+ 00753 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00759 7d 1a jge SHORT $LN21@stbi__psd_
+
+; 7071 : *p = (stbi_uc)(stbi__get16be(s) >> 8);
+
+ 0075b 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00762 e8 00 00 00 00 call stbi__get16be
+ 00767 c1 f8 08 sar eax, 8
+ 0076a 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR p$7[rbp]
+ 00771 88 01 mov BYTE PTR [rcx], al
+ 00773 eb bb jmp SHORT $LN20@stbi__psd_
+$LN21@stbi__psd_:
+
+; 7072 : } else {
+
+ 00775 eb 4e jmp SHORT $LN57@stbi__psd_
+$LN56@stbi__psd_:
+
+; 7073 : for (i = 0; i < pixelCount; i++, p += 4)
+
+ 00777 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00781 eb 20 jmp SHORT $LN25@stbi__psd_
+$LN23@stbi__psd_:
+ 00783 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00789 ff c0 inc eax
+ 0078b 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 00791 48 8b 85 e8 01
+ 00 00 mov rax, QWORD PTR p$7[rbp]
+ 00798 48 83 c0 04 add rax, 4
+ 0079c 48 89 85 e8 01
+ 00 00 mov QWORD PTR p$7[rbp], rax
+$LN25@stbi__psd_:
+ 007a3 8b 45 04 mov eax, DWORD PTR pixelCount$[rbp]
+ 007a6 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 007ac 7d 17 jge SHORT $LN24@stbi__psd_
+
+; 7074 : *p = stbi__get8(s);
+
+ 007ae 48 8b 8d a0 04
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 007b5 e8 00 00 00 00 call stbi__get8
+ 007ba 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR p$7[rbp]
+ 007c1 88 01 mov BYTE PTR [rcx], al
+ 007c3 eb be jmp SHORT $LN23@stbi__psd_
+$LN24@stbi__psd_:
+$LN57@stbi__psd_:
+$LN55@stbi__psd_:
+$LN51@stbi__psd_:
+
+; 7075 : }
+; 7076 : }
+; 7077 : }
+; 7078 : }
+
+ 007c5 e9 6d fd ff ff jmp $LN8@stbi__psd_
+$LN9@stbi__psd_:
+$LN46@stbi__psd_:
+
+; 7079 : }
+; 7080 :
+; 7081 : // remove weird white matte from PSD
+; 7082 : if (channelCount >= 4) {
+
+ 007ca 83 7d 24 04 cmp DWORD PTR channelCount$[rbp], 4
+ 007ce 0f 8c 82 03 00
+ 00 jl $LN58@stbi__psd_
+
+; 7083 : if (ri->bits_per_channel == 16) {
+
+ 007d4 48 8b 85 c8 04
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 007db 83 38 10 cmp DWORD PTR [rax], 16
+ 007de 0f 85 bc 01 00
+ 00 jne $LN59@stbi__psd_
+
+; 7084 : for (i = 0; i < w * h; ++i) {
+
+ 007e4 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 007ee eb 0e jmp SHORT $LN28@stbi__psd_
+$LN26@stbi__psd_:
+ 007f0 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 007f6 ff c0 inc eax
+ 007f8 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN28@stbi__psd_:
+ 007fe 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 00804 0f af 85 e4 00
+ 00 00 imul eax, DWORD PTR h$[rbp]
+ 0080b 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00811 0f 8d 84 01 00
+ 00 jge $LN27@stbi__psd_
+
+; 7085 : stbi__uint16 *pixel = (stbi__uint16 *)out + 4 * i;
+
+ 00817 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 0081d c1 e0 02 shl eax, 2
+ 00820 48 98 cdqe
+ 00822 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00829 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 0082d 48 89 85 08 02
+ 00 00 mov QWORD PTR pixel$8[rbp], rax
+
+; 7086 : if (pixel[3] != 0 && pixel[3] != 65535) {
+
+ 00834 b8 02 00 00 00 mov eax, 2
+ 00839 48 6b c0 03 imul rax, rax, 3
+ 0083d 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR pixel$8[rbp]
+ 00844 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00848 85 c0 test eax, eax
+ 0084a 0f 84 46 01 00
+ 00 je $LN61@stbi__psd_
+ 00850 b8 02 00 00 00 mov eax, 2
+ 00855 48 6b c0 03 imul rax, rax, 3
+ 00859 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR pixel$8[rbp]
+ 00860 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00864 3d ff ff 00 00 cmp eax, 65535 ; 0000ffffH
+ 00869 0f 84 27 01 00
+ 00 je $LN61@stbi__psd_
+
+; 7087 : float a = pixel[3] / 65535.0f;
+
+ 0086f b8 02 00 00 00 mov eax, 2
+ 00874 48 6b c0 03 imul rax, rax, 3
+ 00878 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR pixel$8[rbp]
+ 0087f 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 00883 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00887 f3 0f 5e 05 00
+ 00 00 00 divss xmm0, DWORD PTR __real@477fff00
+ 0088f f3 0f 11 85 24
+ 02 00 00 movss DWORD PTR a$9[rbp], xmm0
+
+; 7088 : float ra = 1.0f / a;
+
+ 00897 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 0089f f3 0f 5e 85 24
+ 02 00 00 divss xmm0, DWORD PTR a$9[rbp]
+ 008a7 f3 0f 11 85 44
+ 02 00 00 movss DWORD PTR ra$10[rbp], xmm0
+
+; 7089 : float inv_a = 65535.0f * (1 - ra);
+
+ 008af f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 008b7 f3 0f 5c 85 44
+ 02 00 00 subss xmm0, DWORD PTR ra$10[rbp]
+ 008bf f3 0f 10 0d 00
+ 00 00 00 movss xmm1, DWORD PTR __real@477fff00
+ 008c7 f3 0f 59 c8 mulss xmm1, xmm0
+ 008cb 0f 28 c1 movaps xmm0, xmm1
+ 008ce f3 0f 11 85 64
+ 02 00 00 movss DWORD PTR inv_a$11[rbp], xmm0
+
+; 7090 : pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a);
+
+ 008d6 b8 02 00 00 00 mov eax, 2
+ 008db 48 6b c0 00 imul rax, rax, 0
+ 008df 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR pixel$8[rbp]
+ 008e6 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 008ea f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 008ee f3 0f 59 85 44
+ 02 00 00 mulss xmm0, DWORD PTR ra$10[rbp]
+ 008f6 f3 0f 58 85 64
+ 02 00 00 addss xmm0, DWORD PTR inv_a$11[rbp]
+ 008fe f3 0f 2c c0 cvttss2si eax, xmm0
+ 00902 b9 02 00 00 00 mov ecx, 2
+ 00907 48 6b c9 00 imul rcx, rcx, 0
+ 0090b 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR pixel$8[rbp]
+ 00912 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 7091 : pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a);
+
+ 00916 b8 02 00 00 00 mov eax, 2
+ 0091b 48 6b c0 01 imul rax, rax, 1
+ 0091f 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR pixel$8[rbp]
+ 00926 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 0092a f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 0092e f3 0f 59 85 44
+ 02 00 00 mulss xmm0, DWORD PTR ra$10[rbp]
+ 00936 f3 0f 58 85 64
+ 02 00 00 addss xmm0, DWORD PTR inv_a$11[rbp]
+ 0093e f3 0f 2c c0 cvttss2si eax, xmm0
+ 00942 b9 02 00 00 00 mov ecx, 2
+ 00947 48 6b c9 01 imul rcx, rcx, 1
+ 0094b 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR pixel$8[rbp]
+ 00952 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+
+; 7092 : pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a);
+
+ 00956 b8 02 00 00 00 mov eax, 2
+ 0095b 48 6b c0 02 imul rax, rax, 2
+ 0095f 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR pixel$8[rbp]
+ 00966 0f b7 04 01 movzx eax, WORD PTR [rcx+rax]
+ 0096a f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 0096e f3 0f 59 85 44
+ 02 00 00 mulss xmm0, DWORD PTR ra$10[rbp]
+ 00976 f3 0f 58 85 64
+ 02 00 00 addss xmm0, DWORD PTR inv_a$11[rbp]
+ 0097e f3 0f 2c c0 cvttss2si eax, xmm0
+ 00982 b9 02 00 00 00 mov ecx, 2
+ 00987 48 6b c9 02 imul rcx, rcx, 2
+ 0098b 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR pixel$8[rbp]
+ 00992 66 89 04 0a mov WORD PTR [rdx+rcx], ax
+$LN61@stbi__psd_:
+
+; 7093 : }
+; 7094 : }
+
+ 00996 e9 55 fe ff ff jmp $LN26@stbi__psd_
+$LN27@stbi__psd_:
+
+; 7095 : } else {
+
+ 0099b e9 b6 01 00 00 jmp $LN60@stbi__psd_
+$LN59@stbi__psd_:
+
+; 7096 : for (i = 0; i < w * h; ++i) {
+
+ 009a0 c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 009aa eb 0e jmp SHORT $LN31@stbi__psd_
+$LN29@stbi__psd_:
+ 009ac 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 009b2 ff c0 inc eax
+ 009b4 89 85 84 00 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN31@stbi__psd_:
+ 009ba 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR w$[rbp]
+ 009c0 0f af 85 e4 00
+ 00 00 imul eax, DWORD PTR h$[rbp]
+ 009c7 39 85 84 00 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 009cd 0f 8d 83 01 00
+ 00 jge $LN30@stbi__psd_
+
+; 7097 : unsigned char *pixel = out + 4 * i;
+
+ 009d3 8b 85 84 00 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 009d9 c1 e0 02 shl eax, 2
+ 009dc 48 98 cdqe
+ 009de 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 009e5 48 03 c8 add rcx, rax
+ 009e8 48 8b c1 mov rax, rcx
+ 009eb 48 89 85 88 02
+ 00 00 mov QWORD PTR pixel$12[rbp], rax
+
+; 7098 : if (pixel[3] != 0 && pixel[3] != 255) {
+
+ 009f2 b8 01 00 00 00 mov eax, 1
+ 009f7 48 6b c0 03 imul rax, rax, 3
+ 009fb 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR pixel$12[rbp]
+ 00a02 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00a06 85 c0 test eax, eax
+ 00a08 0f 84 43 01 00
+ 00 je $LN62@stbi__psd_
+ 00a0e b8 01 00 00 00 mov eax, 1
+ 00a13 48 6b c0 03 imul rax, rax, 3
+ 00a17 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR pixel$12[rbp]
+ 00a1e 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00a22 3d ff 00 00 00 cmp eax, 255 ; 000000ffH
+ 00a27 0f 84 24 01 00
+ 00 je $LN62@stbi__psd_
+
+; 7099 : float a = pixel[3] / 255.0f;
+
+ 00a2d b8 01 00 00 00 mov eax, 1
+ 00a32 48 6b c0 03 imul rax, rax, 3
+ 00a36 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR pixel$12[rbp]
+ 00a3d 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00a41 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00a45 f3 0f 5e 05 00
+ 00 00 00 divss xmm0, DWORD PTR __real@437f0000
+ 00a4d f3 0f 11 85 a4
+ 02 00 00 movss DWORD PTR a$13[rbp], xmm0
+
+; 7100 : float ra = 1.0f / a;
+
+ 00a55 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 00a5d f3 0f 5e 85 a4
+ 02 00 00 divss xmm0, DWORD PTR a$13[rbp]
+ 00a65 f3 0f 11 85 c4
+ 02 00 00 movss DWORD PTR ra$14[rbp], xmm0
+
+; 7101 : float inv_a = 255.0f * (1 - ra);
+
+ 00a6d f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 00a75 f3 0f 5c 85 c4
+ 02 00 00 subss xmm0, DWORD PTR ra$14[rbp]
+ 00a7d f3 0f 10 0d 00
+ 00 00 00 movss xmm1, DWORD PTR __real@437f0000
+ 00a85 f3 0f 59 c8 mulss xmm1, xmm0
+ 00a89 0f 28 c1 movaps xmm0, xmm1
+ 00a8c f3 0f 11 85 e4
+ 02 00 00 movss DWORD PTR inv_a$15[rbp], xmm0
+
+; 7102 : pixel[0] = (unsigned char)(pixel[0] * ra + inv_a);
+
+ 00a94 b8 01 00 00 00 mov eax, 1
+ 00a99 48 6b c0 00 imul rax, rax, 0
+ 00a9d 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR pixel$12[rbp]
+ 00aa4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00aa8 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00aac f3 0f 59 85 c4
+ 02 00 00 mulss xmm0, DWORD PTR ra$14[rbp]
+ 00ab4 f3 0f 58 85 e4
+ 02 00 00 addss xmm0, DWORD PTR inv_a$15[rbp]
+ 00abc f3 0f 2c c0 cvttss2si eax, xmm0
+ 00ac0 b9 01 00 00 00 mov ecx, 1
+ 00ac5 48 6b c9 00 imul rcx, rcx, 0
+ 00ac9 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR pixel$12[rbp]
+ 00ad0 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 7103 : pixel[1] = (unsigned char)(pixel[1] * ra + inv_a);
+
+ 00ad3 b8 01 00 00 00 mov eax, 1
+ 00ad8 48 6b c0 01 imul rax, rax, 1
+ 00adc 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR pixel$12[rbp]
+ 00ae3 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00ae7 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00aeb f3 0f 59 85 c4
+ 02 00 00 mulss xmm0, DWORD PTR ra$14[rbp]
+ 00af3 f3 0f 58 85 e4
+ 02 00 00 addss xmm0, DWORD PTR inv_a$15[rbp]
+ 00afb f3 0f 2c c0 cvttss2si eax, xmm0
+ 00aff b9 01 00 00 00 mov ecx, 1
+ 00b04 48 6b c9 01 imul rcx, rcx, 1
+ 00b08 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR pixel$12[rbp]
+ 00b0f 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 7104 : pixel[2] = (unsigned char)(pixel[2] * ra + inv_a);
+
+ 00b12 b8 01 00 00 00 mov eax, 1
+ 00b17 48 6b c0 02 imul rax, rax, 2
+ 00b1b 48 8b 8d 88 02
+ 00 00 mov rcx, QWORD PTR pixel$12[rbp]
+ 00b22 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00b26 f3 0f 2a c0 cvtsi2ss xmm0, eax
+ 00b2a f3 0f 59 85 c4
+ 02 00 00 mulss xmm0, DWORD PTR ra$14[rbp]
+ 00b32 f3 0f 58 85 e4
+ 02 00 00 addss xmm0, DWORD PTR inv_a$15[rbp]
+ 00b3a f3 0f 2c c0 cvttss2si eax, xmm0
+ 00b3e b9 01 00 00 00 mov ecx, 1
+ 00b43 48 6b c9 02 imul rcx, rcx, 2
+ 00b47 48 8b 95 88 02
+ 00 00 mov rdx, QWORD PTR pixel$12[rbp]
+ 00b4e 88 04 0a mov BYTE PTR [rdx+rcx], al
+$LN62@stbi__psd_:
+
+; 7105 : }
+; 7106 : }
+
+ 00b51 e9 56 fe ff ff jmp $LN29@stbi__psd_
+$LN30@stbi__psd_:
+$LN60@stbi__psd_:
+$LN58@stbi__psd_:
+
+; 7107 : }
+; 7108 : }
+; 7109 :
+; 7110 : // convert to desired output format
+; 7111 : if (req_comp && req_comp != 4) {
+
+ 00b56 83 bd c0 04 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 00b5d 0f 84 8e 00 00
+ 00 je $LN63@stbi__psd_
+ 00b63 83 bd c0 04 00
+ 00 04 cmp DWORD PTR req_comp$[rbp], 4
+ 00b6a 0f 84 81 00 00
+ 00 je $LN63@stbi__psd_
+
+; 7112 : if (ri->bits_per_channel == 16)
+
+ 00b70 48 8b 85 c8 04
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 00b77 83 38 10 cmp DWORD PTR [rax], 16
+ 00b7a 75 32 jne SHORT $LN64@stbi__psd_
+
+; 7113 : out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, 4, req_comp, w,
+
+ 00b7c 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR h$[rbp]
+ 00b82 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00b86 44 8b 8d c4 00
+ 00 00 mov r9d, DWORD PTR w$[rbp]
+ 00b8d 44 8b 85 c0 04
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00b94 ba 04 00 00 00 mov edx, 4
+ 00b99 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00ba0 e8 00 00 00 00 call stbi__convert_format16
+ 00ba5 48 89 85 08 01
+ 00 00 mov QWORD PTR out$[rbp], rax
+ 00bac eb 30 jmp SHORT $LN65@stbi__psd_
+$LN64@stbi__psd_:
+
+; 7114 : h);
+; 7115 : else
+; 7116 : out = stbi__convert_format(out, 4, req_comp, w, h);
+
+ 00bae 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR h$[rbp]
+ 00bb4 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00bb8 44 8b 8d c4 00
+ 00 00 mov r9d, DWORD PTR w$[rbp]
+ 00bbf 44 8b 85 c0 04
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00bc6 ba 04 00 00 00 mov edx, 4
+ 00bcb 48 8b 8d 08 01
+ 00 00 mov rcx, QWORD PTR out$[rbp]
+ 00bd2 e8 00 00 00 00 call stbi__convert_format
+ 00bd7 48 89 85 08 01
+ 00 00 mov QWORD PTR out$[rbp], rax
+$LN65@stbi__psd_:
+
+; 7117 : if (out == NULL)
+
+ 00bde 48 83 bd 08 01
+ 00 00 00 cmp QWORD PTR out$[rbp], 0
+ 00be6 75 09 jne SHORT $LN66@stbi__psd_
+
+; 7118 : return out; // stbi__convert_format frees input on failure
+
+ 00be8 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+ 00bef eb 3c jmp SHORT $LN1@stbi__psd_
+$LN66@stbi__psd_:
+$LN63@stbi__psd_:
+
+; 7119 : }
+; 7120 :
+; 7121 : if (comp)
+
+ 00bf1 48 83 bd b8 04
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 00bf9 74 0d je SHORT $LN67@stbi__psd_
+
+; 7122 : *comp = 4;
+
+ 00bfb 48 8b 85 b8 04
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00c02 c7 00 04 00 00
+ 00 mov DWORD PTR [rax], 4
+$LN67@stbi__psd_:
+
+; 7123 : *y = h;
+
+ 00c08 48 8b 85 b0 04
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 00c0f 8b 8d e4 00 00
+ 00 mov ecx, DWORD PTR h$[rbp]
+ 00c15 89 08 mov DWORD PTR [rax], ecx
+
+; 7124 : *x = w;
+
+ 00c17 48 8b 85 a8 04
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00c1e 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR w$[rbp]
+ 00c24 89 08 mov DWORD PTR [rax], ecx
+
+; 7125 :
+; 7126 : return out;
+
+ 00c26 48 8b 85 08 01
+ 00 00 mov rax, QWORD PTR out$[rbp]
+$LN1@stbi__psd_:
+
+; 7127 : }
+
+ 00c2d 48 8d a5 88 04
+ 00 00 lea rsp, QWORD PTR [rbp+1160]
+ 00c34 5f pop rdi
+ 00c35 5d pop rbp
+ 00c36 c3 ret 0
+stbi__psd_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__psd_test
+_TEXT SEGMENT
+r$ = 4
+tv67 = 212
+s$ = 256
+stbi__psd_test PROC ; COMDAT
+
+; 6874 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 6875 : int r = (stbi__get32be(s) == 0x38425053);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__get32be
+ 0002c 3d 53 50 42 38 cmp eax, 943870035 ; 38425053H
+ 00031 75 0c jne SHORT $LN3@stbi__psd_
+ 00033 c7 85 d4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv67[rbp], 1
+ 0003d eb 0a jmp SHORT $LN4@stbi__psd_
+$LN3@stbi__psd_:
+ 0003f c7 85 d4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv67[rbp], 0
+$LN4@stbi__psd_:
+ 00049 8b 85 d4 00 00
+ 00 mov eax, DWORD PTR tv67[rbp]
+ 0004f 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 6876 : stbi__rewind(s);
+
+ 00052 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00059 e8 00 00 00 00 call stbi__rewind
+ 0005e 90 npad 1
+
+; 6877 : return r;
+
+ 0005f 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 6878 : }
+
+ 00062 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00069 5f pop rdi
+ 0006a 5d pop rbp
+ 0006b c3 ret 0
+stbi__psd_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__tga_info
+_TEXT SEGMENT
+tga_w$ = 4
+tga_h$ = 36
+tga_comp$ = 68
+tga_image_type$ = 100
+tga_bits_per_pixel$ = 132
+tga_colormap_bpp$ = 164
+sz$ = 196
+tga_colormap_type$ = 228
+tv153 = 436
+s$ = 480
+x$ = 488
+y$ = 496
+comp$ = 504
+stbi__tga_info PROC ; COMDAT
+
+; 6540 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 6541 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp;
+; 6542 : int sz, tga_colormap_type;
+; 6543 : stbi__get8(s); // discard Offset
+
+ 0002f 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__get8
+ 0003b 90 npad 1
+
+; 6544 : tga_colormap_type = stbi__get8(s); // colormap type
+
+ 0003c 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00043 e8 00 00 00 00 call stbi__get8
+ 00048 0f b6 c0 movzx eax, al
+ 0004b 89 85 e4 00 00
+ 00 mov DWORD PTR tga_colormap_type$[rbp], eax
+
+; 6545 : if (tga_colormap_type > 1) {
+
+ 00051 83 bd e4 00 00
+ 00 01 cmp DWORD PTR tga_colormap_type$[rbp], 1
+ 00058 7e 14 jle SHORT $LN2@stbi__tga_
+
+; 6546 : stbi__rewind(s);
+
+ 0005a 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00061 e8 00 00 00 00 call stbi__rewind
+ 00066 90 npad 1
+
+; 6547 : return 0; // only RGB or indexed allowed
+
+ 00067 33 c0 xor eax, eax
+ 00069 e9 5e 02 00 00 jmp $LN1@stbi__tga_
+$LN2@stbi__tga_:
+
+; 6548 : }
+; 6549 : tga_image_type = stbi__get8(s); // image type
+
+ 0006e 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00075 e8 00 00 00 00 call stbi__get8
+ 0007a 0f b6 c0 movzx eax, al
+ 0007d 89 45 64 mov DWORD PTR tga_image_type$[rbp], eax
+
+; 6550 : if (tga_colormap_type == 1) { // colormapped (paletted) image
+
+ 00080 83 bd e4 00 00
+ 00 01 cmp DWORD PTR tga_colormap_type$[rbp], 1
+ 00087 0f 85 a8 00 00
+ 00 jne $LN3@stbi__tga_
+
+; 6551 : if (tga_image_type != 1 && tga_image_type != 9) {
+
+ 0008d 83 7d 64 01 cmp DWORD PTR tga_image_type$[rbp], 1
+ 00091 74 1a je SHORT $LN5@stbi__tga_
+ 00093 83 7d 64 09 cmp DWORD PTR tga_image_type$[rbp], 9
+ 00097 74 14 je SHORT $LN5@stbi__tga_
+
+; 6552 : stbi__rewind(s);
+
+ 00099 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a0 e8 00 00 00 00 call stbi__rewind
+ 000a5 90 npad 1
+
+; 6553 : return 0;
+
+ 000a6 33 c0 xor eax, eax
+ 000a8 e9 1f 02 00 00 jmp $LN1@stbi__tga_
+$LN5@stbi__tga_:
+
+; 6554 : }
+; 6555 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries
+
+ 000ad ba 04 00 00 00 mov edx, 4
+ 000b2 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000b9 e8 00 00 00 00 call stbi__skip
+ 000be 90 npad 1
+
+; 6556 : sz = stbi__get8(s); // check bits per palette color entry
+
+ 000bf 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c6 e8 00 00 00 00 call stbi__get8
+ 000cb 0f b6 c0 movzx eax, al
+ 000ce 89 85 c4 00 00
+ 00 mov DWORD PTR sz$[rbp], eax
+
+; 6557 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) {
+
+ 000d4 83 bd c4 00 00
+ 00 08 cmp DWORD PTR sz$[rbp], 8
+ 000db 74 38 je SHORT $LN6@stbi__tga_
+ 000dd 83 bd c4 00 00
+ 00 0f cmp DWORD PTR sz$[rbp], 15
+ 000e4 74 2f je SHORT $LN6@stbi__tga_
+ 000e6 83 bd c4 00 00
+ 00 10 cmp DWORD PTR sz$[rbp], 16
+ 000ed 74 26 je SHORT $LN6@stbi__tga_
+ 000ef 83 bd c4 00 00
+ 00 18 cmp DWORD PTR sz$[rbp], 24
+ 000f6 74 1d je SHORT $LN6@stbi__tga_
+ 000f8 83 bd c4 00 00
+ 00 20 cmp DWORD PTR sz$[rbp], 32 ; 00000020H
+ 000ff 74 14 je SHORT $LN6@stbi__tga_
+
+; 6558 : stbi__rewind(s);
+
+ 00101 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00108 e8 00 00 00 00 call stbi__rewind
+ 0010d 90 npad 1
+
+; 6559 : return 0;
+
+ 0010e 33 c0 xor eax, eax
+ 00110 e9 b7 01 00 00 jmp $LN1@stbi__tga_
+$LN6@stbi__tga_:
+
+; 6560 : }
+; 6561 : stbi__skip(s, 4); // skip image x and y origin
+
+ 00115 ba 04 00 00 00 mov edx, 4
+ 0011a 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00121 e8 00 00 00 00 call stbi__skip
+ 00126 90 npad 1
+
+; 6562 : tga_colormap_bpp = sz;
+
+ 00127 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR sz$[rbp]
+ 0012d 89 85 a4 00 00
+ 00 mov DWORD PTR tga_colormap_bpp$[rbp], eax
+
+; 6563 : } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE
+
+ 00133 eb 48 jmp SHORT $LN4@stbi__tga_
+$LN3@stbi__tga_:
+
+; 6564 : if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) &&
+
+ 00135 83 7d 64 02 cmp DWORD PTR tga_image_type$[rbp], 2
+ 00139 74 26 je SHORT $LN7@stbi__tga_
+ 0013b 83 7d 64 03 cmp DWORD PTR tga_image_type$[rbp], 3
+ 0013f 74 20 je SHORT $LN7@stbi__tga_
+ 00141 83 7d 64 0a cmp DWORD PTR tga_image_type$[rbp], 10
+ 00145 74 1a je SHORT $LN7@stbi__tga_
+ 00147 83 7d 64 0b cmp DWORD PTR tga_image_type$[rbp], 11
+ 0014b 74 14 je SHORT $LN7@stbi__tga_
+
+; 6565 : (tga_image_type != 11)) {
+; 6566 : stbi__rewind(s);
+
+ 0014d 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00154 e8 00 00 00 00 call stbi__rewind
+ 00159 90 npad 1
+
+; 6567 : return 0; // only RGB or grey allowed, +/- RLE
+
+ 0015a 33 c0 xor eax, eax
+ 0015c e9 6b 01 00 00 jmp $LN1@stbi__tga_
+$LN7@stbi__tga_:
+
+; 6568 : }
+; 6569 : stbi__skip(s, 9); // skip colormap specification and image x/y origin
+
+ 00161 ba 09 00 00 00 mov edx, 9
+ 00166 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0016d e8 00 00 00 00 call stbi__skip
+ 00172 90 npad 1
+
+; 6570 : tga_colormap_bpp = 0;
+
+ 00173 c7 85 a4 00 00
+ 00 00 00 00 00 mov DWORD PTR tga_colormap_bpp$[rbp], 0
+$LN4@stbi__tga_:
+
+; 6571 : }
+; 6572 : tga_w = stbi__get16le(s);
+
+ 0017d 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00184 e8 00 00 00 00 call stbi__get16le
+ 00189 89 45 04 mov DWORD PTR tga_w$[rbp], eax
+
+; 6573 : if (tga_w < 1) {
+
+ 0018c 83 7d 04 01 cmp DWORD PTR tga_w$[rbp], 1
+ 00190 7d 14 jge SHORT $LN8@stbi__tga_
+
+; 6574 : stbi__rewind(s);
+
+ 00192 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00199 e8 00 00 00 00 call stbi__rewind
+ 0019e 90 npad 1
+
+; 6575 : return 0; // test width
+
+ 0019f 33 c0 xor eax, eax
+ 001a1 e9 26 01 00 00 jmp $LN1@stbi__tga_
+$LN8@stbi__tga_:
+
+; 6576 : }
+; 6577 : tga_h = stbi__get16le(s);
+
+ 001a6 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001ad e8 00 00 00 00 call stbi__get16le
+ 001b2 89 45 24 mov DWORD PTR tga_h$[rbp], eax
+
+; 6578 : if (tga_h < 1) {
+
+ 001b5 83 7d 24 01 cmp DWORD PTR tga_h$[rbp], 1
+ 001b9 7d 14 jge SHORT $LN9@stbi__tga_
+
+; 6579 : stbi__rewind(s);
+
+ 001bb 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001c2 e8 00 00 00 00 call stbi__rewind
+ 001c7 90 npad 1
+
+; 6580 : return 0; // test height
+
+ 001c8 33 c0 xor eax, eax
+ 001ca e9 fd 00 00 00 jmp $LN1@stbi__tga_
+$LN9@stbi__tga_:
+
+; 6581 : }
+; 6582 : tga_bits_per_pixel = stbi__get8(s); // bits per pixel
+
+ 001cf 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001d6 e8 00 00 00 00 call stbi__get8
+ 001db 0f b6 c0 movzx eax, al
+ 001de 89 85 84 00 00
+ 00 mov DWORD PTR tga_bits_per_pixel$[rbp], eax
+
+; 6583 : stbi__get8(s); // ignore alpha bits
+
+ 001e4 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 001eb e8 00 00 00 00 call stbi__get8
+ 001f0 90 npad 1
+
+; 6584 : if (tga_colormap_bpp != 0) {
+
+ 001f1 83 bd a4 00 00
+ 00 00 cmp DWORD PTR tga_colormap_bpp$[rbp], 0
+ 001f8 74 3b je SHORT $LN10@stbi__tga_
+
+; 6585 : if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) {
+
+ 001fa 83 bd 84 00 00
+ 00 08 cmp DWORD PTR tga_bits_per_pixel$[rbp], 8
+ 00201 74 1d je SHORT $LN12@stbi__tga_
+ 00203 83 bd 84 00 00
+ 00 10 cmp DWORD PTR tga_bits_per_pixel$[rbp], 16
+ 0020a 74 14 je SHORT $LN12@stbi__tga_
+
+; 6586 : // when using a colormap, tga_bits_per_pixel is the size of the indexes
+; 6587 : // I don't think anything but 8 or 16bit indexes makes sense
+; 6588 : stbi__rewind(s);
+
+ 0020c 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00213 e8 00 00 00 00 call stbi__rewind
+ 00218 90 npad 1
+
+; 6589 : return 0;
+
+ 00219 33 c0 xor eax, eax
+ 0021b e9 ac 00 00 00 jmp $LN1@stbi__tga_
+$LN12@stbi__tga_:
+
+; 6590 : }
+; 6591 : tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL);
+
+ 00220 45 33 c0 xor r8d, r8d
+ 00223 33 d2 xor edx, edx
+ 00225 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR tga_colormap_bpp$[rbp]
+ 0022b e8 00 00 00 00 call stbi__tga_get_comp
+ 00230 89 45 44 mov DWORD PTR tga_comp$[rbp], eax
+
+; 6592 : } else {
+
+ 00233 eb 39 jmp SHORT $LN11@stbi__tga_
+$LN10@stbi__tga_:
+
+; 6593 : tga_comp = stbi__tga_get_comp(
+
+ 00235 83 7d 64 03 cmp DWORD PTR tga_image_type$[rbp], 3
+ 00239 74 12 je SHORT $LN18@stbi__tga_
+ 0023b 83 7d 64 0b cmp DWORD PTR tga_image_type$[rbp], 11
+ 0023f 74 0c je SHORT $LN18@stbi__tga_
+ 00241 c7 85 b4 01 00
+ 00 00 00 00 00 mov DWORD PTR tv153[rbp], 0
+ 0024b eb 0a jmp SHORT $LN19@stbi__tga_
+$LN18@stbi__tga_:
+ 0024d c7 85 b4 01 00
+ 00 01 00 00 00 mov DWORD PTR tv153[rbp], 1
+$LN19@stbi__tga_:
+ 00257 45 33 c0 xor r8d, r8d
+ 0025a 8b 95 b4 01 00
+ 00 mov edx, DWORD PTR tv153[rbp]
+ 00260 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR tga_bits_per_pixel$[rbp]
+ 00266 e8 00 00 00 00 call stbi__tga_get_comp
+ 0026b 89 45 44 mov DWORD PTR tga_comp$[rbp], eax
+$LN11@stbi__tga_:
+
+; 6594 : tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL);
+; 6595 : }
+; 6596 : if (!tga_comp) {
+
+ 0026e 83 7d 44 00 cmp DWORD PTR tga_comp$[rbp], 0
+ 00272 75 11 jne SHORT $LN13@stbi__tga_
+
+; 6597 : stbi__rewind(s);
+
+ 00274 48 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0027b e8 00 00 00 00 call stbi__rewind
+ 00280 90 npad 1
+
+; 6598 : return 0;
+
+ 00281 33 c0 xor eax, eax
+ 00283 eb 47 jmp SHORT $LN1@stbi__tga_
+$LN13@stbi__tga_:
+
+; 6599 : }
+; 6600 : if (x)
+
+ 00285 48 83 bd e8 01
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 0028d 74 0c je SHORT $LN14@stbi__tga_
+
+; 6601 : *x = tga_w;
+
+ 0028f 48 8b 85 e8 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00296 8b 4d 04 mov ecx, DWORD PTR tga_w$[rbp]
+ 00299 89 08 mov DWORD PTR [rax], ecx
+$LN14@stbi__tga_:
+
+; 6602 : if (y)
+
+ 0029b 48 83 bd f0 01
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 002a3 74 0c je SHORT $LN15@stbi__tga_
+
+; 6603 : *y = tga_h;
+
+ 002a5 48 8b 85 f0 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 002ac 8b 4d 24 mov ecx, DWORD PTR tga_h$[rbp]
+ 002af 89 08 mov DWORD PTR [rax], ecx
+$LN15@stbi__tga_:
+
+; 6604 : if (comp)
+
+ 002b1 48 83 bd f8 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 002b9 74 0c je SHORT $LN16@stbi__tga_
+
+; 6605 : *comp = tga_comp;
+
+ 002bb 48 8b 85 f8 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 002c2 8b 4d 44 mov ecx, DWORD PTR tga_comp$[rbp]
+ 002c5 89 08 mov DWORD PTR [rax], ecx
+$LN16@stbi__tga_:
+
+; 6606 : return 1; // seems to have passed everything
+
+ 002c7 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__tga_:
+
+; 6607 : }
+
+ 002cc 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 002d3 5f pop rdi
+ 002d4 5d pop rbp
+ 002d5 c3 ret 0
+stbi__tga_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__tga_load
+_TEXT SEGMENT
+tga_offset$ = 4
+tga_indexed$ = 36
+tga_image_type$ = 68
+tga_is_RLE$ = 100
+tga_palette_start$ = 132
+tga_palette_len$ = 164
+tga_palette_bits$ = 196
+tga_x_origin$ = 228
+tga_y_origin$ = 260
+tga_width$ = 292
+tga_height$ = 324
+tga_bits_per_pixel$ = 356
+tga_comp$ = 388
+tga_rgb16$ = 420
+tga_inverted$ = 452
+tga_data$ = 488
+tga_palette$ = 520
+i$ = 548
+j$ = 580
+raw_data$ = 612
+RLE_count$ = 644
+RLE_repeating$ = 676
+read_next_pixel$ = 708
+row$5 = 740
+tga_row$6 = 776
+pal_entry$7 = 808
+RLE_cmd$8 = 836
+pal_idx$9 = 868
+index1$10 = 900
+index2$11 = 932
+temp$12 = 964
+tga_pixel$13 = 1000
+temp$14 = 1028
+tv192 = 1620
+tv296 = 1620
+tv153 = 1620
+tv181 = 1624
+tv219 = 1624
+tv134 = 1624
+tv139 = 1624
+tv160 = 1624
+tv171 = 1624
+tv275 = 1624
+tv207 = 1624
+__$ArrayPad$ = 1632
+s$ = 1680
+x$ = 1688
+y$ = 1696
+comp$ = 1704
+req_comp$ = 1712
+ri$ = 1720
+stbi__tga_load PROC ; COMDAT
+
+; 6670 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec a8 06
+ 00 00 sub rsp, 1704 ; 000006a8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 0e 01 00 00 mov ecx, 270 ; 0000010eH
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 c8
+ 06 00 00 mov rcx, QWORD PTR [rsp+1736]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 60 06
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 6671 : // read in the TGA header stuff
+; 6672 : int tga_offset = stbi__get8(s);
+
+ 00059 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00060 e8 00 00 00 00 call stbi__get8
+ 00065 0f b6 c0 movzx eax, al
+ 00068 89 45 04 mov DWORD PTR tga_offset$[rbp], eax
+
+; 6673 : int tga_indexed = stbi__get8(s);
+
+ 0006b 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00072 e8 00 00 00 00 call stbi__get8
+ 00077 0f b6 c0 movzx eax, al
+ 0007a 89 45 24 mov DWORD PTR tga_indexed$[rbp], eax
+
+; 6674 : int tga_image_type = stbi__get8(s);
+
+ 0007d 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00084 e8 00 00 00 00 call stbi__get8
+ 00089 0f b6 c0 movzx eax, al
+ 0008c 89 45 44 mov DWORD PTR tga_image_type$[rbp], eax
+
+; 6675 : int tga_is_RLE = 0;
+
+ 0008f c7 45 64 00 00
+ 00 00 mov DWORD PTR tga_is_RLE$[rbp], 0
+
+; 6676 : int tga_palette_start = stbi__get16le(s);
+
+ 00096 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0009d e8 00 00 00 00 call stbi__get16le
+ 000a2 89 85 84 00 00
+ 00 mov DWORD PTR tga_palette_start$[rbp], eax
+
+; 6677 : int tga_palette_len = stbi__get16le(s);
+
+ 000a8 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000af e8 00 00 00 00 call stbi__get16le
+ 000b4 89 85 a4 00 00
+ 00 mov DWORD PTR tga_palette_len$[rbp], eax
+
+; 6678 : int tga_palette_bits = stbi__get8(s);
+
+ 000ba 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c1 e8 00 00 00 00 call stbi__get8
+ 000c6 0f b6 c0 movzx eax, al
+ 000c9 89 85 c4 00 00
+ 00 mov DWORD PTR tga_palette_bits$[rbp], eax
+
+; 6679 : int tga_x_origin = stbi__get16le(s);
+
+ 000cf 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000d6 e8 00 00 00 00 call stbi__get16le
+ 000db 89 85 e4 00 00
+ 00 mov DWORD PTR tga_x_origin$[rbp], eax
+
+; 6680 : int tga_y_origin = stbi__get16le(s);
+
+ 000e1 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000e8 e8 00 00 00 00 call stbi__get16le
+ 000ed 89 85 04 01 00
+ 00 mov DWORD PTR tga_y_origin$[rbp], eax
+
+; 6681 : int tga_width = stbi__get16le(s);
+
+ 000f3 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000fa e8 00 00 00 00 call stbi__get16le
+ 000ff 89 85 24 01 00
+ 00 mov DWORD PTR tga_width$[rbp], eax
+
+; 6682 : int tga_height = stbi__get16le(s);
+
+ 00105 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0010c e8 00 00 00 00 call stbi__get16le
+ 00111 89 85 44 01 00
+ 00 mov DWORD PTR tga_height$[rbp], eax
+
+; 6683 : int tga_bits_per_pixel = stbi__get8(s);
+
+ 00117 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0011e e8 00 00 00 00 call stbi__get8
+ 00123 0f b6 c0 movzx eax, al
+ 00126 89 85 64 01 00
+ 00 mov DWORD PTR tga_bits_per_pixel$[rbp], eax
+
+; 6684 : int tga_comp, tga_rgb16 = 0;
+
+ 0012c c7 85 a4 01 00
+ 00 00 00 00 00 mov DWORD PTR tga_rgb16$[rbp], 0
+
+; 6685 : int tga_inverted = stbi__get8(s);
+
+ 00136 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0013d e8 00 00 00 00 call stbi__get8
+ 00142 0f b6 c0 movzx eax, al
+ 00145 89 85 c4 01 00
+ 00 mov DWORD PTR tga_inverted$[rbp], eax
+
+; 6686 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?)
+; 6687 : // image data
+; 6688 : unsigned char *tga_data;
+; 6689 : unsigned char *tga_palette = NULL;
+
+ 0014b 48 c7 85 08 02
+ 00 00 00 00 00
+ 00 mov QWORD PTR tga_palette$[rbp], 0
+
+; 6690 : int i, j;
+; 6691 : unsigned char raw_data[4] = { 0 };
+
+ 00156 48 8d 85 64 02
+ 00 00 lea rax, QWORD PTR raw_data$[rbp]
+ 0015d 48 8b f8 mov rdi, rax
+ 00160 33 c0 xor eax, eax
+ 00162 b9 04 00 00 00 mov ecx, 4
+ 00167 f3 aa rep stosb
+
+; 6692 : int RLE_count = 0;
+
+ 00169 c7 85 84 02 00
+ 00 00 00 00 00 mov DWORD PTR RLE_count$[rbp], 0
+
+; 6693 : int RLE_repeating = 0;
+
+ 00173 c7 85 a4 02 00
+ 00 00 00 00 00 mov DWORD PTR RLE_repeating$[rbp], 0
+
+; 6694 : int read_next_pixel = 1;
+
+ 0017d c7 85 c4 02 00
+ 00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
+
+; 6695 : STBI_NOTUSED(ri);
+; 6696 : STBI_NOTUSED(tga_x_origin); // @TODO
+; 6697 : STBI_NOTUSED(tga_y_origin); // @TODO
+; 6698 :
+; 6699 : if (tga_height > STBI_MAX_DIMENSIONS)
+
+ 00187 81 bd 44 01 00
+ 00 00 00 00 01 cmp DWORD PTR tga_height$[rbp], 16777216 ; 01000000H
+ 00191 7e 34 jle SHORT $LN29@stbi__tga_
+
+; 6700 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 00193 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 0019a e8 00 00 00 00 call stbi__err
+ 0019f 85 c0 test eax, eax
+ 001a1 74 0d je SHORT $LN62@stbi__tga_
+ 001a3 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv134[rbp], 0
+ 001ae eb 0b jmp SHORT $LN63@stbi__tga_
+$LN62@stbi__tga_:
+ 001b0 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv134[rbp], 0
+$LN63@stbi__tga_:
+ 001bb 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv134[rbp]
+ 001c2 e9 ce 09 00 00 jmp $LN1@stbi__tga_
+$LN29@stbi__tga_:
+
+; 6701 : if (tga_width > STBI_MAX_DIMENSIONS)
+
+ 001c7 81 bd 24 01 00
+ 00 00 00 00 01 cmp DWORD PTR tga_width$[rbp], 16777216 ; 01000000H
+ 001d1 7e 34 jle SHORT $LN30@stbi__tga_
+
+; 6702 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 001d3 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 001da e8 00 00 00 00 call stbi__err
+ 001df 85 c0 test eax, eax
+ 001e1 74 0d je SHORT $LN64@stbi__tga_
+ 001e3 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv139[rbp], 0
+ 001ee eb 0b jmp SHORT $LN65@stbi__tga_
+$LN64@stbi__tga_:
+ 001f0 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv139[rbp], 0
+$LN65@stbi__tga_:
+ 001fb 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv139[rbp]
+ 00202 e9 8e 09 00 00 jmp $LN1@stbi__tga_
+$LN30@stbi__tga_:
+
+; 6703 :
+; 6704 : // do a tiny bit of precessing
+; 6705 : if (tga_image_type >= 8) {
+
+ 00207 83 7d 44 08 cmp DWORD PTR tga_image_type$[rbp], 8
+ 0020b 7c 10 jl SHORT $LN31@stbi__tga_
+
+; 6706 : tga_image_type -= 8;
+
+ 0020d 8b 45 44 mov eax, DWORD PTR tga_image_type$[rbp]
+ 00210 83 e8 08 sub eax, 8
+ 00213 89 45 44 mov DWORD PTR tga_image_type$[rbp], eax
+
+; 6707 : tga_is_RLE = 1;
+
+ 00216 c7 45 64 01 00
+ 00 00 mov DWORD PTR tga_is_RLE$[rbp], 1
+$LN31@stbi__tga_:
+
+; 6708 : }
+; 6709 : tga_inverted = 1 - ((tga_inverted >> 5) & 1);
+
+ 0021d 8b 85 c4 01 00
+ 00 mov eax, DWORD PTR tga_inverted$[rbp]
+ 00223 c1 f8 05 sar eax, 5
+ 00226 83 e0 01 and eax, 1
+ 00229 b9 01 00 00 00 mov ecx, 1
+ 0022e 2b c8 sub ecx, eax
+ 00230 8b c1 mov eax, ecx
+ 00232 89 85 c4 01 00
+ 00 mov DWORD PTR tga_inverted$[rbp], eax
+
+; 6710 :
+; 6711 : // If I'm paletted, then I'll use the number of bits from the palette
+; 6712 : if (tga_indexed)
+
+ 00238 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
+ 0023c 74 1c je SHORT $LN32@stbi__tga_
+
+; 6713 : tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16);
+
+ 0023e 4c 8d 85 a4 01
+ 00 00 lea r8, QWORD PTR tga_rgb16$[rbp]
+ 00245 33 d2 xor edx, edx
+ 00247 8b 8d c4 00 00
+ 00 mov ecx, DWORD PTR tga_palette_bits$[rbp]
+ 0024d e8 00 00 00 00 call stbi__tga_get_comp
+ 00252 89 85 84 01 00
+ 00 mov DWORD PTR tga_comp$[rbp], eax
+ 00258 eb 3a jmp SHORT $LN33@stbi__tga_
+$LN32@stbi__tga_:
+
+; 6714 : else
+; 6715 : tga_comp =
+
+ 0025a 83 7d 44 03 cmp DWORD PTR tga_image_type$[rbp], 3
+ 0025e 75 0c jne SHORT $LN66@stbi__tga_
+ 00260 c7 85 54 06 00
+ 00 01 00 00 00 mov DWORD PTR tv153[rbp], 1
+ 0026a eb 0a jmp SHORT $LN67@stbi__tga_
+$LN66@stbi__tga_:
+ 0026c c7 85 54 06 00
+ 00 00 00 00 00 mov DWORD PTR tv153[rbp], 0
+$LN67@stbi__tga_:
+ 00276 4c 8d 85 a4 01
+ 00 00 lea r8, QWORD PTR tga_rgb16$[rbp]
+ 0027d 8b 95 54 06 00
+ 00 mov edx, DWORD PTR tv153[rbp]
+ 00283 8b 8d 64 01 00
+ 00 mov ecx, DWORD PTR tga_bits_per_pixel$[rbp]
+ 00289 e8 00 00 00 00 call stbi__tga_get_comp
+ 0028e 89 85 84 01 00
+ 00 mov DWORD PTR tga_comp$[rbp], eax
+$LN33@stbi__tga_:
+
+; 6716 : stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16);
+; 6717 :
+; 6718 : if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency
+
+ 00294 83 bd 84 01 00
+ 00 00 cmp DWORD PTR tga_comp$[rbp], 0
+ 0029b 75 34 jne SHORT $LN34@stbi__tga_
+
+; 6719 : return stbi__errpuc("bad format", "Can't find out TGA pixelformat");
+
+ 0029d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0L@DMAPJJO@bad?5format@
+ 002a4 e8 00 00 00 00 call stbi__err
+ 002a9 85 c0 test eax, eax
+ 002ab 74 0d je SHORT $LN68@stbi__tga_
+ 002ad 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv160[rbp], 0
+ 002b8 eb 0b jmp SHORT $LN69@stbi__tga_
+$LN68@stbi__tga_:
+ 002ba 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv160[rbp], 0
+$LN69@stbi__tga_:
+ 002c5 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv160[rbp]
+ 002cc e9 c4 08 00 00 jmp $LN1@stbi__tga_
+$LN34@stbi__tga_:
+
+; 6720 :
+; 6721 : // tga info
+; 6722 : *x = tga_width;
+
+ 002d1 48 8b 85 98 06
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 002d8 8b 8d 24 01 00
+ 00 mov ecx, DWORD PTR tga_width$[rbp]
+ 002de 89 08 mov DWORD PTR [rax], ecx
+
+; 6723 : *y = tga_height;
+
+ 002e0 48 8b 85 a0 06
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 002e7 8b 8d 44 01 00
+ 00 mov ecx, DWORD PTR tga_height$[rbp]
+ 002ed 89 08 mov DWORD PTR [rax], ecx
+
+; 6724 : if (comp)
+
+ 002ef 48 83 bd a8 06
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 002f7 74 0f je SHORT $LN35@stbi__tga_
+
+; 6725 : *comp = tga_comp;
+
+ 002f9 48 8b 85 a8 06
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00300 8b 8d 84 01 00
+ 00 mov ecx, DWORD PTR tga_comp$[rbp]
+ 00306 89 08 mov DWORD PTR [rax], ecx
+$LN35@stbi__tga_:
+
+; 6726 :
+; 6727 : if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0))
+
+ 00308 45 33 c9 xor r9d, r9d
+ 0030b 44 8b 85 84 01
+ 00 00 mov r8d, DWORD PTR tga_comp$[rbp]
+ 00312 8b 95 44 01 00
+ 00 mov edx, DWORD PTR tga_height$[rbp]
+ 00318 8b 8d 24 01 00
+ 00 mov ecx, DWORD PTR tga_width$[rbp]
+ 0031e e8 00 00 00 00 call stbi__mad3sizes_valid
+ 00323 85 c0 test eax, eax
+ 00325 75 34 jne SHORT $LN36@stbi__tga_
+
+; 6728 : return stbi__errpuc("too large", "Corrupt TGA");
+
+ 00327 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 0032e e8 00 00 00 00 call stbi__err
+ 00333 85 c0 test eax, eax
+ 00335 74 0d je SHORT $LN70@stbi__tga_
+ 00337 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv171[rbp], 0
+ 00342 eb 0b jmp SHORT $LN71@stbi__tga_
+$LN70@stbi__tga_:
+ 00344 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv171[rbp], 0
+$LN71@stbi__tga_:
+ 0034f 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv171[rbp]
+ 00356 e9 3a 08 00 00 jmp $LN1@stbi__tga_
+$LN36@stbi__tga_:
+
+; 6729 :
+; 6730 : tga_data = (unsigned char *)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0);
+
+ 0035b 45 33 c9 xor r9d, r9d
+ 0035e 44 8b 85 84 01
+ 00 00 mov r8d, DWORD PTR tga_comp$[rbp]
+ 00365 8b 95 44 01 00
+ 00 mov edx, DWORD PTR tga_height$[rbp]
+ 0036b 8b 8d 24 01 00
+ 00 mov ecx, DWORD PTR tga_width$[rbp]
+ 00371 e8 00 00 00 00 call stbi__malloc_mad3
+ 00376 48 89 85 e8 01
+ 00 00 mov QWORD PTR tga_data$[rbp], rax
+
+; 6731 : if (!tga_data)
+
+ 0037d 48 83 bd e8 01
+ 00 00 00 cmp QWORD PTR tga_data$[rbp], 0
+ 00385 75 34 jne SHORT $LN37@stbi__tga_
+
+; 6732 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 00387 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0038e e8 00 00 00 00 call stbi__err
+ 00393 85 c0 test eax, eax
+ 00395 74 0d je SHORT $LN72@stbi__tga_
+ 00397 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv181[rbp], 0
+ 003a2 eb 0b jmp SHORT $LN73@stbi__tga_
+$LN72@stbi__tga_:
+ 003a4 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv181[rbp], 0
+$LN73@stbi__tga_:
+ 003af 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv181[rbp]
+ 003b6 e9 da 07 00 00 jmp $LN1@stbi__tga_
+$LN37@stbi__tga_:
+
+; 6733 :
+; 6734 : // skip to the data's starting position (offset usually = 0)
+; 6735 : stbi__skip(s, tga_offset);
+
+ 003bb 8b 55 04 mov edx, DWORD PTR tga_offset$[rbp]
+ 003be 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 003c5 e8 00 00 00 00 call stbi__skip
+ 003ca 90 npad 1
+
+; 6736 :
+; 6737 : if (!tga_indexed && !tga_is_RLE && !tga_rgb16) {
+
+ 003cb 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
+ 003cf 0f 85 d6 00 00
+ 00 jne $LN38@stbi__tga_
+ 003d5 83 7d 64 00 cmp DWORD PTR tga_is_RLE$[rbp], 0
+ 003d9 0f 85 cc 00 00
+ 00 jne $LN38@stbi__tga_
+ 003df 83 bd a4 01 00
+ 00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
+ 003e6 0f 85 bf 00 00
+ 00 jne $LN38@stbi__tga_
+
+; 6738 : for (i = 0; i < tga_height; ++i) {
+
+ 003ec c7 85 24 02 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 003f6 eb 0e jmp SHORT $LN4@stbi__tga_
+$LN2@stbi__tga_:
+ 003f8 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 003fe ff c0 inc eax
+ 00400 89 85 24 02 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__tga_:
+ 00406 8b 85 44 01 00
+ 00 mov eax, DWORD PTR tga_height$[rbp]
+ 0040c 39 85 24 02 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00412 0f 8d 8e 00 00
+ 00 jge $LN3@stbi__tga_
+
+; 6739 : int row = tga_inverted ? tga_height - i - 1 : i;
+
+ 00418 83 bd c4 01 00
+ 00 00 cmp DWORD PTR tga_inverted$[rbp], 0
+ 0041f 74 1a je SHORT $LN74@stbi__tga_
+ 00421 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00427 8b 8d 44 01 00
+ 00 mov ecx, DWORD PTR tga_height$[rbp]
+ 0042d 2b c8 sub ecx, eax
+ 0042f 8b c1 mov eax, ecx
+ 00431 ff c8 dec eax
+ 00433 89 85 54 06 00
+ 00 mov DWORD PTR tv192[rbp], eax
+ 00439 eb 0c jmp SHORT $LN75@stbi__tga_
+$LN74@stbi__tga_:
+ 0043b 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00441 89 85 54 06 00
+ 00 mov DWORD PTR tv192[rbp], eax
+$LN75@stbi__tga_:
+ 00447 8b 85 54 06 00
+ 00 mov eax, DWORD PTR tv192[rbp]
+ 0044d 89 85 e4 02 00
+ 00 mov DWORD PTR row$5[rbp], eax
+
+; 6740 : stbi_uc *tga_row = tga_data + row * tga_width * tga_comp;
+
+ 00453 8b 85 e4 02 00
+ 00 mov eax, DWORD PTR row$5[rbp]
+ 00459 0f af 85 24 01
+ 00 00 imul eax, DWORD PTR tga_width$[rbp]
+ 00460 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR tga_comp$[rbp]
+ 00467 48 98 cdqe
+ 00469 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR tga_data$[rbp]
+ 00470 48 03 c8 add rcx, rax
+ 00473 48 8b c1 mov rax, rcx
+ 00476 48 89 85 08 03
+ 00 00 mov QWORD PTR tga_row$6[rbp], rax
+
+; 6741 : stbi__getn(s, tga_row, tga_width * tga_comp);
+
+ 0047d 8b 85 24 01 00
+ 00 mov eax, DWORD PTR tga_width$[rbp]
+ 00483 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR tga_comp$[rbp]
+ 0048a 44 8b c0 mov r8d, eax
+ 0048d 48 8b 95 08 03
+ 00 00 mov rdx, QWORD PTR tga_row$6[rbp]
+ 00494 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0049b e8 00 00 00 00 call stbi__getn
+ 004a0 90 npad 1
+
+; 6742 : }
+
+ 004a1 e9 52 ff ff ff jmp $LN2@stbi__tga_
+$LN3@stbi__tga_:
+
+; 6743 : } else {
+
+ 004a6 e9 8f 05 00 00 jmp $LN39@stbi__tga_
+$LN38@stbi__tga_:
+
+; 6744 : // do I need to load a palette?
+; 6745 : if (tga_indexed) {
+
+ 004ab 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
+ 004af 0f 84 d7 01 00
+ 00 je $LN40@stbi__tga_
+
+; 6746 : if (tga_palette_len == 0) { /* you have to have at least one entry! */
+
+ 004b5 83 bd a4 00 00
+ 00 00 cmp DWORD PTR tga_palette_len$[rbp], 0
+ 004bc 75 42 jne SHORT $LN41@stbi__tga_
+
+; 6747 : STBI_FREE(tga_data);
+
+ 004be 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR tga_data$[rbp]
+ 004c5 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 004cb 90 npad 1
+
+; 6748 : return stbi__errpuc("bad palette", "Corrupt TGA");
+
+ 004cc 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@ILLOCNCO@bad?5palette@
+ 004d3 e8 00 00 00 00 call stbi__err
+ 004d8 85 c0 test eax, eax
+ 004da 74 0d je SHORT $LN76@stbi__tga_
+ 004dc 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv207[rbp], 0
+ 004e7 eb 0b jmp SHORT $LN77@stbi__tga_
+$LN76@stbi__tga_:
+ 004e9 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv207[rbp], 0
+$LN77@stbi__tga_:
+ 004f4 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv207[rbp]
+ 004fb e9 95 06 00 00 jmp $LN1@stbi__tga_
+$LN41@stbi__tga_:
+
+; 6749 : }
+; 6750 :
+; 6751 : // any data to skip? (offset usually = 0)
+; 6752 : stbi__skip(s, tga_palette_start);
+
+ 00500 8b 95 84 00 00
+ 00 mov edx, DWORD PTR tga_palette_start$[rbp]
+ 00506 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0050d e8 00 00 00 00 call stbi__skip
+ 00512 90 npad 1
+
+; 6753 : // load the palette
+; 6754 : tga_palette =
+
+ 00513 45 33 c0 xor r8d, r8d
+ 00516 8b 95 84 01 00
+ 00 mov edx, DWORD PTR tga_comp$[rbp]
+ 0051c 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR tga_palette_len$[rbp]
+ 00522 e8 00 00 00 00 call stbi__malloc_mad2
+ 00527 48 89 85 08 02
+ 00 00 mov QWORD PTR tga_palette$[rbp], rax
+
+; 6755 : (unsigned char *)stbi__malloc_mad2(tga_palette_len, tga_comp, 0);
+; 6756 : if (!tga_palette) {
+
+ 0052e 48 83 bd 08 02
+ 00 00 00 cmp QWORD PTR tga_palette$[rbp], 0
+ 00536 75 42 jne SHORT $LN42@stbi__tga_
+
+; 6757 : STBI_FREE(tga_data);
+
+ 00538 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR tga_data$[rbp]
+ 0053f ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00545 90 npad 1
+
+; 6758 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 00546 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0054d e8 00 00 00 00 call stbi__err
+ 00552 85 c0 test eax, eax
+ 00554 74 0d je SHORT $LN78@stbi__tga_
+ 00556 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv219[rbp], 0
+ 00561 eb 0b jmp SHORT $LN79@stbi__tga_
+$LN78@stbi__tga_:
+ 00563 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv219[rbp], 0
+$LN79@stbi__tga_:
+ 0056e 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv219[rbp]
+ 00575 e9 1b 06 00 00 jmp $LN1@stbi__tga_
+$LN42@stbi__tga_:
+
+; 6759 : }
+; 6760 : if (tga_rgb16) {
+
+ 0057a 83 bd a4 01 00
+ 00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
+ 00581 0f 84 8e 00 00
+ 00 je $LN43@stbi__tga_
+
+; 6761 : stbi_uc *pal_entry = tga_palette;
+
+ 00587 48 8b 85 08 02
+ 00 00 mov rax, QWORD PTR tga_palette$[rbp]
+ 0058e 48 89 85 28 03
+ 00 00 mov QWORD PTR pal_entry$7[rbp], rax
+
+; 6762 : STBI_ASSERT(tga_comp == STBI_rgb);
+
+ 00595 83 bd 84 01 00
+ 00 03 cmp DWORD PTR tga_comp$[rbp], 3
+ 0059c 74 1c je SHORT $LN80@stbi__tga_
+ 0059e 41 b8 6a 1a 00
+ 00 mov r8d, 6762 ; 00001a6aH
+ 005a4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 005ab 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@
+ 005b2 ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 005b8 33 c0 xor eax, eax
+$LN80@stbi__tga_:
+
+; 6763 : for (i = 0; i < tga_palette_len; ++i) {
+
+ 005ba c7 85 24 02 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 005c4 eb 0e jmp SHORT $LN7@stbi__tga_
+$LN5@stbi__tga_:
+ 005c6 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 005cc ff c0 inc eax
+ 005ce 89 85 24 02 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN7@stbi__tga_:
+ 005d4 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR tga_palette_len$[rbp]
+ 005da 39 85 24 02 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 005e0 7d 31 jge SHORT $LN6@stbi__tga_
+
+; 6764 : stbi__tga_read_rgb16(s, pal_entry);
+
+ 005e2 48 8b 95 28 03
+ 00 00 mov rdx, QWORD PTR pal_entry$7[rbp]
+ 005e9 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005f0 e8 00 00 00 00 call stbi__tga_read_rgb16
+ 005f5 90 npad 1
+
+; 6765 : pal_entry += tga_comp;
+
+ 005f6 48 63 85 84 01
+ 00 00 movsxd rax, DWORD PTR tga_comp$[rbp]
+ 005fd 48 8b 8d 28 03
+ 00 00 mov rcx, QWORD PTR pal_entry$7[rbp]
+ 00604 48 03 c8 add rcx, rax
+ 00607 48 8b c1 mov rax, rcx
+ 0060a 48 89 85 28 03
+ 00 00 mov QWORD PTR pal_entry$7[rbp], rax
+
+; 6766 : }
+
+ 00611 eb b3 jmp SHORT $LN5@stbi__tga_
+$LN6@stbi__tga_:
+
+; 6767 : } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) {
+
+ 00613 eb 77 jmp SHORT $LN44@stbi__tga_
+$LN43@stbi__tga_:
+ 00615 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR tga_palette_len$[rbp]
+ 0061b 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR tga_comp$[rbp]
+ 00622 44 8b c0 mov r8d, eax
+ 00625 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR tga_palette$[rbp]
+ 0062c 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00633 e8 00 00 00 00 call stbi__getn
+ 00638 85 c0 test eax, eax
+ 0063a 75 50 jne SHORT $LN45@stbi__tga_
+
+; 6768 : STBI_FREE(tga_data);
+
+ 0063c 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR tga_data$[rbp]
+ 00643 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00649 90 npad 1
+
+; 6769 : STBI_FREE(tga_palette);
+
+ 0064a 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR tga_palette$[rbp]
+ 00651 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00657 90 npad 1
+
+; 6770 : return stbi__errpuc("bad palette", "Corrupt TGA");
+
+ 00658 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@ILLOCNCO@bad?5palette@
+ 0065f e8 00 00 00 00 call stbi__err
+ 00664 85 c0 test eax, eax
+ 00666 74 0d je SHORT $LN81@stbi__tga_
+ 00668 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv275[rbp], 0
+ 00673 eb 0b jmp SHORT $LN82@stbi__tga_
+$LN81@stbi__tga_:
+ 00675 48 c7 85 58 06
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv275[rbp], 0
+$LN82@stbi__tga_:
+ 00680 48 8b 85 58 06
+ 00 00 mov rax, QWORD PTR tv275[rbp]
+ 00687 e9 09 05 00 00 jmp $LN1@stbi__tga_
+$LN45@stbi__tga_:
+$LN44@stbi__tga_:
+$LN40@stbi__tga_:
+
+; 6771 : }
+; 6772 : }
+; 6773 : // load the data
+; 6774 : for (i = 0; i < tga_width * tga_height; ++i) {
+
+ 0068c c7 85 24 02 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00696 eb 0e jmp SHORT $LN10@stbi__tga_
+$LN8@stbi__tga_:
+ 00698 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 0069e ff c0 inc eax
+ 006a0 89 85 24 02 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN10@stbi__tga_:
+ 006a6 8b 85 24 01 00
+ 00 mov eax, DWORD PTR tga_width$[rbp]
+ 006ac 0f af 85 44 01
+ 00 00 imul eax, DWORD PTR tga_height$[rbp]
+ 006b3 39 85 24 02 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 006b9 0f 8d 47 02 00
+ 00 jge $LN9@stbi__tga_
+
+; 6775 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk?
+; 6776 : if (tga_is_RLE) {
+
+ 006bf 83 7d 64 00 cmp DWORD PTR tga_is_RLE$[rbp], 0
+ 006c3 74 5f je SHORT $LN46@stbi__tga_
+
+; 6777 : if (RLE_count == 0) {
+
+ 006c5 83 bd 84 02 00
+ 00 00 cmp DWORD PTR RLE_count$[rbp], 0
+ 006cc 75 41 jne SHORT $LN48@stbi__tga_
+
+; 6778 : // yep, get the next byte as a RLE command
+; 6779 : int RLE_cmd = stbi__get8(s);
+
+ 006ce 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 006d5 e8 00 00 00 00 call stbi__get8
+ 006da 0f b6 c0 movzx eax, al
+ 006dd 89 85 44 03 00
+ 00 mov DWORD PTR RLE_cmd$8[rbp], eax
+
+; 6780 : RLE_count = 1 + (RLE_cmd & 127);
+
+ 006e3 8b 85 44 03 00
+ 00 mov eax, DWORD PTR RLE_cmd$8[rbp]
+ 006e9 83 e0 7f and eax, 127 ; 0000007fH
+ 006ec ff c0 inc eax
+ 006ee 89 85 84 02 00
+ 00 mov DWORD PTR RLE_count$[rbp], eax
+
+; 6781 : RLE_repeating = RLE_cmd >> 7;
+
+ 006f4 8b 85 44 03 00
+ 00 mov eax, DWORD PTR RLE_cmd$8[rbp]
+ 006fa c1 f8 07 sar eax, 7
+ 006fd 89 85 a4 02 00
+ 00 mov DWORD PTR RLE_repeating$[rbp], eax
+
+; 6782 : read_next_pixel = 1;
+
+ 00703 c7 85 c4 02 00
+ 00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
+ 0070d eb 13 jmp SHORT $LN49@stbi__tga_
+$LN48@stbi__tga_:
+
+; 6783 : } else if (!RLE_repeating) {
+
+ 0070f 83 bd a4 02 00
+ 00 00 cmp DWORD PTR RLE_repeating$[rbp], 0
+ 00716 75 0a jne SHORT $LN50@stbi__tga_
+
+; 6784 : read_next_pixel = 1;
+
+ 00718 c7 85 c4 02 00
+ 00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
+$LN50@stbi__tga_:
+$LN49@stbi__tga_:
+
+; 6785 : }
+; 6786 : } else {
+
+ 00722 eb 0a jmp SHORT $LN47@stbi__tga_
+$LN46@stbi__tga_:
+
+; 6787 : read_next_pixel = 1;
+
+ 00724 c7 85 c4 02 00
+ 00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1
+$LN47@stbi__tga_:
+
+; 6788 : }
+; 6789 : // OK, if I need to read a pixel, do it now
+; 6790 : if (read_next_pixel) {
+
+ 0072e 83 bd c4 02 00
+ 00 00 cmp DWORD PTR read_next_pixel$[rbp], 0
+ 00735 0f 84 5f 01 00
+ 00 je $LN51@stbi__tga_
+
+; 6791 : // load however much data we did have
+; 6792 : if (tga_indexed) {
+
+ 0073b 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0
+ 0073f 0f 84 c3 00 00
+ 00 je $LN52@stbi__tga_
+
+; 6793 : // read in index, then perform the lookup
+; 6794 : int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) :
+
+ 00745 83 bd 64 01 00
+ 00 08 cmp DWORD PTR tga_bits_per_pixel$[rbp], 8
+ 0074c 75 17 jne SHORT $LN83@stbi__tga_
+ 0074e 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00755 e8 00 00 00 00 call stbi__get8
+ 0075a 0f b6 c0 movzx eax, al
+ 0075d 89 85 54 06 00
+ 00 mov DWORD PTR tv296[rbp], eax
+ 00763 eb 12 jmp SHORT $LN84@stbi__tga_
+$LN83@stbi__tga_:
+ 00765 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0076c e8 00 00 00 00 call stbi__get16le
+ 00771 89 85 54 06 00
+ 00 mov DWORD PTR tv296[rbp], eax
+$LN84@stbi__tga_:
+ 00777 8b 85 54 06 00
+ 00 mov eax, DWORD PTR tv296[rbp]
+ 0077d 89 85 64 03 00
+ 00 mov DWORD PTR pal_idx$9[rbp], eax
+
+; 6795 : stbi__get16le(s);
+; 6796 : if (pal_idx >= tga_palette_len) {
+
+ 00783 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR tga_palette_len$[rbp]
+ 00789 39 85 64 03 00
+ 00 cmp DWORD PTR pal_idx$9[rbp], eax
+ 0078f 7c 0a jl SHORT $LN54@stbi__tga_
+
+; 6797 : // invalid index
+; 6798 : pal_idx = 0;
+
+ 00791 c7 85 64 03 00
+ 00 00 00 00 00 mov DWORD PTR pal_idx$9[rbp], 0
+$LN54@stbi__tga_:
+
+; 6799 : }
+; 6800 : pal_idx *= tga_comp;
+
+ 0079b 8b 85 64 03 00
+ 00 mov eax, DWORD PTR pal_idx$9[rbp]
+ 007a1 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR tga_comp$[rbp]
+ 007a8 89 85 64 03 00
+ 00 mov DWORD PTR pal_idx$9[rbp], eax
+
+; 6801 : for (j = 0; j < tga_comp; ++j) {
+
+ 007ae c7 85 44 02 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 007b8 eb 0e jmp SHORT $LN13@stbi__tga_
+$LN11@stbi__tga_:
+ 007ba 8b 85 44 02 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 007c0 ff c0 inc eax
+ 007c2 89 85 44 02 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN13@stbi__tga_:
+ 007c8 8b 85 84 01 00
+ 00 mov eax, DWORD PTR tga_comp$[rbp]
+ 007ce 39 85 44 02 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 007d4 7d 2d jge SHORT $LN12@stbi__tga_
+
+; 6802 : raw_data[j] = tga_palette[pal_idx + j];
+
+ 007d6 8b 85 44 02 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 007dc 8b 8d 64 03 00
+ 00 mov ecx, DWORD PTR pal_idx$9[rbp]
+ 007e2 03 c8 add ecx, eax
+ 007e4 8b c1 mov eax, ecx
+ 007e6 48 98 cdqe
+ 007e8 48 63 8d 44 02
+ 00 00 movsxd rcx, DWORD PTR j$[rbp]
+ 007ef 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR tga_palette$[rbp]
+ 007f6 0f b6 04 02 movzx eax, BYTE PTR [rdx+rax]
+ 007fa 88 84 0d 64 02
+ 00 00 mov BYTE PTR raw_data$[rbp+rcx], al
+
+; 6803 : }
+
+ 00801 eb b7 jmp SHORT $LN11@stbi__tga_
+$LN12@stbi__tga_:
+
+; 6804 : } else if (tga_rgb16) {
+
+ 00803 e9 88 00 00 00 jmp $LN53@stbi__tga_
+$LN52@stbi__tga_:
+ 00808 83 bd a4 01 00
+ 00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
+ 0080f 74 3b je SHORT $LN55@stbi__tga_
+
+; 6805 : STBI_ASSERT(tga_comp == STBI_rgb);
+
+ 00811 83 bd 84 01 00
+ 00 03 cmp DWORD PTR tga_comp$[rbp], 3
+ 00818 74 1c je SHORT $LN85@stbi__tga_
+ 0081a 41 b8 95 1a 00
+ 00 mov r8d, 6805 ; 00001a95H
+ 00820 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_1GK@GEMLNHEN@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
+ 00827 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_1CK@GOOINIO@?$AAt?$AAg?$AAa?$AA_?$AAc?$AAo?$AAm?$AAp?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AAS?$AAT?$AAB@
+ 0082e ff 15 00 00 00
+ 00 call QWORD PTR __imp__wassert
+ 00834 33 c0 xor eax, eax
+$LN85@stbi__tga_:
+
+; 6806 : stbi__tga_read_rgb16(s, raw_data);
+
+ 00836 48 8d 95 64 02
+ 00 00 lea rdx, QWORD PTR raw_data$[rbp]
+ 0083d 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00844 e8 00 00 00 00 call stbi__tga_read_rgb16
+ 00849 90 npad 1
+
+; 6807 : } else {
+
+ 0084a eb 44 jmp SHORT $LN56@stbi__tga_
+$LN55@stbi__tga_:
+
+; 6808 : // read in the data raw
+; 6809 : for (j = 0; j < tga_comp; ++j) {
+
+ 0084c c7 85 44 02 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 00856 eb 0e jmp SHORT $LN16@stbi__tga_
+$LN14@stbi__tga_:
+ 00858 8b 85 44 02 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 0085e ff c0 inc eax
+ 00860 89 85 44 02 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN16@stbi__tga_:
+ 00866 8b 85 84 01 00
+ 00 mov eax, DWORD PTR tga_comp$[rbp]
+ 0086c 39 85 44 02 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 00872 7d 1c jge SHORT $LN15@stbi__tga_
+
+; 6810 : raw_data[j] = stbi__get8(s);
+
+ 00874 48 8b 8d 90 06
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0087b e8 00 00 00 00 call stbi__get8
+ 00880 48 63 8d 44 02
+ 00 00 movsxd rcx, DWORD PTR j$[rbp]
+ 00887 88 84 0d 64 02
+ 00 00 mov BYTE PTR raw_data$[rbp+rcx], al
+
+; 6811 : }
+
+ 0088e eb c8 jmp SHORT $LN14@stbi__tga_
+$LN15@stbi__tga_:
+$LN56@stbi__tga_:
+$LN53@stbi__tga_:
+
+; 6812 : }
+; 6813 : // clear the reading flag for the next pixel
+; 6814 : read_next_pixel = 0;
+
+ 00890 c7 85 c4 02 00
+ 00 00 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 0
+$LN51@stbi__tga_:
+
+; 6815 : } // end of reading a pixel
+; 6816 :
+; 6817 : // copy data
+; 6818 : for (j = 0; j < tga_comp; ++j)
+
+ 0089a c7 85 44 02 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 008a4 eb 0e jmp SHORT $LN19@stbi__tga_
+$LN17@stbi__tga_:
+ 008a6 8b 85 44 02 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 008ac ff c0 inc eax
+ 008ae 89 85 44 02 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN19@stbi__tga_:
+ 008b4 8b 85 84 01 00
+ 00 mov eax, DWORD PTR tga_comp$[rbp]
+ 008ba 39 85 44 02 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 008c0 7d 31 jge SHORT $LN18@stbi__tga_
+
+; 6819 : tga_data[i * tga_comp + j] = raw_data[j];
+
+ 008c2 48 63 85 44 02
+ 00 00 movsxd rax, DWORD PTR j$[rbp]
+ 008c9 8b 8d 24 02 00
+ 00 mov ecx, DWORD PTR i$[rbp]
+ 008cf 0f af 8d 84 01
+ 00 00 imul ecx, DWORD PTR tga_comp$[rbp]
+ 008d6 03 8d 44 02 00
+ 00 add ecx, DWORD PTR j$[rbp]
+ 008dc 48 63 c9 movsxd rcx, ecx
+ 008df 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR tga_data$[rbp]
+ 008e6 0f b6 84 05 64
+ 02 00 00 movzx eax, BYTE PTR raw_data$[rbp+rax]
+ 008ee 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 008f1 eb b3 jmp SHORT $LN17@stbi__tga_
+$LN18@stbi__tga_:
+
+; 6820 :
+; 6821 : // in case we're in RLE mode, keep counting down
+; 6822 : --RLE_count;
+
+ 008f3 8b 85 84 02 00
+ 00 mov eax, DWORD PTR RLE_count$[rbp]
+ 008f9 ff c8 dec eax
+ 008fb 89 85 84 02 00
+ 00 mov DWORD PTR RLE_count$[rbp], eax
+
+; 6823 : }
+
+ 00901 e9 92 fd ff ff jmp $LN8@stbi__tga_
+$LN9@stbi__tga_:
+
+; 6824 : // do I need to invert the image?
+; 6825 : if (tga_inverted) {
+
+ 00906 83 bd c4 01 00
+ 00 00 cmp DWORD PTR tga_inverted$[rbp], 0
+ 0090d 0f 84 0f 01 00
+ 00 je $LN57@stbi__tga_
+
+; 6826 : for (j = 0; j * 2 < tga_height; ++j) {
+
+ 00913 c7 85 44 02 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 0091d eb 0e jmp SHORT $LN22@stbi__tga_
+$LN20@stbi__tga_:
+ 0091f 8b 85 44 02 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 00925 ff c0 inc eax
+ 00927 89 85 44 02 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN22@stbi__tga_:
+ 0092d 8b 85 44 02 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 00933 d1 e0 shl eax, 1
+ 00935 3b 85 44 01 00
+ 00 cmp eax, DWORD PTR tga_height$[rbp]
+ 0093b 0f 8d e1 00 00
+ 00 jge $LN21@stbi__tga_
+
+; 6827 : int index1 = j * tga_width * tga_comp;
+
+ 00941 8b 85 44 02 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 00947 0f af 85 24 01
+ 00 00 imul eax, DWORD PTR tga_width$[rbp]
+ 0094e 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR tga_comp$[rbp]
+ 00955 89 85 84 03 00
+ 00 mov DWORD PTR index1$10[rbp], eax
+
+; 6828 : int index2 = (tga_height - 1 - j) * tga_width * tga_comp;
+
+ 0095b 8b 85 44 01 00
+ 00 mov eax, DWORD PTR tga_height$[rbp]
+ 00961 ff c8 dec eax
+ 00963 2b 85 44 02 00
+ 00 sub eax, DWORD PTR j$[rbp]
+ 00969 0f af 85 24 01
+ 00 00 imul eax, DWORD PTR tga_width$[rbp]
+ 00970 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR tga_comp$[rbp]
+ 00977 89 85 a4 03 00
+ 00 mov DWORD PTR index2$11[rbp], eax
+
+; 6829 : for (i = tga_width * tga_comp; i > 0; --i) {
+
+ 0097d 8b 85 24 01 00
+ 00 mov eax, DWORD PTR tga_width$[rbp]
+ 00983 0f af 85 84 01
+ 00 00 imul eax, DWORD PTR tga_comp$[rbp]
+ 0098a 89 85 24 02 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 00990 eb 0e jmp SHORT $LN25@stbi__tga_
+$LN23@stbi__tga_:
+ 00992 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00998 ff c8 dec eax
+ 0099a 89 85 24 02 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN25@stbi__tga_:
+ 009a0 83 bd 24 02 00
+ 00 00 cmp DWORD PTR i$[rbp], 0
+ 009a7 7e 74 jle SHORT $LN24@stbi__tga_
+
+; 6830 : unsigned char temp = tga_data[index1];
+
+ 009a9 48 63 85 84 03
+ 00 00 movsxd rax, DWORD PTR index1$10[rbp]
+ 009b0 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR tga_data$[rbp]
+ 009b7 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 009bb 88 85 c4 03 00
+ 00 mov BYTE PTR temp$12[rbp], al
+
+; 6831 : tga_data[index1] = tga_data[index2];
+
+ 009c1 48 63 85 a4 03
+ 00 00 movsxd rax, DWORD PTR index2$11[rbp]
+ 009c8 48 63 8d 84 03
+ 00 00 movsxd rcx, DWORD PTR index1$10[rbp]
+ 009cf 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR tga_data$[rbp]
+ 009d6 48 8b bd e8 01
+ 00 00 mov rdi, QWORD PTR tga_data$[rbp]
+ 009dd 0f b6 04 07 movzx eax, BYTE PTR [rdi+rax]
+ 009e1 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6832 : tga_data[index2] = temp;
+
+ 009e4 48 63 85 a4 03
+ 00 00 movsxd rax, DWORD PTR index2$11[rbp]
+ 009eb 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR tga_data$[rbp]
+ 009f2 0f b6 95 c4 03
+ 00 00 movzx edx, BYTE PTR temp$12[rbp]
+ 009f9 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 6833 : ++index1;
+
+ 009fc 8b 85 84 03 00
+ 00 mov eax, DWORD PTR index1$10[rbp]
+ 00a02 ff c0 inc eax
+ 00a04 89 85 84 03 00
+ 00 mov DWORD PTR index1$10[rbp], eax
+
+; 6834 : ++index2;
+
+ 00a0a 8b 85 a4 03 00
+ 00 mov eax, DWORD PTR index2$11[rbp]
+ 00a10 ff c0 inc eax
+ 00a12 89 85 a4 03 00
+ 00 mov DWORD PTR index2$11[rbp], eax
+
+; 6835 : }
+
+ 00a18 e9 75 ff ff ff jmp $LN23@stbi__tga_
+$LN24@stbi__tga_:
+
+; 6836 : }
+
+ 00a1d e9 fd fe ff ff jmp $LN20@stbi__tga_
+$LN21@stbi__tga_:
+$LN57@stbi__tga_:
+
+; 6837 : }
+; 6838 : // clear my palette, if I had one
+; 6839 : if (tga_palette != NULL) {
+
+ 00a22 48 83 bd 08 02
+ 00 00 00 cmp QWORD PTR tga_palette$[rbp], 0
+ 00a2a 74 0e je SHORT $LN58@stbi__tga_
+
+; 6840 : STBI_FREE(tga_palette);
+
+ 00a2c 48 8b 8d 08 02
+ 00 00 mov rcx, QWORD PTR tga_palette$[rbp]
+ 00a33 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00a39 90 npad 1
+$LN58@stbi__tga_:
+$LN39@stbi__tga_:
+
+; 6841 : }
+; 6842 : }
+; 6843 :
+; 6844 : // swap RGB - if the source data was RGB16, it already is in the right order
+; 6845 : if (tga_comp >= 3 && !tga_rgb16) {
+
+ 00a3a 83 bd 84 01 00
+ 00 03 cmp DWORD PTR tga_comp$[rbp], 3
+ 00a41 0f 8c c5 00 00
+ 00 jl $LN59@stbi__tga_
+ 00a47 83 bd a4 01 00
+ 00 00 cmp DWORD PTR tga_rgb16$[rbp], 0
+ 00a4e 0f 85 b8 00 00
+ 00 jne $LN59@stbi__tga_
+
+; 6846 : unsigned char *tga_pixel = tga_data;
+
+ 00a54 48 8b 85 e8 01
+ 00 00 mov rax, QWORD PTR tga_data$[rbp]
+ 00a5b 48 89 85 e8 03
+ 00 00 mov QWORD PTR tga_pixel$13[rbp], rax
+
+; 6847 : for (i = 0; i < tga_width * tga_height; ++i) {
+
+ 00a62 c7 85 24 02 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00a6c eb 0e jmp SHORT $LN28@stbi__tga_
+$LN26@stbi__tga_:
+ 00a6e 8b 85 24 02 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00a74 ff c0 inc eax
+ 00a76 89 85 24 02 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN28@stbi__tga_:
+ 00a7c 8b 85 24 01 00
+ 00 mov eax, DWORD PTR tga_width$[rbp]
+ 00a82 0f af 85 44 01
+ 00 00 imul eax, DWORD PTR tga_height$[rbp]
+ 00a89 39 85 24 02 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00a8f 7d 7b jge SHORT $LN27@stbi__tga_
+
+; 6848 : unsigned char temp = tga_pixel[0];
+
+ 00a91 b8 01 00 00 00 mov eax, 1
+ 00a96 48 6b c0 00 imul rax, rax, 0
+ 00a9a 48 8b 8d e8 03
+ 00 00 mov rcx, QWORD PTR tga_pixel$13[rbp]
+ 00aa1 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 00aa5 88 85 04 04 00
+ 00 mov BYTE PTR temp$14[rbp], al
+
+; 6849 : tga_pixel[0] = tga_pixel[2];
+
+ 00aab b8 01 00 00 00 mov eax, 1
+ 00ab0 48 6b c0 02 imul rax, rax, 2
+ 00ab4 b9 01 00 00 00 mov ecx, 1
+ 00ab9 48 6b c9 00 imul rcx, rcx, 0
+ 00abd 48 8b 95 e8 03
+ 00 00 mov rdx, QWORD PTR tga_pixel$13[rbp]
+ 00ac4 48 8b bd e8 03
+ 00 00 mov rdi, QWORD PTR tga_pixel$13[rbp]
+ 00acb 0f b6 04 07 movzx eax, BYTE PTR [rdi+rax]
+ 00acf 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6850 : tga_pixel[2] = temp;
+
+ 00ad2 b8 01 00 00 00 mov eax, 1
+ 00ad7 48 6b c0 02 imul rax, rax, 2
+ 00adb 48 8b 8d e8 03
+ 00 00 mov rcx, QWORD PTR tga_pixel$13[rbp]
+ 00ae2 0f b6 95 04 04
+ 00 00 movzx edx, BYTE PTR temp$14[rbp]
+ 00ae9 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 6851 : tga_pixel += tga_comp;
+
+ 00aec 48 63 85 84 01
+ 00 00 movsxd rax, DWORD PTR tga_comp$[rbp]
+ 00af3 48 8b 8d e8 03
+ 00 00 mov rcx, QWORD PTR tga_pixel$13[rbp]
+ 00afa 48 03 c8 add rcx, rax
+ 00afd 48 8b c1 mov rax, rcx
+ 00b00 48 89 85 e8 03
+ 00 00 mov QWORD PTR tga_pixel$13[rbp], rax
+
+; 6852 : }
+
+ 00b07 e9 62 ff ff ff jmp $LN26@stbi__tga_
+$LN27@stbi__tga_:
+$LN59@stbi__tga_:
+
+; 6853 : }
+; 6854 :
+; 6855 : // convert to target component count
+; 6856 : if (req_comp && req_comp != tga_comp)
+
+ 00b0c 83 bd b0 06 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 00b13 74 3f je SHORT $LN60@stbi__tga_
+ 00b15 8b 85 84 01 00
+ 00 mov eax, DWORD PTR tga_comp$[rbp]
+ 00b1b 39 85 b0 06 00
+ 00 cmp DWORD PTR req_comp$[rbp], eax
+ 00b21 74 31 je SHORT $LN60@stbi__tga_
+
+; 6857 : tga_data =
+
+ 00b23 8b 85 44 01 00
+ 00 mov eax, DWORD PTR tga_height$[rbp]
+ 00b29 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00b2d 44 8b 8d 24 01
+ 00 00 mov r9d, DWORD PTR tga_width$[rbp]
+ 00b34 44 8b 85 b0 06
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 00b3b 8b 95 84 01 00
+ 00 mov edx, DWORD PTR tga_comp$[rbp]
+ 00b41 48 8b 8d e8 01
+ 00 00 mov rcx, QWORD PTR tga_data$[rbp]
+ 00b48 e8 00 00 00 00 call stbi__convert_format
+ 00b4d 48 89 85 e8 01
+ 00 00 mov QWORD PTR tga_data$[rbp], rax
+$LN60@stbi__tga_:
+
+; 6858 : stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height);
+; 6859 :
+; 6860 : // the things I do to get rid of an error message, and yet keep
+; 6861 : // Microsoft's C compilers happy... [8^(
+; 6862 : tga_palette_start = tga_palette_len = tga_palette_bits = tga_x_origin = tga_y_origin = 0;
+
+ 00b54 c7 85 04 01 00
+ 00 00 00 00 00 mov DWORD PTR tga_y_origin$[rbp], 0
+ 00b5e 8b 85 04 01 00
+ 00 mov eax, DWORD PTR tga_y_origin$[rbp]
+ 00b64 89 85 e4 00 00
+ 00 mov DWORD PTR tga_x_origin$[rbp], eax
+ 00b6a 8b 85 e4 00 00
+ 00 mov eax, DWORD PTR tga_x_origin$[rbp]
+ 00b70 89 85 c4 00 00
+ 00 mov DWORD PTR tga_palette_bits$[rbp], eax
+ 00b76 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR tga_palette_bits$[rbp]
+ 00b7c 89 85 a4 00 00
+ 00 mov DWORD PTR tga_palette_len$[rbp], eax
+ 00b82 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR tga_palette_len$[rbp]
+ 00b88 89 85 84 00 00
+ 00 mov DWORD PTR tga_palette_start$[rbp], eax
+
+; 6863 : STBI_NOTUSED(tga_palette_start);
+; 6864 : // OK, done
+; 6865 : return tga_data;
+
+ 00b8e 48 8b 85 e8 01
+ 00 00 mov rax, QWORD PTR tga_data$[rbp]
+$LN1@stbi__tga_:
+
+; 6866 : }
+
+ 00b95 48 8b f8 mov rdi, rax
+ 00b98 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00b9c 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__tga_load$rtcFrameData
+ 00ba3 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00ba8 48 8b c7 mov rax, rdi
+ 00bab 48 8b 8d 60 06
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00bb2 48 33 cd xor rcx, rbp
+ 00bb5 e8 00 00 00 00 call __security_check_cookie
+ 00bba 48 8d a5 78 06
+ 00 00 lea rsp, QWORD PTR [rbp+1656]
+ 00bc1 5f pop rdi
+ 00bc2 5d pop rbp
+ 00bc3 c3 ret 0
+stbi__tga_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__tga_test
+_TEXT SEGMENT
+res$ = 4
+sz$ = 36
+tga_color_type$ = 68
+s$ = 320
+stbi__tga_test PROC ; COMDAT
+
+; 6610 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 6611 : int res = 0;
+
+ 00020 c7 45 04 00 00
+ 00 00 mov DWORD PTR res$[rbp], 0
+
+; 6612 : int sz, tga_color_type;
+; 6613 : stbi__get8(s); // discard Offset
+
+ 00027 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002e e8 00 00 00 00 call stbi__get8
+ 00033 90 npad 1
+
+; 6614 : tga_color_type = stbi__get8(s); // color type
+
+ 00034 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0003b e8 00 00 00 00 call stbi__get8
+ 00040 0f b6 c0 movzx eax, al
+ 00043 89 45 44 mov DWORD PTR tga_color_type$[rbp], eax
+
+; 6615 : if (tga_color_type > 1)
+
+ 00046 83 7d 44 01 cmp DWORD PTR tga_color_type$[rbp], 1
+ 0004a 7e 05 jle SHORT $LN2@stbi__tga_
+
+; 6616 : goto errorEnd; // only RGB or indexed allowed
+
+ 0004c e9 26 01 00 00 jmp $errorEnd$13
+$LN2@stbi__tga_:
+
+; 6617 : sz = stbi__get8(s); // image type
+
+ 00051 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00058 e8 00 00 00 00 call stbi__get8
+ 0005d 0f b6 c0 movzx eax, al
+ 00060 89 45 24 mov DWORD PTR sz$[rbp], eax
+
+; 6618 : if (tga_color_type == 1) { // colormapped (paletted) image
+
+ 00063 83 7d 44 01 cmp DWORD PTR tga_color_type$[rbp], 1
+ 00067 75 6c jne SHORT $LN3@stbi__tga_
+
+; 6619 : if (sz != 1 && sz != 9)
+
+ 00069 83 7d 24 01 cmp DWORD PTR sz$[rbp], 1
+ 0006d 74 0b je SHORT $LN5@stbi__tga_
+ 0006f 83 7d 24 09 cmp DWORD PTR sz$[rbp], 9
+ 00073 74 05 je SHORT $LN5@stbi__tga_
+
+; 6620 : goto errorEnd; // colortype 1 demands image type 1 or 9
+
+ 00075 e9 fd 00 00 00 jmp $errorEnd$13
+$LN5@stbi__tga_:
+
+; 6621 : stbi__skip(s, 4); // skip index of first colormap entry and number of entries
+
+ 0007a ba 04 00 00 00 mov edx, 4
+ 0007f 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00086 e8 00 00 00 00 call stbi__skip
+ 0008b 90 npad 1
+
+; 6622 : sz = stbi__get8(s); // check bits per palette color entry
+
+ 0008c 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00093 e8 00 00 00 00 call stbi__get8
+ 00098 0f b6 c0 movzx eax, al
+ 0009b 89 45 24 mov DWORD PTR sz$[rbp], eax
+
+; 6623 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32))
+
+ 0009e 83 7d 24 08 cmp DWORD PTR sz$[rbp], 8
+ 000a2 74 1d je SHORT $LN6@stbi__tga_
+ 000a4 83 7d 24 0f cmp DWORD PTR sz$[rbp], 15
+ 000a8 74 17 je SHORT $LN6@stbi__tga_
+ 000aa 83 7d 24 10 cmp DWORD PTR sz$[rbp], 16
+ 000ae 74 11 je SHORT $LN6@stbi__tga_
+ 000b0 83 7d 24 18 cmp DWORD PTR sz$[rbp], 24
+ 000b4 74 0b je SHORT $LN6@stbi__tga_
+ 000b6 83 7d 24 20 cmp DWORD PTR sz$[rbp], 32 ; 00000020H
+ 000ba 74 05 je SHORT $LN6@stbi__tga_
+
+; 6624 : goto errorEnd;
+
+ 000bc e9 b6 00 00 00 jmp $errorEnd$13
+$LN6@stbi__tga_:
+
+; 6625 : stbi__skip(s, 4); // skip image x and y origin
+
+ 000c1 ba 04 00 00 00 mov edx, 4
+ 000c6 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000cd e8 00 00 00 00 call stbi__skip
+ 000d2 90 npad 1
+
+; 6626 : } else { // "normal" image w/o colormap
+
+ 000d3 eb 2f jmp SHORT $LN4@stbi__tga_
+$LN3@stbi__tga_:
+
+; 6627 : if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11))
+
+ 000d5 83 7d 24 02 cmp DWORD PTR sz$[rbp], 2
+ 000d9 74 17 je SHORT $LN7@stbi__tga_
+ 000db 83 7d 24 03 cmp DWORD PTR sz$[rbp], 3
+ 000df 74 11 je SHORT $LN7@stbi__tga_
+ 000e1 83 7d 24 0a cmp DWORD PTR sz$[rbp], 10
+ 000e5 74 0b je SHORT $LN7@stbi__tga_
+ 000e7 83 7d 24 0b cmp DWORD PTR sz$[rbp], 11
+ 000eb 74 05 je SHORT $LN7@stbi__tga_
+
+; 6628 : goto errorEnd; // only RGB or grey allowed, +/- RLE
+
+ 000ed e9 85 00 00 00 jmp $errorEnd$13
+$LN7@stbi__tga_:
+
+; 6629 : stbi__skip(s, 9); // skip colormap specification and image x/y origin
+
+ 000f2 ba 09 00 00 00 mov edx, 9
+ 000f7 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000fe e8 00 00 00 00 call stbi__skip
+ 00103 90 npad 1
+$LN4@stbi__tga_:
+
+; 6630 : }
+; 6631 : if (stbi__get16le(s) < 1)
+
+ 00104 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0010b e8 00 00 00 00 call stbi__get16le
+ 00110 83 f8 01 cmp eax, 1
+ 00113 7d 02 jge SHORT $LN8@stbi__tga_
+
+; 6632 : goto errorEnd; // test width
+
+ 00115 eb 60 jmp SHORT $errorEnd$13
+$LN8@stbi__tga_:
+
+; 6633 : if (stbi__get16le(s) < 1)
+
+ 00117 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0011e e8 00 00 00 00 call stbi__get16le
+ 00123 83 f8 01 cmp eax, 1
+ 00126 7d 02 jge SHORT $LN9@stbi__tga_
+
+; 6634 : goto errorEnd; // test height
+
+ 00128 eb 4d jmp SHORT $errorEnd$13
+$LN9@stbi__tga_:
+
+; 6635 : sz = stbi__get8(s); // bits per pixel
+
+ 0012a 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00131 e8 00 00 00 00 call stbi__get8
+ 00136 0f b6 c0 movzx eax, al
+ 00139 89 45 24 mov DWORD PTR sz$[rbp], eax
+
+; 6636 : if ((tga_color_type == 1) && (sz != 8) && (sz != 16))
+
+ 0013c 83 7d 44 01 cmp DWORD PTR tga_color_type$[rbp], 1
+ 00140 75 0e jne SHORT $LN10@stbi__tga_
+ 00142 83 7d 24 08 cmp DWORD PTR sz$[rbp], 8
+ 00146 74 08 je SHORT $LN10@stbi__tga_
+ 00148 83 7d 24 10 cmp DWORD PTR sz$[rbp], 16
+ 0014c 74 02 je SHORT $LN10@stbi__tga_
+
+; 6637 : goto errorEnd; // for colormapped images, bpp is size of an index
+
+ 0014e eb 27 jmp SHORT $errorEnd$13
+$LN10@stbi__tga_:
+
+; 6638 : if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32))
+
+ 00150 83 7d 24 08 cmp DWORD PTR sz$[rbp], 8
+ 00154 74 1a je SHORT $LN11@stbi__tga_
+ 00156 83 7d 24 0f cmp DWORD PTR sz$[rbp], 15
+ 0015a 74 14 je SHORT $LN11@stbi__tga_
+ 0015c 83 7d 24 10 cmp DWORD PTR sz$[rbp], 16
+ 00160 74 0e je SHORT $LN11@stbi__tga_
+ 00162 83 7d 24 18 cmp DWORD PTR sz$[rbp], 24
+ 00166 74 08 je SHORT $LN11@stbi__tga_
+ 00168 83 7d 24 20 cmp DWORD PTR sz$[rbp], 32 ; 00000020H
+ 0016c 74 02 je SHORT $LN11@stbi__tga_
+
+; 6639 : goto errorEnd;
+
+ 0016e eb 07 jmp SHORT $errorEnd$13
+$LN11@stbi__tga_:
+
+; 6640 :
+; 6641 : res = 1; // if we got this far, everything's good and we can return 1 instead of 0
+
+ 00170 c7 45 04 01 00
+ 00 00 mov DWORD PTR res$[rbp], 1
+$errorEnd$13:
+
+; 6642 :
+; 6643 : errorEnd:
+; 6644 : stbi__rewind(s);
+
+ 00177 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0017e e8 00 00 00 00 call stbi__rewind
+ 00183 90 npad 1
+
+; 6645 : return res;
+
+ 00184 8b 45 04 mov eax, DWORD PTR res$[rbp]
+
+; 6646 : }
+
+ 00187 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 0018e 5f pop rdi
+ 0018f 5d pop rbp
+ 00190 c3 ret 0
+stbi__tga_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bmp_info
+_TEXT SEGMENT
+p$ = 8
+info$ = 40
+tv77 = 276
+__$ArrayPad$ = 280
+s$ = 320
+x$ = 328
+y$ = 336
+comp$ = 344
+stbi__bmp_info PROC ; COMDAT
+
+; 8240 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 01
+ 00 00 sub rsp, 328 ; 00000148H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 1a 00 00 00 mov ecx, 26
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 68
+ 01 00 00 mov rcx, QWORD PTR [rsp+360]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 18 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8241 : void *p;
+; 8242 : stbi__bmp_data info;
+; 8243 :
+; 8244 : info.all_a = 255;
+
+ 00059 c7 45 44 ff 00
+ 00 00 mov DWORD PTR info$[rbp+28], 255 ; 000000ffH
+
+; 8245 : p = stbi__bmp_parse_header(s, &info);
+
+ 00060 48 8d 55 28 lea rdx, QWORD PTR info$[rbp]
+ 00064 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__bmp_parse_header
+ 00070 48 89 45 08 mov QWORD PTR p$[rbp], rax
+
+; 8246 : if (p == NULL) {
+
+ 00074 48 83 7d 08 00 cmp QWORD PTR p$[rbp], 0
+ 00079 75 14 jne SHORT $LN2@stbi__bmp_
+
+; 8247 : stbi__rewind(s);
+
+ 0007b 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00082 e8 00 00 00 00 call stbi__rewind
+ 00087 90 npad 1
+
+; 8248 : return 0;
+
+ 00088 33 c0 xor eax, eax
+ 0008a e9 91 00 00 00 jmp $LN1@stbi__bmp_
+$LN2@stbi__bmp_:
+
+; 8249 : }
+; 8250 : if (x)
+
+ 0008f 48 83 bd 48 01
+ 00 00 00 cmp QWORD PTR x$[rbp], 0
+ 00097 74 12 je SHORT $LN3@stbi__bmp_
+
+; 8251 : *x = s->img_x;
+
+ 00099 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 000a0 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000a7 8b 09 mov ecx, DWORD PTR [rcx]
+ 000a9 89 08 mov DWORD PTR [rax], ecx
+$LN3@stbi__bmp_:
+
+; 8252 : if (y)
+
+ 000ab 48 83 bd 50 01
+ 00 00 00 cmp QWORD PTR y$[rbp], 0
+ 000b3 74 13 je SHORT $LN4@stbi__bmp_
+
+; 8253 : *y = s->img_y;
+
+ 000b5 48 8b 85 50 01
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 000bc 48 8b 8d 40 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c3 8b 49 04 mov ecx, DWORD PTR [rcx+4]
+ 000c6 89 08 mov DWORD PTR [rax], ecx
+$LN4@stbi__bmp_:
+
+; 8254 : if (comp) {
+
+ 000c8 48 83 bd 58 01
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 000d0 74 49 je SHORT $LN5@stbi__bmp_
+
+; 8255 : if (info.bpp == 24 && info.ma == 0xff000000)
+
+ 000d2 83 7d 28 18 cmp DWORD PTR info$[rbp], 24
+ 000d6 75 18 jne SHORT $LN6@stbi__bmp_
+ 000d8 81 7d 40 00 00
+ 00 ff cmp DWORD PTR info$[rbp+24], -16777216 ; ff000000H
+ 000df 75 0f jne SHORT $LN6@stbi__bmp_
+
+; 8256 : *comp = 3;
+
+ 000e1 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 000e8 c7 00 03 00 00
+ 00 mov DWORD PTR [rax], 3
+ 000ee eb 2b jmp SHORT $LN7@stbi__bmp_
+$LN6@stbi__bmp_:
+
+; 8257 : else
+; 8258 : *comp = info.ma ? 4 : 3;
+
+ 000f0 83 7d 40 00 cmp DWORD PTR info$[rbp+24], 0
+ 000f4 74 0c je SHORT $LN9@stbi__bmp_
+ 000f6 c7 85 14 01 00
+ 00 04 00 00 00 mov DWORD PTR tv77[rbp], 4
+ 00100 eb 0a jmp SHORT $LN10@stbi__bmp_
+$LN9@stbi__bmp_:
+ 00102 c7 85 14 01 00
+ 00 03 00 00 00 mov DWORD PTR tv77[rbp], 3
+$LN10@stbi__bmp_:
+ 0010c 48 8b 85 58 01
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00113 8b 8d 14 01 00
+ 00 mov ecx, DWORD PTR tv77[rbp]
+ 00119 89 08 mov DWORD PTR [rax], ecx
+$LN7@stbi__bmp_:
+$LN5@stbi__bmp_:
+
+; 8259 : }
+; 8260 : return 1;
+
+ 0011b b8 01 00 00 00 mov eax, 1
+$LN1@stbi__bmp_:
+
+; 8261 : }
+
+ 00120 48 8b f8 mov rdi, rax
+ 00123 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00127 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__bmp_info$rtcFrameData
+ 0012e e8 00 00 00 00 call _RTC_CheckStackVars
+ 00133 48 8b c7 mov rax, rdi
+ 00136 48 8b 8d 18 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0013d 48 33 cd xor rcx, rbp
+ 00140 e8 00 00 00 00 call __security_check_cookie
+ 00145 48 8d a5 28 01
+ 00 00 lea rsp, QWORD PTR [rbp+296]
+ 0014c 5f pop rdi
+ 0014d 5d pop rbp
+ 0014e c3 ret 0
+stbi__bmp_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bmp_load
+_TEXT SEGMENT
+out$ = 8
+mr$ = 36
+mg$ = 68
+mb$ = 100
+ma$ = 132
+all_a$ = 164
+pal$ = 208
+psize$ = 1252
+i$ = 1284
+j$ = 1316
+width$ = 1348
+flip_vertically$ = 1380
+pad$ = 1412
+target$ = 1444
+info$ = 1480
+bytes_read_so_far$5 = 1540
+header_limit$6 = 1572
+extra_data_limit$7 = 1604
+z$8 = 1636
+bit_offset$9 = 1668
+v$10 = 1700
+color$11 = 1732
+v$12 = 1764
+v2$13 = 1796
+rshift$14 = 1828
+gshift$15 = 1860
+bshift$16 = 1892
+ashift$17 = 1924
+rcount$18 = 1956
+gcount$19 = 1988
+bcount$20 = 2020
+acount$21 = 2052
+z$22 = 2084
+easy$23 = 2116
+a$24 = 2148
+bpp$25 = 2180
+v$26 = 2212
+a$27 = 2244
+t$28 = 2276
+p1$29 = 2312
+p2$30 = 2344
+tv70 = 3316
+tv188 = 3316
+tv257 = 3316
+tv384 = 3316
+tv505 = 3316
+tv522 = 3316
+tv562 = 3316
+tv86 = 3320
+tv172 = 3320
+tv179 = 3320
+tv203 = 3320
+tv215 = 3320
+tv223 = 3320
+tv80 = 3320
+tv445 = 3320
+tv474 = 3320
+tv276 = 3320
+__$ArrayPad$ = 3328
+s$ = 3376
+x$ = 3384
+y$ = 3392
+comp$ = 3400
+req_comp$ = 3408
+ri$ = 3416
+stbi__bmp_load PROC ; COMDAT
+
+; 6260 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 48 0d
+ 00 00 sub rsp, 3400 ; 00000d48H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 56 02 00 00 mov ecx, 598 ; 00000256H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 68
+ 0d 00 00 mov rcx, QWORD PTR [rsp+3432]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 00 0d
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 6261 : stbi_uc *out;
+; 6262 : unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a;
+
+ 00059 c7 45 24 00 00
+ 00 00 mov DWORD PTR mr$[rbp], 0
+ 00060 c7 45 44 00 00
+ 00 00 mov DWORD PTR mg$[rbp], 0
+ 00067 c7 45 64 00 00
+ 00 00 mov DWORD PTR mb$[rbp], 0
+ 0006e c7 85 84 00 00
+ 00 00 00 00 00 mov DWORD PTR ma$[rbp], 0
+
+; 6263 : stbi_uc pal[256][4];
+; 6264 : int psize = 0, i, j, width;
+
+ 00078 c7 85 e4 04 00
+ 00 00 00 00 00 mov DWORD PTR psize$[rbp], 0
+
+; 6265 : int flip_vertically, pad, target;
+; 6266 : stbi__bmp_data info;
+; 6267 : STBI_NOTUSED(ri);
+; 6268 :
+; 6269 : info.all_a = 255;
+
+ 00082 c7 85 e4 05 00
+ 00 ff 00 00 00 mov DWORD PTR info$[rbp+28], 255 ; 000000ffH
+
+; 6270 : if (stbi__bmp_parse_header(s, &info) == NULL)
+
+ 0008c 48 8d 95 c8 05
+ 00 00 lea rdx, QWORD PTR info$[rbp]
+ 00093 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0009a e8 00 00 00 00 call stbi__bmp_parse_header
+ 0009f 48 85 c0 test rax, rax
+ 000a2 75 07 jne SHORT $LN35@stbi__bmp_
+
+; 6271 : return NULL; // error code already set
+
+ 000a4 33 c0 xor eax, eax
+ 000a6 e9 67 12 00 00 jmp $LN1@stbi__bmp_
+$LN35@stbi__bmp_:
+
+; 6272 :
+; 6273 : flip_vertically = ((int)s->img_y) > 0;
+
+ 000ab 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000b2 83 78 04 00 cmp DWORD PTR [rax+4], 0
+ 000b6 7e 0c jle SHORT $LN97@stbi__bmp_
+ 000b8 c7 85 f4 0c 00
+ 00 01 00 00 00 mov DWORD PTR tv70[rbp], 1
+ 000c2 eb 0a jmp SHORT $LN98@stbi__bmp_
+$LN97@stbi__bmp_:
+ 000c4 c7 85 f4 0c 00
+ 00 00 00 00 00 mov DWORD PTR tv70[rbp], 0
+$LN98@stbi__bmp_:
+ 000ce 8b 85 f4 0c 00
+ 00 mov eax, DWORD PTR tv70[rbp]
+ 000d4 89 85 64 05 00
+ 00 mov DWORD PTR flip_vertically$[rbp], eax
+
+; 6274 : s->img_y = abs((int)s->img_y);
+
+ 000da 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000e1 8b 48 04 mov ecx, DWORD PTR [rax+4]
+ 000e4 e8 00 00 00 00 call abs
+ 000e9 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000f0 89 41 04 mov DWORD PTR [rcx+4], eax
+
+; 6275 :
+; 6276 : if (s->img_y > STBI_MAX_DIMENSIONS)
+
+ 000f3 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000fa 81 78 04 00 00
+ 00 01 cmp DWORD PTR [rax+4], 16777216 ; 01000000H
+ 00101 76 34 jbe SHORT $LN36@stbi__bmp_
+
+; 6277 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 00103 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 0010a e8 00 00 00 00 call stbi__err
+ 0010f 85 c0 test eax, eax
+ 00111 74 0d je SHORT $LN99@stbi__bmp_
+ 00113 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv80[rbp], 0
+ 0011e eb 0b jmp SHORT $LN100@stbi__bmp_
+$LN99@stbi__bmp_:
+ 00120 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv80[rbp], 0
+$LN100@stbi__bmp_:
+ 0012b 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv80[rbp]
+ 00132 e9 db 11 00 00 jmp $LN1@stbi__bmp_
+$LN36@stbi__bmp_:
+
+; 6278 : if (s->img_x > STBI_MAX_DIMENSIONS)
+
+ 00137 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0013e 81 38 00 00 00
+ 01 cmp DWORD PTR [rax], 16777216 ; 01000000H
+ 00144 76 34 jbe SHORT $LN37@stbi__bmp_
+
+; 6279 : return stbi__errpuc("too large", "Very large image (corrupt?)");
+
+ 00146 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 0014d e8 00 00 00 00 call stbi__err
+ 00152 85 c0 test eax, eax
+ 00154 74 0d je SHORT $LN101@stbi__bmp_
+ 00156 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv86[rbp], 0
+ 00161 eb 0b jmp SHORT $LN102@stbi__bmp_
+$LN101@stbi__bmp_:
+ 00163 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv86[rbp], 0
+$LN102@stbi__bmp_:
+ 0016e 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv86[rbp]
+ 00175 e9 98 11 00 00 jmp $LN1@stbi__bmp_
+$LN37@stbi__bmp_:
+
+; 6280 :
+; 6281 : mr = info.mr;
+
+ 0017a 8b 85 d4 05 00
+ 00 mov eax, DWORD PTR info$[rbp+12]
+ 00180 89 45 24 mov DWORD PTR mr$[rbp], eax
+
+; 6282 : mg = info.mg;
+
+ 00183 8b 85 d8 05 00
+ 00 mov eax, DWORD PTR info$[rbp+16]
+ 00189 89 45 44 mov DWORD PTR mg$[rbp], eax
+
+; 6283 : mb = info.mb;
+
+ 0018c 8b 85 dc 05 00
+ 00 mov eax, DWORD PTR info$[rbp+20]
+ 00192 89 45 64 mov DWORD PTR mb$[rbp], eax
+
+; 6284 : ma = info.ma;
+
+ 00195 8b 85 e0 05 00
+ 00 mov eax, DWORD PTR info$[rbp+24]
+ 0019b 89 85 84 00 00
+ 00 mov DWORD PTR ma$[rbp], eax
+
+; 6285 : all_a = info.all_a;
+
+ 001a1 8b 85 e4 05 00
+ 00 mov eax, DWORD PTR info$[rbp+28]
+ 001a7 89 85 a4 00 00
+ 00 mov DWORD PTR all_a$[rbp], eax
+
+; 6286 :
+; 6287 : if (info.hsz == 12) {
+
+ 001ad 83 bd d0 05 00
+ 00 0c cmp DWORD PTR info$[rbp+8], 12
+ 001b4 75 2c jne SHORT $LN38@stbi__bmp_
+
+; 6288 : if (info.bpp < 24)
+
+ 001b6 83 bd c8 05 00
+ 00 18 cmp DWORD PTR info$[rbp], 24
+ 001bd 7d 21 jge SHORT $LN40@stbi__bmp_
+
+; 6289 : psize = (info.offset - info.extra_read - 24) / 3;
+
+ 001bf 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR info$[rbp+32]
+ 001c5 8b 8d cc 05 00
+ 00 mov ecx, DWORD PTR info$[rbp+4]
+ 001cb 2b c8 sub ecx, eax
+ 001cd 8b c1 mov eax, ecx
+ 001cf 83 e8 18 sub eax, 24
+ 001d2 99 cdq
+ 001d3 b9 03 00 00 00 mov ecx, 3
+ 001d8 f7 f9 idiv ecx
+ 001da 89 85 e4 04 00
+ 00 mov DWORD PTR psize$[rbp], eax
+$LN40@stbi__bmp_:
+
+; 6290 : } else {
+
+ 001e0 eb 28 jmp SHORT $LN39@stbi__bmp_
+$LN38@stbi__bmp_:
+
+; 6291 : if (info.bpp < 16)
+
+ 001e2 83 bd c8 05 00
+ 00 10 cmp DWORD PTR info$[rbp], 16
+ 001e9 7d 1f jge SHORT $LN41@stbi__bmp_
+
+; 6292 : psize = (info.offset - info.extra_read - info.hsz) >> 2;
+
+ 001eb 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR info$[rbp+32]
+ 001f1 8b 8d cc 05 00
+ 00 mov ecx, DWORD PTR info$[rbp+4]
+ 001f7 2b c8 sub ecx, eax
+ 001f9 8b c1 mov eax, ecx
+ 001fb 2b 85 d0 05 00
+ 00 sub eax, DWORD PTR info$[rbp+8]
+ 00201 c1 f8 02 sar eax, 2
+ 00204 89 85 e4 04 00
+ 00 mov DWORD PTR psize$[rbp], eax
+$LN41@stbi__bmp_:
+$LN39@stbi__bmp_:
+
+; 6293 : }
+; 6294 : if (psize == 0) {
+
+ 0020a 83 bd e4 04 00
+ 00 00 cmp DWORD PTR psize$[rbp], 0
+ 00211 0f 85 0c 01 00
+ 00 jne $LN42@stbi__bmp_
+
+; 6295 : // accept some number of extra bytes after the header, but if the offset points either to before
+; 6296 : // the header ends or implies a large amount of extra data, reject the file as malformed
+; 6297 : int bytes_read_so_far =
+
+ 00217 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0021e 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00225 48 8b 89 d0 00
+ 00 00 mov rcx, QWORD PTR [rcx+208]
+ 0022c 48 8b 80 c0 00
+ 00 00 mov rax, QWORD PTR [rax+192]
+ 00233 48 2b c1 sub rax, rcx
+ 00236 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0023d 03 81 b8 00 00
+ 00 add eax, DWORD PTR [rcx+184]
+ 00243 89 85 04 06 00
+ 00 mov DWORD PTR bytes_read_so_far$5[rbp], eax
+
+; 6298 : s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original);
+; 6299 : int header_limit = 1024; // max we actually read is below 256 bytes currently.
+
+ 00249 c7 85 24 06 00
+ 00 00 04 00 00 mov DWORD PTR header_limit$6[rbp], 1024 ; 00000400H
+
+; 6300 : int extra_data_limit =
+
+ 00253 c7 85 44 06 00
+ 00 00 04 00 00 mov DWORD PTR extra_data_limit$7[rbp], 1024 ; 00000400H
+
+; 6301 : 256 *
+; 6302 : 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size.
+; 6303 : if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) {
+
+ 0025d 83 bd 04 06 00
+ 00 00 cmp DWORD PTR bytes_read_so_far$5[rbp], 0
+ 00264 7e 0e jle SHORT $LN44@stbi__bmp_
+ 00266 8b 85 24 06 00
+ 00 mov eax, DWORD PTR header_limit$6[rbp]
+ 0026c 39 85 04 06 00
+ 00 cmp DWORD PTR bytes_read_so_far$5[rbp], eax
+ 00272 7e 34 jle SHORT $LN43@stbi__bmp_
+$LN44@stbi__bmp_:
+
+; 6304 : return stbi__errpuc("bad header", "Corrupt BMP");
+
+ 00274 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0L@PJHPAMCH@bad?5header@
+ 0027b e8 00 00 00 00 call stbi__err
+ 00280 85 c0 test eax, eax
+ 00282 74 0d je SHORT $LN103@stbi__bmp_
+ 00284 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv172[rbp], 0
+ 0028f eb 0b jmp SHORT $LN104@stbi__bmp_
+$LN103@stbi__bmp_:
+ 00291 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv172[rbp], 0
+$LN104@stbi__bmp_:
+ 0029c 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv172[rbp]
+ 002a3 e9 6a 10 00 00 jmp $LN1@stbi__bmp_
+$LN43@stbi__bmp_:
+
+; 6305 : }
+; 6306 : // we established that bytes_read_so_far is positive and sensible.
+; 6307 : // the first half of this test rejects offsets that are either too small positives, or
+; 6308 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn
+; 6309 : // ensures the number computed in the second half of the test can't overflow.
+; 6310 : if (info.offset < bytes_read_so_far ||
+
+ 002a8 8b 85 04 06 00
+ 00 mov eax, DWORD PTR bytes_read_so_far$5[rbp]
+ 002ae 39 85 cc 05 00
+ 00 cmp DWORD PTR info$[rbp+4], eax
+ 002b4 7c 18 jl SHORT $LN47@stbi__bmp_
+ 002b6 8b 85 04 06 00
+ 00 mov eax, DWORD PTR bytes_read_so_far$5[rbp]
+ 002bc 8b 8d cc 05 00
+ 00 mov ecx, DWORD PTR info$[rbp+4]
+ 002c2 2b c8 sub ecx, eax
+ 002c4 8b c1 mov eax, ecx
+ 002c6 3b 85 44 06 00
+ 00 cmp eax, DWORD PTR extra_data_limit$7[rbp]
+ 002cc 7e 36 jle SHORT $LN45@stbi__bmp_
+$LN47@stbi__bmp_:
+
+; 6311 : info.offset - bytes_read_so_far > extra_data_limit) {
+; 6312 : return stbi__errpuc("bad offset", "Corrupt BMP");
+
+ 002ce 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0L@JDPIFELH@bad?5offset@
+ 002d5 e8 00 00 00 00 call stbi__err
+ 002da 85 c0 test eax, eax
+ 002dc 74 0d je SHORT $LN105@stbi__bmp_
+ 002de 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv179[rbp], 0
+ 002e9 eb 0b jmp SHORT $LN106@stbi__bmp_
+$LN105@stbi__bmp_:
+ 002eb 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv179[rbp], 0
+$LN106@stbi__bmp_:
+ 002f6 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv179[rbp]
+ 002fd e9 10 10 00 00 jmp $LN1@stbi__bmp_
+
+; 6313 : } else {
+
+ 00302 eb 1f jmp SHORT $LN46@stbi__bmp_
+$LN45@stbi__bmp_:
+
+; 6314 : stbi__skip(s, info.offset - bytes_read_so_far);
+
+ 00304 8b 85 04 06 00
+ 00 mov eax, DWORD PTR bytes_read_so_far$5[rbp]
+ 0030a 8b 8d cc 05 00
+ 00 mov ecx, DWORD PTR info$[rbp+4]
+ 00310 2b c8 sub ecx, eax
+ 00312 8b c1 mov eax, ecx
+ 00314 8b d0 mov edx, eax
+ 00316 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0031d e8 00 00 00 00 call stbi__skip
+ 00322 90 npad 1
+$LN46@stbi__bmp_:
+$LN42@stbi__bmp_:
+
+; 6315 : }
+; 6316 : }
+; 6317 :
+; 6318 : if (info.bpp == 24 && ma == 0xff000000)
+
+ 00323 83 bd c8 05 00
+ 00 18 cmp DWORD PTR info$[rbp], 24
+ 0032a 75 1c jne SHORT $LN48@stbi__bmp_
+ 0032c 81 bd 84 00 00
+ 00 00 00 00 ff cmp DWORD PTR ma$[rbp], -16777216 ; ff000000H
+ 00336 75 10 jne SHORT $LN48@stbi__bmp_
+
+; 6319 : s->img_n = 3;
+
+ 00338 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0033f c7 40 08 03 00
+ 00 00 mov DWORD PTR [rax+8], 3
+ 00346 eb 2f jmp SHORT $LN49@stbi__bmp_
+$LN48@stbi__bmp_:
+
+; 6320 : else
+; 6321 : s->img_n = ma ? 4 : 3;
+
+ 00348 83 bd 84 00 00
+ 00 00 cmp DWORD PTR ma$[rbp], 0
+ 0034f 74 0c je SHORT $LN107@stbi__bmp_
+ 00351 c7 85 f4 0c 00
+ 00 04 00 00 00 mov DWORD PTR tv188[rbp], 4
+ 0035b eb 0a jmp SHORT $LN108@stbi__bmp_
+$LN107@stbi__bmp_:
+ 0035d c7 85 f4 0c 00
+ 00 03 00 00 00 mov DWORD PTR tv188[rbp], 3
+$LN108@stbi__bmp_:
+ 00367 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0036e 8b 8d f4 0c 00
+ 00 mov ecx, DWORD PTR tv188[rbp]
+ 00374 89 48 08 mov DWORD PTR [rax+8], ecx
+$LN49@stbi__bmp_:
+
+; 6322 : if (req_comp && req_comp >= 3) // we can directly decode 3 or 4
+
+ 00377 83 bd 50 0d 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 0037e 74 17 je SHORT $LN50@stbi__bmp_
+ 00380 83 bd 50 0d 00
+ 00 03 cmp DWORD PTR req_comp$[rbp], 3
+ 00387 7c 0e jl SHORT $LN50@stbi__bmp_
+
+; 6323 : target = req_comp;
+
+ 00389 8b 85 50 0d 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 0038f 89 85 a4 05 00
+ 00 mov DWORD PTR target$[rbp], eax
+ 00395 eb 10 jmp SHORT $LN51@stbi__bmp_
+$LN50@stbi__bmp_:
+
+; 6324 : else
+; 6325 : target = s->img_n; // if they want monochrome, we'll post-convert
+
+ 00397 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0039e 8b 40 08 mov eax, DWORD PTR [rax+8]
+ 003a1 89 85 a4 05 00
+ 00 mov DWORD PTR target$[rbp], eax
+$LN51@stbi__bmp_:
+
+; 6326 :
+; 6327 : // sanity-check size
+; 6328 : if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0))
+
+ 003a7 45 33 c9 xor r9d, r9d
+ 003aa 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 003b1 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
+ 003b5 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 003bc 8b 10 mov edx, DWORD PTR [rax]
+ 003be 8b 8d a4 05 00
+ 00 mov ecx, DWORD PTR target$[rbp]
+ 003c4 e8 00 00 00 00 call stbi__mad3sizes_valid
+ 003c9 85 c0 test eax, eax
+ 003cb 75 34 jne SHORT $LN52@stbi__bmp_
+
+; 6329 : return stbi__errpuc("too large", "Corrupt BMP");
+
+ 003cd 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@
+ 003d4 e8 00 00 00 00 call stbi__err
+ 003d9 85 c0 test eax, eax
+ 003db 74 0d je SHORT $LN109@stbi__bmp_
+ 003dd 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv203[rbp], 0
+ 003e8 eb 0b jmp SHORT $LN110@stbi__bmp_
+$LN109@stbi__bmp_:
+ 003ea 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv203[rbp], 0
+$LN110@stbi__bmp_:
+ 003f5 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv203[rbp]
+ 003fc e9 11 0f 00 00 jmp $LN1@stbi__bmp_
+$LN52@stbi__bmp_:
+
+; 6330 :
+; 6331 : out = (stbi_uc *)stbi__malloc_mad3(target, s->img_x, s->img_y, 0);
+
+ 00401 45 33 c9 xor r9d, r9d
+ 00404 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0040b 44 8b 40 04 mov r8d, DWORD PTR [rax+4]
+ 0040f 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00416 8b 10 mov edx, DWORD PTR [rax]
+ 00418 8b 8d a4 05 00
+ 00 mov ecx, DWORD PTR target$[rbp]
+ 0041e e8 00 00 00 00 call stbi__malloc_mad3
+ 00423 48 89 45 08 mov QWORD PTR out$[rbp], rax
+
+; 6332 : if (!out)
+
+ 00427 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
+ 0042c 75 34 jne SHORT $LN53@stbi__bmp_
+
+; 6333 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 0042e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 00435 e8 00 00 00 00 call stbi__err
+ 0043a 85 c0 test eax, eax
+ 0043c 74 0d je SHORT $LN111@stbi__bmp_
+ 0043e 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv215[rbp], 0
+ 00449 eb 0b jmp SHORT $LN112@stbi__bmp_
+$LN111@stbi__bmp_:
+ 0044b 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv215[rbp], 0
+$LN112@stbi__bmp_:
+ 00456 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv215[rbp]
+ 0045d e9 b0 0e 00 00 jmp $LN1@stbi__bmp_
+$LN53@stbi__bmp_:
+
+; 6334 : if (info.bpp < 16) {
+
+ 00462 83 bd c8 05 00
+ 00 10 cmp DWORD PTR info$[rbp], 16
+ 00469 0f 8d ce 06 00
+ 00 jge $LN54@stbi__bmp_
+
+; 6335 : int z = 0;
+
+ 0046f c7 85 64 06 00
+ 00 00 00 00 00 mov DWORD PTR z$8[rbp], 0
+
+; 6336 : if (psize == 0 || psize > 256) {
+
+ 00479 83 bd e4 04 00
+ 00 00 cmp DWORD PTR psize$[rbp], 0
+ 00480 74 0c je SHORT $LN57@stbi__bmp_
+ 00482 81 bd e4 04 00
+ 00 00 01 00 00 cmp DWORD PTR psize$[rbp], 256 ; 00000100H
+ 0048c 7e 3f jle SHORT $LN56@stbi__bmp_
+$LN57@stbi__bmp_:
+
+; 6337 : STBI_FREE(out);
+
+ 0048e 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00492 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00498 90 npad 1
+
+; 6338 : return stbi__errpuc("invalid", "Corrupt BMP");
+
+ 00499 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07MALOAKCI@invalid@
+ 004a0 e8 00 00 00 00 call stbi__err
+ 004a5 85 c0 test eax, eax
+ 004a7 74 0d je SHORT $LN113@stbi__bmp_
+ 004a9 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv223[rbp], 0
+ 004b4 eb 0b jmp SHORT $LN114@stbi__bmp_
+$LN113@stbi__bmp_:
+ 004b6 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv223[rbp], 0
+$LN114@stbi__bmp_:
+ 004c1 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv223[rbp]
+ 004c8 e9 45 0e 00 00 jmp $LN1@stbi__bmp_
+$LN56@stbi__bmp_:
+
+; 6339 : }
+; 6340 : for (i = 0; i < psize; ++i) {
+
+ 004cd c7 85 04 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 004d7 eb 0e jmp SHORT $LN4@stbi__bmp_
+$LN2@stbi__bmp_:
+ 004d9 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 004df ff c0 inc eax
+ 004e1 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN4@stbi__bmp_:
+ 004e7 8b 85 e4 04 00
+ 00 mov eax, DWORD PTR psize$[rbp]
+ 004ed 39 85 04 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 004f3 0f 8d ac 00 00
+ 00 jge $LN3@stbi__bmp_
+
+; 6341 : pal[i][2] = stbi__get8(s);
+
+ 004f9 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00500 e8 00 00 00 00 call stbi__get8
+ 00505 48 63 8d 04 05
+ 00 00 movsxd rcx, DWORD PTR i$[rbp]
+ 0050c 48 8d 8c 8d d0
+ 00 00 00 lea rcx, QWORD PTR pal$[rbp+rcx*4]
+ 00514 ba 01 00 00 00 mov edx, 1
+ 00519 48 6b d2 02 imul rdx, rdx, 2
+ 0051d 88 04 11 mov BYTE PTR [rcx+rdx], al
+
+; 6342 : pal[i][1] = stbi__get8(s);
+
+ 00520 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00527 e8 00 00 00 00 call stbi__get8
+ 0052c 48 63 8d 04 05
+ 00 00 movsxd rcx, DWORD PTR i$[rbp]
+ 00533 48 8d 8c 8d d0
+ 00 00 00 lea rcx, QWORD PTR pal$[rbp+rcx*4]
+ 0053b ba 01 00 00 00 mov edx, 1
+ 00540 48 6b d2 01 imul rdx, rdx, 1
+ 00544 88 04 11 mov BYTE PTR [rcx+rdx], al
+
+; 6343 : pal[i][0] = stbi__get8(s);
+
+ 00547 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0054e e8 00 00 00 00 call stbi__get8
+ 00553 48 63 8d 04 05
+ 00 00 movsxd rcx, DWORD PTR i$[rbp]
+ 0055a 48 8d 8c 8d d0
+ 00 00 00 lea rcx, QWORD PTR pal$[rbp+rcx*4]
+ 00562 ba 01 00 00 00 mov edx, 1
+ 00567 48 6b d2 00 imul rdx, rdx, 0
+ 0056b 88 04 11 mov BYTE PTR [rcx+rdx], al
+
+; 6344 : if (info.hsz != 12)
+
+ 0056e 83 bd d0 05 00
+ 00 0c cmp DWORD PTR info$[rbp+8], 12
+ 00575 74 0d je SHORT $LN58@stbi__bmp_
+
+; 6345 : stbi__get8(s);
+
+ 00577 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0057e e8 00 00 00 00 call stbi__get8
+ 00583 90 npad 1
+$LN58@stbi__bmp_:
+
+; 6346 : pal[i][3] = 255;
+
+ 00584 48 63 85 04 05
+ 00 00 movsxd rax, DWORD PTR i$[rbp]
+ 0058b 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 00593 b9 01 00 00 00 mov ecx, 1
+ 00598 48 6b c9 03 imul rcx, rcx, 3
+ 0059c c6 04 08 ff mov BYTE PTR [rax+rcx], 255 ; 000000ffH
+
+; 6347 : }
+
+ 005a0 e9 34 ff ff ff jmp $LN2@stbi__bmp_
+$LN3@stbi__bmp_:
+
+; 6348 : stbi__skip(s, info.offset - info.extra_read - info.hsz -
+
+ 005a5 83 bd d0 05 00
+ 00 0c cmp DWORD PTR info$[rbp+8], 12
+ 005ac 75 0c jne SHORT $LN115@stbi__bmp_
+ 005ae c7 85 f4 0c 00
+ 00 03 00 00 00 mov DWORD PTR tv257[rbp], 3
+ 005b8 eb 0a jmp SHORT $LN116@stbi__bmp_
+$LN115@stbi__bmp_:
+ 005ba c7 85 f4 0c 00
+ 00 04 00 00 00 mov DWORD PTR tv257[rbp], 4
+$LN116@stbi__bmp_:
+ 005c4 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR info$[rbp+32]
+ 005ca 8b 8d cc 05 00
+ 00 mov ecx, DWORD PTR info$[rbp+4]
+ 005d0 2b c8 sub ecx, eax
+ 005d2 8b c1 mov eax, ecx
+ 005d4 2b 85 d0 05 00
+ 00 sub eax, DWORD PTR info$[rbp+8]
+ 005da 8b 8d e4 04 00
+ 00 mov ecx, DWORD PTR psize$[rbp]
+ 005e0 0f af 8d f4 0c
+ 00 00 imul ecx, DWORD PTR tv257[rbp]
+ 005e7 2b c1 sub eax, ecx
+ 005e9 8b d0 mov edx, eax
+ 005eb 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 005f2 e8 00 00 00 00 call stbi__skip
+ 005f7 90 npad 1
+
+; 6349 : psize * (info.hsz == 12 ? 3 : 4));
+; 6350 : if (info.bpp == 1)
+
+ 005f8 83 bd c8 05 00
+ 00 01 cmp DWORD PTR info$[rbp], 1
+ 005ff 75 17 jne SHORT $LN59@stbi__bmp_
+
+; 6351 : width = (s->img_x + 7) >> 3;
+
+ 00601 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00608 8b 00 mov eax, DWORD PTR [rax]
+ 0060a 83 c0 07 add eax, 7
+ 0060d c1 e8 03 shr eax, 3
+ 00610 89 85 44 05 00
+ 00 mov DWORD PTR width$[rbp], eax
+ 00616 eb 77 jmp SHORT $LN60@stbi__bmp_
+$LN59@stbi__bmp_:
+
+; 6352 : else if (info.bpp == 4)
+
+ 00618 83 bd c8 05 00
+ 00 04 cmp DWORD PTR info$[rbp], 4
+ 0061f 75 15 jne SHORT $LN61@stbi__bmp_
+
+; 6353 : width = (s->img_x + 1) >> 1;
+
+ 00621 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00628 8b 00 mov eax, DWORD PTR [rax]
+ 0062a ff c0 inc eax
+ 0062c d1 e8 shr eax, 1
+ 0062e 89 85 44 05 00
+ 00 mov DWORD PTR width$[rbp], eax
+ 00634 eb 59 jmp SHORT $LN62@stbi__bmp_
+$LN61@stbi__bmp_:
+
+; 6354 : else if (info.bpp == 8)
+
+ 00636 83 bd c8 05 00
+ 00 08 cmp DWORD PTR info$[rbp], 8
+ 0063d 75 11 jne SHORT $LN63@stbi__bmp_
+
+; 6355 : width = s->img_x;
+
+ 0063f 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00646 8b 00 mov eax, DWORD PTR [rax]
+ 00648 89 85 44 05 00
+ 00 mov DWORD PTR width$[rbp], eax
+ 0064e eb 3f jmp SHORT $LN64@stbi__bmp_
+$LN63@stbi__bmp_:
+
+; 6356 : else {
+; 6357 : STBI_FREE(out);
+
+ 00650 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00654 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0065a 90 npad 1
+
+; 6358 : return stbi__errpuc("bad bpp", "Corrupt BMP");
+
+ 0065b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_07JNJHIMGH@bad?5bpp@
+ 00662 e8 00 00 00 00 call stbi__err
+ 00667 85 c0 test eax, eax
+ 00669 74 0d je SHORT $LN117@stbi__bmp_
+ 0066b 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv276[rbp], 0
+ 00676 eb 0b jmp SHORT $LN118@stbi__bmp_
+$LN117@stbi__bmp_:
+ 00678 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv276[rbp], 0
+$LN118@stbi__bmp_:
+ 00683 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv276[rbp]
+ 0068a e9 83 0c 00 00 jmp $LN1@stbi__bmp_
+$LN64@stbi__bmp_:
+$LN62@stbi__bmp_:
+$LN60@stbi__bmp_:
+
+; 6359 : }
+; 6360 : pad = (-width) & 3;
+
+ 0068f 8b 85 44 05 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 00695 f7 d8 neg eax
+ 00697 83 e0 03 and eax, 3
+ 0069a 89 85 84 05 00
+ 00 mov DWORD PTR pad$[rbp], eax
+
+; 6361 : if (info.bpp == 1) {
+
+ 006a0 83 bd c8 05 00
+ 00 01 cmp DWORD PTR info$[rbp], 1
+ 006a7 0f 85 d6 01 00
+ 00 jne $LN65@stbi__bmp_
+
+; 6362 : for (j = 0; j < (int)s->img_y; ++j) {
+
+ 006ad c7 85 24 05 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 006b7 eb 0e jmp SHORT $LN7@stbi__bmp_
+$LN5@stbi__bmp_:
+ 006b9 8b 85 24 05 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 006bf ff c0 inc eax
+ 006c1 89 85 24 05 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN7@stbi__bmp_:
+ 006c7 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 006ce 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 006d1 39 85 24 05 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 006d7 0f 8d a1 01 00
+ 00 jge $LN6@stbi__bmp_
+
+; 6363 : int bit_offset = 7, v = stbi__get8(s);
+
+ 006dd c7 85 84 06 00
+ 00 07 00 00 00 mov DWORD PTR bit_offset$9[rbp], 7
+ 006e7 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 006ee e8 00 00 00 00 call stbi__get8
+ 006f3 0f b6 c0 movzx eax, al
+ 006f6 89 85 a4 06 00
+ 00 mov DWORD PTR v$10[rbp], eax
+
+; 6364 : for (i = 0; i < (int)s->img_x; ++i) {
+
+ 006fc c7 85 04 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00706 eb 0e jmp SHORT $LN10@stbi__bmp_
+$LN8@stbi__bmp_:
+ 00708 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 0070e ff c0 inc eax
+ 00710 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN10@stbi__bmp_:
+ 00716 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0071d 8b 00 mov eax, DWORD PTR [rax]
+ 0071f 39 85 04 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00725 0f 8d 3b 01 00
+ 00 jge $LN9@stbi__bmp_
+
+; 6365 : int color = (v >> bit_offset) & 0x1;
+
+ 0072b 8b 85 84 06 00
+ 00 mov eax, DWORD PTR bit_offset$9[rbp]
+ 00731 0f b6 c8 movzx ecx, al
+ 00734 8b 85 a4 06 00
+ 00 mov eax, DWORD PTR v$10[rbp]
+ 0073a d3 f8 sar eax, cl
+ 0073c 83 e0 01 and eax, 1
+ 0073f 89 85 c4 06 00
+ 00 mov DWORD PTR color$11[rbp], eax
+
+; 6366 : out[z++] = pal[color][0];
+
+ 00745 48 63 85 c4 06
+ 00 00 movsxd rax, DWORD PTR color$11[rbp]
+ 0074c 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 00754 b9 01 00 00 00 mov ecx, 1
+ 00759 48 6b c9 00 imul rcx, rcx, 0
+ 0075d 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 00764 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 00768 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 0076c 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 00770 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 00776 ff c0 inc eax
+ 00778 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6367 : out[z++] = pal[color][1];
+
+ 0077e 48 63 85 c4 06
+ 00 00 movsxd rax, DWORD PTR color$11[rbp]
+ 00785 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 0078d b9 01 00 00 00 mov ecx, 1
+ 00792 48 6b c9 01 imul rcx, rcx, 1
+ 00796 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 0079d 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 007a1 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 007a5 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 007a9 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 007af ff c0 inc eax
+ 007b1 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6368 : out[z++] = pal[color][2];
+
+ 007b7 48 63 85 c4 06
+ 00 00 movsxd rax, DWORD PTR color$11[rbp]
+ 007be 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 007c6 b9 01 00 00 00 mov ecx, 1
+ 007cb 48 6b c9 02 imul rcx, rcx, 2
+ 007cf 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 007d6 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 007da 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 007de 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 007e2 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 007e8 ff c0 inc eax
+ 007ea 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6369 : if (target == 4)
+
+ 007f0 83 bd a4 05 00
+ 00 04 cmp DWORD PTR target$[rbp], 4
+ 007f7 75 1d jne SHORT $LN67@stbi__bmp_
+
+; 6370 : out[z++] = 255;
+
+ 007f9 48 63 85 64 06
+ 00 00 movsxd rax, DWORD PTR z$8[rbp]
+ 00800 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00804 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+ 00808 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 0080e ff c0 inc eax
+ 00810 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+$LN67@stbi__bmp_:
+
+; 6371 : if (i + 1 == (int)s->img_x)
+
+ 00816 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 0081c ff c0 inc eax
+ 0081e 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00825 3b 01 cmp eax, DWORD PTR [rcx]
+ 00827 75 02 jne SHORT $LN68@stbi__bmp_
+
+; 6372 : break;
+
+ 00829 eb 3b jmp SHORT $LN9@stbi__bmp_
+$LN68@stbi__bmp_:
+
+; 6373 : if ((--bit_offset) < 0) {
+
+ 0082b 8b 85 84 06 00
+ 00 mov eax, DWORD PTR bit_offset$9[rbp]
+ 00831 ff c8 dec eax
+ 00833 89 85 84 06 00
+ 00 mov DWORD PTR bit_offset$9[rbp], eax
+ 00839 83 bd 84 06 00
+ 00 00 cmp DWORD PTR bit_offset$9[rbp], 0
+ 00840 7d 1f jge SHORT $LN69@stbi__bmp_
+
+; 6374 : bit_offset = 7;
+
+ 00842 c7 85 84 06 00
+ 00 07 00 00 00 mov DWORD PTR bit_offset$9[rbp], 7
+
+; 6375 : v = stbi__get8(s);
+
+ 0084c 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00853 e8 00 00 00 00 call stbi__get8
+ 00858 0f b6 c0 movzx eax, al
+ 0085b 89 85 a4 06 00
+ 00 mov DWORD PTR v$10[rbp], eax
+$LN69@stbi__bmp_:
+
+; 6376 : }
+; 6377 : }
+
+ 00861 e9 a2 fe ff ff jmp $LN8@stbi__bmp_
+$LN9@stbi__bmp_:
+
+; 6378 : stbi__skip(s, pad);
+
+ 00866 8b 95 84 05 00
+ 00 mov edx, DWORD PTR pad$[rbp]
+ 0086c 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00873 e8 00 00 00 00 call stbi__skip
+ 00878 90 npad 1
+
+; 6379 : }
+
+ 00879 e9 3b fe ff ff jmp $LN5@stbi__bmp_
+$LN6@stbi__bmp_:
+
+; 6380 : } else {
+
+ 0087e e9 b5 02 00 00 jmp $LN66@stbi__bmp_
+$LN65@stbi__bmp_:
+
+; 6381 : for (j = 0; j < (int)s->img_y; ++j) {
+
+ 00883 c7 85 24 05 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 0088d eb 0e jmp SHORT $LN13@stbi__bmp_
+$LN11@stbi__bmp_:
+ 0088f 8b 85 24 05 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 00895 ff c0 inc eax
+ 00897 89 85 24 05 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN13@stbi__bmp_:
+ 0089d 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 008a4 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 008a7 39 85 24 05 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 008ad 0f 8d 85 02 00
+ 00 jge $LN12@stbi__bmp_
+
+; 6382 : for (i = 0; i < (int)s->img_x; i += 2) {
+
+ 008b3 c7 85 04 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 008bd eb 0f jmp SHORT $LN16@stbi__bmp_
+$LN14@stbi__bmp_:
+ 008bf 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 008c5 83 c0 02 add eax, 2
+ 008c8 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN16@stbi__bmp_:
+ 008ce 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 008d5 8b 00 mov eax, DWORD PTR [rax]
+ 008d7 39 85 04 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 008dd 0f 8d 3d 02 00
+ 00 jge $LN15@stbi__bmp_
+
+; 6383 : int v = stbi__get8(s), v2 = 0;
+
+ 008e3 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 008ea e8 00 00 00 00 call stbi__get8
+ 008ef 0f b6 c0 movzx eax, al
+ 008f2 89 85 e4 06 00
+ 00 mov DWORD PTR v$12[rbp], eax
+ 008f8 c7 85 04 07 00
+ 00 00 00 00 00 mov DWORD PTR v2$13[rbp], 0
+
+; 6384 : if (info.bpp == 4) {
+
+ 00902 83 bd c8 05 00
+ 00 04 cmp DWORD PTR info$[rbp], 4
+ 00909 75 1e jne SHORT $LN70@stbi__bmp_
+
+; 6385 : v2 = v & 15;
+
+ 0090b 8b 85 e4 06 00
+ 00 mov eax, DWORD PTR v$12[rbp]
+ 00911 83 e0 0f and eax, 15
+ 00914 89 85 04 07 00
+ 00 mov DWORD PTR v2$13[rbp], eax
+
+; 6386 : v >>= 4;
+
+ 0091a 8b 85 e4 06 00
+ 00 mov eax, DWORD PTR v$12[rbp]
+ 00920 c1 f8 04 sar eax, 4
+ 00923 89 85 e4 06 00
+ 00 mov DWORD PTR v$12[rbp], eax
+$LN70@stbi__bmp_:
+
+; 6387 : }
+; 6388 : out[z++] = pal[v][0];
+
+ 00929 48 63 85 e4 06
+ 00 00 movsxd rax, DWORD PTR v$12[rbp]
+ 00930 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 00938 b9 01 00 00 00 mov ecx, 1
+ 0093d 48 6b c9 00 imul rcx, rcx, 0
+ 00941 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 00948 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 0094c 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00950 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 00954 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 0095a ff c0 inc eax
+ 0095c 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6389 : out[z++] = pal[v][1];
+
+ 00962 48 63 85 e4 06
+ 00 00 movsxd rax, DWORD PTR v$12[rbp]
+ 00969 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 00971 b9 01 00 00 00 mov ecx, 1
+ 00976 48 6b c9 01 imul rcx, rcx, 1
+ 0097a 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 00981 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 00985 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00989 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 0098d 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 00993 ff c0 inc eax
+ 00995 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6390 : out[z++] = pal[v][2];
+
+ 0099b 48 63 85 e4 06
+ 00 00 movsxd rax, DWORD PTR v$12[rbp]
+ 009a2 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 009aa b9 01 00 00 00 mov ecx, 1
+ 009af 48 6b c9 02 imul rcx, rcx, 2
+ 009b3 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 009ba 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 009be 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 009c2 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 009c6 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 009cc ff c0 inc eax
+ 009ce 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6391 : if (target == 4)
+
+ 009d4 83 bd a4 05 00
+ 00 04 cmp DWORD PTR target$[rbp], 4
+ 009db 75 1d jne SHORT $LN71@stbi__bmp_
+
+; 6392 : out[z++] = 255;
+
+ 009dd 48 63 85 64 06
+ 00 00 movsxd rax, DWORD PTR z$8[rbp]
+ 009e4 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 009e8 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+ 009ec 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 009f2 ff c0 inc eax
+ 009f4 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+$LN71@stbi__bmp_:
+
+; 6393 : if (i + 1 == (int)s->img_x)
+
+ 009fa 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00a00 ff c0 inc eax
+ 00a02 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00a09 3b 01 cmp eax, DWORD PTR [rcx]
+ 00a0b 75 05 jne SHORT $LN72@stbi__bmp_
+
+; 6394 : break;
+
+ 00a0d e9 0e 01 00 00 jmp $LN15@stbi__bmp_
+$LN72@stbi__bmp_:
+
+; 6395 : v = (info.bpp == 8) ? stbi__get8(s) : v2;
+
+ 00a12 83 bd c8 05 00
+ 00 08 cmp DWORD PTR info$[rbp], 8
+ 00a19 75 17 jne SHORT $LN119@stbi__bmp_
+ 00a1b 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00a22 e8 00 00 00 00 call stbi__get8
+ 00a27 0f b6 c0 movzx eax, al
+ 00a2a 89 85 f4 0c 00
+ 00 mov DWORD PTR tv384[rbp], eax
+ 00a30 eb 0c jmp SHORT $LN120@stbi__bmp_
+$LN119@stbi__bmp_:
+ 00a32 8b 85 04 07 00
+ 00 mov eax, DWORD PTR v2$13[rbp]
+ 00a38 89 85 f4 0c 00
+ 00 mov DWORD PTR tv384[rbp], eax
+$LN120@stbi__bmp_:
+ 00a3e 8b 85 f4 0c 00
+ 00 mov eax, DWORD PTR tv384[rbp]
+ 00a44 89 85 e4 06 00
+ 00 mov DWORD PTR v$12[rbp], eax
+
+; 6396 : out[z++] = pal[v][0];
+
+ 00a4a 48 63 85 e4 06
+ 00 00 movsxd rax, DWORD PTR v$12[rbp]
+ 00a51 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 00a59 b9 01 00 00 00 mov ecx, 1
+ 00a5e 48 6b c9 00 imul rcx, rcx, 0
+ 00a62 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 00a69 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 00a6d 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00a71 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 00a75 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 00a7b ff c0 inc eax
+ 00a7d 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6397 : out[z++] = pal[v][1];
+
+ 00a83 48 63 85 e4 06
+ 00 00 movsxd rax, DWORD PTR v$12[rbp]
+ 00a8a 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 00a92 b9 01 00 00 00 mov ecx, 1
+ 00a97 48 6b c9 01 imul rcx, rcx, 1
+ 00a9b 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 00aa2 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 00aa6 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00aaa 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 00aae 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 00ab4 ff c0 inc eax
+ 00ab6 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6398 : out[z++] = pal[v][2];
+
+ 00abc 48 63 85 e4 06
+ 00 00 movsxd rax, DWORD PTR v$12[rbp]
+ 00ac3 48 8d 84 85 d0
+ 00 00 00 lea rax, QWORD PTR pal$[rbp+rax*4]
+ 00acb b9 01 00 00 00 mov ecx, 1
+ 00ad0 48 6b c9 02 imul rcx, rcx, 2
+ 00ad4 48 63 95 64 06
+ 00 00 movsxd rdx, DWORD PTR z$8[rbp]
+ 00adb 4c 8b 45 08 mov r8, QWORD PTR out$[rbp]
+ 00adf 0f b6 04 08 movzx eax, BYTE PTR [rax+rcx]
+ 00ae3 41 88 04 10 mov BYTE PTR [r8+rdx], al
+ 00ae7 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 00aed ff c0 inc eax
+ 00aef 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+
+; 6399 : if (target == 4)
+
+ 00af5 83 bd a4 05 00
+ 00 04 cmp DWORD PTR target$[rbp], 4
+ 00afc 75 1d jne SHORT $LN73@stbi__bmp_
+
+; 6400 : out[z++] = 255;
+
+ 00afe 48 63 85 64 06
+ 00 00 movsxd rax, DWORD PTR z$8[rbp]
+ 00b05 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00b09 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+ 00b0d 8b 85 64 06 00
+ 00 mov eax, DWORD PTR z$8[rbp]
+ 00b13 ff c0 inc eax
+ 00b15 89 85 64 06 00
+ 00 mov DWORD PTR z$8[rbp], eax
+$LN73@stbi__bmp_:
+
+; 6401 : }
+
+ 00b1b e9 9f fd ff ff jmp $LN14@stbi__bmp_
+$LN15@stbi__bmp_:
+
+; 6402 : stbi__skip(s, pad);
+
+ 00b20 8b 95 84 05 00
+ 00 mov edx, DWORD PTR pad$[rbp]
+ 00b26 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00b2d e8 00 00 00 00 call stbi__skip
+ 00b32 90 npad 1
+
+; 6403 : }
+
+ 00b33 e9 57 fd ff ff jmp $LN11@stbi__bmp_
+$LN12@stbi__bmp_:
+$LN66@stbi__bmp_:
+
+; 6404 : }
+; 6405 : } else {
+
+ 00b38 e9 af 05 00 00 jmp $LN55@stbi__bmp_
+$LN54@stbi__bmp_:
+
+; 6406 : int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0,
+
+ 00b3d c7 85 24 07 00
+ 00 00 00 00 00 mov DWORD PTR rshift$14[rbp], 0
+ 00b47 c7 85 44 07 00
+ 00 00 00 00 00 mov DWORD PTR gshift$15[rbp], 0
+ 00b51 c7 85 64 07 00
+ 00 00 00 00 00 mov DWORD PTR bshift$16[rbp], 0
+ 00b5b c7 85 84 07 00
+ 00 00 00 00 00 mov DWORD PTR ashift$17[rbp], 0
+ 00b65 c7 85 a4 07 00
+ 00 00 00 00 00 mov DWORD PTR rcount$18[rbp], 0
+ 00b6f c7 85 c4 07 00
+ 00 00 00 00 00 mov DWORD PTR gcount$19[rbp], 0
+
+; 6407 : bcount = 0, acount = 0;
+
+ 00b79 c7 85 e4 07 00
+ 00 00 00 00 00 mov DWORD PTR bcount$20[rbp], 0
+ 00b83 c7 85 04 08 00
+ 00 00 00 00 00 mov DWORD PTR acount$21[rbp], 0
+
+; 6408 : int z = 0;
+
+ 00b8d c7 85 24 08 00
+ 00 00 00 00 00 mov DWORD PTR z$22[rbp], 0
+
+; 6409 : int easy = 0;
+
+ 00b97 c7 85 44 08 00
+ 00 00 00 00 00 mov DWORD PTR easy$23[rbp], 0
+
+; 6410 : stbi__skip(s, info.offset - info.extra_read - info.hsz);
+
+ 00ba1 8b 85 e8 05 00
+ 00 mov eax, DWORD PTR info$[rbp+32]
+ 00ba7 8b 8d cc 05 00
+ 00 mov ecx, DWORD PTR info$[rbp+4]
+ 00bad 2b c8 sub ecx, eax
+ 00baf 8b c1 mov eax, ecx
+ 00bb1 2b 85 d0 05 00
+ 00 sub eax, DWORD PTR info$[rbp+8]
+ 00bb7 8b d0 mov edx, eax
+ 00bb9 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00bc0 e8 00 00 00 00 call stbi__skip
+ 00bc5 90 npad 1
+
+; 6411 : if (info.bpp == 24)
+
+ 00bc6 83 bd c8 05 00
+ 00 18 cmp DWORD PTR info$[rbp], 24
+ 00bcd 75 12 jne SHORT $LN74@stbi__bmp_
+
+; 6412 : width = 3 * s->img_x;
+
+ 00bcf 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00bd6 6b 00 03 imul eax, DWORD PTR [rax], 3
+ 00bd9 89 85 44 05 00
+ 00 mov DWORD PTR width$[rbp], eax
+ 00bdf eb 26 jmp SHORT $LN75@stbi__bmp_
+$LN74@stbi__bmp_:
+
+; 6413 : else if (info.bpp == 16)
+
+ 00be1 83 bd c8 05 00
+ 00 10 cmp DWORD PTR info$[rbp], 16
+ 00be8 75 13 jne SHORT $LN76@stbi__bmp_
+
+; 6414 : width = 2 * s->img_x;
+
+ 00bea 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00bf1 8b 00 mov eax, DWORD PTR [rax]
+ 00bf3 d1 e0 shl eax, 1
+ 00bf5 89 85 44 05 00
+ 00 mov DWORD PTR width$[rbp], eax
+ 00bfb eb 0a jmp SHORT $LN77@stbi__bmp_
+$LN76@stbi__bmp_:
+
+; 6415 : else /* bpp = 32 and pad = 0 */
+; 6416 : width = 0;
+
+ 00bfd c7 85 44 05 00
+ 00 00 00 00 00 mov DWORD PTR width$[rbp], 0
+$LN77@stbi__bmp_:
+$LN75@stbi__bmp_:
+
+; 6417 : pad = (-width) & 3;
+
+ 00c07 8b 85 44 05 00
+ 00 mov eax, DWORD PTR width$[rbp]
+ 00c0d f7 d8 neg eax
+ 00c0f 83 e0 03 and eax, 3
+ 00c12 89 85 84 05 00
+ 00 mov DWORD PTR pad$[rbp], eax
+
+; 6418 : if (info.bpp == 24) {
+
+ 00c18 83 bd c8 05 00
+ 00 18 cmp DWORD PTR info$[rbp], 24
+ 00c1f 75 0c jne SHORT $LN78@stbi__bmp_
+
+; 6419 : easy = 1;
+
+ 00c21 c7 85 44 08 00
+ 00 01 00 00 00 mov DWORD PTR easy$23[rbp], 1
+ 00c2b eb 3a jmp SHORT $LN79@stbi__bmp_
+$LN78@stbi__bmp_:
+
+; 6420 : } else if (info.bpp == 32) {
+
+ 00c2d 83 bd c8 05 00
+ 00 20 cmp DWORD PTR info$[rbp], 32 ; 00000020H
+ 00c34 75 31 jne SHORT $LN80@stbi__bmp_
+
+; 6421 : if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000)
+
+ 00c36 81 7d 64 ff 00
+ 00 00 cmp DWORD PTR mb$[rbp], 255 ; 000000ffH
+ 00c3d 75 28 jne SHORT $LN81@stbi__bmp_
+ 00c3f 81 7d 44 00 ff
+ 00 00 cmp DWORD PTR mg$[rbp], 65280 ; 0000ff00H
+ 00c46 75 1f jne SHORT $LN81@stbi__bmp_
+ 00c48 81 7d 24 00 00
+ ff 00 cmp DWORD PTR mr$[rbp], 16711680 ; 00ff0000H
+ 00c4f 75 16 jne SHORT $LN81@stbi__bmp_
+ 00c51 81 bd 84 00 00
+ 00 00 00 00 ff cmp DWORD PTR ma$[rbp], -16777216 ; ff000000H
+ 00c5b 75 0a jne SHORT $LN81@stbi__bmp_
+
+; 6422 : easy = 2;
+
+ 00c5d c7 85 44 08 00
+ 00 02 00 00 00 mov DWORD PTR easy$23[rbp], 2
+$LN81@stbi__bmp_:
+$LN80@stbi__bmp_:
+$LN79@stbi__bmp_:
+
+; 6423 : }
+; 6424 : if (!easy) {
+
+ 00c67 83 bd 44 08 00
+ 00 00 cmp DWORD PTR easy$23[rbp], 0
+ 00c6e 0f 85 36 01 00
+ 00 jne $LN82@stbi__bmp_
+
+; 6425 : if (!mr || !mg || !mb) {
+
+ 00c74 83 7d 24 00 cmp DWORD PTR mr$[rbp], 0
+ 00c78 74 0c je SHORT $LN84@stbi__bmp_
+ 00c7a 83 7d 44 00 cmp DWORD PTR mg$[rbp], 0
+ 00c7e 74 06 je SHORT $LN84@stbi__bmp_
+ 00c80 83 7d 64 00 cmp DWORD PTR mb$[rbp], 0
+ 00c84 75 3f jne SHORT $LN83@stbi__bmp_
+$LN84@stbi__bmp_:
+
+; 6426 : STBI_FREE(out);
+
+ 00c86 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00c8a ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00c90 90 npad 1
+
+; 6427 : return stbi__errpuc("bad masks", "Corrupt BMP");
+
+ 00c91 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09DAEBACAB@bad?5masks@
+ 00c98 e8 00 00 00 00 call stbi__err
+ 00c9d 85 c0 test eax, eax
+ 00c9f 74 0d je SHORT $LN121@stbi__bmp_
+ 00ca1 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv445[rbp], 0
+ 00cac eb 0b jmp SHORT $LN122@stbi__bmp_
+$LN121@stbi__bmp_:
+ 00cae 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv445[rbp], 0
+$LN122@stbi__bmp_:
+ 00cb9 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv445[rbp]
+ 00cc0 e9 4d 06 00 00 jmp $LN1@stbi__bmp_
+$LN83@stbi__bmp_:
+
+; 6428 : }
+; 6429 : // right shift amt to put high bit in position #7
+; 6430 : rshift = stbi__high_bit(mr) - 7;
+
+ 00cc5 8b 4d 24 mov ecx, DWORD PTR mr$[rbp]
+ 00cc8 e8 00 00 00 00 call stbi__high_bit
+ 00ccd 83 e8 07 sub eax, 7
+ 00cd0 89 85 24 07 00
+ 00 mov DWORD PTR rshift$14[rbp], eax
+
+; 6431 : rcount = stbi__bitcount(mr);
+
+ 00cd6 8b 4d 24 mov ecx, DWORD PTR mr$[rbp]
+ 00cd9 e8 00 00 00 00 call stbi__bitcount
+ 00cde 89 85 a4 07 00
+ 00 mov DWORD PTR rcount$18[rbp], eax
+
+; 6432 : gshift = stbi__high_bit(mg) - 7;
+
+ 00ce4 8b 4d 44 mov ecx, DWORD PTR mg$[rbp]
+ 00ce7 e8 00 00 00 00 call stbi__high_bit
+ 00cec 83 e8 07 sub eax, 7
+ 00cef 89 85 44 07 00
+ 00 mov DWORD PTR gshift$15[rbp], eax
+
+; 6433 : gcount = stbi__bitcount(mg);
+
+ 00cf5 8b 4d 44 mov ecx, DWORD PTR mg$[rbp]
+ 00cf8 e8 00 00 00 00 call stbi__bitcount
+ 00cfd 89 85 c4 07 00
+ 00 mov DWORD PTR gcount$19[rbp], eax
+
+; 6434 : bshift = stbi__high_bit(mb) - 7;
+
+ 00d03 8b 4d 64 mov ecx, DWORD PTR mb$[rbp]
+ 00d06 e8 00 00 00 00 call stbi__high_bit
+ 00d0b 83 e8 07 sub eax, 7
+ 00d0e 89 85 64 07 00
+ 00 mov DWORD PTR bshift$16[rbp], eax
+
+; 6435 : bcount = stbi__bitcount(mb);
+
+ 00d14 8b 4d 64 mov ecx, DWORD PTR mb$[rbp]
+ 00d17 e8 00 00 00 00 call stbi__bitcount
+ 00d1c 89 85 e4 07 00
+ 00 mov DWORD PTR bcount$20[rbp], eax
+
+; 6436 : ashift = stbi__high_bit(ma) - 7;
+
+ 00d22 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR ma$[rbp]
+ 00d28 e8 00 00 00 00 call stbi__high_bit
+ 00d2d 83 e8 07 sub eax, 7
+ 00d30 89 85 84 07 00
+ 00 mov DWORD PTR ashift$17[rbp], eax
+
+; 6437 : acount = stbi__bitcount(ma);
+
+ 00d36 8b 8d 84 00 00
+ 00 mov ecx, DWORD PTR ma$[rbp]
+ 00d3c e8 00 00 00 00 call stbi__bitcount
+ 00d41 89 85 04 08 00
+ 00 mov DWORD PTR acount$21[rbp], eax
+
+; 6438 : if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) {
+
+ 00d47 83 bd a4 07 00
+ 00 08 cmp DWORD PTR rcount$18[rbp], 8
+ 00d4e 7f 1b jg SHORT $LN86@stbi__bmp_
+ 00d50 83 bd c4 07 00
+ 00 08 cmp DWORD PTR gcount$19[rbp], 8
+ 00d57 7f 12 jg SHORT $LN86@stbi__bmp_
+ 00d59 83 bd e4 07 00
+ 00 08 cmp DWORD PTR bcount$20[rbp], 8
+ 00d60 7f 09 jg SHORT $LN86@stbi__bmp_
+ 00d62 83 bd 04 08 00
+ 00 08 cmp DWORD PTR acount$21[rbp], 8
+ 00d69 7e 3f jle SHORT $LN85@stbi__bmp_
+$LN86@stbi__bmp_:
+
+; 6439 : STBI_FREE(out);
+
+ 00d6b 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00d6f ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00d75 90 npad 1
+
+; 6440 : return stbi__errpuc("bad masks", "Corrupt BMP");
+
+ 00d76 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_09DAEBACAB@bad?5masks@
+ 00d7d e8 00 00 00 00 call stbi__err
+ 00d82 85 c0 test eax, eax
+ 00d84 74 0d je SHORT $LN123@stbi__bmp_
+ 00d86 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv474[rbp], 0
+ 00d91 eb 0b jmp SHORT $LN124@stbi__bmp_
+$LN123@stbi__bmp_:
+ 00d93 48 c7 85 f8 0c
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv474[rbp], 0
+$LN124@stbi__bmp_:
+ 00d9e 48 8b 85 f8 0c
+ 00 00 mov rax, QWORD PTR tv474[rbp]
+ 00da5 e9 68 05 00 00 jmp $LN1@stbi__bmp_
+$LN85@stbi__bmp_:
+$LN82@stbi__bmp_:
+
+; 6441 : }
+; 6442 : }
+; 6443 : for (j = 0; j < (int)s->img_y; ++j) {
+
+ 00daa c7 85 24 05 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 00db4 eb 0e jmp SHORT $LN19@stbi__bmp_
+$LN17@stbi__bmp_:
+ 00db6 8b 85 24 05 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 00dbc ff c0 inc eax
+ 00dbe 89 85 24 05 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN19@stbi__bmp_:
+ 00dc4 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00dcb 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 00dce 39 85 24 05 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 00dd4 0f 8d 12 03 00
+ 00 jge $LN18@stbi__bmp_
+
+; 6444 : if (easy) {
+
+ 00dda 83 bd 44 08 00
+ 00 00 cmp DWORD PTR easy$23[rbp], 0
+ 00de1 0f 84 1b 01 00
+ 00 je $LN87@stbi__bmp_
+
+; 6445 : for (i = 0; i < (int)s->img_x; ++i) {
+
+ 00de7 c7 85 04 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00df1 eb 0e jmp SHORT $LN22@stbi__bmp_
+$LN20@stbi__bmp_:
+ 00df3 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00df9 ff c0 inc eax
+ 00dfb 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN22@stbi__bmp_:
+ 00e01 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00e08 8b 00 mov eax, DWORD PTR [rax]
+ 00e0a 39 85 04 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00e10 0f 8d e7 00 00
+ 00 jge $LN21@stbi__bmp_
+
+; 6446 : unsigned char a;
+; 6447 : out[z + 2] = stbi__get8(s);
+
+ 00e16 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00e1d e8 00 00 00 00 call stbi__get8
+ 00e22 8b 8d 24 08 00
+ 00 mov ecx, DWORD PTR z$22[rbp]
+ 00e28 83 c1 02 add ecx, 2
+ 00e2b 48 63 c9 movsxd rcx, ecx
+ 00e2e 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 00e32 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6448 : out[z + 1] = stbi__get8(s);
+
+ 00e35 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00e3c e8 00 00 00 00 call stbi__get8
+ 00e41 8b 8d 24 08 00
+ 00 mov ecx, DWORD PTR z$22[rbp]
+ 00e47 ff c1 inc ecx
+ 00e49 48 63 c9 movsxd rcx, ecx
+ 00e4c 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 00e50 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6449 : out[z + 0] = stbi__get8(s);
+
+ 00e53 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00e5a e8 00 00 00 00 call stbi__get8
+ 00e5f 8b 8d 24 08 00
+ 00 mov ecx, DWORD PTR z$22[rbp]
+ 00e65 48 63 c9 movsxd rcx, ecx
+ 00e68 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 00e6c 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6450 : z += 3;
+
+ 00e6f 8b 85 24 08 00
+ 00 mov eax, DWORD PTR z$22[rbp]
+ 00e75 83 c0 03 add eax, 3
+ 00e78 89 85 24 08 00
+ 00 mov DWORD PTR z$22[rbp], eax
+
+; 6451 : a = (easy == 2 ? stbi__get8(s) : 255);
+
+ 00e7e 83 bd 44 08 00
+ 00 02 cmp DWORD PTR easy$23[rbp], 2
+ 00e85 75 17 jne SHORT $LN125@stbi__bmp_
+ 00e87 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00e8e e8 00 00 00 00 call stbi__get8
+ 00e93 0f b6 c0 movzx eax, al
+ 00e96 89 85 f4 0c 00
+ 00 mov DWORD PTR tv505[rbp], eax
+ 00e9c eb 0a jmp SHORT $LN126@stbi__bmp_
+$LN125@stbi__bmp_:
+ 00e9e c7 85 f4 0c 00
+ 00 ff 00 00 00 mov DWORD PTR tv505[rbp], 255 ; 000000ffH
+$LN126@stbi__bmp_:
+ 00ea8 0f b6 85 f4 0c
+ 00 00 movzx eax, BYTE PTR tv505[rbp]
+ 00eaf 88 85 64 08 00
+ 00 mov BYTE PTR a$24[rbp], al
+
+; 6452 : all_a |= a;
+
+ 00eb5 0f b6 85 64 08
+ 00 00 movzx eax, BYTE PTR a$24[rbp]
+ 00ebc 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR all_a$[rbp]
+ 00ec2 0b c8 or ecx, eax
+ 00ec4 8b c1 mov eax, ecx
+ 00ec6 89 85 a4 00 00
+ 00 mov DWORD PTR all_a$[rbp], eax
+
+; 6453 : if (target == 4)
+
+ 00ecc 83 bd a4 05 00
+ 00 04 cmp DWORD PTR target$[rbp], 4
+ 00ed3 75 23 jne SHORT $LN89@stbi__bmp_
+
+; 6454 : out[z++] = a;
+
+ 00ed5 48 63 85 24 08
+ 00 00 movsxd rax, DWORD PTR z$22[rbp]
+ 00edc 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 00ee0 0f b6 95 64 08
+ 00 00 movzx edx, BYTE PTR a$24[rbp]
+ 00ee7 88 14 01 mov BYTE PTR [rcx+rax], dl
+ 00eea 8b 85 24 08 00
+ 00 mov eax, DWORD PTR z$22[rbp]
+ 00ef0 ff c0 inc eax
+ 00ef2 89 85 24 08 00
+ 00 mov DWORD PTR z$22[rbp], eax
+$LN89@stbi__bmp_:
+
+; 6455 : }
+
+ 00ef8 e9 f6 fe ff ff jmp $LN20@stbi__bmp_
+$LN21@stbi__bmp_:
+
+; 6456 : } else {
+
+ 00efd e9 d2 01 00 00 jmp $LN88@stbi__bmp_
+$LN87@stbi__bmp_:
+
+; 6457 : int bpp = info.bpp;
+
+ 00f02 8b 85 c8 05 00
+ 00 mov eax, DWORD PTR info$[rbp]
+ 00f08 89 85 84 08 00
+ 00 mov DWORD PTR bpp$25[rbp], eax
+
+; 6458 : for (i = 0; i < (int)s->img_x; ++i) {
+
+ 00f0e c7 85 04 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 00f18 eb 0e jmp SHORT $LN25@stbi__bmp_
+$LN23@stbi__bmp_:
+ 00f1a 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 00f20 ff c0 inc eax
+ 00f22 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN25@stbi__bmp_:
+ 00f28 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00f2f 8b 00 mov eax, DWORD PTR [rax]
+ 00f31 39 85 04 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 00f37 0f 8d 97 01 00
+ 00 jge $LN24@stbi__bmp_
+
+; 6459 : stbi__uint32 v = (bpp == 16 ?
+
+ 00f3d 83 bd 84 08 00
+ 00 10 cmp DWORD PTR bpp$25[rbp], 16
+ 00f44 75 14 jne SHORT $LN127@stbi__bmp_
+ 00f46 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00f4d e8 00 00 00 00 call stbi__get16le
+ 00f52 89 85 f4 0c 00
+ 00 mov DWORD PTR tv522[rbp], eax
+ 00f58 eb 12 jmp SHORT $LN128@stbi__bmp_
+$LN127@stbi__bmp_:
+ 00f5a 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00f61 e8 00 00 00 00 call stbi__get32le
+ 00f66 89 85 f4 0c 00
+ 00 mov DWORD PTR tv522[rbp], eax
+$LN128@stbi__bmp_:
+ 00f6c 8b 85 f4 0c 00
+ 00 mov eax, DWORD PTR tv522[rbp]
+ 00f72 89 85 a4 08 00
+ 00 mov DWORD PTR v$26[rbp], eax
+
+; 6460 : (stbi__uint32)stbi__get16le(s) :
+; 6461 : stbi__get32le(s));
+; 6462 : unsigned int a;
+; 6463 : out[z++] = STBI__BYTECAST(
+
+ 00f78 8b 45 24 mov eax, DWORD PTR mr$[rbp]
+ 00f7b 8b 8d a4 08 00
+ 00 mov ecx, DWORD PTR v$26[rbp]
+ 00f81 23 c8 and ecx, eax
+ 00f83 8b c1 mov eax, ecx
+ 00f85 44 8b 85 a4 07
+ 00 00 mov r8d, DWORD PTR rcount$18[rbp]
+ 00f8c 8b 95 24 07 00
+ 00 mov edx, DWORD PTR rshift$14[rbp]
+ 00f92 8b c8 mov ecx, eax
+ 00f94 e8 00 00 00 00 call stbi__shiftsigned
+ 00f99 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00f9e 48 63 8d 24 08
+ 00 00 movsxd rcx, DWORD PTR z$22[rbp]
+ 00fa5 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 00fa9 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00fac 8b 85 24 08 00
+ 00 mov eax, DWORD PTR z$22[rbp]
+ 00fb2 ff c0 inc eax
+ 00fb4 89 85 24 08 00
+ 00 mov DWORD PTR z$22[rbp], eax
+
+; 6464 : stbi__shiftsigned(v & mr, rshift, rcount));
+; 6465 : out[z++] = STBI__BYTECAST(
+
+ 00fba 8b 45 44 mov eax, DWORD PTR mg$[rbp]
+ 00fbd 8b 8d a4 08 00
+ 00 mov ecx, DWORD PTR v$26[rbp]
+ 00fc3 23 c8 and ecx, eax
+ 00fc5 8b c1 mov eax, ecx
+ 00fc7 44 8b 85 c4 07
+ 00 00 mov r8d, DWORD PTR gcount$19[rbp]
+ 00fce 8b 95 44 07 00
+ 00 mov edx, DWORD PTR gshift$15[rbp]
+ 00fd4 8b c8 mov ecx, eax
+ 00fd6 e8 00 00 00 00 call stbi__shiftsigned
+ 00fdb 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 00fe0 48 63 8d 24 08
+ 00 00 movsxd rcx, DWORD PTR z$22[rbp]
+ 00fe7 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 00feb 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 00fee 8b 85 24 08 00
+ 00 mov eax, DWORD PTR z$22[rbp]
+ 00ff4 ff c0 inc eax
+ 00ff6 89 85 24 08 00
+ 00 mov DWORD PTR z$22[rbp], eax
+
+; 6466 : stbi__shiftsigned(v & mg, gshift, gcount));
+; 6467 : out[z++] = STBI__BYTECAST(
+
+ 00ffc 8b 45 64 mov eax, DWORD PTR mb$[rbp]
+ 00fff 8b 8d a4 08 00
+ 00 mov ecx, DWORD PTR v$26[rbp]
+ 01005 23 c8 and ecx, eax
+ 01007 8b c1 mov eax, ecx
+ 01009 44 8b 85 e4 07
+ 00 00 mov r8d, DWORD PTR bcount$20[rbp]
+ 01010 8b 95 64 07 00
+ 00 mov edx, DWORD PTR bshift$16[rbp]
+ 01016 8b c8 mov ecx, eax
+ 01018 e8 00 00 00 00 call stbi__shiftsigned
+ 0101d 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 01022 48 63 8d 24 08
+ 00 00 movsxd rcx, DWORD PTR z$22[rbp]
+ 01029 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 0102d 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 01030 8b 85 24 08 00
+ 00 mov eax, DWORD PTR z$22[rbp]
+ 01036 ff c0 inc eax
+ 01038 89 85 24 08 00
+ 00 mov DWORD PTR z$22[rbp], eax
+
+; 6468 : stbi__shiftsigned(v & mb, bshift, bcount));
+; 6469 : a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255);
+
+ 0103e 83 bd 84 00 00
+ 00 00 cmp DWORD PTR ma$[rbp], 0
+ 01045 74 2c je SHORT $LN129@stbi__bmp_
+ 01047 8b 85 84 00 00
+ 00 mov eax, DWORD PTR ma$[rbp]
+ 0104d 8b 8d a4 08 00
+ 00 mov ecx, DWORD PTR v$26[rbp]
+ 01053 23 c8 and ecx, eax
+ 01055 8b c1 mov eax, ecx
+ 01057 44 8b 85 04 08
+ 00 00 mov r8d, DWORD PTR acount$21[rbp]
+ 0105e 8b 95 84 07 00
+ 00 mov edx, DWORD PTR ashift$17[rbp]
+ 01064 8b c8 mov ecx, eax
+ 01066 e8 00 00 00 00 call stbi__shiftsigned
+ 0106b 89 85 f4 0c 00
+ 00 mov DWORD PTR tv562[rbp], eax
+ 01071 eb 0a jmp SHORT $LN130@stbi__bmp_
+$LN129@stbi__bmp_:
+ 01073 c7 85 f4 0c 00
+ 00 ff 00 00 00 mov DWORD PTR tv562[rbp], 255 ; 000000ffH
+$LN130@stbi__bmp_:
+ 0107d 8b 85 f4 0c 00
+ 00 mov eax, DWORD PTR tv562[rbp]
+ 01083 89 85 c4 08 00
+ 00 mov DWORD PTR a$27[rbp], eax
+
+; 6470 : all_a |= a;
+
+ 01089 8b 85 c4 08 00
+ 00 mov eax, DWORD PTR a$27[rbp]
+ 0108f 8b 8d a4 00 00
+ 00 mov ecx, DWORD PTR all_a$[rbp]
+ 01095 0b c8 or ecx, eax
+ 01097 8b c1 mov eax, ecx
+ 01099 89 85 a4 00 00
+ 00 mov DWORD PTR all_a$[rbp], eax
+
+; 6471 : if (target == 4)
+
+ 0109f 83 bd a4 05 00
+ 00 04 cmp DWORD PTR target$[rbp], 4
+ 010a6 75 27 jne SHORT $LN90@stbi__bmp_
+
+; 6472 : out[z++] = STBI__BYTECAST(a);
+
+ 010a8 8b 85 c4 08 00
+ 00 mov eax, DWORD PTR a$27[rbp]
+ 010ae 25 ff 00 00 00 and eax, 255 ; 000000ffH
+ 010b3 48 63 8d 24 08
+ 00 00 movsxd rcx, DWORD PTR z$22[rbp]
+ 010ba 48 8b 55 08 mov rdx, QWORD PTR out$[rbp]
+ 010be 88 04 0a mov BYTE PTR [rdx+rcx], al
+ 010c1 8b 85 24 08 00
+ 00 mov eax, DWORD PTR z$22[rbp]
+ 010c7 ff c0 inc eax
+ 010c9 89 85 24 08 00
+ 00 mov DWORD PTR z$22[rbp], eax
+$LN90@stbi__bmp_:
+
+; 6473 : }
+
+ 010cf e9 46 fe ff ff jmp $LN23@stbi__bmp_
+$LN24@stbi__bmp_:
+$LN88@stbi__bmp_:
+
+; 6474 : }
+; 6475 : stbi__skip(s, pad);
+
+ 010d4 8b 95 84 05 00
+ 00 mov edx, DWORD PTR pad$[rbp]
+ 010da 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 010e1 e8 00 00 00 00 call stbi__skip
+ 010e6 90 npad 1
+
+; 6476 : }
+
+ 010e7 e9 ca fc ff ff jmp $LN17@stbi__bmp_
+$LN18@stbi__bmp_:
+$LN55@stbi__bmp_:
+
+; 6477 : }
+; 6478 :
+; 6479 : // if alpha channel is all 0s, replace with all 255s
+; 6480 : if (target == 4 && all_a == 0)
+
+ 010ec 83 bd a4 05 00
+ 00 04 cmp DWORD PTR target$[rbp], 4
+ 010f3 75 53 jne SHORT $LN91@stbi__bmp_
+ 010f5 83 bd a4 00 00
+ 00 00 cmp DWORD PTR all_a$[rbp], 0
+ 010fc 75 4a jne SHORT $LN91@stbi__bmp_
+
+; 6481 : for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4)
+
+ 010fe 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 01105 8b 00 mov eax, DWORD PTR [rax]
+ 01107 c1 e0 02 shl eax, 2
+ 0110a 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 01111 0f af 41 04 imul eax, DWORD PTR [rcx+4]
+ 01115 ff c8 dec eax
+ 01117 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+ 0111d eb 0f jmp SHORT $LN28@stbi__bmp_
+$LN26@stbi__bmp_:
+ 0111f 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 01125 83 e8 04 sub eax, 4
+ 01128 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN28@stbi__bmp_:
+ 0112e 83 bd 04 05 00
+ 00 00 cmp DWORD PTR i$[rbp], 0
+ 01135 7c 11 jl SHORT $LN27@stbi__bmp_
+
+; 6482 : out[i] = 255;
+
+ 01137 48 63 85 04 05
+ 00 00 movsxd rax, DWORD PTR i$[rbp]
+ 0113e 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 01142 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH
+ 01146 eb d7 jmp SHORT $LN26@stbi__bmp_
+$LN27@stbi__bmp_:
+$LN91@stbi__bmp_:
+
+; 6483 :
+; 6484 : if (flip_vertically) {
+
+ 01148 83 bd 64 05 00
+ 00 00 cmp DWORD PTR flip_vertically$[rbp], 0
+ 0114f 0f 84 21 01 00
+ 00 je $LN92@stbi__bmp_
+
+; 6485 : stbi_uc t;
+; 6486 : for (j = 0; j < (int)s->img_y >> 1; ++j) {
+
+ 01155 c7 85 24 05 00
+ 00 00 00 00 00 mov DWORD PTR j$[rbp], 0
+ 0115f eb 0e jmp SHORT $LN31@stbi__bmp_
+$LN29@stbi__bmp_:
+ 01161 8b 85 24 05 00
+ 00 mov eax, DWORD PTR j$[rbp]
+ 01167 ff c0 inc eax
+ 01169 89 85 24 05 00
+ 00 mov DWORD PTR j$[rbp], eax
+$LN31@stbi__bmp_:
+ 0116f 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 01176 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 01179 d1 f8 sar eax, 1
+ 0117b 39 85 24 05 00
+ 00 cmp DWORD PTR j$[rbp], eax
+ 01181 0f 8d ef 00 00
+ 00 jge $LN30@stbi__bmp_
+
+; 6487 : stbi_uc *p1 = out + j * s->img_x * target;
+
+ 01187 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0118e 8b 8d 24 05 00
+ 00 mov ecx, DWORD PTR j$[rbp]
+ 01194 0f af 08 imul ecx, DWORD PTR [rax]
+ 01197 8b c1 mov eax, ecx
+ 01199 0f af 85 a4 05
+ 00 00 imul eax, DWORD PTR target$[rbp]
+ 011a0 8b c0 mov eax, eax
+ 011a2 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 011a6 48 03 c8 add rcx, rax
+ 011a9 48 8b c1 mov rax, rcx
+ 011ac 48 89 85 08 09
+ 00 00 mov QWORD PTR p1$29[rbp], rax
+
+; 6488 : stbi_uc *p2 = out + (s->img_y - 1 - j) * s->img_x * target;
+
+ 011b3 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 011ba 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 011bd ff c8 dec eax
+ 011bf 2b 85 24 05 00
+ 00 sub eax, DWORD PTR j$[rbp]
+ 011c5 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 011cc 0f af 01 imul eax, DWORD PTR [rcx]
+ 011cf 0f af 85 a4 05
+ 00 00 imul eax, DWORD PTR target$[rbp]
+ 011d6 8b c0 mov eax, eax
+ 011d8 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 011dc 48 03 c8 add rcx, rax
+ 011df 48 8b c1 mov rax, rcx
+ 011e2 48 89 85 28 09
+ 00 00 mov QWORD PTR p2$30[rbp], rax
+
+; 6489 : for (i = 0; i < (int)s->img_x * target; ++i) {
+
+ 011e9 c7 85 04 05 00
+ 00 00 00 00 00 mov DWORD PTR i$[rbp], 0
+ 011f3 eb 0e jmp SHORT $LN34@stbi__bmp_
+$LN32@stbi__bmp_:
+ 011f5 8b 85 04 05 00
+ 00 mov eax, DWORD PTR i$[rbp]
+ 011fb ff c0 inc eax
+ 011fd 89 85 04 05 00
+ 00 mov DWORD PTR i$[rbp], eax
+$LN34@stbi__bmp_:
+ 01203 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0120a 8b 00 mov eax, DWORD PTR [rax]
+ 0120c 0f af 85 a4 05
+ 00 00 imul eax, DWORD PTR target$[rbp]
+ 01213 39 85 04 05 00
+ 00 cmp DWORD PTR i$[rbp], eax
+ 01219 7d 56 jge SHORT $LN33@stbi__bmp_
+
+; 6490 : t = p1[i];
+
+ 0121b 48 63 85 04 05
+ 00 00 movsxd rax, DWORD PTR i$[rbp]
+ 01222 48 8b 8d 08 09
+ 00 00 mov rcx, QWORD PTR p1$29[rbp]
+ 01229 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
+ 0122d 88 85 e4 08 00
+ 00 mov BYTE PTR t$28[rbp], al
+
+; 6491 : p1[i] = p2[i];
+
+ 01233 48 63 85 04 05
+ 00 00 movsxd rax, DWORD PTR i$[rbp]
+ 0123a 48 63 8d 04 05
+ 00 00 movsxd rcx, DWORD PTR i$[rbp]
+ 01241 48 8b 95 08 09
+ 00 00 mov rdx, QWORD PTR p1$29[rbp]
+ 01248 4c 8b 85 28 09
+ 00 00 mov r8, QWORD PTR p2$30[rbp]
+ 0124f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
+ 01254 88 04 0a mov BYTE PTR [rdx+rcx], al
+
+; 6492 : p2[i] = t;
+
+ 01257 48 63 85 04 05
+ 00 00 movsxd rax, DWORD PTR i$[rbp]
+ 0125e 48 8b 8d 28 09
+ 00 00 mov rcx, QWORD PTR p2$30[rbp]
+ 01265 0f b6 95 e4 08
+ 00 00 movzx edx, BYTE PTR t$28[rbp]
+ 0126c 88 14 01 mov BYTE PTR [rcx+rax], dl
+
+; 6493 : }
+
+ 0126f eb 84 jmp SHORT $LN32@stbi__bmp_
+$LN33@stbi__bmp_:
+
+; 6494 : }
+
+ 01271 e9 eb fe ff ff jmp $LN29@stbi__bmp_
+$LN30@stbi__bmp_:
+$LN92@stbi__bmp_:
+
+; 6495 : }
+; 6496 :
+; 6497 : if (req_comp && req_comp != target) {
+
+ 01276 83 bd 50 0d 00
+ 00 00 cmp DWORD PTR req_comp$[rbp], 0
+ 0127d 74 4d je SHORT $LN93@stbi__bmp_
+ 0127f 8b 85 a4 05 00
+ 00 mov eax, DWORD PTR target$[rbp]
+ 01285 39 85 50 0d 00
+ 00 cmp DWORD PTR req_comp$[rbp], eax
+ 0128b 74 3f je SHORT $LN93@stbi__bmp_
+
+; 6498 : out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y);
+
+ 0128d 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 01294 8b 40 04 mov eax, DWORD PTR [rax+4]
+ 01297 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0129b 48 8b 85 30 0d
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 012a2 44 8b 08 mov r9d, DWORD PTR [rax]
+ 012a5 44 8b 85 50 0d
+ 00 00 mov r8d, DWORD PTR req_comp$[rbp]
+ 012ac 8b 95 a4 05 00
+ 00 mov edx, DWORD PTR target$[rbp]
+ 012b2 48 8b 4d 08 mov rcx, QWORD PTR out$[rbp]
+ 012b6 e8 00 00 00 00 call stbi__convert_format
+ 012bb 48 89 45 08 mov QWORD PTR out$[rbp], rax
+
+; 6499 : if (out == NULL)
+
+ 012bf 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0
+ 012c4 75 06 jne SHORT $LN94@stbi__bmp_
+
+; 6500 : return out; // stbi__convert_format frees input on failure
+
+ 012c6 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
+ 012ca eb 46 jmp SHORT $LN1@stbi__bmp_
+$LN94@stbi__bmp_:
+$LN93@stbi__bmp_:
+
+; 6501 : }
+; 6502 :
+; 6503 : *x = s->img_x;
+
+ 012cc 48 8b 85 38 0d
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 012d3 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 012da 8b 09 mov ecx, DWORD PTR [rcx]
+ 012dc 89 08 mov DWORD PTR [rax], ecx
+
+; 6504 : *y = s->img_y;
+
+ 012de 48 8b 85 40 0d
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 012e5 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 012ec 8b 49 04 mov ecx, DWORD PTR [rcx+4]
+ 012ef 89 08 mov DWORD PTR [rax], ecx
+
+; 6505 : if (comp)
+
+ 012f1 48 83 bd 48 0d
+ 00 00 00 cmp QWORD PTR comp$[rbp], 0
+ 012f9 74 13 je SHORT $LN95@stbi__bmp_
+
+; 6506 : *comp = s->img_n;
+
+ 012fb 48 8b 85 48 0d
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 01302 48 8b 8d 30 0d
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 01309 8b 49 08 mov ecx, DWORD PTR [rcx+8]
+ 0130c 89 08 mov DWORD PTR [rax], ecx
+$LN95@stbi__bmp_:
+
+; 6507 : return out;
+
+ 0130e 48 8b 45 08 mov rax, QWORD PTR out$[rbp]
+$LN1@stbi__bmp_:
+
+; 6508 : }
+
+ 01312 48 8b f8 mov rdi, rax
+ 01315 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 01319 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__bmp_load$rtcFrameData
+ 01320 e8 00 00 00 00 call _RTC_CheckStackVars
+ 01325 48 8b c7 mov rax, rdi
+ 01328 48 8b 8d 00 0d
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0132f 48 33 cd xor rcx, rbp
+ 01332 e8 00 00 00 00 call __security_check_cookie
+ 01337 48 8d a5 18 0d
+ 00 00 lea rsp, QWORD PTR [rbp+3352]
+ 0133e 5f pop rdi
+ 0133f 5d pop rbp
+ 01340 c3 ret 0
+stbi__bmp_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__bmp_test
+_TEXT SEGMENT
+r$ = 4
+s$ = 256
+stbi__bmp_test PROC ; COMDAT
+
+; 6059 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 6060 : int r = stbi__bmp_test_raw(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__bmp_test_raw
+ 0002c 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 6061 : stbi__rewind(s);
+
+ 0002f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__rewind
+ 0003b 90 npad 1
+
+; 6062 : return r;
+
+ 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 6063 : }
+
+ 0003f 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00046 5f pop rdi
+ 00047 5d pop rbp
+ 00048 c3 ret 0
+stbi__bmp_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__png_is16
+_TEXT SEGMENT
+p$ = 8
+__$ArrayPad$ = 248
+s$ = 288
+stbi__png_is16 PROC ; COMDAT
+
+; 6025 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00018 b9 12 00 00 00 mov ecx, 18
+ 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00022 f3 ab rep stosd
+ 00024 48 8b 8c 24 48
+ 01 00 00 mov rcx, QWORD PTR [rsp+328]
+ 0002c 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00033 48 33 c5 xor rax, rbp
+ 00036 48 89 85 f8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0003d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00049 90 npad 1
+
+; 6026 : stbi__png p;
+; 6027 : p.s = s;
+
+ 0004a 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00051 48 89 45 08 mov QWORD PTR p$[rbp], rax
+
+; 6028 : if (!stbi__png_info_raw(&p, NULL, NULL, NULL))
+
+ 00055 45 33 c9 xor r9d, r9d
+ 00058 45 33 c0 xor r8d, r8d
+ 0005b 33 d2 xor edx, edx
+ 0005d 48 8d 4d 08 lea rcx, QWORD PTR p$[rbp]
+ 00061 e8 00 00 00 00 call stbi__png_info_raw
+ 00066 85 c0 test eax, eax
+ 00068 75 04 jne SHORT $LN2@stbi__png_
+
+; 6029 : return 0;
+
+ 0006a 33 c0 xor eax, eax
+ 0006c eb 19 jmp SHORT $LN1@stbi__png_
+$LN2@stbi__png_:
+
+; 6030 : if (p.depth != 16) {
+
+ 0006e 83 7d 28 10 cmp DWORD PTR p$[rbp+32], 16
+ 00072 74 0e je SHORT $LN3@stbi__png_
+
+; 6031 : stbi__rewind(p.s);
+
+ 00074 48 8b 4d 08 mov rcx, QWORD PTR p$[rbp]
+ 00078 e8 00 00 00 00 call stbi__rewind
+ 0007d 90 npad 1
+
+; 6032 : return 0;
+
+ 0007e 33 c0 xor eax, eax
+ 00080 eb 05 jmp SHORT $LN1@stbi__png_
+$LN3@stbi__png_:
+
+; 6033 : }
+; 6034 : return 1;
+
+ 00082 b8 01 00 00 00 mov eax, 1
+$LN1@stbi__png_:
+
+; 6035 : }
+
+ 00087 48 8b f8 mov rdi, rax
+ 0008a 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0008e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__png_is16$rtcFrameData
+ 00095 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0009a 48 8b c7 mov rax, rdi
+ 0009d 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000a4 48 33 cd xor rcx, rbp
+ 000a7 e8 00 00 00 00 call __security_check_cookie
+ 000ac 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000b3 5f pop rdi
+ 000b4 5d pop rbp
+ 000b5 c3 ret 0
+stbi__png_is16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__png_info
+_TEXT SEGMENT
+p$ = 8
+__$ArrayPad$ = 248
+s$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+stbi__png_info PROC ; COMDAT
+
+; 6018 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 12 00 00 00 mov ecx, 18
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 48
+ 01 00 00 mov rcx, QWORD PTR [rsp+328]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 f8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 6019 : stbi__png p;
+; 6020 : p.s = s;
+
+ 00059 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00060 48 89 45 08 mov QWORD PTR p$[rbp], rax
+
+; 6021 : return stbi__png_info_raw(&p, x, y, comp);
+
+ 00064 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0006b 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00072 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00079 48 8d 4d 08 lea rcx, QWORD PTR p$[rbp]
+ 0007d e8 00 00 00 00 call stbi__png_info_raw
+
+; 6022 : }
+
+ 00082 48 8b f8 mov rdi, rax
+ 00085 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00089 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__png_info$rtcFrameData
+ 00090 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00095 48 8b c7 mov rax, rdi
+ 00098 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0009f 48 33 cd xor rcx, rbp
+ 000a2 e8 00 00 00 00 call __security_check_cookie
+ 000a7 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000ae 5f pop rdi
+ 000af 5d pop rbp
+ 000b0 c3 ret 0
+stbi__png_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__png_load
+_TEXT SEGMENT
+p$ = 8
+__$ArrayPad$ = 248
+s$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+req_comp$ = 320
+ri$ = 328
+stbi__png_load PROC ; COMDAT
+
+; 5988 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 12 00 00 00 mov ecx, 18
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 58
+ 01 00 00 mov rcx, QWORD PTR [rsp+344]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 f8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 5989 : stbi__png p;
+; 5990 : p.s = s;
+
+ 00059 48 8b 85 20 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00060 48 89 45 08 mov QWORD PTR p$[rbp], rax
+
+; 5991 : return stbi__do_png(&p, x, y, comp, req_comp, ri);
+
+ 00064 48 8b 85 48 01
+ 00 00 mov rax, QWORD PTR ri$[rbp]
+ 0006b 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00070 8b 85 40 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007a 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00081 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00088 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0008f 48 8d 4d 08 lea rcx, QWORD PTR p$[rbp]
+ 00093 e8 00 00 00 00 call stbi__do_png
+
+; 5992 : }
+
+ 00098 48 8b f8 mov rdi, rax
+ 0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 0009f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__png_load$rtcFrameData
+ 000a6 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ab 48 8b c7 mov rax, rdi
+ 000ae 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000b5 48 33 cd xor rcx, rbp
+ 000b8 e8 00 00 00 00 call __security_check_cookie
+ 000bd 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000c4 5f pop rdi
+ 000c5 5d pop rbp
+ 000c6 c3 ret 0
+stbi__png_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__png_test
+_TEXT SEGMENT
+r$ = 4
+s$ = 256
+stbi__png_test PROC ; COMDAT
+
+; 5995 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 5996 : int r;
+; 5997 : r = stbi__check_png_header(s);
+
+ 00020 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00027 e8 00 00 00 00 call stbi__check_png_header
+ 0002c 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 5998 : stbi__rewind(s);
+
+ 0002f 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00036 e8 00 00 00 00 call stbi__rewind
+ 0003b 90 npad 1
+
+; 5999 : return r;
+
+ 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 6000 : }
+
+ 0003f 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00046 5f pop rdi
+ 00047 5d pop rbp
+ 00048 c3 ret 0
+stbi__png_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_info
+_TEXT SEGMENT
+result$ = 4
+j$ = 40
+s$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+stbi__jpeg_info PROC ; COMDAT
+
+; 4599 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 4600 : int result;
+; 4601 : stbi__jpeg *j = (stbi__jpeg *)(stbi__malloc(sizeof(stbi__jpeg)));
+
+ 0002f b9 88 48 00 00 mov ecx, 18568 ; 00004888H
+ 00034 e8 00 00 00 00 call stbi__malloc
+ 00039 48 89 45 28 mov QWORD PTR j$[rbp], rax
+
+; 4602 : if (!j)
+
+ 0003d 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0
+ 00042 75 0e jne SHORT $LN2@stbi__jpeg
+
+; 4603 : return stbi__err("outofmem", "Out of memory");
+
+ 00044 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0004b e8 00 00 00 00 call stbi__err
+ 00050 eb 4f jmp SHORT $LN1@stbi__jpeg
+$LN2@stbi__jpeg:
+
+; 4604 : memset(j, 0, sizeof(stbi__jpeg));
+
+ 00052 41 b8 88 48 00
+ 00 mov r8d, 18568 ; 00004888H
+ 00058 33 d2 xor edx, edx
+ 0005a 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 0005e e8 00 00 00 00 call memset
+ 00063 90 npad 1
+
+; 4605 : j->s = s;
+
+ 00064 48 8b 45 28 mov rax, QWORD PTR j$[rbp]
+ 00068 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0006f 48 89 08 mov QWORD PTR [rax], rcx
+
+; 4606 : result = stbi__jpeg_info_raw(j, x, y, comp);
+
+ 00072 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00079 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00080 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00087 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 0008b e8 00 00 00 00 call stbi__jpeg_info_raw
+ 00090 89 45 04 mov DWORD PTR result$[rbp], eax
+
+; 4607 : STBI_FREE(j);
+
+ 00093 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 00097 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0009d 90 npad 1
+
+; 4608 : return result;
+
+ 0009e 8b 45 04 mov eax, DWORD PTR result$[rbp]
+$LN1@stbi__jpeg:
+
+; 4609 : }
+
+ 000a1 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000a8 5f pop rdi
+ 000a9 5d pop rbp
+ 000aa c3 ret 0
+stbi__jpeg_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_load
+_TEXT SEGMENT
+result$ = 8
+j$ = 40
+tv70 = 248
+s$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+req_comp$ = 320
+ri$ = 328
+stbi__jpeg_load PROC ; COMDAT
+
+; 4554 : {
+
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 4555 : unsigned char *result;
+; 4556 : stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg));
+
+ 0002f b9 88 48 00 00 mov ecx, 18568 ; 00004888H
+ 00034 e8 00 00 00 00 call stbi__malloc
+ 00039 48 89 45 28 mov QWORD PTR j$[rbp], rax
+
+; 4557 : if (!j)
+
+ 0003d 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0
+ 00042 75 31 jne SHORT $LN2@stbi__jpeg
+
+; 4558 : return stbi__errpuc("outofmem", "Out of memory");
+
+ 00044 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0004b e8 00 00 00 00 call stbi__err
+ 00050 85 c0 test eax, eax
+ 00052 74 0d je SHORT $LN4@stbi__jpeg
+ 00054 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv70[rbp], 0
+ 0005f eb 0b jmp SHORT $LN5@stbi__jpeg
+$LN4@stbi__jpeg:
+ 00061 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv70[rbp], 0
+$LN5@stbi__jpeg:
+ 0006c 48 8b 85 f8 00
+ 00 00 mov rax, QWORD PTR tv70[rbp]
+ 00073 eb 65 jmp SHORT $LN1@stbi__jpeg
+$LN2@stbi__jpeg:
+
+; 4559 : memset(j, 0, sizeof(stbi__jpeg));
+
+ 00075 41 b8 88 48 00
+ 00 mov r8d, 18568 ; 00004888H
+ 0007b 33 d2 xor edx, edx
+ 0007d 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 00081 e8 00 00 00 00 call memset
+ 00086 90 npad 1
+
+; 4560 : STBI_NOTUSED(ri);
+; 4561 : j->s = s;
+
+ 00087 48 8b 45 28 mov rax, QWORD PTR j$[rbp]
+ 0008b 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00092 48 89 08 mov QWORD PTR [rax], rcx
+
+; 4562 : stbi__setup_jpeg(j);
+
+ 00095 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 00099 e8 00 00 00 00 call stbi__setup_jpeg
+ 0009e 90 npad 1
+
+; 4563 : result = load_jpeg_image(j, x, y, comp, req_comp);
+
+ 0009f 8b 85 40 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 000a5 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 000a9 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 000b0 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 000b7 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 000be 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 000c2 e8 00 00 00 00 call load_jpeg_image
+ 000c7 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 4564 : STBI_FREE(j);
+
+ 000cb 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 000cf ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000d5 90 npad 1
+
+; 4565 : return result;
+
+ 000d6 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi__jpeg:
+
+; 4566 : }
+
+ 000da 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000e1 5f pop rdi
+ 000e2 5d pop rbp
+ 000e3 c3 ret 0
+stbi__jpeg_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__jpeg_test
+_TEXT SEGMENT
+r$ = 4
+j$ = 40
+s$ = 288
+stbi__jpeg_test PROC ; COMDAT
+
+; 4569 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 4570 : int r;
+; 4571 : stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg));
+
+ 00020 b9 88 48 00 00 mov ecx, 18568 ; 00004888H
+ 00025 e8 00 00 00 00 call stbi__malloc
+ 0002a 48 89 45 28 mov QWORD PTR j$[rbp], rax
+
+; 4572 : if (!j)
+
+ 0002e 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0
+ 00033 75 0e jne SHORT $LN2@stbi__jpeg
+
+; 4573 : return stbi__err("outofmem", "Out of memory");
+
+ 00035 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@
+ 0003c e8 00 00 00 00 call stbi__err
+ 00041 eb 56 jmp SHORT $LN1@stbi__jpeg
+$LN2@stbi__jpeg:
+
+; 4574 : memset(j, 0, sizeof(stbi__jpeg));
+
+ 00043 41 b8 88 48 00
+ 00 mov r8d, 18568 ; 00004888H
+ 00049 33 d2 xor edx, edx
+ 0004b 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 0004f e8 00 00 00 00 call memset
+ 00054 90 npad 1
+
+; 4575 : j->s = s;
+
+ 00055 48 8b 45 28 mov rax, QWORD PTR j$[rbp]
+ 00059 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00060 48 89 08 mov QWORD PTR [rax], rcx
+
+; 4576 : stbi__setup_jpeg(j);
+
+ 00063 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 00067 e8 00 00 00 00 call stbi__setup_jpeg
+ 0006c 90 npad 1
+
+; 4577 : r = stbi__decode_jpeg_header(j, STBI__SCAN_type);
+
+ 0006d ba 01 00 00 00 mov edx, 1
+ 00072 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 00076 e8 00 00 00 00 call stbi__decode_jpeg_header
+ 0007b 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 4578 : stbi__rewind(s);
+
+ 0007e 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00085 e8 00 00 00 00 call stbi__rewind
+ 0008a 90 npad 1
+
+; 4579 : STBI_FREE(j);
+
+ 0008b 48 8b 4d 28 mov rcx, QWORD PTR j$[rbp]
+ 0008f ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00095 90 npad 1
+
+; 4580 : return r;
+
+ 00096 8b 45 04 mov eax, DWORD PTR r$[rbp]
+$LN1@stbi__jpeg:
+
+; 4581 : }
+
+ 00099 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000a0 5f pop rdi
+ 000a1 5d pop rbp
+ 000a2 c3 ret 0
+stbi__jpeg_test ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__rewind
+_TEXT SEGMENT
+s$ = 224
+stbi__rewind PROC ; COMDAT
+
+; 900 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 901 : // conceptually rewind SHOULD rewind to the beginning of the stream,
+; 902 : // but we just rewind to the beginning of the initial buffer, because
+; 903 : // we only use it after doing 'test', which only ever looks at at most 92 bytes
+; 904 : s->img_buffer = s->img_buffer_original;
+
+ 00020 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00027 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0002e 48 8b 89 d0 00
+ 00 00 mov rcx, QWORD PTR [rcx+208]
+ 00035 48 89 88 c0 00
+ 00 00 mov QWORD PTR [rax+192], rcx
+
+; 905 : s->img_buffer_end = s->img_buffer_original_end;
+
+ 0003c 48 8b 85 e0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00043 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0004a 48 8b 89 d8 00
+ 00 00 mov rcx, QWORD PTR [rcx+216]
+ 00051 48 89 88 c8 00
+ 00 00 mov QWORD PTR [rax+200], rcx
+
+; 906 : }
+
+ 00058 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0005f 5f pop rdi
+ 00060 5d pop rbp
+ 00061 c3 ret 0
+stbi__rewind ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__start_file
+_TEXT SEGMENT
+s$ = 224
+f$ = 232
+stbi__start_file PROC ; COMDAT
+
+; 891 : {
+
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 892 : stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *)f);
+
+ 00025 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR f$[rbp]
+ 0002c 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__stdio_callbacks
+ 00033 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0003a e8 00 00 00 00 call stbi__start_callbacks
+ 0003f 90 npad 1
+
+; 893 : }
+
+ 00040 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00047 5f pop rdi
+ 00048 5d pop rbp
+ 00049 c3 ret 0
+stbi__start_file ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__stdio_eof
+_TEXT SEGMENT
+tv70 = 192
+user$ = 240
+stbi__stdio_eof PROC ; COMDAT
+
+; 880 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 881 : return feof((FILE *)user) || ferror((FILE *)user);
+
+ 00020 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR user$[rbp]
+ 00027 ff 15 00 00 00
+ 00 call QWORD PTR __imp_feof
+ 0002d 85 c0 test eax, eax
+ 0002f 75 1d jne SHORT $LN3@stbi__stdi
+ 00031 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR user$[rbp]
+ 00038 ff 15 00 00 00
+ 00 call QWORD PTR __imp_ferror
+ 0003e 85 c0 test eax, eax
+ 00040 75 0c jne SHORT $LN3@stbi__stdi
+ 00042 c7 85 c0 00 00
+ 00 00 00 00 00 mov DWORD PTR tv70[rbp], 0
+ 0004c eb 0a jmp SHORT $LN4@stbi__stdi
+$LN3@stbi__stdi:
+ 0004e c7 85 c0 00 00
+ 00 01 00 00 00 mov DWORD PTR tv70[rbp], 1
+$LN4@stbi__stdi:
+ 00058 8b 85 c0 00 00
+ 00 mov eax, DWORD PTR tv70[rbp]
+
+; 882 : }
+
+ 0005e 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 00065 5f pop rdi
+ 00066 5d pop rbp
+ 00067 c3 ret 0
+stbi__stdio_eof ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__stdio_skip
+_TEXT SEGMENT
+ch$ = 4
+user$ = 256
+n$ = 264
+stbi__stdio_skip PROC ; COMDAT
+
+; 870 : {
+
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00023 90 npad 1
+
+; 871 : int ch;
+; 872 : fseek((FILE *)user, n, SEEK_CUR);
+
+ 00024 41 b8 01 00 00
+ 00 mov r8d, 1
+ 0002a 8b 95 08 01 00
+ 00 mov edx, DWORD PTR n$[rbp]
+ 00030 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR user$[rbp]
+ 00037 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fseek
+ 0003d 90 npad 1
+
+; 873 : ch = fgetc((FILE *)user); /* have to read a byte to reset feof()'s flag */
+
+ 0003e 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR user$[rbp]
+ 00045 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fgetc
+ 0004b 89 45 04 mov DWORD PTR ch$[rbp], eax
+
+; 874 : if (ch != EOF) {
+
+ 0004e 83 7d 04 ff cmp DWORD PTR ch$[rbp], -1
+ 00052 74 11 je SHORT $LN2@stbi__stdi
+
+; 875 : ungetc(ch, (FILE *)user); /* push byte back onto stream if valid. */
+
+ 00054 48 8b 95 00 01
+ 00 00 mov rdx, QWORD PTR user$[rbp]
+ 0005b 8b 4d 04 mov ecx, DWORD PTR ch$[rbp]
+ 0005e ff 15 00 00 00
+ 00 call QWORD PTR __imp_ungetc
+ 00064 90 npad 1
+$LN2@stbi__stdi:
+
+; 876 : }
+; 877 : }
+
+ 00065 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 0006c 5f pop rdi
+ 0006d 5d pop rbp
+ 0006e c3 ret 0
+stbi__stdio_skip ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__stdio_read
+_TEXT SEGMENT
+user$ = 224
+data$ = 232
+size$ = 240
+stbi__stdio_read PROC ; COMDAT
+
+; 865 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 866 : return (int)fread(data, 1, size, (FILE *)user);
+
+ 0002a 48 63 85 f0 00
+ 00 00 movsxd rax, DWORD PTR size$[rbp]
+ 00031 4c 8b 8d e0 00
+ 00 00 mov r9, QWORD PTR user$[rbp]
+ 00038 4c 8b c0 mov r8, rax
+ 0003b ba 01 00 00 00 mov edx, 1
+ 00040 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR data$[rbp]
+ 00047 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fread
+
+; 867 : }
+
+ 0004d 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00054 5f pop rdi
+ 00055 5d pop rbp
+ 00056 c3 ret 0
+stbi__stdio_read ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__start_callbacks
+_TEXT SEGMENT
+tv72 = 192
+s$ = 240
+c$ = 248
+user$ = 256
+stbi__start_callbacks PROC ; COMDAT
+
+; 851 : {
+
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 56 push rsi
+ 00011 57 push rdi
+ 00012 48 81 ec f0 00
+ 00 00 sub rsp, 240 ; 000000f0H
+ 00019 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002a 90 npad 1
+
+; 852 : s->io = *c;
+
+ 0002b 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00032 48 8d 78 10 lea rdi, QWORD PTR [rax+16]
+ 00036 48 8b b5 f8 00
+ 00 00 mov rsi, QWORD PTR c$[rbp]
+ 0003d b9 18 00 00 00 mov ecx, 24
+ 00042 f3 a4 rep movsb
+
+; 853 : s->io_user_data = user;
+
+ 00044 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0004b 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR user$[rbp]
+ 00052 48 89 48 28 mov QWORD PTR [rax+40], rcx
+
+; 854 : s->buflen = sizeof(s->buffer_start);
+
+ 00056 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0005d c7 40 34 80 00
+ 00 00 mov DWORD PTR [rax+52], 128 ; 00000080H
+
+; 855 : s->read_from_callbacks = 1;
+
+ 00064 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0006b c7 40 30 01 00
+ 00 00 mov DWORD PTR [rax+48], 1
+
+; 856 : s->callback_already_read = 0;
+
+ 00072 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00079 c7 80 b8 00 00
+ 00 00 00 00 00 mov DWORD PTR [rax+184], 0
+
+; 857 : s->img_buffer = s->img_buffer_original = s->buffer_start;
+
+ 00083 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0008a 48 83 c0 38 add rax, 56 ; 00000038H
+ 0008e 48 89 85 c0 00
+ 00 00 mov QWORD PTR tv72[rbp], rax
+ 00095 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0009c 48 8b 8d c0 00
+ 00 00 mov rcx, QWORD PTR tv72[rbp]
+ 000a3 48 89 88 d0 00
+ 00 00 mov QWORD PTR [rax+208], rcx
+ 000aa 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000b1 48 8b 8d c0 00
+ 00 00 mov rcx, QWORD PTR tv72[rbp]
+ 000b8 48 89 88 c0 00
+ 00 00 mov QWORD PTR [rax+192], rcx
+
+; 858 : stbi__refill_buffer(s);
+
+ 000bf 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c6 e8 00 00 00 00 call stbi__refill_buffer
+ 000cb 90 npad 1
+
+; 859 : s->img_buffer_original_end = s->img_buffer_end;
+
+ 000cc 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000d3 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000da 48 8b 89 c8 00
+ 00 00 mov rcx, QWORD PTR [rcx+200]
+ 000e1 48 89 88 d8 00
+ 00 00 mov QWORD PTR [rax+216], rcx
+
+; 860 : }
+
+ 000e8 48 8d a5 d0 00
+ 00 00 lea rsp, QWORD PTR [rbp+208]
+ 000ef 5f pop rdi
+ 000f0 5e pop rsi
+ 000f1 5d pop rbp
+ 000f2 c3 ret 0
+stbi__start_callbacks ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__start_mem
+_TEXT SEGMENT
+tv72 = 192
+s$ = 240
+buffer$ = 248
+len$ = 256
+stbi__start_mem PROC ; COMDAT
+
+; 841 : {
+
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec f8 00
+ 00 00 sub rsp, 248 ; 000000f8H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 842 : s->io.read = NULL;
+
+ 0002a 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00031 48 c7 40 10 00
+ 00 00 00 mov QWORD PTR [rax+16], 0
+
+; 843 : s->read_from_callbacks = 0;
+
+ 00039 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00040 c7 40 30 00 00
+ 00 00 mov DWORD PTR [rax+48], 0
+
+; 844 : s->callback_already_read = 0;
+
+ 00047 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0004e c7 80 b8 00 00
+ 00 00 00 00 00 mov DWORD PTR [rax+184], 0
+
+; 845 : s->img_buffer = s->img_buffer_original = (stbi_uc *)buffer;
+
+ 00058 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0005f 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 00066 48 89 88 d0 00
+ 00 00 mov QWORD PTR [rax+208], rcx
+ 0006d 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00074 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 0007b 48 89 88 c0 00
+ 00 00 mov QWORD PTR [rax+192], rcx
+
+; 846 : s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *)buffer + len;
+
+ 00082 48 63 85 00 01
+ 00 00 movsxd rax, DWORD PTR len$[rbp]
+ 00089 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 00090 48 03 c8 add rcx, rax
+ 00093 48 89 8d c0 00
+ 00 00 mov QWORD PTR tv72[rbp], rcx
+ 0009a 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000a1 48 8b 8d c0 00
+ 00 00 mov rcx, QWORD PTR tv72[rbp]
+ 000a8 48 89 88 d8 00
+ 00 00 mov QWORD PTR [rax+216], rcx
+ 000af 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000b6 48 8b 8d c0 00
+ 00 00 mov rcx, QWORD PTR tv72[rbp]
+ 000bd 48 89 88 c8 00
+ 00 00 mov QWORD PTR [rax+200], rcx
+
+; 847 : }
+
+ 000c4 48 8d a5 d8 00
+ 00 00 lea rsp, QWORD PTR [rbp+216]
+ 000cb 5f pop rdi
+ 000cc 5d pop rbp
+ 000cd c3 ret 0
+stbi__start_mem ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__refill_buffer
+_TEXT SEGMENT
+n$ = 4
+s$ = 256
+stbi__refill_buffer PROC ; COMDAT
+
+; 1672 : {
+
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1673 : int n = (s->io.read)(s->io_user_data, (char *)s->buffer_start, s->buflen);
+
+ 00020 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00027 48 83 c0 38 add rax, 56 ; 00000038H
+ 0002b 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00032 44 8b 41 34 mov r8d, DWORD PTR [rcx+52]
+ 00036 48 8b d0 mov rdx, rax
+ 00039 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00040 48 8b 48 28 mov rcx, QWORD PTR [rax+40]
+ 00044 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 0004b ff 50 10 call QWORD PTR [rax+16]
+ 0004e 89 45 04 mov DWORD PTR n$[rbp], eax
+
+; 1674 : s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original);
+
+ 00051 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00058 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 0005f 48 8b 89 d0 00
+ 00 00 mov rcx, QWORD PTR [rcx+208]
+ 00066 48 8b 80 c0 00
+ 00 00 mov rax, QWORD PTR [rax+192]
+ 0006d 48 2b c1 sub rax, rcx
+ 00070 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00077 03 81 b8 00 00
+ 00 add eax, DWORD PTR [rcx+184]
+ 0007d 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00084 89 81 b8 00 00
+ 00 mov DWORD PTR [rcx+184], eax
+
+; 1675 : if (n == 0) {
+
+ 0008a 83 7d 04 00 cmp DWORD PTR n$[rbp], 0
+ 0008e 75 53 jne SHORT $LN2@stbi__refi
+
+; 1676 : // at end of file, treat same as if from memory, but need to handle case
+; 1677 : // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file
+; 1678 : s->read_from_callbacks = 0;
+
+ 00090 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 00097 c7 40 30 00 00
+ 00 00 mov DWORD PTR [rax+48], 0
+
+; 1679 : s->img_buffer = s->buffer_start;
+
+ 0009e 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000a5 48 83 c0 38 add rax, 56 ; 00000038H
+ 000a9 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000b0 48 89 81 c0 00
+ 00 00 mov QWORD PTR [rcx+192], rax
+
+; 1680 : s->img_buffer_end = s->buffer_start + 1;
+
+ 000b7 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000be 48 83 c0 39 add rax, 57 ; 00000039H
+ 000c2 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000c9 48 89 81 c8 00
+ 00 00 mov QWORD PTR [rcx+200], rax
+
+; 1681 : *s->img_buffer = 0;
+
+ 000d0 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000d7 48 8b 80 c0 00
+ 00 00 mov rax, QWORD PTR [rax+192]
+ 000de c6 00 00 mov BYTE PTR [rax], 0
+
+; 1682 : } else {
+
+ 000e1 eb 37 jmp SHORT $LN3@stbi__refi
+$LN2@stbi__refi:
+
+; 1683 : s->img_buffer = s->buffer_start;
+
+ 000e3 48 8b 85 00 01
+ 00 00 mov rax, QWORD PTR s$[rbp]
+ 000ea 48 83 c0 38 add rax, 56 ; 00000038H
+ 000ee 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 000f5 48 89 81 c0 00
+ 00 00 mov QWORD PTR [rcx+192], rax
+
+; 1684 : s->img_buffer_end = s->buffer_start + n;
+
+ 000fc 48 63 45 04 movsxd rax, DWORD PTR n$[rbp]
+ 00100 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00107 48 8d 44 01 38 lea rax, QWORD PTR [rcx+rax+56]
+ 0010c 48 8b 8d 00 01
+ 00 00 mov rcx, QWORD PTR s$[rbp]
+ 00113 48 89 81 c8 00
+ 00 00 mov QWORD PTR [rcx+200], rax
+$LN3@stbi__refi:
+
+; 1685 : }
+; 1686 : }
+
+ 0011a 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00121 5f pop rdi
+ 00122 5d pop rbp
+ 00123 c3 ret 0
+stbi__refill_buffer ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__sse2_available
+_TEXT SEGMENT
+info3$ = 4
+tv68 = 212
+stbi__sse2_available PROC ; COMDAT
+
+; 771 : {
+
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec 08 01
+ 00 00 sub rsp, 264 ; 00000108H
+ 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0000f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001b 90 npad 1
+
+; 772 : int info3 = stbi__cpuid3();
+
+ 0001c e8 00 00 00 00 call stbi__cpuid3
+ 00021 89 45 04 mov DWORD PTR info3$[rbp], eax
+
+; 773 : return ((info3 >> 26) & 1) != 0;
+
+ 00024 8b 45 04 mov eax, DWORD PTR info3$[rbp]
+ 00027 c1 f8 1a sar eax, 26
+ 0002a 83 e0 01 and eax, 1
+ 0002d 85 c0 test eax, eax
+ 0002f 74 0c je SHORT $LN3@stbi__sse2
+ 00031 c7 85 d4 00 00
+ 00 01 00 00 00 mov DWORD PTR tv68[rbp], 1
+ 0003b eb 0a jmp SHORT $LN4@stbi__sse2
+$LN3@stbi__sse2:
+ 0003d c7 85 d4 00 00
+ 00 00 00 00 00 mov DWORD PTR tv68[rbp], 0
+$LN4@stbi__sse2:
+ 00047 8b 85 d4 00 00
+ 00 mov eax, DWORD PTR tv68[rbp]
+
+; 774 : }
+
+ 0004d 48 8d a5 e8 00
+ 00 00 lea rsp, QWORD PTR [rbp+232]
+ 00054 5f pop rdi
+ 00055 5d pop rbp
+ 00056 c3 ret 0
+stbi__sse2_available ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi__cpuid3
+_TEXT SEGMENT
+info$ = 8
+__$ArrayPad$ = 232
+stbi__cpuid3 PROC ; COMDAT
+
+; 749 : {
+
+ 00000 40 55 push rbp
+ 00002 53 push rbx
+ 00003 57 push rdi
+ 00004 48 81 ec 10 01
+ 00 00 sub rsp, 272 ; 00000110H
+ 0000b 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00010 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00015 b9 0c 00 00 00 mov ecx, 12
+ 0001a b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 0001f f3 ab rep stosd
+ 00021 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00028 48 33 c5 xor rax, rbp
+ 0002b 48 89 85 e8 00
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00032 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00039 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0003e 90 npad 1
+
+; 750 : int info[4];
+; 751 : __cpuid(info, 1);
+
+ 0003f b8 01 00 00 00 mov eax, 1
+ 00044 33 c9 xor ecx, ecx
+ 00046 0f a2 cpuid
+ 00048 4c 8d 45 08 lea r8, QWORD PTR info$[rbp]
+ 0004c 41 89 00 mov DWORD PTR [r8], eax
+ 0004f 41 89 58 04 mov DWORD PTR [r8+4], ebx
+ 00053 41 89 48 08 mov DWORD PTR [r8+8], ecx
+ 00057 41 89 50 0c mov DWORD PTR [r8+12], edx
+
+; 752 : return info[3];
+
+ 0005b b8 04 00 00 00 mov eax, 4
+ 00060 48 6b c0 03 imul rax, rax, 3
+ 00064 8b 44 05 08 mov eax, DWORD PTR info$[rbp+rax]
+
+; 753 : }
+
+ 00068 8b f8 mov edi, eax
+ 0006a 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0006e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi__cpuid3$rtcFrameData
+ 00075 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0007a 8b c7 mov eax, edi
+ 0007c 48 8b 8d e8 00
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00083 48 33 cd xor rcx, rbp
+ 00086 e8 00 00 00 00 call __security_check_cookie
+ 0008b 48 8d a5 f0 00
+ 00 00 lea rsp, QWORD PTR [rbp+240]
+ 00092 5f pop rdi
+ 00093 5b pop rbx
+ 00094 5d pop rbp
+ 00095 c3 ret 0
+stbi__cpuid3 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_zlib_decode_noheader_buffer
+_TEXT SEGMENT
+a$ = 16
+__$ArrayPad$ = 5672
+obuffer$ = 5712
+olen$ = 5720
+ibuffer$ = 5728
+ilen$ = 5736
+stbi_zlib_decode_noheader_buffer PROC ; COMDAT
+
+; 5179 : {
+
+$LN5:
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 b8 68 16 00 00 mov eax, 5736 ; 00001668H
+ 0001a e8 00 00 00 00 call __chkstk
+ 0001f 48 2b e0 sub rsp, rax
+ 00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 0002c b9 0e 04 00 00 mov ecx, 1038 ; 0000040eH
+ 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00036 f3 ab rep stosd
+ 00038 48 8b 8c 24 88
+ 16 00 00 mov rcx, QWORD PTR [rsp+5768]
+ 00040 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00047 48 33 c5 xor rax, rbp
+ 0004a 48 89 85 28 16
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00051 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0005d 90 npad 1
+
+; 5180 : stbi__zbuf a;
+; 5181 : a.zbuffer = (stbi_uc *)ibuffer;
+
+ 0005e 48 8b 85 60 16
+ 00 00 mov rax, QWORD PTR ibuffer$[rbp]
+ 00065 48 89 45 10 mov QWORD PTR a$[rbp], rax
+
+; 5182 : a.zbuffer_end = (stbi_uc *)ibuffer + ilen;
+
+ 00069 48 63 85 68 16
+ 00 00 movsxd rax, DWORD PTR ilen$[rbp]
+ 00070 48 8b 8d 60 16
+ 00 00 mov rcx, QWORD PTR ibuffer$[rbp]
+ 00077 48 03 c8 add rcx, rax
+ 0007a 48 8b c1 mov rax, rcx
+ 0007d 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
+
+; 5183 : if (stbi__do_zlib(&a, obuffer, olen, 0, 0))
+
+ 00081 c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 00089 45 33 c9 xor r9d, r9d
+ 0008c 44 8b 85 58 16
+ 00 00 mov r8d, DWORD PTR olen$[rbp]
+ 00093 48 8b 95 50 16
+ 00 00 mov rdx, QWORD PTR obuffer$[rbp]
+ 0009a 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
+ 0009e e8 00 00 00 00 call stbi__do_zlib
+ 000a3 85 c0 test eax, eax
+ 000a5 74 12 je SHORT $LN2@stbi_zlib_
+
+; 5184 : return (int)(a.zout - a.zout_start);
+
+ 000a7 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000ab 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
+ 000af 48 2b c8 sub rcx, rax
+ 000b2 48 8b c1 mov rax, rcx
+ 000b5 eb 07 jmp SHORT $LN1@stbi_zlib_
+ 000b7 eb 05 jmp SHORT $LN3@stbi_zlib_
+$LN2@stbi_zlib_:
+
+; 5185 : else
+; 5186 : return -1;
+
+ 000b9 b8 ff ff ff ff mov eax, -1
+$LN3@stbi_zlib_:
+$LN1@stbi_zlib_:
+
+; 5187 : }
+
+ 000be 48 8b f8 mov rdi, rax
+ 000c1 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 000c5 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_noheader_buffer$rtcFrameData
+ 000cc e8 00 00 00 00 call _RTC_CheckStackVars
+ 000d1 48 8b c7 mov rax, rdi
+ 000d4 48 8b 8d 28 16
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000db 48 33 cd xor rcx, rbp
+ 000de e8 00 00 00 00 call __security_check_cookie
+ 000e3 48 8d a5 38 16
+ 00 00 lea rsp, QWORD PTR [rbp+5688]
+ 000ea 5f pop rdi
+ 000eb 5d pop rbp
+ 000ec c3 ret 0
+stbi_zlib_decode_noheader_buffer ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_zlib_decode_noheader_malloc
+_TEXT SEGMENT
+a$ = 16
+p$ = 4152
+__$ArrayPad$ = 5704
+buffer$ = 5744
+len$ = 5752
+outlen$ = 5760
+stbi_zlib_decode_noheader_malloc PROC ; COMDAT
+
+; 5161 : {
+
+$LN7:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 b8 88 16 00 00 mov eax, 5768 ; 00001688H
+ 00015 e8 00 00 00 00 call __chkstk
+ 0001a 48 2b e0 sub rsp, rax
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 16 04 00 00 mov ecx, 1046 ; 00000416H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 a8
+ 16 00 00 mov rcx, QWORD PTR [rsp+5800]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 48 16
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 5162 : stbi__zbuf a;
+; 5163 : char *p = (char *)stbi__malloc(16384);
+
+ 00059 b9 00 40 00 00 mov ecx, 16384 ; 00004000H
+ 0005e e8 00 00 00 00 call stbi__malloc
+ 00063 48 89 85 38 10
+ 00 00 mov QWORD PTR p$[rbp], rax
+
+; 5164 : if (p == NULL)
+
+ 0006a 48 83 bd 38 10
+ 00 00 00 cmp QWORD PTR p$[rbp], 0
+ 00072 75 07 jne SHORT $LN2@stbi_zlib_
+
+; 5165 : return NULL;
+
+ 00074 33 c0 xor eax, eax
+ 00076 e9 81 00 00 00 jmp $LN1@stbi_zlib_
+$LN2@stbi_zlib_:
+
+; 5166 : a.zbuffer = (stbi_uc *)buffer;
+
+ 0007b 48 8b 85 70 16
+ 00 00 mov rax, QWORD PTR buffer$[rbp]
+ 00082 48 89 45 10 mov QWORD PTR a$[rbp], rax
+
+; 5167 : a.zbuffer_end = (stbi_uc *)buffer + len;
+
+ 00086 48 63 85 78 16
+ 00 00 movsxd rax, DWORD PTR len$[rbp]
+ 0008d 48 8b 8d 70 16
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 00094 48 03 c8 add rcx, rax
+ 00097 48 8b c1 mov rax, rcx
+ 0009a 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
+
+; 5168 : if (stbi__do_zlib(&a, p, 16384, 1, 0)) {
+
+ 0009e c7 44 24 20 00
+ 00 00 00 mov DWORD PTR [rsp+32], 0
+ 000a6 41 b9 01 00 00
+ 00 mov r9d, 1
+ 000ac 41 b8 00 40 00
+ 00 mov r8d, 16384 ; 00004000H
+ 000b2 48 8b 95 38 10
+ 00 00 mov rdx, QWORD PTR p$[rbp]
+ 000b9 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
+ 000bd e8 00 00 00 00 call stbi__do_zlib
+ 000c2 85 c0 test eax, eax
+ 000c4 74 29 je SHORT $LN3@stbi_zlib_
+
+; 5169 : if (outlen)
+
+ 000c6 48 83 bd 80 16
+ 00 00 00 cmp QWORD PTR outlen$[rbp], 0
+ 000ce 74 17 je SHORT $LN5@stbi_zlib_
+
+; 5170 : *outlen = (int)(a.zout - a.zout_start);
+
+ 000d0 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000d4 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
+ 000d8 48 2b c8 sub rcx, rax
+ 000db 48 8b c1 mov rax, rcx
+ 000de 48 8b 8d 80 16
+ 00 00 mov rcx, QWORD PTR outlen$[rbp]
+ 000e5 89 01 mov DWORD PTR [rcx], eax
+$LN5@stbi_zlib_:
+
+; 5171 : return a.zout_start;
+
+ 000e7 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000eb eb 0f jmp SHORT $LN1@stbi_zlib_
+
+; 5172 : } else {
+
+ 000ed eb 0d jmp SHORT $LN4@stbi_zlib_
+$LN3@stbi_zlib_:
+
+; 5173 : STBI_FREE(a.zout_start);
+
+ 000ef 48 8b 4d 38 mov rcx, QWORD PTR a$[rbp+40]
+ 000f3 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 000f9 90 npad 1
+
+; 5174 : return NULL;
+
+ 000fa 33 c0 xor eax, eax
+$LN4@stbi_zlib_:
+$LN1@stbi_zlib_:
+
+; 5175 : }
+; 5176 : }
+
+ 000fc 48 8b f8 mov rdi, rax
+ 000ff 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00103 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_noheader_malloc$rtcFrameData
+ 0010a e8 00 00 00 00 call _RTC_CheckStackVars
+ 0010f 48 8b c7 mov rax, rdi
+ 00112 48 8b 8d 48 16
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00119 48 33 cd xor rcx, rbp
+ 0011c e8 00 00 00 00 call __security_check_cookie
+ 00121 48 8d a5 58 16
+ 00 00 lea rsp, QWORD PTR [rbp+5720]
+ 00128 5f pop rdi
+ 00129 5d pop rbp
+ 0012a c3 ret 0
+stbi_zlib_decode_noheader_malloc ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_zlib_decode_buffer
+_TEXT SEGMENT
+a$ = 16
+__$ArrayPad$ = 5672
+obuffer$ = 5712
+olen$ = 5720
+ibuffer$ = 5728
+ilen$ = 5736
+stbi_zlib_decode_buffer PROC ; COMDAT
+
+; 5150 : {
+
+$LN5:
+ 00000 44 89 4c 24 20 mov DWORD PTR [rsp+32], r9d
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 b8 68 16 00 00 mov eax, 5736 ; 00001668H
+ 0001a e8 00 00 00 00 call __chkstk
+ 0001f 48 2b e0 sub rsp, rax
+ 00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 0002c b9 0e 04 00 00 mov ecx, 1038 ; 0000040eH
+ 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00036 f3 ab rep stosd
+ 00038 48 8b 8c 24 88
+ 16 00 00 mov rcx, QWORD PTR [rsp+5768]
+ 00040 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00047 48 33 c5 xor rax, rbp
+ 0004a 48 89 85 28 16
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00051 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0005d 90 npad 1
+
+; 5151 : stbi__zbuf a;
+; 5152 : a.zbuffer = (stbi_uc *)ibuffer;
+
+ 0005e 48 8b 85 60 16
+ 00 00 mov rax, QWORD PTR ibuffer$[rbp]
+ 00065 48 89 45 10 mov QWORD PTR a$[rbp], rax
+
+; 5153 : a.zbuffer_end = (stbi_uc *)ibuffer + ilen;
+
+ 00069 48 63 85 68 16
+ 00 00 movsxd rax, DWORD PTR ilen$[rbp]
+ 00070 48 8b 8d 60 16
+ 00 00 mov rcx, QWORD PTR ibuffer$[rbp]
+ 00077 48 03 c8 add rcx, rax
+ 0007a 48 8b c1 mov rax, rcx
+ 0007d 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
+
+; 5154 : if (stbi__do_zlib(&a, obuffer, olen, 0, 1))
+
+ 00081 c7 44 24 20 01
+ 00 00 00 mov DWORD PTR [rsp+32], 1
+ 00089 45 33 c9 xor r9d, r9d
+ 0008c 44 8b 85 58 16
+ 00 00 mov r8d, DWORD PTR olen$[rbp]
+ 00093 48 8b 95 50 16
+ 00 00 mov rdx, QWORD PTR obuffer$[rbp]
+ 0009a 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
+ 0009e e8 00 00 00 00 call stbi__do_zlib
+ 000a3 85 c0 test eax, eax
+ 000a5 74 12 je SHORT $LN2@stbi_zlib_
+
+; 5155 : return (int)(a.zout - a.zout_start);
+
+ 000a7 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000ab 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
+ 000af 48 2b c8 sub rcx, rax
+ 000b2 48 8b c1 mov rax, rcx
+ 000b5 eb 07 jmp SHORT $LN1@stbi_zlib_
+ 000b7 eb 05 jmp SHORT $LN3@stbi_zlib_
+$LN2@stbi_zlib_:
+
+; 5156 : else
+; 5157 : return -1;
+
+ 000b9 b8 ff ff ff ff mov eax, -1
+$LN3@stbi_zlib_:
+$LN1@stbi_zlib_:
+
+; 5158 : }
+
+ 000be 48 8b f8 mov rdi, rax
+ 000c1 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 000c5 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_buffer$rtcFrameData
+ 000cc e8 00 00 00 00 call _RTC_CheckStackVars
+ 000d1 48 8b c7 mov rax, rdi
+ 000d4 48 8b 8d 28 16
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000db 48 33 cd xor rcx, rbp
+ 000de e8 00 00 00 00 call __security_check_cookie
+ 000e3 48 8d a5 38 16
+ 00 00 lea rsp, QWORD PTR [rbp+5688]
+ 000ea 5f pop rdi
+ 000eb 5d pop rbp
+ 000ec c3 ret 0
+stbi_zlib_decode_buffer ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_zlib_decode_malloc
+_TEXT SEGMENT
+buffer$ = 224
+len$ = 232
+outlen$ = 240
+stbi_zlib_decode_malloc PROC ; COMDAT
+
+; 5125 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00028 90 npad 1
+
+; 5126 : return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen);
+
+ 00029 4c 8b 8d f0 00
+ 00 00 mov r9, QWORD PTR outlen$[rbp]
+ 00030 41 b8 00 40 00
+ 00 mov r8d, 16384 ; 00004000H
+ 00036 8b 95 e8 00 00
+ 00 mov edx, DWORD PTR len$[rbp]
+ 0003c 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 00043 e8 00 00 00 00 call stbi_zlib_decode_malloc_guesssize
+
+; 5127 : }
+
+ 00048 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0004f 5f pop rdi
+ 00050 5d pop rbp
+ 00051 c3 ret 0
+stbi_zlib_decode_malloc ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_zlib_decode_malloc_guesssize_headerflag
+_TEXT SEGMENT
+a$ = 16
+p$ = 4152
+__$ArrayPad$ = 5704
+buffer$ = 5744
+len$ = 5752
+initial_size$ = 5760
+outlen$ = 5768
+parse_header$ = 5776
+stbi_zlib_decode_malloc_guesssize_headerflag PROC ; COMDAT
+
+; 5132 : {
+
+$LN7:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 b8 88 16 00 00 mov eax, 5768 ; 00001688H
+ 0001a e8 00 00 00 00 call __chkstk
+ 0001f 48 2b e0 sub rsp, rax
+ 00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 0002c b9 16 04 00 00 mov ecx, 1046 ; 00000416H
+ 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00036 f3 ab rep stosd
+ 00038 48 8b 8c 24 a8
+ 16 00 00 mov rcx, QWORD PTR [rsp+5800]
+ 00040 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00047 48 33 c5 xor rax, rbp
+ 0004a 48 89 85 48 16
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00051 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0005d 90 npad 1
+
+; 5133 : stbi__zbuf a;
+; 5134 : char *p = (char *)stbi__malloc(initial_size);
+
+ 0005e 48 63 85 80 16
+ 00 00 movsxd rax, DWORD PTR initial_size$[rbp]
+ 00065 48 8b c8 mov rcx, rax
+ 00068 e8 00 00 00 00 call stbi__malloc
+ 0006d 48 89 85 38 10
+ 00 00 mov QWORD PTR p$[rbp], rax
+
+; 5135 : if (p == NULL)
+
+ 00074 48 83 bd 38 10
+ 00 00 00 cmp QWORD PTR p$[rbp], 0
+ 0007c 75 07 jne SHORT $LN2@stbi_zlib_
+
+; 5136 : return NULL;
+
+ 0007e 33 c0 xor eax, eax
+ 00080 e9 84 00 00 00 jmp $LN1@stbi_zlib_
+$LN2@stbi_zlib_:
+
+; 5137 : a.zbuffer = (stbi_uc *)buffer;
+
+ 00085 48 8b 85 70 16
+ 00 00 mov rax, QWORD PTR buffer$[rbp]
+ 0008c 48 89 45 10 mov QWORD PTR a$[rbp], rax
+
+; 5138 : a.zbuffer_end = (stbi_uc *)buffer + len;
+
+ 00090 48 63 85 78 16
+ 00 00 movsxd rax, DWORD PTR len$[rbp]
+ 00097 48 8b 8d 70 16
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 0009e 48 03 c8 add rcx, rax
+ 000a1 48 8b c1 mov rax, rcx
+ 000a4 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
+
+; 5139 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) {
+
+ 000a8 8b 85 90 16 00
+ 00 mov eax, DWORD PTR parse_header$[rbp]
+ 000ae 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 000b2 41 b9 01 00 00
+ 00 mov r9d, 1
+ 000b8 44 8b 85 80 16
+ 00 00 mov r8d, DWORD PTR initial_size$[rbp]
+ 000bf 48 8b 95 38 10
+ 00 00 mov rdx, QWORD PTR p$[rbp]
+ 000c6 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
+ 000ca e8 00 00 00 00 call stbi__do_zlib
+ 000cf 85 c0 test eax, eax
+ 000d1 74 29 je SHORT $LN3@stbi_zlib_
+
+; 5140 : if (outlen)
+
+ 000d3 48 83 bd 88 16
+ 00 00 00 cmp QWORD PTR outlen$[rbp], 0
+ 000db 74 17 je SHORT $LN5@stbi_zlib_
+
+; 5141 : *outlen = (int)(a.zout - a.zout_start);
+
+ 000dd 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000e1 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
+ 000e5 48 2b c8 sub rcx, rax
+ 000e8 48 8b c1 mov rax, rcx
+ 000eb 48 8b 8d 88 16
+ 00 00 mov rcx, QWORD PTR outlen$[rbp]
+ 000f2 89 01 mov DWORD PTR [rcx], eax
+$LN5@stbi_zlib_:
+
+; 5142 : return a.zout_start;
+
+ 000f4 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000f8 eb 0f jmp SHORT $LN1@stbi_zlib_
+
+; 5143 : } else {
+
+ 000fa eb 0d jmp SHORT $LN4@stbi_zlib_
+$LN3@stbi_zlib_:
+
+; 5144 : STBI_FREE(a.zout_start);
+
+ 000fc 48 8b 4d 38 mov rcx, QWORD PTR a$[rbp+40]
+ 00100 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00106 90 npad 1
+
+; 5145 : return NULL;
+
+ 00107 33 c0 xor eax, eax
+$LN4@stbi_zlib_:
+$LN1@stbi_zlib_:
+
+; 5146 : }
+; 5147 : }
+
+ 00109 48 8b f8 mov rdi, rax
+ 0010c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00110 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_malloc_guesssize_headerflag$rtcFrameData
+ 00117 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0011c 48 8b c7 mov rax, rdi
+ 0011f 48 8b 8d 48 16
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00126 48 33 cd xor rcx, rbp
+ 00129 e8 00 00 00 00 call __security_check_cookie
+ 0012e 48 8d a5 58 16
+ 00 00 lea rsp, QWORD PTR [rbp+5720]
+ 00135 5f pop rdi
+ 00136 5d pop rbp
+ 00137 c3 ret 0
+stbi_zlib_decode_malloc_guesssize_headerflag ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_zlib_decode_malloc_guesssize
+_TEXT SEGMENT
+a$ = 16
+p$ = 4152
+__$ArrayPad$ = 5704
+buffer$ = 5744
+len$ = 5752
+initial_size$ = 5760
+outlen$ = 5768
+stbi_zlib_decode_malloc_guesssize PROC ; COMDAT
+
+; 5107 : {
+
+$LN7:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 b8 88 16 00 00 mov eax, 5768 ; 00001688H
+ 0001a e8 00 00 00 00 call __chkstk
+ 0001f 48 2b e0 sub rsp, rax
+ 00022 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00027 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 0002c b9 16 04 00 00 mov ecx, 1046 ; 00000416H
+ 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00036 f3 ab rep stosd
+ 00038 48 8b 8c 24 a8
+ 16 00 00 mov rcx, QWORD PTR [rsp+5800]
+ 00040 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00047 48 33 c5 xor rax, rbp
+ 0004a 48 89 85 48 16
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00051 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0005d 90 npad 1
+
+; 5108 : stbi__zbuf a;
+; 5109 : char *p = (char *)stbi__malloc(initial_size);
+
+ 0005e 48 63 85 80 16
+ 00 00 movsxd rax, DWORD PTR initial_size$[rbp]
+ 00065 48 8b c8 mov rcx, rax
+ 00068 e8 00 00 00 00 call stbi__malloc
+ 0006d 48 89 85 38 10
+ 00 00 mov QWORD PTR p$[rbp], rax
+
+; 5110 : if (p == NULL)
+
+ 00074 48 83 bd 38 10
+ 00 00 00 cmp QWORD PTR p$[rbp], 0
+ 0007c 75 07 jne SHORT $LN2@stbi_zlib_
+
+; 5111 : return NULL;
+
+ 0007e 33 c0 xor eax, eax
+ 00080 e9 82 00 00 00 jmp $LN1@stbi_zlib_
+$LN2@stbi_zlib_:
+
+; 5112 : a.zbuffer = (stbi_uc *)buffer;
+
+ 00085 48 8b 85 70 16
+ 00 00 mov rax, QWORD PTR buffer$[rbp]
+ 0008c 48 89 45 10 mov QWORD PTR a$[rbp], rax
+
+; 5113 : a.zbuffer_end = (stbi_uc *)buffer + len;
+
+ 00090 48 63 85 78 16
+ 00 00 movsxd rax, DWORD PTR len$[rbp]
+ 00097 48 8b 8d 70 16
+ 00 00 mov rcx, QWORD PTR buffer$[rbp]
+ 0009e 48 03 c8 add rcx, rax
+ 000a1 48 8b c1 mov rax, rcx
+ 000a4 48 89 45 18 mov QWORD PTR a$[rbp+8], rax
+
+; 5114 : if (stbi__do_zlib(&a, p, initial_size, 1, 1)) {
+
+ 000a8 c7 44 24 20 01
+ 00 00 00 mov DWORD PTR [rsp+32], 1
+ 000b0 41 b9 01 00 00
+ 00 mov r9d, 1
+ 000b6 44 8b 85 80 16
+ 00 00 mov r8d, DWORD PTR initial_size$[rbp]
+ 000bd 48 8b 95 38 10
+ 00 00 mov rdx, QWORD PTR p$[rbp]
+ 000c4 48 8d 4d 10 lea rcx, QWORD PTR a$[rbp]
+ 000c8 e8 00 00 00 00 call stbi__do_zlib
+ 000cd 85 c0 test eax, eax
+ 000cf 74 29 je SHORT $LN3@stbi_zlib_
+
+; 5115 : if (outlen)
+
+ 000d1 48 83 bd 88 16
+ 00 00 00 cmp QWORD PTR outlen$[rbp], 0
+ 000d9 74 17 je SHORT $LN5@stbi_zlib_
+
+; 5116 : *outlen = (int)(a.zout - a.zout_start);
+
+ 000db 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000df 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32]
+ 000e3 48 2b c8 sub rcx, rax
+ 000e6 48 8b c1 mov rax, rcx
+ 000e9 48 8b 8d 88 16
+ 00 00 mov rcx, QWORD PTR outlen$[rbp]
+ 000f0 89 01 mov DWORD PTR [rcx], eax
+$LN5@stbi_zlib_:
+
+; 5117 : return a.zout_start;
+
+ 000f2 48 8b 45 38 mov rax, QWORD PTR a$[rbp+40]
+ 000f6 eb 0f jmp SHORT $LN1@stbi_zlib_
+
+; 5118 : } else {
+
+ 000f8 eb 0d jmp SHORT $LN4@stbi_zlib_
+$LN3@stbi_zlib_:
+
+; 5119 : STBI_FREE(a.zout_start);
+
+ 000fa 48 8b 4d 38 mov rcx, QWORD PTR a$[rbp+40]
+ 000fe ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 00104 90 npad 1
+
+; 5120 : return NULL;
+
+ 00105 33 c0 xor eax, eax
+$LN4@stbi_zlib_:
+$LN1@stbi_zlib_:
+
+; 5121 : }
+; 5122 : }
+
+ 00107 48 8b f8 mov rdi, rax
+ 0010a 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 0010e 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_zlib_decode_malloc_guesssize$rtcFrameData
+ 00115 e8 00 00 00 00 call _RTC_CheckStackVars
+ 0011a 48 8b c7 mov rax, rdi
+ 0011d 48 8b 8d 48 16
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00124 48 33 cd xor rcx, rbp
+ 00127 e8 00 00 00 00 call __security_check_cookie
+ 0012c 48 8d a5 58 16
+ 00 00 lea rsp, QWORD PTR [rbp+5720]
+ 00133 5f pop rdi
+ 00134 5d pop rbp
+ 00135 c3 ret 0
+stbi_zlib_decode_malloc_guesssize ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_set_flip_vertically_on_load_thread
+_TEXT SEGMENT
+flag_true_if_should_flip$ = 224
+stbi_set_flip_vertically_on_load_thread PROC ; COMDAT
+
+; 1160 : {
+
+$LN3:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 1161 : stbi__vertically_flip_on_load_local = flag_true_if_should_flip;
+
+ 0001f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
+ 00024 8b c0 mov eax, eax
+ 00026 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0002c 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00035 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00039 8b 95 e0 00 00
+ 00 mov edx, DWORD PTR flag_true_if_should_flip$[rbp]
+ 0003f 89 14 08 mov DWORD PTR [rax+rcx], edx
+
+; 1162 : stbi__vertically_flip_on_load_set = 1;
+
+ 00042 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
+ 00047 8b c0 mov eax, eax
+ 00049 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0004f 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00058 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 0005c c7 04 08 01 00
+ 00 00 mov DWORD PTR [rax+rcx], 1
+
+; 1163 : }
+
+ 00063 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0006a 5f pop rdi
+ 0006b 5d pop rbp
+ 0006c c3 ret 0
+stbi_set_flip_vertically_on_load_thread ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_convert_iphone_png_to_rgb_thread
+_TEXT SEGMENT
+flag_true_if_should_convert$ = 224
+stbi_convert_iphone_png_to_rgb_thread PROC ; COMDAT
+
+; 5631 : {
+
+$LN3:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 5632 : stbi__de_iphone_flag_local = flag_true_if_should_convert;
+
+ 0001f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_local
+ 00024 8b c0 mov eax, eax
+ 00026 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0002c 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00035 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00039 8b 95 e0 00 00
+ 00 mov edx, DWORD PTR flag_true_if_should_convert$[rbp]
+ 0003f 89 14 08 mov DWORD PTR [rax+rcx], edx
+
+; 5633 : stbi__de_iphone_flag_set = 1;
+
+ 00042 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_set
+ 00047 8b c0 mov eax, eax
+ 00049 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0004f 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00058 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 0005c c7 04 08 01 00
+ 00 00 mov DWORD PTR [rax+rcx], 1
+
+; 5634 : }
+
+ 00063 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0006a 5f pop rdi
+ 0006b 5d pop rbp
+ 0006c c3 ret 0
+stbi_convert_iphone_png_to_rgb_thread ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_set_unpremultiply_on_load_thread
+_TEXT SEGMENT
+flag_true_if_should_unpremultiply$ = 224
+stbi_set_unpremultiply_on_load_thread PROC ; COMDAT
+
+; 5625 : {
+
+$LN3:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 5626 : stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply;
+
+ 0001f b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_local
+ 00024 8b c0 mov eax, eax
+ 00026 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0002c 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00035 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00039 8b 95 e0 00 00
+ 00 mov edx, DWORD PTR flag_true_if_should_unpremultiply$[rbp]
+ 0003f 89 14 08 mov DWORD PTR [rax+rcx], edx
+
+; 5627 : stbi__unpremultiply_on_load_set = 1;
+
+ 00042 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__unpremultiply_on_load_set
+ 00047 8b c0 mov eax, eax
+ 00049 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 0004f 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00058 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 0005c c7 04 08 01 00
+ 00 00 mov DWORD PTR [rax+rcx], 1
+
+; 5628 : }
+
+ 00063 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 0006a 5f pop rdi
+ 0006b 5d pop rbp
+ 0006c c3 ret 0
+stbi_set_unpremultiply_on_load_thread ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_set_flip_vertically_on_load
+_TEXT SEGMENT
+flag_true_if_should_flip$ = 224
+stbi_set_flip_vertically_on_load PROC ; COMDAT
+
+; 1150 : {
+
+$LN3:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 1151 : stbi__vertically_flip_on_load_global = flag_true_if_should_flip;
+
+ 0001f 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR flag_true_if_should_flip$[rbp]
+ 00025 89 05 00 00 00
+ 00 mov DWORD PTR stbi__vertically_flip_on_load_global, eax
+
+; 1152 : }
+
+ 0002b 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00032 5f pop rdi
+ 00033 5d pop rbp
+ 00034 c3 ret 0
+stbi_set_flip_vertically_on_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_convert_iphone_png_to_rgb
+_TEXT SEGMENT
+flag_true_if_should_convert$ = 224
+stbi_convert_iphone_png_to_rgb PROC ; COMDAT
+
+; 5613 : {
+
+$LN3:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 5614 : stbi__de_iphone_flag_global = flag_true_if_should_convert;
+
+ 0001f 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR flag_true_if_should_convert$[rbp]
+ 00025 89 05 00 00 00
+ 00 mov DWORD PTR stbi__de_iphone_flag_global, eax
+
+; 5615 : }
+
+ 0002b 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00032 5f pop rdi
+ 00033 5d pop rbp
+ 00034 c3 ret 0
+stbi_convert_iphone_png_to_rgb ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_set_unpremultiply_on_load
+_TEXT SEGMENT
+flag_true_if_should_unpremultiply$ = 224
+stbi_set_unpremultiply_on_load PROC ; COMDAT
+
+; 5608 : {
+
+$LN3:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001e 90 npad 1
+
+; 5609 : stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply;
+
+ 0001f 8b 85 e0 00 00
+ 00 mov eax, DWORD PTR flag_true_if_should_unpremultiply$[rbp]
+ 00025 89 05 00 00 00
+ 00 mov DWORD PTR stbi__unpremultiply_on_load_global, eax
+
+; 5610 : }
+
+ 0002b 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00032 5f pop rdi
+ 00033 5d pop rbp
+ 00034 c3 ret 0
+stbi_set_unpremultiply_on_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_16_bit_from_file
+_TEXT SEGMENT
+r$ = 4
+s$ = 48
+pos$ = 292
+__$ArrayPad$ = 504
+f$ = 544
+stbi_is_16_bit_from_file PROC ; COMDAT
+
+; 8663 : {
+
+$LN3:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 02
+ 00 00 sub rsp, 552 ; 00000228H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00018 b9 52 00 00 00 mov ecx, 82 ; 00000052H
+ 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00022 f3 ab rep stosd
+ 00024 48 8b 8c 24 48
+ 02 00 00 mov rcx, QWORD PTR [rsp+584]
+ 0002c 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00033 48 33 c5 xor rax, rbp
+ 00036 48 89 85 f8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0003d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00049 90 npad 1
+
+; 8664 : int r;
+; 8665 : stbi__context s;
+; 8666 : long pos = ftell(f);
+
+ 0004a 48 8b 8d 20 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 00051 ff 15 00 00 00
+ 00 call QWORD PTR __imp_ftell
+ 00057 89 85 24 01 00
+ 00 mov DWORD PTR pos$[rbp], eax
+
+; 8667 : stbi__start_file(&s, f);
+
+ 0005d 48 8b 95 20 02
+ 00 00 mov rdx, QWORD PTR f$[rbp]
+ 00064 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 00068 e8 00 00 00 00 call stbi__start_file
+ 0006d 90 npad 1
+
+; 8668 : r = stbi__is_16_main(&s);
+
+ 0006e 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 00072 e8 00 00 00 00 call stbi__is_16_main
+ 00077 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 8669 : fseek(f, pos, SEEK_SET);
+
+ 0007a 45 33 c0 xor r8d, r8d
+ 0007d 8b 95 24 01 00
+ 00 mov edx, DWORD PTR pos$[rbp]
+ 00083 48 8b 8d 20 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 0008a ff 15 00 00 00
+ 00 call QWORD PTR __imp_fseek
+ 00090 90 npad 1
+
+; 8670 : return r;
+
+ 00091 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 8671 : }
+
+ 00094 8b f8 mov edi, eax
+ 00096 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 0009a 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_is_16_bit_from_file$rtcFrameData
+ 000a1 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000a6 8b c7 mov eax, edi
+ 000a8 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000af 48 33 cd xor rcx, rbp
+ 000b2 e8 00 00 00 00 call __security_check_cookie
+ 000b7 48 8d a5 08 02
+ 00 00 lea rsp, QWORD PTR [rbp+520]
+ 000be 5f pop rdi
+ 000bf 5d pop rbp
+ 000c0 c3 ret 0
+stbi_is_16_bit_from_file ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_16_bit
+_TEXT SEGMENT
+f$ = 8
+result$ = 36
+filename$ = 288
+stbi_is_16_bit PROC ; COMDAT
+
+; 8652 : {
+
+$LN4:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 8653 : FILE *f = stbi__fopen(filename, "rb");
+
+ 00020 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
+ 00027 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR filename$[rbp]
+ 0002e e8 00 00 00 00 call stbi__fopen
+ 00033 48 89 45 08 mov QWORD PTR f$[rbp], rax
+
+; 8654 : int result;
+; 8655 : if (!f)
+
+ 00037 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
+ 0003c 75 0e jne SHORT $LN2@stbi_is_16
+
+; 8656 : return stbi__err("can't fopen", "Unable to open file");
+
+ 0003e 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
+ 00045 e8 00 00 00 00 call stbi__err
+ 0004a eb 1a jmp SHORT $LN1@stbi_is_16
+$LN2@stbi_is_16:
+
+; 8657 : result = stbi_is_16_bit_from_file(f);
+
+ 0004c 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 00050 e8 00 00 00 00 call stbi_is_16_bit_from_file
+ 00055 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 8658 : fclose(f);
+
+ 00058 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 0005c ff 15 00 00 00
+ 00 call QWORD PTR __imp_fclose
+ 00062 90 npad 1
+
+; 8659 : return result;
+
+ 00063 8b 45 24 mov eax, DWORD PTR result$[rbp]
+$LN1@stbi_is_16:
+
+; 8660 : }
+
+ 00066 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 0006d 5f pop rdi
+ 0006e 5d pop rbp
+ 0006f c3 ret 0
+stbi_is_16_bit ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_info_from_file
+_TEXT SEGMENT
+r$ = 4
+s$ = 48
+pos$ = 292
+__$ArrayPad$ = 504
+f$ = 544
+x$ = 552
+y$ = 560
+comp$ = 568
+stbi_info_from_file PROC ; COMDAT
+
+; 8641 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 28 02
+ 00 00 sub rsp, 552 ; 00000228H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 52 00 00 00 mov ecx, 82 ; 00000052H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 48
+ 02 00 00 mov rcx, QWORD PTR [rsp+584]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 f8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8642 : int r;
+; 8643 : stbi__context s;
+; 8644 : long pos = ftell(f);
+
+ 00059 48 8b 8d 20 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 00060 ff 15 00 00 00
+ 00 call QWORD PTR __imp_ftell
+ 00066 89 85 24 01 00
+ 00 mov DWORD PTR pos$[rbp], eax
+
+; 8645 : stbi__start_file(&s, f);
+
+ 0006c 48 8b 95 20 02
+ 00 00 mov rdx, QWORD PTR f$[rbp]
+ 00073 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 00077 e8 00 00 00 00 call stbi__start_file
+ 0007c 90 npad 1
+
+; 8646 : r = stbi__info_main(&s, x, y, comp);
+
+ 0007d 4c 8b 8d 38 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00084 4c 8b 85 30 02
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0008b 48 8b 95 28 02
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00092 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 00096 e8 00 00 00 00 call stbi__info_main
+ 0009b 89 45 04 mov DWORD PTR r$[rbp], eax
+
+; 8647 : fseek(f, pos, SEEK_SET);
+
+ 0009e 45 33 c0 xor r8d, r8d
+ 000a1 8b 95 24 01 00
+ 00 mov edx, DWORD PTR pos$[rbp]
+ 000a7 48 8b 8d 20 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 000ae ff 15 00 00 00
+ 00 call QWORD PTR __imp_fseek
+ 000b4 90 npad 1
+
+; 8648 : return r;
+
+ 000b5 8b 45 04 mov eax, DWORD PTR r$[rbp]
+
+; 8649 : }
+
+ 000b8 8b f8 mov edi, eax
+ 000ba 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 000be 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_info_from_file$rtcFrameData
+ 000c5 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ca 8b c7 mov eax, edi
+ 000cc 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000d3 48 33 cd xor rcx, rbp
+ 000d6 e8 00 00 00 00 call __security_check_cookie
+ 000db 48 8d a5 08 02
+ 00 00 lea rsp, QWORD PTR [rbp+520]
+ 000e2 5f pop rdi
+ 000e3 5d pop rbp
+ 000e4 c3 ret 0
+stbi_info_from_file ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_info
+_TEXT SEGMENT
+f$ = 8
+result$ = 36
+filename$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+stbi_info PROC ; COMDAT
+
+; 8630 : {
+
+$LN4:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 8631 : FILE *f = stbi__fopen(filename, "rb");
+
+ 0002f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
+ 00036 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR filename$[rbp]
+ 0003d e8 00 00 00 00 call stbi__fopen
+ 00042 48 89 45 08 mov QWORD PTR f$[rbp], rax
+
+; 8632 : int result;
+; 8633 : if (!f)
+
+ 00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
+ 0004b 75 0e jne SHORT $LN2@stbi_info
+
+; 8634 : return stbi__err("can't fopen", "Unable to open file");
+
+ 0004d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
+ 00054 e8 00 00 00 00 call stbi__err
+ 00059 eb 2f jmp SHORT $LN1@stbi_info
+$LN2@stbi_info:
+
+; 8635 : result = stbi_info_from_file(f, x, y, comp);
+
+ 0005b 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00062 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00069 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00070 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 00074 e8 00 00 00 00 call stbi_info_from_file
+ 00079 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 8636 : fclose(f);
+
+ 0007c 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 00080 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fclose
+ 00086 90 npad 1
+
+; 8637 : return result;
+
+ 00087 8b 45 24 mov eax, DWORD PTR result$[rbp]
+$LN1@stbi_info:
+
+; 8638 : }
+
+ 0008a 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00091 5f pop rdi
+ 00092 5d pop rbp
+ 00093 c3 ret 0
+stbi_info ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_16_bit_from_callbacks
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+c$ = 480
+user$ = 488
+stbi_is_16_bit_from_callbacks PROC ; COMDAT
+
+; 8697 : {
+
+$LN3:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001d b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00027 f3 ab rep stosd
+ 00029 48 8b 8c 24 08
+ 02 00 00 mov rcx, QWORD PTR [rsp+520]
+ 00031 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00038 48 33 c5 xor rax, rbp
+ 0003b 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00042 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004e 90 npad 1
+
+; 8698 : stbi__context s;
+; 8699 : stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user);
+
+ 0004f 4c 8b 85 e8 01
+ 00 00 mov r8, QWORD PTR user$[rbp]
+ 00056 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR c$[rbp]
+ 0005d 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00061 e8 00 00 00 00 call stbi__start_callbacks
+ 00066 90 npad 1
+
+; 8700 : return stbi__is_16_main(&s);
+
+ 00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__is_16_main
+
+; 8701 : }
+
+ 00070 48 8b f8 mov rdi, rax
+ 00073 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00077 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_is_16_bit_from_callbacks$rtcFrameData
+ 0007e e8 00 00 00 00 call _RTC_CheckStackVars
+ 00083 48 8b c7 mov rax, rdi
+ 00086 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0008d 48 33 cd xor rcx, rbp
+ 00090 e8 00 00 00 00 call __security_check_cookie
+ 00095 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 0009c 5f pop rdi
+ 0009d 5d pop rbp
+ 0009e c3 ret 0
+stbi_is_16_bit_from_callbacks ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_16_bit_from_memory
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+buffer$ = 480
+len$ = 488
+stbi_is_16_bit_from_memory PROC ; COMDAT
+
+; 8690 : {
+
+$LN3:
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001c b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00026 f3 ab rep stosd
+ 00028 48 8b 8c 24 08
+ 02 00 00 mov rcx, QWORD PTR [rsp+520]
+ 00030 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00037 48 33 c5 xor rax, rbp
+ 0003a 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00041 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004d 90 npad 1
+
+; 8691 : stbi__context s;
+; 8692 : stbi__start_mem(&s, buffer, len);
+
+ 0004e 44 8b 85 e8 01
+ 00 00 mov r8d, DWORD PTR len$[rbp]
+ 00055 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 0005c 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00060 e8 00 00 00 00 call stbi__start_mem
+ 00065 90 npad 1
+
+; 8693 : return stbi__is_16_main(&s);
+
+ 00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__is_16_main
+
+; 8694 : }
+
+ 0006f 48 8b f8 mov rdi, rax
+ 00072 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00076 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_is_16_bit_from_memory$rtcFrameData
+ 0007d e8 00 00 00 00 call _RTC_CheckStackVars
+ 00082 48 8b c7 mov rax, rdi
+ 00085 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0008c 48 33 cd xor rcx, rbp
+ 0008f e8 00 00 00 00 call __security_check_cookie
+ 00094 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 0009b 5f pop rdi
+ 0009c 5d pop rbp
+ 0009d c3 ret 0
+stbi_is_16_bit_from_memory ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_info_from_callbacks
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+c$ = 480
+user$ = 488
+x$ = 496
+y$ = 504
+comp$ = 512
+stbi_info_from_callbacks PROC ; COMDAT
+
+; 8683 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 08
+ 02 00 00 mov rcx, QWORD PTR [rsp+520]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 8684 : stbi__context s;
+; 8685 : stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user);
+
+ 00059 4c 8b 85 e8 01
+ 00 00 mov r8, QWORD PTR user$[rbp]
+ 00060 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR c$[rbp]
+ 00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__start_callbacks
+ 00070 90 npad 1
+
+; 8686 : return stbi__info_main(&s, x, y, comp);
+
+ 00071 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00078 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0007f 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00086 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0008a e8 00 00 00 00 call stbi__info_main
+
+; 8687 : }
+
+ 0008f 48 8b f8 mov rdi, rax
+ 00092 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00096 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_info_from_callbacks$rtcFrameData
+ 0009d e8 00 00 00 00 call _RTC_CheckStackVars
+ 000a2 48 8b c7 mov rax, rdi
+ 000a5 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000ac 48 33 cd xor rcx, rbp
+ 000af e8 00 00 00 00 call __security_check_cookie
+ 000b4 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000bb 5f pop rdi
+ 000bc 5d pop rbp
+ 000bd c3 ret 0
+stbi_info_from_callbacks ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_info_from_memory
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+buffer$ = 480
+len$ = 488
+x$ = 496
+y$ = 504
+comp$ = 512
+stbi_info_from_memory PROC ; COMDAT
+
+; 8675 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 0001c 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00021 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 48 8b 8c 24 08
+ 02 00 00 mov rcx, QWORD PTR [rsp+520]
+ 0003a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00041 48 33 c5 xor rax, rbp
+ 00044 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00057 90 npad 1
+
+; 8676 : stbi__context s;
+; 8677 : stbi__start_mem(&s, buffer, len);
+
+ 00058 44 8b 85 e8 01
+ 00 00 mov r8d, DWORD PTR len$[rbp]
+ 0005f 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__start_mem
+ 0006f 90 npad 1
+
+; 8678 : return stbi__info_main(&s, x, y, comp);
+
+ 00070 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00077 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 0007e 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00085 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00089 e8 00 00 00 00 call stbi__info_main
+
+; 8679 : }
+
+ 0008e 48 8b f8 mov rdi, rax
+ 00091 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00095 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_info_from_memory$rtcFrameData
+ 0009c e8 00 00 00 00 call _RTC_CheckStackVars
+ 000a1 48 8b c7 mov rax, rdi
+ 000a4 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000ab 48 33 cd xor rcx, rbp
+ 000ae e8 00 00 00 00 call __security_check_cookie
+ 000b3 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000ba 5f pop rdi
+ 000bb 5d pop rbp
+ 000bc c3 ret 0
+stbi_info_from_memory ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_image_free
+_TEXT SEGMENT
+retval_from_stbi_load$ = 224
+stbi_image_free PROC ; COMDAT
+
+; 1135 : {
+
+$LN3:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1136 : STBI_FREE(retval_from_stbi_load);
+
+ 00020 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR retval_from_stbi_load$[rbp]
+ 00027 ff 15 00 00 00
+ 00 call QWORD PTR __imp_free
+ 0002d 90 npad 1
+
+; 1137 : }
+
+ 0002e 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00035 5f pop rdi
+ 00036 5d pop rbp
+ 00037 c3 ret 0
+stbi_image_free ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_failure_reason
+_TEXT SEGMENT
+stbi_failure_reason PROC ; COMDAT
+
+; 991 : {
+
+$LN3:
+ 00000 40 55 push rbp
+ 00002 57 push rdi
+ 00003 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0000f 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001b 90 npad 1
+
+; 992 : return stbi__g_failure_reason;
+
+ 0001c b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__g_failure_reason
+ 00021 8b c0 mov eax, eax
+ 00023 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 00029 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 00032 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 00036 48 8b 04 08 mov rax, QWORD PTR [rax+rcx]
+
+; 993 : }
+
+ 0003a 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00041 5f pop rdi
+ 00042 5d pop rbp
+ 00043 c3 ret 0
+stbi_failure_reason ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_hdr_from_file
+_TEXT SEGMENT
+pos$ = 4
+res$ = 36
+s$ = 80
+__$ArrayPad$ = 504
+f$ = 544
+stbi_is_hdr_from_file PROC ; COMDAT
+
+; 1611 : {
+
+$LN3:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 02
+ 00 00 sub rsp, 552 ; 00000228H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00018 b9 52 00 00 00 mov ecx, 82 ; 00000052H
+ 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00022 f3 ab rep stosd
+ 00024 48 8b 8c 24 48
+ 02 00 00 mov rcx, QWORD PTR [rsp+584]
+ 0002c 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00033 48 33 c5 xor rax, rbp
+ 00036 48 89 85 f8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0003d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00049 90 npad 1
+
+; 1612 : #ifndef STBI_NO_HDR
+; 1613 : long pos = ftell(f);
+
+ 0004a 48 8b 8d 20 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 00051 ff 15 00 00 00
+ 00 call QWORD PTR __imp_ftell
+ 00057 89 45 04 mov DWORD PTR pos$[rbp], eax
+
+; 1614 : int res;
+; 1615 : stbi__context s;
+; 1616 : stbi__start_file(&s, f);
+
+ 0005a 48 8b 95 20 02
+ 00 00 mov rdx, QWORD PTR f$[rbp]
+ 00061 48 8d 4d 50 lea rcx, QWORD PTR s$[rbp]
+ 00065 e8 00 00 00 00 call stbi__start_file
+ 0006a 90 npad 1
+
+; 1617 : res = stbi__hdr_test(&s);
+
+ 0006b 48 8d 4d 50 lea rcx, QWORD PTR s$[rbp]
+ 0006f e8 00 00 00 00 call stbi__hdr_test
+ 00074 89 45 24 mov DWORD PTR res$[rbp], eax
+
+; 1618 : fseek(f, pos, SEEK_SET);
+
+ 00077 45 33 c0 xor r8d, r8d
+ 0007a 8b 55 04 mov edx, DWORD PTR pos$[rbp]
+ 0007d 48 8b 8d 20 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 00084 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fseek
+ 0008a 90 npad 1
+
+; 1619 : return res;
+
+ 0008b 8b 45 24 mov eax, DWORD PTR res$[rbp]
+
+; 1620 : #else
+; 1621 : STBI_NOTUSED(f);
+; 1622 : return 0;
+; 1623 : #endif
+; 1624 : }
+
+ 0008e 8b f8 mov edi, eax
+ 00090 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00094 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_is_hdr_from_file$rtcFrameData
+ 0009b e8 00 00 00 00 call _RTC_CheckStackVars
+ 000a0 8b c7 mov eax, edi
+ 000a2 48 8b 8d f8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000a9 48 33 cd xor rcx, rbp
+ 000ac e8 00 00 00 00 call __security_check_cookie
+ 000b1 48 8d a5 08 02
+ 00 00 lea rsp, QWORD PTR [rbp+520]
+ 000b8 5f pop rdi
+ 000b9 5d pop rbp
+ 000ba c3 ret 0
+stbi_is_hdr_from_file ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_hdr
+_TEXT SEGMENT
+f$ = 8
+result$ = 36
+filename$ = 288
+stbi_is_hdr PROC ; COMDAT
+
+; 1600 : {
+
+$LN4:
+ 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00005 55 push rbp
+ 00006 57 push rdi
+ 00007 48 81 ec 28 01
+ 00 00 sub rsp, 296 ; 00000128H
+ 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00013 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0001f 90 npad 1
+
+; 1601 : FILE *f = stbi__fopen(filename, "rb");
+
+ 00020 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
+ 00027 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR filename$[rbp]
+ 0002e e8 00 00 00 00 call stbi__fopen
+ 00033 48 89 45 08 mov QWORD PTR f$[rbp], rax
+
+; 1602 : int result = 0;
+
+ 00037 c7 45 24 00 00
+ 00 00 mov DWORD PTR result$[rbp], 0
+
+; 1603 : if (f) {
+
+ 0003e 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
+ 00043 74 17 je SHORT $LN2@stbi_is_hd
+
+; 1604 : result = stbi_is_hdr_from_file(f);
+
+ 00045 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 00049 e8 00 00 00 00 call stbi_is_hdr_from_file
+ 0004e 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 1605 : fclose(f);
+
+ 00051 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 00055 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fclose
+ 0005b 90 npad 1
+$LN2@stbi_is_hd:
+
+; 1606 : }
+; 1607 : return result;
+
+ 0005c 8b 45 24 mov eax, DWORD PTR result$[rbp]
+
+; 1608 : }
+
+ 0005f 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 00066 5f pop rdi
+ 00067 5d pop rbp
+ 00068 c3 ret 0
+stbi_is_hdr ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_hdr_from_memory
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+buffer$ = 480
+len$ = 488
+stbi_is_hdr_from_memory PROC ; COMDAT
+
+; 1586 : {
+
+$LN3:
+ 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00009 55 push rbp
+ 0000a 57 push rdi
+ 0000b 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001c b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00026 f3 ab rep stosd
+ 00028 48 8b 8c 24 08
+ 02 00 00 mov rcx, QWORD PTR [rsp+520]
+ 00030 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00037 48 33 c5 xor rax, rbp
+ 0003a 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00041 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004d 90 npad 1
+
+; 1587 : #ifndef STBI_NO_HDR
+; 1588 : stbi__context s;
+; 1589 : stbi__start_mem(&s, buffer, len);
+
+ 0004e 44 8b 85 e8 01
+ 00 00 mov r8d, DWORD PTR len$[rbp]
+ 00055 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 0005c 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00060 e8 00 00 00 00 call stbi__start_mem
+ 00065 90 npad 1
+
+; 1590 : return stbi__hdr_test(&s);
+
+ 00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__hdr_test
+
+; 1591 : #else
+; 1592 : STBI_NOTUSED(buffer);
+; 1593 : STBI_NOTUSED(len);
+; 1594 : return 0;
+; 1595 : #endif
+; 1596 : }
+
+ 0006f 48 8b f8 mov rdi, rax
+ 00072 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00076 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_is_hdr_from_memory$rtcFrameData
+ 0007d e8 00 00 00 00 call _RTC_CheckStackVars
+ 00082 48 8b c7 mov rax, rdi
+ 00085 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0008c 48 33 cd xor rcx, rbp
+ 0008f e8 00 00 00 00 call __security_check_cookie
+ 00094 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 0009b 5f pop rdi
+ 0009c 5d pop rbp
+ 0009d c3 ret 0
+stbi_is_hdr_from_memory ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_is_hdr_from_callbacks
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+clbk$ = 480
+user$ = 488
+stbi_is_hdr_from_callbacks PROC ; COMDAT
+
+; 1628 : {
+
+$LN3:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec e8 01
+ 00 00 sub rsp, 488 ; 000001e8H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 0001d b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00027 f3 ab rep stosd
+ 00029 48 8b 8c 24 08
+ 02 00 00 mov rcx, QWORD PTR [rsp+520]
+ 00031 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00038 48 33 c5 xor rax, rbp
+ 0003b 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 00042 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0004e 90 npad 1
+
+; 1629 : #ifndef STBI_NO_HDR
+; 1630 : stbi__context s;
+; 1631 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
+
+ 0004f 4c 8b 85 e8 01
+ 00 00 mov r8, QWORD PTR user$[rbp]
+ 00056 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR clbk$[rbp]
+ 0005d 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00061 e8 00 00 00 00 call stbi__start_callbacks
+ 00066 90 npad 1
+
+; 1632 : return stbi__hdr_test(&s);
+
+ 00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__hdr_test
+
+; 1633 : #else
+; 1634 : STBI_NOTUSED(clbk);
+; 1635 : STBI_NOTUSED(user);
+; 1636 : return 0;
+; 1637 : #endif
+; 1638 : }
+
+ 00070 48 8b f8 mov rdi, rax
+ 00073 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 00077 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_is_hdr_from_callbacks$rtcFrameData
+ 0007e e8 00 00 00 00 call _RTC_CheckStackVars
+ 00083 48 8b c7 mov rax, rdi
+ 00086 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 0008d 48 33 cd xor rcx, rbp
+ 00090 e8 00 00 00 00 call __security_check_cookie
+ 00095 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 0009c 5f pop rdi
+ 0009d 5d pop rbp
+ 0009e c3 ret 0
+stbi_is_hdr_from_callbacks ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_ldr_to_hdr_scale
+_TEXT SEGMENT
+scale$ = 224
+stbi_ldr_to_hdr_scale PROC ; COMDAT
+
+; 1648 : {
+
+$LN3:
+ 00000 f3 0f 11 44 24
+ 08 movss DWORD PTR [rsp+8], xmm0
+ 00006 55 push rbp
+ 00007 57 push rdi
+ 00008 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00014 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00020 90 npad 1
+
+; 1649 : stbi__l2h_scale = scale;
+
+ 00021 f3 0f 10 85 e0
+ 00 00 00 movss xmm0, DWORD PTR scale$[rbp]
+ 00029 f3 0f 11 05 00
+ 00 00 00 movss DWORD PTR stbi__l2h_scale, xmm0
+
+; 1650 : }
+
+ 00031 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00038 5f pop rdi
+ 00039 5d pop rbp
+ 0003a c3 ret 0
+stbi_ldr_to_hdr_scale ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_ldr_to_hdr_gamma
+_TEXT SEGMENT
+gamma$ = 224
+stbi_ldr_to_hdr_gamma PROC ; COMDAT
+
+; 1644 : {
+
+$LN3:
+ 00000 f3 0f 11 44 24
+ 08 movss DWORD PTR [rsp+8], xmm0
+ 00006 55 push rbp
+ 00007 57 push rdi
+ 00008 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00014 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00020 90 npad 1
+
+; 1645 : stbi__l2h_gamma = gamma;
+
+ 00021 f3 0f 10 85 e0
+ 00 00 00 movss xmm0, DWORD PTR gamma$[rbp]
+ 00029 f3 0f 11 05 00
+ 00 00 00 movss DWORD PTR stbi__l2h_gamma, xmm0
+
+; 1646 : }
+
+ 00031 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00038 5f pop rdi
+ 00039 5d pop rbp
+ 0003a c3 ret 0
+stbi_ldr_to_hdr_gamma ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_hdr_to_ldr_scale
+_TEXT SEGMENT
+scale$ = 224
+stbi_hdr_to_ldr_scale PROC ; COMDAT
+
+; 1660 : {
+
+$LN3:
+ 00000 f3 0f 11 44 24
+ 08 movss DWORD PTR [rsp+8], xmm0
+ 00006 55 push rbp
+ 00007 57 push rdi
+ 00008 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00014 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00020 90 npad 1
+
+; 1661 : stbi__h2l_scale_i = 1 / scale;
+
+ 00021 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 00029 f3 0f 5e 85 e0
+ 00 00 00 divss xmm0, DWORD PTR scale$[rbp]
+ 00031 f3 0f 11 05 00
+ 00 00 00 movss DWORD PTR stbi__h2l_scale_i, xmm0
+
+; 1662 : }
+
+ 00039 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00040 5f pop rdi
+ 00041 5d pop rbp
+ 00042 c3 ret 0
+stbi_hdr_to_ldr_scale ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_hdr_to_ldr_gamma
+_TEXT SEGMENT
+gamma$ = 224
+stbi_hdr_to_ldr_gamma PROC ; COMDAT
+
+; 1656 : {
+
+$LN3:
+ 00000 f3 0f 11 44 24
+ 08 movss DWORD PTR [rsp+8], xmm0
+ 00006 55 push rbp
+ 00007 57 push rdi
+ 00008 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 0000f 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00014 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00020 90 npad 1
+
+; 1657 : stbi__h2l_gamma_i = 1 / gamma;
+
+ 00021 f3 0f 10 05 00
+ 00 00 00 movss xmm0, DWORD PTR __real@3f800000
+ 00029 f3 0f 5e 85 e0
+ 00 00 00 divss xmm0, DWORD PTR gamma$[rbp]
+ 00031 f3 0f 11 05 00
+ 00 00 00 movss DWORD PTR stbi__h2l_gamma_i, xmm0
+
+; 1658 : }
+
+ 00039 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00040 5f pop rdi
+ 00041 5d pop rbp
+ 00042 c3 ret 0
+stbi_hdr_to_ldr_gamma ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_loadf_from_file
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+f$ = 480
+x$ = 488
+y$ = 496
+comp$ = 504
+req_comp$ = 512
+stbi_loadf_from_file PROC ; COMDAT
+
+; 1572 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 18
+ 02 00 00 mov rcx, QWORD PTR [rsp+536]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1573 : stbi__context s;
+; 1574 : stbi__start_file(&s, f);
+
+ 00059 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR f$[rbp]
+ 00060 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00064 e8 00 00 00 00 call stbi__start_file
+ 00069 90 npad 1
+
+; 1575 : return stbi__loadf_main(&s, x, y, comp, req_comp);
+
+ 0006a 8b 85 00 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00074 4c 8b 8d f8 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0007b 4c 8b 85 f0 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00082 48 8b 95 e8 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00089 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0008d e8 00 00 00 00 call stbi__loadf_main
+
+; 1576 : }
+
+ 00092 48 8b f8 mov rdi, rax
+ 00095 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 00099 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_loadf_from_file$rtcFrameData
+ 000a0 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000a5 48 8b c7 mov rax, rdi
+ 000a8 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000af 48 33 cd xor rcx, rbp
+ 000b2 e8 00 00 00 00 call __security_check_cookie
+ 000b7 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000be 5f pop rdi
+ 000bf 5d pop rbp
+ 000c0 c3 ret 0
+stbi_loadf_from_file ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_loadf
+_TEXT SEGMENT
+result$ = 8
+f$ = 40
+tv71 = 248
+filename$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+req_comp$ = 320
+stbi_loadf PROC ; COMDAT
+
+; 1561 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 1562 : float *result;
+; 1563 : FILE *f = stbi__fopen(filename, "rb");
+
+ 0002f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
+ 00036 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR filename$[rbp]
+ 0003d e8 00 00 00 00 call stbi__fopen
+ 00042 48 89 45 28 mov QWORD PTR f$[rbp], rax
+
+; 1564 : if (!f)
+
+ 00046 48 83 7d 28 00 cmp QWORD PTR f$[rbp], 0
+ 0004b 75 31 jne SHORT $LN2@stbi_loadf
+
+; 1565 : return stbi__errpf("can't fopen", "Unable to open file");
+
+ 0004d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
+ 00054 e8 00 00 00 00 call stbi__err
+ 00059 85 c0 test eax, eax
+ 0005b 74 0d je SHORT $LN4@stbi_loadf
+ 0005d 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+ 00068 eb 0b jmp SHORT $LN5@stbi_loadf
+$LN4@stbi_loadf:
+ 0006a 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+$LN5@stbi_loadf:
+ 00075 48 8b 85 f8 00
+ 00 00 mov rax, QWORD PTR tv71[rbp]
+ 0007c eb 3b jmp SHORT $LN1@stbi_loadf
+$LN2@stbi_loadf:
+
+; 1566 : result = stbi_loadf_from_file(f, x, y, comp, req_comp);
+
+ 0007e 8b 85 40 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00084 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00088 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0008f 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00096 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0009d 48 8b 4d 28 mov rcx, QWORD PTR f$[rbp]
+ 000a1 e8 00 00 00 00 call stbi_loadf_from_file
+ 000a6 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 1567 : fclose(f);
+
+ 000aa 48 8b 4d 28 mov rcx, QWORD PTR f$[rbp]
+ 000ae ff 15 00 00 00
+ 00 call QWORD PTR __imp_fclose
+ 000b4 90 npad 1
+
+; 1568 : return result;
+
+ 000b5 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi_loadf:
+
+; 1569 : }
+
+ 000b9 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000c0 5f pop rdi
+ 000c1 5d pop rbp
+ 000c2 c3 ret 0
+stbi_loadf ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_loadf_from_callbacks
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+clbk$ = 480
+user$ = 488
+x$ = 496
+y$ = 504
+comp$ = 512
+req_comp$ = 520
+stbi_loadf_from_callbacks PROC ; COMDAT
+
+; 1553 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 18
+ 02 00 00 mov rcx, QWORD PTR [rsp+536]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1554 : stbi__context s;
+; 1555 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
+
+ 00059 4c 8b 85 e8 01
+ 00 00 mov r8, QWORD PTR user$[rbp]
+ 00060 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR clbk$[rbp]
+ 00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__start_callbacks
+ 00070 90 npad 1
+
+; 1556 : return stbi__loadf_main(&s, x, y, comp, req_comp);
+
+ 00071 8b 85 08 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00077 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007b 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00082 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00089 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00090 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00094 e8 00 00 00 00 call stbi__loadf_main
+
+; 1557 : }
+
+ 00099 48 8b f8 mov rdi, rax
+ 0009c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 000a0 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_loadf_from_callbacks$rtcFrameData
+ 000a7 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ac 48 8b c7 mov rax, rdi
+ 000af 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000b6 48 33 cd xor rcx, rbp
+ 000b9 e8 00 00 00 00 call __security_check_cookie
+ 000be 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000c5 5f pop rdi
+ 000c6 5d pop rbp
+ 000c7 c3 ret 0
+stbi_loadf_from_callbacks ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_loadf_from_memory
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+buffer$ = 480
+len$ = 488
+x$ = 496
+y$ = 504
+comp$ = 512
+req_comp$ = 520
+stbi_loadf_from_memory PROC ; COMDAT
+
+; 1545 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00021 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 48 8b 8c 24 18
+ 02 00 00 mov rcx, QWORD PTR [rsp+536]
+ 0003a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00041 48 33 c5 xor rax, rbp
+ 00044 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00057 90 npad 1
+
+; 1546 : stbi__context s;
+; 1547 : stbi__start_mem(&s, buffer, len);
+
+ 00058 44 8b 85 e8 01
+ 00 00 mov r8d, DWORD PTR len$[rbp]
+ 0005f 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__start_mem
+ 0006f 90 npad 1
+
+; 1548 : return stbi__loadf_main(&s, x, y, comp, req_comp);
+
+ 00070 8b 85 08 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007a 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00081 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00088 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0008f 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00093 e8 00 00 00 00 call stbi__loadf_main
+
+; 1549 : }
+
+ 00098 48 8b f8 mov rdi, rax
+ 0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 0009f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_loadf_from_memory$rtcFrameData
+ 000a6 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ab 48 8b c7 mov rax, rdi
+ 000ae 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000b5 48 33 cd xor rcx, rbp
+ 000b8 e8 00 00 00 00 call __security_check_cookie
+ 000bd 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000c4 5f pop rdi
+ 000c5 5d pop rbp
+ 000c6 c3 ret 0
+stbi_loadf_from_memory ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_from_file_16
+_TEXT SEGMENT
+result$ = 8
+s$ = 48
+__$ArrayPad$ = 472
+f$ = 512
+x$ = 520
+y$ = 528
+comp$ = 536
+req_comp$ = 544
+stbi_load_from_file_16 PROC ; COMDAT
+
+; 1450 : {
+
+$LN4:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 18 02
+ 00 00 sub rsp, 536 ; 00000218H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 38
+ 02 00 00 mov rcx, QWORD PTR [rsp+568]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 d8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1451 : stbi__uint16 *result;
+; 1452 : stbi__context s;
+; 1453 : stbi__start_file(&s, f);
+
+ 00059 48 8b 95 00 02
+ 00 00 mov rdx, QWORD PTR f$[rbp]
+ 00060 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 00064 e8 00 00 00 00 call stbi__start_file
+ 00069 90 npad 1
+
+; 1454 : result = stbi__load_and_postprocess_16bit(&s, x, y, comp, req_comp);
+
+ 0006a 8b 85 20 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00074 4c 8b 8d 18 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0007b 4c 8b 85 10 02
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00082 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00089 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 0008d e8 00 00 00 00 call stbi__load_and_postprocess_16bit
+ 00092 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 1455 : if (result) {
+
+ 00096 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
+ 0009b 74 2c je SHORT $LN2@stbi_load_
+
+; 1456 : // need to 'unget' all the characters in the IO buffer
+; 1457 : fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR);
+
+ 0009d 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp+192]
+ 000a4 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR s$[rbp+200]
+ 000ab 48 2b c8 sub rcx, rax
+ 000ae 48 8b c1 mov rax, rcx
+ 000b1 f7 d8 neg eax
+ 000b3 41 b8 01 00 00
+ 00 mov r8d, 1
+ 000b9 8b d0 mov edx, eax
+ 000bb 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 000c2 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fseek
+ 000c8 90 npad 1
+$LN2@stbi_load_:
+
+; 1458 : }
+; 1459 : return result;
+
+ 000c9 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+
+; 1460 : }
+
+ 000cd 48 8b f8 mov rdi, rax
+ 000d0 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 000d4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_load_from_file_16$rtcFrameData
+ 000db e8 00 00 00 00 call _RTC_CheckStackVars
+ 000e0 48 8b c7 mov rax, rdi
+ 000e3 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000ea 48 33 cd xor rcx, rbp
+ 000ed e8 00 00 00 00 call __security_check_cookie
+ 000f2 48 8d a5 e8 01
+ 00 00 lea rsp, QWORD PTR [rbp+488]
+ 000f9 5f pop rdi
+ 000fa 5d pop rbp
+ 000fb c3 ret 0
+stbi_load_from_file_16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_16
+_TEXT SEGMENT
+f$ = 8
+result$ = 40
+tv71 = 248
+filename$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+req_comp$ = 320
+stbi_load_16 PROC ; COMDAT
+
+; 1463 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 1464 : FILE *f = stbi__fopen(filename, "rb");
+
+ 0002f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
+ 00036 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR filename$[rbp]
+ 0003d e8 00 00 00 00 call stbi__fopen
+ 00042 48 89 45 08 mov QWORD PTR f$[rbp], rax
+
+; 1465 : stbi__uint16 *result;
+; 1466 : if (!f)
+
+ 00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
+ 0004b 75 31 jne SHORT $LN2@stbi_load_
+
+; 1467 : return (stbi_us *)stbi__errpuc("can't fopen", "Unable to open file");
+
+ 0004d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
+ 00054 e8 00 00 00 00 call stbi__err
+ 00059 85 c0 test eax, eax
+ 0005b 74 0d je SHORT $LN4@stbi_load_
+ 0005d 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+ 00068 eb 0b jmp SHORT $LN5@stbi_load_
+$LN4@stbi_load_:
+ 0006a 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+$LN5@stbi_load_:
+ 00075 48 8b 85 f8 00
+ 00 00 mov rax, QWORD PTR tv71[rbp]
+ 0007c eb 3b jmp SHORT $LN1@stbi_load_
+$LN2@stbi_load_:
+
+; 1468 : result = stbi_load_from_file_16(f, x, y, comp, req_comp);
+
+ 0007e 8b 85 40 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00084 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00088 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0008f 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00096 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0009d 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 000a1 e8 00 00 00 00 call stbi_load_from_file_16
+ 000a6 48 89 45 28 mov QWORD PTR result$[rbp], rax
+
+; 1469 : fclose(f);
+
+ 000aa 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 000ae ff 15 00 00 00
+ 00 call QWORD PTR __imp_fclose
+ 000b4 90 npad 1
+
+; 1470 : return result;
+
+ 000b5 48 8b 45 28 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi_load_:
+
+; 1471 : }
+
+ 000b9 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000c0 5f pop rdi
+ 000c1 5d pop rbp
+ 000c2 c3 ret 0
+stbi_load_16 ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_16_from_callbacks
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+clbk$ = 480
+user$ = 488
+x$ = 496
+y$ = 504
+channels_in_file$ = 512
+desired_channels$ = 520
+stbi_load_16_from_callbacks PROC ; COMDAT
+
+; 1485 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 18
+ 02 00 00 mov rcx, QWORD PTR [rsp+536]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1486 : stbi__context s;
+; 1487 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
+
+ 00059 4c 8b 85 e8 01
+ 00 00 mov r8, QWORD PTR user$[rbp]
+ 00060 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR clbk$[rbp]
+ 00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__start_callbacks
+ 00070 90 npad 1
+
+; 1488 : return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels);
+
+ 00071 8b 85 08 02 00
+ 00 mov eax, DWORD PTR desired_channels$[rbp]
+ 00077 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007b 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR channels_in_file$[rbp]
+ 00082 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00089 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00090 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00094 e8 00 00 00 00 call stbi__load_and_postprocess_16bit
+
+; 1489 : }
+
+ 00099 48 8b f8 mov rdi, rax
+ 0009c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 000a0 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_load_16_from_callbacks$rtcFrameData
+ 000a7 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ac 48 8b c7 mov rax, rdi
+ 000af 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000b6 48 33 cd xor rcx, rbp
+ 000b9 e8 00 00 00 00 call __security_check_cookie
+ 000be 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000c5 5f pop rdi
+ 000c6 5d pop rbp
+ 000c7 c3 ret 0
+stbi_load_16_from_callbacks ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_16_from_memory
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+buffer$ = 480
+len$ = 488
+x$ = 496
+y$ = 504
+channels_in_file$ = 512
+desired_channels$ = 520
+stbi_load_16_from_memory PROC ; COMDAT
+
+; 1477 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00021 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 48 8b 8c 24 18
+ 02 00 00 mov rcx, QWORD PTR [rsp+536]
+ 0003a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00041 48 33 c5 xor rax, rbp
+ 00044 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00057 90 npad 1
+
+; 1478 : stbi__context s;
+; 1479 : stbi__start_mem(&s, buffer, len);
+
+ 00058 44 8b 85 e8 01
+ 00 00 mov r8d, DWORD PTR len$[rbp]
+ 0005f 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__start_mem
+ 0006f 90 npad 1
+
+; 1480 : return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels);
+
+ 00070 8b 85 08 02 00
+ 00 mov eax, DWORD PTR desired_channels$[rbp]
+ 00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007a 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR channels_in_file$[rbp]
+ 00081 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00088 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0008f 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00093 e8 00 00 00 00 call stbi__load_and_postprocess_16bit
+
+; 1481 : }
+
+ 00098 48 8b f8 mov rdi, rax
+ 0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 0009f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_load_16_from_memory$rtcFrameData
+ 000a6 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ab 48 8b c7 mov rax, rdi
+ 000ae 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000b5 48 33 cd xor rcx, rbp
+ 000b8 e8 00 00 00 00 call __security_check_cookie
+ 000bd 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000c4 5f pop rdi
+ 000c5 5d pop rbp
+ 000c6 c3 ret 0
+stbi_load_16_from_memory ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_gif_from_memory
+_TEXT SEGMENT
+result$ = 8
+s$ = 48
+tv88 = 468
+__$ArrayPad$ = 472
+buffer$ = 512
+len$ = 520
+delays$ = 528
+x$ = 536
+y$ = 544
+z$ = 552
+comp$ = 560
+req_comp$ = 568
+stbi_load_gif_from_memory PROC ; COMDAT
+
+; 1510 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec 28 02
+ 00 00 sub rsp, 552 ; 00000228H
+ 0001c 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00021 48 8d 7c 24 40 lea rdi, QWORD PTR [rsp+64]
+ 00026 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 48 8b 8c 24 48
+ 02 00 00 mov rcx, QWORD PTR [rsp+584]
+ 0003a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00041 48 33 c5 xor rax, rbp
+ 00044 48 89 85 d8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00057 90 npad 1
+
+; 1511 : unsigned char *result;
+; 1512 : stbi__context s;
+; 1513 : stbi__start_mem(&s, buffer, len);
+
+ 00058 44 8b 85 08 02
+ 00 00 mov r8d, DWORD PTR len$[rbp]
+ 0005f 48 8b 95 00 02
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 00066 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__start_mem
+ 0006f 90 npad 1
+
+; 1514 :
+; 1515 : result = (unsigned char *)stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp);
+
+ 00070 8b 85 38 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00076 89 44 24 30 mov DWORD PTR [rsp+48], eax
+ 0007a 48 8b 85 30 02
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00081 48 89 44 24 28 mov QWORD PTR [rsp+40], rax
+ 00086 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 0008d 48 89 44 24 20 mov QWORD PTR [rsp+32], rax
+ 00092 4c 8b 8d 20 02
+ 00 00 mov r9, QWORD PTR y$[rbp]
+ 00099 4c 8b 85 18 02
+ 00 00 mov r8, QWORD PTR x$[rbp]
+ 000a0 48 8b 95 10 02
+ 00 00 mov rdx, QWORD PTR delays$[rbp]
+ 000a7 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 000ab e8 00 00 00 00 call stbi__load_gif_main
+ 000b0 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 1516 : if (stbi__vertically_flip_on_load) {
+
+ 000b4 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_set
+ 000b9 8b c0 mov eax, eax
+ 000bb 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 000c1 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 000ca 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 000ce 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0
+ 000d2 74 25 je SHORT $LN4@stbi_load_
+ 000d4 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__vertically_flip_on_load_local
+ 000d9 8b c0 mov eax, eax
+ 000db 8b 0d 00 00 00
+ 00 mov ecx, DWORD PTR _tls_index
+ 000e1 65 48 8b 14 25
+ 58 00 00 00 mov rdx, QWORD PTR gs:88
+ 000ea 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8]
+ 000ee 8b 04 08 mov eax, DWORD PTR [rax+rcx]
+ 000f1 89 85 d4 01 00
+ 00 mov DWORD PTR tv88[rbp], eax
+ 000f7 eb 0c jmp SHORT $LN5@stbi_load_
+$LN4@stbi_load_:
+ 000f9 8b 05 00 00 00
+ 00 mov eax, DWORD PTR stbi__vertically_flip_on_load_global
+ 000ff 89 85 d4 01 00
+ 00 mov DWORD PTR tv88[rbp], eax
+$LN5@stbi_load_:
+ 00105 83 bd d4 01 00
+ 00 00 cmp DWORD PTR tv88[rbp], 0
+ 0010c 74 34 je SHORT $LN2@stbi_load_
+
+; 1517 : stbi__vertical_flip_slices(result, *x, *y, *z, *comp);
+
+ 0010e 48 8b 85 30 02
+ 00 00 mov rax, QWORD PTR comp$[rbp]
+ 00115 8b 00 mov eax, DWORD PTR [rax]
+ 00117 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0011b 48 8b 85 28 02
+ 00 00 mov rax, QWORD PTR z$[rbp]
+ 00122 44 8b 08 mov r9d, DWORD PTR [rax]
+ 00125 48 8b 85 20 02
+ 00 00 mov rax, QWORD PTR y$[rbp]
+ 0012c 44 8b 00 mov r8d, DWORD PTR [rax]
+ 0012f 48 8b 85 18 02
+ 00 00 mov rax, QWORD PTR x$[rbp]
+ 00136 8b 10 mov edx, DWORD PTR [rax]
+ 00138 48 8b 4d 08 mov rcx, QWORD PTR result$[rbp]
+ 0013c e8 00 00 00 00 call stbi__vertical_flip_slices
+ 00141 90 npad 1
+$LN2@stbi_load_:
+
+; 1518 : }
+; 1519 :
+; 1520 : return result;
+
+ 00142 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+
+; 1521 : }
+
+ 00146 48 8b f8 mov rdi, rax
+ 00149 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64]
+ 0014d 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_load_gif_from_memory$rtcFrameData
+ 00154 e8 00 00 00 00 call _RTC_CheckStackVars
+ 00159 48 8b c7 mov rax, rdi
+ 0015c 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 00163 48 33 cd xor rcx, rbp
+ 00166 e8 00 00 00 00 call __security_check_cookie
+ 0016b 48 8d a5 e8 01
+ 00 00 lea rsp, QWORD PTR [rbp+488]
+ 00172 5f pop rdi
+ 00173 5d pop rbp
+ 00174 c3 ret 0
+stbi_load_gif_from_memory ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_from_file
+_TEXT SEGMENT
+result$ = 8
+s$ = 48
+__$ArrayPad$ = 472
+f$ = 512
+x$ = 520
+y$ = 528
+comp$ = 536
+req_comp$ = 544
+stbi_load_from_file PROC ; COMDAT
+
+; 1437 : {
+
+$LN4:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 18 02
+ 00 00 sub rsp, 536 ; 00000218H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 38
+ 02 00 00 mov rcx, QWORD PTR [rsp+568]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 d8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1438 : unsigned char *result;
+; 1439 : stbi__context s;
+; 1440 : stbi__start_file(&s, f);
+
+ 00059 48 8b 95 00 02
+ 00 00 mov rdx, QWORD PTR f$[rbp]
+ 00060 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 00064 e8 00 00 00 00 call stbi__start_file
+ 00069 90 npad 1
+
+; 1441 : result = stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp);
+
+ 0006a 8b 85 20 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00070 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00074 4c 8b 8d 18 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0007b 4c 8b 85 10 02
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00082 48 8b 95 08 02
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00089 48 8d 4d 30 lea rcx, QWORD PTR s$[rbp]
+ 0008d e8 00 00 00 00 call stbi__load_and_postprocess_8bit
+ 00092 48 89 45 08 mov QWORD PTR result$[rbp], rax
+
+; 1442 : if (result) {
+
+ 00096 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0
+ 0009b 74 2c je SHORT $LN2@stbi_load_
+
+; 1443 : // need to 'unget' all the characters in the IO buffer
+; 1444 : fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR);
+
+ 0009d 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR s$[rbp+192]
+ 000a4 48 8b 8d f8 00
+ 00 00 mov rcx, QWORD PTR s$[rbp+200]
+ 000ab 48 2b c8 sub rcx, rax
+ 000ae 48 8b c1 mov rax, rcx
+ 000b1 f7 d8 neg eax
+ 000b3 41 b8 01 00 00
+ 00 mov r8d, 1
+ 000b9 8b d0 mov edx, eax
+ 000bb 48 8b 8d 00 02
+ 00 00 mov rcx, QWORD PTR f$[rbp]
+ 000c2 ff 15 00 00 00
+ 00 call QWORD PTR __imp_fseek
+ 000c8 90 npad 1
+$LN2@stbi_load_:
+
+; 1445 : }
+; 1446 : return result;
+
+ 000c9 48 8b 45 08 mov rax, QWORD PTR result$[rbp]
+
+; 1447 : }
+
+ 000cd 48 8b f8 mov rdi, rax
+ 000d0 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 000d4 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_load_from_file$rtcFrameData
+ 000db e8 00 00 00 00 call _RTC_CheckStackVars
+ 000e0 48 8b c7 mov rax, rdi
+ 000e3 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000ea 48 33 cd xor rcx, rbp
+ 000ed e8 00 00 00 00 call __security_check_cookie
+ 000f2 48 8d a5 e8 01
+ 00 00 lea rsp, QWORD PTR [rbp+488]
+ 000f9 5f pop rdi
+ 000fa 5d pop rbp
+ 000fb c3 ret 0
+stbi_load_from_file ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load
+_TEXT SEGMENT
+f$ = 8
+result$ = 40
+tv71 = 248
+filename$ = 288
+x$ = 296
+y$ = 304
+comp$ = 312
+req_comp$ = 320
+stbi_load PROC ; COMDAT
+
+; 1426 : {
+
+$LN6:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec 38 01
+ 00 00 sub rsp, 312 ; 00000138H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 0002e 90 npad 1
+
+; 1427 : FILE *f = stbi__fopen(filename, "rb");
+
+ 0002f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:??_C@_02JDPG@rb@
+ 00036 48 8b 8d 20 01
+ 00 00 mov rcx, QWORD PTR filename$[rbp]
+ 0003d e8 00 00 00 00 call stbi__fopen
+ 00042 48 89 45 08 mov QWORD PTR f$[rbp], rax
+
+; 1428 : unsigned char *result;
+; 1429 : if (!f)
+
+ 00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0
+ 0004b 75 31 jne SHORT $LN2@stbi_load
+
+; 1430 : return stbi__errpuc("can't fopen", "Unable to open file");
+
+ 0004d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:??_C@_0M@JPDHFAGK@can?8t?5fopen@
+ 00054 e8 00 00 00 00 call stbi__err
+ 00059 85 c0 test eax, eax
+ 0005b 74 0d je SHORT $LN4@stbi_load
+ 0005d 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+ 00068 eb 0b jmp SHORT $LN5@stbi_load
+$LN4@stbi_load:
+ 0006a 48 c7 85 f8 00
+ 00 00 00 00 00
+ 00 mov QWORD PTR tv71[rbp], 0
+$LN5@stbi_load:
+ 00075 48 8b 85 f8 00
+ 00 00 mov rax, QWORD PTR tv71[rbp]
+ 0007c eb 3b jmp SHORT $LN1@stbi_load
+$LN2@stbi_load:
+
+; 1431 : result = stbi_load_from_file(f, x, y, comp, req_comp);
+
+ 0007e 8b 85 40 01 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00084 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 00088 4c 8b 8d 38 01
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 0008f 4c 8b 85 30 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00096 48 8b 95 28 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0009d 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 000a1 e8 00 00 00 00 call stbi_load_from_file
+ 000a6 48 89 45 28 mov QWORD PTR result$[rbp], rax
+
+; 1432 : fclose(f);
+
+ 000aa 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp]
+ 000ae ff 15 00 00 00
+ 00 call QWORD PTR __imp_fclose
+ 000b4 90 npad 1
+
+; 1433 : return result;
+
+ 000b5 48 8b 45 28 mov rax, QWORD PTR result$[rbp]
+$LN1@stbi_load:
+
+; 1434 : }
+
+ 000b9 48 8d a5 08 01
+ 00 00 lea rsp, QWORD PTR [rbp+264]
+ 000c0 5f pop rdi
+ 000c1 5d pop rbp
+ 000c2 c3 ret 0
+stbi_load ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_from_callbacks
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+clbk$ = 480
+user$ = 488
+x$ = 496
+y$ = 504
+comp$ = 512
+req_comp$ = 520
+stbi_load_from_callbacks PROC ; COMDAT
+
+; 1501 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00014 55 push rbp
+ 00015 57 push rdi
+ 00016 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00022 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00027 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00031 f3 ab rep stosd
+ 00033 48 8b 8c 24 18
+ 02 00 00 mov rcx, QWORD PTR [rsp+536]
+ 0003b 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00042 48 33 c5 xor rax, rbp
+ 00045 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00058 90 npad 1
+
+; 1502 : stbi__context s;
+; 1503 : stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);
+
+ 00059 4c 8b 85 e8 01
+ 00 00 mov r8, QWORD PTR user$[rbp]
+ 00060 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR clbk$[rbp]
+ 00067 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006b e8 00 00 00 00 call stbi__start_callbacks
+ 00070 90 npad 1
+
+; 1504 : return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp);
+
+ 00071 8b 85 08 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00077 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007b 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00082 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00089 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 00090 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00094 e8 00 00 00 00 call stbi__load_and_postprocess_8bit
+
+; 1505 : }
+
+ 00099 48 8b f8 mov rdi, rax
+ 0009c 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 000a0 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_load_from_callbacks$rtcFrameData
+ 000a7 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ac 48 8b c7 mov rax, rdi
+ 000af 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000b6 48 33 cd xor rcx, rbp
+ 000b9 e8 00 00 00 00 call __security_check_cookie
+ 000be 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000c5 5f pop rdi
+ 000c6 5d pop rbp
+ 000c7 c3 ret 0
+stbi_load_from_callbacks ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\lib\stbi\stb_image.h
+; COMDAT stbi_load_from_memory
+_TEXT SEGMENT
+s$ = 16
+__$ArrayPad$ = 440
+buffer$ = 480
+len$ = 488
+x$ = 496
+y$ = 504
+comp$ = 512
+req_comp$ = 520
+stbi_load_from_memory PROC ; COMDAT
+
+; 1493 : {
+
+$LN3:
+ 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
+ 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 0000a 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 0000e 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 00013 55 push rbp
+ 00014 57 push rdi
+ 00015 48 81 ec f8 01
+ 00 00 sub rsp, 504 ; 000001f8H
+ 0001c 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
+ 00021 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48]
+ 00026 b9 42 00 00 00 mov ecx, 66 ; 00000042H
+ 0002b b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00030 f3 ab rep stosd
+ 00032 48 8b 8c 24 18
+ 02 00 00 mov rcx, QWORD PTR [rsp+536]
+ 0003a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00041 48 33 c5 xor rax, rbp
+ 00044 48 89 85 b8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0004b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__F562FA57_stb_image@h
+ 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00057 90 npad 1
+
+; 1494 : stbi__context s;
+; 1495 : stbi__start_mem(&s, buffer, len);
+
+ 00058 44 8b 85 e8 01
+ 00 00 mov r8d, DWORD PTR len$[rbp]
+ 0005f 48 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR buffer$[rbp]
+ 00066 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 0006a e8 00 00 00 00 call stbi__start_mem
+ 0006f 90 npad 1
+
+; 1496 : return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp);
+
+ 00070 8b 85 08 02 00
+ 00 mov eax, DWORD PTR req_comp$[rbp]
+ 00076 89 44 24 20 mov DWORD PTR [rsp+32], eax
+ 0007a 4c 8b 8d 00 02
+ 00 00 mov r9, QWORD PTR comp$[rbp]
+ 00081 4c 8b 85 f8 01
+ 00 00 mov r8, QWORD PTR y$[rbp]
+ 00088 48 8b 95 f0 01
+ 00 00 mov rdx, QWORD PTR x$[rbp]
+ 0008f 48 8d 4d 10 lea rcx, QWORD PTR s$[rbp]
+ 00093 e8 00 00 00 00 call stbi__load_and_postprocess_8bit
+
+; 1497 : }
+
+ 00098 48 8b f8 mov rdi, rax
+ 0009b 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48]
+ 0009f 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:stbi_load_from_memory$rtcFrameData
+ 000a6 e8 00 00 00 00 call _RTC_CheckStackVars
+ 000ab 48 8b c7 mov rax, rdi
+ 000ae 48 8b 8d b8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 000b5 48 33 cd xor rcx, rbp
+ 000b8 e8 00 00 00 00 call __security_check_cookie
+ 000bd 48 8d a5 c8 01
+ 00 00 lea rsp, QWORD PTR [rbp+456]
+ 000c4 5f pop rdi
+ 000c5 5d pop rbp
+ 000c6 c3 ret 0
+stbi_load_from_memory ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/sn_native.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/sn_native.nativecodeanalysis.sarif
new file mode 100644
index 00000000..00b238b9
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/sn_native.nativecodeanalysis.sarif
@@ -0,0 +1,169 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [
+ {
+ "ruleId": "C6262",
+ "message": {
+ "text": "函数使用堆叠的 \"35036\" 字节。请考虑将一些数据移动到堆。"
+ },
+ "analysisTarget": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/sn_native.c"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///D:/platform-dev/StgSharp.Native/lib/stbi/stb_image.h"
+ },
+ "region": {
+ "startLine": 7817,
+ "startColumn": 14
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "stbi__load_gif_main",
+ "decoratedName": "stbi__load_gif_main",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ruleId": "C6262",
+ "message": {
+ "text": "函数使用堆叠的 \"34980\" 字节。请考虑将一些数据移动到堆。"
+ },
+ "analysisTarget": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/sn_native.c"
+ },
+ "locations": [
+ {
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "file:///D:/platform-dev/StgSharp.Native/lib/stbi/stb_image.h"
+ },
+ "region": {
+ "startLine": 7910,
+ "startColumn": 14
+ }
+ },
+ "logicalLocations": [
+ {
+ "fullyQualifiedName": "stbi__gif_load",
+ "decoratedName": "stbi__gif_load",
+ "kind": "function"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/sn_native.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "8f89dd595bb98c84b3146bb17fbb4fce491f43bb495c85bd86a4f6ea0df54224"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///D:/platform-dev/StgSharp.Native/lib/stbi/stb_image.h"
+ },
+ "roles": [
+ "resultFile"
+ ],
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/sn_native.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/sn_native.nativecodeanalysis.xml
new file mode 100644
index 00000000..e69af59c
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/sn_native.nativecodeanalysis.xml
@@ -0,0 +1,31 @@
+
+
+
+
+ D:\platform-dev\StgSharp.Native\lib\stbi\
+ stb_image.h
+ 7817
+ 13
+
+ 6262
+ 函数使用堆叠的 "35036" 字节。请考虑将一些数据移动到堆。
+ stbi__load_gif_main
+ stbi__load_gif_main
+ 7817
+
+
+
+
+ D:\platform-dev\StgSharp.Native\lib\stbi\
+ stb_image.h
+ 7910
+ 13
+
+ 6262
+ 函数使用堆叠的 "34980" 字节。请考虑将一些数据移动到堆。
+ stbi__gif_load
+ stbi__gif_load
+ 7910
+
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/sn_native.obj b/obj/StgSharp.Native/Debug/x64/sn_native.obj
new file mode 100644
index 00000000..3b71bdb4
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/sn_native.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/sn_native.sbr b/obj/StgSharp.Native/Debug/x64/sn_native.sbr
new file mode 100644
index 00000000..f44ef8b8
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/sn_native.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/str_string.cod b/obj/StgSharp.Native/Debug/x64/str_string.cod
new file mode 100644
index 00000000..2d2b9a76
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/str_string.cod
@@ -0,0 +1,505 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__F49407C4_sn_intrinsic@matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__0E68EE93_str_string@c DB 01H
+msvcjmc ENDS
+PUBLIC index_pair_sse
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$index_pair_sse DD imagerel $LN23
+ DD imagerel $LN23+552
+ DD imagerel $unwind$index_pair_sse
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$index_pair_sse DD 025051c01H
+ DD 0117231cH
+ DD 070100047H
+ DD 0500fH
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\str_string.c
+; COMDAT index_pair_sse
+_TEXT SEGMENT
+index$ = 4
+result$ = 36
+size$ = 68
+end$ = 100
+s$ = 144
+vec$ = 192
+com$ = 240
+i$1 = 280
+i$2 = 312
+tv150 = 516
+str$ = 560
+target$ = 568
+length$ = 576
+index_pair_sse PROC ; COMDAT
+
+; 8 : {
+
+$LN23:
+ 00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d
+ 00005 89 54 24 10 mov DWORD PTR [rsp+16], edx
+ 00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000e 55 push rbp
+ 0000f 57 push rdi
+ 00010 48 81 ec 38 02
+ 00 00 sub rsp, 568 ; 00000238H
+ 00017 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001c 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__0E68EE93_str_string@c
+ 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00028 90 npad 1
+
+; 9 : int index = 0, result = 0, size = length, end = size - 8;
+
+ 00029 c7 45 04 00 00
+ 00 00 mov DWORD PTR index$[rbp], 0
+ 00030 c7 45 24 00 00
+ 00 00 mov DWORD PTR result$[rbp], 0
+ 00037 8b 85 40 02 00
+ 00 mov eax, DWORD PTR length$[rbp]
+ 0003d 89 45 44 mov DWORD PTR size$[rbp], eax
+ 00040 8b 45 44 mov eax, DWORD PTR size$[rbp]
+ 00043 83 e8 08 sub eax, 8
+ 00046 89 45 64 mov DWORD PTR end$[rbp], eax
+
+; 10 : __m128i s = _mm_set1_epi32(target);
+
+ 00049 66 0f 6e 85 38
+ 02 00 00 movd xmm0, DWORD PTR target$[rbp]
+ 00051 66 0f 70 c0 00 pshufd xmm0, xmm0, 0
+ 00056 66 0f 7f 85 90
+ 00 00 00 movdqa XMMWORD PTR s$[rbp], xmm0
+$LN2@index_pair:
+
+; 11 : __m128i vec, com;
+; 12 :
+; 13 : while (index < end) {
+
+ 0005e 8b 45 64 mov eax, DWORD PTR end$[rbp]
+ 00061 39 45 04 cmp DWORD PTR index$[rbp], eax
+ 00064 0f 8d 52 01 00
+ 00 jge $LN3@index_pair
+
+; 14 : vec = _mm_loadu_epi32(str + index);
+
+ 0006a 48 63 45 04 movsxd rax, DWORD PTR index$[rbp]
+ 0006e 48 8b 8d 30 02
+ 00 00 mov rcx, QWORD PTR str$[rbp]
+ 00075 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 00079 c5 fa 6f 00 vmovdqu xmm0, XMMWORD PTR [rax]
+ 0007d 66 0f 7f 85 c0
+ 00 00 00 movdqa XMMWORD PTR vec$[rbp], xmm0
+
+; 15 : com = _mm_cmpeq_epi16(vec, s);
+
+ 00085 66 0f 6f 85 c0
+ 00 00 00 movdqa xmm0, XMMWORD PTR vec$[rbp]
+ 0008d 66 0f 75 85 90
+ 00 00 00 pcmpeqw xmm0, XMMWORD PTR s$[rbp]
+ 00095 66 0f 7f 85 f0
+ 00 00 00 movdqa XMMWORD PTR com$[rbp], xmm0
+
+; 16 : result = _mm_movemask_epi8(com);
+
+ 0009d 66 0f 6f 85 f0
+ 00 00 00 movdqa xmm0, XMMWORD PTR com$[rbp]
+ 000a5 66 0f d7 c0 pmovmskb eax, xmm0
+ 000a9 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 17 : if (result) {
+
+ 000ac 83 7d 24 00 cmp DWORD PTR result$[rbp], 0
+ 000b0 74 56 je SHORT $LN13@index_pair
+
+; 18 : for (size_t i = 0; i < 7; i++) {
+
+ 000b2 48 c7 85 18 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$1[rbp], 0
+ 000bd eb 11 jmp SHORT $LN6@index_pair
+$LN4@index_pair:
+ 000bf 48 8b 85 18 01
+ 00 00 mov rax, QWORD PTR i$1[rbp]
+ 000c6 48 ff c0 inc rax
+ 000c9 48 89 85 18 01
+ 00 00 mov QWORD PTR i$1[rbp], rax
+$LN6@index_pair:
+ 000d0 48 83 bd 18 01
+ 00 00 07 cmp QWORD PTR i$1[rbp], 7
+ 000d8 73 2e jae SHORT $LN5@index_pair
+
+; 19 : if (((result & 0xF) == 0xF)) {
+
+ 000da 8b 45 24 mov eax, DWORD PTR result$[rbp]
+ 000dd 83 e0 0f and eax, 15
+ 000e0 83 f8 0f cmp eax, 15
+ 000e3 75 10 jne SHORT $LN14@index_pair
+
+; 20 : return index + i;
+
+ 000e5 48 63 45 04 movsxd rax, DWORD PTR index$[rbp]
+ 000e9 48 03 85 18 01
+ 00 00 add rax, QWORD PTR i$1[rbp]
+ 000f0 e9 29 01 00 00 jmp $LN1@index_pair
+$LN14@index_pair:
+
+; 21 : }
+; 22 : if (result == 0) {
+
+ 000f5 83 7d 24 00 cmp DWORD PTR result$[rbp], 0
+ 000f9 75 02 jne SHORT $LN15@index_pair
+
+; 23 : break;
+
+ 000fb eb 0b jmp SHORT $LN5@index_pair
+$LN15@index_pair:
+
+; 24 : }
+; 25 : result >>= 2;
+
+ 000fd 8b 45 24 mov eax, DWORD PTR result$[rbp]
+ 00100 c1 f8 02 sar eax, 2
+ 00103 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 26 : }
+
+ 00106 eb b7 jmp SHORT $LN4@index_pair
+$LN5@index_pair:
+$LN13@index_pair:
+
+; 27 : }
+; 28 : index += 1;
+
+ 00108 8b 45 04 mov eax, DWORD PTR index$[rbp]
+ 0010b ff c0 inc eax
+ 0010d 89 45 04 mov DWORD PTR index$[rbp], eax
+
+; 29 : vec = _mm_loadu_epi32(str + index);
+
+ 00110 48 63 45 04 movsxd rax, DWORD PTR index$[rbp]
+ 00114 48 8b 8d 30 02
+ 00 00 mov rcx, QWORD PTR str$[rbp]
+ 0011b 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2]
+ 0011f c5 fa 6f 00 vmovdqu xmm0, XMMWORD PTR [rax]
+ 00123 66 0f 7f 85 c0
+ 00 00 00 movdqa XMMWORD PTR vec$[rbp], xmm0
+
+; 30 : com = _mm_cmpeq_epi16(vec, s);
+
+ 0012b 66 0f 6f 85 c0
+ 00 00 00 movdqa xmm0, XMMWORD PTR vec$[rbp]
+ 00133 66 0f 75 85 90
+ 00 00 00 pcmpeqw xmm0, XMMWORD PTR s$[rbp]
+ 0013b 66 0f 7f 85 f0
+ 00 00 00 movdqa XMMWORD PTR com$[rbp], xmm0
+
+; 31 : result = _mm_movemask_epi8(com);
+
+ 00143 66 0f 6f 85 f0
+ 00 00 00 movdqa xmm0, XMMWORD PTR com$[rbp]
+ 0014b 66 0f d7 c0 pmovmskb eax, xmm0
+ 0014f 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 32 : if (result) {
+
+ 00152 83 7d 24 00 cmp DWORD PTR result$[rbp], 0
+ 00156 74 56 je SHORT $LN16@index_pair
+
+; 33 : for (size_t i = 0; i < 7; i++) {
+
+ 00158 48 c7 85 38 01
+ 00 00 00 00 00
+ 00 mov QWORD PTR i$2[rbp], 0
+ 00163 eb 11 jmp SHORT $LN9@index_pair
+$LN7@index_pair:
+ 00165 48 8b 85 38 01
+ 00 00 mov rax, QWORD PTR i$2[rbp]
+ 0016c 48 ff c0 inc rax
+ 0016f 48 89 85 38 01
+ 00 00 mov QWORD PTR i$2[rbp], rax
+$LN9@index_pair:
+ 00176 48 83 bd 38 01
+ 00 00 07 cmp QWORD PTR i$2[rbp], 7
+ 0017e 73 2e jae SHORT $LN8@index_pair
+
+; 34 : if (((result & 0xF) == 0xF)) {
+
+ 00180 8b 45 24 mov eax, DWORD PTR result$[rbp]
+ 00183 83 e0 0f and eax, 15
+ 00186 83 f8 0f cmp eax, 15
+ 00189 75 10 jne SHORT $LN17@index_pair
+
+; 35 : return index + i;
+
+ 0018b 48 63 45 04 movsxd rax, DWORD PTR index$[rbp]
+ 0018f 48 03 85 38 01
+ 00 00 add rax, QWORD PTR i$2[rbp]
+ 00196 e9 83 00 00 00 jmp $LN1@index_pair
+$LN17@index_pair:
+
+; 36 : }
+; 37 : if (result == 0) {
+
+ 0019b 83 7d 24 00 cmp DWORD PTR result$[rbp], 0
+ 0019f 75 02 jne SHORT $LN18@index_pair
+
+; 38 : break;
+
+ 001a1 eb 0b jmp SHORT $LN8@index_pair
+$LN18@index_pair:
+
+; 39 : }
+; 40 : result >>= 2;
+
+ 001a3 8b 45 24 mov eax, DWORD PTR result$[rbp]
+ 001a6 c1 f8 02 sar eax, 2
+ 001a9 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 41 : }
+
+ 001ac eb b7 jmp SHORT $LN7@index_pair
+$LN8@index_pair:
+$LN16@index_pair:
+
+; 42 : }
+; 43 : index += 7;
+
+ 001ae 8b 45 04 mov eax, DWORD PTR index$[rbp]
+ 001b1 83 c0 07 add eax, 7
+ 001b4 89 45 04 mov DWORD PTR index$[rbp], eax
+
+; 44 : }
+
+ 001b7 e9 a2 fe ff ff jmp $LN2@index_pair
+$LN3@index_pair:
+
+; 45 : for (; (index < size - 1) && (!result); index += 2) {
+
+ 001bc eb 09 jmp SHORT $LN12@index_pair
+$LN10@index_pair:
+ 001be 8b 45 04 mov eax, DWORD PTR index$[rbp]
+ 001c1 83 c0 02 add eax, 2
+ 001c4 89 45 04 mov DWORD PTR index$[rbp], eax
+$LN12@index_pair:
+ 001c7 8b 45 44 mov eax, DWORD PTR size$[rbp]
+ 001ca ff c8 dec eax
+ 001cc 39 45 04 cmp DWORD PTR index$[rbp], eax
+ 001cf 7d 3d jge SHORT $LN11@index_pair
+ 001d1 83 7d 24 00 cmp DWORD PTR result$[rbp], 0
+ 001d5 75 37 jne SHORT $LN11@index_pair
+
+; 46 : result = *(int *)(str + index) == target;
+
+ 001d7 48 63 45 04 movsxd rax, DWORD PTR index$[rbp]
+ 001db 48 8b 8d 30 02
+ 00 00 mov rcx, QWORD PTR str$[rbp]
+ 001e2 8b 95 38 02 00
+ 00 mov edx, DWORD PTR target$[rbp]
+ 001e8 39 14 41 cmp DWORD PTR [rcx+rax*2], edx
+ 001eb 75 0c jne SHORT $LN21@index_pair
+ 001ed c7 85 04 02 00
+ 00 01 00 00 00 mov DWORD PTR tv150[rbp], 1
+ 001f7 eb 0a jmp SHORT $LN22@index_pair
+$LN21@index_pair:
+ 001f9 c7 85 04 02 00
+ 00 00 00 00 00 mov DWORD PTR tv150[rbp], 0
+$LN22@index_pair:
+ 00203 8b 85 04 02 00
+ 00 mov eax, DWORD PTR tv150[rbp]
+ 00209 89 45 24 mov DWORD PTR result$[rbp], eax
+
+; 47 : }
+
+ 0020c eb b0 jmp SHORT $LN10@index_pair
+$LN11@index_pair:
+
+; 48 : if (result) {
+
+ 0020e 83 7d 24 00 cmp DWORD PTR result$[rbp], 0
+ 00212 74 05 je SHORT $LN19@index_pair
+
+; 49 : return index;
+
+ 00214 8b 45 04 mov eax, DWORD PTR index$[rbp]
+ 00217 eb 05 jmp SHORT $LN1@index_pair
+$LN19@index_pair:
+
+; 50 : }
+; 51 : return -1;
+
+ 00219 b8 ff ff ff ff mov eax, -1
+$LN1@index_pair:
+
+; 52 : }
+
+ 0021e 48 8d a5 18 02
+ 00 00 lea rsp, QWORD PTR [rbp+536]
+ 00225 5f pop rdi
+ 00226 5d pop rbp
+ 00227 c3 ret 0
+index_pair_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/str_string.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/str_string.nativecodeanalysis.sarif
new file mode 100644
index 00000000..646df0ef
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/str_string.nativecodeanalysis.sarif
@@ -0,0 +1,123 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/str_string.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "b995f1bf18433a2c3ed0a2d988b88348ca734be821d64970a6bc045925bb77de"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "94ca202415b5a633ad79580db19ae2b7def151b2e3f5d2dcaa341cfe934a5b0c"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/str_string.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/str_string.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/str_string.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/str_string.obj b/obj/StgSharp.Native/Debug/x64/str_string.obj
new file mode 100644
index 00000000..25d14ec8
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/str_string.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/str_string.sbr b/obj/StgSharp.Native/Debug/x64/str_string.sbr
new file mode 100644
index 00000000..12ec9cdb
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/str_string.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/t.affinity.cod b/obj/StgSharp.Native/Debug/x64/t.affinity.cod
new file mode 100644
index 00000000..dffc6427
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/t.affinity.cod
@@ -0,0 +1,471 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__C1B0F7FE_t@affinity@c DB 01H
+msvcjmc ENDS
+PUBLIC sn_set_thread_affinity
+PUBLIC __JustMyCode_Default
+EXTRN memset:PROC
+EXTRN __imp_GetCurrentThread:PROC
+EXTRN __imp_GetThreadGroupAffinity:PROC
+EXTRN __imp_SetThreadGroupAffinity:PROC
+EXTRN __imp_GetActiveProcessorCount:PROC
+EXTRN _RTC_CheckStackVars:PROC
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+EXTRN __GSHandlerCheck:PROC
+EXTRN __security_check_cookie:PROC
+EXTRN __security_cookie:QWORD
+; COMDAT pdata
+pdata SEGMENT
+$pdata$sn_set_thread_affinity DD imagerel $LN7
+ DD imagerel $LN7+460
+ DD imagerel $unwind$sn_set_thread_affinity
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT voltbl
+voltbl SEGMENT
+_volmd DW 034H
+ DW 01b3H
+voltbl ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$sn_set_thread_affinity DD 025053b19H
+ DD 010d2312H
+ DD 070060041H
+ DD 05005H
+ DD imagerel __GSHandlerCheck
+ DD 01f8H
+xdata ENDS
+; COMDAT CONST
+CONST SEGMENT
+sn_set_thread_affinity$rtcName$0 DB 063H
+ DB 075H
+ DB 072H
+ DB 072H
+ DB 065H
+ DB 06eH
+ DB 074H
+ DB 00H
+sn_set_thread_affinity$rtcName$1 DB 067H
+ DB 061H
+ DB 00H
+ ORG $+1
+sn_set_thread_affinity$rtcName$2 DB 067H
+ DB 061H
+ DB 00H
+ ORG $+1
+sn_set_thread_affinity$rtcVarDesc DD 0108H
+ DD 010H
+ DQ FLAT:sn_set_thread_affinity$rtcName$2
+ DD 078H
+ DD 010H
+ DQ FLAT:sn_set_thread_affinity$rtcName$1
+ DD 028H
+ DD 010H
+ DQ FLAT:sn_set_thread_affinity$rtcName$0
+ ORG $+144
+sn_set_thread_affinity$rtcFrameData DD 03H
+ DD 00H
+ DQ FLAT:sn_set_thread_affinity$rtcVarDesc
+CONST ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\t.affinity.c
+; COMDAT sn_set_thread_affinity
+_TEXT SEGMENT
+current$6 = 8
+count$7 = 52
+ga$8 = 88
+group$ = 132
+index$ = 164
+count$ = 196
+ga$ = 232
+tv76 = 456
+tv153 = 456
+tv144 = 464
+__$ArrayPad$ = 472
+core_id$ = 512
+sn_set_thread_affinity PROC ; COMDAT
+
+; 15 : {
+
+$LN7:
+ 00000 89 4c 24 08 mov DWORD PTR [rsp+8], ecx
+ 00004 55 push rbp
+ 00005 57 push rdi
+ 00006 48 81 ec 08 02
+ 00 00 sub rsp, 520 ; 00000208H
+ 0000d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00012 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
+ 00017 b9 4a 00 00 00 mov ecx, 74 ; 0000004aH
+ 0001c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
+ 00021 f3 ab rep stosd
+ 00023 8b 8c 24 28 02
+ 00 00 mov ecx, DWORD PTR [rsp+552]
+ 0002a 48 8b 05 00 00
+ 00 00 mov rax, QWORD PTR __security_cookie
+ 00031 48 33 c5 xor rax, rbp
+ 00034 48 89 85 d8 01
+ 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
+ 0003b 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__C1B0F7FE_t@affinity@c
+ 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00047 90 npad 1
+
+; 16 : #if SN_IS_OS(SN_OS_WINDOWS)
+; 17 : if (core_id < 0) {
+
+ 00048 83 bd 00 02 00
+ 00 00 cmp DWORD PTR core_id$[rbp], 0
+ 0004f 0f 8d 9b 00 00
+ 00 jge $LN2@sn_set_thr
+
+; 18 : /* Query which group the thread currently belongs to */
+; 19 : GROUP_AFFINITY current;
+; 20 : GetThreadGroupAffinity(GetCurrentThread(), ¤t);
+
+ 00055 ff 15 00 00 00
+ 00 call QWORD PTR __imp_GetCurrentThread
+ 0005b 48 8d 55 08 lea rdx, QWORD PTR current$6[rbp]
+ 0005f 48 8b c8 mov rcx, rax
+ 00062 ff 15 00 00 00
+ 00 call QWORD PTR __imp_GetThreadGroupAffinity
+ 00068 90 npad 1
+
+; 21 : /* Build a full mask for that group's actual core count */
+; 22 : DWORD count = GetActiveProcessorCount(current.Group);
+
+ 00069 0f b7 4d 10 movzx ecx, WORD PTR current$6[rbp+8]
+ 0006d ff 15 00 00 00
+ 00 call QWORD PTR __imp_GetActiveProcessorCount
+ 00073 89 45 34 mov DWORD PTR count$7[rbp], eax
+
+; 23 : GROUP_AFFINITY ga;
+; 24 : memset(&ga, 0, sizeof(ga));
+
+ 00076 41 b8 10 00 00
+ 00 mov r8d, 16
+ 0007c 33 d2 xor edx, edx
+ 0007e 48 8d 4d 58 lea rcx, QWORD PTR ga$8[rbp]
+ 00082 e8 00 00 00 00 call memset
+ 00087 90 npad 1
+
+; 25 : ga.Group = current.Group;
+
+ 00088 0f b7 45 10 movzx eax, WORD PTR current$6[rbp+8]
+ 0008c 66 89 45 60 mov WORD PTR ga$8[rbp+8], ax
+
+; 26 : ga.Mask = (count >= 64) ? ~(KAFFINITY)0
+
+ 00090 83 7d 34 40 cmp DWORD PTR count$7[rbp], 64 ; 00000040H
+ 00094 72 0d jb SHORT $LN5@sn_set_thr
+ 00096 48 c7 85 c8 01
+ 00 00 ff ff ff
+ ff mov QWORD PTR tv76[rbp], -1
+ 000a1 eb 26 jmp SHORT $LN6@sn_set_thr
+$LN5@sn_set_thr:
+ 000a3 8b 45 34 mov eax, DWORD PTR count$7[rbp]
+ 000a6 b9 01 00 00 00 mov ecx, 1
+ 000ab 48 89 8d d0 01
+ 00 00 mov QWORD PTR tv144[rbp], rcx
+ 000b2 0f b6 c8 movzx ecx, al
+ 000b5 48 8b 85 d0 01
+ 00 00 mov rax, QWORD PTR tv144[rbp]
+ 000bc 48 d3 e0 shl rax, cl
+ 000bf 48 ff c8 dec rax
+ 000c2 48 89 85 c8 01
+ 00 00 mov QWORD PTR tv76[rbp], rax
+$LN6@sn_set_thr:
+ 000c9 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR tv76[rbp]
+ 000d0 48 89 45 58 mov QWORD PTR ga$8[rbp], rax
+
+; 27 : : ((KAFFINITY)1 << count) - 1;
+; 28 : SetThreadGroupAffinity(GetCurrentThread(), &ga, NULL);
+
+ 000d4 ff 15 00 00 00
+ 00 call QWORD PTR __imp_GetCurrentThread
+ 000da 45 33 c0 xor r8d, r8d
+ 000dd 48 8d 55 58 lea rdx, QWORD PTR ga$8[rbp]
+ 000e1 48 8b c8 mov rcx, rax
+ 000e4 ff 15 00 00 00
+ 00 call QWORD PTR __imp_SetThreadGroupAffinity
+ 000ea 90 npad 1
+
+; 29 : return;
+
+ 000eb e9 b3 00 00 00 jmp $LN1@sn_set_thr
+$LN2@sn_set_thr:
+
+; 30 : }
+; 31 : WORD group = (WORD)(core_id / 64);
+
+ 000f0 8b 85 00 02 00
+ 00 mov eax, DWORD PTR core_id$[rbp]
+ 000f6 99 cdq
+ 000f7 83 e2 3f and edx, 63 ; 0000003fH
+ 000fa 03 c2 add eax, edx
+ 000fc c1 f8 06 sar eax, 6
+ 000ff 66 89 85 84 00
+ 00 00 mov WORD PTR group$[rbp], ax
+
+; 32 : int index = core_id % 64;
+
+ 00106 8b 85 00 02 00
+ 00 mov eax, DWORD PTR core_id$[rbp]
+ 0010c 99 cdq
+ 0010d 83 e2 3f and edx, 63 ; 0000003fH
+ 00110 03 c2 add eax, edx
+ 00112 83 e0 3f and eax, 63 ; 0000003fH
+ 00115 2b c2 sub eax, edx
+ 00117 89 85 a4 00 00
+ 00 mov DWORD PTR index$[rbp], eax
+
+; 33 : DWORD count = GetActiveProcessorCount(group);
+
+ 0011d 0f b7 8d 84 00
+ 00 00 movzx ecx, WORD PTR group$[rbp]
+ 00124 ff 15 00 00 00
+ 00 call QWORD PTR __imp_GetActiveProcessorCount
+ 0012a 89 85 c4 00 00
+ 00 mov DWORD PTR count$[rbp], eax
+
+; 34 : if ((DWORD)index >= count)
+
+ 00130 8b 85 c4 00 00
+ 00 mov eax, DWORD PTR count$[rbp]
+ 00136 39 85 a4 00 00
+ 00 cmp DWORD PTR index$[rbp], eax
+ 0013c 72 02 jb SHORT $LN3@sn_set_thr
+
+; 35 : return;
+
+ 0013e eb 63 jmp SHORT $LN1@sn_set_thr
+$LN3@sn_set_thr:
+
+; 36 : GROUP_AFFINITY ga;
+; 37 : memset(&ga, 0, sizeof(ga));
+
+ 00140 41 b8 10 00 00
+ 00 mov r8d, 16
+ 00146 33 d2 xor edx, edx
+ 00148 48 8d 8d e8 00
+ 00 00 lea rcx, QWORD PTR ga$[rbp]
+ 0014f e8 00 00 00 00 call memset
+ 00154 90 npad 1
+
+; 38 : ga.Group = group;
+
+ 00155 0f b7 85 84 00
+ 00 00 movzx eax, WORD PTR group$[rbp]
+ 0015c 66 89 85 f0 00
+ 00 00 mov WORD PTR ga$[rbp+8], ax
+
+; 39 : ga.Mask = (KAFFINITY)1 << index;
+
+ 00163 8b 85 a4 00 00
+ 00 mov eax, DWORD PTR index$[rbp]
+ 00169 b9 01 00 00 00 mov ecx, 1
+ 0016e 48 89 8d c8 01
+ 00 00 mov QWORD PTR tv153[rbp], rcx
+ 00175 0f b6 c8 movzx ecx, al
+ 00178 48 8b 85 c8 01
+ 00 00 mov rax, QWORD PTR tv153[rbp]
+ 0017f 48 d3 e0 shl rax, cl
+ 00182 48 89 85 e8 00
+ 00 00 mov QWORD PTR ga$[rbp], rax
+
+; 40 : SetThreadGroupAffinity(GetCurrentThread(), &ga, NULL);
+
+ 00189 ff 15 00 00 00
+ 00 call QWORD PTR __imp_GetCurrentThread
+ 0018f 45 33 c0 xor r8d, r8d
+ 00192 48 8d 95 e8 00
+ 00 00 lea rdx, QWORD PTR ga$[rbp]
+ 00199 48 8b c8 mov rcx, rax
+ 0019c ff 15 00 00 00
+ 00 call QWORD PTR __imp_SetThreadGroupAffinity
+ 001a2 90 npad 1
+$LN1@sn_set_thr:
+
+; 41 :
+; 42 : #elif SN_IS_OS(SN_OS_LINUX)
+; 43 : cpu_set_t set;
+; 44 : if (core_id < 0) {
+; 45 : CPU_ZERO(&set);
+; 46 : long ncpus = sysconf(_SC_NPROCESSORS_ONLN);
+; 47 : for (long i = 0; i < ncpus; i++)
+; 48 : CPU_SET((int)i, &set);
+; 49 : } else {
+; 50 : CPU_ZERO(&set);
+; 51 : CPU_SET(core_id, &set);
+; 52 : }
+; 53 : pthread_setaffinity_np(pthread_self(), sizeof(set), &set);
+; 54 : #endif
+; 55 : }
+
+ 001a3 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
+ 001a7 48 8d 15 00 00
+ 00 00 lea rdx, OFFSET FLAT:sn_set_thread_affinity$rtcFrameData
+ 001ae e8 00 00 00 00 call _RTC_CheckStackVars
+ 001b3 48 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
+ 001ba 48 33 cd xor rcx, rbp
+ 001bd e8 00 00 00 00 call __security_check_cookie
+ 001c2 48 8d a5 e8 01
+ 00 00 lea rsp, QWORD PTR [rbp+488]
+ 001c9 5f pop rdi
+ 001ca 5d pop rbp
+ 001cb c3 ret 0
+sn_set_thread_affinity ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/t.affinity.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/t.affinity.nativecodeanalysis.sarif
new file mode 100644
index 00000000..14868458
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/t.affinity.nativecodeanalysis.sarif
@@ -0,0 +1,107 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/t.affinity.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "bdd49dec4a40d31498bece7e0c539ba4afb6b4124225017a6b2170fed477265b"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/t.affinity.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/t.affinity.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/t.affinity.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/t.affinity.obj b/obj/StgSharp.Native/Debug/x64/t.affinity.obj
new file mode 100644
index 00000000..8d2a865a
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/t.affinity.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/t.affinity.sbr b/obj/StgSharp.Native/Debug/x64/t.affinity.sbr
new file mode 100644
index 00000000..d254859a
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/t.affinity.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/vc.nativecodeanalysis.all.xml b/obj/StgSharp.Native/Debug/x64/vc.nativecodeanalysis.all.xml
new file mode 100644
index 00000000..afd9bdd9
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/vc.nativecodeanalysis.all.xml
@@ -0,0 +1,27 @@
+
+
+ D:\platform-dev\StgSharp.Native\lib\stbi\
+ stb_image.h
+ 7817
+ 13
+
+ 6262
+ 函数使用堆叠的 "35036" 字节。请考虑将一些数据移动到堆。
+ stbi__load_gif_main
+ stbi__load_gif_main
+ 7817
+
+
+
+ D:\platform-dev\StgSharp.Native\lib\stbi\
+ stb_image.h
+ 7910
+ 13
+
+ 6262
+ 函数使用堆叠的 "34980" 字节。请考虑将一些数据移动到堆。
+ stbi__gif_load
+ stbi__gif_load
+ 7910
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/vc143.idb b/obj/StgSharp.Native/Debug/x64/vc143.idb
new file mode 100644
index 00000000..d259beb2
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/vc143.idb differ
diff --git a/obj/StgSharp.Native/Debug/x64/vc143.pdb b/obj/StgSharp.Native/Debug/x64/vc143.pdb
new file mode 100644
index 00000000..b445fdea
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/vc143.pdb differ
diff --git a/obj/StgSharp.Native/Debug/x64/vector.cod b/obj/StgSharp.Native/Debug/x64/vector.cod
new file mode 100644
index 00000000..149d9abb
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/vector.cod
@@ -0,0 +1,375 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__F49407C4_sn_intrinsic@matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__E15488A2_vector@c DB 01H
+msvcjmc ENDS
+PUBLIC f32_normalize
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$f32_normalize DD imagerel $LN3
+ DD imagerel $LN3+417
+ DD imagerel $unwind$f32_normalize
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$f32_normalize DD 025051801H
+ DD 01132318H
+ DD 0700c0047H
+ DD 0500bH
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\vector.c
+; COMDAT f32_normalize
+_TEXT SEGMENT
+s$ = 16
+a_length_sq$ = 64
+a_inv_length$ = 112
+dot_product$ = 160
+b_orthogonal$ = 208
+b_length_sq$ = 256
+b_inv_length$ = 304
+source$ = 560
+target$ = 568
+f32_normalize PROC ; COMDAT
+
+; 5 : {
+
+$LN3:
+ 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000a 55 push rbp
+ 0000b 57 push rdi
+ 0000c 48 81 ec 38 02
+ 00 00 sub rsp, 568 ; 00000238H
+ 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 00018 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__E15488A2_vector@c
+ 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00024 90 npad 1
+
+; 6 : register __m128 s = _mm_load_ps(&source->f32_x);
+
+ 00025 48 8b 85 30 02
+ 00 00 mov rax, QWORD PTR source$[rbp]
+ 0002c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
+ 0002f 0f 29 45 10 movaps XMMWORD PTR s$[rbp], xmm0
+
+; 7 : register __m128 a_length_sq = _mm_mul_ps(s, s);
+
+ 00033 0f 28 45 10 movaps xmm0, XMMWORD PTR s$[rbp]
+ 00037 0f 59 45 10 mulps xmm0, XMMWORD PTR s$[rbp]
+ 0003b 0f 29 45 40 movaps XMMWORD PTR a_length_sq$[rbp], xmm0
+
+; 8 : a_length_sq = _mm_add_ps(a_length_sq,
+
+ 0003f 0f 28 45 40 movaps xmm0, XMMWORD PTR a_length_sq$[rbp]
+ 00043 0f c6 45 40 b1 shufps xmm0, XMMWORD PTR a_length_sq$[rbp], 177 ; 000000b1H
+ 00048 0f 28 4d 40 movaps xmm1, XMMWORD PTR a_length_sq$[rbp]
+ 0004c 0f 58 c8 addps xmm1, xmm0
+ 0004f 0f 28 c1 movaps xmm0, xmm1
+ 00052 0f 29 45 40 movaps XMMWORD PTR a_length_sq$[rbp], xmm0
+
+; 9 : _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(2, 3, 0, 1)));
+; 10 : a_length_sq = _mm_add_ss(a_length_sq,
+
+ 00056 0f 28 45 40 movaps xmm0, XMMWORD PTR a_length_sq$[rbp]
+ 0005a 0f c6 45 40 0e shufps xmm0, XMMWORD PTR a_length_sq$[rbp], 14
+ 0005f 0f 28 4d 40 movaps xmm1, XMMWORD PTR a_length_sq$[rbp]
+ 00063 f3 0f 58 c8 addss xmm1, xmm0
+ 00067 0f 29 4d 40 movaps XMMWORD PTR a_length_sq$[rbp], xmm1
+
+; 11 : _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(0, 0, 3, 2)));
+; 12 :
+; 13 : __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq);
+
+ 0006b 0f 52 45 40 rsqrtps xmm0, XMMWORD PTR a_length_sq$[rbp]
+ 0006f 0f 29 45 70 movaps XMMWORD PTR a_inv_length$[rbp], xmm0
+
+; 14 : s = _mm_mul_ps(s, a_inv_length);
+
+ 00073 0f 28 45 10 movaps xmm0, XMMWORD PTR s$[rbp]
+ 00077 0f 59 45 70 mulps xmm0, XMMWORD PTR a_inv_length$[rbp]
+ 0007b 0f 29 45 10 movaps XMMWORD PTR s$[rbp], xmm0
+
+; 15 :
+; 16 : __m128 dot_product = _mm_mul_ps(target->f32_x[0], s);
+
+ 0007f b8 10 00 00 00 mov eax, 16
+ 00084 48 6b c0 00 imul rax, rax, 0
+ 00088 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR target$[rbp]
+ 0008f 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 00093 0f 59 45 10 mulps xmm0, XMMWORD PTR s$[rbp]
+ 00097 0f 29 85 a0 00
+ 00 00 movaps XMMWORD PTR dot_product$[rbp], xmm0
+
+; 17 : dot_product = _mm_add_ps(dot_product,
+
+ 0009e 0f 28 85 a0 00
+ 00 00 movaps xmm0, XMMWORD PTR dot_product$[rbp]
+ 000a5 0f c6 85 a0 00
+ 00 00 b1 shufps xmm0, XMMWORD PTR dot_product$[rbp], 177 ; 000000b1H
+ 000ad 0f 28 8d a0 00
+ 00 00 movaps xmm1, XMMWORD PTR dot_product$[rbp]
+ 000b4 0f 58 c8 addps xmm1, xmm0
+ 000b7 0f 28 c1 movaps xmm0, xmm1
+ 000ba 0f 29 85 a0 00
+ 00 00 movaps XMMWORD PTR dot_product$[rbp], xmm0
+
+; 18 : _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(2, 3, 0, 1)));
+; 19 : dot_product = _mm_add_ss(dot_product,
+
+ 000c1 0f 28 85 a0 00
+ 00 00 movaps xmm0, XMMWORD PTR dot_product$[rbp]
+ 000c8 0f c6 85 a0 00
+ 00 00 0e shufps xmm0, XMMWORD PTR dot_product$[rbp], 14
+ 000d0 0f 28 8d a0 00
+ 00 00 movaps xmm1, XMMWORD PTR dot_product$[rbp]
+ 000d7 f3 0f 58 c8 addss xmm1, xmm0
+ 000db 0f 29 8d a0 00
+ 00 00 movaps XMMWORD PTR dot_product$[rbp], xmm1
+
+; 20 : _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(0, 0, 3, 2)));
+; 21 :
+; 22 : __m128 b_orthogonal = _mm_sub_ps(target->f32_x[0], _mm_mul_ps(s, dot_product));
+
+ 000e2 0f 28 45 10 movaps xmm0, XMMWORD PTR s$[rbp]
+ 000e6 0f 59 85 a0 00
+ 00 00 mulps xmm0, XMMWORD PTR dot_product$[rbp]
+ 000ed b8 10 00 00 00 mov eax, 16
+ 000f2 48 6b c0 00 imul rax, rax, 0
+ 000f6 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR target$[rbp]
+ 000fd 0f 10 0c 01 movups xmm1, XMMWORD PTR [rcx+rax]
+ 00101 0f 5c c8 subps xmm1, xmm0
+ 00104 0f 28 c1 movaps xmm0, xmm1
+ 00107 0f 29 85 d0 00
+ 00 00 movaps XMMWORD PTR b_orthogonal$[rbp], xmm0
+
+; 23 :
+; 24 : __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal);
+
+ 0010e 0f 28 85 d0 00
+ 00 00 movaps xmm0, XMMWORD PTR b_orthogonal$[rbp]
+ 00115 0f 59 85 d0 00
+ 00 00 mulps xmm0, XMMWORD PTR b_orthogonal$[rbp]
+ 0011c 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR b_length_sq$[rbp], xmm0
+
+; 25 : b_length_sq = _mm_add_ps(b_length_sq,
+
+ 00123 0f 28 85 00 01
+ 00 00 movaps xmm0, XMMWORD PTR b_length_sq$[rbp]
+ 0012a 0f c6 85 00 01
+ 00 00 b1 shufps xmm0, XMMWORD PTR b_length_sq$[rbp], 177 ; 000000b1H
+ 00132 0f 28 8d 00 01
+ 00 00 movaps xmm1, XMMWORD PTR b_length_sq$[rbp]
+ 00139 0f 58 c8 addps xmm1, xmm0
+ 0013c 0f 28 c1 movaps xmm0, xmm1
+ 0013f 0f 29 85 00 01
+ 00 00 movaps XMMWORD PTR b_length_sq$[rbp], xmm0
+
+; 26 : _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(2, 3, 0, 1)));
+; 27 : b_length_sq = _mm_add_ss(b_length_sq,
+
+ 00146 0f 28 85 00 01
+ 00 00 movaps xmm0, XMMWORD PTR b_length_sq$[rbp]
+ 0014d 0f c6 85 00 01
+ 00 00 0e shufps xmm0, XMMWORD PTR b_length_sq$[rbp], 14
+ 00155 0f 28 8d 00 01
+ 00 00 movaps xmm1, XMMWORD PTR b_length_sq$[rbp]
+ 0015c f3 0f 58 c8 addss xmm1, xmm0
+ 00160 0f 29 8d 00 01
+ 00 00 movaps XMMWORD PTR b_length_sq$[rbp], xmm1
+
+; 28 : _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(0, 0, 3, 2)));
+; 29 :
+; 30 : __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq);
+
+ 00167 0f 52 85 00 01
+ 00 00 rsqrtps xmm0, XMMWORD PTR b_length_sq$[rbp]
+ 0016e 0f 29 85 30 01
+ 00 00 movaps XMMWORD PTR b_inv_length$[rbp], xmm0
+
+; 31 : target->f32_x[0] = _mm_mul_ps(b_orthogonal, b_inv_length);
+
+ 00175 0f 28 85 d0 00
+ 00 00 movaps xmm0, XMMWORD PTR b_orthogonal$[rbp]
+ 0017c 0f 59 85 30 01
+ 00 00 mulps xmm0, XMMWORD PTR b_inv_length$[rbp]
+ 00183 b8 10 00 00 00 mov eax, 16
+ 00188 48 6b c0 00 imul rax, rax, 0
+ 0018c 48 8b 8d 38 02
+ 00 00 mov rcx, QWORD PTR target$[rbp]
+ 00193 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 32 : }
+
+ 00197 48 8d a5 18 02
+ 00 00 lea rsp, QWORD PTR [rbp+536]
+ 0019e 5f pop rdi
+ 0019f 5d pop rbp
+ 001a0 c3 ret 0
+f32_normalize ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/vector.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/vector.nativecodeanalysis.sarif
new file mode 100644
index 00000000..76d9085f
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/vector.nativecodeanalysis.sarif
@@ -0,0 +1,123 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/vector.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "b2baa9377820c94a8ddf40982e0e58c55c1085f8fec5736edf2255f3a62890c1"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "94ca202415b5a633ad79580db19ae2b7def151b2e3f5d2dcaa341cfe934a5b0c"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/vector.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/vector.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/vector.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/vector.obj b/obj/StgSharp.Native/Debug/x64/vector.obj
new file mode 100644
index 00000000..8b40b635
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/vector.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/vector.sbr b/obj/StgSharp.Native/Debug/x64/vector.sbr
new file mode 100644
index 00000000..0f0ad770
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/vector.sbr differ
diff --git a/obj/StgSharp.Native/Debug/x64/vector_dot.cod b/obj/StgSharp.Native/Debug/x64/vector_dot.cod
new file mode 100644
index 00000000..4f94afe5
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/vector_dot.cod
@@ -0,0 +1,844 @@
+; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
+
+include listing.inc
+
+INCLUDELIB MSVCRTD
+INCLUDELIB OLDNAMES
+
+_DATA SEGMENT
+COMM infolog:BYTE:0200H
+_DATA ENDS
+msvcjmc SEGMENT
+__5C8CA4D3_mmintrin@h DB 01H
+__8C83BECC_concurrencysal@h DB 01H
+__608E3340_sal@h DB 01H
+__FB67E29A_vadefs@h DB 01H
+__1D1B619C_vcruntime@h DB 01H
+__735960E1_corecrt@h DB 01H
+__211DB995_corecrt_malloc@h DB 01H
+__7CD62D9E_malloc@h DB 01H
+__9DCE0DC8_xmmintrin@h DB 01H
+__4C2AD0C7_winpackagefamily@h DB 01H
+__9DED9ED1_winapifamily@h DB 01H
+__12FEDF4E_sdkddkver@h DB 01H
+__9BAEE128_excpt@h DB 01H
+__B7B53233_stdarg@h DB 01H
+__6B04FCB3_specstrings_undef@h DB 01H
+__F4027AF7_specstrings_strict@h DB 01H
+__B90340D4_sdv_driverspecs@h DB 01H
+__BFFF5AD3_driverspecs@h DB 01H
+__32847078_specstrings@h DB 01H
+__108B2620_corecrt_wctype@h DB 01H
+__6CD6613D_ctype@h DB 01H
+__30902A1F_kernelspecs@h DB 01H
+__376FD5CA_basetsd@h DB 01H
+__13DE2371_errno@h DB 01H
+__8C6AE390_vcruntime_string@h DB 01H
+__8ACB2152_corecrt_memcpy_s@h DB 01H
+__EA6C9D17_corecrt_memory@h DB 01H
+__0DF2AF52_corecrt_wstring@h DB 01H
+__6E889ECC_string@h DB 01H
+__9BEDF4DE_guiddef@h DB 01H
+__51BFD2FE_pshpack4@h DB 01H
+__31652CEA_poppack@h DB 01H
+__5532AE4C_pshpack2@h DB 01H
+__58A52B9A_pshpack8@h DB 01H
+__57741015_pshpack1@h DB 01H
+__CDE68C90_apiset@h DB 01H
+__0BF06E8D_ktmtypes@h DB 01H
+__40C200C0_winnt@h DB 01H
+__9336F789_minwindef@h DB 01H
+__55136115_windef@h DB 01H
+__32205BF0_apisetcconv@h DB 01H
+__B48FDEA0_minwinbase@h DB 01H
+__3551B028_apiquery2@h DB 01H
+__65BE04AA_processenv@h DB 01H
+__4767CA46_fileapi@h DB 01H
+__282E6C4B_fileapifromapp@h DB 01H
+__393AF12C_debugapi@h DB 01H
+__EBC502B8_utilapiset@h DB 01H
+__1EAD8C69_handleapi@h DB 01H
+__D8EF9B29_errhandlingapi@h DB 01H
+__97FC1204_fibersapi@h DB 01H
+__27448220_namedpipeapi@h DB 01H
+__6EA33B2A_profileapi@h DB 01H
+__EAC6F673_heapapi@h DB 01H
+__D64EEA5A_ioapiset@h DB 01H
+__144BD4B6_synchapi@h DB 01H
+__03B1C640_interlockedapi@h DB 01H
+__DC64CB38_processthreadsapi@h DB 01H
+__D719B518_sysinfoapi@h DB 01H
+__410385B1_memoryapi@h DB 01H
+__C1AD45EF_enclaveapi@h DB 01H
+__F4C3AA32_threadpoollegacyapiset@h DB 01H
+__AC5A7A9F_threadpoolapiset@h DB 01H
+__F5254B21_jobapi@h DB 01H
+__BCEA6EE8_jobapi2@h DB 01H
+__D18ACE72_wow64apiset@h DB 01H
+__669B0D4A_libloaderapi@h DB 01H
+__645F7034_securitybaseapi@h DB 01H
+__67E58557_namespaceapi@h DB 01H
+__599D9D3A_systemtopologyapi@h DB 01H
+__2337E373_processtopologyapi@h DB 01H
+__02BFF239_securityappcontainer@h DB 01H
+__9C196272_realtimeapiset@h DB 01H
+__5AB313A4_winerror@h DB 01H
+__B7E7187B_timezoneapi@h DB 01H
+__6DE9EB6F_winbase@h DB 01H
+__56B2AFF2_wingdi@h DB 01H
+__BA1161A9_tvout@h DB 01H
+__0501A018_winuser@h DB 01H
+__EF12FA99_datetimeapi@h DB 01H
+__8FA7C3CA_winnls@h DB 01H
+__390F0C47_stringapiset@h DB 01H
+__28605B0A_wincontypes@h DB 01H
+__BFBDE86D_consoleapi@h DB 01H
+__C3CAFBF0_consoleapi2@h DB 01H
+__C20891C7_consoleapi3@h DB 01H
+__717C98B6_wincon@h DB 01H
+__2884C177_verrsrc@h DB 01H
+__A3FD3A34_winver@h DB 01H
+__6F8AD9F1_reason@h DB 01H
+__4C90FD6F_winreg@h DB 01H
+__68AFEBAD_wnnc@h DB 01H
+__5A7AB086_winnetwk@h DB 01H
+__2FE8A10C_stralign@h DB 01H
+__34558472_winsvc@h DB 01H
+__058845F1_mcx@h DB 01H
+__7F16006B_ime_cmodes@h DB 01H
+__0A3AF599_imm@h DB 01H
+__9349FE86_windows@h DB 01H
+__639A050C_sn_internal@h DB 01H
+__836A8CFC_stdint@h DB 01H
+__714FE6D7_sn_target@h DB 01H
+__60B45B40_corecrt_stdio_config@h DB 01H
+__CFA3741E_corecrt_wstdio@h DB 01H
+__B3FE3303_stdio@h DB 01H
+__955456CD_stddef@h DB 01H
+__99AED4FB_corecrt_search@h DB 01H
+__8B813BF6_corecrt_wstdlib@h DB 01H
+__3D1CA2C3_limits@h DB 01H
+__E8FB0A68_stdlib@h DB 01H
+__F562FA57_stb_image@h DB 01H
+__C95DC661_khrplatform@h DB 01H
+__6C577136_gl@h DB 01H
+__EE638A2C_wgl@h DB 01H
+__8EF9E35C_glfw3@h DB 01H
+__F8AC8404_emmintrin@h DB 01H
+__270DEC8D_pmmintrin@h DB 01H
+__97D49F0F_tmmintrin@h DB 01H
+__BEEF8A8C_smmintrin@h DB 01H
+__DB8D0340_nmmintrin@h DB 01H
+__0E36F90E_wmmintrin@h DB 01H
+__C5A2B409_zmmintrin@h DB 01H
+__F2B616C3_immintrin@h DB 01H
+__9FB25DBE_assert@h DB 01H
+__4E664295_glfw_function@h DB 01H
+__64C0EF11_StgSharpNative@h DB 01H
+__F49407C4_sn_intrinsic@matkernel@h DB 01H
+__47E843D2_intrin0@inl@h DB 01H
+__130964FF_setjmp@h DB 01H
+__4875F786_ammintrin@h DB 01H
+__353FD888_intrin@h DB 01H
+__5FE1E9E3_isa_availability@h DB 01H
+__AA840D82_sn_intrinsic@h DB 01H
+__9CC1CD6B_vector_dot@c DB 01H
+msvcjmc ENDS
+CONST SEGMENT
+avxdot_indices DD 00H
+ DD 04H
+ DD 01H
+ DD 05H
+ DD 02H
+ DD 03H
+ DD 06H
+ DD 07H
+CONST ENDS
+PUBLIC dot_41_sse
+PUBLIC dot_41_avx
+PUBLIC dot_42_sse
+PUBLIC dot_42_avx
+PUBLIC __JustMyCode_Default
+EXTRN _RTC_InitBase:PROC
+EXTRN _RTC_Shutdown:PROC
+EXTRN __CheckForDebuggerJustMyCode:PROC
+; COMDAT pdata
+pdata SEGMENT
+$pdata$dot_41_sse DD imagerel $LN3
+ DD imagerel $LN3+281
+ DD imagerel $unwind$dot_41_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$dot_41_avx DD imagerel $LN3
+ DD imagerel $LN3+215
+ DD imagerel $unwind$dot_41_avx
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$dot_42_sse DD imagerel $LN3
+ DD imagerel $LN3+678
+ DD imagerel $unwind$dot_42_sse
+pdata ENDS
+; COMDAT pdata
+pdata SEGMENT
+$pdata$dot_42_avx DD imagerel $LN3
+ DD imagerel $LN3+446
+ DD imagerel $unwind$dot_42_avx
+pdata ENDS
+; COMDAT rtc$TMZ
+rtc$TMZ SEGMENT
+_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
+rtc$TMZ ENDS
+; COMDAT rtc$IMZ
+rtc$IMZ SEGMENT
+_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
+rtc$IMZ ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$dot_42_avx DD 02d062801H
+ DD 011a231fH
+ DD 07013003aH
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$dot_42_sse DD 025051d01H
+ DD 0118231dH
+ DD 07011001dH
+ DD 05010H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$dot_41_avx DD 02d062801H
+ DD 011a231fH
+ DD 070130032H
+ DD 0d0115012H
+xdata ENDS
+; COMDAT xdata
+xdata SEGMENT
+$unwind$dot_41_sse DD 025051d01H
+ DD 0118231dH
+ DD 07011001dH
+ DD 05010H
+xdata ENDS
+; Function compile flags: /Odt
+; COMDAT __JustMyCode_Default
+_TEXT SEGMENT
+__JustMyCode_Default PROC ; COMDAT
+ 00000 c2 00 00 ret 0
+__JustMyCode_Default ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c
+; COMDAT dot_42_avx
+_TEXT SEGMENT
+temp$ = 32
+vector_stream$ = 96
+result$ = 160
+transpose$ = 464
+vector$ = 472
+ans$ = 480
+dot_42_avx PROC ; COMDAT
+
+; 51 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec d0 01
+ 00 00 sub rsp, 464 ; 000001d0H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__9CC1CD6B_vector_dot@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 52 : __m256 temp = transpose->f32_y[0];
+
+ 00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e 49 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR transpose$[r13]
+ 00045 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
+ 0004a c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
+
+; 53 : __m256 vector_stream = _mm256_set_m128(vector[1], vector[0]);
+
+ 0004f b8 10 00 00 00 mov eax, 16
+ 00054 48 6b c0 01 imul rax, rax, 1
+ 00058 b9 10 00 00 00 mov ecx, 16
+ 0005d 48 6b c9 00 imul rcx, rcx, 0
+ 00061 49 8b 95 d8 01
+ 00 00 mov rdx, QWORD PTR vector$[r13]
+ 00068 c5 f8 10 04 0a vmovups xmm0, XMMWORD PTR [rdx+rcx]
+ 0006d 49 8b 8d d8 01
+ 00 00 mov rcx, QWORD PTR vector$[r13]
+ 00074 c4 e3 7d 18 04
+ 01 01 vinsertf128 ymm0, ymm0, XMMWORD PTR [rcx+rax], 1
+ 0007b c5 fc 11 45 60 vmovups YMMWORD PTR vector_stream$[rbp], ymm0
+
+; 54 :
+; 55 : __m256 result = _mm256_dp_ps(temp, vector_stream, 0B11110001);
+
+ 00080 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
+ 00085 c4 e3 7d 40 45
+ 60 f1 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 241 ; 000000f1H
+ 0008c c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
+
+; 56 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001);
+
+ 00094 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
+ 00099 c4 e3 7d 06 45
+ 20 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1
+ 000a0 c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
+
+; 57 : result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11110010), 0B00100010);
+
+ 000a5 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
+ 000aa c4 e3 7d 40 45
+ 60 f2 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 242 ; 000000f2H
+ 000b1 c5 fc 10 8d a0
+ 00 00 00 vmovups ymm1, YMMWORD PTR result$[rbp]
+ 000b9 c4 e3 75 0c c0
+ 22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H
+ 000bf c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
+
+; 58 :
+; 59 : temp = transpose->f32_y[1];
+
+ 000c7 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 000cc 48 6b c0 01 imul rax, rax, 1
+ 000d0 49 8b 8d d0 01
+ 00 00 mov rcx, QWORD PTR transpose$[r13]
+ 000d7 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
+ 000dc c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
+
+; 60 : result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11110100), 0B01000100);
+
+ 000e1 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
+ 000e6 c4 e3 7d 40 45
+ 60 f4 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 244 ; 000000f4H
+ 000ed c5 fc 10 8d a0
+ 00 00 00 vmovups ymm1, YMMWORD PTR result$[rbp]
+ 000f5 c4 e3 75 0c c0
+ 44 vblendps ymm0, ymm1, ymm0, 68 ; 00000044H
+ 000fb c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
+
+; 61 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001);
+
+ 00103 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
+ 00108 c4 e3 7d 06 45
+ 20 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1
+ 0010f c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
+
+; 62 : result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11111000), 0B10001000);
+
+ 00114 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
+ 00119 c4 e3 7d 40 45
+ 60 f8 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 248 ; 000000f8H
+ 00120 c5 fc 10 8d a0
+ 00 00 00 vmovups ymm1, YMMWORD PTR result$[rbp]
+ 00128 c4 e3 75 0c c0
+ 88 vblendps ymm0, ymm1, ymm0, 136 ; 00000088H
+ 0012e c5 fc 11 85 a0
+ 00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
+
+; 63 :
+; 64 : ans[0] = _mm256_castps256_ps128(result);
+
+ 00136 c5 f8 10 85 a0
+ 00 00 00 vmovups xmm0, XMMWORD PTR result$[rbp]
+ 0013e b8 10 00 00 00 mov eax, 16
+ 00143 48 6b c0 00 imul rax, rax, 0
+ 00147 49 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 0014e 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 65 : ans[1] = _mm256_extractf128_ps(result, 1);
+
+ 00152 c5 fc 10 85 a0
+ 00 00 00 vmovups ymm0, YMMWORD PTR result$[rbp]
+ 0015a c4 e3 7d 19 c0
+ 01 vextractf128 xmm0, ymm0, 1
+ 00160 b8 10 00 00 00 mov eax, 16
+ 00165 48 6b c0 01 imul rax, rax, 1
+ 00169 49 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 00170 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 66 : ans[1] = _mm_shuffle_ps(ans[1], ans[1], _MM_SHUFFLE(2, 3, 0, 1));
+
+ 00174 b8 10 00 00 00 mov eax, 16
+ 00179 48 6b c0 01 imul rax, rax, 1
+ 0017d b9 10 00 00 00 mov ecx, 16
+ 00182 48 6b c9 01 imul rcx, rcx, 1
+ 00186 49 8b 95 e0 01
+ 00 00 mov rdx, QWORD PTR ans$[r13]
+ 0018d 4d 8b 85 e0 01
+ 00 00 mov r8, QWORD PTR ans$[r13]
+ 00194 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 00198 41 0f c6 04 00
+ b1 shufps xmm0, XMMWORD PTR [r8+rax], 177 ; 000000b1H
+ 0019e b8 10 00 00 00 mov eax, 16
+ 001a3 48 6b c0 01 imul rax, rax, 1
+ 001a7 49 8b 8d e0 01
+ 00 00 mov rcx, QWORD PTR ans$[r13]
+ 001ae 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 67 : }
+
+ 001b2 49 8d a5 b0 01
+ 00 00 lea rsp, QWORD PTR [r13+432]
+ 001b9 5f pop rdi
+ 001ba 5d pop rbp
+ 001bb 41 5d pop r13
+ 001bd c3 ret 0
+dot_42_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c
+; COMDAT dot_42_sse
+_TEXT SEGMENT
+transpose$ = 224
+vector$ = 232
+ans$ = 240
+dot_42_sse PROC ; COMDAT
+
+; 31 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__9CC1CD6B_vector_dot@c
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 32 : ans[0] = _mm_dp_ps(transpose->f32_x[0], vector[0], 0B11110001);
+
+ 0002a b8 10 00 00 00 mov eax, 16
+ 0002f 48 6b c0 00 imul rax, rax, 0
+ 00033 b9 10 00 00 00 mov ecx, 16
+ 00038 48 6b c9 00 imul rcx, rcx, 0
+ 0003c 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 00043 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 0004a 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 0004e 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 00056 b8 10 00 00 00 mov eax, 16
+ 0005b 48 6b c0 00 imul rax, rax, 0
+ 0005f 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00066 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 33 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], vector[0], 0B11110001),
+
+ 0006a b8 10 00 00 00 mov eax, 16
+ 0006f 48 6b c0 00 imul rax, rax, 0
+ 00073 b9 10 00 00 00 mov ecx, 16
+ 00078 48 6b c9 01 imul rcx, rcx, 1
+ 0007c 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 00083 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 0008a 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 0008e 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 00096 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 0009d 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 000a0 66 0f 3a 21 c8
+ 10 insertps xmm1, xmm0, 16
+ 000a6 0f 28 c1 movaps xmm0, xmm1
+ 000a9 b8 10 00 00 00 mov eax, 16
+ 000ae 48 6b c0 00 imul rax, rax, 0
+ 000b2 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 000b9 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 34 : SSE_INSERT_SIMPLE(1, 2));
+; 35 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], vector[0], 0B11110001),
+
+ 000bd b8 10 00 00 00 mov eax, 16
+ 000c2 48 6b c0 00 imul rax, rax, 0
+ 000c6 b9 10 00 00 00 mov ecx, 16
+ 000cb 48 6b c9 02 imul rcx, rcx, 2
+ 000cf 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 000d6 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 000dd 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 000e1 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 000e9 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000f0 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 000f3 66 0f 3a 21 c8
+ 20 insertps xmm1, xmm0, 32 ; 00000020H
+ 000f9 0f 28 c1 movaps xmm0, xmm1
+ 000fc b8 10 00 00 00 mov eax, 16
+ 00101 48 6b c0 00 imul rax, rax, 0
+ 00105 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0010c 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 36 : SSE_INSERT_SIMPLE(1, 3));
+; 37 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], vector[0], 0B11110001),
+
+ 00110 b8 10 00 00 00 mov eax, 16
+ 00115 48 6b c0 00 imul rax, rax, 0
+ 00119 b9 10 00 00 00 mov ecx, 16
+ 0011e 48 6b c9 03 imul rcx, rcx, 3
+ 00122 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 00129 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 00130 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 00134 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 0013c 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00143 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 00146 66 0f 3a 21 c8
+ 30 insertps xmm1, xmm0, 48 ; 00000030H
+ 0014c 0f 28 c1 movaps xmm0, xmm1
+ 0014f b8 10 00 00 00 mov eax, 16
+ 00154 48 6b c0 00 imul rax, rax, 0
+ 00158 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0015f 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 38 : SSE_INSERT_SIMPLE(1, 4));
+; 39 :
+; 40 : ans[1] = _mm_dp_ps(transpose->f32_x[0], vector[1], 0B11110001);
+
+ 00163 b8 10 00 00 00 mov eax, 16
+ 00168 48 6b c0 01 imul rax, rax, 1
+ 0016c b9 10 00 00 00 mov ecx, 16
+ 00171 48 6b c9 00 imul rcx, rcx, 0
+ 00175 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 0017c 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 00183 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 00187 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 0018f b8 10 00 00 00 mov eax, 16
+ 00194 48 6b c0 01 imul rax, rax, 1
+ 00198 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 0019f 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 41 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], vector[1], 0B11110001),
+
+ 001a3 b8 10 00 00 00 mov eax, 16
+ 001a8 48 6b c0 01 imul rax, rax, 1
+ 001ac b9 10 00 00 00 mov ecx, 16
+ 001b1 48 6b c9 01 imul rcx, rcx, 1
+ 001b5 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 001bc 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 001c3 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 001c7 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 001cf 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 001d6 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 001d9 66 0f 3a 21 c8
+ 10 insertps xmm1, xmm0, 16
+ 001df 0f 28 c1 movaps xmm0, xmm1
+ 001e2 b8 10 00 00 00 mov eax, 16
+ 001e7 48 6b c0 01 imul rax, rax, 1
+ 001eb 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 001f2 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 42 : SSE_INSERT_SIMPLE(1, 2));
+; 43 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], vector[1], 0B11110001),
+
+ 001f6 b8 10 00 00 00 mov eax, 16
+ 001fb 48 6b c0 01 imul rax, rax, 1
+ 001ff b9 10 00 00 00 mov ecx, 16
+ 00204 48 6b c9 02 imul rcx, rcx, 2
+ 00208 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 0020f 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 00216 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 0021a 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 00222 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00229 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 0022c 66 0f 3a 21 c8
+ 20 insertps xmm1, xmm0, 32 ; 00000020H
+ 00232 0f 28 c1 movaps xmm0, xmm1
+ 00235 b8 10 00 00 00 mov eax, 16
+ 0023a 48 6b c0 01 imul rax, rax, 1
+ 0023e 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00245 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 44 : SSE_INSERT_SIMPLE(1, 3));
+; 45 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], vector[1], 0B11110001),
+
+ 00249 b8 10 00 00 00 mov eax, 16
+ 0024e 48 6b c0 01 imul rax, rax, 1
+ 00252 b9 10 00 00 00 mov ecx, 16
+ 00257 48 6b c9 03 imul rcx, rcx, 3
+ 0025b 48 8b 95 e0 00
+ 00 00 mov rdx, QWORD PTR transpose$[rbp]
+ 00262 4c 8b 85 e8 00
+ 00 00 mov r8, QWORD PTR vector$[rbp]
+ 00269 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
+ 0026d 66 41 0f 3a 40
+ 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
+ 00275 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 0027c 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 0027f 66 0f 3a 21 c8
+ 30 insertps xmm1, xmm0, 48 ; 00000030H
+ 00285 0f 28 c1 movaps xmm0, xmm1
+ 00288 b8 10 00 00 00 mov eax, 16
+ 0028d 48 6b c0 01 imul rax, rax, 1
+ 00291 48 8b 8d f0 00
+ 00 00 mov rcx, QWORD PTR ans$[rbp]
+ 00298 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
+
+; 46 : SSE_INSERT_SIMPLE(1, 4));
+; 47 : }
+
+ 0029c 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 002a3 5f pop rdi
+ 002a4 5d pop rbp
+ 002a5 c3 ret 0
+dot_42_sse ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c
+; COMDAT dot_41_avx
+_TEXT SEGMENT
+_double$ = 32
+tmp$ = 96
+transpose$ = 400
+vector$ = 408
+ans$ = 416
+dot_41_avx PROC ; COMDAT
+
+; 20 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 41 55 push r13
+ 00011 55 push rbp
+ 00012 57 push rdi
+ 00013 48 81 ec 90 01
+ 00 00 sub rsp, 400 ; 00000190H
+ 0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
+ 0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
+ 00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
+ 00028 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__9CC1CD6B_vector_dot@c
+ 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00034 90 npad 1
+
+; 21 : __m256 _double = _mm256_set_m128(vector[0], vector[0]);
+
+ 00035 b8 10 00 00 00 mov eax, 16
+ 0003a 48 6b c0 00 imul rax, rax, 0
+ 0003e b9 10 00 00 00 mov ecx, 16
+ 00043 48 6b c9 00 imul rcx, rcx, 0
+ 00047 49 8b 95 98 01
+ 00 00 mov rdx, QWORD PTR vector$[r13]
+ 0004e c5 f8 10 04 0a vmovups xmm0, XMMWORD PTR [rdx+rcx]
+ 00053 49 8b 8d 98 01
+ 00 00 mov rcx, QWORD PTR vector$[r13]
+ 0005a c4 e3 7d 18 04
+ 01 01 vinsertf128 ymm0, ymm0, XMMWORD PTR [rcx+rax], 1
+ 00061 c5 fc 11 45 20 vmovups YMMWORD PTR _double$[rbp], ymm0
+
+; 22 : __m256 tmp = _mm256_dp_ps(transpose->f32_y[0], _double, 0B11110001);
+
+ 00066 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0006b 48 6b c0 00 imul rax, rax, 0
+ 0006f 49 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR transpose$[r13]
+ 00076 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
+ 0007b c4 e3 7d 40 45
+ 20 f1 vdpps ymm0, ymm0, YMMWORD PTR _double$[rbp], 241 ; 000000f1H
+ 00082 c5 fc 11 45 60 vmovups YMMWORD PTR tmp$[rbp], ymm0
+
+; 23 : tmp = _mm256_blend_ps(tmp, _mm256_dp_ps(transpose->f32_y[0], _double, 0B11110010),
+
+ 00087 b8 20 00 00 00 mov eax, 32 ; 00000020H
+ 0008c 48 6b c0 00 imul rax, rax, 0
+ 00090 49 8b 8d 90 01
+ 00 00 mov rcx, QWORD PTR transpose$[r13]
+ 00097 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
+ 0009c c4 e3 7d 40 45
+ 20 f2 vdpps ymm0, ymm0, YMMWORD PTR _double$[rbp], 242 ; 000000f2H
+ 000a3 c5 fc 10 4d 60 vmovups ymm1, YMMWORD PTR tmp$[rbp]
+ 000a8 c4 e3 75 0c c0
+ 22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H
+ 000ae c5 fc 11 45 60 vmovups YMMWORD PTR tmp$[rbp], ymm0
+
+; 24 : 0B00100010);
+; 25 : *ans = _mm256_castps256_ps128(
+
+ 000b3 c5 fe 6f 05 00
+ 00 00 00 vmovdqu ymm0, YMMWORD PTR avxdot_indices
+ 000bb c4 e2 7d 16 45
+ 60 vpermps ymm0, ymm0, YMMWORD PTR tmp$[rbp]
+ 000c1 49 8b 85 a0 01
+ 00 00 mov rax, QWORD PTR ans$[r13]
+ 000c8 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 26 : _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices)));
+; 27 : }
+
+ 000cb 49 8d a5 70 01
+ 00 00 lea rsp, QWORD PTR [r13+368]
+ 000d2 5f pop rdi
+ 000d3 5d pop rbp
+ 000d4 41 5d pop r13
+ 000d6 c3 ret 0
+dot_41_avx ENDP
+_TEXT ENDS
+; Function compile flags: /Odtp /RTCsu /ZI
+; File D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c
+; COMDAT dot_41_sse
+_TEXT SEGMENT
+transpose$ = 224
+vector$ = 232
+ans$ = 240
+dot_41_sse PROC ; COMDAT
+
+; 8 : {
+
+$LN3:
+ 00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
+ 00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
+ 0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
+ 0000f 55 push rbp
+ 00010 57 push rdi
+ 00011 48 81 ec e8 00
+ 00 00 sub rsp, 232 ; 000000e8H
+ 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
+ 0001d 48 8d 0d 00 00
+ 00 00 lea rcx, OFFSET FLAT:__9CC1CD6B_vector_dot@c
+ 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
+ 00029 90 npad 1
+
+; 9 : *ans = _mm_dp_ps(transpose->f32_x[0], *vector, 0B11110001);
+
+ 0002a b8 10 00 00 00 mov eax, 16
+ 0002f 48 6b c0 00 imul rax, rax, 0
+ 00033 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR transpose$[rbp]
+ 0003a 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR vector$[rbp]
+ 00041 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 00045 66 0f 3a 40 02
+ f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
+ 0004b 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00052 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 10 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], *vector, 0B11110001),
+
+ 00055 b8 10 00 00 00 mov eax, 16
+ 0005a 48 6b c0 01 imul rax, rax, 1
+ 0005e 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR transpose$[rbp]
+ 00065 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR vector$[rbp]
+ 0006c 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 00070 66 0f 3a 40 02
+ f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
+ 00076 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 0007d 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 00080 66 0f 3a 21 c8
+ 00 insertps xmm1, xmm0, 0
+ 00086 0f 28 c1 movaps xmm0, xmm1
+ 00089 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 00090 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 11 : SSE_INSERT_SIMPLE(1, 1));
+; 12 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], *vector, 0B11110001),
+
+ 00093 b8 10 00 00 00 mov eax, 16
+ 00098 48 6b c0 02 imul rax, rax, 2
+ 0009c 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR transpose$[rbp]
+ 000a3 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR vector$[rbp]
+ 000aa 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 000ae 66 0f 3a 40 02
+ f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
+ 000b4 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000bb 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 000be 66 0f 3a 21 c8
+ 20 insertps xmm1, xmm0, 32 ; 00000020H
+ 000c4 0f 28 c1 movaps xmm0, xmm1
+ 000c7 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000ce 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 13 : SSE_INSERT_SIMPLE(1, 3));
+; 14 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], *vector, 0B11110001),
+
+ 000d1 b8 10 00 00 00 mov eax, 16
+ 000d6 48 6b c0 03 imul rax, rax, 3
+ 000da 48 8b 8d e0 00
+ 00 00 mov rcx, QWORD PTR transpose$[rbp]
+ 000e1 48 8b 95 e8 00
+ 00 00 mov rdx, QWORD PTR vector$[rbp]
+ 000e8 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
+ 000ec 66 0f 3a 40 02
+ f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
+ 000f2 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 000f9 0f 10 08 movups xmm1, XMMWORD PTR [rax]
+ 000fc 66 0f 3a 21 c8
+ 30 insertps xmm1, xmm0, 48 ; 00000030H
+ 00102 0f 28 c1 movaps xmm0, xmm1
+ 00105 48 8b 85 f0 00
+ 00 00 mov rax, QWORD PTR ans$[rbp]
+ 0010c 0f 11 00 movups XMMWORD PTR [rax], xmm0
+
+; 15 : SSE_INSERT_SIMPLE(1, 4));
+; 16 : }
+
+ 0010f 48 8d a5 c8 00
+ 00 00 lea rsp, QWORD PTR [rbp+200]
+ 00116 5f pop rdi
+ 00117 5d pop rbp
+ 00118 c3 ret 0
+dot_41_sse ENDP
+_TEXT ENDS
+END
diff --git a/obj/StgSharp.Native/Debug/x64/vector_dot.nativecodeanalysis.sarif b/obj/StgSharp.Native/Debug/x64/vector_dot.nativecodeanalysis.sarif
new file mode 100644
index 00000000..dcd92988
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/vector_dot.nativecodeanalysis.sarif
@@ -0,0 +1,123 @@
+{
+ "version": "2.1.0",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
+ "runs": [
+ {
+ "results": [],
+ "tool": {
+ "driver": {
+ "name": "PREfast",
+ "fullName": "MSVC Code Analysis",
+ "version": "14.44.35220.0",
+ "informationUri": "https://aka.ms/cpp/ca"
+ }
+ },
+ "invocations": [
+ {
+ "executionSuccessful": true
+ }
+ ],
+ "artifacts": [
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-src/vector_dot.c"
+ },
+ "roles": [
+ "analysisTarget"
+ ],
+ "hashes": {
+ "sha-256": "ae91c34c7332f5433bc8aff1e46caf1032253883e4764b4249d4e19241454488"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.h"
+ },
+ "hashes": {
+ "sha-256": "94ca202415b5a633ad79580db19ae2b7def151b2e3f5d2dcaa341cfe934a5b0c"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/stgsharpnative.h"
+ },
+ "hashes": {
+ "sha-256": "5eee6b3faf7bf2247fe44898b0fcb71794c346ae2f0b58953e1632a49c1b6c4e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_internal.h"
+ },
+ "hashes": {
+ "sha-256": "7430f5e8582c672b79e266834c290e4d426ce44b7bd3b7e5534f201a48ff6df9"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_target.h"
+ },
+ "hashes": {
+ "sha-256": "b8c543a09db7bd21a2b409476024fa6bec6a5218d88ca036d15584ed453ceb91"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/stbi/stb_image.h"
+ },
+ "hashes": {
+ "sha-256": "c45e3ef56a7d946654740f02e25fcb99a819861155ad1173349a289f2a000ce2"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/gl.h"
+ },
+ "hashes": {
+ "sha-256": "c9d0960c919f9ef4cfa6449f2b0c00f2ad8286b420e01ee7ec34b40c618392fc"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/khrplatform.h"
+ },
+ "hashes": {
+ "sha-256": "f5b69ed6a7bef6651526abb2d1263811d59acdba7a29368bb9be1a0f9e80160f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/wgl.h"
+ },
+ "hashes": {
+ "sha-256": "86d6c58acb0a92b35ce8d94d6817fcec3f73d9e147e8621f468f143db1bbd81f"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/lib/glfw/glfw3.h"
+ },
+ "hashes": {
+ "sha-256": "85c584857dddd780c131940ed69cd516c2b60d61664df9cb254710c3602c1008"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/glfw_function.h"
+ },
+ "hashes": {
+ "sha-256": "4baa73f465e3e347fc0ad0ff666a6db2e83e749acd770f4bee02c12a7b9ec36e"
+ }
+ },
+ {
+ "location": {
+ "uri": "file:///d:/platform-dev/stgsharp.native/sn-head/sn_intrinsic.matkernel.h"
+ },
+ "hashes": {
+ "sha-256": "19f0030c441ae5c4cec0b446b64daa10448fafd44d4fd6dd2232b84f5ed9aad1"
+ }
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/vector_dot.nativecodeanalysis.xml b/obj/StgSharp.Native/Debug/x64/vector_dot.nativecodeanalysis.xml
new file mode 100644
index 00000000..dcdf0885
--- /dev/null
+++ b/obj/StgSharp.Native/Debug/x64/vector_dot.nativecodeanalysis.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/obj/StgSharp.Native/Debug/x64/vector_dot.obj b/obj/StgSharp.Native/Debug/x64/vector_dot.obj
new file mode 100644
index 00000000..0c6162f8
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/vector_dot.obj differ
diff --git a/obj/StgSharp.Native/Debug/x64/vector_dot.sbr b/obj/StgSharp.Native/Debug/x64/vector_dot.sbr
new file mode 100644
index 00000000..f66376ea
Binary files /dev/null and b/obj/StgSharp.Native/Debug/x64/vector_dot.sbr differ
diff --git a/tod.md b/todo.md
similarity index 97%
rename from tod.md
rename to todo.md
index 4aee0d93..3f99d289 100644
--- a/tod.md
+++ b/todo.md
@@ -1,5 +1,5 @@
-1. native 核函数标识关键字宏和展开宏
-2. 核函数参数表重整
-3. C#侧核函数调度器重整适配
-4. 正则表达式源生成
+1. native 核函数标识关键字宏和展开宏
+2. 核函数参数表重整
+3. C#侧核函数调度器重整适配
+4. 正则表达式源生成
5. imgae及pixel存储优化
\ No newline at end of file