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