diff --git a/.cr/personal/Editor/IntelliRush.xml b/.cr/personal/Editor/IntelliRush.xml new file mode 100644 index 00000000..e241e096 --- /dev/null +++ b/.cr/personal/Editor/IntelliRush.xml @@ -0,0 +1,7 @@ + + + + True + + + \ No newline at end of file diff --git a/.cr/personal/Editor/Right Margin Line/Right Margin Line.xml b/.cr/personal/Editor/Right Margin Line/Right Margin Line.xml new file mode 100644 index 00000000..8432cfbd --- /dev/null +++ b/.cr/personal/Editor/Right Margin Line/Right Margin Line.xml @@ -0,0 +1,6 @@ + + + + True + + \ No newline at end of file diff --git a/.cr/personal/Editor/Spell checker.xml b/.cr/personal/Editor/Spell checker.xml new file mode 100644 index 00000000..c6b7944b --- /dev/null +++ b/.cr/personal/Editor/Spell checker.xml @@ -0,0 +1,6 @@ + + + + XmlComments|Comments|Strings|VerbatimStrings|PublicIdentifiers|InternalIdentifiers|ProtectedInternalIdentifiers|ProtectedIdentifiers|PrivateIdentifiers|LocalIdentifiers + + \ No newline at end of file diff --git a/.cr/personal/FavoritesList/List.xml b/.cr/personal/FavoritesList/List.xml new file mode 100644 index 00000000..a60e5ed6 --- /dev/null +++ b/.cr/personal/FavoritesList/List.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.cr/personal/IDE/BuildEngine.xml b/.cr/personal/IDE/BuildEngine.xml new file mode 100644 index 00000000..a1af350d --- /dev/null +++ b/.cr/personal/IDE/BuildEngine.xml @@ -0,0 +1,6 @@ + + + + True + + \ No newline at end of file diff --git a/.cr/personal/IDE/Shortcuts.xml b/.cr/personal/IDE/Shortcuts.xml new file mode 100644 index 00000000..5e9c7e1f --- /dev/null +++ b/.cr/personal/IDE/Shortcuts.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + False + + + + + False + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..a8a7e26e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,135 @@ +[*.cs] + +# CS1591: 缺少对公共可见类型或成员的 XML 注释 +dotnet_diagnostic.CS1591.severity = suggestion + +[*.cs] +#### 命名样式 #### + +# 命名规则 + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# 符号规范 + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# 命名样式 + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case +csharp_using_directive_placement = outside_namespace:silent +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_conditional_delegate_call = true:suggestion +csharp_style_var_for_built_in_types = false:silent +csharp_style_var_when_type_is_apparent = false:silent +csharp_style_var_elsewhere = false:silent +csharp_prefer_simple_using_statement = false:suggestion +csharp_prefer_braces = true:silent +csharp_style_namespace_declarations = block_scoped:silent +csharp_style_prefer_method_group_conversion = true:silent +csharp_style_prefer_top_level_statements = false:silent +csharp_style_prefer_primary_constructors = true:suggestion +csharp_prefer_static_local_function = true:suggestion +csharp_prefer_static_anonymous_function = true:suggestion +csharp_style_prefer_readonly_struct = true:suggestion +csharp_space_around_binary_operators = before_and_after +csharp_indent_labels = one_less_than_current + +[*.vb] +#### 命名样式 #### + +# 命名规则 + +dotnet_naming_rule.interface_should_be_以_i_开始.severity = suggestion +dotnet_naming_rule.interface_should_be_以_i_开始.symbols = interface +dotnet_naming_rule.interface_should_be_以_i_开始.style = 以_i_开始 + +dotnet_naming_rule.类型_should_be_帕斯卡拼写法.severity = suggestion +dotnet_naming_rule.类型_should_be_帕斯卡拼写法.symbols = 类型 +dotnet_naming_rule.类型_should_be_帕斯卡拼写法.style = 帕斯卡拼写法 + +dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.severity = suggestion +dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.symbols = 非字段成员 +dotnet_naming_rule.非字段成员_should_be_帕斯卡拼写法.style = 帕斯卡拼写法 + +# 符号规范 + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.类型.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.类型.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected +dotnet_naming_symbols.类型.required_modifiers = + +dotnet_naming_symbols.非字段成员.applicable_kinds = property, event, method +dotnet_naming_symbols.非字段成员.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected +dotnet_naming_symbols.非字段成员.required_modifiers = + +# 命名样式 + +dotnet_naming_style.以_i_开始.required_prefix = I +dotnet_naming_style.以_i_开始.required_suffix = +dotnet_naming_style.以_i_开始.word_separator = +dotnet_naming_style.以_i_开始.capitalization = pascal_case + +dotnet_naming_style.帕斯卡拼写法.required_prefix = +dotnet_naming_style.帕斯卡拼写法.required_suffix = +dotnet_naming_style.帕斯卡拼写法.word_separator = +dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case + +dotnet_naming_style.帕斯卡拼写法.required_prefix = +dotnet_naming_style.帕斯卡拼写法.required_suffix = +dotnet_naming_style.帕斯卡拼写法.word_separator = +dotnet_naming_style.帕斯卡拼写法.capitalization = pascal_case + +[*.{cs,vb}] +dotnet_style_qualification_for_field = false:silent +dotnet_style_qualification_for_property = false:silent +dotnet_style_qualification_for_method = false:silent +dotnet_style_qualification_for_event = false:silent +dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent +end_of_line = crlf +tab_width = 4 +indent_size = 4 +dotnet_style_operator_placement_when_wrapping = beginning_of_line \ No newline at end of file diff --git a/.filenesting.json b/.filenesting.json new file mode 100644 index 00000000..0b719662 --- /dev/null +++ b/.filenesting.json @@ -0,0 +1,3 @@ +{ + "help":"https://go.microsoft.com/fwlink/?linkid=866610" +} \ No newline at end of file diff --git a/.idea/.idea.StgSharpDevelop/.idea/.gitignore b/.idea/.idea.StgSharpDevelop/.idea/.gitignore new file mode 100644 index 00000000..e698f6b7 --- /dev/null +++ b/.idea/.idea.StgSharpDevelop/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/.idea.StgSharpDevelop.iml +/contentModel.xml +/modules.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.StgSharpDevelop/.idea/.name b/.idea/.idea.StgSharpDevelop/.idea/.name new file mode 100644 index 00000000..f15241e0 --- /dev/null +++ b/.idea/.idea.StgSharpDevelop/.idea/.name @@ -0,0 +1 @@ +StgSharpDevelop \ No newline at end of file diff --git a/.idea/.idea.StgSharpDevelop/.idea/indexLayout.xml b/.idea/.idea.StgSharpDevelop/.idea/indexLayout.xml new file mode 100644 index 00000000..7b08163c --- /dev/null +++ b/.idea/.idea.StgSharpDevelop/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.StgSharpDevelop/.idea/vcs.xml b/.idea/.idea.StgSharpDevelop/.idea/vcs.xml new file mode 100644 index 00000000..6c0b8635 --- /dev/null +++ b/.idea/.idea.StgSharpDevelop/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin b/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin new file mode 100644 index 00000000..3528c3da Binary files /dev/null and b/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin differ diff --git a/.vs/ProjectEvaluation/stgsharp.projects.v9.bin b/.vs/ProjectEvaluation/stgsharp.projects.v9.bin new file mode 100644 index 00000000..04b2538e Binary files /dev/null and b/.vs/ProjectEvaluation/stgsharp.projects.v9.bin differ diff --git a/.vs/ProjectEvaluation/stgsharp.strings.v9.bin b/.vs/ProjectEvaluation/stgsharp.strings.v9.bin new file mode 100644 index 00000000..9d94ac8e Binary files /dev/null and b/.vs/ProjectEvaluation/stgsharp.strings.v9.bin differ diff --git a/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin b/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin new file mode 100644 index 00000000..f443f3d9 Binary files /dev/null and b/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin differ diff --git a/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin b/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin new file mode 100644 index 00000000..d93b3771 Binary files /dev/null and b/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin differ diff --git a/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin b/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin new file mode 100644 index 00000000..8ea2f951 Binary files /dev/null and b/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin differ diff --git a/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db new file mode 100644 index 00000000..5642632e Binary files /dev/null and b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db differ diff --git a/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db new file mode 100644 index 00000000..fb7bb0f5 Binary files /dev/null and b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db differ diff --git a/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm new file mode 100644 index 00000000..2eb24f9d Binary files /dev/null and b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm differ diff --git a/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal new file mode 100644 index 00000000..2fcc9971 Binary files /dev/null and b/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal differ diff --git a/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 b/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 00000000..4db37a43 Binary files /dev/null and b/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/StgSharp/FileContentIndex/08c7e83f-f953-4d1f-b1f0-2cc2f63a4f86.vsidx b/.vs/StgSharp/FileContentIndex/08c7e83f-f953-4d1f-b1f0-2cc2f63a4f86.vsidx new file mode 100644 index 00000000..44b48b3c Binary files /dev/null and b/.vs/StgSharp/FileContentIndex/08c7e83f-f953-4d1f-b1f0-2cc2f63a4f86.vsidx differ diff --git a/.vs/StgSharp/FileContentIndex/a2a6e272-c09e-4ab6-b9cd-e5bc799ca3aa.vsidx b/.vs/StgSharp/FileContentIndex/a2a6e272-c09e-4ab6-b9cd-e5bc799ca3aa.vsidx new file mode 100644 index 00000000..b625ab59 Binary files /dev/null and b/.vs/StgSharp/FileContentIndex/a2a6e272-c09e-4ab6-b9cd-e5bc799ca3aa.vsidx differ diff --git a/.vs/StgSharp/FileContentIndex/b2af4b15-2005-45b7-bc0b-2544eeb4c802.vsidx b/.vs/StgSharp/FileContentIndex/b2af4b15-2005-45b7-bc0b-2544eeb4c802.vsidx new file mode 100644 index 00000000..6a8e8faa Binary files /dev/null and b/.vs/StgSharp/FileContentIndex/b2af4b15-2005-45b7-bc0b-2544eeb4c802.vsidx differ diff --git a/.vs/StgSharp/FileContentIndex/d86c618f-5e44-46d9-b6ab-fcb2f061a544.vsidx b/.vs/StgSharp/FileContentIndex/d86c618f-5e44-46d9-b6ab-fcb2f061a544.vsidx new file mode 100644 index 00000000..35c13ae3 Binary files /dev/null and b/.vs/StgSharp/FileContentIndex/d86c618f-5e44-46d9-b6ab-fcb2f061a544.vsidx differ diff --git a/.vs/StgSharp/FileContentIndex/f29e382a-2eb4-4f7e-9bd4-3da0e3848780.vsidx b/.vs/StgSharp/FileContentIndex/f29e382a-2eb4-4f7e-9bd4-3da0e3848780.vsidx new file mode 100644 index 00000000..e42cba08 Binary files /dev/null and b/.vs/StgSharp/FileContentIndex/f29e382a-2eb4-4f7e-9bd4-3da0e3848780.vsidx differ diff --git a/.vs/StgSharp/v17/.futdcache.v2 b/.vs/StgSharp/v17/.futdcache.v2 new file mode 100644 index 00000000..894d8fbf Binary files /dev/null and b/.vs/StgSharp/v17/.futdcache.v2 differ diff --git a/.vs/StgSharp/v17/.suo b/.vs/StgSharp/v17/.suo new file mode 100644 index 00000000..053638b1 Binary files /dev/null and b/.vs/StgSharp/v17/.suo differ diff --git a/.vs/StgSharp/v17/DocumentLayout.backup.json b/.vs/StgSharp/v17/DocumentLayout.backup.json new file mode 100644 index 00000000..8245954a --- /dev/null +++ b/.vs/StgSharp/v17/DocumentLayout.backup.json @@ -0,0 +1,35 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 0, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Rectangle.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-10-06T17:55:17.338Z" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/StgSharp/v17/DocumentLayout.json b/.vs/StgSharp/v17/DocumentLayout.json new file mode 100644 index 00000000..0ca412c0 --- /dev/null +++ b/.vs/StgSharp/v17/DocumentLayout.json @@ -0,0 +1,137 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\expschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\exptoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\expression\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{B18DE598-5F79-4528-B252-A1BAB0CB840F}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\expression\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 4, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\ExpCollection.cs", + "ViewState": "AgIAADIAAAAAAAAAAAAUwEAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:33:29.273Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ExpSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpSchema.cs", + "ViewState": "AgIAALcAAAAAAAAAAAAkwMcAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:28:02.148Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "ExpElementInstanceBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpElementInstanceBase.cs", + "ViewState": "AgIAAC4AAAAAAAAAAIA5wDcAAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:27:26.12Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpToken.cs", + "ViewState": "AgIAADwAAAAAAAAAAAAAAEAAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:26:18.196Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ViewState": "AgIAAB4AAAAAAAAAAAAwwCUAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:25:22.494Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ViewState": "AgIAADkAAAAAAAAAAAAkwEkAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T05:24:24.946Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "Rectangle.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-10-06T17:55:17.338Z" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/StgSharp/v17/Solution.VC.db b/.vs/StgSharp/v17/Solution.VC.db new file mode 100644 index 00000000..e1f6a685 Binary files /dev/null and b/.vs/StgSharp/v17/Solution.VC.db differ diff --git a/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/CodeChunks.db b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/CodeChunks.db new file mode 100644 index 00000000..307fdf8e Binary files /dev/null and b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/CodeChunks.db differ diff --git a/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db new file mode 100644 index 00000000..76a3f931 Binary files /dev/null and b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db differ diff --git a/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm new file mode 100644 index 00000000..5a52e374 Binary files /dev/null and b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm differ diff --git a/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal new file mode 100644 index 00000000..aeb5ae6a Binary files /dev/null and b/.vs/StgSharpDevelop/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal differ diff --git a/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 b/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 00000000..38582b6a Binary files /dev/null and b/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 differ diff --git a/.vs/StgSharpDevelop/FileContentIndex/494b389f-b0db-43bf-8b40-fdeac43e0c18.vsidx b/.vs/StgSharpDevelop/FileContentIndex/494b389f-b0db-43bf-8b40-fdeac43e0c18.vsidx new file mode 100644 index 00000000..1ead8d77 Binary files /dev/null and b/.vs/StgSharpDevelop/FileContentIndex/494b389f-b0db-43bf-8b40-fdeac43e0c18.vsidx differ diff --git a/.vs/StgSharpDevelop/FileContentIndex/67572a77-45ea-4642-b743-a22a52fe31a1.vsidx b/.vs/StgSharpDevelop/FileContentIndex/67572a77-45ea-4642-b743-a22a52fe31a1.vsidx new file mode 100644 index 00000000..aa85807b Binary files /dev/null and b/.vs/StgSharpDevelop/FileContentIndex/67572a77-45ea-4642-b743-a22a52fe31a1.vsidx differ diff --git a/.vs/StgSharpDevelop/FileContentIndex/74cb9301-09ff-4a54-a13b-f1003be2a7a5.vsidx b/.vs/StgSharpDevelop/FileContentIndex/74cb9301-09ff-4a54-a13b-f1003be2a7a5.vsidx new file mode 100644 index 00000000..22eb280d Binary files /dev/null and b/.vs/StgSharpDevelop/FileContentIndex/74cb9301-09ff-4a54-a13b-f1003be2a7a5.vsidx differ diff --git a/.vs/StgSharpDevelop/FileContentIndex/e06420f7-01ad-4246-83d0-ba6037c2e66f.vsidx b/.vs/StgSharpDevelop/FileContentIndex/e06420f7-01ad-4246-83d0-ba6037c2e66f.vsidx new file mode 100644 index 00000000..0bad915d Binary files /dev/null and b/.vs/StgSharpDevelop/FileContentIndex/e06420f7-01ad-4246-83d0-ba6037c2e66f.vsidx differ diff --git a/.vs/StgSharpDevelop/FileContentIndex/ee3129e5-5772-476b-890a-4039a9811608.vsidx b/.vs/StgSharpDevelop/FileContentIndex/ee3129e5-5772-476b-890a-4039a9811608.vsidx new file mode 100644 index 00000000..5c272021 Binary files /dev/null and b/.vs/StgSharpDevelop/FileContentIndex/ee3129e5-5772-476b-890a-4039a9811608.vsidx differ diff --git a/.vs/StgSharpDevelop/config/applicationhost.config b/.vs/StgSharpDevelop/config/applicationhost.config new file mode 100644 index 00000000..cdd2df8f --- /dev/null +++ b/.vs/StgSharpDevelop/config/applicationhost.config @@ -0,0 +1,1026 @@ + + + + + + + +
+
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.vs/StgSharpDevelop/v17/.futdcache.v2 b/.vs/StgSharpDevelop/v17/.futdcache.v2 new file mode 100644 index 00000000..468551b0 Binary files /dev/null and b/.vs/StgSharpDevelop/v17/.futdcache.v2 differ diff --git a/.vs/StgSharpDevelop/v17/.suo b/.vs/StgSharpDevelop/v17/.suo new file mode 100644 index 00000000..c31aeb97 Binary files /dev/null and b/.vs/StgSharpDevelop/v17/.suo differ diff --git a/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json b/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json new file mode 100644 index 00000000..2808ff35 --- /dev/null +++ b/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json @@ -0,0 +1,2420 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschemabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschemabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expfunctioncallingnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expfunctioncallingnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expbuiltintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expbuiltintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expbinaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expbinaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expelmentsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expelmentsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\generatedexpschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\generatedexpschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\generateunarytoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\generateunarytoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\defaultschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\defaultschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\expnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\expnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expsourcereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expsourcereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\unsafecompute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\unsafecompute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expliteralgenericnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expliteralgenericnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\valuebox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\valuebox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expbasenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expbasenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\iastnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\iastnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expifnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expifnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expexceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expexceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\keyword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\keyword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expunaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expunaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expswitchnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expswitchnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\exprepeatnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\exprepeatnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expindexofnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expindexofnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\expoperatorprecedence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\expoperatorprecedence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodehelper\\expnodenextenumerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodehelper\\expnodenextenumerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodehelper\\expnodeflag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodehelper\\expnodeflag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\leftsperatorprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\leftsperatorprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\codelinehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\codelinehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\itypesource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\itypesource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\token.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\token.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\experrorthrow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\experrorthrow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\string.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\string.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\ihashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\ihashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\a225e5d2-39b7-4ca3-6a63-b9959f4b2e51\\RegexGenerator.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\98806cbf-a6a4-6a33-1ec5-95d1fd43e824\\RegexGenerator.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpCollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpRule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\ClangLoad\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHalfNV.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\StructDefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\InternalIO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glContext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Entities\\IEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\PlainGeometryCollisionSensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\Counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Collections\\CachePool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\TextureProvider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Controlling\\KeyEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\RenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Define\\BufferObjectBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glApiManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpExpressionTree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpInit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\partialdictionaryvalues.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\partialdictionaryvalues.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\listsegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\listsegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\capacityfixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\capacityfixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\threading\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\threading\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\stringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\stringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.model\\step\\filestructure\\stepmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|solutionrelative:stgsharp.model\\step\\filestructure\\stepmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expbuiltinconstant.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expbuiltinconstant.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 147, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 8, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "ExpFunctionCallingNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "ViewState": "AgIAACQAAAAAAAAAAAAwwDAAAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-26T13:07:36.295Z" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAkwCEAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T17:18:47.56Z" + }, + { + "$type": "Document", + "DocumentIndex": 18, + "Title": "DataBinding.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "RelativeToolTip": "StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAUwFcAAAAjAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T17:18:19.263Z" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "Vec3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec3.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Linear\\Vec3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec3.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Linear\\Vec3.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB8AAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T17:01:31.921Z" + }, + { + "$type": "Document", + "DocumentIndex": 25, + "Title": "glApiManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB4AAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T16:53:54.394Z" + }, + { + "$type": "Document", + "DocumentIndex": 26, + "Title": "glContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wCcAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T16:51:38.795Z" + }, + { + "$type": "Document", + "DocumentIndex": 31, + "Title": "Lable.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\Lable.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\Lable.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\Lable.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\Lable.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAAgwCQAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T16:49:02.593Z" + }, + { + "$type": "Document", + "DocumentIndex": 35, + "Title": "ValueBox.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\ValueBox.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\ValueBox.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\ValueBox.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\ValueBox.cs", + "ViewState": "AgIAADkAAAAAAAAAAABDwDsAAAAnAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-24T17:50:41.074Z" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "ExpSchemaBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchemaBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaBase.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchemaBase.cs", + "ViewState": "AgIAADsAAAAAAAAAAAAQwDwAAAArAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T07:18:13.781Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "DefaultSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "ViewState": "AgIAAFsAAAAAAAAAAAAIwGcAAAA3AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T07:10:39.404Z" + }, + { + "$type": "Document", + "DocumentIndex": 46, + "Title": "ExpUnaryOperatorNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAkwC4AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T05:03:28.304Z" + }, + { + "$type": "Document", + "DocumentIndex": 50, + "Title": "StgSharp.Script.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeDocumentMoniker": "StgSharp.Script\\StgSharp.Script.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeToolTip": "StgSharp.Script\\StgSharp.Script.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-19T05:34:14.923Z" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "GenerateUnaryToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAswCkAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-19T05:23:59.671Z" + }, + { + "$type": "Document", + "DocumentIndex": 55, + "Title": "gl.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ViewState": "AgIAADYAAAAAAAAAAAAcwDwAAAArAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-19T00:26:10.683Z" + }, + { + "$type": "Document", + "DocumentIndex": 56, + "Title": "intrinsicContextProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "ViewState": "AgIAADAAAAAAAAAAAAAjwEEAAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:20:26.892Z" + }, + { + "$type": "Document", + "DocumentIndex": 57, + "Title": "StructDefine.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\StructDefine.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\StructDefine.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\StructDefine.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\StructDefine.cs", + "ViewState": "AgIAAC4AAAAAAAAAAAAQwLMDAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:20:12.012Z" + }, + { + "$type": "Document", + "DocumentIndex": 58, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\InternalIO.cs", + "ViewState": "AgIAAHcAAAAAAAAAAAAcwIMAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:07:05.799Z" + }, + { + "$type": "Document", + "DocumentIndex": 54, + "Title": "glfw.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\glfw.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\glfw.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\glfw.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\glfw.cs", + "ViewState": "AgIAADkCAAAAAAAAAAA4wD8CAAA1AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:04:11.433Z" + }, + { + "$type": "Document", + "DocumentIndex": 49, + "Title": "ExpIndexOfNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAkwC4AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-17T04:08:53.537Z" + }, + { + "$type": "Document", + "DocumentIndex": 65, + "Title": "ExpErrorThrow.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "ViewState": "AgIAABkAAAAAAAAAAAA5wCYAAAAgAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-15T03:06:04.73Z" + }, + { + "$type": "Document", + "DocumentIndex": 53, + "Title": "ExpNodeFlag.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "ViewState": "AgIAABMAAAAAAAAAAAAuwCYAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-15T02:40:19.584Z" + }, + { + "$type": "Document", + "DocumentIndex": 44, + "Title": "KeyWord.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "ViewState": "AgIAAB8AAAAAAAAAAAA3wEsAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-14T04:47:04.999Z" + }, + { + "$type": "Document", + "DocumentIndex": 51, + "Title": "ExpOperatorPrecedence.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "ViewState": "AgIAAEkAAAAAAAAAAAAvwEsAAABGAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-14T04:41:25.457Z" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "ExpBinaryOperatorNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "ViewState": "AgIAAFEAAAAAAAAAAAAuwGYAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-14T01:18:30.456Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ExpElmentSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElmentSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpElmentSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElmentSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpElmentSource.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAASwDkAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-13T14:24:35.903Z" + }, + { + "$type": "Document", + "DocumentIndex": 61, + "Title": "ITypeSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ITypeSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\ITypeSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ITypeSource.cs", + "RelativeToolTip": "StgSharp.Script\\ITypeSource.cs", + "ViewState": "AgIAABcAAAAAAAAAAAAnwCkAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-13T11:07:58.417Z" + }, + { + "$type": "Document", + "DocumentIndex": 52, + "Title": "ExpNodeNextEnumerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "ViewState": "AgIAADIAAAAAAAAAAAA0wEEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-12T01:47:44.385Z" + }, + { + "$type": "Document", + "DocumentIndex": 59, + "Title": "LeftSperatorProcess.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "ViewState": "AgIAACEAAAAAAAAAAAA4wDMAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T12:58:53.511Z" + }, + { + "$type": "Document", + "DocumentIndex": 125, + "Title": "PartialDictionaryValues.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "ViewState": "AgIAAFEAAAAAAAAAAAAiwCwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T08:04:17.124Z" + }, + { + "$type": "Document", + "DocumentIndex": 126, + "Title": "IBidrirectionalDictionary.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "ViewState": "AgIAABcAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T07:35:01.068Z" + }, + { + "$type": "Document", + "DocumentIndex": 127, + "Title": "PartialDictionary.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionary.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\PartialDictionary.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionary.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\PartialDictionary.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAA2wCgAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T07:24:32.513Z" + }, + { + "$type": "Document", + "DocumentIndex": 67, + "Title": "CachePool.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CachePool.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\CachePool.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CachePool.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\CachePool.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAkwD0AAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T07:17:14.466Z" + }, + { + "$type": "Document", + "DocumentIndex": 64, + "Title": "Token.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Token.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Token.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Token.cs", + "RelativeToolTip": "StgSharp.Script\\Token.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAAnwDIAAAAlAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T05:41:37.766Z" + }, + { + "$type": "Document", + "DocumentIndex": 128, + "Title": "ListSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\ListSegment.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\ListSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\ListSegment.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\ListSegment.cs", + "ViewState": "AgIAAEAAAAAAAAAAAAA1wEQAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T09:37:18.153Z" + }, + { + "$type": "Document", + "DocumentIndex": 129, + "Title": "CapacityFixedList.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CapacityFixedList.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\CapacityFixedList.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CapacityFixedList.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\CapacityFixedList.cs", + "ViewState": "AgIAAEsAAAAAAAAAAAA0wFgAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T08:42:20.443Z" + }, + { + "$type": "Document", + "DocumentIndex": 130, + "Title": "CancellableTask.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Threading\\CancellableTask.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Threading\\CancellableTask.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Threading\\CancellableTask.cs", + "RelativeToolTip": "StgSharp.Common\\Threading\\CancellableTask.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAAkwCwAAAAsAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T05:42:15.809Z" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "ExpNodeGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "ViewState": "AgIAAFwAAAAAAAAAAAAIwGoAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T05:12:00.635Z" + }, + { + "$type": "Document", + "DocumentIndex": 131, + "Title": "StgSharpC.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.c", + "RelativeDocumentMoniker": "StgSharp.C\\StgSharpC.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.c", + "RelativeToolTip": "StgSharp.C\\StgSharpC.c", + "ViewState": "AgIAAC4AAAAAAAAAAAAQwAIAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-08T01:45:17.805Z" + }, + { + "$type": "Document", + "DocumentIndex": 132, + "Title": "dllmain.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\dllmain.c", + "RelativeDocumentMoniker": "StgSharp.C\\dllmain.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\dllmain.c", + "RelativeToolTip": "StgSharp.C\\dllmain.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-08T01:44:16.485Z" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "ExpSourceReader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSourceReader.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSourceReader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSourceReader.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSourceReader.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAuwGMAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-06T00:16:51.382Z" + }, + { + "$type": "Document", + "DocumentIndex": 70, + "Title": "RegexGenerator.g.cs", + "DocumentMoniker": "C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\a225e5d2-39b7-4ca3-6a63-b9959f4b2e51\\RegexGenerator.g.cs", + "ToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "OverriddenToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "WhenOpened": "2025-02-06T00:04:32.296Z" + }, + { + "$type": "Document", + "DocumentIndex": 71, + "Title": "RegexGenerator.g.cs", + "DocumentMoniker": "C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\98806cbf-a6a4-6a33-1ec5-95d1fd43e824\\RegexGenerator.g.cs", + "ToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "OverriddenToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "WhenOpened": "2025-02-05T12:57:06.575Z" + }, + { + "$type": "Document", + "DocumentIndex": 133, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAABwCAAAAAAAAAAA1wIAAAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:20:25.703Z" + }, + { + "$type": "Document", + "DocumentIndex": 134, + "Title": "Random.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Scalar\\Random.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Scalar\\Random.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Scalar\\Random.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Scalar\\Random.cs", + "ViewState": "AgIAAEkAAAAAAAAAAIA2wFkAAABFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:19:53.61Z" + }, + { + "$type": "Document", + "DocumentIndex": 32, + "Title": "IRegisterType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "ViewState": "AgIAABkAAAAAAAAAAIA2wCUAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:18:39.355Z" + }, + { + "$type": "Document", + "DocumentIndex": 28, + "Title": "UnsafeCompute.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAwwCQAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:02:42.388Z" + }, + { + "$type": "Document", + "DocumentIndex": 29, + "Title": "M256.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M256.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\M256.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M256.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\M256.cs", + "ViewState": "AgIAABUAAAAAAAAAAAA0wCcAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:18:21.246Z" + }, + { + "$type": "Document", + "DocumentIndex": 135, + "Title": "CollisionTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Stg\\CollisionTexture.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Stg\\CollisionTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Stg\\CollisionTexture.cs", + "RelativeToolTip": "StgSharp.Common\\Stg\\CollisionTexture.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAuwKwAAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:21:14.274Z" + }, + { + "$type": "Document", + "DocumentIndex": 136, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ViewState": "AgIAAGIAAAAAAAAAAAA5wEMAAAApAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:21:27.439Z" + }, + { + "$type": "Document", + "DocumentIndex": 137, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ViewState": "AgIAADcAAAAAAAAAAAAuwEEAAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:22:15.162Z" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "TextureGL.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAQwCAAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:22:17.589Z" + }, + { + "$type": "Document", + "DocumentIndex": 30, + "Title": "M128.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M128.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\M128.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M128.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\M128.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAawCsAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T10:16:32.274Z" + }, + { + "$type": "Document", + "DocumentIndex": 27, + "Title": "IntrinsicContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB8AAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T09:19:07.74Z" + }, + { + "$type": "Document", + "DocumentIndex": 69, + "Title": "IHashMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "ViewState": "AgIAABkAAAAAAAAAAAAWwCoAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T09:12:31.188Z" + }, + { + "$type": "Document", + "DocumentIndex": 138, + "Title": "StringHashMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "ViewState": "AgIAAFgAAAAAAAAAAAAuwGIAAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T09:03:17.283Z" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAkwB4AAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:54:45.396Z" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "RandomGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\RandomGenerator.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\RandomGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\RandomGenerator.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\RandomGenerator.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:54:14.058Z" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAA1wCAAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:54:08.029Z" + }, + { + "$type": "Document", + "DocumentIndex": 33, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAAGUAAAAAAAAAAAA3wHUAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:53:58.3Z" + }, + { + "$type": "Document", + "DocumentIndex": 139, + "Title": "StepModel.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "RelativeDocumentMoniker": "StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "RelativeToolTip": "StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAkwCoAAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:53:52.61Z" + }, + { + "$type": "Document", + "DocumentIndex": 68, + "Title": "string.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\string.c", + "RelativeDocumentMoniker": "StgSharp.C\\string.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\string.c", + "RelativeToolTip": "StgSharp.C\\string.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAdAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-04T02:00:58.382Z" + }, + { + "$type": "Document", + "DocumentIndex": 60, + "Title": "CodeLineHelper.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\CodeLineHelper.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\CodeLineHelper.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\CodeLineHelper.cs", + "RelativeToolTip": "StgSharp.Script\\CodeLineHelper.cs", + "ViewState": "AgIAABsAAAAAAAAAAIA1wCQAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T13:24:50.368Z" + }, + { + "$type": "Document", + "DocumentIndex": 62, + "Title": "IScriptSourceProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IScriptSourceProvider.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\IScriptSourceProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IScriptSourceProvider.cs", + "RelativeToolTip": "StgSharp.Script\\IScriptSourceProvider.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAD4vzIAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T07:32:15.431Z" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "ScriptSourceTransmitter.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ScriptSourceTransmitter.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\ScriptSourceTransmitter.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ScriptSourceTransmitter.cs", + "RelativeToolTip": "StgSharp.Script\\ScriptSourceTransmitter.cs", + "ViewState": "AgIAAE0AAAAAAAAAAAA4wF4AAAA+AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T06:46:02.837Z" + }, + { + "$type": "Document", + "DocumentIndex": 140, + "Title": "ExpBuiltinConstant.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "ViewState": "AgIAABwAAAAAAAAAAAA2wCcAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T01:09:54.873Z" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpType.cs", + "ViewState": "AgIAADIAAAAAAAAAAIA5wDgAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:31.522Z" + }, + { + "$type": "Document", + "DocumentIndex": 39, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpRule.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAkwCsAAAAlAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:26.812Z" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "ViewState": "AgIAAD0AAAAAAAAAAAA2wF0AAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:44.132Z" + }, + { + "$type": "Document", + "DocumentIndex": 40, + "Title": "ExpCollectionInstance.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "ViewState": "AgIAAG4AAAAAAAAAAAAywH8AAAAXAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:18.867Z" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "GeneratedExpSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "ViewState": "AgIAADcAAAAAAAAAAAA0wGMAAAAwAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:08:05.896Z" + }, + { + "$type": "Document", + "DocumentIndex": 123, + "Title": "smmintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ViewState": "AgIAAL0AAAAAAAAAAAAmwMgAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:10.906Z" + }, + { + "$type": "Document", + "DocumentIndex": 124, + "Title": "intrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ViewState": "AgIAAJMCAAAAAAAAAAAmwJ4CAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:07.411Z" + }, + { + "$type": "Document", + "DocumentIndex": 141, + "Title": "stb_image.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeDocumentMoniker": "StgSharp.C\\stb_image.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeToolTip": "StgSharp.C\\stb_image.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:31:27.068Z" + }, + { + "$type": "Document", + "DocumentIndex": 142, + "Title": "mat2.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat2.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeToolTip": "StgSharp.C\\mat2.c", + "ViewState": "AgIAABAAAAAAAAAAAAAUwB4AAAA6AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T12:00:34.568Z" + }, + { + "$type": "Document", + "DocumentIndex": 143, + "Title": "mat4.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat4.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeToolTip": "StgSharp.C\\mat4.c", + "ViewState": "AgIAAD8AAAAAAAAAAAAowAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:51.767Z" + }, + { + "$type": "Document", + "DocumentIndex": 144, + "Title": "mat3.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat3.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeToolTip": "StgSharp.C\\mat3.c", + "ViewState": "AgIAAEwAAAAAAAAAAAAewGMAAABTAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:49.386Z" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "ViewMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\ViewMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeToolTip": "StgSharpDebug\\View\\ViewMain.cs", + "ViewState": "AgIAAC0AAAAAAAAAAAA9wDwAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T09:52:43.909Z" + }, + { + "$type": "Document", + "DocumentIndex": 17, + "Title": "NewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\NewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeToolTip": "StgSharpDebug\\View\\NewRender.cs", + "ViewState": "AgIAABkAAAAAAAAAAAA4wCEAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T05:16:41.098Z" + }, + { + "$type": "Document", + "DocumentIndex": 145, + "Title": "intrinsic.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeDocumentMoniker": "StgSharp.C\\intrinsic.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeToolTip": "StgSharp.C\\intrinsic.c", + "ViewState": "AgIAAFAAAAAAAAAAAAA0wIcAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T04:44:14.087Z" + }, + { + "$type": "Document", + "DocumentIndex": 146, + "Title": "StgSharpC.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeDocumentMoniker": "StgSharp.C\\StgSharpC.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeToolTip": "StgSharp.C\\StgSharpC.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:22:45.65Z" + }, + { + "$type": "Document", + "DocumentIndex": 147, + "Title": "ssc_intrinsic.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeDocumentMoniker": "StgSharp.C\\ssc_intrinsic.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeToolTip": "StgSharp.C\\ssc_intrinsic.h", + "ViewState": "AgIAAGcAAAAAAAAAAAA2wHwAAABHAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:13:17.69Z" + }, + { + "$type": "Document", + "DocumentIndex": 148, + "Title": "hash.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeDocumentMoniker": "StgSharp.C\\hash.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeToolTip": "StgSharp.C\\hash.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAyAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T02:12:53.091Z" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "ExpEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "ViewState": "AgIAADoAAAAAAAAAAAA+wDMAAAA9AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T03:23:40.771Z" + }, + { + "$type": "Document", + "DocumentIndex": 34, + "Title": "ExpLiteralGenericNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAxwCsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T13:29:07.592Z" + }, + { + "$type": "Document", + "DocumentIndex": 41, + "Title": "AbstractSyntaxTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeToolTip": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ViewState": "AgIAACsAAAAAAAAAAAAkwDoAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:24:37.33Z" + }, + { + "$type": "Document", + "DocumentIndex": 37, + "Title": "IASTNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IASTNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\IASTNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IASTNode.cs", + "RelativeToolTip": "StgSharp.Script\\IASTNode.cs", + "ViewState": "AgIAACQAAAAAAAAAAIA5wCgAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:23:34.89Z" + }, + { + "$type": "Document", + "DocumentIndex": 48, + "Title": "ExpRepeatNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAkwC8AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:19:24.455Z" + }, + { + "$type": "Document", + "DocumentIndex": 63, + "Title": "ExpSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSource.cs", + "ViewState": "AgIAADMAAAAAAAAAAAAiwDQAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T06:40:23.62Z" + }, + { + "$type": "Document", + "DocumentIndex": 47, + "Title": "ExpSwitchNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAkwC0AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T03:55:57.477Z" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "ExpBuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "ViewState": "AgIAABwAAAAAAAAAAAA2wDEAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:58:12.25Z" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "ExpElementInstanceBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ViewState": "AgIAACYAAAAAAAAAAIA2wDYAAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:52:10.549Z" + }, + { + "$type": "Document", + "DocumentIndex": 149, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ViewState": "AgIAAFYAAAAAAAAAAAAowFQAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:50:15.736Z" + }, + { + "$type": "Document", + "DocumentIndex": 45, + "Title": "ExpSchemaSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ViewState": "AgIAAEEAAAAAAAAAAAAywE8AAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:51:49.061Z" + }, + { + "$type": "Document", + "DocumentIndex": 36, + "Title": "ExpBaseNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "ViewState": "AgIAAEYAAAAAAAAAAAAAAFkAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:49:36.742Z" + }, + { + "$type": "Document", + "DocumentIndex": 42, + "Title": "ExpIfNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAqwC8AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:12.188Z" + }, + { + "$type": "Document", + "DocumentIndex": 43, + "Title": "ExpExceptions.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpExceptions.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpExceptions.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpExceptions.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpExceptions.cs", + "ViewState": "AgIAAHMAAAAAAAAAAAA/wGwAAAAgAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:11.545Z" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAUwDcAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:34:20.019Z" + }, + { + "$type": "Document", + "DocumentIndex": 66, + "Title": "ExpLogic.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAgwEQAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:26:02.08Z" + }, + { + "$type": "Document", + "DocumentIndex": 38, + "Title": "ExpCompile.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "ViewState": "AgIAAEoAAAAAAAAAAAD4v1QAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:21:02.074Z" + }, + { + "$type": "Document", + "DocumentIndex": 72, + "Title": "ExpIfToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:19:15.148Z" + }, + { + "$type": "Document", + "DocumentIndex": 116, + "Title": "ExpExpressionTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:41:21.842Z" + }, + { + "$type": "Document", + "DocumentIndex": 117, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:32:47.772Z" + }, + { + "$type": "Document", + "DocumentIndex": 118, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:50.179Z" + }, + { + "$type": "Document", + "DocumentIndex": 119, + "Title": "ExpInit.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpInit.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpInit.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:00.82Z" + }, + { + "$type": "Document", + "DocumentIndex": 120, + "Title": "BuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:06:29.505Z" + }, + { + "$type": "Document", + "DocumentIndex": 121, + "Title": "BuiltinConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:03:33.572Z" + }, + { + "$type": "Document", + "DocumentIndex": 122, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T07:24:26.837Z" + }, + { + "$type": "Document", + "DocumentIndex": 75, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-25T05:41:19.849Z" + }, + { + "$type": "Document", + "DocumentIndex": 76, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T12:33:08.481Z" + }, + { + "$type": "Document", + "DocumentIndex": 77, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T11:30:53.865Z" + }, + { + "$type": "Document", + "DocumentIndex": 78, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T10:20:07.164Z" + }, + { + "$type": "Document", + "DocumentIndex": 114, + "Title": "StepHeadReader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "RelativeToolTip": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T06:17:36.213Z" + }, + { + "$type": "Document", + "DocumentIndex": 80, + "Title": "glfw.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\glfw.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", + "RelativeToolTip": "StgSharp\\Internal\\glfw.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-23T14:17:06.842Z" + }, + { + "$type": "Document", + "DocumentIndex": 73, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-23T06:15:58.672Z" + }, + { + "$type": "Document", + "DocumentIndex": 81, + "Title": "gl.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\ClangLoad\\gl.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", + "RelativeToolTip": "StgSharp\\Internal\\ClangLoad\\gl.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:59:46.372Z" + }, + { + "$type": "Document", + "DocumentIndex": 82, + "Title": "glHalfNV.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:55:47.744Z" + }, + { + "$type": "Document", + "DocumentIndex": 83, + "Title": "StructDefine.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\StructDefine.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", + "RelativeToolTip": "StgSharp\\Internal\\StructDefine.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:47:28.65Z" + }, + { + "$type": "Document", + "DocumentIndex": 84, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", + "RelativeToolTip": "StgSharp\\Internal\\InternalIO.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:26:14.827Z" + }, + { + "$type": "Document", + "DocumentIndex": 85, + "Title": "glContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glContext.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:25:50.055Z" + }, + { + "$type": "Document", + "DocumentIndex": 86, + "Title": "glConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:25:22.133Z" + }, + { + "$type": "Document", + "DocumentIndex": 87, + "Title": "glEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:24:52.368Z" + }, + { + "$type": "Document", + "DocumentIndex": 115, + "Title": "StepExpression.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "RelativeToolTip": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T05:33:13.815Z" + }, + { + "$type": "Document", + "DocumentIndex": 88, + "Title": "IEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", + "RelativeDocumentMoniker": "StgSharp\\Entities\\IEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", + "RelativeToolTip": "StgSharp\\Entities\\IEntity.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T05:32:22.664Z" + }, + { + "$type": "Document", + "DocumentIndex": 89, + "Title": "PlainGeometryCollisionSensor.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "RelativeToolTip": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T05:02:23.12Z" + }, + { + "$type": "Document", + "DocumentIndex": 90, + "Title": "Counter.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Counter.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", + "RelativeToolTip": "StgSharp\\Logic\\Counter.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T04:53:50.632Z" + }, + { + "$type": "Document", + "DocumentIndex": 91, + "Title": "CachePool.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", + "RelativeDocumentMoniker": "StgSharp\\Collections\\CachePool.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", + "RelativeToolTip": "StgSharp\\Collections\\CachePool.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T04:52:43.349Z" + }, + { + "$type": "Document", + "DocumentIndex": 79, + "Title": "ExpEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpEntity.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T04:23:23.704Z" + }, + { + "$type": "Document", + "DocumentIndex": 150, + "Title": "ViewModelMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\ViewModelMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", + "RelativeToolTip": "StgSharpDebug\\ViewModelMain.cs", + "ViewState": "AgIAADoAAAAAAAAAAAAiwDEAAAAOAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T03:18:57.741Z" + }, + { + "$type": "Document", + "DocumentIndex": 74, + "Title": "Microsoft.Common.CurrentVersion.targets", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", + "ViewState": "AgIAAEUHAAAAAAAAAIBzwGEHAAAEAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|", + "WhenOpened": "2025-01-22T03:07:54.535Z" + }, + { + "$type": "Document", + "DocumentIndex": 151, + "Title": "UnitTest1.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", + "RelativeDocumentMoniker": "STgSharpTest\\UnitTest1.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", + "RelativeToolTip": "STgSharpTest\\UnitTest1.cs", + "ViewState": "AgIAAF8AAAAAAAAAAAAkwG8AAAA6AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:43:12.616Z" + }, + { + "$type": "Document", + "DocumentIndex": 92, + "Title": "ViewModel.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:42:22.888Z" + }, + { + "$type": "Document", + "DocumentIndex": 93, + "Title": "TextureProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\TextureProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", + "RelativeToolTip": "StgSharp\\Graphics\\TextureProvider.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:40:27.238Z" + }, + { + "$type": "Document", + "DocumentIndex": 94, + "Title": "ImageHelper.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:40:10.936Z" + }, + { + "$type": "Document", + "DocumentIndex": 95, + "Title": "glHandle.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:39:33.236Z" + }, + { + "$type": "Document", + "DocumentIndex": 96, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:33:21.083Z" + }, + { + "$type": "Document", + "DocumentIndex": 97, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:33:00.232Z" + }, + { + "$type": "Document", + "DocumentIndex": 98, + "Title": "TextureGL.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:32:46.745Z" + }, + { + "$type": "Document", + "DocumentIndex": 99, + "Title": "Image.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Image.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:28:33.887Z" + }, + { + "$type": "Document", + "DocumentIndex": 100, + "Title": "KeyEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", + "RelativeDocumentMoniker": "StgSharp\\Controlling\\KeyEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", + "RelativeToolTip": "StgSharp\\Controlling\\KeyEnum.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:28:09.467Z" + }, + { + "$type": "Document", + "DocumentIndex": 101, + "Title": "Uniform.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:43:39.963Z" + }, + { + "$type": "Document", + "DocumentIndex": 102, + "Title": "Vector.Orthogonalize.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:35:59.396Z" + }, + { + "$type": "Document", + "DocumentIndex": 103, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:34:56.352Z" + }, + { + "$type": "Document", + "DocumentIndex": 104, + "Title": "Platform.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", + "RelativeDocumentMoniker": "StgSharp\\Environment\\Platform.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", + "RelativeToolTip": "StgSharp\\Environment\\Platform.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:05:45.886Z" + }, + { + "$type": "Document", + "DocumentIndex": 105, + "Title": "Dialogue.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", + "RelativeDocumentMoniker": "StgSharp\\Environment\\Dialogue.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", + "RelativeToolTip": "StgSharp\\Environment\\Dialogue.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:04:56.665Z" + }, + { + "$type": "Document", + "DocumentIndex": 106, + "Title": "Pixels.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Pixels.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Pixels.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T06:23:16.042Z" + }, + { + "$type": "Document", + "DocumentIndex": 152, + "Title": "Program.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Program.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", + "RelativeToolTip": "StgSharpDebug\\Program.cs", + "ViewState": "AgIAAEAAAAAAAAAAAAAUwEgAAAAyAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T06:08:27.152Z" + }, + { + "$type": "Document", + "DocumentIndex": 153, + "Title": "Partical.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\RenderStream\\Partical.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", + "RelativeToolTip": "StgSharpDebug\\RenderStream\\Partical.cs", + "ViewState": "AgIAAB8BAAAAAAAAAAAkwC8BAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T04:59:25.115Z" + }, + { + "$type": "Document", + "DocumentIndex": 107, + "Title": "RenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\RenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", + "RelativeToolTip": "StgSharp\\Graphics\\RenderStream.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:22:43.965Z" + }, + { + "$type": "Document", + "DocumentIndex": 108, + "Title": "BufferObjectBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:15:15.908Z" + }, + { + "$type": "Document", + "DocumentIndex": 109, + "Title": "Global.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", + "RelativeDocumentMoniker": "StgSharp\\Global.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", + "RelativeToolTip": "StgSharp\\Global.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:14:27.337Z" + }, + { + "$type": "Document", + "DocumentIndex": 110, + "Title": "ViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", + "RelativeToolTip": "StgSharp\\MVVM\\ViewPort.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:12:28.029Z" + }, + { + "$type": "Document", + "DocumentIndex": 111, + "Title": "framework.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T02:24:35.096Z" + }, + { + "$type": "Document", + "DocumentIndex": 112, + "Title": "Matrix42.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix42.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix42.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T02:24:24.915Z" + }, + { + "$type": "Document", + "DocumentIndex": 113, + "Title": "glApiManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T02:23:01.822Z" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/StgSharpDevelop/v17/DocumentLayout.json b/.vs/StgSharpDevelop/v17/DocumentLayout.json new file mode 100644 index 00000000..c60ee568 --- /dev/null +++ b/.vs/StgSharpDevelop/v17/DocumentLayout.json @@ -0,0 +1,2440 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\defaultschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\defaultschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\expcompile.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expbinaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expbinaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\keyword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\keyword.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\compileenv\\expoperatorprecedence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\compileenv\\expoperatorprecedence.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expbasenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expbasenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expliteralgenericnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expliteralgenericnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expbuiltintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expbuiltintype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exptype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\generatedexpschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\generatedexpschema.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschemabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschemabase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expschemasource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expexceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expexceptions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expelmentsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expelmentsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\generateunarytoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\generateunarytoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\expnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\expnodegenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\experrorthrow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\experrorthrow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodehelper\\expnodenextenumerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodehelper\\expnodenextenumerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodehelper\\expnodeflag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodehelper\\expnodeflag.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expfunctioncallingnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expfunctioncallingnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\expentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\scriptsourcetransmitter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expelementinstancebase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expsourcereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expsourcereader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glcontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\unsafecompute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\unsafecompute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\highperformance\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\highperformance\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\data\\valuebox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\data\\valuebox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\iastnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\iastnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\element\\exprule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expcollectioninstance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\abstractsyntaxtree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expifnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expifnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expunaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expunaryoperatornode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expswitchnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expswitchnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\exprepeatnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\exprepeatnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expastnode\\expindexofnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expastnode\\expindexofnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\stgsharp.script.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\clangload\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\internal\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\nodegenerator\\leftsperatorprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\nodegenerator\\leftsperatorprocess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\codelinehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\codelinehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\itypesource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\itypesource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\iscriptsourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\expsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\expsource.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\token.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\token.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\explogic.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\cachepool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\string.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\string.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\ihashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\ihashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\a225e5d2-39b7-4ca3-6a63-b9959f4b2e51\\RegexGenerator.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\98806cbf-a6a4-6a33-1ec5-95d1fd43e824\\RegexGenerator.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpCollection.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpRule.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Modeling\\Expression\\ExpEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\glfw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\ClangLoad\\gl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHalfNV.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\StructDefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Internal\\InternalIO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glContext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Entities\\IEntity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\PlainGeometryCollisionSensor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Logic\\Counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Collections\\CachePool.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\TextureProvider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glHandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Controlling\\KeyEnum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Environment\\Dialogue.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\RenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\Define\\BufferObjectBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Global.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\MVVM\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Math\\Linear\\Matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp\\Graphics\\OpenGL\\glApiManager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpExpressionTree.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpToken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\ExpInit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharp.Script\\Expression\\Element\\ExpType.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\partialdictionaryvalues.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\partialdictionaryvalues.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\partialdictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\listsegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\listsegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\capacityfixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\capacityfixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\threading\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\threading\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.common\\collections\\stringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp.Common\\StgSharp.Common.csproj|solutionrelative:stgsharp.common\\collections\\stringhashmultiplexer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.model\\step\\filestructure\\stepmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}|StgSharp.Model\\StgSharp.Model.csproj|solutionrelative:stgsharp.model\\step\\filestructure\\stepmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharp.script\\express\\builtin\\expbuiltinconstant.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{5B51F5EA-138C-46B5-B36F-1D389968B6CF}|StgSharp.Script\\StgSharp.Script.csproj|solutionrelative:stgsharp.script\\express\\builtin\\expbuiltinconstant.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharp.C\\StgSharpC.vcxproj|solutionrelative:StgSharp.C\\hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}|STgSharpTest\\StgSharpTest.csproj|solutionrelative:stgsharptest\\unittest1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u5185\u6838\u6E90\u4EE3\u7801\\stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 147, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 9, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "ExpFunctionCallingNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpFunctionCallingNode.cs", + "ViewState": "AgIAACQAAAAAAAAAAAAwwDAAAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-26T13:07:36.295Z" + }, + { + "$type": "Document", + "DocumentIndex": 31, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharp.Common\\MVVM\\View\\ViewRender.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAkwCEAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T17:18:47.56Z" + }, + { + "$type": "Document", + "DocumentIndex": 29, + "Title": "DataBinding.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "RelativeToolTip": "StgSharp.Common\\MVVM\\ViewModel\\DataBinding.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAUwFcAAAAjAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T17:18:19.263Z" + }, + { + "$type": "Document", + "DocumentIndex": 33, + "Title": "Vec3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec3.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Linear\\Vec3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec3.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Linear\\Vec3.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB8AAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T17:01:31.921Z" + }, + { + "$type": "Document", + "DocumentIndex": 36, + "Title": "glApiManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glApiManager.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB4AAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T16:53:54.394Z" + }, + { + "$type": "Document", + "DocumentIndex": 37, + "Title": "glContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glContext.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wCcAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T16:51:38.795Z" + }, + { + "$type": "Document", + "DocumentIndex": 42, + "Title": "Lable.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\Lable.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\Lable.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\Lable.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\Lable.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAAgwCQAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-25T16:49:02.593Z" + }, + { + "$type": "Document", + "DocumentIndex": 45, + "Title": "ValueBox.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\ValueBox.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\ValueBox.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\ValueBox.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\ValueBox.cs", + "ViewState": "AgIAADkAAAAAAAAAAABDwDsAAAAnAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-24T17:50:41.074Z" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "ExpSchemaBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchemaBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaBase.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchemaBase.cs", + "ViewState": "AgIAABYAAAAAAAAAAAAYwEgAAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T07:18:13.781Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "DefaultSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\DefaultSchema.cs", + "ViewState": "AgIAAE4AAAAAAAAAAAAmwF8AAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T07:10:39.404Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 51, + "Title": "ExpUnaryOperatorNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpUnaryOperatorNode.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAkwC4AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-20T05:03:28.304Z" + }, + { + "$type": "Document", + "DocumentIndex": 55, + "Title": "StgSharp.Script.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeDocumentMoniker": "StgSharp.Script\\StgSharp.Script.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\StgSharp.Script.csproj", + "RelativeToolTip": "StgSharp.Script\\StgSharp.Script.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2025-02-19T05:34:14.923Z" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "GenerateUnaryToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\GenerateUnaryToken.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAswCwAAAAxAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-19T05:23:59.671Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 57, + "Title": "gl.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\ClangLoad\\gl.cs", + "ViewState": "AgIAADYAAAAAAAAAAAAcwDwAAAArAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-19T00:26:10.683Z" + }, + { + "$type": "Document", + "DocumentIndex": 58, + "Title": "intrinsicContextProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\intrinsicContextProvider.cs", + "ViewState": "AgIAADAAAAAAAAAAAAAjwEEAAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:20:26.892Z" + }, + { + "$type": "Document", + "DocumentIndex": 59, + "Title": "StructDefine.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\StructDefine.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\StructDefine.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\StructDefine.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\StructDefine.cs", + "ViewState": "AgIAAC4AAAAAAAAAAAAQwLMDAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:20:12.012Z" + }, + { + "$type": "Document", + "DocumentIndex": 60, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\InternalIO.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\InternalIO.cs", + "ViewState": "AgIAAHcAAAAAAAAAAAAcwIMAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:07:05.799Z" + }, + { + "$type": "Document", + "DocumentIndex": 56, + "Title": "glfw.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\glfw.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\glfw.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\glfw.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\glfw.cs", + "ViewState": "AgIAADkCAAAAAAAAAAA4wD8CAAA1AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-18T14:04:11.433Z" + }, + { + "$type": "Document", + "DocumentIndex": 54, + "Title": "ExpIndexOfNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpIndexOfNode.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAkwC4AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-17T04:08:53.537Z" + }, + { + "$type": "Document", + "DocumentIndex": 18, + "Title": "ExpErrorThrow.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\ExpErrorThrow.cs", + "ViewState": "AgIAABkAAAAAAAAAAAA5wCYAAAAgAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-15T03:06:04.73Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "ExpNodeFlag.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeFlag.cs", + "ViewState": "AgIAABMAAAAAAAAAAAAuwCYAAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-15T02:40:19.584Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "KeyWord.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\KeyWord.cs", + "ViewState": "AgIAAB8AAAAAAAAAAAA3wDAAAAA/AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-14T04:47:04.999Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "ExpOperatorPrecedence.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\ExpOperatorPrecedence.cs", + "ViewState": "AgIAAEkAAAAAAAAAAAAvwEsAAABGAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-14T04:41:25.457Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ExpBinaryOperatorNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpBinaryOperatorNode.cs", + "ViewState": "AgIAAHgAAAAAAAAAAAA1wIwAAAApAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-14T01:18:30.456Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "ExpElmentSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElmentSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpElmentSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElmentSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpElmentSource.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAASwDkAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-13T14:24:35.903Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 63, + "Title": "ITypeSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ITypeSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\ITypeSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ITypeSource.cs", + "RelativeToolTip": "StgSharp.Script\\ITypeSource.cs", + "ViewState": "AgIAABcAAAAAAAAAAAAnwCkAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-13T11:07:58.417Z" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "ExpNodeNextEnumerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeHelper\\ExpNodeNextEnumerator.cs", + "ViewState": "AgIAABcAAAAAAAAAAAAAwEEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-12T01:47:44.385Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 61, + "Title": "LeftSperatorProcess.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\LeftSperatorProcess.cs", + "ViewState": "AgIAACEAAAAAAAAAAAA4wDMAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T12:58:53.511Z" + }, + { + "$type": "Document", + "DocumentIndex": 126, + "Title": "PartialDictionaryValues.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\PartialDictionaryValues.cs", + "ViewState": "AgIAAFEAAAAAAAAAAAAiwCwAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T08:04:17.124Z" + }, + { + "$type": "Document", + "DocumentIndex": 127, + "Title": "IBidrirectionalDictionary.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\IBidrirectionalDictionary.cs", + "ViewState": "AgIAABcAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T07:35:01.068Z" + }, + { + "$type": "Document", + "DocumentIndex": 128, + "Title": "PartialDictionary.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionary.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\PartialDictionary.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\PartialDictionary.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\PartialDictionary.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAA2wCgAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T07:24:32.513Z" + }, + { + "$type": "Document", + "DocumentIndex": 68, + "Title": "CachePool.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CachePool.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\CachePool.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CachePool.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\CachePool.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAkwD0AAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T07:17:14.466Z" + }, + { + "$type": "Document", + "DocumentIndex": 66, + "Title": "Token.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Token.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Token.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Token.cs", + "RelativeToolTip": "StgSharp.Script\\Token.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAAnwDIAAAAlAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-10T05:41:37.766Z" + }, + { + "$type": "Document", + "DocumentIndex": 129, + "Title": "ListSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\ListSegment.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\ListSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\ListSegment.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\ListSegment.cs", + "ViewState": "AgIAAEAAAAAAAAAAAAA1wEQAAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T09:37:18.153Z" + }, + { + "$type": "Document", + "DocumentIndex": 130, + "Title": "CapacityFixedList.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CapacityFixedList.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\CapacityFixedList.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\CapacityFixedList.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\CapacityFixedList.cs", + "ViewState": "AgIAAEsAAAAAAAAAAAA0wFgAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T08:42:20.443Z" + }, + { + "$type": "Document", + "DocumentIndex": 131, + "Title": "CancellableTask.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Threading\\CancellableTask.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Threading\\CancellableTask.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Threading\\CancellableTask.cs", + "RelativeToolTip": "StgSharp.Common\\Threading\\CancellableTask.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAAkwCwAAAAsAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T05:42:15.809Z" + }, + { + "$type": "Document", + "DocumentIndex": 17, + "Title": "ExpNodeGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\NodeGenerator\\ExpNodeGenerator.cs", + "ViewState": "AgIAAFwAAAAAAAAAAAAywGoAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-09T05:12:00.635Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 132, + "Title": "StgSharpC.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.c", + "RelativeDocumentMoniker": "StgSharp.C\\StgSharpC.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.c", + "RelativeToolTip": "StgSharp.C\\StgSharpC.c", + "ViewState": "AgIAAC4AAAAAAAAAAAAQwAIAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-08T01:45:17.805Z" + }, + { + "$type": "Document", + "DocumentIndex": 133, + "Title": "dllmain.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\dllmain.c", + "RelativeDocumentMoniker": "StgSharp.C\\dllmain.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\dllmain.c", + "RelativeToolTip": "StgSharp.C\\dllmain.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-08T01:44:16.485Z" + }, + { + "$type": "Document", + "DocumentIndex": 27, + "Title": "ExpSourceReader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSourceReader.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSourceReader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSourceReader.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSourceReader.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAuwGMAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-06T00:16:51.382Z" + }, + { + "$type": "Document", + "DocumentIndex": 71, + "Title": "RegexGenerator.g.cs", + "DocumentMoniker": "C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\a225e5d2-39b7-4ca3-6a63-b9959f4b2e51\\RegexGenerator.g.cs", + "ToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "OverriddenToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "WhenOpened": "2025-02-06T00:04:32.296Z" + }, + { + "$type": "Document", + "DocumentIndex": 72, + "Title": "RegexGenerator.g.cs", + "DocumentMoniker": "C:\\Users\\Youmu\\AppData\\Local\\Temp\\VSGeneratedDocuments\\98806cbf-a6a4-6a33-1ec5-95d1fd43e824\\RegexGenerator.g.cs", + "ToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "OverriddenToolTip": "RegexGenerator.g.cs [\u7531 System.Text.RegularExpressions.Generator.RegexGenerator \u751F\u6210]", + "WhenOpened": "2025-02-05T12:57:06.575Z" + }, + { + "$type": "Document", + "DocumentIndex": 134, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAABwCAAAAAAAAAAA1wIAAAAAfAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:20:25.703Z" + }, + { + "$type": "Document", + "DocumentIndex": 135, + "Title": "Random.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Scalar\\Random.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Scalar\\Random.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Scalar\\Random.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Scalar\\Random.cs", + "ViewState": "AgIAAEkAAAAAAAAAAIA2wFkAAABFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:19:53.61Z" + }, + { + "$type": "Document", + "DocumentIndex": 43, + "Title": "IRegisterType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\IRegisterType.cs", + "ViewState": "AgIAABkAAAAAAAAAAIA2wCUAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:18:39.355Z" + }, + { + "$type": "Document", + "DocumentIndex": 39, + "Title": "UnsafeCompute.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\UnsafeCompute.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAwwCQAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T11:02:42.388Z" + }, + { + "$type": "Document", + "DocumentIndex": 40, + "Title": "M256.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M256.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\M256.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M256.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\M256.cs", + "ViewState": "AgIAABUAAAAAAAAAAAA0wCcAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:18:21.246Z" + }, + { + "$type": "Document", + "DocumentIndex": 136, + "Title": "CollisionTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Stg\\CollisionTexture.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Stg\\CollisionTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Stg\\CollisionTexture.cs", + "RelativeToolTip": "StgSharp.Common\\Stg\\CollisionTexture.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAuwKwAAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:21:14.274Z" + }, + { + "$type": "Document", + "DocumentIndex": 137, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ViewState": "AgIAAGIAAAAAAAAAAAA5wEMAAAApAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:21:27.439Z" + }, + { + "$type": "Document", + "DocumentIndex": 138, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ViewState": "AgIAADcAAAAAAAAAAAAuwEEAAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:22:15.162Z" + }, + { + "$type": "Document", + "DocumentIndex": 35, + "Title": "TextureGL.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharp.Common\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAQwCAAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T12:22:17.589Z" + }, + { + "$type": "Document", + "DocumentIndex": 41, + "Title": "M128.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M128.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\HighPerformance\\M128.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\HighPerformance\\M128.cs", + "RelativeToolTip": "StgSharp.Common\\HighPerformance\\M128.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAawCsAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T10:16:32.274Z" + }, + { + "$type": "Document", + "DocumentIndex": 38, + "Title": "IntrinsicContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "RelativeToolTip": "StgSharp.Common\\Internal\\Intrinsic\\IntrinsicContext.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB8AAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T09:19:07.74Z" + }, + { + "$type": "Document", + "DocumentIndex": 70, + "Title": "IHashMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\IHashMultiplexer.cs", + "ViewState": "AgIAABkAAAAAAAAAAAAWwCoAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T09:12:31.188Z" + }, + { + "$type": "Document", + "DocumentIndex": 139, + "Title": "StringHashMultiplexer.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "RelativeToolTip": "StgSharp.Common\\Collections\\StringHashMultiplexer.cs", + "ViewState": "AgIAAFgAAAAAAAAAAAAuwGIAAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T09:03:17.283Z" + }, + { + "$type": "Document", + "DocumentIndex": 32, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharp.Common\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAkwB4AAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:54:45.396Z" + }, + { + "$type": "Document", + "DocumentIndex": 34, + "Title": "RandomGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\RandomGenerator.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\RandomGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\RandomGenerator.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\RandomGenerator.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAA3wB8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:54:14.058Z" + }, + { + "$type": "Document", + "DocumentIndex": 30, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAA1wCAAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:54:08.029Z" + }, + { + "$type": "Document", + "DocumentIndex": 44, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharp.Common\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAAGUAAAAAAAAAAAA3wHUAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:53:58.3Z" + }, + { + "$type": "Document", + "DocumentIndex": 140, + "Title": "StepModel.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "RelativeDocumentMoniker": "StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "RelativeToolTip": "StgSharp.Model\\STEP\\FileStructure\\StepModel.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAkwCoAAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-04T08:53:52.61Z" + }, + { + "$type": "Document", + "DocumentIndex": 69, + "Title": "string.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\string.c", + "RelativeDocumentMoniker": "StgSharp.C\\string.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\string.c", + "RelativeToolTip": "StgSharp.C\\string.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAdAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-04T02:00:58.382Z" + }, + { + "$type": "Document", + "DocumentIndex": 62, + "Title": "CodeLineHelper.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\CodeLineHelper.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\CodeLineHelper.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\CodeLineHelper.cs", + "RelativeToolTip": "StgSharp.Script\\CodeLineHelper.cs", + "ViewState": "AgIAABsAAAAAAAAAAIA1wCQAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T13:24:50.368Z" + }, + { + "$type": "Document", + "DocumentIndex": 64, + "Title": "IScriptSourceProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IScriptSourceProvider.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\IScriptSourceProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IScriptSourceProvider.cs", + "RelativeToolTip": "StgSharp.Script\\IScriptSourceProvider.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAD4vzIAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T07:32:15.431Z" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "ScriptSourceTransmitter.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ScriptSourceTransmitter.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\ScriptSourceTransmitter.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\ScriptSourceTransmitter.cs", + "RelativeToolTip": "StgSharp.Script\\ScriptSourceTransmitter.cs", + "ViewState": "AgIAAE0AAAAAAAAAAAA4wF4AAAA+AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T06:46:02.837Z" + }, + { + "$type": "Document", + "DocumentIndex": 141, + "Title": "ExpBuiltinConstant.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinConstant.cs", + "ViewState": "AgIAABwAAAAAAAAAAAA2wCcAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-03T01:09:54.873Z" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpType.cs", + "ViewState": "AgIAAC8AAAAAAAAAAIA+wEEAAAAiAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:31.522Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 47, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpRule.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpRule.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAkwCsAAAAlAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:11:26.812Z" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpFunction.cs", + "ViewState": "AgIAAD0AAAAAAAAAAAA2wF0AAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:44.132Z" + }, + { + "$type": "Document", + "DocumentIndex": 48, + "Title": "ExpCollectionInstance.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollectionInstance.cs", + "ViewState": "AgIAAG4AAAAAAAAAAAAywH8AAAAXAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:10:18.867Z" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "GeneratedExpSchema.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\GeneratedExpSchema.cs", + "ViewState": "AgIAACUAAAAAAAAAAAAlwDcAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-02T08:08:05.896Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 124, + "Title": "smmintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\smmintrin.h", + "ViewState": "AgIAAL0AAAAAAAAAAAAmwMgAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:10.906Z" + }, + { + "$type": "Document", + "DocumentIndex": 125, + "Title": "intrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\intrin.h", + "ViewState": "AgIAAJMCAAAAAAAAAAAmwJ4CAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:32:07.411Z" + }, + { + "$type": "Document", + "DocumentIndex": 142, + "Title": "stb_image.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeDocumentMoniker": "StgSharp.C\\stb_image.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\stb_image.h", + "RelativeToolTip": "StgSharp.C\\stb_image.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-02T03:31:27.068Z" + }, + { + "$type": "Document", + "DocumentIndex": 143, + "Title": "mat2.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat2.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat2.c", + "RelativeToolTip": "StgSharp.C\\mat2.c", + "ViewState": "AgIAABAAAAAAAAAAAAAUwB4AAAA6AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T12:00:34.568Z" + }, + { + "$type": "Document", + "DocumentIndex": 144, + "Title": "mat4.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat4.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat4.c", + "RelativeToolTip": "StgSharp.C\\mat4.c", + "ViewState": "AgIAAD8AAAAAAAAAAAAowAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:51.767Z" + }, + { + "$type": "Document", + "DocumentIndex": 145, + "Title": "mat3.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeDocumentMoniker": "StgSharp.C\\mat3.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\mat3.c", + "RelativeToolTip": "StgSharp.C\\mat3.c", + "ViewState": "AgIAAEwAAAAAAAAAAAAewGMAAABTAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T10:58:49.386Z" + }, + { + "$type": "Document", + "DocumentIndex": 25, + "Title": "ViewMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\ViewMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\ViewMain.cs", + "RelativeToolTip": "StgSharpDebug\\View\\ViewMain.cs", + "ViewState": "AgIAAC0AAAAAAAAAAAA9wDwAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T09:52:43.909Z" + }, + { + "$type": "Document", + "DocumentIndex": 28, + "Title": "NewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\View\\NewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\View\\NewRender.cs", + "RelativeToolTip": "StgSharpDebug\\View\\NewRender.cs", + "ViewState": "AgIAABkAAAAAAAAAAAA4wCEAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-02-01T05:16:41.098Z" + }, + { + "$type": "Document", + "DocumentIndex": 146, + "Title": "intrinsic.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeDocumentMoniker": "StgSharp.C\\intrinsic.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\intrinsic.c", + "RelativeToolTip": "StgSharp.C\\intrinsic.c", + "ViewState": "AgIAAFAAAAAAAAAAAAA0wIcAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T04:44:14.087Z" + }, + { + "$type": "Document", + "DocumentIndex": 147, + "Title": "StgSharpC.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeDocumentMoniker": "StgSharp.C\\StgSharpC.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\StgSharpC.h", + "RelativeToolTip": "StgSharp.C\\StgSharpC.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:22:45.65Z" + }, + { + "$type": "Document", + "DocumentIndex": 148, + "Title": "ssc_intrinsic.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeDocumentMoniker": "StgSharp.C\\ssc_intrinsic.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\ssc_intrinsic.h", + "RelativeToolTip": "StgSharp.C\\ssc_intrinsic.h", + "ViewState": "AgIAAGcAAAAAAAAAAAA2wHwAAABHAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2025-02-01T02:13:17.69Z" + }, + { + "$type": "Document", + "DocumentIndex": 149, + "Title": "hash.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeDocumentMoniker": "StgSharp.C\\hash.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.C\\hash.c", + "RelativeToolTip": "StgSharp.C\\hash.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAyAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2025-02-01T02:12:53.091Z" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "ExpEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpEntity.cs", + "ViewState": "AgIAADoAAAAAAAAAAAA+wDMAAAA9AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-31T03:23:40.771Z" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "ExpLiteralGenericNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpLiteralGenericNode.cs", + "ViewState": "AgIAAE0AAAAAAAAAAAA2wF8AAAA2AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T13:29:07.592Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 49, + "Title": "AbstractSyntaxTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\AbstractSyntaxTree.cs", + "RelativeToolTip": "StgSharp.Script\\AbstractSyntaxTree.cs", + "ViewState": "AgIAACsAAAAAAAAAAAAkwDoAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:24:37.33Z" + }, + { + "$type": "Document", + "DocumentIndex": 46, + "Title": "IASTNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IASTNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\IASTNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\IASTNode.cs", + "RelativeToolTip": "StgSharp.Script\\IASTNode.cs", + "ViewState": "AgIAACQAAAAAAAAAAIA5wCgAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:23:34.89Z" + }, + { + "$type": "Document", + "DocumentIndex": 53, + "Title": "ExpRepeatNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpRepeatNode.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAkwC8AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T07:19:24.455Z" + }, + { + "$type": "Document", + "DocumentIndex": 65, + "Title": "ExpSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSource.cs", + "ViewState": "AgIAADMAAAAAAAAAAAAiwDQAAAAJAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T06:40:23.62Z" + }, + { + "$type": "Document", + "DocumentIndex": 52, + "Title": "ExpSwitchNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpSwitchNode.cs", + "ViewState": "AgIAABsAAAAAAAAAAAAkwC0AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T03:55:57.477Z" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ExpBuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpBuiltinType.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAwwDcAAABDAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:58:12.25Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 26, + "Title": "ExpElementInstanceBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpElementInstanceBase.cs", + "ViewState": "AgIAACYAAAAAAAAAAIA2wDYAAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:52:10.549Z" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpCollection.cs", + "ViewState": "AgIAAFYAAAAAAAAAAAAowFQAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-30T02:50:15.736Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "ExpSchemaSource.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpSchemaSource.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpSchemaSource.cs", + "ViewState": "AgIAAEEAAAAAAAAAAAAywE8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:51:49.061Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "ExpBaseNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpBaseNode.cs", + "ViewState": "AgIAAIUAAAAAAAAAAAAWwJcAAAA9AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:49:36.742Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 50, + "Title": "ExpIfNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpAstNode\\ExpIfNode.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAqwC8AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:12.188Z" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "ExpExceptions.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpExceptions.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\ExpExceptions.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\ExpExceptions.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\ExpExceptions.cs", + "ViewState": "AgIAAHQAAAAAAAAAAAAUwGwAAAAgAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:38:11.545Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Element\\ExpConst.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAUwDcAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:34:20.019Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 67, + "Title": "ExpLogic.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\Builtin\\ExpLogic.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAgwEQAAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:26:02.08Z" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "ExpCompile.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "RelativeToolTip": "StgSharp.Script\\Express\\CompileEnv\\ExpCompile.cs", + "ViewState": "AgIAAEMAAAAAAAAAAAAQwFMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:21:02.074Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 73, + "Title": "ExpIfToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\ExpIfToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T13:19:15.148Z" + }, + { + "$type": "Document", + "DocumentIndex": 117, + "Title": "ExpExpressionTree.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpExpressionTree.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:41:21.842Z" + }, + { + "$type": "Document", + "DocumentIndex": 118, + "Title": "ExpToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpToken.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpToken.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T12:32:47.772Z" + }, + { + "$type": "Document", + "DocumentIndex": 119, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:50.179Z" + }, + { + "$type": "Document", + "DocumentIndex": 120, + "Title": "ExpInit.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\ExpInit.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\ExpInit.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\ExpInit.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:10:00.82Z" + }, + { + "$type": "Document", + "DocumentIndex": 121, + "Title": "BuiltinType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:06:29.505Z" + }, + { + "$type": "Document", + "DocumentIndex": 122, + "Title": "BuiltinConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Builtin\\BuiltinConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T08:03:33.572Z" + }, + { + "$type": "Document", + "DocumentIndex": 123, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Script\\Expression\\Element\\ExpType.cs", + "RelativeToolTip": "StgSharp.Script\\Expression\\Element\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-29T07:24:26.837Z" + }, + { + "$type": "Document", + "DocumentIndex": 76, + "Title": "ExpCollection.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpCollection.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpCollection.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-25T05:41:19.849Z" + }, + { + "$type": "Document", + "DocumentIndex": 77, + "Title": "ExpRule.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpRule.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpRule.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T12:33:08.481Z" + }, + { + "$type": "Document", + "DocumentIndex": 78, + "Title": "ExpFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpFunction.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpFunction.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T11:30:53.865Z" + }, + { + "$type": "Document", + "DocumentIndex": 79, + "Title": "ExpType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpType.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpType.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T10:20:07.164Z" + }, + { + "$type": "Document", + "DocumentIndex": 115, + "Title": "StepHeadReader.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "RelativeToolTip": "SthSharp.Model\\STEP\\Reader\\StepHeadReader.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-24T06:17:36.213Z" + }, + { + "$type": "Document", + "DocumentIndex": 81, + "Title": "glfw.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\glfw.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\glfw.cs", + "RelativeToolTip": "StgSharp\\Internal\\glfw.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-23T14:17:06.842Z" + }, + { + "$type": "Document", + "DocumentIndex": 74, + "Title": "ExpConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpConst.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-23T06:15:58.672Z" + }, + { + "$type": "Document", + "DocumentIndex": 82, + "Title": "gl.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\ClangLoad\\gl.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\ClangLoad\\gl.cs", + "RelativeToolTip": "StgSharp\\Internal\\ClangLoad\\gl.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:59:46.372Z" + }, + { + "$type": "Document", + "DocumentIndex": 83, + "Title": "glHalfNV.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHalfNV.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:55:47.744Z" + }, + { + "$type": "Document", + "DocumentIndex": 84, + "Title": "StructDefine.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\StructDefine.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\StructDefine.cs", + "RelativeToolTip": "StgSharp\\Internal\\StructDefine.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:47:28.65Z" + }, + { + "$type": "Document", + "DocumentIndex": 85, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharp\\Internal\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Internal\\InternalIO.cs", + "RelativeToolTip": "StgSharp\\Internal\\InternalIO.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:26:14.827Z" + }, + { + "$type": "Document", + "DocumentIndex": 86, + "Title": "glContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glContext.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glContext.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:25:50.055Z" + }, + { + "$type": "Document", + "DocumentIndex": 87, + "Title": "glConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glConst.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glConst.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:25:22.133Z" + }, + { + "$type": "Document", + "DocumentIndex": 88, + "Title": "glEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glEnum.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T08:24:52.368Z" + }, + { + "$type": "Document", + "DocumentIndex": 116, + "Title": "StepExpression.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "RelativeDocumentMoniker": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "RelativeToolTip": "SthSharp.Model\\STEP\\FileStructure\\StepExpression.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T05:33:13.815Z" + }, + { + "$type": "Document", + "DocumentIndex": 89, + "Title": "IEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", + "RelativeDocumentMoniker": "StgSharp\\Entities\\IEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", + "RelativeToolTip": "StgSharp\\Entities\\IEntity.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T05:32:22.664Z" + }, + { + "$type": "Document", + "DocumentIndex": 90, + "Title": "PlainGeometryCollisionSensor.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "RelativeToolTip": "StgSharp\\Logic\\PlainGeometryCollisionSensor.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T05:02:23.12Z" + }, + { + "$type": "Document", + "DocumentIndex": 91, + "Title": "Counter.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Counter.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", + "RelativeToolTip": "StgSharp\\Logic\\Counter.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T04:53:50.632Z" + }, + { + "$type": "Document", + "DocumentIndex": 92, + "Title": "CachePool.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", + "RelativeDocumentMoniker": "StgSharp\\Collections\\CachePool.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Collections\\CachePool.cs", + "RelativeToolTip": "StgSharp\\Collections\\CachePool.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T04:52:43.349Z" + }, + { + "$type": "Document", + "DocumentIndex": 80, + "Title": "ExpEntity.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", + "RelativeDocumentMoniker": "StgSharp.Modeling\\Expression\\ExpEntity.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp.Modeling\\Expression\\ExpEntity.cs", + "RelativeToolTip": "StgSharp.Modeling\\Expression\\ExpEntity.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T04:23:23.704Z" + }, + { + "$type": "Document", + "DocumentIndex": 150, + "Title": "ViewModelMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\ViewModelMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\ViewModelMain.cs", + "RelativeToolTip": "StgSharpDebug\\ViewModelMain.cs", + "ViewState": "AgIAADoAAAAAAAAAAAAiwDEAAAAOAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-22T03:18:57.741Z" + }, + { + "$type": "Document", + "DocumentIndex": 75, + "Title": "Microsoft.Common.CurrentVersion.targets", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\MSBuild\\Current\\Bin\\amd64\\Microsoft.Common.CurrentVersion.targets", + "ViewState": "AgIAAEUHAAAAAAAAAIBzwGEHAAAEAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|", + "WhenOpened": "2025-01-22T03:07:54.535Z" + }, + { + "$type": "Document", + "DocumentIndex": 151, + "Title": "UnitTest1.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", + "RelativeDocumentMoniker": "STgSharpTest\\UnitTest1.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\STgSharpTest\\UnitTest1.cs", + "RelativeToolTip": "STgSharpTest\\UnitTest1.cs", + "ViewState": "AgIAAF8AAAAAAAAAAAAkwG8AAAA6AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:43:12.616Z" + }, + { + "$type": "Document", + "DocumentIndex": 93, + "Title": "ViewModel.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:42:22.888Z" + }, + { + "$type": "Document", + "DocumentIndex": 94, + "Title": "TextureProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\TextureProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureProvider.cs", + "RelativeToolTip": "StgSharp\\Graphics\\TextureProvider.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:40:27.238Z" + }, + { + "$type": "Document", + "DocumentIndex": 95, + "Title": "ImageHelper.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:40:10.936Z" + }, + { + "$type": "Document", + "DocumentIndex": 96, + "Title": "glHandle.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glHandle.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:39:33.236Z" + }, + { + "$type": "Document", + "DocumentIndex": 97, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:33:21.083Z" + }, + { + "$type": "Document", + "DocumentIndex": 98, + "Title": "EBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:33:00.232Z" + }, + { + "$type": "Document", + "DocumentIndex": 99, + "Title": "TextureGL.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:32:46.745Z" + }, + { + "$type": "Document", + "DocumentIndex": 100, + "Title": "Image.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Image.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:28:33.887Z" + }, + { + "$type": "Document", + "DocumentIndex": 101, + "Title": "KeyEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", + "RelativeDocumentMoniker": "StgSharp\\Controlling\\KeyEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyEnum.cs", + "RelativeToolTip": "StgSharp\\Controlling\\KeyEnum.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T12:28:09.467Z" + }, + { + "$type": "Document", + "DocumentIndex": 102, + "Title": "Uniform.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:43:39.963Z" + }, + { + "$type": "Document", + "DocumentIndex": 103, + "Title": "Vector.Orthogonalize.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:35:59.396Z" + }, + { + "$type": "Document", + "DocumentIndex": 104, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:34:56.352Z" + }, + { + "$type": "Document", + "DocumentIndex": 105, + "Title": "Platform.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", + "RelativeDocumentMoniker": "StgSharp\\Environment\\Platform.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", + "RelativeToolTip": "StgSharp\\Environment\\Platform.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:05:45.886Z" + }, + { + "$type": "Document", + "DocumentIndex": 106, + "Title": "Dialogue.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", + "RelativeDocumentMoniker": "StgSharp\\Environment\\Dialogue.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Dialogue.cs", + "RelativeToolTip": "StgSharp\\Environment\\Dialogue.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T11:04:56.665Z" + }, + { + "$type": "Document", + "DocumentIndex": 107, + "Title": "Pixels.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Pixels.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Pixels.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T06:23:16.042Z" + }, + { + "$type": "Document", + "DocumentIndex": 152, + "Title": "Program.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Program.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\Program.cs", + "RelativeToolTip": "StgSharpDebug\\Program.cs", + "ViewState": "AgIAAEAAAAAAAAAAAAAUwEgAAAAyAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T06:08:27.152Z" + }, + { + "$type": "Document", + "DocumentIndex": 153, + "Title": "Partical.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\RenderStream\\Partical.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharpDebug\\RenderStream\\Partical.cs", + "RelativeToolTip": "StgSharpDebug\\RenderStream\\Partical.cs", + "ViewState": "AgIAAB8BAAAAAAAAAAAkwC8BAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T04:59:25.115Z" + }, + { + "$type": "Document", + "DocumentIndex": 108, + "Title": "RenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\RenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", + "RelativeToolTip": "StgSharp\\Graphics\\RenderStream.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:22:43.965Z" + }, + { + "$type": "Document", + "DocumentIndex": 109, + "Title": "BufferObjectBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:15:15.908Z" + }, + { + "$type": "Document", + "DocumentIndex": 110, + "Title": "Global.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", + "RelativeDocumentMoniker": "StgSharp\\Global.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Global.cs", + "RelativeToolTip": "StgSharp\\Global.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:14:27.337Z" + }, + { + "$type": "Document", + "DocumentIndex": 111, + "Title": "ViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", + "RelativeToolTip": "StgSharp\\MVVM\\ViewPort.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T03:12:28.029Z" + }, + { + "$type": "Document", + "DocumentIndex": 112, + "Title": "framework.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T02:24:35.096Z" + }, + { + "$type": "Document", + "DocumentIndex": 113, + "Title": "Matrix42.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix42.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix42.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T02:24:24.915Z" + }, + { + "$type": "Document", + "DocumentIndex": 114, + "Title": "glApiManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-01-21T02:23:01.822Z" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/StgSharpDevelop/v17/HierarchyCache.v1.txt b/.vs/StgSharpDevelop/v17/HierarchyCache.v1.txt new file mode 100644 index 00000000..a6b62038 Binary files /dev/null and b/.vs/StgSharpDevelop/v17/HierarchyCache.v1.txt differ diff --git a/.vs/StgSharpDevelop/v17/ResourceExplorer/settings.json b/.vs/StgSharpDevelop/v17/ResourceExplorer/settings.json new file mode 100644 index 00000000..363c6d57 --- /dev/null +++ b/.vs/StgSharpDevelop/v17/ResourceExplorer/settings.json @@ -0,0 +1 @@ +{"CustomColumnOrderings":{"name":0,"file-path":1,"file-name":2,"neutral-value":3,"neutral-comment":4,"type":5},"ShowValidationErrors":true,"SelectedResourceGroups":[],"VisibleColumnKeys":["name","neutral-value"]} \ No newline at end of file diff --git a/.vs/StgSharpDevelop/v17/Solution.VC.db b/.vs/StgSharpDevelop/v17/Solution.VC.db new file mode 100644 index 00000000..4a59821f Binary files /dev/null and b/.vs/StgSharpDevelop/v17/Solution.VC.db differ diff --git a/.vs/StgSharpDevelop/v17/TestStore/0/017.testlog b/.vs/StgSharpDevelop/v17/TestStore/0/017.testlog new file mode 100644 index 00000000..95282ade Binary files /dev/null and b/.vs/StgSharpDevelop/v17/TestStore/0/017.testlog differ diff --git a/.vs/StgSharpDevelop/v17/TestStore/0/testlog.manifest b/.vs/StgSharpDevelop/v17/TestStore/0/testlog.manifest new file mode 100644 index 00000000..9b77aab6 Binary files /dev/null and b/.vs/StgSharpDevelop/v17/TestStore/0/testlog.manifest differ diff --git a/.vs/StgSharpDevelop/v17/fileList.bin b/.vs/StgSharpDevelop/v17/fileList.bin new file mode 100644 index 00000000..a637191a Binary files /dev/null and b/.vs/StgSharpDevelop/v17/fileList.bin differ diff --git a/DvlErrLog.txt b/DvlErrLog.txt new file mode 100644 index 00000000..ca08bb4f --- /dev/null +++ b/DvlErrLog.txt @@ -0,0 +1,3 @@ +System.Exception: Driver Verification Log needs to be created on a 'Release' configuration. The current selected configuration is ''. + 在 Microsoft.SdvMenuCommand.DriverVerificationLicense..ctor() + 在 Microsoft.SdvMenuCommand.SdvMenuCommandPackage.StaticToolsLogoMenuItemCallback(Object sender, EventArgs e) diff --git a/STgSharpTest/StgSharpTest.csproj b/STgSharpTest/StgSharpTest.csproj new file mode 100644 index 00000000..1ef69cc8 --- /dev/null +++ b/STgSharpTest/StgSharpTest.csproj @@ -0,0 +1,36 @@ + + + + net8.0 + enable + enable + preview + false + true + AnyCPU;x64 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/STgSharpTest/UnitTest1.cs b/STgSharpTest/UnitTest1.cs new file mode 100644 index 00000000..3b842f5b --- /dev/null +++ b/STgSharpTest/UnitTest1.cs @@ -0,0 +1,118 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="UnitTest1.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; +using StgSharp.Collections; +using StgSharp.Script; +using StgSharp.Script.Express; + + +//using StgSharp.Model; + +using System.Collections.Concurrent; +using System.Text.RegularExpressions; + +namespace STgSharpTest +{ + [TestClass] + public class UnitTest1 + { + string testExpPath = @"D:\Programmer\stepcode\data\ap203\ap203.exp"; + + [TestMethod] + public void RegexTest() + { + string sample = "FILE_DESCRIPTION(('CATIA V5 STEP Exchange'),'2;1');"; + + foreach( var match in Regex.Match( + sample, @"^(?[A-Z_]+)\s?\((?.+)\)\;" ) + .Groups ) { + Console.WriteLine( $"{match.ToString()}" ); + Console.WriteLine( "\t\t\t" ); + } + } + + [TestMethod] + public void TestSource() + { + ScriptSourceTransmitter st = new ScriptSourceTransmitter("end", 0); + for (int i = 0; i < 10; i++) + { + st.WriteLine($"Code{i} {new string(' ', i + 1)}-- Comment{i}"); + } + st.WriteLine("Code (* comment"); + for (int i = 0; i < 10; i++) + { + st.WriteLine($"comment-code"); + } + st.WriteLine($"comment *) code"); + for (int i = 0; i < 10; i++) + { + st.WriteLine($" Code{i} (* (* Comment *) *) Code{i}"); + } + st.WriteLine("end"); + + ExpSourceReader reader = new ExpSourceReader(st); + while (!st.IsEmpty) + { + Console.WriteLine(new string(reader.ReadLine())); + } + } + + [TestMethod] + public void TestMethod() + { + ScriptSourceTransmitter st = new ScriptSourceTransmitter("end", 0); + for (int i = 0; i < 10; i++) + { + st.WriteLine($"Code{i} {new string(' ',i+1)}-- Comment{i}"); + } + st.WriteLine("Code (* comment"); + for (int i = 0; i < 10; i++) + { + st.WriteLine($"comment-code"); + } + st.WriteLine($"comment *) code"); + for (int i = 0; i < 10; i++) + { + st.WriteLine($" Code{i} (* (* Comment *) *) Code{i}"); + } + st.WriteLine("end"); + + ExpSourceReader reader = new ExpSourceReader(st); + while (!st.IsEmpty) + { + Console.WriteLine(reader.ReadToken().Value.ToString()); + } + } + + +} +} \ No newline at end of file diff --git a/STgSharpTest/bin/Debug/net8.0/CoverletSourceRootsMapping_StgSharpTest b/STgSharpTest/bin/Debug/net8.0/CoverletSourceRootsMapping_StgSharpTest new file mode 100644 index 00000000..3c62a83c Binary files /dev/null and b/STgSharpTest/bin/Debug/net8.0/CoverletSourceRootsMapping_StgSharpTest differ diff --git a/STgSharpTest/bin/Release/net8.0/CoverletSourceRootsMapping_StgSharpTest b/STgSharpTest/bin/Release/net8.0/CoverletSourceRootsMapping_StgSharpTest new file mode 100644 index 00000000..925c3db8 Binary files /dev/null and b/STgSharpTest/bin/Release/net8.0/CoverletSourceRootsMapping_StgSharpTest differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/CoverletSourceRootsMapping_StgSharpTest b/STgSharpTest/bin/x64/Debug/net8.0/CoverletSourceRootsMapping_StgSharpTest new file mode 100644 index 00000000..3c62a83c Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/CoverletSourceRootsMapping_StgSharpTest differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.bsc b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.bsc new file mode 100644 index 00000000..2997a079 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.bsc differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.dll new file mode 100644 index 00000000..e475a459 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.dll differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.exp b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.exp new file mode 100644 index 00000000..676ba294 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.exp differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.lib b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.lib new file mode 100644 index 00000000..8d346e87 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.lib differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.pdb b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.pdb new file mode 100644 index 00000000..df7e31df Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.C.pdb differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.Common.deps.json b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..4c755f05 --- /dev/null +++ b/STgSharpTest/bin/x64/Debug/net8.0/StgSharp.Common.deps.json @@ -0,0 +1,43 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {} + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/ColorHelper.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/ColorHelper.dll new file mode 100644 index 00000000..9251e005 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/ColorHelper.dll differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..625ab5a2 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe new file mode 100644 index 00000000..1763650b Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb new file mode 100644 index 00000000..f8ae29e4 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll new file mode 100644 index 00000000..f008c6bf Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Terminal.Gui.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Terminal.Gui.dll new file mode 100644 index 00000000..3739678f Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Terminal.Gui.dll differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll new file mode 100644 index 00000000..bc202d87 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll new file mode 100644 index 00000000..ee3ad392 Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll differ diff --git a/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Wcwidth.dll b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Wcwidth.dll new file mode 100644 index 00000000..7c50bbcd Binary files /dev/null and b/STgSharpTest/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Wcwidth.dll differ diff --git a/STgSharpTest/bin/x64/Release/net8.0/CoverletSourceRootsMapping_StgSharpTest b/STgSharpTest/bin/x64/Release/net8.0/CoverletSourceRootsMapping_StgSharpTest new file mode 100644 index 00000000..925c3db8 Binary files /dev/null and b/STgSharpTest/bin/x64/Release/net8.0/CoverletSourceRootsMapping_StgSharpTest differ diff --git a/STgSharpTest/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STgSharpTest/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/STgSharpTest/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STgSharpTest/obj/Debug/net8.0/StgSharpTest.AssemblyInfo.cs b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.AssemblyInfo.cs new file mode 100644 index 00000000..db6355fa --- /dev/null +++ b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/STgSharpTest/obj/Debug/net8.0/StgSharpTest.AssemblyInfoInputs.cache b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.AssemblyInfoInputs.cache new file mode 100644 index 00000000..dc71fdd4 --- /dev/null +++ b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +65036ac1aa2b022462b1cc6e16ab36cd70d4499450850d171ae425a6610fe37b diff --git a/STgSharpTest/obj/Debug/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..21e2cab2 --- /dev/null +++ b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTest +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STgSharpTest/obj/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs new file mode 100644 index 00000000..a1f6d1a8 --- /dev/null +++ b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs @@ -0,0 +1,9 @@ +// +global using global::Microsoft.VisualStudio.TestTools.UnitTesting; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STgSharpTest/obj/Debug/net8.0/StgSharpTest.assets.cache b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.assets.cache new file mode 100644 index 00000000..d8981c69 Binary files /dev/null and b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.assets.cache differ diff --git a/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.AssemblyReference.cache b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.AssemblyReference.cache new file mode 100644 index 00000000..376c54ea Binary files /dev/null and b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.AssemblyReference.cache differ diff --git a/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt b/STgSharpTest/obj/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/STgSharpTest/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STgSharpTest/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/STgSharpTest/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfo.cs b/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfo.cs new file mode 100644 index 00000000..6537f127 --- /dev/null +++ b/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfoInputs.cache b/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfoInputs.cache new file mode 100644 index 00000000..cb5cffcb --- /dev/null +++ b/STgSharpTest/obj/Release/net8.0/StgSharpTest.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +1d3d676225642d4c08f4cbcba46a80275bd9d96fbf7d11d138efd8f869f71da6 diff --git a/STgSharpTest/obj/Release/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig b/STgSharpTest/obj/Release/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..21e2cab2 --- /dev/null +++ b/STgSharpTest/obj/Release/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTest +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STgSharpTest/obj/Release/net8.0/StgSharpTest.GlobalUsings.g.cs b/STgSharpTest/obj/Release/net8.0/StgSharpTest.GlobalUsings.g.cs new file mode 100644 index 00000000..a1f6d1a8 --- /dev/null +++ b/STgSharpTest/obj/Release/net8.0/StgSharpTest.GlobalUsings.g.cs @@ -0,0 +1,9 @@ +// +global using global::Microsoft.VisualStudio.TestTools.UnitTesting; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STgSharpTest/obj/Release/net8.0/StgSharpTest.assets.cache b/STgSharpTest/obj/Release/net8.0/StgSharpTest.assets.cache new file mode 100644 index 00000000..416cde93 Binary files /dev/null and b/STgSharpTest/obj/Release/net8.0/StgSharpTest.assets.cache differ diff --git a/STgSharpTest/obj/Release/net8.0/StgSharpTest.csproj.AssemblyReference.cache b/STgSharpTest/obj/Release/net8.0/StgSharpTest.csproj.AssemblyReference.cache new file mode 100644 index 00000000..6099094b Binary files /dev/null and b/STgSharpTest/obj/Release/net8.0/StgSharpTest.csproj.AssemblyReference.cache differ diff --git a/STgSharpTest/obj/StgSharpTest.csproj.nuget.dgspec.json b/STgSharpTest/obj/StgSharpTest.csproj.nuget.dgspec.json new file mode 100644 index 00000000..1c5939ac --- /dev/null +++ b/STgSharpTest/obj/StgSharpTest.csproj.nuget.dgspec.json @@ -0,0 +1,406 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "projectName": "StgSharp.TerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Terminal.Gui": { + "target": "Package", + "version": "[2.0.0-v2-develop.2329, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj", + "projectName": "StgSharpTest", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "MSTest.TestAdapter": { + "target": "Package", + "version": "[3.1.1, )" + }, + "MSTest.TestFramework": { + "target": "Package", + "version": "[3.1.1, )" + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest": { + "target": "Package", + "version": "[1.1.2, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.8.0, )" + }, + "coverlet.collector": { + "target": "Package", + "version": "[6.0.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/STgSharpTest/obj/StgSharpTest.csproj.nuget.g.props b/STgSharpTest/obj/StgSharpTest.csproj.nuget.g.props new file mode 100644 index 00000000..a15255e1 --- /dev/null +++ b/STgSharpTest/obj/StgSharpTest.csproj.nuget.g.props @@ -0,0 +1,26 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.11.0 + + + + + + + + + + + + + C:\Users\Youmu\.nuget\packages\microsoft.visualstudio.validation\15.0.82 + C:\Users\Youmu\.nuget\packages\microsoft.codeanalysis.analyzers\3.0.0 + + \ No newline at end of file diff --git a/STgSharpTest/obj/StgSharpTest.csproj.nuget.g.targets b/STgSharpTest/obj/StgSharpTest.csproj.nuget.g.targets new file mode 100644 index 00000000..3920568a --- /dev/null +++ b/STgSharpTest/obj/StgSharpTest.csproj.nuget.g.targets @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/STgSharpTest/obj/project.assets.json b/STgSharpTest/obj/project.assets.json new file mode 100644 index 00000000..707dc982 --- /dev/null +++ b/STgSharpTest/obj/project.assets.json @@ -0,0 +1,8534 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "ColorHelper/1.8.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/ColorHelper.dll": {} + }, + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "compile": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + } + }, + "coverlet.collector/6.0.0": { + "type": "package", + "build": { + "build/netstandard1.0/coverlet.collector.targets": {} + } + }, + "DiffPlex/1.7.2": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/DiffPlex.dll": { + "related": ".xml" + } + } + }, + "Humanizer.Core/2.2.0": { + "type": "package", + "dependencies": { + "NETStandard.Library": "1.6.1" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/Humanizer.dll": {} + } + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "type": "package", + "compile": { + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {} + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.Analyzer.Testing/1.1.2": { + "type": "package", + "dependencies": { + "DiffPlex": "1.7.2", + "Microsoft.CodeAnalysis.Workspaces.Common": "1.0.1", + "Microsoft.VisualStudio.Composition": "16.1.8", + "NuGet.Common": "6.3.4", + "NuGet.Packaging": "6.3.4", + "NuGet.Protocol": "6.3.4", + "NuGet.Resolver": "6.3.4" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Analyzer.Testing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Analyzer.Testing.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.0.0": { + "type": "package", + "build": { + "build/_._": {} + } + }, + "Microsoft.CodeAnalysis.Common/3.8.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.0.0", + "System.Collections.Immutable": "5.0.0", + "System.Memory": "4.5.4", + "System.Reflection.Metadata": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "4.7.1", + "System.Text.Encoding.CodePages": "4.5.1", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/3.8.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[3.8.0]" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing/1.1.2": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp.Workspaces": "3.8.0", + "Microsoft.CodeAnalysis.SourceGenerators.Testing": "[1.1.2]" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest/1.1.2": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzer.Testing": "[1.1.2]", + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing": "[1.1.2]", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "3.8.0", + "Microsoft.CodeAnalysis.SourceGenerators.Testing": "[1.1.2]", + "Microsoft.CodeAnalysis.Testing.Verifiers.MSTest": "[1.1.2]" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/3.8.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.2.0", + "Microsoft.CodeAnalysis.CSharp": "[3.8.0]", + "Microsoft.CodeAnalysis.Common": "[3.8.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[3.8.0]" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.SourceGenerators.Testing/1.1.2": { + "type": "package", + "dependencies": { + "DiffPlex": "1.7.2", + "Microsoft.CodeAnalysis.Analyzer.Testing": "[1.1.2]", + "Microsoft.CodeAnalysis.Workspaces.Common": "3.8.0" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.SourceGenerators.Testing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.SourceGenerators.Testing.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.Testing.Verifiers.MSTest/1.1.2": { + "type": "package", + "dependencies": { + "MSTest.TestFramework": "1.1.17", + "Microsoft.CodeAnalysis.Analyzer.Testing": "[1.1.2]" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/3.8.0": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.1", + "Microsoft.CodeAnalysis.Common": "[3.8.0]", + "System.Composition": "1.0.31" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeCoverage/17.8.0": { + "type": "package", + "compile": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "build": { + "build/netstandard2.0/Microsoft.CodeCoverage.props": {}, + "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Microsoft.NET.Test.Sdk/17.8.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeCoverage": "17.8.0", + "Microsoft.TestPlatform.TestHost": "17.8.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": {} + }, + "runtime": { + "lib/netcoreapp3.1/_._": {} + }, + "build": { + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props": {}, + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props": {} + } + }, + "Microsoft.NETCore.Platforms/2.1.2": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "type": "package", + "dependencies": { + "NuGet.Frameworks": "6.5.0", + "System.Reflection.Metadata": "1.6.0" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.8.0", + "Newtonsoft.Json": "13.0.1" + }, + "compile": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/netcoreapp3.1/testhost.dll": { + "related": ".deps.json" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/netcoreapp3.1/testhost.dll": { + "related": ".deps.json" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props": {} + } + }, + "Microsoft.VisualStudio.Composition/16.1.8": { + "type": "package", + "dependencies": { + "Microsoft.VisualStudio.Composition.NetFxAttributes": "16.1.8", + "Microsoft.VisualStudio.Validation": "15.0.82", + "System.Composition": "1.0.31", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Metadata": "1.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Threading.Tasks.Dataflow": "4.6.0" + }, + "compile": { + "lib/netcoreapp2.0/Microsoft.VisualStudio.Composition.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp2.0/Microsoft.VisualStudio.Composition.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp2.0/cs/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp2.0/de/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp2.0/es/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp2.0/fr/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp2.0/it/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp2.0/ja/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp2.0/ko/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp2.0/pl/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp2.0/pt-BR/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp2.0/ru/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp2.0/tr/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp2.0/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp2.0/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.VisualStudio.Composition.NetFxAttributes/16.1.8": { + "type": "package", + "dependencies": { + "System.ComponentModel.Composition": "4.5.0" + }, + "compile": { + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.NetFxAttributes.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.NetFxAttributes.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.VisualStudio.Validation/15.0.82": { + "type": "package", + "compile": { + "lib/netstandard1.0/Microsoft.VisualStudio.Validation.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.0/Microsoft.VisualStudio.Validation.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/netstandard1.0/cs/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "cs" + }, + "lib/netstandard1.0/de/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "de" + }, + "lib/netstandard1.0/es/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "es" + }, + "lib/netstandard1.0/fr/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "fr" + }, + "lib/netstandard1.0/it/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "it" + }, + "lib/netstandard1.0/ja/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "ja" + }, + "lib/netstandard1.0/ko/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "ko" + }, + "lib/netstandard1.0/pl/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "pl" + }, + "lib/netstandard1.0/pt-BR/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "pt-BR" + }, + "lib/netstandard1.0/ru/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "ru" + }, + "lib/netstandard1.0/tr/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "tr" + }, + "lib/netstandard1.0/zh-Hans/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netstandard1.0/zh-Hant/Microsoft.VisualStudio.Validation.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.Win32.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "MSTest.TestAdapter/3.1.1": { + "type": "package", + "build": { + "build/net6.0/MSTest.TestAdapter.props": {}, + "build/net6.0/MSTest.TestAdapter.targets": {} + } + }, + "MSTest.TestFramework/3.1.1": { + "type": "package", + "compile": { + "lib/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net6.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "cs" + }, + "lib/net6.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "de" + }, + "lib/net6.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "es" + }, + "lib/net6.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "fr" + }, + "lib/net6.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "it" + }, + "lib/net6.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ja" + }, + "lib/net6.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ko" + }, + "lib/net6.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pl" + }, + "lib/net6.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "pt-BR" + }, + "lib/net6.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "ru" + }, + "lib/net6.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "tr" + }, + "lib/net6.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net6.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/net6.0/MSTest.TestFramework.targets": {} + } + }, + "NETStandard.Library/1.6.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.Win32.Primitives": "4.3.0", + "System.AppContext": "4.3.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Console": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.Compression.ZipFile": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Net.Http": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Net.Sockets": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Timer": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0" + } + }, + "Newtonsoft.Json/13.0.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "NuGet.Common/6.3.4": { + "type": "package", + "dependencies": { + "NuGet.Frameworks": "6.3.4" + }, + "compile": { + "lib/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NuGet.Common.dll": { + "related": ".xml" + } + } + }, + "NuGet.Configuration/6.3.4": { + "type": "package", + "dependencies": { + "NuGet.Common": "6.3.4", + "System.Security.Cryptography.ProtectedData": "4.4.0" + }, + "compile": { + "lib/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NuGet.Configuration.dll": { + "related": ".xml" + } + } + }, + "NuGet.Frameworks/6.5.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/NuGet.Frameworks.dll": {} + }, + "runtime": { + "lib/netstandard2.0/NuGet.Frameworks.dll": {} + } + }, + "NuGet.Packaging/6.3.4": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "13.0.1", + "NuGet.Configuration": "6.3.4", + "NuGet.Versioning": "6.3.4", + "System.Security.Cryptography.Cng": "5.0.0", + "System.Security.Cryptography.Pkcs": "5.0.0" + }, + "compile": { + "lib/net5.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/NuGet.Packaging.dll": { + "related": ".xml" + } + } + }, + "NuGet.Protocol/6.3.4": { + "type": "package", + "dependencies": { + "NuGet.Packaging": "6.3.4" + }, + "compile": { + "lib/net5.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/NuGet.Protocol.dll": { + "related": ".xml" + } + } + }, + "NuGet.Resolver/6.3.4": { + "type": "package", + "dependencies": { + "NuGet.Protocol": "6.3.4" + }, + "compile": { + "lib/net5.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/NuGet.Resolver.dll": { + "related": ".xml" + } + } + }, + "NuGet.Versioning/6.3.4": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/NuGet.Versioning.dll": { + "related": ".xml" + } + } + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "debian.8-x64" + } + } + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.23-x64" + } + } + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "fedora.24-x64" + } + } + }, + "runtime.native.System/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "dependencies": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.13.2-x64" + } + } + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "opensuse.42.1-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib": { + "assetType": "native", + "rid": "osx.10.10-x64" + } + } + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "rhel.7-x64" + } + } + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.14.04-x64" + } + } + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.04-x64" + } + } + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "runtimeTargets": { + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { + "assetType": "native", + "rid": "ubuntu.16.10-x64" + } + } + }, + "System.AppContext/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.AppContext.dll": {} + } + }, + "System.Buffers/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "lib/netstandard1.1/_._": {} + }, + "runtime": { + "lib/netstandard1.1/System.Buffers.dll": {} + } + }, + "System.Collections/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.dll": { + "related": ".xml" + } + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": {} + } + }, + "System.Collections.Immutable/5.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + } + }, + "System.ComponentModel.Composition/4.5.0": { + "type": "package", + "dependencies": { + "System.Security.Permissions": "4.5.0" + }, + "compile": { + "ref/netstandard2.0/System.ComponentModel.Composition.dll": {} + }, + "runtime": { + "lib/netcoreapp2.0/System.ComponentModel.Composition.dll": {} + } + }, + "System.Composition/1.0.31": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "1.0.31", + "System.Composition.Convention": "1.0.31", + "System.Composition.Hosting": "1.0.31", + "System.Composition.Runtime": "1.0.31", + "System.Composition.TypedParts": "1.0.31" + } + }, + "System.Composition.AttributedModel/1.0.31": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/System.Composition.AttributedModel.dll": {} + }, + "runtime": { + "lib/netstandard1.0/System.Composition.AttributedModel.dll": {} + } + }, + "System.Composition.Convention/1.0.31": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Composition.AttributedModel": "1.0.31", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/System.Composition.Convention.dll": {} + }, + "runtime": { + "lib/netstandard1.0/System.Composition.Convention.dll": {} + } + }, + "System.Composition.Hosting/1.0.31": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Composition.Runtime": "1.0.31", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/System.Composition.Hosting.dll": {} + }, + "runtime": { + "lib/netstandard1.0/System.Composition.Hosting.dll": {} + } + }, + "System.Composition.Runtime/1.0.31": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/System.Composition.Runtime.dll": {} + }, + "runtime": { + "lib/netstandard1.0/System.Composition.Runtime.dll": {} + } + }, + "System.Composition.TypedParts/1.0.31": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Composition.AttributedModel": "1.0.31", + "System.Composition.Hosting": "1.0.31", + "System.Composition.Runtime": "1.0.31", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "lib/netstandard1.0/System.Composition.TypedParts.dll": {} + }, + "runtime": { + "lib/netstandard1.0/System.Composition.TypedParts.dll": {} + } + }, + "System.Console/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Diagnostics.Debug.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "lib/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Diagnostics.Tools.dll": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Diagnostics.Tracing.dll": { + "related": ".xml" + } + } + }, + "System.Dynamic.Runtime/4.0.11": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "ref/netstandard1.3/System.Dynamic.Runtime.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Dynamic.Runtime.dll": {} + } + }, + "System.Formats.Asn1/5.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Formats.Asn1.dll": { + "related": ".xml" + } + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Globalization.dll": { + "related": ".xml" + } + } + }, + "System.Globalization.Calendars/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.IO.dll": { + "related": ".xml" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "compile": { + "lib/net8.0/System.IO.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "related": ".xml" + } + } + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Buffers": "4.3.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.IO.Compression": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.IO.Compression.ZipFile/4.3.0": { + "type": "package", + "dependencies": { + "System.Buffers": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} + } + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + } + }, + "System.Linq/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.Linq.dll": {} + } + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/System.Linq.Expressions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.6/System.Linq.Expressions.dll": {} + } + }, + "System.Memory/4.5.4": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Net.Http/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Net.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Net.Sockets/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.ObjectModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.ObjectModel.dll": {} + } + }, + "System.Reflection/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Emit/4.3.0": { + "type": "package", + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/System.Reflection.Emit.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.dll": {} + } + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": {} + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": {} + } + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Metadata/5.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Reflection.Primitives.dll": { + "related": ".xml" + } + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": {} + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/System.Resources.ResourceManager.dll": { + "related": ".xml" + } + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/net7.0/_._": {} + }, + "runtime": { + "lib/net7.0/_._": {} + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.Extensions.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + }, + "compile": { + "ref/netcoreapp1.1/_._": {} + } + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "type": "package", + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/_._": {} + }, + "runtime": { + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Runtime.Numerics/4.3.0": { + "type": "package", + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.1/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Numerics.dll": {} + } + }, + "System.Security.AccessControl/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "2.0.0", + "System.Security.Principal.Windows": "4.5.0" + }, + "compile": { + "ref/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Security.AccessControl.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.Apple": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtimeTargets": { + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "osx" + }, + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Cng/5.0.0": { + "type": "package", + "dependencies": { + "System.Formats.Asn1": "5.0.0" + }, + "compile": { + "ref/netcoreapp3.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.0/System.Security.Cryptography.Cng.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Cng.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Csp/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.6/_._": {} + }, + "runtime": { + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { + "assetType": "runtime", + "rid": "unix" + } + } + }, + "System.Security.Cryptography.Pkcs/5.0.0": { + "type": "package", + "dependencies": { + "System.Formats.Asn1": "5.0.0", + "System.Security.Cryptography.Cng": "5.0.0" + }, + "compile": { + "ref/netcoreapp3.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": {} + }, + "runtime": { + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} + } + }, + "System.Security.Cryptography.ProtectedData/4.4.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Cng": "4.3.0", + "System.Security.Cryptography.Csp": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + }, + "compile": { + "ref/netstandard1.4/_._": { + "related": ".xml" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Security.Permissions/4.5.0": { + "type": "package", + "dependencies": { + "System.Security.AccessControl": "4.5.0" + }, + "compile": { + "ref/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Security.Permissions.dll": {} + } + }, + "System.Security.Principal.Windows/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "2.0.0" + }, + "compile": { + "ref/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.Security.Principal.Windows.dll": {} + }, + "runtimeTargets": { + "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll": { + "assetType": "runtime", + "rid": "unix" + }, + "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Text.Encoding.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encoding.CodePages/4.5.1": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "2.1.2", + "System.Runtime.CompilerServices.Unsafe": "4.5.2" + }, + "compile": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll": {} + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.Json/8.0.4": { + "type": "package", + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netcoreapp1.1/_._": {} + }, + "runtime": { + "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} + } + }, + "System.Threading/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": { + "related": ".xml" + } + } + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Collections.Concurrent": "4.0.12", + "System.Diagnostics.Debug": "4.0.11", + "System.Diagnostics.Tracing": "4.1.0", + "System.Dynamic.Runtime": "4.0.11", + "System.Linq": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11", + "System.Threading.Tasks": "4.0.11" + }, + "compile": { + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": { + "related": ".XML" + } + }, + "runtime": { + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll": { + "related": ".XML" + } + } + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Threading.Timer/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.2/_._": { + "related": ".xml" + } + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} + } + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XDocument.dll": {} + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "dependencies": { + "ColorHelper": "[1.8.1, 2.0.0)", + "System.IO.Abstractions": "[21.0.22, 22.0.0)", + "System.Text.Json": "[8.0.4, 9.0.0)", + "Wcwidth": "[2.0.0, 3.0.0)" + }, + "compile": { + "lib/net8.0/Terminal.Gui.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/fr-FR/Terminal.Gui.resources.dll": { + "locale": "fr-FR" + }, + "lib/net8.0/ja-JP/Terminal.Gui.resources.dll": { + "locale": "ja-JP" + }, + "lib/net8.0/pt-PT/Terminal.Gui.resources.dll": { + "locale": "pt-PT" + }, + "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll": { + "locale": "zh-Hans" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "compile": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "related": ".xml" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "compile": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "related": ".xml" + } + } + }, + "Wcwidth/2.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Wcwidth.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "related": ".xml" + } + } + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "bin/placeholder/StgSharp.Common.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Common.dll": {} + } + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Model.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Model.dll": {} + } + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Script.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Script.dll": {} + } + }, + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "compile": { + "bin/placeholder/StgSharp.TerminalDialogue.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.TerminalDialogue.dll": {} + } + } + } + }, + "libraries": { + "ColorHelper/1.8.1": { + "sha512": "rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "type": "package", + "path": "colorhelper/1.8.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "colorhelper.1.8.1.nupkg.sha512", + "colorhelper.nuspec", + "lib/netstandard2.0/ColorHelper.dll", + "logo.jpg" + ] + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "type": "package", + "path": "communitytoolkit.highperformance/8.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" + ] + }, + "coverlet.collector/6.0.0": { + "sha512": "tW3lsNS+dAEII6YGUX/VMoJjBS1QvsxqJeqLaJXub08y1FSjasFPtQ4UBUsudE9PNrzLjooClMsPtY2cZLdXpQ==", + "type": "package", + "path": "coverlet.collector/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/netstandard1.0/Microsoft.Bcl.AsyncInterfaces.dll", + "build/netstandard1.0/Microsoft.CSharp.dll", + "build/netstandard1.0/Microsoft.DotNet.PlatformAbstractions.dll", + "build/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "build/netstandard1.0/Microsoft.Extensions.DependencyInjection.dll", + "build/netstandard1.0/Microsoft.Extensions.DependencyModel.dll", + "build/netstandard1.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "build/netstandard1.0/Microsoft.TestPlatform.CoreUtilities.dll", + "build/netstandard1.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "build/netstandard1.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "build/netstandard1.0/Mono.Cecil.Mdb.dll", + "build/netstandard1.0/Mono.Cecil.Pdb.dll", + "build/netstandard1.0/Mono.Cecil.Rocks.dll", + "build/netstandard1.0/Mono.Cecil.dll", + "build/netstandard1.0/Newtonsoft.Json.dll", + "build/netstandard1.0/NuGet.Frameworks.dll", + "build/netstandard1.0/System.AppContext.dll", + "build/netstandard1.0/System.Collections.Immutable.dll", + "build/netstandard1.0/System.Dynamic.Runtime.dll", + "build/netstandard1.0/System.IO.FileSystem.Primitives.dll", + "build/netstandard1.0/System.Linq.Expressions.dll", + "build/netstandard1.0/System.Linq.dll", + "build/netstandard1.0/System.ObjectModel.dll", + "build/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "build/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "build/netstandard1.0/System.Reflection.Emit.dll", + "build/netstandard1.0/System.Reflection.Metadata.dll", + "build/netstandard1.0/System.Reflection.TypeExtensions.dll", + "build/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", + "build/netstandard1.0/System.Runtime.Serialization.Primitives.dll", + "build/netstandard1.0/System.Text.RegularExpressions.dll", + "build/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "build/netstandard1.0/System.Threading.dll", + "build/netstandard1.0/System.Xml.ReaderWriter.dll", + "build/netstandard1.0/System.Xml.XDocument.dll", + "build/netstandard1.0/coverlet.collector.deps.json", + "build/netstandard1.0/coverlet.collector.dll", + "build/netstandard1.0/coverlet.collector.pdb", + "build/netstandard1.0/coverlet.collector.targets", + "build/netstandard1.0/coverlet.core.dll", + "build/netstandard1.0/coverlet.core.pdb", + "coverlet-icon.png", + "coverlet.collector.6.0.0.nupkg.sha512", + "coverlet.collector.nuspec" + ] + }, + "DiffPlex/1.7.2": { + "sha512": "qJEjdxEDBWSFZGB8paBB9HDeJXHGlHlOXeGX3kbTuXWuOsgv2iSAEOOzo5V1/B39Vcxr9IVVrNKewRcX+rsn4g==", + "type": "package", + "path": "diffplex/1.7.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "diffplex.1.7.2.nupkg.sha512", + "diffplex.nuspec", + "diffplex_icon.png", + "lib/net35/DiffPlex.dll", + "lib/net35/DiffPlex.xml", + "lib/net40/DiffPlex.dll", + "lib/net40/DiffPlex.xml", + "lib/net6.0/DiffPlex.dll", + "lib/net6.0/DiffPlex.xml", + "lib/netstandard1.0/DiffPlex.dll", + "lib/netstandard1.0/DiffPlex.xml", + "lib/netstandard2.0/DiffPlex.dll", + "lib/netstandard2.0/DiffPlex.xml" + ] + }, + "Humanizer.Core/2.2.0": { + "sha512": "rsYXB7+iUPP8AHgQ8JP2UZI2xK2KhjcdGr9E6zX3CsZaTLCaw8M35vaAJRo1rfxeaZEVMuXeaquLVCkZ7JcZ5Q==", + "type": "package", + "path": "humanizer.core/2.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.2.2.0.nupkg.sha512", + "humanizer.core.nuspec", + "lib/netstandard1.0/Humanizer.dll" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/1.1.1": { + "sha512": "yuvf07qFWFqtK3P/MRkEKLhn5r2UbSpVueRziSqj0yJQIKFwG1pq9mOayK3zE5qZCTs0CbrwL9M6R8VwqyGy2w==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/1.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.CodeAnalysis.Analyzer.Testing/1.1.2": { + "sha512": "g6cSJMPlmTiEHakCKaTobNISbf4jfjNF38YK8V4azAgcV9CE4BxuGQSWW6eftHs43q7mhKOr1lioKsTVQmUc1g==", + "type": "package", + "path": "microsoft.codeanalysis.analyzer.testing/1.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net452/Microsoft.CodeAnalysis.Analyzer.Testing.dll", + "lib/net452/Microsoft.CodeAnalysis.Analyzer.Testing.xml", + "lib/net46/Microsoft.CodeAnalysis.Analyzer.Testing.dll", + "lib/net46/Microsoft.CodeAnalysis.Analyzer.Testing.xml", + "lib/net472/Microsoft.CodeAnalysis.Analyzer.Testing.dll", + "lib/net472/Microsoft.CodeAnalysis.Analyzer.Testing.xml", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Analyzer.Testing.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Analyzer.Testing.xml", + "lib/netstandard1.6/Microsoft.CodeAnalysis.Analyzer.Testing.dll", + "lib/netstandard1.6/Microsoft.CodeAnalysis.Analyzer.Testing.xml", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Analyzer.Testing.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Analyzer.Testing.xml", + "microsoft.codeanalysis.analyzer.testing.1.1.2.nupkg.sha512", + "microsoft.codeanalysis.analyzer.testing.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Analyzers/3.0.0": { + "sha512": "ojG5pGAhTPmjxRGTNvuszO3H8XPZqksDwr9xLd4Ae/JBjZZdl6GuoLk7uLMf+o7yl5wO0TAqoWcEKkEWqrZE5g==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.0.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "EULA.rtf", + "ThirdPartyNotices.rtf", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "build/Microsoft.CodeAnalysis.Analyzers.props", + "build/Microsoft.CodeAnalysis.Analyzers.targets", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.0.0.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/3.8.0": { + "sha512": "8YTZ7GpsbTdC08DITx7/kwV0k4SC6cbBAFqc13cOm5vKJZcEIAh51tNSyGSkWisMgYCr96B2wb5Zri1bsla3+g==", + "type": "package", + "path": "microsoft.codeanalysis.common/3.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.3.8.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/3.8.0": { + "sha512": "hKqFCUSk9TIMBDjiYMF8/ZfK9p9mzpU+slM73CaCHu4ctfkoqJGHLQhyT8wvrYsIg+ufrUWBF8hcJYmyr5rc5Q==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/3.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.3.8.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing/1.1.2": { + "sha512": "mzi4VHeskAZ7KzORK9xuK/fEAMWS0UfQJ+HbbDVaIiG8khJWIZkMka5a6X5lHW/cOq51sxHv40Ggy95jgEDVgw==", + "type": "package", + "path": "microsoft.codeanalysis.csharp.sourcegenerators.testing/1.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net472/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll", + "lib/net472/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.xml", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.xml", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.xml", + "microsoft.codeanalysis.csharp.sourcegenerators.testing.1.1.2.nupkg.sha512", + "microsoft.codeanalysis.csharp.sourcegenerators.testing.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest/1.1.2": { + "sha512": "PmvKTrqZ4CNzWsqoUgR1225JO6Z3JIXOuQeYk9OSeCaZgPo04ph4jMnMkXnd9Skrrq+gDMDhEI9lGAgXsFmu2A==", + "type": "package", + "path": "microsoft.codeanalysis.csharp.sourcegenerators.testing.mstest/1.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net472/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll", + "lib/net472/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.xml", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.xml", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest.xml", + "microsoft.codeanalysis.csharp.sourcegenerators.testing.mstest.1.1.2.nupkg.sha512", + "microsoft.codeanalysis.csharp.sourcegenerators.testing.mstest.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/3.8.0": { + "sha512": "rdEBvPWqe/IIscsnp7OkZ4tQin8khxBcSLyV9tU+sHdw9uW9U0GKL+Dv2rD4voC1bZBaO18Hp+m4Vkyfmaz0OA==", + "type": "package", + "path": "microsoft.codeanalysis.csharp.workspaces/3.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "microsoft.codeanalysis.csharp.workspaces.3.8.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.workspaces.nuspec" + ] + }, + "Microsoft.CodeAnalysis.SourceGenerators.Testing/1.1.2": { + "sha512": "m+E8+ovSIYUVXMijWKdPhvnWpOBB/ms+3hunlPiWY8iJkyrT5GKFtRUPevEUKuL75t5+I3SnEAwvsHL29WJSGQ==", + "type": "package", + "path": "microsoft.codeanalysis.sourcegenerators.testing/1.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net472/Microsoft.CodeAnalysis.SourceGenerators.Testing.dll", + "lib/net472/Microsoft.CodeAnalysis.SourceGenerators.Testing.xml", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.SourceGenerators.Testing.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.SourceGenerators.Testing.xml", + "lib/netstandard2.0/Microsoft.CodeAnalysis.SourceGenerators.Testing.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.SourceGenerators.Testing.xml", + "microsoft.codeanalysis.sourcegenerators.testing.1.1.2.nupkg.sha512", + "microsoft.codeanalysis.sourcegenerators.testing.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Testing.Verifiers.MSTest/1.1.2": { + "sha512": "P+bkTk1+0fLPMRFdQjOxzA7WN77CjFVgMTxYC1S+sLlbm2kr1ShVvTmuFIVCDQLSZLjOiEPcuUcxKSMKufUzqg==", + "type": "package", + "path": "microsoft.codeanalysis.testing.verifiers.mstest/1.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net452/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll", + "lib/net452/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.xml", + "lib/net46/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll", + "lib/net46/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.xml", + "lib/net472/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll", + "lib/net472/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.xml", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.xml", + "lib/netstandard1.6/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll", + "lib/netstandard1.6/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.xml", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Testing.Verifiers.MSTest.xml", + "microsoft.codeanalysis.testing.verifiers.mstest.1.1.2.nupkg.sha512", + "microsoft.codeanalysis.testing.verifiers.mstest.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Workspaces.Common/3.8.0": { + "sha512": "GPYVydsmOmScOWDJA1LFky7/MkoXpx1JI3lZJShxC+bvVUvL9zVKE8WDZMLsYJ5MAbry2xkZftdfeMpZ+kvLDQ==", + "type": "package", + "path": "microsoft.codeanalysis.workspaces.common/3.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "microsoft.codeanalysis.workspaces.common.3.8.0.nupkg.sha512", + "microsoft.codeanalysis.workspaces.common.nuspec" + ] + }, + "Microsoft.CodeCoverage/17.8.0": { + "sha512": "KC8SXWbGIdoFVdlxKk9WHccm0llm9HypcHMLUUFabRiTS3SO2fQXNZfdiF3qkEdTJhbRrxhdRxjL4jbtwPq4Ew==", + "type": "package", + "path": "microsoft.codecoverage/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "ThirdPartyNotices.txt", + "build/netstandard2.0/CodeCoverage/CodeCoverage.config", + "build/netstandard2.0/CodeCoverage/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/VanguardInstrumentationProfiler_x86.config", + "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/amd64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll", + "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/arm64/VanguardInstrumentationProfiler_arm64.config", + "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll", + "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll", + "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "build/netstandard2.0/CodeCoverage/covrun32.dll", + "build/netstandard2.0/CodeCoverage/msdia140.dll", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/InstrumentationEngine/alpine/x64/libInstrumentationEngine.so", + "build/netstandard2.0/InstrumentationEngine/arm64/MicrosoftInstrumentationEngine_arm64.dll", + "build/netstandard2.0/InstrumentationEngine/macos/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/macos/x64/libCoverageInstrumentationMethod.dylib", + "build/netstandard2.0/InstrumentationEngine/macos/x64/libInstrumentationEngine.dylib", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/VanguardInstrumentationProfiler_x64.config", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/InstrumentationEngine/ubuntu/x64/libInstrumentationEngine.so", + "build/netstandard2.0/InstrumentationEngine/x64/MicrosoftInstrumentationEngine_x64.dll", + "build/netstandard2.0/InstrumentationEngine/x86/MicrosoftInstrumentationEngine_x86.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.props", + "build/netstandard2.0/Microsoft.CodeCoverage.targets", + "build/netstandard2.0/Microsoft.DiaSymReader.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/ThirdPartyNotices.txt", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "microsoft.codecoverage.17.8.0.nupkg.sha512", + "microsoft.codecoverage.nuspec" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.NET.Test.Sdk/17.8.0": { + "sha512": "BmTYGbD/YuDHmApIENdoyN1jCk0Rj1fJB0+B/fVekyTdVidr91IlzhqzytiUgaEAzL1ZJcYCme0MeBMYvJVzvw==", + "type": "package", + "path": "microsoft.net.test.sdk/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "build/net462/Microsoft.NET.Test.Sdk.props", + "build/net462/Microsoft.NET.Test.Sdk.targets", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.cs", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.fs", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.Program.vb", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.props", + "build/netcoreapp3.1/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/Microsoft.NET.Test.Sdk.props", + "lib/net462/_._", + "lib/netcoreapp3.1/_._", + "microsoft.net.test.sdk.17.8.0.nupkg.sha512", + "microsoft.net.test.sdk.nuspec" + ] + }, + "Microsoft.NETCore.Platforms/2.1.2": { + "sha512": "mOJy3M0UN+LUG21dLGMxaWZEP6xYpQEpLuvuEQBaownaX4YuhH6NmNUlN9si+vNkAS6dwJ//N1O4DmLf2CikVg==", + "type": "package", + "path": "microsoft.netcore.platforms/2.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.2.1.2.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.NETCore.Targets/1.1.0": { + "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "type": "package", + "path": "microsoft.netcore.targets/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.targets.1.1.0.nupkg.sha512", + "microsoft.netcore.targets.nuspec", + "runtime.json" + ] + }, + "Microsoft.TestPlatform.ObjectModel/17.8.0": { + "sha512": "AYy6vlpGMfz5kOFq99L93RGbqftW/8eQTqjT9iGXW6s9MRP3UdtY8idJ8rJcjeSja8A18IhIro5YnH3uv1nz4g==", + "type": "package", + "path": "microsoft.testplatform.objectmodel/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512", + "microsoft.testplatform.objectmodel.nuspec" + ] + }, + "Microsoft.TestPlatform.TestHost/17.8.0": { + "sha512": "9ivcl/7SGRmOT0YYrHQGohWiT5YCpkmy/UEzldfVisLm6QxbLaK3FAJqZXI34rnRLmqqDCeMQxKINwmKwAPiDw==", + "type": "package", + "path": "microsoft.testplatform.testhost/17.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE_MIT.txt", + "ThirdPartyNotices.txt", + "build/netcoreapp3.1/Microsoft.TestPlatform.TestHost.props", + "build/netcoreapp3.1/x64/testhost.dll", + "build/netcoreapp3.1/x64/testhost.exe", + "build/netcoreapp3.1/x86/testhost.x86.dll", + "build/netcoreapp3.1/x86/testhost.x86.exe", + "lib/net462/_._", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/testhost.deps.json", + "lib/netcoreapp3.1/testhost.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/x64/msdia140.dll", + "lib/netcoreapp3.1/x86/msdia140.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "microsoft.testplatform.testhost.17.8.0.nupkg.sha512", + "microsoft.testplatform.testhost.nuspec" + ] + }, + "Microsoft.VisualStudio.Composition/16.1.8": { + "sha512": "N+thv3dcT7kjn0Xz3U0uBm2CH4uoaMvH8wC6Gy2HWx7HLNdEpqGoMraLyoBdizmypD1owLCJQIa2uKmWe4/o8A==", + "type": "package", + "path": "microsoft.visualstudio.composition/16.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net45/Microsoft.VisualStudio.Composition.dll", + "lib/net45/Microsoft.VisualStudio.Composition.pdb", + "lib/net45/Microsoft.VisualStudio.Composition.xml", + "lib/net45/cs/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/de/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/es/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/fr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/it/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/ja/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/ko/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/pl/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/pt-BR/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/ru/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/tr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net45/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/Microsoft.VisualStudio.Composition.dll", + "lib/net46/Microsoft.VisualStudio.Composition.pdb", + "lib/net46/Microsoft.VisualStudio.Composition.xml", + "lib/net46/cs/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/de/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/es/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/fr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/it/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/ja/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/ko/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/pl/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/pt-BR/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/ru/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/tr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll", + "lib/net46/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/Microsoft.VisualStudio.Composition.dll", + "lib/netcoreapp1.0/Microsoft.VisualStudio.Composition.pdb", + "lib/netcoreapp1.0/Microsoft.VisualStudio.Composition.xml", + "lib/netcoreapp1.0/cs/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/de/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/es/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/fr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/it/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/ja/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/ko/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/pl/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/pt-BR/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/ru/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/tr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp1.0/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/Microsoft.VisualStudio.Composition.dll", + "lib/netcoreapp2.0/Microsoft.VisualStudio.Composition.pdb", + "lib/netcoreapp2.0/Microsoft.VisualStudio.Composition.xml", + "lib/netcoreapp2.0/cs/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/de/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/es/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/fr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/it/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/ja/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/ko/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/pl/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/pt-BR/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/ru/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/tr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netcoreapp2.0/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/Microsoft.VisualStudio.Composition.dll", + "lib/netstandard1.5/Microsoft.VisualStudio.Composition.pdb", + "lib/netstandard1.5/Microsoft.VisualStudio.Composition.xml", + "lib/netstandard1.5/cs/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/de/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/es/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/fr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/it/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/ja/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/ko/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/pl/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/pt-BR/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/ru/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/tr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard1.5/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.pdb", + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.xml", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.Composition.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.Composition.resources.dll", + "microsoft.visualstudio.composition.16.1.8.nupkg.sha512", + "microsoft.visualstudio.composition.nuspec" + ] + }, + "Microsoft.VisualStudio.Composition.NetFxAttributes/16.1.8": { + "sha512": "EbwZWTvdzit68qZSuTI8nd1PZ87pYjhpCwtsis8lrUKJ7XLdbE5rxY6YrY7OFze+YUsguzqZlNjX4Yn5nL9qBw==", + "type": "package", + "path": "microsoft.visualstudio.composition.netfxattributes/16.1.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net40/Microsoft.VisualStudio.Composition.NetFxAttributes.dll", + "lib/net40/Microsoft.VisualStudio.Composition.NetFxAttributes.pdb", + "lib/net40/Microsoft.VisualStudio.Composition.NetFxAttributes.xml", + "lib/net45/Microsoft.VisualStudio.Composition.NetFxAttributes.dll", + "lib/net45/Microsoft.VisualStudio.Composition.NetFxAttributes.pdb", + "lib/net45/Microsoft.VisualStudio.Composition.NetFxAttributes.xml", + "lib/netstandard1.0/Microsoft.VisualStudio.Composition.NetFxAttributes.dll", + "lib/netstandard1.0/Microsoft.VisualStudio.Composition.NetFxAttributes.pdb", + "lib/netstandard1.0/Microsoft.VisualStudio.Composition.NetFxAttributes.xml", + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.NetFxAttributes.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.NetFxAttributes.pdb", + "lib/netstandard2.0/Microsoft.VisualStudio.Composition.NetFxAttributes.xml", + "microsoft.visualstudio.composition.netfxattributes.16.1.8.nupkg.sha512", + "microsoft.visualstudio.composition.netfxattributes.nuspec" + ] + }, + "Microsoft.VisualStudio.Validation/15.0.82": { + "sha512": "XwZyVCsHuEtnd6nYScJnA8XkXPzy4Ok0DV5/hqqAe5ccgOhJ6yap7Qh/sU/i6QxEzuYyECPYDQ7IOyEQ3yRQgQ==", + "type": "package", + "path": "microsoft.visualstudio.validation/15.0.82", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.txt", + "lib/dotnet/Microsoft.VisualStudio.Validation.dll", + "lib/dotnet/Microsoft.VisualStudio.Validation.xml", + "lib/dotnet/cs/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/de/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/es/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/fr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/it/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/ja/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/ko/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/pl/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/pt-BR/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/ru/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/tr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/zh-Hans/Microsoft.VisualStudio.Validation.resources.dll", + "lib/dotnet/zh-Hant/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/Microsoft.VisualStudio.Validation.dll", + "lib/net45/Microsoft.VisualStudio.Validation.xml", + "lib/net45/cs/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/de/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/es/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/fr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/it/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/ja/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/ko/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/pl/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/pt-BR/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/ru/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/tr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/zh-Hans/Microsoft.VisualStudio.Validation.resources.dll", + "lib/net45/zh-Hant/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/Microsoft.VisualStudio.Validation.dll", + "lib/netstandard1.0/Microsoft.VisualStudio.Validation.xml", + "lib/netstandard1.0/cs/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/de/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/es/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/fr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/it/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/ja/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/ko/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/pl/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/pt-BR/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/ru/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/tr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/zh-Hans/Microsoft.VisualStudio.Validation.resources.dll", + "lib/netstandard1.0/zh-Hant/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Microsoft.VisualStudio.Validation.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Microsoft.VisualStudio.Validation.xml", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/cs/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/de/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/es/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/fr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/it/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/ja/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/ko/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/pl/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/pt-BR/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/ru/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/tr/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/zh-Hans/Microsoft.VisualStudio.Validation.resources.dll", + "lib/portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/zh-Hant/Microsoft.VisualStudio.Validation.resources.dll", + "microsoft.visualstudio.validation.15.0.82.nupkg.sha512", + "microsoft.visualstudio.validation.nuspec", + "tools/2013/RequiresNotNull.snippet", + "tools/2013/RequiresNotNullOrEmpty.snippet", + "tools/2015/RequiresNotNull.snippet", + "tools/2015/RequiresNotNullOrEmpty.snippet", + "tools/install-snippets.cmd", + "tools/uninstall-snippets.cmd" + ] + }, + "Microsoft.Win32.Primitives/4.3.0": { + "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "type": "package", + "path": "microsoft.win32.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/Microsoft.Win32.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.win32.primitives.4.3.0.nupkg.sha512", + "microsoft.win32.primitives.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", + "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", + "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._" + ] + }, + "MSTest.TestAdapter/3.1.1": { + "sha512": "kMvdO5dhrUR3o1qk0fzS0St0prlKyMQAfz1ChVAUdGGobTU5ehR60szOFto0+Q7rFG5iXMvTlVIthXM9EcNYnw==", + "type": "package", + "path": "mstest.testadapter/3.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/_localization/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/_localization/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll", + "build/_localization/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/_localization/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "build/net462/MSTest.TestAdapter.props", + "build/net462/MSTest.TestAdapter.targets", + "build/net462/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/net462/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/net462/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/net6.0/MSTest.TestAdapter.props", + "build/net6.0/MSTest.TestAdapter.targets", + "build/net6.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/net6.0/winui/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/netcoreapp3.1/MSTest.TestAdapter.props", + "build/netcoreapp3.1/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/netstandard2.0/MSTest.TestAdapter.props", + "build/netstandard2.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "build/uap10.0/MSTest.TestAdapter.props", + "build/uap10.0/MSTest.TestAdapter.targets", + "build/uap10.0/Microsoft.TestPlatform.AdapterUtilities.dll", + "build/uap10.0/Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.dll", + "build/uap10.0/Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll", + "build/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "mstest.testadapter.3.1.1.nupkg.sha512", + "mstest.testadapter.nuspec" + ] + }, + "MSTest.TestFramework/3.1.1": { + "sha512": "3rjkGxciNHHmPW8cl1/QVIYjOpfptjmAH5JrLBw+dnMTYDoweg3I579N7OIbar3Zd3q9dfWFrCy2LEV/AmPn3A==", + "type": "package", + "path": "mstest.testframework/3.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/net6.0/MSTest.TestFramework.targets", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "build/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "build/net6.0/winui/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "build/net6.0/winui/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/net6.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/net6.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.xml", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll", + "lib/uap10.0/Microsoft.VisualStudio.TestPlatform.TestFramework.xml", + "lib/uap10.0/cs/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/de/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/es/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/fr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/it/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/ja/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/ko/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/pl/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/pt-BR/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/ru/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/tr/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "lib/uap10.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.TestFramework.resources.dll", + "mstest.testframework.3.1.1.nupkg.sha512", + "mstest.testframework.nuspec" + ] + }, + "NETStandard.Library/1.6.1": { + "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", + "type": "package", + "path": "netstandard.library/1.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "netstandard.library.1.6.1.nupkg.sha512", + "netstandard.library.nuspec" + ] + }, + "Newtonsoft.Json/13.0.1": { + "sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", + "type": "package", + "path": "newtonsoft.json/13.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.1.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "NuGet.Common/6.3.4": { + "sha512": "wKuTiB3RBjbvzB/BhW8+Cu+TTPsABJr91I2Guu/FuM0SXtYRIM26v1NJdwm5rLw59CqB7bamqpWpJKU8bLAdwQ==", + "type": "package", + "path": "nuget.common/6.3.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Common.dll", + "lib/net472/NuGet.Common.xml", + "lib/netstandard2.0/NuGet.Common.dll", + "lib/netstandard2.0/NuGet.Common.xml", + "nuget.common.6.3.4.nupkg.sha512", + "nuget.common.nuspec" + ] + }, + "NuGet.Configuration/6.3.4": { + "sha512": "b+/g6sdnR2128KLn+6qO1MrB8j0goO4kYCFly2RDi/BsLilK+MzKJRHWGYqfMn/YnLmMrgNNJ2sSr4GX7rMEQw==", + "type": "package", + "path": "nuget.configuration/6.3.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Configuration.dll", + "lib/net472/NuGet.Configuration.xml", + "lib/netstandard2.0/NuGet.Configuration.dll", + "lib/netstandard2.0/NuGet.Configuration.xml", + "nuget.configuration.6.3.4.nupkg.sha512", + "nuget.configuration.nuspec" + ] + }, + "NuGet.Frameworks/6.5.0": { + "sha512": "QWINE2x3MbTODsWT1Gh71GaGb5icBz4chS8VYvTgsBnsi8esgN6wtHhydd7fvToWECYGq7T4cgBBDiKD/363fg==", + "type": "package", + "path": "nuget.frameworks/6.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Frameworks.dll", + "lib/netstandard2.0/NuGet.Frameworks.dll", + "nuget.frameworks.6.5.0.nupkg.sha512", + "nuget.frameworks.nuspec" + ] + }, + "NuGet.Packaging/6.3.4": { + "sha512": "0HtJXNCes0443jKeFErjhYxJ08BjyoDrIvw/uWyonoTBQ3B//+H2nztviSUyv0+ydfgKyhwshAjsr0efUT8PRA==", + "type": "package", + "path": "nuget.packaging/6.3.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Packaging.dll", + "lib/net472/NuGet.Packaging.xml", + "lib/net5.0/NuGet.Packaging.dll", + "lib/net5.0/NuGet.Packaging.xml", + "lib/netstandard2.0/NuGet.Packaging.dll", + "lib/netstandard2.0/NuGet.Packaging.xml", + "nuget.packaging.6.3.4.nupkg.sha512", + "nuget.packaging.nuspec" + ] + }, + "NuGet.Protocol/6.3.4": { + "sha512": "Gmvnz7RoN6UG3POw0F4t9mWM4sIdmHiuutvR9c2pLCJCUiYBN8QvbO/ZvkOuQNNM/aGdYExx/Tm84Zx9iVjOSA==", + "type": "package", + "path": "nuget.protocol/6.3.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Protocol.dll", + "lib/net472/NuGet.Protocol.xml", + "lib/net5.0/NuGet.Protocol.dll", + "lib/net5.0/NuGet.Protocol.xml", + "lib/netstandard2.0/NuGet.Protocol.dll", + "lib/netstandard2.0/NuGet.Protocol.xml", + "nuget.protocol.6.3.4.nupkg.sha512", + "nuget.protocol.nuspec" + ] + }, + "NuGet.Resolver/6.3.4": { + "sha512": "cO/QqtGqCIUf/e6EncIQ/ORJDco9UOtxooDL0IZhf18x1l0xFJ/nrcLCyAjZeznE9RAIqaNv1+YFobht4u0Lsw==", + "type": "package", + "path": "nuget.resolver/6.3.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Resolver.dll", + "lib/net472/NuGet.Resolver.xml", + "lib/net5.0/NuGet.Resolver.dll", + "lib/net5.0/NuGet.Resolver.xml", + "lib/netstandard2.0/NuGet.Resolver.dll", + "lib/netstandard2.0/NuGet.Resolver.xml", + "nuget.resolver.6.3.4.nupkg.sha512", + "nuget.resolver.nuspec" + ] + }, + "NuGet.Versioning/6.3.4": { + "sha512": "mQW9bwsWJq30lacl33MMVLBlrit5ClNEpGzKryIuLfP1UTL6feQK1yzA/5IQXdtjXvUEoI5bo1Axjen5lOm7Bg==", + "type": "package", + "path": "nuget.versioning/6.3.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net472/NuGet.Versioning.dll", + "lib/net472/NuGet.Versioning.xml", + "lib/netstandard2.0/NuGet.Versioning.dll", + "lib/netstandard2.0/NuGet.Versioning.xml", + "nuget.versioning.6.3.4.nupkg.sha512", + "nuget.versioning.nuspec" + ] + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", + "type": "package", + "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", + "type": "package", + "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", + "type": "package", + "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.native.System/4.3.0": { + "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "type": "package", + "path": "runtime.native.system/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.4.3.0.nupkg.sha512", + "runtime.native.system.nuspec" + ] + }, + "runtime.native.System.IO.Compression/4.3.0": { + "sha512": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", + "type": "package", + "path": "runtime.native.system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.io.compression.4.3.0.nupkg.sha512", + "runtime.native.system.io.compression.nuspec" + ] + }, + "runtime.native.System.Net.Http/4.3.0": { + "sha512": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", + "type": "package", + "path": "runtime.native.system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.net.http.4.3.0.nupkg.sha512", + "runtime.native.system.net.http.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", + "type": "package", + "path": "runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.apple.nuspec" + ] + }, + "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", + "type": "package", + "path": "runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.native.system.security.cryptography.openssl.nuspec" + ] + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", + "type": "package", + "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", + "type": "package", + "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { + "sha512": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib" + ] + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", + "type": "package", + "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib" + ] + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", + "type": "package", + "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", + "type": "package", + "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", + "type": "package", + "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", + "type": "package", + "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", + "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" + ] + }, + "System.AppContext/4.3.0": { + "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", + "type": "package", + "path": "system.appcontext/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.AppContext.dll", + "lib/net463/System.AppContext.dll", + "lib/netcore50/System.AppContext.dll", + "lib/netstandard1.6/System.AppContext.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.AppContext.dll", + "ref/net463/System.AppContext.dll", + "ref/netstandard/_._", + "ref/netstandard1.3/System.AppContext.dll", + "ref/netstandard1.3/System.AppContext.xml", + "ref/netstandard1.3/de/System.AppContext.xml", + "ref/netstandard1.3/es/System.AppContext.xml", + "ref/netstandard1.3/fr/System.AppContext.xml", + "ref/netstandard1.3/it/System.AppContext.xml", + "ref/netstandard1.3/ja/System.AppContext.xml", + "ref/netstandard1.3/ko/System.AppContext.xml", + "ref/netstandard1.3/ru/System.AppContext.xml", + "ref/netstandard1.3/zh-hans/System.AppContext.xml", + "ref/netstandard1.3/zh-hant/System.AppContext.xml", + "ref/netstandard1.6/System.AppContext.dll", + "ref/netstandard1.6/System.AppContext.xml", + "ref/netstandard1.6/de/System.AppContext.xml", + "ref/netstandard1.6/es/System.AppContext.xml", + "ref/netstandard1.6/fr/System.AppContext.xml", + "ref/netstandard1.6/it/System.AppContext.xml", + "ref/netstandard1.6/ja/System.AppContext.xml", + "ref/netstandard1.6/ko/System.AppContext.xml", + "ref/netstandard1.6/ru/System.AppContext.xml", + "ref/netstandard1.6/zh-hans/System.AppContext.xml", + "ref/netstandard1.6/zh-hant/System.AppContext.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.AppContext.dll", + "system.appcontext.4.3.0.nupkg.sha512", + "system.appcontext.nuspec" + ] + }, + "System.Buffers/4.3.0": { + "sha512": "ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==", + "type": "package", + "path": "system.buffers/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.1/.xml", + "lib/netstandard1.1/System.Buffers.dll", + "system.buffers.4.3.0.nupkg.sha512", + "system.buffers.nuspec" + ] + }, + "System.Collections/4.3.0": { + "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "type": "package", + "path": "system.collections/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.4.3.0.nupkg.sha512", + "system.collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.3.0": { + "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "type": "package", + "path": "system.collections.concurrent/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.concurrent.4.3.0.nupkg.sha512", + "system.collections.concurrent.nuspec" + ] + }, + "System.Collections.Immutable/5.0.0": { + "sha512": "FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", + "type": "package", + "path": "system.collections.immutable/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Collections.Immutable.dll", + "lib/net461/System.Collections.Immutable.xml", + "lib/netstandard1.0/System.Collections.Immutable.dll", + "lib/netstandard1.0/System.Collections.Immutable.xml", + "lib/netstandard1.3/System.Collections.Immutable.dll", + "lib/netstandard1.3/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", + "system.collections.immutable.5.0.0.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.ComponentModel.Composition/4.5.0": { + "sha512": "+iB9FoZnfdqMEGq6np28X6YNSUrse16CakmIhV3h6PxEWt7jYxUN3Txs1D8MZhhf4QmyvK0F/EcIN0f4gGN0dA==", + "type": "package", + "path": "system.componentmodel.composition/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcoreapp2.0/System.ComponentModel.Composition.dll", + "lib/netstandard2.0/System.ComponentModel.Composition.dll", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard2.0/System.ComponentModel.Composition.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.composition.4.5.0.nupkg.sha512", + "system.componentmodel.composition.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Composition/1.0.31": { + "sha512": "I+D26qpYdoklyAVUdqwUBrEIckMNjAYnuPJy/h9dsQItpQwVREkDFs4b4tkBza0kT2Yk48Lcfsv2QQ9hWsh9Iw==", + "type": "package", + "path": "system.composition/1.0.31", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "system.composition.1.0.31.nupkg.sha512", + "system.composition.nuspec" + ] + }, + "System.Composition.AttributedModel/1.0.31": { + "sha512": "NHWhkM3ZkspmA0XJEsKdtTt1ViDYuojgSND3yHhTzwxepiwqZf+BCWuvCbjUt4fe0NxxQhUDGJ5km6sLjo9qnQ==", + "type": "package", + "path": "system.composition.attributedmodel/1.0.31", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Composition.AttributedModel.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Composition.AttributedModel.dll", + "system.composition.attributedmodel.1.0.31.nupkg.sha512", + "system.composition.attributedmodel.nuspec" + ] + }, + "System.Composition.Convention/1.0.31": { + "sha512": "GLjh2Ju71k6C0qxMMtl4efHa68NmWeIUYh4fkUI8xbjQrEBvFmRwMDFcylT8/PR9SQbeeL48IkFxU/+gd0nYEQ==", + "type": "package", + "path": "system.composition.convention/1.0.31", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Composition.Convention.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Composition.Convention.dll", + "system.composition.convention.1.0.31.nupkg.sha512", + "system.composition.convention.nuspec" + ] + }, + "System.Composition.Hosting/1.0.31": { + "sha512": "fN1bT4RX4vUqjbgoyuJFVUizAl2mYF5VAb+bVIxIYZSSc0BdnX+yGAxcavxJuDDCQ1K+/mdpgyEFc8e9ikjvrg==", + "type": "package", + "path": "system.composition.hosting/1.0.31", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Composition.Hosting.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Composition.Hosting.dll", + "system.composition.hosting.1.0.31.nupkg.sha512", + "system.composition.hosting.nuspec" + ] + }, + "System.Composition.Runtime/1.0.31": { + "sha512": "0LEJN+2NVM89CE4SekDrrk5tHV5LeATltkp+9WNYrR+Huiyt0vaCqHbbHtVAjPyeLWIc8dOz/3kthRBj32wGQg==", + "type": "package", + "path": "system.composition.runtime/1.0.31", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Composition.Runtime.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Composition.Runtime.dll", + "system.composition.runtime.1.0.31.nupkg.sha512", + "system.composition.runtime.nuspec" + ] + }, + "System.Composition.TypedParts/1.0.31": { + "sha512": "0Zae/FtzeFgDBBuILeIbC/T9HMYbW4olAmi8XqqAGosSOWvXfiQLfARZEhiGd0LVXaYgXr0NhxiU1LldRP1fpQ==", + "type": "package", + "path": "system.composition.typedparts/1.0.31", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Composition.TypedParts.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Composition.TypedParts.dll", + "system.composition.typedparts.1.0.31.nupkg.sha512", + "system.composition.typedparts.nuspec" + ] + }, + "System.Console/4.3.0": { + "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", + "type": "package", + "path": "system.console/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Console.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Console.dll", + "ref/netstandard1.3/System.Console.dll", + "ref/netstandard1.3/System.Console.xml", + "ref/netstandard1.3/de/System.Console.xml", + "ref/netstandard1.3/es/System.Console.xml", + "ref/netstandard1.3/fr/System.Console.xml", + "ref/netstandard1.3/it/System.Console.xml", + "ref/netstandard1.3/ja/System.Console.xml", + "ref/netstandard1.3/ko/System.Console.xml", + "ref/netstandard1.3/ru/System.Console.xml", + "ref/netstandard1.3/zh-hans/System.Console.xml", + "ref/netstandard1.3/zh-hant/System.Console.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.console.4.3.0.nupkg.sha512", + "system.console.nuspec" + ] + }, + "System.Diagnostics.Debug/4.3.0": { + "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "type": "package", + "path": "system.diagnostics.debug/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.debug.4.3.0.nupkg.sha512", + "system.diagnostics.debug.nuspec" + ] + }, + "System.Diagnostics.DiagnosticSource/4.3.0": { + "sha512": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", + "type": "package", + "path": "system.diagnostics.diagnosticsource/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/net46/System.Diagnostics.DiagnosticSource.dll", + "lib/net46/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", + "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", + "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512", + "system.diagnostics.diagnosticsource.nuspec" + ] + }, + "System.Diagnostics.Tools/4.3.0": { + "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "type": "package", + "path": "system.diagnostics.tools/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Tools.dll", + "ref/netcore50/System.Diagnostics.Tools.xml", + "ref/netcore50/de/System.Diagnostics.Tools.xml", + "ref/netcore50/es/System.Diagnostics.Tools.xml", + "ref/netcore50/fr/System.Diagnostics.Tools.xml", + "ref/netcore50/it/System.Diagnostics.Tools.xml", + "ref/netcore50/ja/System.Diagnostics.Tools.xml", + "ref/netcore50/ko/System.Diagnostics.Tools.xml", + "ref/netcore50/ru/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/System.Diagnostics.Tools.dll", + "ref/netstandard1.0/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tools.4.3.0.nupkg.sha512", + "system.diagnostics.tools.nuspec" + ] + }, + "System.Diagnostics.Tracing/4.3.0": { + "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "type": "package", + "path": "system.diagnostics.tracing/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tracing.4.3.0.nupkg.sha512", + "system.diagnostics.tracing.nuspec" + ] + }, + "System.Dynamic.Runtime/4.0.11": { + "sha512": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", + "type": "package", + "path": "system.dynamic.runtime/4.0.11", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Dynamic.Runtime.dll", + "lib/netstandard1.3/System.Dynamic.Runtime.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Dynamic.Runtime.dll", + "ref/netcore50/System.Dynamic.Runtime.xml", + "ref/netcore50/de/System.Dynamic.Runtime.xml", + "ref/netcore50/es/System.Dynamic.Runtime.xml", + "ref/netcore50/fr/System.Dynamic.Runtime.xml", + "ref/netcore50/it/System.Dynamic.Runtime.xml", + "ref/netcore50/ja/System.Dynamic.Runtime.xml", + "ref/netcore50/ko/System.Dynamic.Runtime.xml", + "ref/netcore50/ru/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hans/System.Dynamic.Runtime.xml", + "ref/netcore50/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/System.Dynamic.Runtime.dll", + "ref/netstandard1.0/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/System.Dynamic.Runtime.dll", + "ref/netstandard1.3/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/de/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/es/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/fr/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/it/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ja/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ko/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/ru/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll", + "system.dynamic.runtime.4.0.11.nupkg.sha512", + "system.dynamic.runtime.nuspec" + ] + }, + "System.Formats.Asn1/5.0.0": { + "sha512": "MTvUIktmemNB+El0Fgw9egyqT9AYSIk6DTJeoDSpc3GIHxHCMo8COqkWT1mptX5tZ1SlQ6HJZ0OsSvMth1c12w==", + "type": "package", + "path": "system.formats.asn1/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Formats.Asn1.dll", + "lib/net461/System.Formats.Asn1.xml", + "lib/netstandard2.0/System.Formats.Asn1.dll", + "lib/netstandard2.0/System.Formats.Asn1.xml", + "system.formats.asn1.5.0.0.nupkg.sha512", + "system.formats.asn1.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Globalization/4.3.0": { + "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "type": "package", + "path": "system.globalization/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.4.3.0.nupkg.sha512", + "system.globalization.nuspec" + ] + }, + "System.Globalization.Calendars/4.3.0": { + "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "type": "package", + "path": "system.globalization.calendars/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Calendars.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.dll", + "ref/netstandard1.3/System.Globalization.Calendars.xml", + "ref/netstandard1.3/de/System.Globalization.Calendars.xml", + "ref/netstandard1.3/es/System.Globalization.Calendars.xml", + "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", + "ref/netstandard1.3/it/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", + "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.calendars.4.3.0.nupkg.sha512", + "system.globalization.calendars.nuspec" + ] + }, + "System.Globalization.Extensions/4.3.0": { + "sha512": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "type": "package", + "path": "system.globalization.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Globalization.Extensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.dll", + "ref/netstandard1.3/System.Globalization.Extensions.xml", + "ref/netstandard1.3/de/System.Globalization.Extensions.xml", + "ref/netstandard1.3/es/System.Globalization.Extensions.xml", + "ref/netstandard1.3/fr/System.Globalization.Extensions.xml", + "ref/netstandard1.3/it/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ja/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ko/System.Globalization.Extensions.xml", + "ref/netstandard1.3/ru/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll", + "runtimes/win/lib/net46/System.Globalization.Extensions.dll", + "runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll", + "system.globalization.extensions.4.3.0.nupkg.sha512", + "system.globalization.extensions.nuspec" + ] + }, + "System.IO/4.3.0": { + "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "type": "package", + "path": "system.io/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.4.3.0.nupkg.sha512", + "system.io.nuspec" + ] + }, + "System.IO.Abstractions/21.0.22": { + "sha512": "DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "type": "package", + "path": "system.io.abstractions/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/System.IO.Abstractions.dll", + "lib/net462/System.IO.Abstractions.xml", + "lib/net6.0/System.IO.Abstractions.dll", + "lib/net6.0/System.IO.Abstractions.xml", + "lib/net7.0/System.IO.Abstractions.dll", + "lib/net7.0/System.IO.Abstractions.xml", + "lib/net8.0/System.IO.Abstractions.dll", + "lib/net8.0/System.IO.Abstractions.xml", + "lib/netstandard2.0/System.IO.Abstractions.dll", + "lib/netstandard2.0/System.IO.Abstractions.xml", + "lib/netstandard2.1/System.IO.Abstractions.dll", + "lib/netstandard2.1/System.IO.Abstractions.xml", + "system.io.abstractions.21.0.22.nupkg.sha512", + "system.io.abstractions.nuspec" + ] + }, + "System.IO.Compression/4.3.0": { + "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "type": "package", + "path": "system.io.compression/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.IO.Compression.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.dll", + "ref/netcore50/System.IO.Compression.xml", + "ref/netcore50/de/System.IO.Compression.xml", + "ref/netcore50/es/System.IO.Compression.xml", + "ref/netcore50/fr/System.IO.Compression.xml", + "ref/netcore50/it/System.IO.Compression.xml", + "ref/netcore50/ja/System.IO.Compression.xml", + "ref/netcore50/ko/System.IO.Compression.xml", + "ref/netcore50/ru/System.IO.Compression.xml", + "ref/netcore50/zh-hans/System.IO.Compression.xml", + "ref/netcore50/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.1/System.IO.Compression.dll", + "ref/netstandard1.1/System.IO.Compression.xml", + "ref/netstandard1.1/de/System.IO.Compression.xml", + "ref/netstandard1.1/es/System.IO.Compression.xml", + "ref/netstandard1.1/fr/System.IO.Compression.xml", + "ref/netstandard1.1/it/System.IO.Compression.xml", + "ref/netstandard1.1/ja/System.IO.Compression.xml", + "ref/netstandard1.1/ko/System.IO.Compression.xml", + "ref/netstandard1.1/ru/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", + "ref/netstandard1.3/System.IO.Compression.dll", + "ref/netstandard1.3/System.IO.Compression.xml", + "ref/netstandard1.3/de/System.IO.Compression.xml", + "ref/netstandard1.3/es/System.IO.Compression.xml", + "ref/netstandard1.3/fr/System.IO.Compression.xml", + "ref/netstandard1.3/it/System.IO.Compression.xml", + "ref/netstandard1.3/ja/System.IO.Compression.xml", + "ref/netstandard1.3/ko/System.IO.Compression.xml", + "ref/netstandard1.3/ru/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", + "runtimes/win/lib/net46/System.IO.Compression.dll", + "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", + "system.io.compression.4.3.0.nupkg.sha512", + "system.io.compression.nuspec" + ] + }, + "System.IO.Compression.ZipFile/4.3.0": { + "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", + "type": "package", + "path": "system.io.compression.zipfile/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.Compression.ZipFile.dll", + "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", + "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", + "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.compression.zipfile.4.3.0.nupkg.sha512", + "system.io.compression.zipfile.nuspec" + ] + }, + "System.IO.FileSystem/4.3.0": { + "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "type": "package", + "path": "system.io.filesystem/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.dll", + "ref/netstandard1.3/System.IO.FileSystem.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.4.3.0.nupkg.sha512", + "system.io.filesystem.nuspec" + ] + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "sha512": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "type": "package", + "path": "system.io.filesystem.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.IO.FileSystem.Primitives.dll", + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll", + "ref/netstandard1.3/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "system.io.filesystem.primitives.nuspec" + ] + }, + "System.Linq/4.3.0": { + "sha512": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "type": "package", + "path": "system.linq/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.dll", + "lib/netcore50/System.Linq.dll", + "lib/netstandard1.6/System.Linq.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.dll", + "ref/netcore50/System.Linq.dll", + "ref/netcore50/System.Linq.xml", + "ref/netcore50/de/System.Linq.xml", + "ref/netcore50/es/System.Linq.xml", + "ref/netcore50/fr/System.Linq.xml", + "ref/netcore50/it/System.Linq.xml", + "ref/netcore50/ja/System.Linq.xml", + "ref/netcore50/ko/System.Linq.xml", + "ref/netcore50/ru/System.Linq.xml", + "ref/netcore50/zh-hans/System.Linq.xml", + "ref/netcore50/zh-hant/System.Linq.xml", + "ref/netstandard1.0/System.Linq.dll", + "ref/netstandard1.0/System.Linq.xml", + "ref/netstandard1.0/de/System.Linq.xml", + "ref/netstandard1.0/es/System.Linq.xml", + "ref/netstandard1.0/fr/System.Linq.xml", + "ref/netstandard1.0/it/System.Linq.xml", + "ref/netstandard1.0/ja/System.Linq.xml", + "ref/netstandard1.0/ko/System.Linq.xml", + "ref/netstandard1.0/ru/System.Linq.xml", + "ref/netstandard1.0/zh-hans/System.Linq.xml", + "ref/netstandard1.0/zh-hant/System.Linq.xml", + "ref/netstandard1.6/System.Linq.dll", + "ref/netstandard1.6/System.Linq.xml", + "ref/netstandard1.6/de/System.Linq.xml", + "ref/netstandard1.6/es/System.Linq.xml", + "ref/netstandard1.6/fr/System.Linq.xml", + "ref/netstandard1.6/it/System.Linq.xml", + "ref/netstandard1.6/ja/System.Linq.xml", + "ref/netstandard1.6/ko/System.Linq.xml", + "ref/netstandard1.6/ru/System.Linq.xml", + "ref/netstandard1.6/zh-hans/System.Linq.xml", + "ref/netstandard1.6/zh-hant/System.Linq.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.linq.4.3.0.nupkg.sha512", + "system.linq.nuspec" + ] + }, + "System.Linq.Expressions/4.3.0": { + "sha512": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "type": "package", + "path": "system.linq.expressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Linq.Expressions.dll", + "lib/netcore50/System.Linq.Expressions.dll", + "lib/netstandard1.6/System.Linq.Expressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.dll", + "ref/netcore50/System.Linq.Expressions.xml", + "ref/netcore50/de/System.Linq.Expressions.xml", + "ref/netcore50/es/System.Linq.Expressions.xml", + "ref/netcore50/fr/System.Linq.Expressions.xml", + "ref/netcore50/it/System.Linq.Expressions.xml", + "ref/netcore50/ja/System.Linq.Expressions.xml", + "ref/netcore50/ko/System.Linq.Expressions.xml", + "ref/netcore50/ru/System.Linq.Expressions.xml", + "ref/netcore50/zh-hans/System.Linq.Expressions.xml", + "ref/netcore50/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.0/System.Linq.Expressions.dll", + "ref/netstandard1.0/System.Linq.Expressions.xml", + "ref/netstandard1.0/de/System.Linq.Expressions.xml", + "ref/netstandard1.0/es/System.Linq.Expressions.xml", + "ref/netstandard1.0/fr/System.Linq.Expressions.xml", + "ref/netstandard1.0/it/System.Linq.Expressions.xml", + "ref/netstandard1.0/ja/System.Linq.Expressions.xml", + "ref/netstandard1.0/ko/System.Linq.Expressions.xml", + "ref/netstandard1.0/ru/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.3/System.Linq.Expressions.dll", + "ref/netstandard1.3/System.Linq.Expressions.xml", + "ref/netstandard1.3/de/System.Linq.Expressions.xml", + "ref/netstandard1.3/es/System.Linq.Expressions.xml", + "ref/netstandard1.3/fr/System.Linq.Expressions.xml", + "ref/netstandard1.3/it/System.Linq.Expressions.xml", + "ref/netstandard1.3/ja/System.Linq.Expressions.xml", + "ref/netstandard1.3/ko/System.Linq.Expressions.xml", + "ref/netstandard1.3/ru/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml", + "ref/netstandard1.6/System.Linq.Expressions.dll", + "ref/netstandard1.6/System.Linq.Expressions.xml", + "ref/netstandard1.6/de/System.Linq.Expressions.xml", + "ref/netstandard1.6/es/System.Linq.Expressions.xml", + "ref/netstandard1.6/fr/System.Linq.Expressions.xml", + "ref/netstandard1.6/it/System.Linq.Expressions.xml", + "ref/netstandard1.6/ja/System.Linq.Expressions.xml", + "ref/netstandard1.6/ko/System.Linq.Expressions.xml", + "ref/netstandard1.6/ru/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml", + "ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Linq.Expressions.dll", + "system.linq.expressions.4.3.0.nupkg.sha512", + "system.linq.expressions.nuspec" + ] + }, + "System.Memory/4.5.4": { + "sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "type": "package", + "path": "system.memory/4.5.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Memory.dll", + "lib/net461/System.Memory.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.1/System.Memory.dll", + "lib/netstandard1.1/System.Memory.xml", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "ref/netcoreapp2.1/_._", + "system.memory.4.5.4.nupkg.sha512", + "system.memory.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Net.Http/4.3.0": { + "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "type": "package", + "path": "system.net.http/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/Xamarinmac20/_._", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/net46/System.Net.Http.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/Xamarinmac20/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/net46/System.Net.Http.dll", + "ref/net46/System.Net.Http.xml", + "ref/net46/de/System.Net.Http.xml", + "ref/net46/es/System.Net.Http.xml", + "ref/net46/fr/System.Net.Http.xml", + "ref/net46/it/System.Net.Http.xml", + "ref/net46/ja/System.Net.Http.xml", + "ref/net46/ko/System.Net.Http.xml", + "ref/net46/ru/System.Net.Http.xml", + "ref/net46/zh-hans/System.Net.Http.xml", + "ref/net46/zh-hant/System.Net.Http.xml", + "ref/netcore50/System.Net.Http.dll", + "ref/netcore50/System.Net.Http.xml", + "ref/netcore50/de/System.Net.Http.xml", + "ref/netcore50/es/System.Net.Http.xml", + "ref/netcore50/fr/System.Net.Http.xml", + "ref/netcore50/it/System.Net.Http.xml", + "ref/netcore50/ja/System.Net.Http.xml", + "ref/netcore50/ko/System.Net.Http.xml", + "ref/netcore50/ru/System.Net.Http.xml", + "ref/netcore50/zh-hans/System.Net.Http.xml", + "ref/netcore50/zh-hant/System.Net.Http.xml", + "ref/netstandard1.1/System.Net.Http.dll", + "ref/netstandard1.1/System.Net.Http.xml", + "ref/netstandard1.1/de/System.Net.Http.xml", + "ref/netstandard1.1/es/System.Net.Http.xml", + "ref/netstandard1.1/fr/System.Net.Http.xml", + "ref/netstandard1.1/it/System.Net.Http.xml", + "ref/netstandard1.1/ja/System.Net.Http.xml", + "ref/netstandard1.1/ko/System.Net.Http.xml", + "ref/netstandard1.1/ru/System.Net.Http.xml", + "ref/netstandard1.1/zh-hans/System.Net.Http.xml", + "ref/netstandard1.1/zh-hant/System.Net.Http.xml", + "ref/netstandard1.3/System.Net.Http.dll", + "ref/netstandard1.3/System.Net.Http.xml", + "ref/netstandard1.3/de/System.Net.Http.xml", + "ref/netstandard1.3/es/System.Net.Http.xml", + "ref/netstandard1.3/fr/System.Net.Http.xml", + "ref/netstandard1.3/it/System.Net.Http.xml", + "ref/netstandard1.3/ja/System.Net.Http.xml", + "ref/netstandard1.3/ko/System.Net.Http.xml", + "ref/netstandard1.3/ru/System.Net.Http.xml", + "ref/netstandard1.3/zh-hans/System.Net.Http.xml", + "ref/netstandard1.3/zh-hant/System.Net.Http.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", + "runtimes/win/lib/net46/System.Net.Http.dll", + "runtimes/win/lib/netcore50/System.Net.Http.dll", + "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", + "system.net.http.4.3.0.nupkg.sha512", + "system.net.http.nuspec" + ] + }, + "System.Net.Primitives/4.3.0": { + "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", + "type": "package", + "path": "system.net.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Net.Primitives.dll", + "ref/netcore50/System.Net.Primitives.xml", + "ref/netcore50/de/System.Net.Primitives.xml", + "ref/netcore50/es/System.Net.Primitives.xml", + "ref/netcore50/fr/System.Net.Primitives.xml", + "ref/netcore50/it/System.Net.Primitives.xml", + "ref/netcore50/ja/System.Net.Primitives.xml", + "ref/netcore50/ko/System.Net.Primitives.xml", + "ref/netcore50/ru/System.Net.Primitives.xml", + "ref/netcore50/zh-hans/System.Net.Primitives.xml", + "ref/netcore50/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.0/System.Net.Primitives.dll", + "ref/netstandard1.0/System.Net.Primitives.xml", + "ref/netstandard1.0/de/System.Net.Primitives.xml", + "ref/netstandard1.0/es/System.Net.Primitives.xml", + "ref/netstandard1.0/fr/System.Net.Primitives.xml", + "ref/netstandard1.0/it/System.Net.Primitives.xml", + "ref/netstandard1.0/ja/System.Net.Primitives.xml", + "ref/netstandard1.0/ko/System.Net.Primitives.xml", + "ref/netstandard1.0/ru/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.1/System.Net.Primitives.dll", + "ref/netstandard1.1/System.Net.Primitives.xml", + "ref/netstandard1.1/de/System.Net.Primitives.xml", + "ref/netstandard1.1/es/System.Net.Primitives.xml", + "ref/netstandard1.1/fr/System.Net.Primitives.xml", + "ref/netstandard1.1/it/System.Net.Primitives.xml", + "ref/netstandard1.1/ja/System.Net.Primitives.xml", + "ref/netstandard1.1/ko/System.Net.Primitives.xml", + "ref/netstandard1.1/ru/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", + "ref/netstandard1.3/System.Net.Primitives.dll", + "ref/netstandard1.3/System.Net.Primitives.xml", + "ref/netstandard1.3/de/System.Net.Primitives.xml", + "ref/netstandard1.3/es/System.Net.Primitives.xml", + "ref/netstandard1.3/fr/System.Net.Primitives.xml", + "ref/netstandard1.3/it/System.Net.Primitives.xml", + "ref/netstandard1.3/ja/System.Net.Primitives.xml", + "ref/netstandard1.3/ko/System.Net.Primitives.xml", + "ref/netstandard1.3/ru/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", + "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.primitives.4.3.0.nupkg.sha512", + "system.net.primitives.nuspec" + ] + }, + "System.Net.Sockets/4.3.0": { + "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", + "type": "package", + "path": "system.net.sockets/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Net.Sockets.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.dll", + "ref/netstandard1.3/System.Net.Sockets.xml", + "ref/netstandard1.3/de/System.Net.Sockets.xml", + "ref/netstandard1.3/es/System.Net.Sockets.xml", + "ref/netstandard1.3/fr/System.Net.Sockets.xml", + "ref/netstandard1.3/it/System.Net.Sockets.xml", + "ref/netstandard1.3/ja/System.Net.Sockets.xml", + "ref/netstandard1.3/ko/System.Net.Sockets.xml", + "ref/netstandard1.3/ru/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", + "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.net.sockets.4.3.0.nupkg.sha512", + "system.net.sockets.nuspec" + ] + }, + "System.ObjectModel/4.3.0": { + "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "type": "package", + "path": "system.objectmodel/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.ObjectModel.dll", + "lib/netstandard1.3/System.ObjectModel.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.ObjectModel.dll", + "ref/netcore50/System.ObjectModel.xml", + "ref/netcore50/de/System.ObjectModel.xml", + "ref/netcore50/es/System.ObjectModel.xml", + "ref/netcore50/fr/System.ObjectModel.xml", + "ref/netcore50/it/System.ObjectModel.xml", + "ref/netcore50/ja/System.ObjectModel.xml", + "ref/netcore50/ko/System.ObjectModel.xml", + "ref/netcore50/ru/System.ObjectModel.xml", + "ref/netcore50/zh-hans/System.ObjectModel.xml", + "ref/netcore50/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.0/System.ObjectModel.dll", + "ref/netstandard1.0/System.ObjectModel.xml", + "ref/netstandard1.0/de/System.ObjectModel.xml", + "ref/netstandard1.0/es/System.ObjectModel.xml", + "ref/netstandard1.0/fr/System.ObjectModel.xml", + "ref/netstandard1.0/it/System.ObjectModel.xml", + "ref/netstandard1.0/ja/System.ObjectModel.xml", + "ref/netstandard1.0/ko/System.ObjectModel.xml", + "ref/netstandard1.0/ru/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.0/zh-hant/System.ObjectModel.xml", + "ref/netstandard1.3/System.ObjectModel.dll", + "ref/netstandard1.3/System.ObjectModel.xml", + "ref/netstandard1.3/de/System.ObjectModel.xml", + "ref/netstandard1.3/es/System.ObjectModel.xml", + "ref/netstandard1.3/fr/System.ObjectModel.xml", + "ref/netstandard1.3/it/System.ObjectModel.xml", + "ref/netstandard1.3/ja/System.ObjectModel.xml", + "ref/netstandard1.3/ko/System.ObjectModel.xml", + "ref/netstandard1.3/ru/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hans/System.ObjectModel.xml", + "ref/netstandard1.3/zh-hant/System.ObjectModel.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.objectmodel.4.3.0.nupkg.sha512", + "system.objectmodel.nuspec" + ] + }, + "System.Reflection/4.3.0": { + "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "type": "package", + "path": "system.reflection/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.4.3.0.nupkg.sha512", + "system.reflection.nuspec" + ] + }, + "System.Reflection.Emit/4.3.0": { + "sha512": "228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", + "type": "package", + "path": "system.reflection.emit/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.dll", + "lib/netstandard1.3/System.Reflection.Emit.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/net45/_._", + "ref/netstandard1.1/System.Reflection.Emit.dll", + "ref/netstandard1.1/System.Reflection.Emit.xml", + "ref/netstandard1.1/de/System.Reflection.Emit.xml", + "ref/netstandard1.1/es/System.Reflection.Emit.xml", + "ref/netstandard1.1/fr/System.Reflection.Emit.xml", + "ref/netstandard1.1/it/System.Reflection.Emit.xml", + "ref/netstandard1.1/ja/System.Reflection.Emit.xml", + "ref/netstandard1.1/ko/System.Reflection.Emit.xml", + "ref/netstandard1.1/ru/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml", + "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml", + "ref/xamarinmac20/_._", + "system.reflection.emit.4.3.0.nupkg.sha512", + "system.reflection.emit.nuspec" + ] + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "sha512": "59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "type": "package", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.ILGeneration.dll", + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll", + "ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", + "system.reflection.emit.ilgeneration.nuspec" + ] + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "sha512": "oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "type": "package", + "path": "system.reflection.emit.lightweight/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Reflection.Emit.Lightweight.dll", + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll", + "lib/portable-net45+wp8/_._", + "lib/wp80/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll", + "ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml", + "ref/portable-net45+wp8/_._", + "ref/wp80/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/_._", + "system.reflection.emit.lightweight.4.3.0.nupkg.sha512", + "system.reflection.emit.lightweight.nuspec" + ] + }, + "System.Reflection.Extensions/4.3.0": { + "sha512": "rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "type": "package", + "path": "system.reflection.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Extensions.dll", + "ref/netcore50/System.Reflection.Extensions.xml", + "ref/netcore50/de/System.Reflection.Extensions.xml", + "ref/netcore50/es/System.Reflection.Extensions.xml", + "ref/netcore50/fr/System.Reflection.Extensions.xml", + "ref/netcore50/it/System.Reflection.Extensions.xml", + "ref/netcore50/ja/System.Reflection.Extensions.xml", + "ref/netcore50/ko/System.Reflection.Extensions.xml", + "ref/netcore50/ru/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hans/System.Reflection.Extensions.xml", + "ref/netcore50/zh-hant/System.Reflection.Extensions.xml", + "ref/netstandard1.0/System.Reflection.Extensions.dll", + "ref/netstandard1.0/System.Reflection.Extensions.xml", + "ref/netstandard1.0/de/System.Reflection.Extensions.xml", + "ref/netstandard1.0/es/System.Reflection.Extensions.xml", + "ref/netstandard1.0/fr/System.Reflection.Extensions.xml", + "ref/netstandard1.0/it/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ja/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ko/System.Reflection.Extensions.xml", + "ref/netstandard1.0/ru/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.extensions.4.3.0.nupkg.sha512", + "system.reflection.extensions.nuspec" + ] + }, + "System.Reflection.Metadata/5.0.0": { + "sha512": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==", + "type": "package", + "path": "system.reflection.metadata/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Reflection.Metadata.dll", + "lib/net461/System.Reflection.Metadata.xml", + "lib/netstandard1.1/System.Reflection.Metadata.dll", + "lib/netstandard1.1/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "lib/portable-net45+win8/System.Reflection.Metadata.dll", + "lib/portable-net45+win8/System.Reflection.Metadata.xml", + "system.reflection.metadata.5.0.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Primitives/4.3.0": { + "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "type": "package", + "path": "system.reflection.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.primitives.4.3.0.nupkg.sha512", + "system.reflection.primitives.nuspec" + ] + }, + "System.Reflection.TypeExtensions/4.3.0": { + "sha512": "7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "type": "package", + "path": "system.reflection.typeextensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Reflection.TypeExtensions.dll", + "lib/net462/System.Reflection.TypeExtensions.dll", + "lib/netcore50/System.Reflection.TypeExtensions.dll", + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Reflection.TypeExtensions.dll", + "ref/net462/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.3/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/System.Reflection.TypeExtensions.dll", + "ref/netstandard1.5/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll", + "system.reflection.typeextensions.4.3.0.nupkg.sha512", + "system.reflection.typeextensions.nuspec" + ] + }, + "System.Resources.ResourceManager/4.3.0": { + "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "type": "package", + "path": "system.resources.resourcemanager/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.resources.resourcemanager.4.3.0.nupkg.sha512", + "system.resources.resourcemanager.nuspec" + ] + }, + "System.Runtime/4.3.0": { + "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "type": "package", + "path": "system.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.nuspec" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "System.Runtime.Extensions/4.3.0": { + "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "type": "package", + "path": "system.runtime.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.nuspec" + ] + }, + "System.Runtime.Handles/4.3.0": { + "sha512": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "type": "package", + "path": "system.runtime.handles/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/_._", + "ref/netstandard1.3/System.Runtime.Handles.dll", + "ref/netstandard1.3/System.Runtime.Handles.xml", + "ref/netstandard1.3/de/System.Runtime.Handles.xml", + "ref/netstandard1.3/es/System.Runtime.Handles.xml", + "ref/netstandard1.3/fr/System.Runtime.Handles.xml", + "ref/netstandard1.3/it/System.Runtime.Handles.xml", + "ref/netstandard1.3/ja/System.Runtime.Handles.xml", + "ref/netstandard1.3/ko/System.Runtime.Handles.xml", + "ref/netstandard1.3/ru/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.handles.4.3.0.nupkg.sha512", + "system.runtime.handles.nuspec" + ] + }, + "System.Runtime.InteropServices/4.3.0": { + "sha512": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "type": "package", + "path": "system.runtime.interopservices/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.InteropServices.dll", + "lib/net463/System.Runtime.InteropServices.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.InteropServices.dll", + "ref/net463/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.dll", + "ref/netcore50/System.Runtime.InteropServices.xml", + "ref/netcore50/de/System.Runtime.InteropServices.xml", + "ref/netcore50/es/System.Runtime.InteropServices.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.xml", + "ref/netcore50/it/System.Runtime.InteropServices.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.xml", + "ref/netcoreapp1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.dll", + "ref/netstandard1.1/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/System.Runtime.InteropServices.dll", + "ref/netstandard1.2/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/System.Runtime.InteropServices.dll", + "ref/netstandard1.3/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/System.Runtime.InteropServices.dll", + "ref/netstandard1.5/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/de/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/es/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/fr/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/it/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ja/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ko/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/ru/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.interopservices.4.3.0.nupkg.sha512", + "system.runtime.interopservices.nuspec" + ] + }, + "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { + "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", + "type": "package", + "path": "system.runtime.interopservices.runtimeinformation/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", + "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", + "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "system.runtime.interopservices.runtimeinformation.nuspec" + ] + }, + "System.Runtime.Numerics/4.3.0": { + "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "type": "package", + "path": "system.runtime.numerics/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.Numerics.dll", + "lib/netstandard1.3/System.Runtime.Numerics.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.Numerics.dll", + "ref/netcore50/System.Runtime.Numerics.xml", + "ref/netcore50/de/System.Runtime.Numerics.xml", + "ref/netcore50/es/System.Runtime.Numerics.xml", + "ref/netcore50/fr/System.Runtime.Numerics.xml", + "ref/netcore50/it/System.Runtime.Numerics.xml", + "ref/netcore50/ja/System.Runtime.Numerics.xml", + "ref/netcore50/ko/System.Runtime.Numerics.xml", + "ref/netcore50/ru/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", + "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", + "ref/netstandard1.1/System.Runtime.Numerics.dll", + "ref/netstandard1.1/System.Runtime.Numerics.xml", + "ref/netstandard1.1/de/System.Runtime.Numerics.xml", + "ref/netstandard1.1/es/System.Runtime.Numerics.xml", + "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", + "ref/netstandard1.1/it/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", + "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.numerics.4.3.0.nupkg.sha512", + "system.runtime.numerics.nuspec" + ] + }, + "System.Security.AccessControl/4.5.0": { + "sha512": "vW8Eoq0TMyz5vAG/6ce483x/CP83fgm4SJe5P8Tb1tZaobcvPrbMEL7rhH1DRdrYbbb6F0vq3OlzmK0Pkwks5A==", + "type": "package", + "path": "system.security.accesscontrol/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/System.Security.AccessControl.dll", + "lib/net461/System.Security.AccessControl.dll", + "lib/netstandard1.3/System.Security.AccessControl.dll", + "lib/netstandard2.0/System.Security.AccessControl.dll", + "lib/uap10.0.16299/_._", + "ref/net46/System.Security.AccessControl.dll", + "ref/net461/System.Security.AccessControl.dll", + "ref/net461/System.Security.AccessControl.xml", + "ref/netstandard1.3/System.Security.AccessControl.dll", + "ref/netstandard1.3/System.Security.AccessControl.xml", + "ref/netstandard1.3/de/System.Security.AccessControl.xml", + "ref/netstandard1.3/es/System.Security.AccessControl.xml", + "ref/netstandard1.3/fr/System.Security.AccessControl.xml", + "ref/netstandard1.3/it/System.Security.AccessControl.xml", + "ref/netstandard1.3/ja/System.Security.AccessControl.xml", + "ref/netstandard1.3/ko/System.Security.AccessControl.xml", + "ref/netstandard1.3/ru/System.Security.AccessControl.xml", + "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", + "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", + "ref/netstandard2.0/System.Security.AccessControl.dll", + "ref/netstandard2.0/System.Security.AccessControl.xml", + "ref/uap10.0.16299/_._", + "runtimes/win/lib/net46/System.Security.AccessControl.dll", + "runtimes/win/lib/net461/System.Security.AccessControl.dll", + "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", + "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.accesscontrol.4.5.0.nupkg.sha512", + "system.security.accesscontrol.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Cryptography.Algorithms/4.3.0": { + "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "type": "package", + "path": "system.security.cryptography.algorithms/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Algorithms.dll", + "lib/net461/System.Security.Cryptography.Algorithms.dll", + "lib/net463/System.Security.Cryptography.Algorithms.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Algorithms.dll", + "ref/net461/System.Security.Cryptography.Algorithms.dll", + "ref/net463/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", + "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", + "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "system.security.cryptography.algorithms.nuspec" + ] + }, + "System.Security.Cryptography.Cng/5.0.0": { + "sha512": "jIMXsKn94T9JY7PvPq/tMfqa6GAaHpElRDpmG+SuL+D3+sTw2M8VhnibKnN8Tq+4JqbPJ/f+BwtLeDMEnzAvRg==", + "type": "package", + "path": "system.security.cryptography.cng/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.dll", + "lib/net461/System.Security.Cryptography.Cng.xml", + "lib/net462/System.Security.Cryptography.Cng.dll", + "lib/net462/System.Security.Cryptography.Cng.xml", + "lib/net47/System.Security.Cryptography.Cng.dll", + "lib/net47/System.Security.Cryptography.Cng.xml", + "lib/netcoreapp2.1/System.Security.Cryptography.Cng.dll", + "lib/netcoreapp3.0/System.Security.Cryptography.Cng.dll", + "lib/netcoreapp3.0/System.Security.Cryptography.Cng.xml", + "lib/netstandard1.3/System.Security.Cryptography.Cng.dll", + "lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "lib/netstandard2.0/System.Security.Cryptography.Cng.dll", + "lib/netstandard2.0/System.Security.Cryptography.Cng.xml", + "lib/netstandard2.1/System.Security.Cryptography.Cng.dll", + "lib/netstandard2.1/System.Security.Cryptography.Cng.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.dll", + "ref/net461/System.Security.Cryptography.Cng.xml", + "ref/net462/System.Security.Cryptography.Cng.dll", + "ref/net462/System.Security.Cryptography.Cng.xml", + "ref/net47/System.Security.Cryptography.Cng.dll", + "ref/net47/System.Security.Cryptography.Cng.xml", + "ref/netcoreapp2.0/System.Security.Cryptography.Cng.dll", + "ref/netcoreapp2.0/System.Security.Cryptography.Cng.xml", + "ref/netcoreapp2.1/System.Security.Cryptography.Cng.dll", + "ref/netcoreapp2.1/System.Security.Cryptography.Cng.xml", + "ref/netcoreapp3.0/System.Security.Cryptography.Cng.dll", + "ref/netcoreapp3.0/System.Security.Cryptography.Cng.xml", + "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", + "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", + "ref/netstandard2.0/System.Security.Cryptography.Cng.dll", + "ref/netstandard2.0/System.Security.Cryptography.Cng.xml", + "ref/netstandard2.1/System.Security.Cryptography.Cng.dll", + "ref/netstandard2.1/System.Security.Cryptography.Cng.xml", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Cng.xml", + "runtimes/win/lib/net462/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net462/System.Security.Cryptography.Cng.xml", + "runtimes/win/lib/net47/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/net47/System.Security.Cryptography.Cng.xml", + "runtimes/win/lib/netcoreapp2.0/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netcoreapp2.1/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Cng.xml", + "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.cryptography.cng.5.0.0.nupkg.sha512", + "system.security.cryptography.cng.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Cryptography.Csp/4.3.0": { + "sha512": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "type": "package", + "path": "system.security.cryptography.csp/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Csp.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Csp.dll", + "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", + "runtimes/win/lib/netcore50/_._", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", + "system.security.cryptography.csp.4.3.0.nupkg.sha512", + "system.security.cryptography.csp.nuspec" + ] + }, + "System.Security.Cryptography.Encoding/4.3.0": { + "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "type": "package", + "path": "system.security.cryptography.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Encoding.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", + "system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "system.security.cryptography.encoding.nuspec" + ] + }, + "System.Security.Cryptography.OpenSsl/4.3.0": { + "sha512": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "type": "package", + "path": "system.security.cryptography.openssl/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", + "system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "system.security.cryptography.openssl.nuspec" + ] + }, + "System.Security.Cryptography.Pkcs/5.0.0": { + "sha512": "9TPLGjBCGKmNvG8pjwPeuYy0SMVmGZRwlTZvyPHDbYv/DRkoeumJdfumaaDNQzVGMEmbWtg07zUpSW9q70IlDQ==", + "type": "package", + "path": "system.security.cryptography.pkcs/5.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/System.Security.Cryptography.Pkcs.dll", + "lib/net461/System.Security.Cryptography.Pkcs.dll", + "lib/net461/System.Security.Cryptography.Pkcs.xml", + "lib/netcoreapp2.1/System.Security.Cryptography.Pkcs.dll", + "lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll", + "lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.xml", + "lib/netstandard1.3/System.Security.Cryptography.Pkcs.dll", + "lib/netstandard2.0/System.Security.Cryptography.Pkcs.dll", + "lib/netstandard2.0/System.Security.Cryptography.Pkcs.xml", + "lib/netstandard2.1/System.Security.Cryptography.Pkcs.dll", + "lib/netstandard2.1/System.Security.Cryptography.Pkcs.xml", + "ref/net46/System.Security.Cryptography.Pkcs.dll", + "ref/net461/System.Security.Cryptography.Pkcs.dll", + "ref/net461/System.Security.Cryptography.Pkcs.xml", + "ref/netcoreapp2.1/System.Security.Cryptography.Pkcs.dll", + "ref/netcoreapp2.1/System.Security.Cryptography.Pkcs.xml", + "ref/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll", + "ref/netcoreapp3.0/System.Security.Cryptography.Pkcs.xml", + "ref/netstandard1.3/System.Security.Cryptography.Pkcs.dll", + "ref/netstandard2.0/System.Security.Cryptography.Pkcs.dll", + "ref/netstandard2.0/System.Security.Cryptography.Pkcs.xml", + "ref/netstandard2.1/System.Security.Cryptography.Pkcs.dll", + "ref/netstandard2.1/System.Security.Cryptography.Pkcs.xml", + "runtimes/win/lib/net46/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.Pkcs.xml", + "runtimes/win/lib/netcoreapp2.1/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/netcoreapp3.0/System.Security.Cryptography.Pkcs.xml", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.Pkcs.xml", + "runtimes/win/lib/netstandard2.1/System.Security.Cryptography.Pkcs.dll", + "runtimes/win/lib/netstandard2.1/System.Security.Cryptography.Pkcs.xml", + "system.security.cryptography.pkcs.5.0.0.nupkg.sha512", + "system.security.cryptography.pkcs.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "type": "package", + "path": "system.security.cryptography.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.Primitives.dll", + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.Primitives.dll", + "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "system.security.cryptography.primitives.nuspec" + ] + }, + "System.Security.Cryptography.ProtectedData/4.4.0": { + "sha512": "cJV7ScGW7EhatRsjehfvvYVBvtiSMKgN8bOVI0bQhnF5bU7vnHVIsH49Kva7i7GWaWYvmEzkYVk1TC+gZYBEog==", + "type": "package", + "path": "system.security.cryptography.protecteddata/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.ProtectedData.dll", + "lib/net461/System.Security.Cryptography.ProtectedData.dll", + "lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll", + "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.ProtectedData.dll", + "ref/net461/System.Security.Cryptography.ProtectedData.dll", + "ref/net461/System.Security.Cryptography.ProtectedData.xml", + "ref/netstandard1.3/System.Security.Cryptography.ProtectedData.dll", + "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "ref/netstandard2.0/System.Security.Cryptography.ProtectedData.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/win/lib/net46/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.ProtectedData.dll", + "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll", + "system.security.cryptography.protecteddata.4.4.0.nupkg.sha512", + "system.security.cryptography.protecteddata.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Cryptography.X509Certificates/4.3.0": { + "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "type": "package", + "path": "system.security.cryptography.x509certificates/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Security.Cryptography.X509Certificates.dll", + "lib/net461/System.Security.Cryptography.X509Certificates.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net46/System.Security.Cryptography.X509Certificates.dll", + "ref/net461/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", + "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", + "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", + "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", + "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "system.security.cryptography.x509certificates.nuspec" + ] + }, + "System.Security.Permissions/4.5.0": { + "sha512": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", + "type": "package", + "path": "system.security.permissions/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.Security.Permissions.dll", + "lib/netstandard2.0/System.Security.Permissions.dll", + "ref/net461/System.Security.Permissions.dll", + "ref/net461/System.Security.Permissions.xml", + "ref/netstandard2.0/System.Security.Permissions.dll", + "ref/netstandard2.0/System.Security.Permissions.xml", + "system.security.permissions.4.5.0.nupkg.sha512", + "system.security.permissions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Security.Principal.Windows/4.5.0": { + "sha512": "U77HfRXlZlOeIXd//Yoj6Jnk8AXlbeisf1oq1os+hxOGVnuG+lGSfGqTwTZBoORFF6j/0q7HXIl8cqwQ9aUGqQ==", + "type": "package", + "path": "system.security.principal.windows/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net46/System.Security.Principal.Windows.dll", + "lib/net461/System.Security.Principal.Windows.dll", + "lib/netstandard1.3/System.Security.Principal.Windows.dll", + "lib/netstandard2.0/System.Security.Principal.Windows.dll", + "lib/uap10.0.16299/_._", + "ref/net46/System.Security.Principal.Windows.dll", + "ref/net461/System.Security.Principal.Windows.dll", + "ref/net461/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/System.Security.Principal.Windows.dll", + "ref/netstandard1.3/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", + "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", + "ref/netstandard2.0/System.Security.Principal.Windows.dll", + "ref/netstandard2.0/System.Security.Principal.Windows.xml", + "ref/uap10.0.16299/_._", + "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", + "runtimes/win/lib/net461/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", + "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll", + "runtimes/win/lib/uap10.0.16299/_._", + "system.security.principal.windows.4.5.0.nupkg.sha512", + "system.security.principal.windows.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Text.Encoding/4.3.0": { + "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "type": "package", + "path": "system.text.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.4.3.0.nupkg.sha512", + "system.text.encoding.nuspec" + ] + }, + "System.Text.Encoding.CodePages/4.5.1": { + "sha512": "4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==", + "type": "package", + "path": "system.text.encoding.codepages/4.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net46/System.Text.Encoding.CodePages.dll", + "lib/net461/System.Text.Encoding.CodePages.dll", + "lib/netstandard1.3/System.Text.Encoding.CodePages.dll", + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netcoreapp2.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "system.text.encoding.codepages.4.5.1.nupkg.sha512", + "system.text.encoding.codepages.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Text.Encoding.Extensions/4.3.0": { + "sha512": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "type": "package", + "path": "system.text.encoding.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.Extensions.dll", + "ref/netcore50/System.Text.Encoding.Extensions.xml", + "ref/netcore50/de/System.Text.Encoding.Extensions.xml", + "ref/netcore50/es/System.Text.Encoding.Extensions.xml", + "ref/netcore50/fr/System.Text.Encoding.Extensions.xml", + "ref/netcore50/it/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ja/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ko/System.Text.Encoding.Extensions.xml", + "ref/netcore50/ru/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.0/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/System.Text.Encoding.Extensions.dll", + "ref/netstandard1.3/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.extensions.4.3.0.nupkg.sha512", + "system.text.encoding.extensions.nuspec" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.4": { + "sha512": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "type": "package", + "path": "system.text.json/8.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.4.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.RegularExpressions/4.3.0": { + "sha512": "RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "type": "package", + "path": "system.text.regularexpressions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net463/System.Text.RegularExpressions.dll", + "lib/netcore50/System.Text.RegularExpressions.dll", + "lib/netstandard1.6/System.Text.RegularExpressions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net463/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.dll", + "ref/netcore50/System.Text.RegularExpressions.xml", + "ref/netcore50/de/System.Text.RegularExpressions.xml", + "ref/netcore50/es/System.Text.RegularExpressions.xml", + "ref/netcore50/fr/System.Text.RegularExpressions.xml", + "ref/netcore50/it/System.Text.RegularExpressions.xml", + "ref/netcore50/ja/System.Text.RegularExpressions.xml", + "ref/netcore50/ko/System.Text.RegularExpressions.xml", + "ref/netcore50/ru/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hans/System.Text.RegularExpressions.xml", + "ref/netcore50/zh-hant/System.Text.RegularExpressions.xml", + "ref/netcoreapp1.1/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.dll", + "ref/netstandard1.0/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/System.Text.RegularExpressions.dll", + "ref/netstandard1.3/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/System.Text.RegularExpressions.dll", + "ref/netstandard1.6/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/de/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/es/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/fr/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/it/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ja/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ko/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/ru/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml", + "ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.regularexpressions.4.3.0.nupkg.sha512", + "system.text.regularexpressions.nuspec" + ] + }, + "System.Threading/4.3.0": { + "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "type": "package", + "path": "system.threading/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll", + "system.threading.4.3.0.nupkg.sha512", + "system.threading.nuspec" + ] + }, + "System.Threading.Tasks/4.3.0": { + "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "type": "package", + "path": "system.threading.tasks/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.4.3.0.nupkg.sha512", + "system.threading.tasks.nuspec" + ] + }, + "System.Threading.Tasks.Dataflow/4.6.0": { + "sha512": "2hRjGu2r2jxRZ55wmcHO/WbdX+YAOz9x6FE8xqkHZgPaoFMKQZRe9dk8xTZIas8fRjxRmzawnTEWIrhlM+Un7w==", + "type": "package", + "path": "system.threading.tasks.dataflow/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML", + "lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll", + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML", + "lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll", + "system.threading.tasks.dataflow.4.6.0.nupkg.sha512", + "system.threading.tasks.dataflow.nuspec" + ] + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "sha512": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "type": "package", + "path": "system.threading.tasks.extensions/4.5.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Threading.Tasks.Extensions.dll", + "lib/net461/System.Threading.Tasks.Extensions.xml", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard1.0/System.Threading.Tasks.Extensions.xml", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "lib/netstandard2.0/System.Threading.Tasks.Extensions.xml", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/netcoreapp2.1/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "system.threading.tasks.extensions.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Threading.Timer/4.3.0": { + "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", + "type": "package", + "path": "system.threading.timer/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net451/_._", + "lib/portable-net451+win81+wpa81/_._", + "lib/win81/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net451/_._", + "ref/netcore50/System.Threading.Timer.dll", + "ref/netcore50/System.Threading.Timer.xml", + "ref/netcore50/de/System.Threading.Timer.xml", + "ref/netcore50/es/System.Threading.Timer.xml", + "ref/netcore50/fr/System.Threading.Timer.xml", + "ref/netcore50/it/System.Threading.Timer.xml", + "ref/netcore50/ja/System.Threading.Timer.xml", + "ref/netcore50/ko/System.Threading.Timer.xml", + "ref/netcore50/ru/System.Threading.Timer.xml", + "ref/netcore50/zh-hans/System.Threading.Timer.xml", + "ref/netcore50/zh-hant/System.Threading.Timer.xml", + "ref/netstandard1.2/System.Threading.Timer.dll", + "ref/netstandard1.2/System.Threading.Timer.xml", + "ref/netstandard1.2/de/System.Threading.Timer.xml", + "ref/netstandard1.2/es/System.Threading.Timer.xml", + "ref/netstandard1.2/fr/System.Threading.Timer.xml", + "ref/netstandard1.2/it/System.Threading.Timer.xml", + "ref/netstandard1.2/ja/System.Threading.Timer.xml", + "ref/netstandard1.2/ko/System.Threading.Timer.xml", + "ref/netstandard1.2/ru/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", + "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", + "ref/portable-net451+win81+wpa81/_._", + "ref/win81/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.timer.4.3.0.nupkg.sha512", + "system.threading.timer.nuspec" + ] + }, + "System.Xml.ReaderWriter/4.3.0": { + "sha512": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "type": "package", + "path": "system.xml.readerwriter/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net46/System.Xml.ReaderWriter.dll", + "lib/netcore50/System.Xml.ReaderWriter.dll", + "lib/netstandard1.3/System.Xml.ReaderWriter.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net46/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.dll", + "ref/netcore50/System.Xml.ReaderWriter.xml", + "ref/netcore50/de/System.Xml.ReaderWriter.xml", + "ref/netcore50/es/System.Xml.ReaderWriter.xml", + "ref/netcore50/fr/System.Xml.ReaderWriter.xml", + "ref/netcore50/it/System.Xml.ReaderWriter.xml", + "ref/netcore50/ja/System.Xml.ReaderWriter.xml", + "ref/netcore50/ko/System.Xml.ReaderWriter.xml", + "ref/netcore50/ru/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/System.Xml.ReaderWriter.dll", + "ref/netstandard1.0/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/System.Xml.ReaderWriter.dll", + "ref/netstandard1.3/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/de/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/es/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/it/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml", + "ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.readerwriter.4.3.0.nupkg.sha512", + "system.xml.readerwriter.nuspec" + ] + }, + "System.Xml.XDocument/4.3.0": { + "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "type": "package", + "path": "system.xml.xdocument/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Xml.XDocument.dll", + "lib/netstandard1.3/System.Xml.XDocument.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Xml.XDocument.dll", + "ref/netcore50/System.Xml.XDocument.xml", + "ref/netcore50/de/System.Xml.XDocument.xml", + "ref/netcore50/es/System.Xml.XDocument.xml", + "ref/netcore50/fr/System.Xml.XDocument.xml", + "ref/netcore50/it/System.Xml.XDocument.xml", + "ref/netcore50/ja/System.Xml.XDocument.xml", + "ref/netcore50/ko/System.Xml.XDocument.xml", + "ref/netcore50/ru/System.Xml.XDocument.xml", + "ref/netcore50/zh-hans/System.Xml.XDocument.xml", + "ref/netcore50/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.0/System.Xml.XDocument.dll", + "ref/netstandard1.0/System.Xml.XDocument.xml", + "ref/netstandard1.0/de/System.Xml.XDocument.xml", + "ref/netstandard1.0/es/System.Xml.XDocument.xml", + "ref/netstandard1.0/fr/System.Xml.XDocument.xml", + "ref/netstandard1.0/it/System.Xml.XDocument.xml", + "ref/netstandard1.0/ja/System.Xml.XDocument.xml", + "ref/netstandard1.0/ko/System.Xml.XDocument.xml", + "ref/netstandard1.0/ru/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", + "ref/netstandard1.3/System.Xml.XDocument.dll", + "ref/netstandard1.3/System.Xml.XDocument.xml", + "ref/netstandard1.3/de/System.Xml.XDocument.xml", + "ref/netstandard1.3/es/System.Xml.XDocument.xml", + "ref/netstandard1.3/fr/System.Xml.XDocument.xml", + "ref/netstandard1.3/it/System.Xml.XDocument.xml", + "ref/netstandard1.3/ja/System.Xml.XDocument.xml", + "ref/netstandard1.3/ko/System.Xml.XDocument.xml", + "ref/netstandard1.3/ru/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", + "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.xml.xdocument.4.3.0.nupkg.sha512", + "system.xml.xdocument.nuspec" + ] + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "sha512": "1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "type": "package", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net8.0/Terminal.Gui.dll", + "lib/net8.0/Terminal.Gui.xml", + "lib/net8.0/fr-FR/Terminal.Gui.resources.dll", + "lib/net8.0/ja-JP/Terminal.Gui.resources.dll", + "lib/net8.0/pt-PT/Terminal.Gui.resources.dll", + "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll", + "logo.png", + "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512", + "terminal.gui.nuspec" + ] + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "sha512": "yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "type": "package", + "path": "testableio.system.io.abstractions/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/TestableIO.System.IO.Abstractions.dll", + "lib/net462/TestableIO.System.IO.Abstractions.xml", + "lib/net6.0/TestableIO.System.IO.Abstractions.dll", + "lib/net6.0/TestableIO.System.IO.Abstractions.xml", + "lib/net7.0/TestableIO.System.IO.Abstractions.dll", + "lib/net7.0/TestableIO.System.IO.Abstractions.xml", + "lib/net8.0/TestableIO.System.IO.Abstractions.dll", + "lib/net8.0/TestableIO.System.IO.Abstractions.xml", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.dll", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.xml", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.dll", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.xml", + "testableio.system.io.abstractions.21.0.22.nupkg.sha512", + "testableio.system.io.abstractions.nuspec" + ] + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "sha512": "ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "type": "package", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.xml", + "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512", + "testableio.system.io.abstractions.wrappers.nuspec" + ] + }, + "Wcwidth/2.0.0": { + "sha512": "eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "type": "package", + "path": "wcwidth/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net6.0/Wcwidth.dll", + "lib/net6.0/Wcwidth.xml", + "lib/net7.0/Wcwidth.dll", + "lib/net7.0/Wcwidth.xml", + "lib/net8.0/Wcwidth.dll", + "lib/net8.0/Wcwidth.xml", + "lib/netstandard2.0/Wcwidth.dll", + "lib/netstandard2.0/Wcwidth.xml", + "wcwidth.2.0.0.nupkg.sha512", + "wcwidth.nuspec" + ] + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "path": "../StgSharp.Model/StgSharp.Model.csproj", + "msbuildProject": "../StgSharp.Model/StgSharp.Model.csproj" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "path": "../StgSharp.Script/StgSharp.Script.csproj", + "msbuildProject": "../StgSharp.Script/StgSharp.Script.csproj" + }, + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "path": "../StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj", + "msbuildProject": "../StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "MSTest.TestAdapter >= 3.1.1", + "MSTest.TestFramework >= 3.1.1", + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest >= 1.1.2", + "Microsoft.NET.Test.Sdk >= 17.8.0", + "StgSharp.Common >= 1.0.0", + "StgSharp.Model >= 1.0.0", + "StgSharp.Script >= 1.0.0", + "StgSharp.TerminalDialogue >= 1.0.0", + "coverlet.collector >= 6.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj", + "projectName": "StgSharpTest", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "MSTest.TestAdapter": { + "target": "Package", + "version": "[3.1.1, )" + }, + "MSTest.TestFramework": { + "target": "Package", + "version": "[3.1.1, )" + }, + "Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing.MSTest": { + "target": "Package", + "version": "[1.1.2, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.8.0, )" + }, + "coverlet.collector": { + "target": "Package", + "version": "[6.0.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/STgSharpTest/obj/project.nuget.cache b/STgSharpTest/obj/project.nuget.cache new file mode 100644 index 00000000..8f0d06b9 --- /dev/null +++ b/STgSharpTest/obj/project.nuget.cache @@ -0,0 +1,143 @@ +{ + "version": 2, + "dgSpecHash": "eL0j2ZwbPvM=", + "success": true, + "projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\STgSharpTest\\StgSharpTest.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Youmu\\.nuget\\packages\\colorhelper\\1.8.1\\colorhelper.1.8.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\communitytoolkit.highperformance\\8.4.0\\communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\coverlet.collector\\6.0.0\\coverlet.collector.6.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\diffplex\\1.7.2\\diffplex.1.7.2.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\humanizer.core\\2.2.0\\humanizer.core.2.2.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\1.1.1\\microsoft.bcl.asyncinterfaces.1.1.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.analyzer.testing\\1.1.2\\microsoft.codeanalysis.analyzer.testing.1.1.2.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.0.0\\microsoft.codeanalysis.analyzers.3.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.common\\3.8.0\\microsoft.codeanalysis.common.3.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.csharp\\3.8.0\\microsoft.codeanalysis.csharp.3.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.csharp.sourcegenerators.testing\\1.1.2\\microsoft.codeanalysis.csharp.sourcegenerators.testing.1.1.2.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.csharp.sourcegenerators.testing.mstest\\1.1.2\\microsoft.codeanalysis.csharp.sourcegenerators.testing.mstest.1.1.2.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\3.8.0\\microsoft.codeanalysis.csharp.workspaces.3.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.sourcegenerators.testing\\1.1.2\\microsoft.codeanalysis.sourcegenerators.testing.1.1.2.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.testing.verifiers.mstest\\1.1.2\\microsoft.codeanalysis.testing.verifiers.mstest.1.1.2.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\3.8.0\\microsoft.codeanalysis.workspaces.common.3.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codecoverage\\17.8.0\\microsoft.codecoverage.17.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.net.test.sdk\\17.8.0\\microsoft.net.test.sdk.17.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.netcore.platforms\\2.1.2\\microsoft.netcore.platforms.2.1.2.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.8.0\\microsoft.testplatform.objectmodel.17.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.testplatform.testhost\\17.8.0\\microsoft.testplatform.testhost.17.8.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.visualstudio.composition\\16.1.8\\microsoft.visualstudio.composition.16.1.8.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.visualstudio.composition.netfxattributes\\16.1.8\\microsoft.visualstudio.composition.netfxattributes.16.1.8.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.visualstudio.validation\\15.0.82\\microsoft.visualstudio.validation.15.0.82.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.win32.primitives\\4.3.0\\microsoft.win32.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\mstest.testadapter\\3.1.1\\mstest.testadapter.3.1.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\mstest.testframework\\3.1.1\\mstest.testframework.3.1.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\netstandard.library\\1.6.1\\netstandard.library.1.6.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\nuget.common\\6.3.4\\nuget.common.6.3.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\nuget.configuration\\6.3.4\\nuget.configuration.6.3.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\nuget.frameworks\\6.5.0\\nuget.frameworks.6.5.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\nuget.packaging\\6.3.4\\nuget.packaging.6.3.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\nuget.protocol\\6.3.4\\nuget.protocol.6.3.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\nuget.resolver\\6.3.4\\nuget.resolver.6.3.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\nuget.versioning\\6.3.4\\nuget.versioning.6.3.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.native.system\\4.3.0\\runtime.native.system.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.native.system.io.compression\\4.3.0\\runtime.native.system.io.compression.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.native.system.net.http\\4.3.0\\runtime.native.system.net.http.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl\\4.3.0\\runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.appcontext\\4.3.0\\system.appcontext.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.buffers\\4.3.0\\system.buffers.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.collections.immutable\\5.0.0\\system.collections.immutable.5.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.componentmodel.composition\\4.5.0\\system.componentmodel.composition.4.5.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.composition\\1.0.31\\system.composition.1.0.31.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.composition.attributedmodel\\1.0.31\\system.composition.attributedmodel.1.0.31.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.composition.convention\\1.0.31\\system.composition.convention.1.0.31.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.composition.hosting\\1.0.31\\system.composition.hosting.1.0.31.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.composition.runtime\\1.0.31\\system.composition.runtime.1.0.31.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.composition.typedparts\\1.0.31\\system.composition.typedparts.1.0.31.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.console\\4.3.0\\system.console.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.diagnostics.diagnosticsource\\4.3.0\\system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.diagnostics.tools\\4.3.0\\system.diagnostics.tools.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.dynamic.runtime\\4.0.11\\system.dynamic.runtime.4.0.11.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.formats.asn1\\5.0.0\\system.formats.asn1.5.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.globalization.calendars\\4.3.0\\system.globalization.calendars.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.globalization.extensions\\4.3.0\\system.globalization.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io.abstractions\\21.0.22\\system.io.abstractions.21.0.22.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io.compression\\4.3.0\\system.io.compression.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io.compression.zipfile\\4.3.0\\system.io.compression.zipfile.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io.filesystem\\4.3.0\\system.io.filesystem.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io.filesystem.primitives\\4.3.0\\system.io.filesystem.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.linq\\4.3.0\\system.linq.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.linq.expressions\\4.3.0\\system.linq.expressions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.net.http\\4.3.0\\system.net.http.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.net.primitives\\4.3.0\\system.net.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.net.sockets\\4.3.0\\system.net.sockets.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.objectmodel\\4.3.0\\system.objectmodel.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.emit\\4.3.0\\system.reflection.emit.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.emit.ilgeneration\\4.3.0\\system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.emit.lightweight\\4.3.0\\system.reflection.emit.lightweight.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.extensions\\4.3.0\\system.reflection.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.metadata\\5.0.0\\system.reflection.metadata.5.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.typeextensions\\4.3.0\\system.reflection.typeextensions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.handles\\4.3.0\\system.runtime.handles.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.interopservices\\4.3.0\\system.runtime.interopservices.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.interopservices.runtimeinformation\\4.3.0\\system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.numerics\\4.3.0\\system.runtime.numerics.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.accesscontrol\\4.5.0\\system.security.accesscontrol.4.5.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.algorithms\\4.3.0\\system.security.cryptography.algorithms.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.cng\\5.0.0\\system.security.cryptography.cng.5.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.csp\\4.3.0\\system.security.cryptography.csp.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.encoding\\4.3.0\\system.security.cryptography.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.openssl\\4.3.0\\system.security.cryptography.openssl.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.pkcs\\5.0.0\\system.security.cryptography.pkcs.5.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.primitives\\4.3.0\\system.security.cryptography.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.protecteddata\\4.4.0\\system.security.cryptography.protecteddata.4.4.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.cryptography.x509certificates\\4.3.0\\system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.permissions\\4.5.0\\system.security.permissions.4.5.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.security.principal.windows\\4.5.0\\system.security.principal.windows.4.5.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.encoding.codepages\\4.5.1\\system.text.encoding.codepages.4.5.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.encoding.extensions\\4.3.0\\system.text.encoding.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.json\\8.0.4\\system.text.json.8.0.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.regularexpressions\\4.3.0\\system.text.regularexpressions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.threading.tasks.dataflow\\4.6.0\\system.threading.tasks.dataflow.4.6.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.threading.tasks.extensions\\4.5.4\\system.threading.tasks.extensions.4.5.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.threading.timer\\4.3.0\\system.threading.timer.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.xml.readerwriter\\4.3.0\\system.xml.readerwriter.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.xml.xdocument\\4.3.0\\system.xml.xdocument.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\terminal.gui\\2.0.0-v2-develop.2329\\terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\testableio.system.io.abstractions\\21.0.22\\testableio.system.io.abstractions.21.0.22.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\testableio.system.io.abstractions.wrappers\\21.0.22\\testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\wcwidth\\2.0.0\\wcwidth.2.0.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/STgSharpTest/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STgSharpTest/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/STgSharpTest/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfo.cs b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfo.cs new file mode 100644 index 00000000..0aa54819 --- /dev/null +++ b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfoInputs.cache b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfoInputs.cache new file mode 100644 index 00000000..dc71fdd4 --- /dev/null +++ b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +65036ac1aa2b022462b1cc6e16ab36cd70d4499450850d171ae425a6610fe37b diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..21e2cab2 --- /dev/null +++ b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTest +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs new file mode 100644 index 00000000..a1f6d1a8 --- /dev/null +++ b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.GlobalUsings.g.cs @@ -0,0 +1,9 @@ +// +global using global::Microsoft.VisualStudio.TestTools.UnitTesting; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.assets.cache b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.assets.cache new file mode 100644 index 00000000..1b977b12 Binary files /dev/null and b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.assets.cache differ diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.AssemblyReference.cache b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.AssemblyReference.cache new file mode 100644 index 00000000..959f47e4 Binary files /dev/null and b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.AssemblyReference.cache differ diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.BuildWithSkipAnalyzers b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt b/STgSharpTest/obj/x64/Debug/net8.0/StgSharpTest.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/STgSharpTest/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/STgSharpTest/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/STgSharpTest/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfo.cs b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfo.cs new file mode 100644 index 00000000..6537f127 --- /dev/null +++ b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTest")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfoInputs.cache b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfoInputs.cache new file mode 100644 index 00000000..cb5cffcb --- /dev/null +++ b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +1d3d676225642d4c08f4cbcba46a80275bd9d96fbf7d11d138efd8f869f71da6 diff --git a/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..21e2cab2 --- /dev/null +++ b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTest +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\STgSharpTest\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GlobalUsings.g.cs b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GlobalUsings.g.cs new file mode 100644 index 00000000..a1f6d1a8 --- /dev/null +++ b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.GlobalUsings.g.cs @@ -0,0 +1,9 @@ +// +global using global::Microsoft.VisualStudio.TestTools.UnitTesting; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.assets.cache b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.assets.cache new file mode 100644 index 00000000..d9a5c003 Binary files /dev/null and b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.assets.cache differ diff --git a/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.csproj.AssemblyReference.cache b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.csproj.AssemblyReference.cache new file mode 100644 index 00000000..545b625c Binary files /dev/null and b/STgSharpTest/obj/x64/Release/net8.0/StgSharpTest.csproj.AssemblyReference.cache differ diff --git a/StgSgharp.Generator/Blueprint/BlueprintNodeAttribute.cs b/StgSgharp.Generator/Blueprint/BlueprintNodeAttribute.cs new file mode 100644 index 00000000..eb5ddc8b --- /dev/null +++ b/StgSgharp.Generator/Blueprint/BlueprintNodeAttribute.cs @@ -0,0 +1,39 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintNodeAttribute.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.Text; + +namespace StgSharp.Blueprint +{ + [AttributeUsage( AttributeTargets.Method, AllowMultiple = false )] + public class BlueprintNodeExecutionAttribute : Attribute { } +} diff --git a/StgSgharp.Generator/Collections/PartialDictionary.cs b/StgSgharp.Generator/Collections/PartialDictionary.cs new file mode 100644 index 00000000..bf3f5c8b --- /dev/null +++ b/StgSgharp.Generator/Collections/PartialDictionary.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionary.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; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary : IDictionary + { + + private readonly Dictionary _source; + private readonly HashSet _keys; + private readonly PartialDictionaryValues _values; + + public PartialDictionary( + Dictionary source, + TKey[] index ) + { + _source = source; + _keys = new HashSet( index ); + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public PartialDictionary( + Dictionary source, + HashSet keys ) + { + _source = source; + _keys = keys; + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public TValue this[ TKey key ] + { + get + { + if( _keys.Contains( key ) ) { + return _source[ key ]; + } + throw new KeyNotFoundException(); + } + set + { + if( _keys.Contains( key ) ) { + _source[ key ] = value; + } + throw new KeyNotFoundException(); + } + } + + public ICollection Keys => _keys; + + public ICollection Values => _values; + + public int Count => _keys.Count; + + public bool Contains( KeyValuePair item ) + { + return _keys.Contains( item.Key ) && _source.Contains( item ); + } + + public bool ContainsKey( TKey key ) + { + return _keys.Contains( key ); + } + + public void CopyTo( KeyValuePair[] array, int arrayIndex ) + { + throw new NotImplementedException(); + } + + public IEnumerator> GetEnumerator() + { + foreach( TKey item in _keys ) { + yield return new KeyValuePair(item, _source[item]); + } + } + + public bool TryGetValue( TKey key, out TValue value ) + { + if( _keys.Contains( key ) ) { + value = _source[ key ]; + return true; + } + value = default!; + return false; + } + + void ICollection>.Add( + KeyValuePair item ) + { + return; + } + + void ICollection>.Clear() + { + throw new NotSupportedException(); + } + + bool ICollection>.IsReadOnly => true; + + bool ICollection>.Remove( + KeyValuePair item ) + { + throw new NotSupportedException(); + } + + void IDictionary.Add( TKey key, TValue value ) + { + return; + } + + bool IDictionary.Remove( TKey key ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} diff --git a/StgSgharp.Generator/Collections/PartialDictionaryValues.cs b/StgSgharp.Generator/Collections/PartialDictionaryValues.cs new file mode 100644 index 00000000..e429cd73 --- /dev/null +++ b/StgSgharp.Generator/Collections/PartialDictionaryValues.cs @@ -0,0 +1,108 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionaryValues.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; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary + { + + internal sealed class PartialDictionaryValues : ICollection + { + + private readonly PartialDictionary _values; + + public PartialDictionaryValues( + PartialDictionary value ) + { + _values = value; + } + + public bool IsReadOnly => true; + + public int Count => _values.Count; + + void ICollection.Add( TValue item ) + { + return; + } + + void ICollection.Clear() + { + return; + } + + public bool Contains( TValue item ) + { + foreach (var kvp in _values) + { + if (kvp.Value != null && kvp.Value.Equals(item)) + { + return true; + } + } + return false; + } + + public void CopyTo( TValue[] array, int arrayIndex ) + { + foreach (var kvp in _values) + { + array[arrayIndex] = kvp.Value; + arrayIndex++; + } + } + + public IEnumerator GetEnumerator() + { + foreach (var key in _values._keys) + { + yield return _values._source[key]; + } + } + + bool ICollection.Remove( TValue item ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } + + } +} diff --git a/StgSgharp.Generator/ExpCodeGenerator.cs b/StgSgharp.Generator/ExpCodeGenerator.cs new file mode 100644 index 00000000..9297d1a5 --- /dev/null +++ b/StgSgharp.Generator/ExpCodeGenerator.cs @@ -0,0 +1,20 @@ +using Microsoft.CodeAnalysis; + +using System; + +namespace StgSgharp.Generator.Expression +{ + [Generator] + public class ExpCodeGenerator : ISourceGenerator + { + public void Execute(GeneratorExecutionContext context) + { + throw new NotImplementedException(); + } + + public void Initialize(GeneratorInitializationContext context) + { + throw new NotImplementedException(); + } + } +} diff --git a/StgSgharp.Generator/ExpReader.cs b/StgSgharp.Generator/ExpReader.cs new file mode 100644 index 00000000..1e796a46 --- /dev/null +++ b/StgSgharp.Generator/ExpReader.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpReader.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 Microsoft.CodeAnalysis.CSharp.Syntax; + +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Text; + +namespace StgSgharp.Generator.Expression +{ + internal class ExpFileReader:IDisposable + { + private FileStream _expFileStream; + private MemoryMappedFile _expMemoryMappedFile; + private bool disposedValue; + + public ExpFileReader( string path ) + { + if( !File.Exists( path ) ) { + throw new FileNotFoundException(); + } + _expFileStream = new FileStream( + path, FileMode.Open, FileAccess.Read ); + _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( + _expFileStream, null, 0, MemoryMappedFileAccess.Read, + HandleInheritability.None, true ); + } + + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + _expFileStream.Dispose(); + _expMemoryMappedFile.Dispose(); + } + + disposedValue = true; + } + } + + // ~ExpFileReader() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + + public MemoryMappedViewStream CreateMemoryStram() + { + return _expMemoryMappedFile.CreateViewStream(); + } + } +} diff --git a/StgSgharp.Generator/ExpressionReader/ExpReader.cs b/StgSgharp.Generator/ExpressionReader/ExpReader.cs new file mode 100644 index 00000000..ed52605c --- /dev/null +++ b/StgSgharp.Generator/ExpressionReader/ExpReader.cs @@ -0,0 +1,88 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpReader.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 Microsoft.CodeAnalysis.CSharp.Syntax; +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Text; + +namespace StgSharp.Expression +{ + internal class ExpFileReader : IDisposable + { + + private bool disposedValue; + private FileStream _expFileStream; + private MemoryMappedFile _expMemoryMappedFile; + + public ExpFileReader( string path ) + { + if( !File.Exists( path ) ) { + throw new FileNotFoundException(); + } + _expFileStream = new FileStream( + path, FileMode.Open, FileAccess.Read ); + _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( + _expFileStream, null, 0, MemoryMappedFileAccess.Read, + HandleInheritability.None, true ); + } + + public MemoryMappedViewStream CreateMemoryStram() + { + return _expMemoryMappedFile.CreateViewStream(); + } + + // ~ExpFileReader() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + _expFileStream.Dispose(); + _expMemoryMappedFile.Dispose(); + } + + disposedValue = true; + } + } + + } +} diff --git a/StgSgharp.Generator/FakeType/PartialDictionary.cs b/StgSgharp.Generator/FakeType/PartialDictionary.cs new file mode 100644 index 00000000..96a48513 --- /dev/null +++ b/StgSgharp.Generator/FakeType/PartialDictionary.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; + +//[assembly: InternalsVisibleTo("StgSharp.Generator")] +namespace StgSharp.Generator.FakeType +{ + internal class PartialDictionary + { + } +} diff --git a/StgSgharp.Generator/SourceGenerator/BpNodeGenerator.cs b/StgSgharp.Generator/SourceGenerator/BpNodeGenerator.cs new file mode 100644 index 00000000..e70739e9 --- /dev/null +++ b/StgSgharp.Generator/SourceGenerator/BpNodeGenerator.cs @@ -0,0 +1,119 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BpNodeGenerator.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 Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Text; + +using StgSharp.Blueprint; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace StgSharp.Generator +{ + internal class BpNodeSyntaxReceiver : ISyntaxReceiver + { + private static readonly string _indexTypeName = typeof( PartialDictionary ).Name; + private static BpNodeSyntaxReceiver receiver = new BpNodeSyntaxReceiver(); + + public List ValidMethod { get; private set; } = new List(); + public List InvalidMethod { get; private set; } = new List(); + + public BpNodeSyntaxReceiver() + { + + } + + public BpNodeSyntaxReceiver(SyntaxNode node) + { + OnVisitSyntaxNode(node); + } + + public void OnVisitSyntaxNode( SyntaxNode syntaxNode ) + { + if( syntaxNode is MethodDeclarationSyntax mds && mds.AttributeLists + .SelectMany( list => list.Attributes ) + .Any( syntax => syntax.Name.ToString() == + typeof( BlueprintNodeExecutionAttribute ).Name ) ) { + SeparatedSyntaxList paramList = mds.ParameterList.Parameters; + if( mds.Modifiers.Any( SyntaxKind.StaticKeyword ) && paramList.Count == + 2 && paramList[ 0 ].Type!.ToString() == _indexTypeName && paramList[ + 1 ].Type!.ToString() == + _indexTypeName ) { + ValidMethod.Add(mds); + } + else + { + InvalidMethod.Add(mds); + } + } + } + + public static void BuildNode(SourceProductionContext context, MethodDeclarationSyntax mds) + { + if (mds.AttributeLists + .SelectMany(list => list.Attributes) + .Any(syntax => syntax.Name.ToString() == + typeof(BlueprintNodeExecutionAttribute).Name)) + { + SeparatedSyntaxList paramList = mds.ParameterList.Parameters; + if (mds.Modifiers.Any(SyntaxKind.StaticKeyword) && paramList.Count == + 2 && paramList[0].Type!.ToString() == _indexTypeName && paramList[ + 1].Type!.ToString() == + _indexTypeName) + { + var methodName = mds.Identifier.Text; + var sourceText = SourceText.From( """ + + """,encoding:Encoding.UTF8); + context.AddSource("GeneratedBlueprintNode.cs", sourceText); + } + else + { + var diagnostic = Diagnostic.Create( + new DiagnosticDescriptor( + id:"SSE0001", + title: "Invalid Blueprint Node Method", + messageFormat: "Blueprint Node Method must be static and have two parameters of type PartialDictionary", + category: "Blueprint Node", + DiagnosticSeverity.Error, + isEnabledByDefault: true), + mds.GetLocation(),mds.Identifier.Text); + + context.ReportDiagnostic(diagnostic); + } + } + } + } +} diff --git a/StgSgharp.Generator/SourceGenerator/MainGenerator.cs b/StgSgharp.Generator/SourceGenerator/MainGenerator.cs new file mode 100644 index 00000000..31b1c6cd --- /dev/null +++ b/StgSgharp.Generator/SourceGenerator/MainGenerator.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpCodeGenerator.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 Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp.Syntax; + +using System; + +namespace StgSharp.Generator +{ + [Generator] + public partial class MainGenerator : IIncrementalGenerator + { + public void Initialize(IncrementalGeneratorInitializationContext context) + { + var declaration = + context.SyntaxProvider.CreateSyntaxProvider( + predicate: static (s,_) => s is MethodDeclarationSyntax, + transform: static (cds,_) => (MethodDeclarationSyntax)cds.Node + ).Where(static m=>m!=null); + + context.RegisterSourceOutput(declaration, BpNodeSyntaxReceiver.BuildNode); + } + } +} diff --git a/StgSgharp.Generator/StgSgharp.Generator.Expression.csproj b/StgSgharp.Generator/StgSgharp.Generator.Expression.csproj new file mode 100644 index 00000000..61fdbab8 --- /dev/null +++ b/StgSgharp.Generator/StgSgharp.Generator.Expression.csproj @@ -0,0 +1,14 @@ + + + + netstandard2.0 + enable + preview + True + + + + + + + diff --git a/StgSgharp.Generator/StgSharp.Generator.csproj b/StgSgharp.Generator/StgSharp.Generator.csproj new file mode 100644 index 00000000..e2db2bc2 --- /dev/null +++ b/StgSgharp.Generator/StgSharp.Generator.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + preview + True + AnyCPU;x64 + + + + + + + diff --git a/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.deps.json b/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.deps.json new file mode 100644 index 00000000..1b014238 --- /dev/null +++ b/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.deps.json @@ -0,0 +1,177 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Generator/1.0.0": { + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "4.12.0" + }, + "runtime": { + "StgSharp.Generator.dll": {} + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": {}, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.12.0.0", + "fileVersion": "4.1200.24.57207" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "Microsoft.CodeAnalysis.Common": "4.12.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.12.0.0", + "fileVersion": "4.1200.24.57207" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "System.Collections.Immutable/8.0.0": {}, + "System.Reflection.Metadata/8.0.0": { + "dependencies": { + "System.Collections.Immutable": "8.0.0" + } + } + } + }, + "libraries": { + "StgSharp.Generator/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==", + "path": "microsoft.codeanalysis.analyzers/3.3.4", + "hashPath": "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c1kNYihL2gdcuU1dqm8R8YeA4YkB43TpU3pa2r66Uooh6AAhRtENzj9A4Kj0a+H8JDDyuTjNZql9XlVUzV+UjA==", + "path": "microsoft.codeanalysis.common/4.12.0", + "hashPath": "microsoft.codeanalysis.common.4.12.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-30vVQ1MizeC22iEdEvI2w0eTIYG43/L20yBzuQH01xKzJgHAoWehzI2F8u07o4mXh4DGMOjQF7aEm0zzvsG3Mg==", + "path": "microsoft.codeanalysis.csharp/4.12.0", + "hashPath": "microsoft.codeanalysis.csharp.4.12.0.nupkg.sha512" + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "path": "system.collections.immutable/8.0.0", + "hashPath": "system.collections.immutable.8.0.0.nupkg.sha512" + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "path": "system.reflection.metadata/8.0.0", + "hashPath": "system.reflection.metadata.8.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.dll b/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.dll new file mode 100644 index 00000000..57aa3041 Binary files /dev/null and b/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.dll differ diff --git a/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.pdb b/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.pdb new file mode 100644 index 00000000..c52f1a3e Binary files /dev/null and b/StgSgharp.Generator/bin/x64/Debug/net8.0/StgSharp.Generator.pdb differ diff --git a/StgSgharp.Generator/global.cs b/StgSgharp.Generator/global.cs new file mode 100644 index 00000000..c2ac9844 --- /dev/null +++ b/StgSgharp.Generator/global.cs @@ -0,0 +1,5 @@ +global using StgSharp.Generator.FakeType; + +using System; +using System.Collections.Generic; +using System.Text; diff --git a/StgSgharp.Generator/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSgharp.Generator/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..961587ff --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.AssemblyInfoInputs.cache b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.AssemblyInfoInputs.cache new file mode 100644 index 00000000..eb8777f2 --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +ca176cd5c61d2dc85f29a7103c4d4591277128a58e3ae9a0f9404b3db20450b2 diff --git a/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..db57ddec --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,21 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = True +build_property.EnforceExtendedAnalyzerRules = True +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Generator +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.assets.cache b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.assets.cache new file mode 100644 index 00000000..8ab23313 Binary files /dev/null and b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.assets.cache differ diff --git a/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.csproj.AssemblyReference.cache b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.csproj.AssemblyReference.cache new file mode 100644 index 00000000..691ce23a Binary files /dev/null and b/StgSgharp.Generator/obj/Debug/net8.0/StgSharp.Generator.csproj.AssemblyReference.cache differ diff --git a/StgSgharp.Generator/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/StgSgharp.Generator/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..81847214 --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache new file mode 100644 index 00000000..64a1031d --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +507d0d80fe4bf532ef6f4152e1c0274456709eeaf88b7cd0eff97aa75d6b6d89 diff --git a/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..38b0b875 --- /dev/null +++ b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = netstandard2.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = True +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Generator +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.assets.cache b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.assets.cache new file mode 100644 index 00000000..0340e57a Binary files /dev/null and b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.assets.cache differ diff --git a/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache new file mode 100644 index 00000000..793d27a1 Binary files /dev/null and b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache differ diff --git a/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt b/StgSgharp.Generator/obj/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSgharp.Generator/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/StgSgharp.Generator/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/StgSgharp.Generator/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..89bf8994 --- /dev/null +++ b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache new file mode 100644 index 00000000..918447f8 --- /dev/null +++ b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +59be71384a64c08c0d97414b957b3c19dad4e0c90fb7132416c556cc8ca21e76 diff --git a/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..38b0b875 --- /dev/null +++ b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = netstandard2.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = True +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Generator +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.assets.cache b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.assets.cache new file mode 100644 index 00000000..c220754b Binary files /dev/null and b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.assets.cache differ diff --git a/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache new file mode 100644 index 00000000..793d27a1 Binary files /dev/null and b/StgSgharp.Generator/obj/Release/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache differ diff --git a/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.dgspec.json b/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.dgspec.json new file mode 100644 index 00000000..8f54ca89 --- /dev/null +++ b/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.dgspec.json @@ -0,0 +1,81 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "projectName": "StgSharp.Generator", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": { + "suppressParent": "All", + "target": "Package", + "version": "[4.12.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.g.props b/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.g.props new file mode 100644 index 00000000..73f3e751 --- /dev/null +++ b/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.g.props @@ -0,0 +1,22 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.11.0 + + + + + + + + + + C:\Users\Youmu\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.4 + + \ No newline at end of file diff --git a/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.g.targets b/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.g.targets new file mode 100644 index 00000000..63299fb0 --- /dev/null +++ b/StgSgharp.Generator/obj/StgSharp.Generator.csproj.nuget.g.targets @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/StgSgharp.Generator/obj/project.assets.json b/StgSgharp.Generator/obj/project.assets.json new file mode 100644 index 00000000..7e08ec69 --- /dev/null +++ b/StgSgharp.Generator/obj/project.assets.json @@ -0,0 +1,1035 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "type": "package", + "build": { + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props": {}, + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets": {} + } + }, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "Microsoft.CodeAnalysis.Common": "[4.12.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + } + } + }, + "libraries": { + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "sha512": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.3.4", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets", + "buildTransitive/config/analysislevel_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_all.globalconfig", + "buildTransitive/config/analysislevel_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_default.globalconfig", + "buildTransitive/config/analysislevel_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_none.globalconfig", + "buildTransitive/config/analysislevel_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended_warnaserror.globalconfig", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/4.12.0": { + "sha512": "c1kNYihL2gdcuU1dqm8R8YeA4YkB43TpU3pa2r66Uooh6AAhRtENzj9A4Kj0a+H8JDDyuTjNZql9XlVUzV+UjA==", + "type": "package", + "path": "microsoft.codeanalysis.common/4.12.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net7.0/Microsoft.CodeAnalysis.dll", + "lib/net7.0/Microsoft.CodeAnalysis.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/Microsoft.CodeAnalysis.dll", + "lib/net8.0/Microsoft.CodeAnalysis.pdb", + "lib/net8.0/Microsoft.CodeAnalysis.xml", + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.4.12.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/4.12.0": { + "sha512": "30vVQ1MizeC22iEdEvI2w0eTIYG43/L20yBzuQH01xKzJgHAoWehzI2F8u07o4mXh4DGMOjQF7aEm0zzvsG3Mg==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/4.12.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.4.12.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "System.Collections.Immutable/8.0.0": { + "sha512": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "type": "package", + "path": "system.collections.immutable/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Collections.Immutable.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", + "lib/net462/System.Collections.Immutable.dll", + "lib/net462/System.Collections.Immutable.xml", + "lib/net6.0/System.Collections.Immutable.dll", + "lib/net6.0/System.Collections.Immutable.xml", + "lib/net7.0/System.Collections.Immutable.dll", + "lib/net7.0/System.Collections.Immutable.xml", + "lib/net8.0/System.Collections.Immutable.dll", + "lib/net8.0/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "system.collections.immutable.8.0.0.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Reflection.Metadata/8.0.0": { + "sha512": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "type": "package", + "path": "system.reflection.metadata/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Reflection.Metadata.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Reflection.Metadata.targets", + "lib/net462/System.Reflection.Metadata.dll", + "lib/net462/System.Reflection.Metadata.xml", + "lib/net6.0/System.Reflection.Metadata.dll", + "lib/net6.0/System.Reflection.Metadata.xml", + "lib/net7.0/System.Reflection.Metadata.dll", + "lib/net7.0/System.Reflection.Metadata.xml", + "lib/net8.0/System.Reflection.Metadata.dll", + "lib/net8.0/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "system.reflection.metadata.8.0.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "Microsoft.CodeAnalysis.CSharp >= 4.12.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "projectName": "StgSharp.Generator", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": { + "suppressParent": "All", + "target": "Package", + "version": "[4.12.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/StgSgharp.Generator/obj/project.nuget.cache b/StgSgharp.Generator/obj/project.nuget.cache new file mode 100644 index 00000000..c8c440d3 --- /dev/null +++ b/StgSgharp.Generator/obj/project.nuget.cache @@ -0,0 +1,14 @@ +{ + "version": 2, + "dgSpecHash": "M4+jwtEt0Jc=", + "success": true, + "projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.4\\microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.common\\4.12.0\\microsoft.codeanalysis.common.4.12.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.12.0\\microsoft.codeanalysis.csharp.4.12.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.collections.immutable\\8.0.0\\system.collections.immutable.8.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.metadata\\8.0.0\\system.reflection.metadata.8.0.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSgharp.Generator/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..6d534a76 --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfoInputs.cache b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfoInputs.cache new file mode 100644 index 00000000..eb8777f2 --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +ca176cd5c61d2dc85f29a7103c4d4591277128a58e3ae9a0f9404b3db20450b2 diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..db57ddec --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,21 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = True +build_property.EnforceExtendedAnalyzerRules = True +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Generator +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.assets.cache b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.assets.cache new file mode 100644 index 00000000..40447f55 Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.assets.cache differ diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.AssemblyReference.cache b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.AssemblyReference.cache new file mode 100644 index 00000000..a2045539 Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.AssemblyReference.cache differ diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.BuildWithSkipAnalyzers b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.CoreCompileInputs.cache b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..1ea5873a --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +afa1b1a9352ed44b12e962cfd8520ff4e6ef5d54d99232294685245ea111c904 diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.FileListAbsolute.txt b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..cb260aba --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\bin\x64\Debug\net8.0\StgSharp.Generator.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\bin\x64\Debug\net8.0\StgSharp.Generator.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\bin\x64\Debug\net8.0\StgSharp.Generator.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\refint\StgSharp.Generator.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\StgSharp.Generator.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\obj\x64\Debug\net8.0\ref\StgSharp.Generator.dll diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.dll b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.dll new file mode 100644 index 00000000..57aa3041 Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.dll differ diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.pdb b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.pdb new file mode 100644 index 00000000..c52f1a3e Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.pdb differ diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.sourcelink.json b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.sourcelink.json new file mode 100644 index 00000000..0d22314c --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/net8.0/StgSharp.Generator.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/ae94c265ae77870ea6498b624b6f71b78fb94e51/*"}} \ No newline at end of file diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/ref/StgSharp.Generator.dll b/StgSgharp.Generator/obj/x64/Debug/net8.0/ref/StgSharp.Generator.dll new file mode 100644 index 00000000..6b0df8de Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Debug/net8.0/ref/StgSharp.Generator.dll differ diff --git a/StgSgharp.Generator/obj/x64/Debug/net8.0/refint/StgSharp.Generator.dll b/StgSgharp.Generator/obj/x64/Debug/net8.0/refint/StgSharp.Generator.dll new file mode 100644 index 00000000..6b0df8de Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Debug/net8.0/refint/StgSharp.Generator.dll differ diff --git a/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.assets.cache b/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.assets.cache new file mode 100644 index 00000000..91f74afa Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.assets.cache differ diff --git a/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.csproj.BuildWithSkipAnalyzers b/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt b/StgSgharp.Generator/obj/x64/Debug/netstandard2.0/StgSharp.Generator.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSgharp.Generator/obj/x64/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs new file mode 100644 index 00000000..8bf3a422 --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] diff --git a/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs new file mode 100644 index 00000000..89bf8994 --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Generator")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache new file mode 100644 index 00000000..918447f8 --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +59be71384a64c08c0d97414b957b3c19dad4e0c90fb7132416c556cc8ca21e76 diff --git a/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..38b0b875 --- /dev/null +++ b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = netstandard2.0 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = True +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Generator +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSgharp.Generator\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.assets.cache b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.assets.cache new file mode 100644 index 00000000..eb9d667e Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.assets.cache differ diff --git a/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache new file mode 100644 index 00000000..793d27a1 Binary files /dev/null and b/StgSgharp.Generator/obj/x64/Release/netstandard2.0/StgSharp.Generator.csproj.AssemblyReference.cache differ diff --git a/StgSharp.C/.clang-format b/StgSharp.C/.clang-format new file mode 100644 index 00000000..89332e75 --- /dev/null +++ b/StgSharp.C/.clang-format @@ -0,0 +1,747 @@ +# Format Style Options - Created with Clang Power Tools +--- +AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Left +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true + BeforeLambdaBody: false + BeforeWhile: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: false +BreakConstructorInitializers: BeforeComma +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: false +ColumnLimit: 100 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth : 8 +ContinuationIndentWidth: 8 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +ForEachMacros: + - '__ata_qc_for_each' + - '__bio_for_each_bvec' + - '__bio_for_each_segment' + - '__evlist__for_each_entry' + - '__evlist__for_each_entry_continue' + - '__evlist__for_each_entry_from' + - '__evlist__for_each_entry_reverse' + - '__evlist__for_each_entry_safe' + - '__for_each_mem_range' + - '__for_each_mem_range_rev' + - '__for_each_thread' + - '__hlist_for_each_rcu' + - '__map__for_each_symbol_by_name' + - '__pci_bus_for_each_res0' + - '__pci_bus_for_each_res1' + - '__pci_dev_for_each_res0' + - '__pci_dev_for_each_res1' + - '__perf_evlist__for_each_entry' + - '__perf_evlist__for_each_entry_reverse' + - '__perf_evlist__for_each_entry_safe' + - '__rq_for_each_bio' + - '__shost_for_each_device' + - '__sym_for_each' + - 'apei_estatus_for_each_section' + - 'ata_for_each_dev' + - 'ata_for_each_link' + - 'ata_qc_for_each' + - 'ata_qc_for_each_raw' + - 'ata_qc_for_each_with_internal' + - 'ax25_for_each' + - 'ax25_uid_for_each' + - 'bio_for_each_bvec' + - 'bio_for_each_bvec_all' + - 'bio_for_each_folio_all' + - 'bio_for_each_integrity_vec' + - 'bio_for_each_segment' + - 'bio_for_each_segment_all' + - 'bio_list_for_each' + - 'bip_for_each_vec' + - 'bond_for_each_slave' + - 'bond_for_each_slave_rcu' + - 'bpf_for_each' + - 'bpf_for_each_reg_in_vstate' + - 'bpf_for_each_reg_in_vstate_mask' + - 'bpf_for_each_spilled_reg' + - 'bpf_object__for_each_map' + - 'bpf_object__for_each_program' + - 'btree_for_each_safe128' + - 'btree_for_each_safe32' + - 'btree_for_each_safe64' + - 'btree_for_each_safel' + - 'card_for_each_dev' + - 'cgroup_taskset_for_each' + - 'cgroup_taskset_for_each_leader' + - 'cpu_aggr_map__for_each_idx' + - 'cpufreq_for_each_efficient_entry_idx' + - 'cpufreq_for_each_entry' + - 'cpufreq_for_each_entry_idx' + - 'cpufreq_for_each_valid_entry' + - 'cpufreq_for_each_valid_entry_idx' + - 'css_for_each_child' + - 'css_for_each_descendant_post' + - 'css_for_each_descendant_pre' + - 'damon_for_each_region' + - 'damon_for_each_region_from' + - 'damon_for_each_region_safe' + - 'damon_for_each_scheme' + - 'damon_for_each_scheme_safe' + - 'damon_for_each_target' + - 'damon_for_each_target_safe' + - 'damos_for_each_filter' + - 'damos_for_each_filter_safe' + - 'damos_for_each_quota_goal' + - 'damos_for_each_quota_goal_safe' + - 'data__for_each_file' + - 'data__for_each_file_new' + - 'data__for_each_file_start' + - 'device_for_each_child_node' + - 'device_for_each_child_node_scoped' + - 'dma_fence_array_for_each' + - 'dma_fence_chain_for_each' + - 'dma_fence_unwrap_for_each' + - 'dma_resv_for_each_fence' + - 'dma_resv_for_each_fence_unlocked' + - 'do_for_each_ftrace_op' + - 'drm_atomic_crtc_for_each_plane' + - 'drm_atomic_crtc_state_for_each_plane' + - 'drm_atomic_crtc_state_for_each_plane_state' + - 'drm_atomic_for_each_plane_damage' + - 'drm_client_for_each_connector_iter' + - 'drm_client_for_each_modeset' + - 'drm_connector_for_each_possible_encoder' + - 'drm_exec_for_each_locked_object' + - 'drm_exec_for_each_locked_object_reverse' + - 'drm_for_each_bridge_in_chain' + - 'drm_for_each_connector_iter' + - 'drm_for_each_crtc' + - 'drm_for_each_crtc_reverse' + - 'drm_for_each_encoder' + - 'drm_for_each_encoder_mask' + - 'drm_for_each_fb' + - 'drm_for_each_legacy_plane' + - 'drm_for_each_plane' + - 'drm_for_each_plane_mask' + - 'drm_for_each_privobj' + - 'drm_gem_for_each_gpuvm_bo' + - 'drm_gem_for_each_gpuvm_bo_safe' + - 'drm_gpuva_for_each_op' + - 'drm_gpuva_for_each_op_from_reverse' + - 'drm_gpuva_for_each_op_reverse' + - 'drm_gpuva_for_each_op_safe' + - 'drm_gpuvm_bo_for_each_va' + - 'drm_gpuvm_bo_for_each_va_safe' + - 'drm_gpuvm_for_each_va' + - 'drm_gpuvm_for_each_va_range' + - 'drm_gpuvm_for_each_va_range_safe' + - 'drm_gpuvm_for_each_va_safe' + - 'drm_mm_for_each_hole' + - 'drm_mm_for_each_node' + - 'drm_mm_for_each_node_in_range' + - 'drm_mm_for_each_node_safe' + - 'dsa_switch_for_each_available_port' + - 'dsa_switch_for_each_cpu_port' + - 'dsa_switch_for_each_cpu_port_continue_reverse' + - 'dsa_switch_for_each_port' + - 'dsa_switch_for_each_port_continue_reverse' + - 'dsa_switch_for_each_port_safe' + - 'dsa_switch_for_each_user_port' + - 'dsa_switch_for_each_user_port_continue_reverse' + - 'dsa_tree_for_each_cpu_port' + - 'dsa_tree_for_each_user_port' + - 'dsa_tree_for_each_user_port_continue_reverse' + - 'dso__for_each_symbol' + - 'elf_hash_for_each_possible' + - 'elf_symtab__for_each_symbol' + - 'evlist__for_each_cpu' + - 'evlist__for_each_entry' + - 'evlist__for_each_entry_continue' + - 'evlist__for_each_entry_from' + - 'evlist__for_each_entry_reverse' + - 'evlist__for_each_entry_safe' + - 'flow_action_for_each' + - 'for_each_acpi_consumer_dev' + - 'for_each_acpi_dev_match' + - 'for_each_active_dev_scope' + - 'for_each_active_drhd_unit' + - 'for_each_active_iommu' + - 'for_each_active_route' + - 'for_each_aggr_pgid' + - 'for_each_and_bit' + - 'for_each_andnot_bit' + - 'for_each_available_child_of_node' + - 'for_each_available_child_of_node_scoped' + - 'for_each_bench' + - 'for_each_bio' + - 'for_each_board_func_rsrc' + - 'for_each_btf_ext_rec' + - 'for_each_btf_ext_sec' + - 'for_each_bvec' + - 'for_each_card_auxs' + - 'for_each_card_auxs_safe' + - 'for_each_card_components' + - 'for_each_card_dapms' + - 'for_each_card_pre_auxs' + - 'for_each_card_prelinks' + - 'for_each_card_rtds' + - 'for_each_card_rtds_safe' + - 'for_each_card_widgets' + - 'for_each_card_widgets_safe' + - 'for_each_cgroup_storage_type' + - 'for_each_child_of_node' + - 'for_each_child_of_node_scoped' + - 'for_each_clear_bit' + - 'for_each_clear_bit_from' + - 'for_each_clear_bitrange' + - 'for_each_clear_bitrange_from' + - 'for_each_cmd' + - 'for_each_cmsghdr' + - 'for_each_collection' + - 'for_each_comp_order' + - 'for_each_compatible_node' + - 'for_each_component_dais' + - 'for_each_component_dais_safe' + - 'for_each_conduit' + - 'for_each_console' + - 'for_each_console_srcu' + - 'for_each_cpu' + - 'for_each_cpu_and' + - 'for_each_cpu_andnot' + - 'for_each_cpu_from' + - 'for_each_cpu_or' + - 'for_each_cpu_wrap' + - 'for_each_dapm_widgets' + - 'for_each_dedup_cand' + - 'for_each_dev_addr' + - 'for_each_dev_scope' + - 'for_each_dma_cap_mask' + - 'for_each_dpcm_be' + - 'for_each_dpcm_be_rollback' + - 'for_each_dpcm_be_safe' + - 'for_each_dpcm_fe' + - 'for_each_drhd_unit' + - 'for_each_dss_dev' + - 'for_each_efi_memory_desc' + - 'for_each_efi_memory_desc_in_map' + - 'for_each_element' + - 'for_each_element_extid' + - 'for_each_element_id' + - 'for_each_enabled_cpu' + - 'for_each_endpoint_of_node' + - 'for_each_event' + - 'for_each_event_tps' + - 'for_each_evictable_lru' + - 'for_each_fib6_node_rt_rcu' + - 'for_each_fib6_walker_rt' + - 'for_each_file_lock' + - 'for_each_free_mem_pfn_range_in_zone_from' + - 'for_each_free_mem_range' + - 'for_each_free_mem_range_reverse' + - 'for_each_func_rsrc' + - 'for_each_gpiochip_node' + - 'for_each_group_evsel' + - 'for_each_group_evsel_head' + - 'for_each_group_member' + - 'for_each_group_member_head' + - 'for_each_hstate' + - 'for_each_hwgpio' + - 'for_each_if' + - 'for_each_inject_fn' + - 'for_each_insn' + - 'for_each_insn_op_loc' + - 'for_each_insn_prefix' + - 'for_each_intid' + - 'for_each_iommu' + - 'for_each_ip_tunnel_rcu' + - 'for_each_irq_nr' + - 'for_each_lang' + - 'for_each_link_ch_maps' + - 'for_each_link_codecs' + - 'for_each_link_cpus' + - 'for_each_link_platforms' + - 'for_each_lru' + - 'for_each_matching_node' + - 'for_each_matching_node_and_match' + - 'for_each_media_entity_data_link' + - 'for_each_mem_pfn_range' + - 'for_each_mem_range' + - 'for_each_mem_range_rev' + - 'for_each_mem_region' + - 'for_each_member' + - 'for_each_memory' + - 'for_each_migratetype_order' + - 'for_each_missing_reg' + - 'for_each_mle_subelement' + - 'for_each_mod_mem_type' + - 'for_each_net' + - 'for_each_net_continue_reverse' + - 'for_each_net_rcu' + - 'for_each_netdev' + - 'for_each_netdev_continue' + - 'for_each_netdev_continue_rcu' + - 'for_each_netdev_continue_reverse' + - 'for_each_netdev_dump' + - 'for_each_netdev_feature' + - 'for_each_netdev_in_bond_rcu' + - 'for_each_netdev_rcu' + - 'for_each_netdev_reverse' + - 'for_each_netdev_safe' + - 'for_each_new_connector_in_state' + - 'for_each_new_crtc_in_state' + - 'for_each_new_mst_mgr_in_state' + - 'for_each_new_plane_in_state' + - 'for_each_new_plane_in_state_reverse' + - 'for_each_new_private_obj_in_state' + - 'for_each_new_reg' + - 'for_each_nhlt_endpoint' + - 'for_each_nhlt_endpoint_fmtcfg' + - 'for_each_nhlt_fmtcfg' + - 'for_each_node' + - 'for_each_node_by_name' + - 'for_each_node_by_type' + - 'for_each_node_mask' + - 'for_each_node_state' + - 'for_each_node_with_cpus' + - 'for_each_node_with_property' + - 'for_each_nonreserved_multicast_dest_pgid' + - 'for_each_numa_hop_mask' + - 'for_each_of_allnodes' + - 'for_each_of_allnodes_from' + - 'for_each_of_cpu_node' + - 'for_each_of_pci_range' + - 'for_each_old_connector_in_state' + - 'for_each_old_crtc_in_state' + - 'for_each_old_mst_mgr_in_state' + - 'for_each_old_plane_in_state' + - 'for_each_old_private_obj_in_state' + - 'for_each_oldnew_connector_in_state' + - 'for_each_oldnew_crtc_in_state' + - 'for_each_oldnew_mst_mgr_in_state' + - 'for_each_oldnew_plane_in_state' + - 'for_each_oldnew_plane_in_state_reverse' + - 'for_each_oldnew_private_obj_in_state' + - 'for_each_online_cpu' + - 'for_each_online_node' + - 'for_each_online_pgdat' + - 'for_each_or_bit' + - 'for_each_path' + - 'for_each_pci_bridge' + - 'for_each_pci_dev' + - 'for_each_pcm_streams' + - 'for_each_physmem_range' + - 'for_each_populated_zone' + - 'for_each_possible_cpu' + - 'for_each_present_blessed_reg' + - 'for_each_present_cpu' + - 'for_each_prime_number' + - 'for_each_prime_number_from' + - 'for_each_probe_cache_entry' + - 'for_each_process' + - 'for_each_process_thread' + - 'for_each_prop_codec_conf' + - 'for_each_prop_dai_codec' + - 'for_each_prop_dai_cpu' + - 'for_each_prop_dlc_codecs' + - 'for_each_prop_dlc_cpus' + - 'for_each_prop_dlc_platforms' + - 'for_each_property_of_node' + - 'for_each_reg' + - 'for_each_reg_filtered' + - 'for_each_reloc' + - 'for_each_reloc_from' + - 'for_each_requested_gpio' + - 'for_each_requested_gpio_in_range' + - 'for_each_reserved_child_of_node' + - 'for_each_reserved_mem_range' + - 'for_each_reserved_mem_region' + - 'for_each_rtd_ch_maps' + - 'for_each_rtd_codec_dais' + - 'for_each_rtd_components' + - 'for_each_rtd_cpu_dais' + - 'for_each_rtd_dais' + - 'for_each_rtd_dais_reverse' + - 'for_each_sband_iftype_data' + - 'for_each_script' + - 'for_each_sec' + - 'for_each_set_bit' + - 'for_each_set_bit_from' + - 'for_each_set_bit_wrap' + - 'for_each_set_bitrange' + - 'for_each_set_bitrange_from' + - 'for_each_set_clump8' + - 'for_each_sg' + - 'for_each_sg_dma_page' + - 'for_each_sg_page' + - 'for_each_sgtable_dma_page' + - 'for_each_sgtable_dma_sg' + - 'for_each_sgtable_page' + - 'for_each_sgtable_sg' + - 'for_each_sibling_event' + - 'for_each_sta_active_link' + - 'for_each_subelement' + - 'for_each_subelement_extid' + - 'for_each_subelement_id' + - 'for_each_sublist' + - 'for_each_subsystem' + - 'for_each_supported_activate_fn' + - 'for_each_supported_inject_fn' + - 'for_each_sym' + - 'for_each_test' + - 'for_each_thread' + - 'for_each_token' + - 'for_each_unicast_dest_pgid' + - 'for_each_valid_link' + - 'for_each_vif_active_link' + - 'for_each_vma' + - 'for_each_vma_range' + - 'for_each_vsi' + - 'for_each_wakeup_source' + - 'for_each_zone' + - 'for_each_zone_zonelist' + - 'for_each_zone_zonelist_nodemask' + - 'func_for_each_insn' + - 'fwnode_for_each_available_child_node' + - 'fwnode_for_each_child_node' + - 'fwnode_for_each_parent_node' + - 'fwnode_graph_for_each_endpoint' + - 'gadget_for_each_ep' + - 'genradix_for_each' + - 'genradix_for_each_from' + - 'genradix_for_each_reverse' + - 'hash_for_each' + - 'hash_for_each_possible' + - 'hash_for_each_possible_rcu' + - 'hash_for_each_possible_rcu_notrace' + - 'hash_for_each_possible_safe' + - 'hash_for_each_rcu' + - 'hash_for_each_safe' + - 'hashmap__for_each_entry' + - 'hashmap__for_each_entry_safe' + - 'hashmap__for_each_key_entry' + - 'hashmap__for_each_key_entry_safe' + - 'hctx_for_each_ctx' + - 'hists__for_each_format' + - 'hists__for_each_sort_list' + - 'hlist_bl_for_each_entry' + - 'hlist_bl_for_each_entry_rcu' + - 'hlist_bl_for_each_entry_safe' + - 'hlist_for_each' + - 'hlist_for_each_entry' + - 'hlist_for_each_entry_continue' + - 'hlist_for_each_entry_continue_rcu' + - 'hlist_for_each_entry_continue_rcu_bh' + - 'hlist_for_each_entry_from' + - 'hlist_for_each_entry_from_rcu' + - 'hlist_for_each_entry_rcu' + - 'hlist_for_each_entry_rcu_bh' + - 'hlist_for_each_entry_rcu_notrace' + - 'hlist_for_each_entry_safe' + - 'hlist_for_each_entry_srcu' + - 'hlist_for_each_safe' + - 'hlist_nulls_for_each_entry' + - 'hlist_nulls_for_each_entry_from' + - 'hlist_nulls_for_each_entry_rcu' + - 'hlist_nulls_for_each_entry_safe' + - 'i3c_bus_for_each_i2cdev' + - 'i3c_bus_for_each_i3cdev' + - 'idr_for_each_entry' + - 'idr_for_each_entry_continue' + - 'idr_for_each_entry_continue_ul' + - 'idr_for_each_entry_ul' + - 'in_dev_for_each_ifa_rcu' + - 'in_dev_for_each_ifa_rtnl' + - 'inet_bind_bucket_for_each' + - 'interval_tree_for_each_span' + - 'intlist__for_each_entry' + - 'intlist__for_each_entry_safe' + - 'kcore_copy__for_each_phdr' + - 'key_for_each' + - 'key_for_each_safe' + - 'klp_for_each_func' + - 'klp_for_each_func_safe' + - 'klp_for_each_func_static' + - 'klp_for_each_object' + - 'klp_for_each_object_safe' + - 'klp_for_each_object_static' + - 'kunit_suite_for_each_test_case' + - 'kvm_for_each_memslot' + - 'kvm_for_each_memslot_in_gfn_range' + - 'kvm_for_each_vcpu' + - 'libbpf_nla_for_each_attr' + - 'list_for_each' + - 'list_for_each_codec' + - 'list_for_each_codec_safe' + - 'list_for_each_continue' + - 'list_for_each_entry' + - 'list_for_each_entry_continue' + - 'list_for_each_entry_continue_rcu' + - 'list_for_each_entry_continue_reverse' + - 'list_for_each_entry_from' + - 'list_for_each_entry_from_rcu' + - 'list_for_each_entry_from_reverse' + - 'list_for_each_entry_lockless' + - 'list_for_each_entry_rcu' + - 'list_for_each_entry_reverse' + - 'list_for_each_entry_safe' + - 'list_for_each_entry_safe_continue' + - 'list_for_each_entry_safe_from' + - 'list_for_each_entry_safe_reverse' + - 'list_for_each_entry_srcu' + - 'list_for_each_from' + - 'list_for_each_prev' + - 'list_for_each_prev_safe' + - 'list_for_each_rcu' + - 'list_for_each_reverse' + - 'list_for_each_safe' + - 'llist_for_each' + - 'llist_for_each_entry' + - 'llist_for_each_entry_safe' + - 'llist_for_each_safe' + - 'lwq_for_each_safe' + - 'map__for_each_symbol' + - 'map__for_each_symbol_by_name' + - 'mas_for_each' + - 'mci_for_each_dimm' + - 'media_device_for_each_entity' + - 'media_device_for_each_intf' + - 'media_device_for_each_link' + - 'media_device_for_each_pad' + - 'media_entity_for_each_pad' + - 'media_pipeline_for_each_entity' + - 'media_pipeline_for_each_pad' + - 'mlx5_lag_for_each_peer_mdev' + - 'msi_domain_for_each_desc' + - 'msi_for_each_desc' + - 'mt_for_each' + - 'nanddev_io_for_each_page' + - 'netdev_for_each_lower_dev' + - 'netdev_for_each_lower_private' + - 'netdev_for_each_lower_private_rcu' + - 'netdev_for_each_mc_addr' + - 'netdev_for_each_synced_mc_addr' + - 'netdev_for_each_synced_uc_addr' + - 'netdev_for_each_uc_addr' + - 'netdev_for_each_upper_dev_rcu' + - 'netdev_hw_addr_list_for_each' + - 'nft_rule_for_each_expr' + - 'nla_for_each_attr' + - 'nla_for_each_attr_type' + - 'nla_for_each_nested' + - 'nla_for_each_nested_type' + - 'nlmsg_for_each_attr' + - 'nlmsg_for_each_msg' + - 'nr_neigh_for_each' + - 'nr_neigh_for_each_safe' + - 'nr_node_for_each' + - 'nr_node_for_each_safe' + - 'of_for_each_phandle' + - 'of_property_for_each_string' + - 'of_property_for_each_u32' + - 'pci_bus_for_each_resource' + - 'pci_dev_for_each_resource' + - 'pcl_for_each_chunk' + - 'pcl_for_each_segment' + - 'pcm_for_each_format' + - 'perf_config_items__for_each_entry' + - 'perf_config_sections__for_each_entry' + - 'perf_config_set__for_each_entry' + - 'perf_cpu_map__for_each_cpu' + - 'perf_cpu_map__for_each_cpu_skip_any' + - 'perf_cpu_map__for_each_idx' + - 'perf_evlist__for_each_entry' + - 'perf_evlist__for_each_entry_reverse' + - 'perf_evlist__for_each_entry_safe' + - 'perf_evlist__for_each_evsel' + - 'perf_evlist__for_each_mmap' + - 'perf_hpp_list__for_each_format' + - 'perf_hpp_list__for_each_format_safe' + - 'perf_hpp_list__for_each_sort_list' + - 'perf_hpp_list__for_each_sort_list_safe' + - 'perf_tool_event__for_each_event' + - 'plist_for_each' + - 'plist_for_each_continue' + - 'plist_for_each_entry' + - 'plist_for_each_entry_continue' + - 'plist_for_each_entry_safe' + - 'plist_for_each_safe' + - 'pnp_for_each_card' + - 'pnp_for_each_dev' + - 'protocol_for_each_card' + - 'protocol_for_each_dev' + - 'queue_for_each_hw_ctx' + - 'radix_tree_for_each_slot' + - 'radix_tree_for_each_tagged' + - 'rb_for_each' + - 'rbtree_postorder_for_each_entry_safe' + - 'rdma_for_each_block' + - 'rdma_for_each_port' + - 'rdma_umem_for_each_dma_block' + - 'resort_rb__for_each_entry' + - 'resource_list_for_each_entry' + - 'resource_list_for_each_entry_safe' + - 'rhl_for_each_entry_rcu' + - 'rhl_for_each_rcu' + - 'rht_for_each' + - 'rht_for_each_entry' + - 'rht_for_each_entry_from' + - 'rht_for_each_entry_rcu' + - 'rht_for_each_entry_rcu_from' + - 'rht_for_each_entry_safe' + - 'rht_for_each_from' + - 'rht_for_each_rcu' + - 'rht_for_each_rcu_from' + - 'rq_for_each_bvec' + - 'rq_for_each_segment' + - 'rq_list_for_each' + - 'rq_list_for_each_safe' + - 'sample_read_group__for_each' + - 'scsi_for_each_prot_sg' + - 'scsi_for_each_sg' + - 'sctp_for_each_hentry' + - 'sctp_skb_for_each' + - 'sec_for_each_insn' + - 'sec_for_each_insn_continue' + - 'sec_for_each_insn_from' + - 'sec_for_each_sym' + - 'shdma_for_each_chan' + - 'shost_for_each_device' + - 'sk_for_each' + - 'sk_for_each_bound' + - 'sk_for_each_entry_offset_rcu' + - 'sk_for_each_from' + - 'sk_for_each_rcu' + - 'sk_for_each_safe' + - 'sk_nulls_for_each' + - 'sk_nulls_for_each_from' + - 'sk_nulls_for_each_rcu' + - 'snd_array_for_each' + - 'snd_pcm_group_for_each_entry' + - 'snd_soc_dapm_widget_for_each_path' + - 'snd_soc_dapm_widget_for_each_path_safe' + - 'snd_soc_dapm_widget_for_each_sink_path' + - 'snd_soc_dapm_widget_for_each_source_path' + - 'sparsebit_for_each_set_range' + - 'strlist__for_each_entry' + - 'strlist__for_each_entry_safe' + - 'sym_for_each_insn' + - 'sym_for_each_insn_continue_reverse' + - 'symbols__for_each_entry' + - 'tb_property_for_each' + - 'tcf_act_for_each_action' + - 'tcf_exts_for_each_action' + - 'ttm_resource_manager_for_each_res' + - 'udp_portaddr_for_each_entry' + - 'udp_portaddr_for_each_entry_rcu' + - 'usb_hub_for_each_child' + - 'v4l2_device_for_each_subdev' + - 'v4l2_m2m_for_each_dst_buf' + - 'v4l2_m2m_for_each_dst_buf_safe' + - 'v4l2_m2m_for_each_src_buf' + - 'v4l2_m2m_for_each_src_buf_safe' + - 'virtio_device_for_each_vq' + - 'while_for_each_ftrace_op' + - 'xa_for_each' + - 'xa_for_each_marked' + - 'xa_for_each_range' + - 'xa_for_each_start' + - 'xas_for_each' + - 'xas_for_each_conflict' + - 'xas_for_each_marked' + - 'xbc_array_for_each_value' + - 'xbc_for_each_key_value' + - 'xbc_node_for_each_array_value' + - 'xbc_node_for_each_child' + - 'xbc_node_for_each_key_value' + - 'xbc_node_for_each_subkey' + - 'ynl_attr_for_each' + - 'ynl_attr_for_each_nested' + - 'ynl_attr_for_each_payload' + - 'zorro_for_each_dev' +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: (Test)?$ +IndentCaseLabels: false +IndentGotoLabels: false +IndentPPDirectives: None +IndentWidth: 8 +IndentWrappedFunctionNames: false +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 8 +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 10 +PenaltyBreakBeforeFirstCallParameter: 30 +PenaltyBreakComment: 10 +PenaltyBreakFirstLessLess: 0 +PenaltyBreakString: 10 +PenaltyExcessCharacter: 100 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Right +ReflowComments: false +SortIncludes: false +SortUsingDeclarations: false +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatementsExceptForEachMacros +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp03 +TabWidth: 8 +UseTab: Never +... diff --git a/StgSharp.C/StgSharpC.c b/StgSharp.C/StgSharpC.c new file mode 100644 index 00000000..fc1972ed --- /dev/null +++ b/StgSharp.C/StgSharpC.c @@ -0,0 +1,75 @@ +#include "StgSharpC.h" +#include "gl.h" +#include "glfw3.h" +#include +#include + +GladGLContext *currentContext; +extern char infolog[512]; + +SSCAPI int SSCDECL glCheckShaderStat(GladGLContext *context, uint64_t shaderHandle, int key, + char **logRef) +{ + int stat = 0; + context->GetShaderiv(shaderHandle, key, &stat); + if (!stat) { + context->GetShaderInfoLog(shaderHandle, 512, NULL, infolog); + } + *logRef = infolog; + return stat; +} + +SSCAPI void SSCDECL initGL(int majorVersion, int minorVersion) +{ + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); +} + +SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char *procName) +{ + void *ret = glfwGetProcAddress(procName); + // printf("%llu\n", (uint64_t)ret); + if (ret == NULL) { + strcpy_s(infolog,30, "Failed to load OpenGL api:"); + for (size_t i = 0; i < sizeof(procName); i++) { + infolog[30 + i] = procName[i]; + } + //printf("%s\n", infolog); + } + return (GLFWglproc)ret; +} + +SSCAPI unsigned int linkShaderProgram(GladGLContext *context, GLuint shaderProgram) +{ + context->LinkProgram(shaderProgram); + + int success; + context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success); + if (!success) { + context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog); + return 0; + } else { + return shaderProgram; + } +} + +SSCAPI void SSCDECL loadImageData(char *location, Image *out, imageLoader loader) +{ + if (loader == NULL) { + loader = stbi_load; + } + out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0); +} + +SSCAPI void SSCDECL unloadImageData(Image *out) +{ + free(out->pixelPtr); +} + +char *SSCDECL readLog() +{ + infolog[511] = '\0'; + return infolog; +} diff --git a/StgSharp.C/StgSharpC.h b/StgSharp.C/StgSharpC.h new file mode 100644 index 00000000..7730729e --- /dev/null +++ b/StgSharp.C/StgSharpC.h @@ -0,0 +1,73 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#ifndef SSC +#define SSC + +#include "ssc_internal.h" + +#define STBIDEF SSCAPI +#include "stb_image.h" + +#include "gl.h" +#include "wgl.h" +#include "glfw3.h" +#include +#include + +#ifndef SSCAPI_DEFINE + +#ifdef _WIN32 +#define SSCAPI __declspec(dllexport) +#elif defined _LINUX_ +#define SSCAPI __attribute__((dllexport)) +#elif defined _APPLE_ +#define SSCAPI __attribute__((visibility("default"))) +#else +#define SSCAPI +#endif + +#endif // ! SSCAPI_DEFINE + +#if __cplusplus +extern "C" { +#endif + +#define byte char +#define cs_char uint16_t +#define ssc_null_assert(ptr) assert(ptr != NULL) + +#define ALIGN(simdVec) _mm_loadu_ps(&simdVec) +#define ALIGN256(simdVec) _mm256_loadu_ps(&simdVec) +#define ALIGN512(simdVec) _mm512_loadu_ps(&simdVec) + +typedef struct Image { + int width; + int height; + int channel; + char *pixelPtr; +} Image; + +typedef char *(*imageLoader)(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); + +SSCAPI char infolog[512]; +SSCAPI int SSCDECL glCheckShaderStat(GladGLContext *context, uint64_t shaderHandle, int key, + char **logRef); +SSCAPI void SSCDECL initGL(int majorVersion, int minorVersion); +SSCAPI unsigned int SSCDECL linkShaderProgram(GladGLContext *context, GLuint shadertype); +SSCAPI void SSCDECL loadImageData(char *location, Image *out, imageLoader loader); +SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char *procName); +SSCAPI void SSCDECL unloadImageData(Image *out); +SSCAPI char *SSCDECL readLog(void); + +#pragma endregion + +SSCAPI int SSCDECL load_intrinsic_function(void *intrinsic_context); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/StgSharp.C/StgSharpC.vcxproj b/StgSharp.C/StgSharpC.vcxproj new file mode 100644 index 00000000..1d64aa1e --- /dev/null +++ b/StgSharp.C/StgSharpC.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {20cbff26-6746-402e-992c-7b643e9423eb} + StgSharpC + 10.0 + StgSharp.C + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + false + + + DynamicLibrary + false + v143 + true + Unicode + 14.41.34120 + + + + + + + + + + + + + + + + + + + + + $(SolutionDir)build + + + $(SolutionDir)build + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + stdc17 + Disabled + true + All + true + true + Speed + + + Console + true + opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) + + + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + Speed + NoListing + stdcpp20 + stdc17 + CompileAsC + true + + + Console + true + true + false + opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) + LinkVerbose + UseLinkTimeCodeGeneration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/StgSharp.C/StgSharpC.vcxproj.filters b/StgSharp.C/StgSharpC.vcxproj.filters new file mode 100644 index 00000000..cd3a7852 --- /dev/null +++ b/StgSharp.C/StgSharpC.vcxproj.filters @@ -0,0 +1,92 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + 源文件 + + + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + 头文件 + + + \ No newline at end of file diff --git a/StgSharp.C/StgSharpC.vcxproj.user b/StgSharp.C/StgSharpC.vcxproj.user new file mode 100644 index 00000000..6e73c83d --- /dev/null +++ b/StgSharp.C/StgSharpC.vcxproj.user @@ -0,0 +1,7 @@ + + + + $(SolutionDir)Output\x64\Debug\net6.0\StgSharpDebug.exe + WindowsLocalDebugger + + \ No newline at end of file diff --git a/StgSharp.C/dllmain.c b/StgSharp.C/dllmain.c new file mode 100644 index 00000000..23915197 --- /dev/null +++ b/StgSharp.C/dllmain.c @@ -0,0 +1,35 @@ + +#include "StgSharpC.h" + +#ifdef _WIN32 + +// clang-format off + +BOOL APIENTRY DllMain( + HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved +) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + return 1; + case DLL_THREAD_ATTACH: + return 1; + case DLL_THREAD_DETACH: + return 1; + case DLL_PROCESS_DETACH: + return 1; + break; + } + return TRUE; +} +#else +attribute((constructor)) void DllMain() +{ +} + +#endif // _WIN32 + +// clang-format on diff --git a/StgSharp.C/gl.h b/StgSharp.C/gl.h new file mode 100644 index 00000000..192f3429 --- /dev/null +++ b/StgSharp.C/gl.h @@ -0,0 +1,12656 @@ +/** + * Loader generated by glad 2.0.5 on Fri Feb 16 00:51:02 2024 + * + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 + * + * Generator: C/C++ + * Specification: gl + * Extensions: 619 + * + * APIs: + * - gl:core=4.6 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False + * - MX = True + * - ON_DEMAND = False + * + * Commandline: + * --api='gl:core=4.6' --extensions='GL_3DFX_multisample,GL_3DFX_tbuffer,GL_3DFX_texture_compression_FXT1,GL_AMD_blend_minmax_factor,GL_AMD_conservative_depth,GL_AMD_debug_output,GL_AMD_depth_clamp_separate,GL_AMD_draw_buffers_blend,GL_AMD_framebuffer_multisample_advanced,GL_AMD_framebuffer_sample_positions,GL_AMD_gcn_shader,GL_AMD_gpu_shader_half_float,GL_AMD_gpu_shader_int16,GL_AMD_gpu_shader_int64,GL_AMD_interleaved_elements,GL_AMD_multi_draw_indirect,GL_AMD_name_gen_delete,GL_AMD_occlusion_query_event,GL_AMD_performance_monitor,GL_AMD_pinned_memory,GL_AMD_query_buffer_object,GL_AMD_sample_positions,GL_AMD_seamless_cubemap_per_texture,GL_AMD_shader_atomic_counter_ops,GL_AMD_shader_ballot,GL_AMD_shader_explicit_vertex_parameter,GL_AMD_shader_gpu_shader_half_float_fetch,GL_AMD_shader_image_load_store_lod,GL_AMD_shader_stencil_export,GL_AMD_shader_trinary_minmax,GL_AMD_sparse_texture,GL_AMD_stencil_operation_extended,GL_AMD_texture_gather_bias_lod,GL_AMD_texture_texture4,GL_AMD_transform_feedback3_lines_triangles,GL_AMD_transform_feedback4,GL_AMD_vertex_shader_layer,GL_AMD_vertex_shader_tessellator,GL_AMD_vertex_shader_viewport_index,GL_APPLE_aux_depth_stencil,GL_APPLE_client_storage,GL_APPLE_element_array,GL_APPLE_fence,GL_APPLE_float_pixels,GL_APPLE_flush_buffer_range,GL_APPLE_object_purgeable,GL_APPLE_rgb_422,GL_APPLE_row_bytes,GL_APPLE_specular_vector,GL_APPLE_texture_range,GL_APPLE_transform_hint,GL_APPLE_vertex_array_object,GL_APPLE_vertex_array_range,GL_APPLE_vertex_program_evaluators,GL_APPLE_ycbcr_422,GL_ARB_ES2_compatibility,GL_ARB_ES3_1_compatibility,GL_ARB_ES3_2_compatibility,GL_ARB_ES3_compatibility,GL_ARB_arrays_of_arrays,GL_ARB_base_instance,GL_ARB_bindless_texture,GL_ARB_blend_func_extended,GL_ARB_buffer_storage,GL_ARB_cl_event,GL_ARB_clear_buffer_object,GL_ARB_clear_texture,GL_ARB_clip_control,GL_ARB_color_buffer_float,GL_ARB_compatibility,GL_ARB_compressed_texture_pixel_storage,GL_ARB_compute_shader,GL_ARB_compute_variable_group_size,GL_ARB_conditional_render_inverted,GL_ARB_conservative_depth,GL_ARB_copy_buffer,GL_ARB_copy_image,GL_ARB_cull_distance,GL_ARB_debug_output,GL_ARB_depth_buffer_float,GL_ARB_depth_clamp,GL_ARB_depth_texture,GL_ARB_derivative_control,GL_ARB_direct_state_access,GL_ARB_draw_buffers,GL_ARB_draw_buffers_blend,GL_ARB_draw_elements_base_vertex,GL_ARB_draw_indirect,GL_ARB_draw_instanced,GL_ARB_enhanced_layouts,GL_ARB_explicit_attrib_location,GL_ARB_explicit_uniform_location,GL_ARB_fragment_coord_conventions,GL_ARB_fragment_layer_viewport,GL_ARB_fragment_program,GL_ARB_fragment_program_shadow,GL_ARB_fragment_shader,GL_ARB_fragment_shader_interlock,GL_ARB_framebuffer_no_attachments,GL_ARB_framebuffer_object,GL_ARB_framebuffer_sRGB,GL_ARB_geometry_shader4,GL_ARB_get_program_binary,GL_ARB_get_texture_sub_image,GL_ARB_gl_spirv,GL_ARB_gpu_shader5,GL_ARB_gpu_shader_fp64,GL_ARB_gpu_shader_int64,GL_ARB_half_float_pixel,GL_ARB_half_float_vertex,GL_ARB_imaging,GL_ARB_indirect_parameters,GL_ARB_instanced_arrays,GL_ARB_internalformat_query,GL_ARB_internalformat_query2,GL_ARB_invalidate_subdata,GL_ARB_map_buffer_alignment,GL_ARB_map_buffer_range,GL_ARB_matrix_palette,GL_ARB_multi_bind,GL_ARB_multi_draw_indirect,GL_ARB_multisample,GL_ARB_multitexture,GL_ARB_occlusion_query,GL_ARB_occlusion_query2,GL_ARB_parallel_shader_compile,GL_ARB_pipeline_statistics_query,GL_ARB_pixel_buffer_object,GL_ARB_point_parameters,GL_ARB_point_sprite,GL_ARB_polygon_offset_clamp,GL_ARB_post_depth_coverage,GL_ARB_program_interface_query,GL_ARB_provoking_vertex,GL_ARB_query_buffer_object,GL_ARB_robust_buffer_access_behavior,GL_ARB_robustness,GL_ARB_robustness_isolation,GL_ARB_sample_locations,GL_ARB_sample_shading,GL_ARB_sampler_objects,GL_ARB_seamless_cube_map,GL_ARB_seamless_cubemap_per_texture,GL_ARB_separate_shader_objects,GL_ARB_shader_atomic_counter_ops,GL_ARB_shader_atomic_counters,GL_ARB_shader_ballot,GL_ARB_shader_bit_encoding,GL_ARB_shader_clock,GL_ARB_shader_draw_parameters,GL_ARB_shader_group_vote,GL_ARB_shader_image_load_store,GL_ARB_shader_image_size,GL_ARB_shader_objects,GL_ARB_shader_precision,GL_ARB_shader_stencil_export,GL_ARB_shader_storage_buffer_object,GL_ARB_shader_subroutine,GL_ARB_shader_texture_image_samples,GL_ARB_shader_texture_lod,GL_ARB_shader_viewport_layer_array,GL_ARB_shading_language_100,GL_ARB_shading_language_420pack,GL_ARB_shading_language_include,GL_ARB_shading_language_packing,GL_ARB_shadow,GL_ARB_shadow_ambient,GL_ARB_sparse_buffer,GL_ARB_sparse_texture,GL_ARB_sparse_texture2,GL_ARB_sparse_texture_clamp,GL_ARB_spirv_extensions,GL_ARB_stencil_texturing,GL_ARB_sync,GL_ARB_tessellation_shader,GL_ARB_texture_barrier,GL_ARB_texture_border_clamp,GL_ARB_texture_buffer_object,GL_ARB_texture_buffer_object_rgb32,GL_ARB_texture_buffer_range,GL_ARB_texture_compression,GL_ARB_texture_compression_bptc,GL_ARB_texture_compression_rgtc,GL_ARB_texture_cube_map,GL_ARB_texture_cube_map_array,GL_ARB_texture_env_add,GL_ARB_texture_env_combine,GL_ARB_texture_env_crossbar,GL_ARB_texture_env_dot3,GL_ARB_texture_filter_anisotropic,GL_ARB_texture_filter_minmax,GL_ARB_texture_float,GL_ARB_texture_gather,GL_ARB_texture_mirror_clamp_to_edge,GL_ARB_texture_mirrored_repeat,GL_ARB_texture_multisample,GL_ARB_texture_non_power_of_two,GL_ARB_texture_query_levels,GL_ARB_texture_query_lod,GL_ARB_texture_rectangle,GL_ARB_texture_rg,GL_ARB_texture_rgb10_a2ui,GL_ARB_texture_stencil8,GL_ARB_texture_storage,GL_ARB_texture_storage_multisample,GL_ARB_texture_swizzle,GL_ARB_texture_view,GL_ARB_timer_query,GL_ARB_transform_feedback2,GL_ARB_transform_feedback3,GL_ARB_transform_feedback_instanced,GL_ARB_transform_feedback_overflow_query,GL_ARB_transpose_matrix,GL_ARB_uniform_buffer_object,GL_ARB_vertex_array_bgra,GL_ARB_vertex_array_object,GL_ARB_vertex_attrib_64bit,GL_ARB_vertex_attrib_binding,GL_ARB_vertex_blend,GL_ARB_vertex_buffer_object,GL_ARB_vertex_program,GL_ARB_vertex_shader,GL_ARB_vertex_type_10f_11f_11f_rev,GL_ARB_vertex_type_2_10_10_10_rev,GL_ARB_viewport_array,GL_ARB_window_pos,GL_ATI_draw_buffers,GL_ATI_element_array,GL_ATI_envmap_bumpmap,GL_ATI_fragment_shader,GL_ATI_map_object_buffer,GL_ATI_meminfo,GL_ATI_pixel_format_float,GL_ATI_pn_triangles,GL_ATI_separate_stencil,GL_ATI_text_fragment_shader,GL_ATI_texture_env_combine3,GL_ATI_texture_float,GL_ATI_texture_mirror_once,GL_ATI_vertex_array_object,GL_ATI_vertex_attrib_array_object,GL_ATI_vertex_streams,GL_EXT_422_pixels,GL_EXT_EGL_image_storage,GL_EXT_EGL_sync,GL_EXT_abgr,GL_EXT_bgra,GL_EXT_bindable_uniform,GL_EXT_blend_color,GL_EXT_blend_equation_separate,GL_EXT_blend_func_separate,GL_EXT_blend_logic_op,GL_EXT_blend_minmax,GL_EXT_blend_subtract,GL_EXT_clip_volume_hint,GL_EXT_cmyka,GL_EXT_color_subtable,GL_EXT_compiled_vertex_array,GL_EXT_convolution,GL_EXT_coordinate_frame,GL_EXT_copy_texture,GL_EXT_cull_vertex,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_bounds_test,GL_EXT_direct_state_access,GL_EXT_draw_buffers2,GL_EXT_draw_instanced,GL_EXT_draw_range_elements,GL_EXT_external_buffer,GL_EXT_fog_coord,GL_EXT_framebuffer_blit,GL_EXT_framebuffer_blit_layers,GL_EXT_framebuffer_multisample,GL_EXT_framebuffer_multisample_blit_scaled,GL_EXT_framebuffer_object,GL_EXT_framebuffer_sRGB,GL_EXT_geometry_shader4,GL_EXT_gpu_program_parameters,GL_EXT_gpu_shader4,GL_EXT_histogram,GL_EXT_index_array_formats,GL_EXT_index_func,GL_EXT_index_material,GL_EXT_index_texture,GL_EXT_light_texture,GL_EXT_memory_object,GL_EXT_memory_object_fd,GL_EXT_memory_object_win32,GL_EXT_misc_attribute,GL_EXT_multi_draw_arrays,GL_EXT_multisample,GL_EXT_multiview_tessellation_geometry_shader,GL_EXT_multiview_texture_multisample,GL_EXT_multiview_timer_query,GL_EXT_packed_depth_stencil,GL_EXT_packed_float,GL_EXT_packed_pixels,GL_EXT_paletted_texture,GL_EXT_pixel_buffer_object,GL_EXT_pixel_transform,GL_EXT_pixel_transform_color_table,GL_EXT_point_parameters,GL_EXT_polygon_offset,GL_EXT_polygon_offset_clamp,GL_EXT_post_depth_coverage,GL_EXT_provoking_vertex,GL_EXT_raster_multisample,GL_EXT_rescale_normal,GL_EXT_secondary_color,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_semaphore_win32,GL_EXT_separate_shader_objects,GL_EXT_separate_specular_color,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_image_load_formatted,GL_EXT_shader_image_load_store,GL_EXT_shader_integer_mix,GL_EXT_shader_samples_identical,GL_EXT_shadow_funcs,GL_EXT_shared_texture_palette,GL_EXT_sparse_texture2,GL_EXT_stencil_clear_tag,GL_EXT_stencil_two_side,GL_EXT_stencil_wrap,GL_EXT_subtexture,GL_EXT_texture,GL_EXT_texture3D,GL_EXT_texture_array,GL_EXT_texture_buffer_object,GL_EXT_texture_compression_latc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_cube_map,GL_EXT_texture_env_add,GL_EXT_texture_env_combine,GL_EXT_texture_env_dot3,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_filter_minmax,GL_EXT_texture_integer,GL_EXT_texture_lod_bias,GL_EXT_texture_mirror_clamp,GL_EXT_texture_object,GL_EXT_texture_perturb_normal,GL_EXT_texture_sRGB,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_RG8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_shared_exponent,GL_EXT_texture_snorm,GL_EXT_texture_storage,GL_EXT_texture_swizzle,GL_EXT_timer_query,GL_EXT_transform_feedback,GL_EXT_vertex_array,GL_EXT_vertex_array_bgra,GL_EXT_vertex_attrib_64bit,GL_EXT_vertex_shader,GL_EXT_vertex_weighting,GL_EXT_win32_keyed_mutex,GL_EXT_window_rectangles,GL_EXT_x11_sync_object,GL_GREMEDY_frame_terminator,GL_GREMEDY_string_marker,GL_HP_convolution_border_modes,GL_HP_image_transform,GL_HP_occlusion_test,GL_HP_texture_lighting,GL_IBM_cull_vertex,GL_IBM_multimode_draw_arrays,GL_IBM_rasterpos_clip,GL_IBM_static_data,GL_IBM_texture_mirrored_repeat,GL_IBM_vertex_array_lists,GL_INGR_blend_func_separate,GL_INGR_color_clamp,GL_INGR_interlace_read,GL_INTEL_blackhole_render,GL_INTEL_conservative_rasterization,GL_INTEL_fragment_shader_ordering,GL_INTEL_framebuffer_CMAA,GL_INTEL_map_texture,GL_INTEL_parallel_arrays,GL_INTEL_performance_query,GL_KHR_blend_equation_advanced,GL_KHR_blend_equation_advanced_coherent,GL_KHR_context_flush_control,GL_KHR_debug,GL_KHR_no_error,GL_KHR_parallel_shader_compile,GL_KHR_robust_buffer_access_behavior,GL_KHR_robustness,GL_KHR_shader_subgroup,GL_KHR_texture_compression_astc_hdr,GL_KHR_texture_compression_astc_ldr,GL_KHR_texture_compression_astc_sliced_3d,GL_MESAX_texture_stack,GL_MESA_framebuffer_flip_x,GL_MESA_framebuffer_flip_y,GL_MESA_framebuffer_swap_xy,GL_MESA_pack_invert,GL_MESA_program_binary_formats,GL_MESA_resize_buffers,GL_MESA_shader_integer_functions,GL_MESA_tile_raster_order,GL_MESA_window_pos,GL_MESA_ycbcr_texture,GL_NVX_blend_equation_advanced_multi_draw_buffers,GL_NVX_conditional_render,GL_NVX_gpu_memory_info,GL_NVX_gpu_multicast2,GL_NVX_linked_gpu_multicast,GL_NVX_progress_fence,GL_NV_alpha_to_coverage_dither_control,GL_NV_bindless_multi_draw_indirect,GL_NV_bindless_multi_draw_indirect_count,GL_NV_bindless_texture,GL_NV_blend_equation_advanced,GL_NV_blend_equation_advanced_coherent,GL_NV_blend_minmax_factor,GL_NV_blend_square,GL_NV_clip_space_w_scaling,GL_NV_command_list,GL_NV_compute_program5,GL_NV_compute_shader_derivatives,GL_NV_conditional_render,GL_NV_conservative_raster,GL_NV_conservative_raster_dilate,GL_NV_conservative_raster_pre_snap,GL_NV_conservative_raster_pre_snap_triangles,GL_NV_conservative_raster_underestimation,GL_NV_copy_depth_to_color,GL_NV_copy_image,GL_NV_deep_texture3D,GL_NV_depth_buffer_float,GL_NV_depth_clamp,GL_NV_draw_texture,GL_NV_draw_vulkan_image,GL_NV_evaluators,GL_NV_explicit_multisample,GL_NV_fence,GL_NV_fill_rectangle,GL_NV_float_buffer,GL_NV_fog_distance,GL_NV_fragment_coverage_to_color,GL_NV_fragment_program,GL_NV_fragment_program2,GL_NV_fragment_program4,GL_NV_fragment_program_option,GL_NV_fragment_shader_barycentric,GL_NV_fragment_shader_interlock,GL_NV_framebuffer_mixed_samples,GL_NV_framebuffer_multisample_coverage,GL_NV_geometry_program4,GL_NV_geometry_shader4,GL_NV_geometry_shader_passthrough,GL_NV_gpu_multicast,GL_NV_gpu_program4,GL_NV_gpu_program5,GL_NV_gpu_program5_mem_extended,GL_NV_gpu_shader5,GL_NV_half_float,GL_NV_internalformat_sample_query,GL_NV_light_max_exponent,GL_NV_memory_attachment,GL_NV_memory_object_sparse,GL_NV_mesh_shader,GL_NV_multisample_coverage,GL_NV_multisample_filter_hint,GL_NV_occlusion_query,GL_NV_packed_depth_stencil,GL_NV_parameter_buffer_object,GL_NV_parameter_buffer_object2,GL_NV_path_rendering,GL_NV_path_rendering_shared_edge,GL_NV_pixel_data_range,GL_NV_point_sprite,GL_NV_present_video,GL_NV_primitive_restart,GL_NV_primitive_shading_rate,GL_NV_query_resource,GL_NV_query_resource_tag,GL_NV_register_combiners,GL_NV_register_combiners2,GL_NV_representative_fragment_test,GL_NV_robustness_video_memory_purge,GL_NV_sample_locations,GL_NV_sample_mask_override_coverage,GL_NV_scissor_exclusive,GL_NV_shader_atomic_counters,GL_NV_shader_atomic_float,GL_NV_shader_atomic_float64,GL_NV_shader_atomic_fp16_vector,GL_NV_shader_atomic_int64,GL_NV_shader_buffer_load,GL_NV_shader_buffer_store,GL_NV_shader_storage_buffer_object,GL_NV_shader_subgroup_partitioned,GL_NV_shader_texture_footprint,GL_NV_shader_thread_group,GL_NV_shader_thread_shuffle,GL_NV_shading_rate_image,GL_NV_stereo_view_rendering,GL_NV_tessellation_program5,GL_NV_texgen_emboss,GL_NV_texgen_reflection,GL_NV_texture_barrier,GL_NV_texture_compression_vtc,GL_NV_texture_env_combine4,GL_NV_texture_expand_normal,GL_NV_texture_multisample,GL_NV_texture_rectangle,GL_NV_texture_rectangle_compressed,GL_NV_texture_shader,GL_NV_texture_shader2,GL_NV_texture_shader3,GL_NV_timeline_semaphore,GL_NV_transform_feedback,GL_NV_transform_feedback2,GL_NV_uniform_buffer_std430_layout,GL_NV_uniform_buffer_unified_memory,GL_NV_vdpau_interop,GL_NV_vdpau_interop2,GL_NV_vertex_array_range,GL_NV_vertex_array_range2,GL_NV_vertex_attrib_integer_64bit,GL_NV_vertex_buffer_unified_memory,GL_NV_vertex_program,GL_NV_vertex_program1_1,GL_NV_vertex_program2,GL_NV_vertex_program2_option,GL_NV_vertex_program3,GL_NV_vertex_program4,GL_NV_video_capture,GL_NV_viewport_array2,GL_NV_viewport_swizzle,GL_OES_byte_coordinates,GL_OES_compressed_paletted_texture,GL_OES_fixed_point,GL_OES_query_matrix,GL_OES_read_format,GL_OES_single_precision,GL_OML_interlace,GL_OML_resample,GL_OML_subsample,GL_OVR_multiview,GL_OVR_multiview2,GL_PGI_misc_hints,GL_PGI_vertex_hints,GL_REND_screen_coordinates,GL_S3_s3tc,GL_SGIS_detail_texture,GL_SGIS_fog_function,GL_SGIS_generate_mipmap,GL_SGIS_multisample,GL_SGIS_pixel_texture,GL_SGIS_point_line_texgen,GL_SGIS_point_parameters,GL_SGIS_sharpen_texture,GL_SGIS_texture4D,GL_SGIS_texture_border_clamp,GL_SGIS_texture_color_mask,GL_SGIS_texture_edge_clamp,GL_SGIS_texture_filter4,GL_SGIS_texture_lod,GL_SGIS_texture_select,GL_SGIX_async,GL_SGIX_async_histogram,GL_SGIX_async_pixel,GL_SGIX_blend_alpha_minmax,GL_SGIX_calligraphic_fragment,GL_SGIX_clipmap,GL_SGIX_convolution_accuracy,GL_SGIX_depth_pass_instrument,GL_SGIX_depth_texture,GL_SGIX_flush_raster,GL_SGIX_fog_offset,GL_SGIX_fragment_lighting,GL_SGIX_framezoom,GL_SGIX_igloo_interface,GL_SGIX_instruments,GL_SGIX_interlace,GL_SGIX_ir_instrument1,GL_SGIX_list_priority,GL_SGIX_pixel_texture,GL_SGIX_pixel_tiles,GL_SGIX_polynomial_ffd,GL_SGIX_reference_plane,GL_SGIX_resample,GL_SGIX_scalebias_hint,GL_SGIX_shadow,GL_SGIX_shadow_ambient,GL_SGIX_sprite,GL_SGIX_subsample,GL_SGIX_tag_sample_buffer,GL_SGIX_texture_add_env,GL_SGIX_texture_coordinate_clamp,GL_SGIX_texture_lod_bias,GL_SGIX_texture_multi_buffer,GL_SGIX_texture_scale_bias,GL_SGIX_vertex_preclip,GL_SGIX_ycrcb,GL_SGIX_ycrcb_subsample,GL_SGIX_ycrcba,GL_SGI_color_matrix,GL_SGI_color_table,GL_SGI_texture_color_table,GL_SUNX_constant_data,GL_SUN_convolution_border_modes,GL_SUN_global_alpha,GL_SUN_mesh_array,GL_SUN_slice_accum,GL_SUN_triangle_list,GL_SUN_vertex,GL_WIN_phong_shading,GL_WIN_specular_fog' c --mx + * + * Online: + * http://glad.sh/#api=gl%3Acore%3D4.6&generator=c&options=MX + * + */ + +#ifndef GLAD_GL_H_ +#define GLAD_GL_H_ + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-id-macro" +#endif +#ifdef __gl_h_ +#error OpenGL (gl.h) header already included (API: gl), remove previous include! +#endif +#define __gl_h_ 1 +#ifdef __gl3_h_ +#error OpenGL (gl3.h) header already included (API: gl), remove previous include! +#endif +#define __gl3_h_ 1 +#ifdef __glext_h_ +#error OpenGL (glext.h) header already included (API: gl), remove previous include! +#endif +#define __glext_h_ 1 +#ifdef __gl3ext_h_ +#error OpenGL (gl3ext.h) header already included (API: gl), remove previous include! +#endif +#define __gl3ext_h_ 1 +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#define GLAD_GL +#define GLAD_OPTION_GL_MX + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GLAD_PLATFORM_H_ +#define GLAD_PLATFORM_H_ + +#ifndef GLAD_PLATFORM_WIN32 +#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) +#define GLAD_PLATFORM_WIN32 1 +#else +#define GLAD_PLATFORM_WIN32 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_APPLE +#ifdef __APPLE__ +#define GLAD_PLATFORM_APPLE 1 +#else +#define GLAD_PLATFORM_APPLE 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_EMSCRIPTEN +#ifdef __EMSCRIPTEN__ +#define GLAD_PLATFORM_EMSCRIPTEN 1 +#else +#define GLAD_PLATFORM_EMSCRIPTEN 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) +#ifdef __has_include +#if __has_include() +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY +#include +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ + WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#define GLAD_PLATFORM_UWP 1 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#define GLAD_PLATFORM_UWP 0 +#endif +#endif + +#ifdef __GNUC__ +#define GLAD_GNUC_EXTENSION __extension__ +#else +#define GLAD_GNUC_EXTENSION +#endif + +#define GLAD_UNUSED(x) (void)(x) + +#ifndef GLAD_API_CALL +#if defined(GLAD_API_CALL_EXPORT) +#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) +#if defined(GLAD_API_CALL_EXPORT_BUILD) +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllexport)) extern +#else +#define GLAD_API_CALL __declspec(dllexport) extern +#endif +#else +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllimport)) extern +#else +#define GLAD_API_CALL __declspec(dllimport) extern +#endif +#endif +#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) +#define GLAD_API_CALL __attribute__((visibility("default"))) extern +#else +#define GLAD_API_CALL extern +#endif +#else +#define GLAD_API_CALL extern +#endif +#endif + +#ifdef APIENTRY +#define GLAD_API_PTR APIENTRY +#elif GLAD_PLATFORM_WIN32 +#define GLAD_API_PTR __stdcall +#else +#define GLAD_API_PTR +#endif + +#ifndef GLAPI +#define GLAPI GLAD_API_CALL +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY GLAD_API_PTR +#endif + +#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) +#define GLAD_VERSION_MAJOR(version) (version / 10000) +#define GLAD_VERSION_MINOR(version) (version % 10000) + +#define GLAD_GENERATOR_VERSION "2.0.5" + +typedef void (*GLADapiproc)(void); + +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); + +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, + ...); + +#endif /* GLAD_PLATFORM_H_ */ + +#define GL_1PASS_EXT 0x80A1 +#define GL_1PASS_SGIS 0x80A1 +#define GL_2PASS_0_EXT 0x80A2 +#define GL_2PASS_0_SGIS 0x80A2 +#define GL_2PASS_1_EXT 0x80A3 +#define GL_2PASS_1_SGIS 0x80A3 +#define GL_2X_BIT_ATI 0x00000001 +#define GL_422_AVERAGE_EXT 0x80CE +#define GL_422_EXT 0x80CC +#define GL_422_REV_AVERAGE_EXT 0x80CF +#define GL_422_REV_EXT 0x80CD +#define GL_4PASS_0_EXT 0x80A4 +#define GL_4PASS_0_SGIS 0x80A4 +#define GL_4PASS_1_EXT 0x80A5 +#define GL_4PASS_1_SGIS 0x80A5 +#define GL_4PASS_2_EXT 0x80A6 +#define GL_4PASS_2_SGIS 0x80A6 +#define GL_4PASS_3_EXT 0x80A7 +#define GL_4PASS_3_SGIS 0x80A7 +#define GL_4X_BIT_ATI 0x00000002 +#define GL_8X_BIT_ATI 0x00000004 +#define GL_ABGR_EXT 0x8000 +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_ACTIVE_PROGRAM_EXT 0x8B8D +#define GL_ACTIVE_RESOURCES 0x92F5 +#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_ACTIVE_TEXTURE_ARB 0x84E0 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_VARIABLES 0x9305 +#define GL_ACTIVE_VARYINGS_NV 0x8C81 +#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 +#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 +#define GL_ADD_ATI 0x8963 +#define GL_ADD_SIGNED_ARB 0x8574 +#define GL_ADD_SIGNED_EXT 0x8574 +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 +#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 +#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E +#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F +#define GL_ALL_BARRIER_BITS 0xFFFFFFFF +#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_ALL_PIXELS_AMD 0xFFFFFFFF +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_ALL_STATIC_DATA_IBM 103060 +#define GL_ALPHA 0x1906 +#define GL_ALPHA12_EXT 0x803D +#define GL_ALPHA16F_ARB 0x881C +#define GL_ALPHA16F_EXT 0x881C +#define GL_ALPHA16I_EXT 0x8D8A +#define GL_ALPHA16UI_EXT 0x8D78 +#define GL_ALPHA16_EXT 0x803E +#define GL_ALPHA16_SNORM 0x9018 +#define GL_ALPHA32F_ARB 0x8816 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_ALPHA32I_EXT 0x8D84 +#define GL_ALPHA32UI_EXT 0x8D72 +#define GL_ALPHA4_EXT 0x803B +#define GL_ALPHA8I_EXT 0x8D90 +#define GL_ALPHA8UI_EXT 0x8D7E +#define GL_ALPHA8_EXT 0x803C +#define GL_ALPHA8_SNORM 0x9014 +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_ALPHA_INTEGER_EXT 0x8D97 +#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 +#define GL_ALPHA_MAX_SGIX 0x8321 +#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 +#define GL_ALPHA_MIN_SGIX 0x8320 +#define GL_ALPHA_REF_COMMAND_NV 0x000F +#define GL_ALPHA_SNORM 0x9010 +#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D +#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F +#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E +#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF +#define GL_ALREADY_SIGNALED 0x911A +#define GL_ALWAYS 0x0207 +#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C +#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D +#define GL_AND 0x1501 +#define GL_AND_INVERTED 0x1504 +#define GL_AND_REVERSE 0x1502 +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A +#define GL_ARC_TO_NV 0xFE +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ARRAY_BUFFER_ARB 0x8892 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 +#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 +#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 +#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 +#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 +#define GL_ARRAY_SIZE 0x92FB +#define GL_ARRAY_STRIDE 0x92FE +#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D +#define GL_ASYNC_HISTOGRAM_SGIX 0x832C +#define GL_ASYNC_MARKER_SGIX 0x8329 +#define GL_ASYNC_READ_PIXELS_SGIX 0x835E +#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C +#define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 +#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 +#define GL_ATOMIC_COUNTER_BUFFER 0x92C0 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 +#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 +#define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 +#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 +#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 +#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 +#define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 +#define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 +#define GL_ATTACHED_MEMORY_OBJECT_NV 0x95A4 +#define GL_ATTACHED_MEMORY_OFFSET_NV 0x95A5 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ATTENUATION_EXT 0x834D +#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV 0x0009 +#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 +#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 +#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 +#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 +#define GL_AUTO_GENERATE_MIPMAP 0x8295 +#define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 +#define GL_AVERAGE_EXT 0x8335 +#define GL_AVERAGE_HP 0x8160 +#define GL_BACK 0x0405 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_NORMALS_HINT_PGI 0x1A223 +#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 +#define GL_BACK_RIGHT 0x0403 +#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 +#define GL_BEVEL_NV 0x90A6 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA_INTEGER 0x8D9B +#define GL_BGRA_INTEGER_EXT 0x8D9B +#define GL_BGR_EXT 0x80E0 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGR_INTEGER_EXT 0x8D9A +#define GL_BIAS_BIT_ATI 0x00000008 +#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 +#define GL_BINORMAL_ARRAY_EXT 0x843A +#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 +#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 +#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 +#define GL_BLACKHOLE_RENDER_INTEL 0x83FC +#define GL_BLEND 0x0BE2 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_COLOR_COMMAND_NV 0x000B +#define GL_BLEND_COLOR_EXT 0x8005 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_DST_ALPHA_EXT 0x80CA +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_DST_RGB_EXT 0x80C8 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D +#define GL_BLEND_EQUATION_EXT 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_RGB_EXT 0x8009 +#define GL_BLEND_OVERLAP_NV 0x9281 +#define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_SRC_ALPHA_EXT 0x80CB +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_SRC_RGB_EXT 0x80C9 +#define GL_BLOCK_INDEX 0x92FD +#define GL_BLUE 0x1905 +#define GL_BLUE_BIT_ATI 0x00000004 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_BLUE_INTEGER_EXT 0x8D96 +#define GL_BLUE_MAX_CLAMP_INGR 0x8566 +#define GL_BLUE_MIN_CLAMP_INGR 0x8562 +#define GL_BLUE_NV 0x1905 +#define GL_BOLD_BIT_NV 0x01 +#define GL_BOOL 0x8B56 +#define GL_BOOL_ARB 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC2_ARB 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC3_ARB 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_BOOL_VEC4_ARB 0x8B59 +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_BUFFER 0x82E0 +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_ACCESS_ARB 0x88BB +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_BINDING 0x9302 +#define GL_BUFFER_DATA_SIZE 0x9303 +#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 +#define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAPPED_ARB 0x88BC +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_BUFFER_MAP_POINTER_ARB 0x88BD +#define GL_BUFFER_OBJECT_APPLE 0x85B3 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_SIZE_ARB 0x8764 +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 +#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 +#define GL_BUFFER_USAGE 0x8765 +#define GL_BUFFER_USAGE_ARB 0x8765 +#define GL_BUFFER_VARIABLE 0x92E5 +#define GL_BUMP_ENVMAP_ATI 0x877B +#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 +#define GL_BUMP_ROT_MATRIX_ATI 0x8775 +#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 +#define GL_BUMP_TARGET_ATI 0x877C +#define GL_BUMP_TEX_UNITS_ATI 0x8778 +#define GL_BYTE 0x1400 +#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 +#define GL_CAVEAT_SUPPORT 0x82B8 +#define GL_CCW 0x0901 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_CLAMP_READ_COLOR_ARB 0x891C +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLAMP_TO_BORDER_ARB 0x812D +#define GL_CLAMP_TO_BORDER_SGIS 0x812D +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_CLAMP_TO_EDGE_SGIS 0x812F +#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A +#define GL_CLEAR 0x1500 +#define GL_CLEAR_BUFFER 0x82B4 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIPPING_INPUT_PRIMITIVES 0x82F6 +#define GL_CLIPPING_INPUT_PRIMITIVES_ARB 0x82F6 +#define GL_CLIPPING_OUTPUT_PRIMITIVES 0x82F7 +#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7 +#define GL_CLIP_DEPTH_MODE 0x935D +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_CLIP_DISTANCE_NV 0x8C7A +#define GL_CLIP_FAR_HINT_PGI 0x1A221 +#define GL_CLIP_NEAR_HINT_PGI 0x1A220 +#define GL_CLIP_ORIGIN 0x935C +#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_CMYKA_EXT 0x800D +#define GL_CMYK_EXT 0x800C +#define GL_CND0_ATI 0x896B +#define GL_CND_ATI 0x896A +#define GL_COLOR 0x1800 +#define GL_COLOR3_BIT_PGI 0x00010000 +#define GL_COLOR4_BIT_PGI 0x00020000 +#define GL_COLORBURN_KHR 0x929A +#define GL_COLORBURN_NV 0x929A +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORDODGE_NV 0x9299 +#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 +#define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 +#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 +#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 +#define GL_COLOR_ARRAY_EXT 0x8076 +#define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D +#define GL_COLOR_ARRAY_LIST_IBM 103072 +#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 +#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 +#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 +#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 +#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 +#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT13_EXT 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_COMPONENTS 0x8283 +#define GL_COLOR_ENCODING 0x8296 +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#define GL_COLOR_INDEX12_EXT 0x80E6 +#define GL_COLOR_INDEX16_EXT 0x80E7 +#define GL_COLOR_INDEX1_EXT 0x80E2 +#define GL_COLOR_INDEX2_EXT 0x80E3 +#define GL_COLOR_INDEX4_EXT 0x80E4 +#define GL_COLOR_INDEX8_EXT 0x80E5 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_COLOR_MATRIX_SGI 0x80B1 +#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 +#define GL_COLOR_RENDERABLE 0x8286 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_COLOR_SUM_ARB 0x8458 +#define GL_COLOR_SUM_CLAMP_NV 0x854F +#define GL_COLOR_SUM_EXT 0x8458 +#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD +#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 +#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC +#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 +#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB +#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF +#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE +#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA +#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 +#define GL_COLOR_TABLE_SGI 0x80D0 +#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_COMBINE4_NV 0x8503 +#define GL_COMBINER0_NV 0x8550 +#define GL_COMBINER1_NV 0x8551 +#define GL_COMBINER2_NV 0x8552 +#define GL_COMBINER3_NV 0x8553 +#define GL_COMBINER4_NV 0x8554 +#define GL_COMBINER5_NV 0x8555 +#define GL_COMBINER6_NV 0x8556 +#define GL_COMBINER7_NV 0x8557 +#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 +#define GL_COMBINER_AB_OUTPUT_NV 0x854A +#define GL_COMBINER_BIAS_NV 0x8549 +#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 +#define GL_COMBINER_CD_OUTPUT_NV 0x854B +#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 +#define GL_COMBINER_INPUT_NV 0x8542 +#define GL_COMBINER_MAPPING_NV 0x8543 +#define GL_COMBINER_MUX_SUM_NV 0x8547 +#define GL_COMBINER_SCALE_NV 0x8548 +#define GL_COMBINER_SUM_OUTPUT_NV 0x854C +#define GL_COMBINE_ALPHA_ARB 0x8572 +#define GL_COMBINE_ALPHA_EXT 0x8572 +#define GL_COMBINE_ARB 0x8570 +#define GL_COMBINE_EXT 0x8570 +#define GL_COMBINE_RGB_ARB 0x8571 +#define GL_COMBINE_RGB_EXT 0x8571 +#define GL_COMMAND_BARRIER_BIT 0x00000040 +#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 +#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_COMPLETION_STATUS_ARB 0x91B1 +#define GL_COMPLETION_STATUS_KHR 0x91B1 +#define GL_COMPRESSED_ALPHA_ARB 0x84E9 +#define GL_COMPRESSED_INTENSITY_ARB 0x84EC +#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB +#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 +#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA +#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 +#define GL_COMPRESSED_R11_EAC 0x9270 +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_RG 0x8226 +#define GL_COMPRESSED_RG11_EAC 0x9272 +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGB8_ETC2 0x9274 +#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 +#define GL_COMPRESSED_RGBA_ARB 0x84EE +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C +#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#define GL_COMPRESSED_RGB_ARB 0x84ED +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F +#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 +#define GL_COMPRESSED_SRGB8_ETC2 0x9275 +#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 +#define GL_COMPUTE_PROGRAM_NV 0x90FB +#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC +#define GL_COMPUTE_SHADER 0x91B9 +#define GL_COMPUTE_SHADER_BIT 0x00000020 +#define GL_COMPUTE_SHADER_INVOCATIONS 0x82F5 +#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5 +#define GL_COMPUTE_SUBROUTINE 0x92ED +#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 +#define GL_COMPUTE_TEXTURE 0x82A0 +#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267 +#define GL_COMP_BIT_ATI 0x00000002 +#define GL_CONDITION_SATISFIED 0x911C +#define GL_CONFORMANT_NV 0x9374 +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_CONJOINT_NV 0x9284 +#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B +#define GL_CONSERVATIVE_RASTER_DILATE_NV 0x9379 +#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A +#define GL_CONSERVATIVE_RASTER_MODE_NV 0x954D +#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550 +#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F +#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_CONSTANT_ALPHA_EXT 0x8003 +#define GL_CONSTANT_ARB 0x8576 +#define GL_CONSTANT_BORDER_HP 0x8151 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_CONSTANT_COLOR0_NV 0x852A +#define GL_CONSTANT_COLOR1_NV 0x852B +#define GL_CONSTANT_COLOR_EXT 0x8001 +#define GL_CONSTANT_EXT 0x8576 +#define GL_CONST_EYE_NV 0x86E5 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_FLAGS 0x821E +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT 0x00000008 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004 +#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define GL_CONTEXT_LOST 0x0507 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC +#define GL_CONTEXT_ROBUST_ACCESS 0x90F3 +#define GL_CONTINUOUS_AMD 0x9007 +#define GL_CONTRAST_NV 0x92A1 +#define GL_CONVEX_HULL_NV 0x908B +#define GL_CONVOLUTION_1D_EXT 0x8010 +#define GL_CONVOLUTION_2D_EXT 0x8011 +#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 +#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 +#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 +#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 +#define GL_CONVOLUTION_FORMAT_EXT 0x8017 +#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 +#define GL_CONVOLUTION_HINT_SGIX 0x8316 +#define GL_CONVOLUTION_WIDTH_EXT 0x8018 +#define GL_CON_0_ATI 0x8941 +#define GL_CON_10_ATI 0x894B +#define GL_CON_11_ATI 0x894C +#define GL_CON_12_ATI 0x894D +#define GL_CON_13_ATI 0x894E +#define GL_CON_14_ATI 0x894F +#define GL_CON_15_ATI 0x8950 +#define GL_CON_16_ATI 0x8951 +#define GL_CON_17_ATI 0x8952 +#define GL_CON_18_ATI 0x8953 +#define GL_CON_19_ATI 0x8954 +#define GL_CON_1_ATI 0x8942 +#define GL_CON_20_ATI 0x8955 +#define GL_CON_21_ATI 0x8956 +#define GL_CON_22_ATI 0x8957 +#define GL_CON_23_ATI 0x8958 +#define GL_CON_24_ATI 0x8959 +#define GL_CON_25_ATI 0x895A +#define GL_CON_26_ATI 0x895B +#define GL_CON_27_ATI 0x895C +#define GL_CON_28_ATI 0x895D +#define GL_CON_29_ATI 0x895E +#define GL_CON_2_ATI 0x8943 +#define GL_CON_30_ATI 0x895F +#define GL_CON_31_ATI 0x8960 +#define GL_CON_3_ATI 0x8944 +#define GL_CON_4_ATI 0x8945 +#define GL_CON_5_ATI 0x8946 +#define GL_CON_6_ATI 0x8947 +#define GL_CON_7_ATI 0x8948 +#define GL_CON_8_ATI 0x8949 +#define GL_CON_9_ATI 0x894A +#define GL_COORD_REPLACE_ARB 0x8862 +#define GL_COORD_REPLACE_NV 0x8862 +#define GL_COPY 0x1503 +#define GL_COPY_INVERTED 0x150C +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_READ_BUFFER_BINDING 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_CUBIC_EXT 0x8334 +#define GL_CUBIC_HP 0x815F +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_CULL_FRAGMENT_NV 0x86E7 +#define GL_CULL_MODES_NV 0x86E0 +#define GL_CULL_VERTEX_EXT 0x81AA +#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB +#define GL_CULL_VERTEX_IBM 103050 +#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC +#define GL_CURRENT_ATTRIB_NV 0x8626 +#define GL_CURRENT_BINORMAL_EXT 0x843C +#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 +#define GL_CURRENT_MATRIX_ARB 0x8641 +#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 +#define GL_CURRENT_MATRIX_NV 0x8641 +#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 +#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 +#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 +#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_CURRENT_QUERY 0x8865 +#define GL_CURRENT_QUERY_ARB 0x8865 +#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 +#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 +#define GL_CURRENT_TANGENT_EXT 0x843B +#define GL_CURRENT_TIME_NV 0x8E28 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 +#define GL_CURRENT_VERTEX_EXT 0x87E2 +#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B +#define GL_CURRENT_WEIGHT_ARB 0x86A8 +#define GL_CW 0x0900 +#define GL_D3D12_FENCE_VALUE_EXT 0x9595 +#define GL_DARKEN_KHR 0x9297 +#define GL_DARKEN_NV 0x9297 +#define GL_DATA_BUFFER_AMD 0x9151 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 +#define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 +#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F +#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B +#define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 +#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D +#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E +#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C +#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 +#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 +#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 +#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 +#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_API_ARB 0x8246 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_ERROR_ARB 0x824C +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_OTHER_ARB 0x8251 +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E +#define GL_DECODE_EXT 0x8A49 +#define GL_DECR 0x1E03 +#define GL_DECR_WRAP 0x8508 +#define GL_DECR_WRAP_EXT 0x8508 +#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 +#define GL_DEFORMATIONS_MASK_SGIX 0x8196 +#define GL_DELETE_STATUS 0x8B80 +#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 +#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA +#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 +#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 +#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A +#define GL_DEPTH 0x1801 +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_DEPTH24_STENCIL8_EXT 0x88F0 +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_DEPTH32F_STENCIL8_NV 0x8DAC +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_DEPTH_BOUNDS_EXT 0x8891 +#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF +#define GL_DEPTH_CLAMP 0x864F +#define GL_DEPTH_CLAMP_FAR_AMD 0x901F +#define GL_DEPTH_CLAMP_NEAR_AMD 0x901E +#define GL_DEPTH_CLAMP_NV 0x864F +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT16_ARB 0x81A5 +#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT24_ARB 0x81A6 +#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH_COMPONENT32F_NV 0x8DAB +#define GL_DEPTH_COMPONENT32_ARB 0x81A7 +#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 +#define GL_DEPTH_COMPONENTS 0x8284 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_RENDERABLE 0x8287 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_DEPTH_STENCIL_EXT 0x84F9 +#define GL_DEPTH_STENCIL_NV 0x84F9 +#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA +#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F +#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DETACHED_BUFFERS_NV 0x95AB +#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9 +#define GL_DETACHED_TEXTURES_NV 0x95AA +#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 +#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 +#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C +#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A +#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B +#define GL_DEVICE_LUID_EXT 0x9599 +#define GL_DEVICE_NODE_MASK_EXT 0x959A +#define GL_DEVICE_UUID_EXT 0x9597 +#define GL_DIFFERENCE_KHR 0x929E +#define GL_DIFFERENCE_NV 0x929E +#define GL_DISCARD_ATI 0x8763 +#define GL_DISCARD_NV 0x8530 +#define GL_DISCRETE_AMD 0x9006 +#define GL_DISJOINT_NV 0x9283 +#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE +#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF +#define GL_DISTANCE_ATTENUATION_EXT 0x8129 +#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 +#define GL_DITHER 0x0BD0 +#define GL_DONT_CARE 0x1100 +#define GL_DOT2_ADD_ATI 0x896C +#define GL_DOT3_ATI 0x8966 +#define GL_DOT3_RGBA_ARB 0x86AF +#define GL_DOT3_RGBA_EXT 0x8741 +#define GL_DOT3_RGB_ARB 0x86AE +#define GL_DOT3_RGB_EXT 0x8740 +#define GL_DOT4_ATI 0x8967 +#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D +#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 +#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED +#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 +#define GL_DOT_PRODUCT_NV 0x86EC +#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B +#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 +#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C +#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE +#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF +#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 +#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E +#define GL_DOUBLE 0x140A +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT2_EXT 0x8F46 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x3_EXT 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT2x4_EXT 0x8F4A +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT3_EXT 0x8F47 +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x2_EXT 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT3x4_EXT 0x8F4C +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT4_EXT 0x8F48 +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x2_EXT 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_DOUBLE_MAT4x3_EXT 0x8F4E +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC2_EXT 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC3_EXT 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_VEC4_EXT 0x8FFE +#define GL_DRAW_ARRAYS_COMMAND_NV 0x0003 +#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007 +#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV 0x0005 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER0_ARB 0x8825 +#define GL_DRAW_BUFFER0_ATI 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER10_ARB 0x882F +#define GL_DRAW_BUFFER10_ATI 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER11_ARB 0x8830 +#define GL_DRAW_BUFFER11_ATI 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER12_ARB 0x8831 +#define GL_DRAW_BUFFER12_ATI 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER13_ARB 0x8832 +#define GL_DRAW_BUFFER13_ATI 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER14_ARB 0x8833 +#define GL_DRAW_BUFFER14_ATI 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_DRAW_BUFFER15_ARB 0x8834 +#define GL_DRAW_BUFFER15_ATI 0x8834 +#define GL_DRAW_BUFFER1_ARB 0x8826 +#define GL_DRAW_BUFFER1_ATI 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER2_ARB 0x8827 +#define GL_DRAW_BUFFER2_ATI 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER3_ARB 0x8828 +#define GL_DRAW_BUFFER3_ATI 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER4_ARB 0x8829 +#define GL_DRAW_BUFFER4_ATI 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER5_ARB 0x882A +#define GL_DRAW_BUFFER5_ATI 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER6_ARB 0x882B +#define GL_DRAW_BUFFER6_ATI 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER7_ARB 0x882C +#define GL_DRAW_BUFFER7_ATI 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER8_ARB 0x882D +#define GL_DRAW_BUFFER8_ATI 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER9_ARB 0x882E +#define GL_DRAW_BUFFER9_ATI 0x882E +#define GL_DRAW_ELEMENTS_COMMAND_NV 0x0002 +#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006 +#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 +#define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 +#define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 +#define GL_DRAW_PIXELS_APPLE 0x8A0A +#define GL_DRIVER_UUID_EXT 0x9598 +#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B +#define GL_DSDT8_MAG8_NV 0x870A +#define GL_DSDT8_NV 0x8709 +#define GL_DSDT_MAG_INTENSITY_NV 0x86DC +#define GL_DSDT_MAG_NV 0x86F6 +#define GL_DSDT_MAG_VIB_NV 0x86F7 +#define GL_DSDT_NV 0x86F5 +#define GL_DST_ALPHA 0x0304 +#define GL_DST_ATOP_NV 0x928F +#define GL_DST_COLOR 0x0306 +#define GL_DST_IN_NV 0x928B +#define GL_DST_NV 0x9287 +#define GL_DST_OUT_NV 0x928D +#define GL_DST_OVER_NV 0x9289 +#define GL_DS_BIAS_NV 0x8716 +#define GL_DS_SCALE_NV 0x8710 +#define GL_DT_BIAS_NV 0x8717 +#define GL_DT_SCALE_NV 0x8711 +#define GL_DU8DV8_ATI 0x877A +#define GL_DUAL_ALPHA12_SGIS 0x8112 +#define GL_DUAL_ALPHA16_SGIS 0x8113 +#define GL_DUAL_ALPHA4_SGIS 0x8110 +#define GL_DUAL_ALPHA8_SGIS 0x8111 +#define GL_DUAL_INTENSITY12_SGIS 0x811A +#define GL_DUAL_INTENSITY16_SGIS 0x811B +#define GL_DUAL_INTENSITY4_SGIS 0x8118 +#define GL_DUAL_INTENSITY8_SGIS 0x8119 +#define GL_DUAL_LUMINANCE12_SGIS 0x8116 +#define GL_DUAL_LUMINANCE16_SGIS 0x8117 +#define GL_DUAL_LUMINANCE4_SGIS 0x8114 +#define GL_DUAL_LUMINANCE8_SGIS 0x8115 +#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C +#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D +#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 +#define GL_DUDV_ATI 0x8779 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_DYNAMIC_ATI 0x8761 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_DYNAMIC_COPY_ARB 0x88EA +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_DRAW_ARB 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_READ_ARB 0x88E9 +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_EDGEFLAG_BIT_PGI 0x00040000 +#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B +#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D +#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 +#define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 +#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 +#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 +#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 +#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +#define GL_EIGHTH_BIT_ATI 0x00000020 +#define GL_ELEMENT_ADDRESS_COMMAND_NV 0x0008 +#define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 +#define GL_ELEMENT_ARRAY_APPLE 0x8A0C +#define GL_ELEMENT_ARRAY_ATI 0x8768 +#define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 +#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 +#define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 +#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E +#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A +#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D +#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 +#define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F +#define GL_EMBOSS_CONSTANT_NV 0x855E +#define GL_EMBOSS_LIGHT_NV 0x855D +#define GL_EMBOSS_MAP_NV 0x855F +#define GL_EQUAL 0x0202 +#define GL_EQUIV 0x1509 +#define GL_EVAL_2D_NV 0x86C0 +#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 +#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 +#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 +#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 +#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 +#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 +#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 +#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 +#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 +#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 +#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 +#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 +#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA +#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB +#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC +#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD +#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE +#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_EXCLUSION_NV 0x92A0 +#define GL_EXCLUSIVE_EXT 0x8F11 +#define GL_EXPAND_NEGATE_NV 0x8539 +#define GL_EXPAND_NORMAL_NV 0x8538 +#define GL_EXTENSIONS 0x1F03 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 +#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 +#define GL_EYE_LINE_SGIS 0x81F6 +#define GL_EYE_PLANE 0x2502 +#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C +#define GL_EYE_POINT_SGIS 0x81F4 +#define GL_EYE_RADIAL_NV 0x855B +#define GL_E_TIMES_F_NV 0x8531 +#define GL_FACTOR_MAX_AMD 0x901D +#define GL_FACTOR_MIN_AMD 0x901C +#define GL_FAILURE_NV 0x9030 +#define GL_FALSE 0 +#define GL_FASTEST 0x1101 +#define GL_FENCE_APPLE 0x8A0B +#define GL_FENCE_CONDITION_NV 0x84F4 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FIELDS_NV 0x8E27 +#define GL_FIELD_LOWER_NV 0x9023 +#define GL_FIELD_UPPER_NV 0x9022 +#define GL_FILE_NAME_NV 0x9074 +#define GL_FILL 0x1B02 +#define GL_FILL_RECTANGLE_NV 0x933C +#define GL_FILTER 0x829A +#define GL_FILTER4_SGIS 0x8146 +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_FIXED 0x140C +#define GL_FIXED_OES 0x140C +#define GL_FIXED_ONLY 0x891D +#define GL_FIXED_ONLY_ARB 0x891D +#define GL_FLOAT 0x1406 +#define GL_FLOAT16_MAT2_AMD 0x91C5 +#define GL_FLOAT16_MAT2x3_AMD 0x91C8 +#define GL_FLOAT16_MAT2x4_AMD 0x91C9 +#define GL_FLOAT16_MAT3_AMD 0x91C6 +#define GL_FLOAT16_MAT3x2_AMD 0x91CA +#define GL_FLOAT16_MAT3x4_AMD 0x91CB +#define GL_FLOAT16_MAT4_AMD 0x91C7 +#define GL_FLOAT16_MAT4x2_AMD 0x91CC +#define GL_FLOAT16_MAT4x3_AMD 0x91CD +#define GL_FLOAT16_NV 0x8FF8 +#define GL_FLOAT16_VEC2_NV 0x8FF9 +#define GL_FLOAT16_VEC3_NV 0x8FFA +#define GL_FLOAT16_VEC4_NV 0x8FFB +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT2_ARB 0x8B5A +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT3_ARB 0x8B5B +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4 0x8B5C +#define GL_FLOAT_MAT4_ARB 0x8B5C +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC2_ARB 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC3_ARB 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_FLOAT_VEC4_ARB 0x8B52 +#define GL_FOG 0x0B60 +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D +#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 +#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 +#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 +#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 +#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 +#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 +#define GL_FOG_COORDINATE_EXT 0x8451 +#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 +#define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 +#define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 +#define GL_FOG_DISTANCE_MODE_NV 0x855A +#define GL_FOG_FUNC_POINTS_SGIS 0x812B +#define GL_FOG_FUNC_SGIS 0x812A +#define GL_FOG_OFFSET_SGIX 0x8198 +#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 +#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 +#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 +#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRAGMENT_COLOR_EXT 0x834C +#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 +#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 +#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_DEPTH_EXT 0x8452 +#define GL_FRAGMENT_INPUT_NV 0x936D +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_FRAGMENT_LIGHT0_SGIX 0x840C +#define GL_FRAGMENT_LIGHT1_SGIX 0x840D +#define GL_FRAGMENT_LIGHT2_SGIX 0x840E +#define GL_FRAGMENT_LIGHT3_SGIX 0x840F +#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 +#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 +#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 +#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 +#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 +#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A +#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 +#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B +#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 +#define GL_FRAGMENT_MATERIAL_EXT 0x8349 +#define GL_FRAGMENT_NORMAL_EXT 0x834A +#define GL_FRAGMENT_PROGRAM_ARB 0x8804 +#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 +#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D +#define GL_FRAGMENT_PROGRAM_NV 0x8870 +#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_FRAGMENT_SHADER_ARB 0x8B30 +#define GL_FRAGMENT_SHADER_ATI 0x8920 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#define GL_FRAGMENT_SHADER_INVOCATIONS 0x82F4 +#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4 +#define GL_FRAGMENT_SUBROUTINE 0x92EC +#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 +#define GL_FRAGMENT_TEXTURE 0x829F +#define GL_FRAMEBUFFER 0x8D40 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 +#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 +#define GL_FRAMEBUFFER_BLEND 0x828B +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 +#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 +#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 +#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_FRAMEBUFFER_FLIP_X_MESA 0x8BBC +#define GL_FRAMEBUFFER_FLIP_Y_MESA 0x8BBB +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC +#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_RENDERABLE 0x8289 +#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#define GL_FRAMEBUFFER_SWAP_XY_MESA 0x8BBD +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD +#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C +#define GL_FRAMEZOOM_SGIX 0x818B +#define GL_FRAME_NV 0x8E26 +#define GL_FRONT 0x0404 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_FRONT_FACE 0x0B46 +#define GL_FRONT_FACE_COMMAND_NV 0x0012 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_FULL_RANGE_EXT 0x87E1 +#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 +#define GL_FULL_SUPPORT 0x82B7 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_ADD_EXT 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_SUBTRACT_EXT 0x800A +#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 +#define GL_GENERATE_MIPMAP_SGIS 0x8191 +#define GL_GENERIC_ATTRIB_NV 0x8C7D +#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 +#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB +#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC +#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC +#define GL_GEOMETRY_PROGRAM_NV 0x8C26 +#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_SHADER_ARB 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3 +#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3 +#define GL_GEOMETRY_SUBROUTINE 0x92EB +#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 +#define GL_GEOMETRY_TEXTURE 0x829E +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA +#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA +#define GL_GEQUAL 0x0206 +#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 +#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 +#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA +#define GL_GLOBAL_ALPHA_SUN 0x81D9 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GPU_ADDRESS_NV 0x8F34 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GREATER 0x0204 +#define GL_GREEN 0x1904 +#define GL_GREEN_BIT_ATI 0x00000002 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_GREEN_INTEGER_EXT 0x8D95 +#define GL_GREEN_MAX_CLAMP_INGR 0x8565 +#define GL_GREEN_MIN_CLAMP_INGR 0x8561 +#define GL_GREEN_NV 0x1904 +#define GL_GUILTY_CONTEXT_RESET 0x8253 +#define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 +#define GL_HALF_APPLE 0x140B +#define GL_HALF_BIAS_NEGATE_NV 0x853B +#define GL_HALF_BIAS_NORMAL_NV 0x853A +#define GL_HALF_BIT_ATI 0x00000008 +#define GL_HALF_FLOAT 0x140B +#define GL_HALF_FLOAT_ARB 0x140B +#define GL_HALF_FLOAT_NV 0x140B +#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B +#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C +#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594 +#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A +#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588 +#define GL_HARDLIGHT_KHR 0x929B +#define GL_HARDLIGHT_NV 0x929B +#define GL_HARDMIX_NV 0x92A9 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_HIGH_INT 0x8DF5 +#define GL_HILO16_NV 0x86F8 +#define GL_HILO8_NV 0x885E +#define GL_HILO_NV 0x86F4 +#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B +#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A +#define GL_HISTOGRAM_EXT 0x8024 +#define GL_HISTOGRAM_FORMAT_EXT 0x8027 +#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 +#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C +#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 +#define GL_HISTOGRAM_SINK_EXT 0x802D +#define GL_HISTOGRAM_WIDTH_EXT 0x8026 +#define GL_HI_BIAS_NV 0x8714 +#define GL_HI_SCALE_NV 0x870E +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_COLOR_NV 0x92AF +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_HUE_NV 0x92AD +#define GL_HSL_LUMINOSITY_KHR 0x92B0 +#define GL_HSL_LUMINOSITY_NV 0x92B0 +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_SATURATION_NV 0x92AE +#define GL_IDENTITY_NV 0x862A +#define GL_IGNORE_BORDER_HP 0x8150 +#define GL_IMAGE_1D 0x904C +#define GL_IMAGE_1D_ARRAY 0x9052 +#define GL_IMAGE_1D_ARRAY_EXT 0x9052 +#define GL_IMAGE_1D_EXT 0x904C +#define GL_IMAGE_2D 0x904D +#define GL_IMAGE_2D_ARRAY 0x9053 +#define GL_IMAGE_2D_ARRAY_EXT 0x9053 +#define GL_IMAGE_2D_EXT 0x904D +#define GL_IMAGE_2D_MULTISAMPLE 0x9055 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 +#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 +#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 +#define GL_IMAGE_2D_RECT 0x904F +#define GL_IMAGE_2D_RECT_EXT 0x904F +#define GL_IMAGE_3D 0x904E +#define GL_IMAGE_3D_EXT 0x904E +#define GL_IMAGE_BINDING_ACCESS 0x8F3E +#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E +#define GL_IMAGE_BINDING_FORMAT 0x906E +#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E +#define GL_IMAGE_BINDING_LAYER 0x8F3D +#define GL_IMAGE_BINDING_LAYERED 0x8F3C +#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C +#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D +#define GL_IMAGE_BINDING_LEVEL 0x8F3B +#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B +#define GL_IMAGE_BINDING_NAME 0x8F3A +#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A +#define GL_IMAGE_BUFFER 0x9051 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_IMAGE_CLASS_10_10_10_2 0x82C3 +#define GL_IMAGE_CLASS_11_11_10 0x82C2 +#define GL_IMAGE_CLASS_1_X_16 0x82BE +#define GL_IMAGE_CLASS_1_X_32 0x82BB +#define GL_IMAGE_CLASS_1_X_8 0x82C1 +#define GL_IMAGE_CLASS_2_X_16 0x82BD +#define GL_IMAGE_CLASS_2_X_32 0x82BA +#define GL_IMAGE_CLASS_2_X_8 0x82C0 +#define GL_IMAGE_CLASS_4_X_16 0x82BC +#define GL_IMAGE_CLASS_4_X_32 0x82B9 +#define GL_IMAGE_CLASS_4_X_8 0x82BF +#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 +#define GL_IMAGE_CUBE 0x9050 +#define GL_IMAGE_CUBE_EXT 0x9050 +#define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 +#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 +#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 +#define GL_IMAGE_MAG_FILTER_HP 0x815C +#define GL_IMAGE_MIN_FILTER_HP 0x815D +#define GL_IMAGE_PIXEL_FORMAT 0x82A9 +#define GL_IMAGE_PIXEL_TYPE 0x82AA +#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 +#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A +#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B +#define GL_IMAGE_SCALE_X_HP 0x8155 +#define GL_IMAGE_SCALE_Y_HP 0x8156 +#define GL_IMAGE_TEXEL_SIZE 0x82A7 +#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 +#define GL_IMAGE_TRANSLATE_X_HP 0x8157 +#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_INCLUSIVE_EXT 0x8F10 +#define GL_INCR 0x1E02 +#define GL_INCR_WRAP 0x8507 +#define GL_INCR_WRAP_EXT 0x8507 +#define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 +#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 +#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 +#define GL_INDEX_ARRAY_EXT 0x8077 +#define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E +#define GL_INDEX_ARRAY_LIST_IBM 103073 +#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 +#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 +#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 +#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 +#define GL_INDEX_BIT_PGI 0x00080000 +#define GL_INDEX_MATERIAL_EXT 0x81B8 +#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA +#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 +#define GL_INDEX_TEST_EXT 0x81B5 +#define GL_INDEX_TEST_FUNC_EXT 0x81B6 +#define GL_INDEX_TEST_REF_EXT 0x81B7 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_INNOCENT_CONTEXT_RESET 0x8254 +#define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 +#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 +#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 +#define GL_INT 0x1404 +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 +#define GL_INT64_ARB 0x140E +#define GL_INT64_NV 0x140E +#define GL_INT64_VEC2_ARB 0x8FE9 +#define GL_INT64_VEC2_NV 0x8FE9 +#define GL_INT64_VEC3_ARB 0x8FEA +#define GL_INT64_VEC3_NV 0x8FEA +#define GL_INT64_VEC4_ARB 0x8FEB +#define GL_INT64_VEC4_NV 0x8FEB +#define GL_INT8_NV 0x8FE0 +#define GL_INT8_VEC2_NV 0x8FE1 +#define GL_INT8_VEC3_NV 0x8FE2 +#define GL_INT8_VEC4_NV 0x8FE3 +#define GL_INTENSITY12_EXT 0x804C +#define GL_INTENSITY16F_ARB 0x881D +#define GL_INTENSITY16I_EXT 0x8D8B +#define GL_INTENSITY16UI_EXT 0x8D79 +#define GL_INTENSITY16_EXT 0x804D +#define GL_INTENSITY16_SNORM 0x901B +#define GL_INTENSITY32F_ARB 0x8817 +#define GL_INTENSITY32I_EXT 0x8D85 +#define GL_INTENSITY32UI_EXT 0x8D73 +#define GL_INTENSITY4_EXT 0x804A +#define GL_INTENSITY8I_EXT 0x8D91 +#define GL_INTENSITY8UI_EXT 0x8D7F +#define GL_INTENSITY8_EXT 0x804B +#define GL_INTENSITY8_SNORM 0x9017 +#define GL_INTENSITY_EXT 0x8049 +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_INTENSITY_SNORM 0x9013 +#define GL_INTERLACE_OML 0x8980 +#define GL_INTERLACE_READ_INGR 0x8568 +#define GL_INTERLACE_READ_OML 0x8981 +#define GL_INTERLACE_SGIX 0x8094 +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C +#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C +#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 +#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B +#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 +#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A +#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 +#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C +#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 +#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 +#define GL_INTERNALFORMAT_PREFERRED 0x8270 +#define GL_INTERNALFORMAT_RED_SIZE 0x8271 +#define GL_INTERNALFORMAT_RED_TYPE 0x8278 +#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 +#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 +#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D +#define GL_INTERNALFORMAT_SUPPORTED 0x826F +#define GL_INTERPOLATE_ARB 0x8575 +#define GL_INTERPOLATE_EXT 0x8575 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_INT_IMAGE_1D 0x9057 +#define GL_INT_IMAGE_1D_ARRAY 0x905D +#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D +#define GL_INT_IMAGE_1D_EXT 0x9057 +#define GL_INT_IMAGE_2D 0x9058 +#define GL_INT_IMAGE_2D_ARRAY 0x905E +#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E +#define GL_INT_IMAGE_2D_EXT 0x9058 +#define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 +#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 +#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 +#define GL_INT_IMAGE_2D_RECT 0x905A +#define GL_INT_IMAGE_2D_RECT_EXT 0x905A +#define GL_INT_IMAGE_3D 0x9059 +#define GL_INT_IMAGE_3D_EXT 0x9059 +#define GL_INT_IMAGE_BUFFER 0x905C +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_INT_IMAGE_CUBE 0x905B +#define GL_INT_IMAGE_CUBE_EXT 0x905B +#define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE +#define GL_INT_SAMPLER_1D_EXT 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF +#define GL_INT_SAMPLER_2D_EXT 0x8DCA +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_3D_EXT 0x8DCB +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_INT_SAMPLER_BUFFER_AMD 0x9002 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E +#define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC2_ARB 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC3_ARB 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_INT_VEC4_ARB 0x8B55 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_INVALID_OPERATION 0x0502 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVARIANT_DATATYPE_EXT 0x87EB +#define GL_INVARIANT_EXT 0x87C2 +#define GL_INVARIANT_VALUE_EXT 0x87EA +#define GL_INVERSE_NV 0x862B +#define GL_INVERSE_TRANSPOSE_NV 0x862D +#define GL_INVERT 0x150A +#define GL_INVERTED_SCREEN_W_REND 0x8491 +#define GL_INVERT_OVG_NV 0x92B4 +#define GL_INVERT_RGB_NV 0x92A3 +#define GL_IR_INSTRUMENT1_SGIX 0x817F +#define GL_ISOLINES 0x8E7A +#define GL_IS_PER_PATCH 0x92E7 +#define GL_IS_ROW_MAJOR 0x9300 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_IUI_N3F_V2F_EXT 0x81AF +#define GL_IUI_N3F_V3F_EXT 0x81B0 +#define GL_IUI_V2F_EXT 0x81AD +#define GL_IUI_V3F_EXT 0x81AE +#define GL_KEEP 0x1E00 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 +#define GL_LAYER_NV 0x8DAA +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E +#define GL_LAYOUT_DEFAULT_INTEL 0 +#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531 +#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530 +#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F +#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590 +#define GL_LAYOUT_GENERAL_EXT 0x958D +#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2 +#define GL_LAYOUT_LINEAR_INTEL 1 +#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 +#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593 +#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592 +#define GL_LEFT 0x0406 +#define GL_LEQUAL 0x0203 +#define GL_LERP_ATI 0x8969 +#define GL_LESS 0x0201 +#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX 0x0800 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_LIGHTEN_NV 0x9298 +#define GL_LIGHT_ENV_MODE_SGIX 0x8407 +#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 +#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 +#define GL_LINE 0x1B01 +#define GL_LINEAR 0x2601 +#define GL_LINEARBURN_NV 0x92A5 +#define GL_LINEARDODGE_NV 0x92A4 +#define GL_LINEARLIGHT_NV 0x92A7 +#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 +#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F +#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 +#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 +#define GL_LINEAR_DETAIL_SGIS 0x8097 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE +#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF +#define GL_LINEAR_SHARPEN_SGIS 0x80AD +#define GL_LINEAR_TILING_EXT 0x9585 +#define GL_LINES 0x0001 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINES_ADJACENCY_ARB 0x000A +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_LINE_STRIP 0x0003 +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_LINE_STRIP_ADJACENCY_ARB 0x000B +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_LINE_TO_NV 0x04 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_COMMAND_NV 0x000D +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINK_STATUS 0x8B82 +#define GL_LIST_PRIORITY_SGIX 0x8182 +#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED +#define GL_LOCAL_CONSTANT_EXT 0x87C3 +#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC +#define GL_LOCAL_EXT 0x87C4 +#define GL_LOCATION 0x930E +#define GL_LOCATION_COMPONENT 0x934A +#define GL_LOCATION_INDEX 0x930F +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_LOSE_CONTEXT_ON_RESET 0x8252 +#define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_LOW_FLOAT 0x8DF0 +#define GL_LOW_INT 0x8DF3 +#define GL_LO_BIAS_NV 0x8715 +#define GL_LO_SCALE_NV 0x870F +#define GL_LUID_SIZE_EXT 8 +#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 +#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 +#define GL_LUMINANCE12_EXT 0x8041 +#define GL_LUMINANCE16F_ARB 0x881E +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE16I_EXT 0x8D8C +#define GL_LUMINANCE16UI_EXT 0x8D7A +#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 +#define GL_LUMINANCE16_ALPHA16_SNORM 0x901A +#define GL_LUMINANCE16_EXT 0x8042 +#define GL_LUMINANCE16_SNORM 0x9019 +#define GL_LUMINANCE32F_ARB 0x8818 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE32I_EXT 0x8D86 +#define GL_LUMINANCE32UI_EXT 0x8D74 +#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 +#define GL_LUMINANCE4_EXT 0x803F +#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 +#define GL_LUMINANCE8I_EXT 0x8D92 +#define GL_LUMINANCE8UI_EXT 0x8D80 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_SNORM 0x9015 +#define GL_LUMINANCE_ALPHA16F_ARB 0x881F +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D +#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B +#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 +#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 +#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 +#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D +#define GL_LUMINANCE_ALPHA_SNORM 0x9012 +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_INTEGER_EXT 0x8D9C +#define GL_LUMINANCE_SNORM 0x9011 +#define GL_MAD_ATI 0x8968 +#define GL_MAGNITUDE_BIAS_NV 0x8718 +#define GL_MAGNITUDE_SCALE_NV 0x8712 +#define GL_MAJOR_VERSION 0x821B +#define GL_MANUAL_GENERATE_MIPMAP 0x8294 +#define GL_MAP1_BINORMAL_EXT 0x8446 +#define GL_MAP1_TANGENT_EXT 0x8444 +#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 +#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A +#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B +#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C +#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D +#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E +#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F +#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 +#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 +#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 +#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 +#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 +#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 +#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 +#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 +#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 +#define GL_MAP2_BINORMAL_EXT 0x8447 +#define GL_MAP2_TANGENT_EXT 0x8445 +#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 +#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A +#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B +#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C +#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D +#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E +#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F +#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 +#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 +#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 +#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 +#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 +#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 +#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 +#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 +#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 +#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 +#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 +#define GL_MAP_COHERENT_BIT 0x0080 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_PERSISTENT_BIT 0x0040 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_TESSELLATION_NV 0x86C2 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C +#define GL_MATRIX0_ARB 0x88C0 +#define GL_MATRIX0_NV 0x8630 +#define GL_MATRIX10_ARB 0x88CA +#define GL_MATRIX11_ARB 0x88CB +#define GL_MATRIX12_ARB 0x88CC +#define GL_MATRIX13_ARB 0x88CD +#define GL_MATRIX14_ARB 0x88CE +#define GL_MATRIX15_ARB 0x88CF +#define GL_MATRIX16_ARB 0x88D0 +#define GL_MATRIX17_ARB 0x88D1 +#define GL_MATRIX18_ARB 0x88D2 +#define GL_MATRIX19_ARB 0x88D3 +#define GL_MATRIX1_ARB 0x88C1 +#define GL_MATRIX1_NV 0x8631 +#define GL_MATRIX20_ARB 0x88D4 +#define GL_MATRIX21_ARB 0x88D5 +#define GL_MATRIX22_ARB 0x88D6 +#define GL_MATRIX23_ARB 0x88D7 +#define GL_MATRIX24_ARB 0x88D8 +#define GL_MATRIX25_ARB 0x88D9 +#define GL_MATRIX26_ARB 0x88DA +#define GL_MATRIX27_ARB 0x88DB +#define GL_MATRIX28_ARB 0x88DC +#define GL_MATRIX29_ARB 0x88DD +#define GL_MATRIX2_ARB 0x88C2 +#define GL_MATRIX2_NV 0x8632 +#define GL_MATRIX30_ARB 0x88DE +#define GL_MATRIX31_ARB 0x88DF +#define GL_MATRIX3_ARB 0x88C3 +#define GL_MATRIX3_NV 0x8633 +#define GL_MATRIX4_ARB 0x88C4 +#define GL_MATRIX4_NV 0x8634 +#define GL_MATRIX5_ARB 0x88C5 +#define GL_MATRIX5_NV 0x8635 +#define GL_MATRIX6_ARB 0x88C6 +#define GL_MATRIX6_NV 0x8636 +#define GL_MATRIX7_ARB 0x88C7 +#define GL_MATRIX7_NV 0x8637 +#define GL_MATRIX8_ARB 0x88C8 +#define GL_MATRIX9_ARB 0x88C9 +#define GL_MATRIX_EXT 0x87C0 +#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 +#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 +#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 +#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 +#define GL_MATRIX_PALETTE_ARB 0x8840 +#define GL_MATRIX_STRIDE 0x92FF +#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 +#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 +#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 +#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 +#define GL_MAT_EMISSION_BIT_PGI 0x00800000 +#define GL_MAT_SHININESS_BIT_PGI 0x02000000 +#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 +#define GL_MAX 0x8008 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 +#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 +#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF +#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 +#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D +#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 +#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F +#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC +#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 +#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED +#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 +#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3 +#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4 +#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 +#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA +#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 +#define GL_MAX_COMBINED_DIMENSIONS 0x8282 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 +#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 +#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67 +#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 +#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC +#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 +#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 +#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB +#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF +#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD +#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB +#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 +#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC +#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB +#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344 +#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345 +#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE +#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB +#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF +#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B +#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C +#define GL_MAX_CULL_DISTANCES 0x82F9 +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 +#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 +#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 +#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 +#define GL_MAX_DEPTH 0x8280 +#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5 +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_DETACHED_BUFFERS_NV 0x95AD +#define GL_MAX_DETACHED_TEXTURES_NV 0x95AC +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 +#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 +#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV 0x953D +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 +#define GL_MAX_ELEMENT_INDEX 0x8D6B +#define GL_MAX_EXT 0x8008 +#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C +#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 +#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 +#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 +#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C +#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 +#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 +#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 +#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 +#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 +#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 +#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D +#define GL_MAX_GENERAL_COMBINERS_NV 0x854D +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF +#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD +#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD +#define GL_MAX_HEIGHT 0x827F +#define GL_MAX_IMAGE_SAMPLES 0x906D +#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D +#define GL_MAX_IMAGE_UNITS 0x8F38 +#define GL_MAX_IMAGE_UNITS_EXT 0x8F38 +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_LAYERS 0x8281 +#define GL_MAX_LGPU_GPUS_NVX 0x92BA +#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 +#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 +#define GL_MAX_MESH_ATOMIC_COUNTERS_NV 0x8E65 +#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64 +#define GL_MAX_MESH_IMAGE_UNIFORMS_NV 0x8E62 +#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV 0x9539 +#define GL_MAX_MESH_OUTPUT_VERTICES_NV 0x9538 +#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66 +#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61 +#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV 0x9536 +#define GL_MAX_MESH_UNIFORM_BLOCKS_NV 0x8E60 +#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63 +#define GL_MAX_MESH_VIEWS_NV 0x9557 +#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2 +#define GL_MAX_MESH_WORK_GROUP_SIZE_NV 0x953B +#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 +#define GL_MAX_NAME_LENGTH 0x92F6 +#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 +#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC +#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB +#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 +#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 +#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 +#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B +#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD +#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 +#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 +#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 +#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 +#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 +#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 +#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 +#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 +#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 +#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 +#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 +#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F +#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E +#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 +#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E +#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF +#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 +#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB +#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 +#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 +#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F +#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 +#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 +#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 +#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 +#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 +#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 +#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 +#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT 0x8905 +#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 +#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F +#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D +#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C +#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 +#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0 +#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 +#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE +#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD +#define GL_MAX_SHININESS_NV 0x8504 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A +#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 +#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB 0x9198 +#define GL_MAX_SPOT_EXPONENT_NV 0x8505 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_MAX_TASK_ATOMIC_COUNTERS_NV 0x8E6D +#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C +#define GL_MAX_TASK_IMAGE_UNIFORMS_NV 0x8E6A +#define GL_MAX_TASK_OUTPUT_COUNT_NV 0x953A +#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E +#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69 +#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV 0x9537 +#define GL_MAX_TASK_UNIFORM_BLOCKS_NV 0x8E68 +#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B +#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3 +#define GL_MAX_TASK_WORK_GROUP_SIZE_NV 0x953C +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 +#define GL_MAX_TEXTURE_COORDS_NV 0x8871 +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 +#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_MAX_TEXTURE_MAX_ANISOTROPY 0x84FF +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 +#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6 +#define GL_MAX_TRACK_MATRICES_NV 0x862F +#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_LOCATIONS 0x826E +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 +#define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 +#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 +#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 +#define GL_MAX_VERTEX_HINT_PGI 0x1A22D +#define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 +#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 +#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 +#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 +#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 +#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_MAX_VERTEX_STREAMS_ATI 0x876B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 +#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE +#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE +#define GL_MAX_VIEWPORTS 0x825B +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_VIEWS_OVR 0x9631 +#define GL_MAX_WIDTH 0x827E +#define GL_MAX_WINDOW_RECTANGLES_EXT 0x8F14 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6 +#define GL_MEMORY_ATTACHABLE_NV 0x95A8 +#define GL_MEMORY_ATTACHABLE_SIZE_NV 0x95A7 +#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543 +#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF +#define GL_MESH_OUTPUT_TYPE_NV 0x957B +#define GL_MESH_PRIMITIVES_OUT_NV 0x957A +#define GL_MESH_SHADER_BIT_NV 0x00000040 +#define GL_MESH_SHADER_NV 0x9559 +#define GL_MESH_SUBROUTINE_NV 0x957C +#define GL_MESH_SUBROUTINE_UNIFORM_NV 0x957E +#define GL_MESH_VERTICES_OUT_NV 0x9579 +#define GL_MESH_WORK_GROUP_SIZE_NV 0x953E +#define GL_MIN 0x8007 +#define GL_MINMAX_EXT 0x802E +#define GL_MINMAX_FORMAT_EXT 0x802F +#define GL_MINMAX_SINK_EXT 0x8030 +#define GL_MINOR_VERSION 0x821C +#define GL_MINUS_CLAMPED_NV 0x92B3 +#define GL_MINUS_NV 0x929F +#define GL_MIN_EXT 0x8007 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B +#define GL_MIN_LOD_WARNING_AMD 0x919C +#define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT 0x8904 +#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 +#define GL_MIN_SPARSE_LEVEL_AMD 0x919B +#define GL_MIPMAP 0x8293 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MIRRORED_REPEAT_ARB 0x8370 +#define GL_MIRRORED_REPEAT_IBM 0x8370 +#define GL_MIRROR_CLAMP_ATI 0x8742 +#define GL_MIRROR_CLAMP_EXT 0x8742 +#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 +#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_MODELVIEW0_ARB 0x1700 +#define GL_MODELVIEW0_EXT 0x1700 +#define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 +#define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 +#define GL_MODELVIEW10_ARB 0x872A +#define GL_MODELVIEW11_ARB 0x872B +#define GL_MODELVIEW12_ARB 0x872C +#define GL_MODELVIEW13_ARB 0x872D +#define GL_MODELVIEW14_ARB 0x872E +#define GL_MODELVIEW15_ARB 0x872F +#define GL_MODELVIEW16_ARB 0x8730 +#define GL_MODELVIEW17_ARB 0x8731 +#define GL_MODELVIEW18_ARB 0x8732 +#define GL_MODELVIEW19_ARB 0x8733 +#define GL_MODELVIEW1_ARB 0x850A +#define GL_MODELVIEW1_EXT 0x850A +#define GL_MODELVIEW1_MATRIX_EXT 0x8506 +#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 +#define GL_MODELVIEW20_ARB 0x8734 +#define GL_MODELVIEW21_ARB 0x8735 +#define GL_MODELVIEW22_ARB 0x8736 +#define GL_MODELVIEW23_ARB 0x8737 +#define GL_MODELVIEW24_ARB 0x8738 +#define GL_MODELVIEW25_ARB 0x8739 +#define GL_MODELVIEW26_ARB 0x873A +#define GL_MODELVIEW27_ARB 0x873B +#define GL_MODELVIEW28_ARB 0x873C +#define GL_MODELVIEW29_ARB 0x873D +#define GL_MODELVIEW2_ARB 0x8722 +#define GL_MODELVIEW30_ARB 0x873E +#define GL_MODELVIEW31_ARB 0x873F +#define GL_MODELVIEW3_ARB 0x8723 +#define GL_MODELVIEW4_ARB 0x8724 +#define GL_MODELVIEW5_ARB 0x8725 +#define GL_MODELVIEW6_ARB 0x8726 +#define GL_MODELVIEW7_ARB 0x8727 +#define GL_MODELVIEW8_ARB 0x8728 +#define GL_MODELVIEW9_ARB 0x8729 +#define GL_MODELVIEW_PROJECTION_NV 0x8629 +#define GL_MODULATE_ADD_ATI 0x8744 +#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 +#define GL_MODULATE_SUBTRACT_ATI 0x8746 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_MOVE_TO_NV 0x02 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOV_ATI 0x8961 +#define GL_MULTICAST_GPUS_NV 0x92BA +#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549 +#define GL_MULTIPLY_KHR 0x9294 +#define GL_MULTIPLY_NV 0x9294 +#define GL_MULTISAMPLE 0x809D +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_MULTISAMPLE_3DFX 0x86B2 +#define GL_MULTISAMPLE_ARB 0x809D +#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 +#define GL_MULTISAMPLE_BIT_ARB 0x20000000 +#define GL_MULTISAMPLE_BIT_EXT 0x20000000 +#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 +#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382 +#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381 +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_MULTISAMPLE_SGIS 0x809D +#define GL_MUL_ATI 0x8964 +#define GL_MVP_MATRIX_EXT 0x87E3 +#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 +#define GL_NAMED_STRING_TYPE_ARB 0x8DEA +#define GL_NAME_LENGTH 0x92F9 +#define GL_NAND 0x150E +#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 +#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 +#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 +#define GL_NEAREST 0x2600 +#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E +#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_NEGATE_BIT_ATI 0x00000004 +#define GL_NEGATIVE_ONE_EXT 0x87DF +#define GL_NEGATIVE_ONE_TO_ONE 0x935E +#define GL_NEGATIVE_W_EXT 0x87DC +#define GL_NEGATIVE_X_EXT 0x87D9 +#define GL_NEGATIVE_Y_EXT 0x87DA +#define GL_NEGATIVE_Z_EXT 0x87DB +#define GL_NEVER 0x0200 +#define GL_NEXT_BUFFER_NV -2 +#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 +#define GL_NICEST 0x1102 +#define GL_NONE 0 +#define GL_NOOP 0x1505 +#define GL_NOP_COMMAND_NV 0x0001 +#define GL_NOR 0x1508 +#define GL_NORMALIZED_RANGE_EXT 0x87E0 +#define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 +#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 +#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 +#define GL_NORMAL_ARRAY_EXT 0x8075 +#define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C +#define GL_NORMAL_ARRAY_LIST_IBM 103071 +#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 +#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 +#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F +#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F +#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E +#define GL_NORMAL_BIT_PGI 0x08000000 +#define GL_NORMAL_MAP_ARB 0x8511 +#define GL_NORMAL_MAP_EXT 0x8511 +#define GL_NORMAL_MAP_NV 0x8511 +#define GL_NOTEQUAL 0x0205 +#define GL_NO_ERROR 0 +#define GL_NO_RESET_NOTIFICATION 0x8261 +#define GL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define GL_NUM_ACTIVE_VARIABLES 0x9304 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 +#define GL_NUM_DEVICE_UUIDS_EXT 0x9596 +#define GL_NUM_EXTENSIONS 0x821D +#define GL_NUM_FILL_STREAMS_NV 0x8E29 +#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F +#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E +#define GL_NUM_GENERAL_COMBINERS_NV 0x854E +#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 +#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 +#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 +#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 +#define GL_NUM_PASSES_ATI 0x8970 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_NUM_SAMPLE_COUNTS 0x9380 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 +#define GL_NUM_SPARSE_LEVELS_ARB 0x91AA +#define GL_NUM_SPIR_V_EXTENSIONS 0x9554 +#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6 +#define GL_NUM_TILING_TYPES_EXT 0x9582 +#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 +#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB 0x91A8 +#define GL_NUM_WINDOW_RECTANGLES_EXT 0x8F15 +#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 +#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A +#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 +#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 +#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 +#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 +#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 +#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 +#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 +#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 +#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 +#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 +#define GL_OBJECT_LINE_SGIS 0x81F7 +#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 +#define GL_OBJECT_POINT_SGIS 0x81F5 +#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 +#define GL_OBJECT_SUBTYPE_ARB 0x8B4F +#define GL_OBJECT_TYPE 0x9112 +#define GL_OBJECT_TYPE_ARB 0x8B4E +#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 +#define GL_OFFSET 0x92FC +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 +#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 +#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 +#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 +#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 +#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 +#define GL_OFFSET_TEXTURE_2D_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_2D_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 +#define GL_OFFSET_TEXTURE_2D_SCALE_NV 0x86E2 +#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 +#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 +#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C +#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D +#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 +#define GL_ONE 1 +#define GL_ONE_EXT 0x87DE +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_OPERAND0_ALPHA_ARB 0x8598 +#define GL_OPERAND0_ALPHA_EXT 0x8598 +#define GL_OPERAND0_RGB_ARB 0x8590 +#define GL_OPERAND0_RGB_EXT 0x8590 +#define GL_OPERAND1_ALPHA_ARB 0x8599 +#define GL_OPERAND1_ALPHA_EXT 0x8599 +#define GL_OPERAND1_RGB_ARB 0x8591 +#define GL_OPERAND1_RGB_EXT 0x8591 +#define GL_OPERAND2_ALPHA_ARB 0x859A +#define GL_OPERAND2_ALPHA_EXT 0x859A +#define GL_OPERAND2_RGB_ARB 0x8592 +#define GL_OPERAND2_RGB_EXT 0x8592 +#define GL_OPERAND3_ALPHA_NV 0x859B +#define GL_OPERAND3_RGB_NV 0x8593 +#define GL_OPTIMAL_TILING_EXT 0x9584 +#define GL_OP_ADD_EXT 0x8787 +#define GL_OP_CLAMP_EXT 0x878E +#define GL_OP_CROSS_PRODUCT_EXT 0x8797 +#define GL_OP_DOT3_EXT 0x8784 +#define GL_OP_DOT4_EXT 0x8785 +#define GL_OP_EXP_BASE_2_EXT 0x8791 +#define GL_OP_FLOOR_EXT 0x878F +#define GL_OP_FRAC_EXT 0x8789 +#define GL_OP_INDEX_EXT 0x8782 +#define GL_OP_LOG_BASE_2_EXT 0x8792 +#define GL_OP_MADD_EXT 0x8788 +#define GL_OP_MAX_EXT 0x878A +#define GL_OP_MIN_EXT 0x878B +#define GL_OP_MOV_EXT 0x8799 +#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 +#define GL_OP_MUL_EXT 0x8786 +#define GL_OP_NEGATE_EXT 0x8783 +#define GL_OP_POWER_EXT 0x8793 +#define GL_OP_RECIP_EXT 0x8794 +#define GL_OP_RECIP_SQRT_EXT 0x8795 +#define GL_OP_ROUND_EXT 0x8790 +#define GL_OP_SET_GE_EXT 0x878C +#define GL_OP_SET_LT_EXT 0x878D +#define GL_OP_SUB_EXT 0x8796 +#define GL_OR 0x1507 +#define GL_OR_INVERTED 0x150D +#define GL_OR_REVERSE 0x150B +#define GL_OUTPUT_COLOR0_EXT 0x879B +#define GL_OUTPUT_COLOR1_EXT 0x879C +#define GL_OUTPUT_FOG_EXT 0x87BD +#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D +#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 +#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 +#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 +#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA +#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB +#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC +#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD +#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE +#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF +#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 +#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E +#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 +#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 +#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 +#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 +#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 +#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 +#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 +#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 +#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 +#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA +#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F +#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB +#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC +#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 +#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 +#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 +#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 +#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 +#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 +#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 +#define GL_OUTPUT_VERTEX_EXT 0x879A +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_OVERLAY_KHR 0x9296 +#define GL_OVERLAY_NV 0x9296 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_PACK_CMYK_HINT_EXT 0x800E +#define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D +#define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C +#define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E +#define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B +#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C +#define GL_PACK_INVERT_MESA 0x8758 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_RESAMPLE_OML 0x8984 +#define GL_PACK_RESAMPLE_SGIX 0x842E +#define GL_PACK_ROW_BYTES_APPLE 0x8A15 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_SKIP_IMAGES_EXT 0x806B +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 +#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 +#define GL_PARAMETER_BUFFER 0x80EE +#define GL_PARAMETER_BUFFER_ARB 0x80EE +#define GL_PARAMETER_BUFFER_BINDING 0x80EF +#define GL_PARAMETER_BUFFER_BINDING_ARB 0x80EF +#define GL_PARTIAL_SUCCESS_NV 0x902E +#define GL_PASS_THROUGH_NV 0x86E6 +#define GL_PATCHES 0x000E +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFORMANCE_MONITOR_AMD 0x9152 +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERTURB_EXT 0x85AE +#define GL_PER_GPU_STORAGE_BIT_NV 0x0800 +#define GL_PER_GPU_STORAGE_NV 0x9548 +#define GL_PER_STAGE_CONSTANTS_NV 0x8535 +#define GL_PHONG_HINT_WIN 0x80EB +#define GL_PHONG_WIN 0x80EA +#define GL_PINLIGHT_NV 0x92A8 +#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE +#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF +#define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 +#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 +#define GL_PIXEL_COUNTER_BITS_NV 0x8864 +#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 +#define GL_PIXEL_COUNT_NV 0x8866 +#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 +#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 +#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 +#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 +#define GL_PIXEL_MAG_FILTER_EXT 0x8331 +#define GL_PIXEL_MIN_FILTER_EXT 0x8332 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED +#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED +#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB +#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 +#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 +#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 +#define GL_PIXEL_TEXTURE_SGIS 0x8353 +#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B +#define GL_PIXEL_TEX_GEN_SGIX 0x8139 +#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E +#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F +#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 +#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 +#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 +#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 +#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 +#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 +#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 +#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 +#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF +#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF +#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC +#define GL_PLUS_CLAMPED_ALPHA_NV 0x92B2 +#define GL_PLUS_CLAMPED_NV 0x92B1 +#define GL_PLUS_DARKER_NV 0x9292 +#define GL_PLUS_NV 0x9291 +#define GL_PN_TRIANGLES_ATI 0x87F0 +#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 +#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 +#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 +#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 +#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 +#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 +#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 +#define GL_POINT 0x1B00 +#define GL_POINTS 0x0000 +#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 +#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_POINT_SIZE_MAX_ARB 0x8127 +#define GL_POINT_SIZE_MAX_EXT 0x8127 +#define GL_POINT_SIZE_MAX_SGIS 0x8127 +#define GL_POINT_SIZE_MIN_ARB 0x8126 +#define GL_POINT_SIZE_MIN_EXT 0x8126 +#define GL_POINT_SIZE_MIN_SGIS 0x8126 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SPRITE_ARB 0x8861 +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_POINT_SPRITE_NV 0x8861 +#define GL_POINT_SPRITE_R_MODE_NV 0x8863 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 +#define GL_POLYGON_OFFSET_CLAMP 0x8E1B +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +#define GL_POLYGON_OFFSET_COMMAND_NV 0x000E +#define GL_POLYGON_OFFSET_EXT 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB +#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 +#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA +#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 +#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 +#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 +#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 +#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 +#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 +#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 +#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F +#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 +#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E +#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 +#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 +#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D +#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 +#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C +#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 +#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B +#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 +#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C +#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A +#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 +#define GL_PRESENT_DURATION_NV 0x8E2B +#define GL_PRESENT_TIME_NV 0x8E2A +#define GL_PRESERVE_ATI 0x8762 +#define GL_PREVIOUS_ARB 0x8578 +#define GL_PREVIOUS_EXT 0x8578 +#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 +#define GL_PRIMARY_COLOR_ARB 0x8577 +#define GL_PRIMARY_COLOR_EXT 0x8577 +#define GL_PRIMARY_COLOR_NV 0x852C +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_PRIMITIVES_GENERATED_NV 0x8C87 +#define GL_PRIMITIVES_SUBMITTED 0x82EF +#define GL_PRIMITIVES_SUBMITTED_ARB 0x82EF +#define GL_PRIMITIVE_BOUNDING_BOX_ARB 0x92BE +#define GL_PRIMITIVE_ID_NV 0x8C7C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 +#define GL_PRIMITIVE_RESTART_NV 0x8558 +#define GL_PROGRAM 0x82E2 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 +#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 +#define GL_PROGRAM_ATTRIBS_ARB 0x88AC +#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_PROGRAM_BINARY_FORMAT_MESA 0x875F +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINDING_ARB 0x8677 +#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B +#define GL_PROGRAM_ERROR_POSITION_NV 0x864B +#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 +#define GL_PROGRAM_ERROR_STRING_NV 0x8874 +#define GL_PROGRAM_FORMAT_ARB 0x8876 +#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 +#define GL_PROGRAM_INPUT 0x92E3 +#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 +#define GL_PROGRAM_LENGTH_ARB 0x8627 +#define GL_PROGRAM_LENGTH_NV 0x8627 +#define GL_PROGRAM_MATRIX_EXT 0x8E2D +#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F +#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 +#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 +#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE +#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 +#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA +#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 +#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A +#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 +#define GL_PROGRAM_OBJECT_ARB 0x8B40 +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_PROGRAM_OUTPUT 0x92E4 +#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 +#define GL_PROGRAM_PARAMETER_NV 0x8644 +#define GL_PROGRAM_PIPELINE 0x82E4 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 +#define GL_PROGRAM_RESIDENT_NV 0x8647 +#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_PROGRAM_STRING_ARB 0x8628 +#define GL_PROGRAM_STRING_NV 0x8628 +#define GL_PROGRAM_TARGET_NV 0x8646 +#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 +#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 +#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 +#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 +#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_PROVOKING_VERTEX_EXT 0x8E4F +#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 +#define GL_PROXY_HISTOGRAM_EXT 0x8025 +#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 +#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 +#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 +#define GL_PROXY_TEXTURE_1D_EXT 0x8063 +#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B +#define GL_PROXY_TEXTURE_2D_EXT 0x8064 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_PROXY_TEXTURE_3D_EXT 0x8070 +#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 +#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B +#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 +#define GL_PURGEABLE_APPLE 0x8A1D +#define GL_PURGED_CONTEXT_RESET_NV 0x92BB +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_QUADS 0x0007 +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C +#define GL_QUAD_ALPHA4_SGIS 0x811E +#define GL_QUAD_ALPHA8_SGIS 0x811F +#define GL_QUAD_INTENSITY4_SGIS 0x8122 +#define GL_QUAD_INTENSITY8_SGIS 0x8123 +#define GL_QUAD_LUMINANCE4_SGIS 0x8120 +#define GL_QUAD_LUMINANCE8_SGIS 0x8121 +#define GL_QUAD_MESH_SUN 0x8614 +#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 +#define GL_QUARTER_BIT_ATI 0x00000010 +#define GL_QUERY 0x82E3 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_AMD 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_BUFFER_BINDING_AMD 0x9193 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_QUERY_COUNTER_BITS_ARB 0x8864 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_NO_WAIT_INVERTED 0x8E18 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_OBJECT_AMD 0x9153 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547 +#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542 +#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546 +#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544 +#define GL_QUERY_RESOURCE_TEXTURE_NV 0x9545 +#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_ARB 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_TARGET 0x82EA +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_WAIT_INVERTED 0x8E17 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_R11F_G11F_B10F_EXT 0x8C3A +#define GL_R16 0x822A +#define GL_R16F 0x822D +#define GL_R16F_EXT 0x822D +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R16_SNORM 0x8F98 +#define GL_R1UI_C3F_V3F_SUN 0x85C6 +#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 +#define GL_R1UI_C4UB_V3F_SUN 0x85C5 +#define GL_R1UI_N3F_V3F_SUN 0x85C7 +#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB +#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA +#define GL_R1UI_T2F_V3F_SUN 0x85C9 +#define GL_R1UI_V3F_SUN 0x85C4 +#define GL_R32F 0x822E +#define GL_R32F_EXT 0x822E +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_R3_G3_B2 0x2A10 +#define GL_R8 0x8229 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R8_EXT 0x8229 +#define GL_R8_SNORM 0x8F94 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_RASTERIZER_DISCARD_EXT 0x8C89 +#define GL_RASTERIZER_DISCARD_NV 0x8C89 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_READ_BUFFER 0x0C02 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA +#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 +#define GL_READ_ONLY 0x88B8 +#define GL_READ_ONLY_ARB 0x88B8 +#define GL_READ_PIXELS 0x828C +#define GL_READ_PIXELS_FORMAT 0x828D +#define GL_READ_PIXELS_TYPE 0x828E +#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B +#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 +#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D +#define GL_READ_WRITE 0x88BA +#define GL_READ_WRITE_ARB 0x88BA +#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE +#define GL_RECT_NV 0xF6 +#define GL_RED 0x1903 +#define GL_REDUCE_EXT 0x8016 +#define GL_RED_BIT_ATI 0x00000001 +#define GL_RED_INTEGER 0x8D94 +#define GL_RED_INTEGER_EXT 0x8D94 +#define GL_RED_MAX_CLAMP_INGR 0x8564 +#define GL_RED_MIN_CLAMP_INGR 0x8560 +#define GL_RED_NV 0x1903 +#define GL_RED_SNORM 0x8F90 +#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B +#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A +#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 +#define GL_REFERENCED_BY_MESH_SHADER_NV 0x95A0 +#define GL_REFERENCED_BY_TASK_SHADER_NV 0x95A1 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 +#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 +#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E +#define GL_REFERENCE_PLANE_SGIX 0x817D +#define GL_REFLECTION_MAP_ARB 0x8512 +#define GL_REFLECTION_MAP_EXT 0x8512 +#define GL_REFLECTION_MAP_NV 0x8512 +#define GL_REGISTER_COMBINERS_NV 0x8522 +#define GL_REG_0_ATI 0x8921 +#define GL_REG_10_ATI 0x892B +#define GL_REG_11_ATI 0x892C +#define GL_REG_12_ATI 0x892D +#define GL_REG_13_ATI 0x892E +#define GL_REG_14_ATI 0x892F +#define GL_REG_15_ATI 0x8930 +#define GL_REG_16_ATI 0x8931 +#define GL_REG_17_ATI 0x8932 +#define GL_REG_18_ATI 0x8933 +#define GL_REG_19_ATI 0x8934 +#define GL_REG_1_ATI 0x8922 +#define GL_REG_20_ATI 0x8935 +#define GL_REG_21_ATI 0x8936 +#define GL_REG_22_ATI 0x8937 +#define GL_REG_23_ATI 0x8938 +#define GL_REG_24_ATI 0x8939 +#define GL_REG_25_ATI 0x893A +#define GL_REG_26_ATI 0x893B +#define GL_REG_27_ATI 0x893C +#define GL_REG_28_ATI 0x893D +#define GL_REG_29_ATI 0x893E +#define GL_REG_2_ATI 0x8923 +#define GL_REG_30_ATI 0x893F +#define GL_REG_31_ATI 0x8940 +#define GL_REG_3_ATI 0x8924 +#define GL_REG_4_ATI 0x8925 +#define GL_REG_5_ATI 0x8926 +#define GL_REG_6_ATI 0x8927 +#define GL_REG_7_ATI 0x8928 +#define GL_REG_8_ATI 0x8929 +#define GL_REG_9_ATI 0x892A +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_RELEASED_APPLE 0x8A19 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 +#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 +#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 +#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 +#define GL_RENDERER 0x1F01 +#define GL_RENDER_GPU_MASK_NV 0x9558 +#define GL_REPEAT 0x2901 +#define GL_REPLACE 0x1E01 +#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 +#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 +#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 +#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 +#define GL_REPLACEMENT_CODE_SUN 0x81D8 +#define GL_REPLACE_EXT 0x8062 +#define GL_REPLACE_MIDDLE_SUN 0x0002 +#define GL_REPLACE_OLDEST_SUN 0x0003 +#define GL_REPLACE_VALUE_AMD 0x874B +#define GL_REPLICATE_BORDER_HP 0x8153 +#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F +#define GL_RESAMPLE_AVERAGE_OML 0x8988 +#define GL_RESAMPLE_DECIMATE_OML 0x8989 +#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 +#define GL_RESAMPLE_REPLICATE_OML 0x8986 +#define GL_RESAMPLE_REPLICATE_SGIX 0x8433 +#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 +#define GL_RESAMPLE_ZERO_FILL_SGIX 0x8434 +#define GL_RESCALE_NORMAL_EXT 0x803A +#define GL_RESET_NOTIFICATION_STRATEGY 0x8256 +#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_RESTART_SUN 0x0001 +#define GL_RETAINED_APPLE 0x8A1B +#define GL_RG 0x8227 +#define GL_RG16 0x822C +#define GL_RG16F 0x822F +#define GL_RG16F_EXT 0x822F +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG16_SNORM 0x8F99 +#define GL_RG32F 0x8230 +#define GL_RG32F_EXT 0x8230 +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_RG8 0x822B +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG8_EXT 0x822B +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB 0x1907 +#define GL_RGB10 0x8052 +#define GL_RGB10_A2 0x8059 +#define GL_RGB10_A2UI 0x906F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB12_EXT 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGB16F 0x881B +#define GL_RGB16F_ARB 0x881B +#define GL_RGB16F_EXT 0x881B +#define GL_RGB16I 0x8D89 +#define GL_RGB16I_EXT 0x8D89 +#define GL_RGB16UI 0x8D77 +#define GL_RGB16UI_EXT 0x8D77 +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGB2_EXT 0x804E +#define GL_RGB32F 0x8815 +#define GL_RGB32F_ARB 0x8815 +#define GL_RGB32F_EXT 0x8815 +#define GL_RGB32I 0x8D83 +#define GL_RGB32I_EXT 0x8D83 +#define GL_RGB32UI 0x8D71 +#define GL_RGB32UI_EXT 0x8D71 +#define GL_RGB4 0x804F +#define GL_RGB4_EXT 0x804F +#define GL_RGB4_S3TC 0x83A1 +#define GL_RGB5 0x8050 +#define GL_RGB565 0x8D62 +#define GL_RGB5_A1 0x8057 +#define GL_RGB5_A1_EXT 0x8057 +#define GL_RGB5_EXT 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB8I 0x8D8F +#define GL_RGB8I_EXT 0x8D8F +#define GL_RGB8UI 0x8D7D +#define GL_RGB8UI_EXT 0x8D7D +#define GL_RGB8_EXT 0x8051 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGB9_E5 0x8C3D +#define GL_RGB9_E5_EXT 0x8C3D +#define GL_RGBA 0x1908 +#define GL_RGBA12 0x805A +#define GL_RGBA12_EXT 0x805A +#define GL_RGBA16 0x805B +#define GL_RGBA16F 0x881A +#define GL_RGBA16F_ARB 0x881A +#define GL_RGBA16F_EXT 0x881A +#define GL_RGBA16I 0x8D88 +#define GL_RGBA16I_EXT 0x8D88 +#define GL_RGBA16UI 0x8D76 +#define GL_RGBA16UI_EXT 0x8D76 +#define GL_RGBA16_EXT 0x805B +#define GL_RGBA16_SNORM 0x8F9B +#define GL_RGBA2 0x8055 +#define GL_RGBA2_EXT 0x8055 +#define GL_RGBA32F 0x8814 +#define GL_RGBA32F_ARB 0x8814 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGBA32I 0x8D82 +#define GL_RGBA32I_EXT 0x8D82 +#define GL_RGBA32UI 0x8D70 +#define GL_RGBA32UI_EXT 0x8D70 +#define GL_RGBA4 0x8056 +#define GL_RGBA4_DXT5_S3TC 0x83A5 +#define GL_RGBA4_EXT 0x8056 +#define GL_RGBA4_S3TC 0x83A3 +#define GL_RGBA8 0x8058 +#define GL_RGBA8I 0x8D8E +#define GL_RGBA8I_EXT 0x8D8E +#define GL_RGBA8UI 0x8D7C +#define GL_RGBA8UI_EXT 0x8D7C +#define GL_RGBA8_EXT 0x8058 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_RGBA_DXT5_S3TC 0x83A4 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGBA_FLOAT_MODE_ARB 0x8820 +#define GL_RGBA_FLOAT_MODE_ATI 0x8820 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_RGBA_INTEGER_EXT 0x8D99 +#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E +#define GL_RGBA_S3TC 0x83A2 +#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C +#define GL_RGBA_SNORM 0x8F93 +#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGB_INTEGER_EXT 0x8D98 +#define GL_RGB_RAW_422_APPLE 0x8A51 +#define GL_RGB_S3TC 0x83A0 +#define GL_RGB_SCALE_ARB 0x8573 +#define GL_RGB_SCALE_EXT 0x8573 +#define GL_RGB_SNORM 0x8F92 +#define GL_RG_INTEGER 0x8228 +#define GL_RG_SNORM 0x8F91 +#define GL_RIGHT 0x0407 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_ROUND_NV 0x90A4 +#define GL_SAMPLER 0x82E6 +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_1D_ARB 0x8B5D +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_2D_ARB 0x8B5E +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_ARB 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_3D_ARB 0x8B5F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_SAMPLER_BUFFER_AMD 0x9001 +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_CUBE_ARB 0x8B60 +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 +#define GL_SAMPLER_OBJECT_AMD 0x9155 +#define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLES_3DFX 0x86B4 +#define GL_SAMPLES_ARB 0x80A9 +#define GL_SAMPLES_EXT 0x80A9 +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SAMPLES_PASSED_ARB 0x8914 +#define GL_SAMPLES_SGIS 0x80A9 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E +#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E +#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 +#define GL_SAMPLE_BUFFERS_ARB 0x80A8 +#define GL_SAMPLE_BUFFERS_EXT 0x80A8 +#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_COVERAGE_ARB 0x80A0 +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA +#define GL_SAMPLE_LOCATION_ARB 0x8E50 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_EXT 0x80A0 +#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB +#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB +#define GL_SAMPLE_MASK_NV 0x8E51 +#define GL_SAMPLE_MASK_SGIS 0x80A0 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA +#define GL_SAMPLE_MASK_VALUE_NV 0x8E52 +#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA +#define GL_SAMPLE_PATTERN_EXT 0x80AC +#define GL_SAMPLE_PATTERN_SGIS 0x80AC +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_POSITION_NV 0x8E50 +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_SAMPLE_SHADING_ARB 0x8C36 +#define GL_SATURATE_BIT_ATI 0x00000040 +#define GL_SCALAR_EXT 0x87BE +#define GL_SCALEBIAS_HINT_SGIX 0x8322 +#define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA +#define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB +#define GL_SCALE_BY_FOUR_NV 0x853F +#define GL_SCALE_BY_ONE_HALF_NV 0x8540 +#define GL_SCALE_BY_TWO_NV 0x853E +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_BOX_EXCLUSIVE_NV 0x9556 +#define GL_SCISSOR_COMMAND_NV 0x0011 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_SCISSOR_TEST_EXCLUSIVE_NV 0x9555 +#define GL_SCREEN_COORDINATES_REND 0x8490 +#define GL_SCREEN_KHR 0x9295 +#define GL_SCREEN_NV 0x9295 +#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C +#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E +#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 +#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 +#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 +#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D +#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A +#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C +#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B +#define GL_SECONDARY_COLOR_NV 0x852D +#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D +#define GL_SEMAPHORE_TYPE_BINARY_NV 0x95B4 +#define GL_SEMAPHORE_TYPE_NV 0x95B3 +#define GL_SEMAPHORE_TYPE_TIMELINE_NV 0x95B5 +#define GL_SEPARABLE_2D_EXT 0x8012 +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_SEPARATE_ATTRIBS_EXT 0x8C8D +#define GL_SEPARATE_ATTRIBS_NV 0x8C8D +#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA +#define GL_SET 0x150F +#define GL_SET_AMD 0x874A +#define GL_SHADER 0x82E1 +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_SHADER_BINARY_FORMAT_SPIR_V 0x9551 +#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_CONSISTENT_NV 0x86DD +#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 +#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 +#define GL_SHADER_IMAGE_ATOMIC 0x82A6 +#define GL_SHADER_IMAGE_LOAD 0x82A4 +#define GL_SHADER_IMAGE_STORE 0x82A5 +#define GL_SHADER_INCLUDE_ARB 0x8DAE +#define GL_SHADER_OBJECT_ARB 0x8B48 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_SHADER_OPERATION_NV 0x86DF +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_STORAGE_BARRIER_BIT 0x00002000 +#define GL_SHADER_STORAGE_BLOCK 0x92E6 +#define GL_SHADER_STORAGE_BUFFER 0x90D2 +#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 +#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF +#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 +#define GL_SHADER_STORAGE_BUFFER_START 0x90D4 +#define GL_SHADER_TYPE 0x8B4F +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C +#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F +#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568 +#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569 +#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A +#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B +#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565 +#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C +#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D +#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E +#define GL_SHADING_RATE_IMAGE_BINDING_NV 0x955B +#define GL_SHADING_RATE_IMAGE_NV 0x9563 +#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2 +#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E +#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1 +#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D +#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C +#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564 +#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE +#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF +#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0 +#define GL_SHADOW_AMBIENT_SGIX 0x80BF +#define GL_SHADOW_ATTENUATION_EXT 0x834E +#define GL_SHARED_EDGE_NV 0xC0 +#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB +#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 +#define GL_SHORT 0x1402 +#define GL_SIGNALED 0x9119 +#define GL_SIGNED_ALPHA8_NV 0x8706 +#define GL_SIGNED_ALPHA_NV 0x8705 +#define GL_SIGNED_HILO16_NV 0x86FA +#define GL_SIGNED_HILO8_NV 0x885F +#define GL_SIGNED_HILO_NV 0x86F9 +#define GL_SIGNED_IDENTITY_NV 0x853C +#define GL_SIGNED_INTENSITY8_NV 0x8708 +#define GL_SIGNED_INTENSITY_NV 0x8707 +#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 +#define GL_SIGNED_LUMINANCE8_NV 0x8702 +#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 +#define GL_SIGNED_LUMINANCE_NV 0x8701 +#define GL_SIGNED_NEGATE_NV 0x853D +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_SIGNED_RGB8_NV 0x86FF +#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D +#define GL_SIGNED_RGBA8_NV 0x86FC +#define GL_SIGNED_RGBA_NV 0x86FB +#define GL_SIGNED_RGB_NV 0x86FE +#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC +#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD +#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF +#define GL_SINGLE_COLOR_EXT 0x81F9 +#define GL_SKIP_COMPONENTS1_NV -6 +#define GL_SKIP_COMPONENTS2_NV -5 +#define GL_SKIP_COMPONENTS3_NV -4 +#define GL_SKIP_COMPONENTS4_NV -3 +#define GL_SKIP_DECODE_EXT 0x8A4A +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_SLICE_ACCUM_SUN 0x85CC +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_SM_COUNT_NV 0x933B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_SOFTLIGHT_NV 0x929C +#define GL_SOURCE0_ALPHA_ARB 0x8588 +#define GL_SOURCE0_ALPHA_EXT 0x8588 +#define GL_SOURCE0_RGB_ARB 0x8580 +#define GL_SOURCE0_RGB_EXT 0x8580 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE1_ALPHA_ARB 0x8589 +#define GL_SOURCE1_ALPHA_EXT 0x8589 +#define GL_SOURCE1_RGB_ARB 0x8581 +#define GL_SOURCE1_RGB_EXT 0x8581 +#define GL_SOURCE2_ALPHA_ARB 0x858A +#define GL_SOURCE2_ALPHA_EXT 0x858A +#define GL_SOURCE2_RGB_ARB 0x8582 +#define GL_SOURCE2_RGB_EXT 0x8582 +#define GL_SOURCE3_ALPHA_NV 0x858B +#define GL_SOURCE3_RGB_NV 0x8583 +#define GL_SPARE0_NV 0x852E +#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 +#define GL_SPARE1_NV 0x852F +#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB 0x82F8 +#define GL_SPARSE_STORAGE_BIT_ARB 0x0400 +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9 +#define GL_SPIR_V_BINARY 0x9552 +#define GL_SPIR_V_BINARY_ARB 0x9552 +#define GL_SPIR_V_EXTENSIONS 0x9553 +#define GL_SPRITE_AXIAL_SGIX 0x814C +#define GL_SPRITE_AXIS_SGIX 0x814A +#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E +#define GL_SPRITE_MODE_SGIX 0x8149 +#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D +#define GL_SPRITE_SGIX 0x8148 +#define GL_SPRITE_TRANSLATION_SGIX 0x814B +#define GL_SQUARE_NV 0x90A3 +#define GL_SR8_EXT 0x8FBD +#define GL_SRC1_ALPHA 0x8589 +#define GL_SRC1_COLOR 0x88F9 +#define GL_SRC_ALPHA 0x0302 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_SRC_ATOP_NV 0x928E +#define GL_SRC_COLOR 0x0300 +#define GL_SRC_IN_NV 0x928A +#define GL_SRC_NV 0x9286 +#define GL_SRC_OUT_NV 0x928C +#define GL_SRC_OVER_NV 0x9288 +#define GL_SRG8_EXT 0x8FBE +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB_DECODE_ARB 0x8299 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_READ 0x8297 +#define GL_SRGB_WRITE 0x8298 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_STATIC_ATI 0x8760 +#define GL_STATIC_COPY 0x88E6 +#define GL_STATIC_COPY_ARB 0x88E6 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_DRAW_ARB 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_READ_ARB 0x88E5 +#define GL_STATIC_VERTEX_ARRAY_IBM 103061 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_FAIL_ATI 0x8801 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FUNC_ATI 0x8800 +#define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_COMPONENTS 0x8285 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_INDEX 0x1901 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_STENCIL_INDEX16_EXT 0x8D49 +#define GL_STENCIL_INDEX1_EXT 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX4_EXT 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX8_EXT 0x8D48 +#define GL_STENCIL_OP_VALUE_AMD 0x874C +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_REF_COMMAND_NV 0x000C +#define GL_STENCIL_RENDERABLE 0x8288 +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_STENCIL_TAG_BITS_EXT 0x88F2 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STEREO 0x0C33 +#define GL_STORAGE_CACHED_APPLE 0x85BE +#define GL_STORAGE_CLIENT_APPLE 0x85B4 +#define GL_STORAGE_PRIVATE_APPLE 0x85BD +#define GL_STORAGE_SHARED_APPLE 0x85BF +#define GL_STREAM_COPY 0x88E2 +#define GL_STREAM_COPY_ARB 0x88E2 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_DRAW_ARB 0x88E0 +#define GL_STREAM_RASTERIZATION_AMD 0x91A0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_READ_ARB 0x88E1 +#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 +#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 +#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 +#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004 +#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008 +#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001 +#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040 +#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100 +#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR 0x00000080 +#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010 +#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020 +#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR 0x00000002 +#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR 0x9535 +#define GL_SUBGROUP_SIZE_KHR 0x9532 +#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534 +#define GL_SUBGROUP_SUPPORTED_STAGES_KHR 0x9533 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_SUBSAMPLE_DISTANCE_AMD 0x883F +#define GL_SUBTRACT_ARB 0x84E7 +#define GL_SUB_ATI 0x8965 +#define GL_SUCCESS_NV 0x902F +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7 +#define GL_SURFACE_MAPPED_NV 0x8700 +#define GL_SURFACE_REGISTERED_NV 0x86FD +#define GL_SURFACE_STATE_NV 0x86EB +#define GL_SWIZZLE_STQ_ATI 0x8977 +#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 +#define GL_SWIZZLE_STRQ_ATI 0x897A +#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B +#define GL_SWIZZLE_STR_ATI 0x8976 +#define GL_SWIZZLE_STR_DR_ATI 0x8978 +#define GL_SYNC_CL_EVENT_ARB 0x8240 +#define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_X11_FENCE_EXT 0x90E1 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 +#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 +#define GL_T2F_IUI_V2F_EXT 0x81B1 +#define GL_T2F_IUI_V3F_EXT 0x81B2 +#define GL_TABLE_TOO_LARGE_EXT 0x8031 +#define GL_TANGENT_ARRAY_EXT 0x8439 +#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 +#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F +#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E +#define GL_TASK_SHADER_BIT_NV 0x00000080 +#define GL_TASK_SHADER_NV 0x955A +#define GL_TASK_SUBROUTINE_NV 0x957D +#define GL_TASK_SUBROUTINE_UNIFORM_NV 0x957F +#define GL_TASK_WORK_GROUP_SIZE_NV 0x953F +#define GL_TERMINATE_SEQUENCE_COMMAND_NV 0x0000 +#define GL_TESSELLATION_FACTOR_AMD 0x9005 +#define GL_TESSELLATION_MODE_AMD 0x9004 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_CONTROL_PROGRAM_NV 0x891E +#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_CONTROL_SHADER_PATCHES 0x82F1 +#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1 +#define GL_TESS_CONTROL_SUBROUTINE 0x92E9 +#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF +#define GL_TESS_CONTROL_TEXTURE 0x829C +#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F +#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2 +#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2 +#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA +#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 +#define GL_TESS_EVALUATION_TEXTURE 0x829D +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TEXCOORD1_BIT_PGI 0x10000000 +#define GL_TEXCOORD2_BIT_PGI 0x20000000 +#define GL_TEXCOORD3_BIT_PGI 0x40000000 +#define GL_TEXCOORD4_BIT_PGI 0x80000000 +#define GL_TEXTURE 0x1702 +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE0_ARB 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE10_ARB 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE11_ARB 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE12_ARB 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE13_ARB 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE14_ARB 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE15_ARB 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE16_ARB 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE17_ARB 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE18_ARB 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE19_ARB 0x84D3 +#define GL_TEXTURE1_ARB 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE20_ARB 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE21_ARB 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE22_ARB 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE23_ARB 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE24_ARB 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE25_ARB 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE26_ARB 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE27_ARB 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE28_ARB 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE29_ARB 0x84DD +#define GL_TEXTURE2_ARB 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE30_ARB 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_TEXTURE31_ARB 0x84DF +#define GL_TEXTURE3_ARB 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE4_ARB 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE5_ARB 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE6_ARB 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE7_ARB 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE8_ARB 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE9_ARB 0x84C9 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 +#define GL_TEXTURE_1D_BINDING_EXT 0x8068 +#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D +#define GL_TEXTURE_1D_STACK_MESAX 0x8759 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A +#define GL_TEXTURE_2D_BINDING_EXT 0x8069 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E +#define GL_TEXTURE_2D_STACK_MESAX 0x875A +#define GL_TEXTURE_3D 0x806F +#define GL_TEXTURE_3D_BINDING_EXT 0x806A +#define GL_TEXTURE_3D_EXT 0x806F +#define GL_TEXTURE_4DSIZE_SGIS 0x8136 +#define GL_TEXTURE_4D_BINDING_SGIS 0x814F +#define GL_TEXTURE_4D_SGIS 0x8134 +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 +#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A +#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 +#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_TEXTURE_BORDER_VALUES_NV 0x871A +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_TEXTURE_BUFFER_ARB 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E +#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E +#define GL_TEXTURE_BUFFER_OFFSET 0x919D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F +#define GL_TEXTURE_BUFFER_SIZE 0x919E +#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 +#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 +#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 +#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 +#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 +#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 +#define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 +#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC +#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF +#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C +#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B +#define GL_TEXTURE_COMPARE_SGIX 0x819A +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 +#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 +#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 +#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF +#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 +#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A +#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B +#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 +#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F +#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 +#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 +#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 +#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 +#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 +#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A +#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 +#define GL_TEXTURE_COORD_NV 0x8C79 +#define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 +#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 +#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_DEPTH_EXT 0x8071 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 +#define GL_TEXTURE_DS_SIZE_NV 0x871D +#define GL_TEXTURE_DT_SIZE_NV 0x871E +#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE +#define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 +#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 +#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC +#define GL_TEXTURE_GATHER 0x82A2 +#define GL_TEXTURE_GATHER_SHADOW 0x82A3 +#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_HI_SIZE_NV 0x871B +#define GL_TEXTURE_IMAGE_FORMAT 0x828F +#define GL_TEXTURE_IMAGE_TYPE 0x8290 +#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED +#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 +#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C +#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 +#define GL_TEXTURE_LIGHT_EXT 0x8350 +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 +#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E +#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F +#define GL_TEXTURE_LO_SIZE_NV 0x871C +#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 +#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MAG_SIZE_NV 0x871F +#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 +#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 +#define GL_TEXTURE_MAX_ANISOTROPY 0x84FE +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B +#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 +#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_MAX_LOD_SGIS 0x813B +#define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MIN_LOD_SGIS 0x813A +#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E +#define GL_TEXTURE_NORMAL_EXT 0x85AF +#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 +#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 +#define GL_TEXTURE_PRIORITY_EXT 0x8066 +#define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 +#define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_RECTANGLE_NV 0x84F5 +#define GL_TEXTURE_REDUCTION_MODE_ARB 0x9366 +#define GL_TEXTURE_REDUCTION_MODE_EXT 0x9366 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_RED_SIZE_EXT 0x805C +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 +#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 +#define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 +#define GL_TEXTURE_RESIDENT_EXT 0x8067 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_SHADER_NV 0x86DE +#define GL_TEXTURE_SHADOW 0x82A1 +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F +#define GL_TEXTURE_SPARSE_ARB 0x91A6 +#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 +#define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC +#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 +#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 +#define GL_TEXTURE_TARGET 0x1006 +#define GL_TEXTURE_TILING_EXT 0x9580 +#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 +#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F +#define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 +#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 +#define GL_TEXTURE_VIEW 0x82B5 +#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD +#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB +#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE +#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_TEXTURE_WRAP_R_EXT 0x8072 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 +#define GL_TILE_RASTER_ORDER_FIXED_MESA 0x8BB8 +#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9 +#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA +#define GL_TILING_TYPES_EXT 0x9583 +#define GL_TIMELINE_SEMAPHORE_VALUE_NV 0x9595 +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_TIMESTAMP 0x8E28 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C +#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D +#define GL_TRACK_MATRIX_NV 0x8648 +#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 +#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F +#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F +#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_TRANSFORM_FEEDBACK_NV 0x8E22 +#define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC +#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC +#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 +#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED +#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED +#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 +#define GL_TRANSFORM_HINT_APPLE 0x85B1 +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 +#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 +#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 +#define GL_TRANSPOSE_NV 0x862C +#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E +#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLES_ADJACENCY_ARB 0x000C +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_FAN 0x0006 +#define GL_TRIANGLE_LIST_SUN 0x81D7 +#define GL_TRIANGLE_MESH_SUN 0x8615 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_TRUE 1 +#define GL_TYPE 0x92FA +#define GL_UNCORRELATED_NV 0x9282 +#define GL_UNDEFINED_APPLE 0x8A1C +#define GL_UNDEFINED_VERTEX 0x8260 +#define GL_UNIFORM 0x92E1 +#define GL_UNIFORM_ADDRESS_COMMAND_NV 0x000A +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA +#define GL_UNIFORM_BARRIER_BIT 0x00000004 +#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 +#define GL_UNIFORM_BLOCK 0x92E2 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_ADDRESS_NV 0x936F +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF +#define GL_UNIFORM_BUFFER_EXT 0x8DEE +#define GL_UNIFORM_BUFFER_LENGTH_NV 0x9370 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_UNIFIED_NV 0x936E +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNKNOWN_CONTEXT_RESET 0x8255 +#define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 +#define GL_UNPACK_CMYK_HINT_EXT 0x800F +#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 +#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 +#define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A +#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 +#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 +#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_RESAMPLE_OML 0x8985 +#define GL_UNPACK_RESAMPLE_SGIX 0x842F +#define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 +#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNSIGNALED 0x9118 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 +#define GL_UNSIGNED_IDENTITY_NV 0x8536 +#define GL_UNSIGNED_INT 0x1405 +#define GL_UNSIGNED_INT16_NV 0x8FF0 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_UNSIGNED_INT64_ARB 0x140F +#define GL_UNSIGNED_INT64_NV 0x140F +#define GL_UNSIGNED_INT64_VEC2_ARB 0x8FF5 +#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 +#define GL_UNSIGNED_INT64_VEC3_ARB 0x8FF6 +#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 +#define GL_UNSIGNED_INT64_VEC4_ARB 0x8FF7 +#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 +#define GL_UNSIGNED_INT8_NV 0x8FEC +#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED +#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE +#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_UNSIGNED_INT_24_8_EXT 0x84FA +#define GL_UNSIGNED_INT_24_8_NV 0x84FA +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB +#define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB +#define GL_UNSIGNED_INT_IMAGE_1D 0x9062 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 +#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 +#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 +#define GL_UNSIGNED_INT_IMAGE_2D 0x9063 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 +#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 +#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C +#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B +#define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 +#define GL_UNSIGNED_INT_IMAGE_3D 0x9064 +#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 +#define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 +#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 +#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F +#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 +#define GL_UNSIGNED_INVERT_NV 0x8537 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB +#define GL_UPLOAD_GPU_MASK_NVX 0x954A +#define GL_UPPER_LEFT 0x8CA2 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_UTF16_NV 0x909B +#define GL_UTF8_NV 0x909A +#define GL_UUID_SIZE_EXT 16 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_VARIABLE_A_NV 0x8523 +#define GL_VARIABLE_B_NV 0x8524 +#define GL_VARIABLE_C_NV 0x8525 +#define GL_VARIABLE_D_NV 0x8526 +#define GL_VARIABLE_E_NV 0x8527 +#define GL_VARIABLE_F_NV 0x8528 +#define GL_VARIABLE_G_NV 0x8529 +#define GL_VARIANT_ARRAY_EXT 0x87E8 +#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 +#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 +#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 +#define GL_VARIANT_DATATYPE_EXT 0x87E5 +#define GL_VARIANT_EXT 0x87C1 +#define GL_VARIANT_VALUE_EXT 0x87E4 +#define GL_VBO_FREE_MEMORY_ATI 0x87FB +#define GL_VECTOR_EXT 0x87BF +#define GL_VENDOR 0x1F00 +#define GL_VERSION 0x1F02 +#define GL_VERTEX23_BIT_PGI 0x00000004 +#define GL_VERTEX4_BIT_PGI 0x00000008 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 +#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 +#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D +#define GL_VERTEX_ARRAY_EXT 0x8074 +#define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B +#define GL_VERTEX_ARRAY_LIST_IBM 103070 +#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 +#define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 +#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E +#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D +#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E +#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E +#define GL_VERTEX_ARRAY_RANGE_NV 0x851D +#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 +#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 +#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F +#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 +#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A +#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F +#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C +#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B +#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 +#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A +#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B +#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C +#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D +#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E +#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F +#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 +#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 +#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 +#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 +#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 +#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 +#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 +#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 +#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 +#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 +#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD +#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A +#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E +#define GL_VERTEX_ATTRIB_BINDING 0x82D4 +#define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 +#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 +#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 +#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 +#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 +#define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 +#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 +#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 +#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 +#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 +#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 +#define GL_VERTEX_BINDING_BUFFER 0x8F4F +#define GL_VERTEX_BINDING_DIVISOR 0x82D6 +#define GL_VERTEX_BINDING_OFFSET 0x82D7 +#define GL_VERTEX_BINDING_STRIDE 0x82D8 +#define GL_VERTEX_BLEND_ARB 0x86A7 +#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B +#define GL_VERTEX_DATA_HINT_PGI 0x1A22A +#define GL_VERTEX_ELEMENT_SWIZZLE_AMD 0x91A4 +#define GL_VERTEX_ID_NV 0x8C7B +#define GL_VERTEX_ID_SWIZZLE_AMD 0x91A5 +#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF +#define GL_VERTEX_PRECLIP_SGIX 0x83EE +#define GL_VERTEX_PROGRAM_ARB 0x8620 +#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A +#define GL_VERTEX_PROGRAM_NV 0x8620 +#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 +#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 +#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 +#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_VERTEX_SHADER_ARB 0x8B31 +#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_VERTEX_SHADER_EXT 0x8780 +#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF +#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 +#define GL_VERTEX_SHADER_INVOCATIONS 0x82F0 +#define GL_VERTEX_SHADER_INVOCATIONS_ARB 0x82F0 +#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 +#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 +#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 +#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 +#define GL_VERTEX_SOURCE_ATI 0x8774 +#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 +#define GL_VERTEX_STREAM0_ATI 0x876C +#define GL_VERTEX_STREAM1_ATI 0x876D +#define GL_VERTEX_STREAM2_ATI 0x876E +#define GL_VERTEX_STREAM3_ATI 0x876F +#define GL_VERTEX_STREAM4_ATI 0x8770 +#define GL_VERTEX_STREAM5_ATI 0x8771 +#define GL_VERTEX_STREAM6_ATI 0x8772 +#define GL_VERTEX_STREAM7_ATI 0x8773 +#define GL_VERTEX_SUBROUTINE 0x92E8 +#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE +#define GL_VERTEX_TEXTURE 0x829B +#define GL_VERTEX_WEIGHTING_EXT 0x8509 +#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C +#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 +#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D +#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F +#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_VERTICES_SUBMITTED 0x82EE +#define GL_VERTICES_SUBMITTED_ARB 0x82EE +#define GL_VIBRANCE_BIAS_NV 0x8719 +#define GL_VIBRANCE_SCALE_NV 0x8713 +#define GL_VIDEO_BUFFER_BINDING_NV 0x9021 +#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D +#define GL_VIDEO_BUFFER_NV 0x9020 +#define GL_VIDEO_BUFFER_PITCH_NV 0x9028 +#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B +#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A +#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 +#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 +#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C +#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 +#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 +#define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A +#define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B +#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C +#define GL_VIEWPORT 0x0BA2 +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_VIEWPORT_COMMAND_NV 0x0010 +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_VIEWPORT_POSITION_W_SCALE_NV 0x937C +#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D +#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353 +#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352 +#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354 +#define GL_VIEWPORT_SWIZZLE_W_NV 0x935B +#define GL_VIEWPORT_SWIZZLE_X_NV 0x9358 +#define GL_VIEWPORT_SWIZZLE_Y_NV 0x9359 +#define GL_VIEWPORT_SWIZZLE_Z_NV 0x935A +#define GL_VIEW_CLASS_128_BITS 0x82C4 +#define GL_VIEW_CLASS_16_BITS 0x82CA +#define GL_VIEW_CLASS_24_BITS 0x82C9 +#define GL_VIEW_CLASS_32_BITS 0x82C8 +#define GL_VIEW_CLASS_48_BITS 0x82C7 +#define GL_VIEW_CLASS_64_BITS 0x82C6 +#define GL_VIEW_CLASS_8_BITS 0x82CB +#define GL_VIEW_CLASS_96_BITS 0x82C5 +#define GL_VIEW_CLASS_ASTC_10x10_RGBA 0x9393 +#define GL_VIEW_CLASS_ASTC_10x5_RGBA 0x9390 +#define GL_VIEW_CLASS_ASTC_10x6_RGBA 0x9391 +#define GL_VIEW_CLASS_ASTC_10x8_RGBA 0x9392 +#define GL_VIEW_CLASS_ASTC_12x10_RGBA 0x9394 +#define GL_VIEW_CLASS_ASTC_12x12_RGBA 0x9395 +#define GL_VIEW_CLASS_ASTC_4x4_RGBA 0x9388 +#define GL_VIEW_CLASS_ASTC_5x4_RGBA 0x9389 +#define GL_VIEW_CLASS_ASTC_5x5_RGBA 0x938A +#define GL_VIEW_CLASS_ASTC_6x5_RGBA 0x938B +#define GL_VIEW_CLASS_ASTC_6x6_RGBA 0x938C +#define GL_VIEW_CLASS_ASTC_8x5_RGBA 0x938D +#define GL_VIEW_CLASS_ASTC_8x6_RGBA 0x938E +#define GL_VIEW_CLASS_ASTC_8x8_RGBA 0x938F +#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 +#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 +#define GL_VIEW_CLASS_EAC_R11 0x9383 +#define GL_VIEW_CLASS_EAC_RG11 0x9384 +#define GL_VIEW_CLASS_ETC2_EAC_RGBA 0x9387 +#define GL_VIEW_CLASS_ETC2_RGB 0x9385 +#define GL_VIEW_CLASS_ETC2_RGBA 0x9386 +#define GL_VIEW_CLASS_RGTC1_RED 0x82D0 +#define GL_VIEW_CLASS_RGTC2_RG 0x82D1 +#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC +#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD +#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE +#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF +#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB 0x91A7 +#define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_X_ARB 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Y_ARB 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 +#define GL_VIRTUAL_PAGE_SIZE_Z_ARB 0x9197 +#define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_VOLATILE_APPLE 0x8A1A +#define GL_WAIT_FAILED 0x911D +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WEIGHTED_AVERAGE_ARB 0x9367 +#define GL_WEIGHTED_AVERAGE_EXT 0x9367 +#define GL_WEIGHT_ARRAY_ARB 0x86AD +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E +#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC +#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB +#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA +#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 +#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 +#define GL_WIDE_LINE_HINT_PGI 0x1A222 +#define GL_WINDOW_RECTANGLE_EXT 0x8F12 +#define GL_WINDOW_RECTANGLE_MODE_EXT 0x8F13 +#define GL_WRAP_BORDER_SUN 0x81D4 +#define GL_WRITE_DISCARD_NV 0x88BE +#define GL_WRITE_ONLY 0x88B9 +#define GL_WRITE_ONLY_ARB 0x88B9 +#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A +#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 +#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C +#define GL_W_EXT 0x87D8 +#define GL_XOR 0x1506 +#define GL_XOR_NV 0x1506 +#define GL_X_EXT 0x87D5 +#define GL_YCBAYCR8A_4224_NV 0x9032 +#define GL_YCBCR_422_APPLE 0x85B9 +#define GL_YCBCR_MESA 0x8757 +#define GL_YCBYCR8_422_NV 0x9031 +#define GL_YCRCBA_SGIX 0x8319 +#define GL_YCRCB_422_SGIX 0x81BB +#define GL_YCRCB_444_SGIX 0x81BC +#define GL_YCRCB_SGIX 0x8318 +#define GL_Y_EXT 0x87D6 +#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 +#define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 +#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 +#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 +#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 +#define GL_ZERO 0 +#define GL_ZERO_EXT 0x87DD +#define GL_ZERO_TO_ONE 0x935F +#define GL_Z_EXT 0x87D7 + +#include "khrplatform.h" +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef int GLint; +typedef unsigned int GLuint; +typedef khronos_int32_t GLclampx; +typedef int GLsizei; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef khronos_uint16_t GLhalf; +typedef khronos_uint16_t GLhalfARB; +typedef khronos_int32_t GLfixed; +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptr; +#else +typedef khronos_intptr_t GLintptr; +#endif +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_intptr_t GLintptrARB; +#else +typedef khronos_intptr_t GLintptrARB; +#endif +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptr; +#else +typedef khronos_ssize_t GLsizeiptr; +#endif +#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ + (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ > 1060) +typedef khronos_ssize_t GLsizeiptrARB; +#else +typedef khronos_ssize_t GLsizeiptrARB; +#endif +typedef khronos_int64_t GLint64; +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64; +typedef khronos_uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void(GLAD_API_PTR *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, + GLsizei length, const GLchar *message, + const void *userParam); +typedef void(GLAD_API_PTR *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, + GLsizei length, const GLchar *message, + const void *userParam); +typedef void(GLAD_API_PTR *GLDEBUGPROCKHR)(GLenum source, GLenum type, GLuint id, GLenum severity, + GLsizei length, const GLchar *message, + const void *userParam); +typedef void(GLAD_API_PTR *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, + GLsizei length, const GLchar *message, void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +typedef void(GLAD_API_PTR *GLVULKANPROCNV)(void); + +#define GL_VERSION_1_0 1 +#define GL_VERSION_1_1 1 +#define GL_VERSION_1_2 1 +#define GL_VERSION_1_3 1 +#define GL_VERSION_1_4 1 +#define GL_VERSION_1_5 1 +#define GL_VERSION_2_0 1 +#define GL_VERSION_2_1 1 +#define GL_VERSION_3_0 1 +#define GL_VERSION_3_1 1 +#define GL_VERSION_3_2 1 +#define GL_VERSION_3_3 1 +#define GL_VERSION_4_0 1 +#define GL_VERSION_4_1 1 +#define GL_VERSION_4_2 1 +#define GL_VERSION_4_3 1 +#define GL_VERSION_4_4 1 +#define GL_VERSION_4_5 1 +#define GL_VERSION_4_6 1 +#define GL_3DFX_multisample 1 +#define GL_3DFX_tbuffer 1 +#define GL_3DFX_texture_compression_FXT1 1 +#define GL_AMD_blend_minmax_factor 1 +#define GL_AMD_conservative_depth 1 +#define GL_AMD_debug_output 1 +#define GL_AMD_depth_clamp_separate 1 +#define GL_AMD_draw_buffers_blend 1 +#define GL_AMD_framebuffer_multisample_advanced 1 +#define GL_AMD_framebuffer_sample_positions 1 +#define GL_AMD_gcn_shader 1 +#define GL_AMD_gpu_shader_half_float 1 +#define GL_AMD_gpu_shader_int16 1 +#define GL_AMD_gpu_shader_int64 1 +#define GL_AMD_interleaved_elements 1 +#define GL_AMD_multi_draw_indirect 1 +#define GL_AMD_name_gen_delete 1 +#define GL_AMD_occlusion_query_event 1 +#define GL_AMD_performance_monitor 1 +#define GL_AMD_pinned_memory 1 +#define GL_AMD_query_buffer_object 1 +#define GL_AMD_sample_positions 1 +#define GL_AMD_seamless_cubemap_per_texture 1 +#define GL_AMD_shader_atomic_counter_ops 1 +#define GL_AMD_shader_ballot 1 +#define GL_AMD_shader_explicit_vertex_parameter 1 +#define GL_AMD_shader_gpu_shader_half_float_fetch 1 +#define GL_AMD_shader_image_load_store_lod 1 +#define GL_AMD_shader_stencil_export 1 +#define GL_AMD_shader_trinary_minmax 1 +#define GL_AMD_sparse_texture 1 +#define GL_AMD_stencil_operation_extended 1 +#define GL_AMD_texture_gather_bias_lod 1 +#define GL_AMD_texture_texture4 1 +#define GL_AMD_transform_feedback3_lines_triangles 1 +#define GL_AMD_transform_feedback4 1 +#define GL_AMD_vertex_shader_layer 1 +#define GL_AMD_vertex_shader_tessellator 1 +#define GL_AMD_vertex_shader_viewport_index 1 +#define GL_APPLE_aux_depth_stencil 1 +#define GL_APPLE_client_storage 1 +#define GL_APPLE_element_array 1 +#define GL_APPLE_fence 1 +#define GL_APPLE_float_pixels 1 +#define GL_APPLE_flush_buffer_range 1 +#define GL_APPLE_object_purgeable 1 +#define GL_APPLE_rgb_422 1 +#define GL_APPLE_row_bytes 1 +#define GL_APPLE_specular_vector 1 +#define GL_APPLE_texture_range 1 +#define GL_APPLE_transform_hint 1 +#define GL_APPLE_vertex_array_object 1 +#define GL_APPLE_vertex_array_range 1 +#define GL_APPLE_vertex_program_evaluators 1 +#define GL_APPLE_ycbcr_422 1 +#define GL_ARB_ES2_compatibility 1 +#define GL_ARB_ES3_1_compatibility 1 +#define GL_ARB_ES3_2_compatibility 1 +#define GL_ARB_ES3_compatibility 1 +#define GL_ARB_arrays_of_arrays 1 +#define GL_ARB_base_instance 1 +#define GL_ARB_bindless_texture 1 +#define GL_ARB_blend_func_extended 1 +#define GL_ARB_buffer_storage 1 +#define GL_ARB_cl_event 1 +#define GL_ARB_clear_buffer_object 1 +#define GL_ARB_clear_texture 1 +#define GL_ARB_clip_control 1 +#define GL_ARB_color_buffer_float 1 +#define GL_ARB_compatibility 1 +#define GL_ARB_compressed_texture_pixel_storage 1 +#define GL_ARB_compute_shader 1 +#define GL_ARB_compute_variable_group_size 1 +#define GL_ARB_conditional_render_inverted 1 +#define GL_ARB_conservative_depth 1 +#define GL_ARB_copy_buffer 1 +#define GL_ARB_copy_image 1 +#define GL_ARB_cull_distance 1 +#define GL_ARB_debug_output 1 +#define GL_ARB_depth_buffer_float 1 +#define GL_ARB_depth_clamp 1 +#define GL_ARB_depth_texture 1 +#define GL_ARB_derivative_control 1 +#define GL_ARB_direct_state_access 1 +#define GL_ARB_draw_buffers 1 +#define GL_ARB_draw_buffers_blend 1 +#define GL_ARB_draw_elements_base_vertex 1 +#define GL_ARB_draw_indirect 1 +#define GL_ARB_draw_instanced 1 +#define GL_ARB_enhanced_layouts 1 +#define GL_ARB_explicit_attrib_location 1 +#define GL_ARB_explicit_uniform_location 1 +#define GL_ARB_fragment_coord_conventions 1 +#define GL_ARB_fragment_layer_viewport 1 +#define GL_ARB_fragment_program 1 +#define GL_ARB_fragment_program_shadow 1 +#define GL_ARB_fragment_shader 1 +#define GL_ARB_fragment_shader_interlock 1 +#define GL_ARB_framebuffer_no_attachments 1 +#define GL_ARB_framebuffer_object 1 +#define GL_ARB_framebuffer_sRGB 1 +#define GL_ARB_geometry_shader4 1 +#define GL_ARB_get_program_binary 1 +#define GL_ARB_get_texture_sub_image 1 +#define GL_ARB_gl_spirv 1 +#define GL_ARB_gpu_shader5 1 +#define GL_ARB_gpu_shader_fp64 1 +#define GL_ARB_gpu_shader_int64 1 +#define GL_ARB_half_float_pixel 1 +#define GL_ARB_half_float_vertex 1 +#define GL_ARB_imaging 1 +#define GL_ARB_indirect_parameters 1 +#define GL_ARB_instanced_arrays 1 +#define GL_ARB_internalformat_query 1 +#define GL_ARB_internalformat_query2 1 +#define GL_ARB_invalidate_subdata 1 +#define GL_ARB_map_buffer_alignment 1 +#define GL_ARB_map_buffer_range 1 +#define GL_ARB_matrix_palette 1 +#define GL_ARB_multi_bind 1 +#define GL_ARB_multi_draw_indirect 1 +#define GL_ARB_multisample 1 +#define GL_ARB_multitexture 1 +#define GL_ARB_occlusion_query 1 +#define GL_ARB_occlusion_query2 1 +#define GL_ARB_parallel_shader_compile 1 +#define GL_ARB_pipeline_statistics_query 1 +#define GL_ARB_pixel_buffer_object 1 +#define GL_ARB_point_parameters 1 +#define GL_ARB_point_sprite 1 +#define GL_ARB_polygon_offset_clamp 1 +#define GL_ARB_post_depth_coverage 1 +#define GL_ARB_program_interface_query 1 +#define GL_ARB_provoking_vertex 1 +#define GL_ARB_query_buffer_object 1 +#define GL_ARB_robust_buffer_access_behavior 1 +#define GL_ARB_robustness 1 +#define GL_ARB_robustness_isolation 1 +#define GL_ARB_sample_locations 1 +#define GL_ARB_sample_shading 1 +#define GL_ARB_sampler_objects 1 +#define GL_ARB_seamless_cube_map 1 +#define GL_ARB_seamless_cubemap_per_texture 1 +#define GL_ARB_separate_shader_objects 1 +#define GL_ARB_shader_atomic_counter_ops 1 +#define GL_ARB_shader_atomic_counters 1 +#define GL_ARB_shader_ballot 1 +#define GL_ARB_shader_bit_encoding 1 +#define GL_ARB_shader_clock 1 +#define GL_ARB_shader_draw_parameters 1 +#define GL_ARB_shader_group_vote 1 +#define GL_ARB_shader_image_load_store 1 +#define GL_ARB_shader_image_size 1 +#define GL_ARB_shader_objects 1 +#define GL_ARB_shader_precision 1 +#define GL_ARB_shader_stencil_export 1 +#define GL_ARB_shader_storage_buffer_object 1 +#define GL_ARB_shader_subroutine 1 +#define GL_ARB_shader_texture_image_samples 1 +#define GL_ARB_shader_texture_lod 1 +#define GL_ARB_shader_viewport_layer_array 1 +#define GL_ARB_shading_language_100 1 +#define GL_ARB_shading_language_420pack 1 +#define GL_ARB_shading_language_include 1 +#define GL_ARB_shading_language_packing 1 +#define GL_ARB_shadow 1 +#define GL_ARB_shadow_ambient 1 +#define GL_ARB_sparse_buffer 1 +#define GL_ARB_sparse_texture 1 +#define GL_ARB_sparse_texture2 1 +#define GL_ARB_sparse_texture_clamp 1 +#define GL_ARB_spirv_extensions 1 +#define GL_ARB_stencil_texturing 1 +#define GL_ARB_sync 1 +#define GL_ARB_tessellation_shader 1 +#define GL_ARB_texture_barrier 1 +#define GL_ARB_texture_border_clamp 1 +#define GL_ARB_texture_buffer_object 1 +#define GL_ARB_texture_buffer_object_rgb32 1 +#define GL_ARB_texture_buffer_range 1 +#define GL_ARB_texture_compression 1 +#define GL_ARB_texture_compression_bptc 1 +#define GL_ARB_texture_compression_rgtc 1 +#define GL_ARB_texture_cube_map 1 +#define GL_ARB_texture_cube_map_array 1 +#define GL_ARB_texture_env_add 1 +#define GL_ARB_texture_env_combine 1 +#define GL_ARB_texture_env_crossbar 1 +#define GL_ARB_texture_env_dot3 1 +#define GL_ARB_texture_filter_anisotropic 1 +#define GL_ARB_texture_filter_minmax 1 +#define GL_ARB_texture_float 1 +#define GL_ARB_texture_gather 1 +#define GL_ARB_texture_mirror_clamp_to_edge 1 +#define GL_ARB_texture_mirrored_repeat 1 +#define GL_ARB_texture_multisample 1 +#define GL_ARB_texture_non_power_of_two 1 +#define GL_ARB_texture_query_levels 1 +#define GL_ARB_texture_query_lod 1 +#define GL_ARB_texture_rectangle 1 +#define GL_ARB_texture_rg 1 +#define GL_ARB_texture_rgb10_a2ui 1 +#define GL_ARB_texture_stencil8 1 +#define GL_ARB_texture_storage 1 +#define GL_ARB_texture_storage_multisample 1 +#define GL_ARB_texture_swizzle 1 +#define GL_ARB_texture_view 1 +#define GL_ARB_timer_query 1 +#define GL_ARB_transform_feedback2 1 +#define GL_ARB_transform_feedback3 1 +#define GL_ARB_transform_feedback_instanced 1 +#define GL_ARB_transform_feedback_overflow_query 1 +#define GL_ARB_transpose_matrix 1 +#define GL_ARB_uniform_buffer_object 1 +#define GL_ARB_vertex_array_bgra 1 +#define GL_ARB_vertex_array_object 1 +#define GL_ARB_vertex_attrib_64bit 1 +#define GL_ARB_vertex_attrib_binding 1 +#define GL_ARB_vertex_blend 1 +#define GL_ARB_vertex_buffer_object 1 +#define GL_ARB_vertex_program 1 +#define GL_ARB_vertex_shader 1 +#define GL_ARB_vertex_type_10f_11f_11f_rev 1 +#define GL_ARB_vertex_type_2_10_10_10_rev 1 +#define GL_ARB_viewport_array 1 +#define GL_ARB_window_pos 1 +#define GL_ATI_draw_buffers 1 +#define GL_ATI_element_array 1 +#define GL_ATI_envmap_bumpmap 1 +#define GL_ATI_fragment_shader 1 +#define GL_ATI_map_object_buffer 1 +#define GL_ATI_meminfo 1 +#define GL_ATI_pixel_format_float 1 +#define GL_ATI_pn_triangles 1 +#define GL_ATI_separate_stencil 1 +#define GL_ATI_text_fragment_shader 1 +#define GL_ATI_texture_env_combine3 1 +#define GL_ATI_texture_float 1 +#define GL_ATI_texture_mirror_once 1 +#define GL_ATI_vertex_array_object 1 +#define GL_ATI_vertex_attrib_array_object 1 +#define GL_ATI_vertex_streams 1 +#define GL_EXT_422_pixels 1 +#define GL_EXT_EGL_image_storage 1 +#define GL_EXT_EGL_sync 1 +#define GL_EXT_abgr 1 +#define GL_EXT_bgra 1 +#define GL_EXT_bindable_uniform 1 +#define GL_EXT_blend_color 1 +#define GL_EXT_blend_equation_separate 1 +#define GL_EXT_blend_func_separate 1 +#define GL_EXT_blend_logic_op 1 +#define GL_EXT_blend_minmax 1 +#define GL_EXT_blend_subtract 1 +#define GL_EXT_clip_volume_hint 1 +#define GL_EXT_cmyka 1 +#define GL_EXT_color_subtable 1 +#define GL_EXT_compiled_vertex_array 1 +#define GL_EXT_convolution 1 +#define GL_EXT_coordinate_frame 1 +#define GL_EXT_copy_texture 1 +#define GL_EXT_cull_vertex 1 +#define GL_EXT_debug_label 1 +#define GL_EXT_debug_marker 1 +#define GL_EXT_depth_bounds_test 1 +#define GL_EXT_direct_state_access 1 +#define GL_EXT_draw_buffers2 1 +#define GL_EXT_draw_instanced 1 +#define GL_EXT_draw_range_elements 1 +#define GL_EXT_external_buffer 1 +#define GL_EXT_fog_coord 1 +#define GL_EXT_framebuffer_blit 1 +#define GL_EXT_framebuffer_blit_layers 1 +#define GL_EXT_framebuffer_multisample 1 +#define GL_EXT_framebuffer_multisample_blit_scaled 1 +#define GL_EXT_framebuffer_object 1 +#define GL_EXT_framebuffer_sRGB 1 +#define GL_EXT_geometry_shader4 1 +#define GL_EXT_gpu_program_parameters 1 +#define GL_EXT_gpu_shader4 1 +#define GL_EXT_histogram 1 +#define GL_EXT_index_array_formats 1 +#define GL_EXT_index_func 1 +#define GL_EXT_index_material 1 +#define GL_EXT_index_texture 1 +#define GL_EXT_light_texture 1 +#define GL_EXT_memory_object 1 +#define GL_EXT_memory_object_fd 1 +#define GL_EXT_memory_object_win32 1 +#define GL_EXT_misc_attribute 1 +#define GL_EXT_multi_draw_arrays 1 +#define GL_EXT_multisample 1 +#define GL_EXT_multiview_tessellation_geometry_shader 1 +#define GL_EXT_multiview_texture_multisample 1 +#define GL_EXT_multiview_timer_query 1 +#define GL_EXT_packed_depth_stencil 1 +#define GL_EXT_packed_float 1 +#define GL_EXT_packed_pixels 1 +#define GL_EXT_paletted_texture 1 +#define GL_EXT_pixel_buffer_object 1 +#define GL_EXT_pixel_transform 1 +#define GL_EXT_pixel_transform_color_table 1 +#define GL_EXT_point_parameters 1 +#define GL_EXT_polygon_offset 1 +#define GL_EXT_polygon_offset_clamp 1 +#define GL_EXT_post_depth_coverage 1 +#define GL_EXT_provoking_vertex 1 +#define GL_EXT_raster_multisample 1 +#define GL_EXT_rescale_normal 1 +#define GL_EXT_secondary_color 1 +#define GL_EXT_semaphore 1 +#define GL_EXT_semaphore_fd 1 +#define GL_EXT_semaphore_win32 1 +#define GL_EXT_separate_shader_objects 1 +#define GL_EXT_separate_specular_color 1 +#define GL_EXT_shader_framebuffer_fetch 1 +#define GL_EXT_shader_framebuffer_fetch_non_coherent 1 +#define GL_EXT_shader_image_load_formatted 1 +#define GL_EXT_shader_image_load_store 1 +#define GL_EXT_shader_integer_mix 1 +#define GL_EXT_shader_samples_identical 1 +#define GL_EXT_shadow_funcs 1 +#define GL_EXT_shared_texture_palette 1 +#define GL_EXT_sparse_texture2 1 +#define GL_EXT_stencil_clear_tag 1 +#define GL_EXT_stencil_two_side 1 +#define GL_EXT_stencil_wrap 1 +#define GL_EXT_subtexture 1 +#define GL_EXT_texture 1 +#define GL_EXT_texture3D 1 +#define GL_EXT_texture_array 1 +#define GL_EXT_texture_buffer_object 1 +#define GL_EXT_texture_compression_latc 1 +#define GL_EXT_texture_compression_rgtc 1 +#define GL_EXT_texture_compression_s3tc 1 +#define GL_EXT_texture_cube_map 1 +#define GL_EXT_texture_env_add 1 +#define GL_EXT_texture_env_combine 1 +#define GL_EXT_texture_env_dot3 1 +#define GL_EXT_texture_filter_anisotropic 1 +#define GL_EXT_texture_filter_minmax 1 +#define GL_EXT_texture_integer 1 +#define GL_EXT_texture_lod_bias 1 +#define GL_EXT_texture_mirror_clamp 1 +#define GL_EXT_texture_object 1 +#define GL_EXT_texture_perturb_normal 1 +#define GL_EXT_texture_sRGB 1 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_EXT_texture_sRGB_decode 1 +#define GL_EXT_texture_shadow_lod 1 +#define GL_EXT_texture_shared_exponent 1 +#define GL_EXT_texture_snorm 1 +#define GL_EXT_texture_storage 1 +#define GL_EXT_texture_swizzle 1 +#define GL_EXT_timer_query 1 +#define GL_EXT_transform_feedback 1 +#define GL_EXT_vertex_array 1 +#define GL_EXT_vertex_array_bgra 1 +#define GL_EXT_vertex_attrib_64bit 1 +#define GL_EXT_vertex_shader 1 +#define GL_EXT_vertex_weighting 1 +#define GL_EXT_win32_keyed_mutex 1 +#define GL_EXT_window_rectangles 1 +#define GL_EXT_x11_sync_object 1 +#define GL_GREMEDY_frame_terminator 1 +#define GL_GREMEDY_string_marker 1 +#define GL_HP_convolution_border_modes 1 +#define GL_HP_image_transform 1 +#define GL_HP_occlusion_test 1 +#define GL_HP_texture_lighting 1 +#define GL_IBM_cull_vertex 1 +#define GL_IBM_multimode_draw_arrays 1 +#define GL_IBM_rasterpos_clip 1 +#define GL_IBM_static_data 1 +#define GL_IBM_texture_mirrored_repeat 1 +#define GL_IBM_vertex_array_lists 1 +#define GL_INGR_blend_func_separate 1 +#define GL_INGR_color_clamp 1 +#define GL_INGR_interlace_read 1 +#define GL_INTEL_blackhole_render 1 +#define GL_INTEL_conservative_rasterization 1 +#define GL_INTEL_fragment_shader_ordering 1 +#define GL_INTEL_framebuffer_CMAA 1 +#define GL_INTEL_map_texture 1 +#define GL_INTEL_parallel_arrays 1 +#define GL_INTEL_performance_query 1 +#define GL_KHR_blend_equation_advanced 1 +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_KHR_context_flush_control 1 +#define GL_KHR_debug 1 +#define GL_KHR_no_error 1 +#define GL_KHR_parallel_shader_compile 1 +#define GL_KHR_robust_buffer_access_behavior 1 +#define GL_KHR_robustness 1 +#define GL_KHR_shader_subgroup 1 +#define GL_KHR_texture_compression_astc_hdr 1 +#define GL_KHR_texture_compression_astc_ldr 1 +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#define GL_MESAX_texture_stack 1 +#define GL_MESA_framebuffer_flip_x 1 +#define GL_MESA_framebuffer_flip_y 1 +#define GL_MESA_framebuffer_swap_xy 1 +#define GL_MESA_pack_invert 1 +#define GL_MESA_program_binary_formats 1 +#define GL_MESA_resize_buffers 1 +#define GL_MESA_shader_integer_functions 1 +#define GL_MESA_tile_raster_order 1 +#define GL_MESA_window_pos 1 +#define GL_MESA_ycbcr_texture 1 +#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1 +#define GL_NVX_conditional_render 1 +#define GL_NVX_gpu_memory_info 1 +#define GL_NVX_gpu_multicast2 1 +#define GL_NVX_linked_gpu_multicast 1 +#define GL_NVX_progress_fence 1 +#define GL_NV_alpha_to_coverage_dither_control 1 +#define GL_NV_bindless_multi_draw_indirect 1 +#define GL_NV_bindless_multi_draw_indirect_count 1 +#define GL_NV_bindless_texture 1 +#define GL_NV_blend_equation_advanced 1 +#define GL_NV_blend_equation_advanced_coherent 1 +#define GL_NV_blend_minmax_factor 1 +#define GL_NV_blend_square 1 +#define GL_NV_clip_space_w_scaling 1 +#define GL_NV_command_list 1 +#define GL_NV_compute_program5 1 +#define GL_NV_compute_shader_derivatives 1 +#define GL_NV_conditional_render 1 +#define GL_NV_conservative_raster 1 +#define GL_NV_conservative_raster_dilate 1 +#define GL_NV_conservative_raster_pre_snap 1 +#define GL_NV_conservative_raster_pre_snap_triangles 1 +#define GL_NV_conservative_raster_underestimation 1 +#define GL_NV_copy_depth_to_color 1 +#define GL_NV_copy_image 1 +#define GL_NV_deep_texture3D 1 +#define GL_NV_depth_buffer_float 1 +#define GL_NV_depth_clamp 1 +#define GL_NV_draw_texture 1 +#define GL_NV_draw_vulkan_image 1 +#define GL_NV_evaluators 1 +#define GL_NV_explicit_multisample 1 +#define GL_NV_fence 1 +#define GL_NV_fill_rectangle 1 +#define GL_NV_float_buffer 1 +#define GL_NV_fog_distance 1 +#define GL_NV_fragment_coverage_to_color 1 +#define GL_NV_fragment_program 1 +#define GL_NV_fragment_program2 1 +#define GL_NV_fragment_program4 1 +#define GL_NV_fragment_program_option 1 +#define GL_NV_fragment_shader_barycentric 1 +#define GL_NV_fragment_shader_interlock 1 +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_NV_framebuffer_multisample_coverage 1 +#define GL_NV_geometry_program4 1 +#define GL_NV_geometry_shader4 1 +#define GL_NV_geometry_shader_passthrough 1 +#define GL_NV_gpu_multicast 1 +#define GL_NV_gpu_program4 1 +#define GL_NV_gpu_program5 1 +#define GL_NV_gpu_program5_mem_extended 1 +#define GL_NV_gpu_shader5 1 +#define GL_NV_half_float 1 +#define GL_NV_internalformat_sample_query 1 +#define GL_NV_light_max_exponent 1 +#define GL_NV_memory_attachment 1 +#define GL_NV_memory_object_sparse 1 +#define GL_NV_mesh_shader 1 +#define GL_NV_multisample_coverage 1 +#define GL_NV_multisample_filter_hint 1 +#define GL_NV_occlusion_query 1 +#define GL_NV_packed_depth_stencil 1 +#define GL_NV_parameter_buffer_object 1 +#define GL_NV_parameter_buffer_object2 1 +#define GL_NV_path_rendering 1 +#define GL_NV_path_rendering_shared_edge 1 +#define GL_NV_pixel_data_range 1 +#define GL_NV_point_sprite 1 +#define GL_NV_present_video 1 +#define GL_NV_primitive_restart 1 +#define GL_NV_primitive_shading_rate 1 +#define GL_NV_query_resource 1 +#define GL_NV_query_resource_tag 1 +#define GL_NV_register_combiners 1 +#define GL_NV_register_combiners2 1 +#define GL_NV_representative_fragment_test 1 +#define GL_NV_robustness_video_memory_purge 1 +#define GL_NV_sample_locations 1 +#define GL_NV_sample_mask_override_coverage 1 +#define GL_NV_scissor_exclusive 1 +#define GL_NV_shader_atomic_counters 1 +#define GL_NV_shader_atomic_float 1 +#define GL_NV_shader_atomic_float64 1 +#define GL_NV_shader_atomic_fp16_vector 1 +#define GL_NV_shader_atomic_int64 1 +#define GL_NV_shader_buffer_load 1 +#define GL_NV_shader_buffer_store 1 +#define GL_NV_shader_storage_buffer_object 1 +#define GL_NV_shader_subgroup_partitioned 1 +#define GL_NV_shader_texture_footprint 1 +#define GL_NV_shader_thread_group 1 +#define GL_NV_shader_thread_shuffle 1 +#define GL_NV_shading_rate_image 1 +#define GL_NV_stereo_view_rendering 1 +#define GL_NV_tessellation_program5 1 +#define GL_NV_texgen_emboss 1 +#define GL_NV_texgen_reflection 1 +#define GL_NV_texture_barrier 1 +#define GL_NV_texture_compression_vtc 1 +#define GL_NV_texture_env_combine4 1 +#define GL_NV_texture_expand_normal 1 +#define GL_NV_texture_multisample 1 +#define GL_NV_texture_rectangle 1 +#define GL_NV_texture_rectangle_compressed 1 +#define GL_NV_texture_shader 1 +#define GL_NV_texture_shader2 1 +#define GL_NV_texture_shader3 1 +#define GL_NV_timeline_semaphore 1 +#define GL_NV_transform_feedback 1 +#define GL_NV_transform_feedback2 1 +#define GL_NV_uniform_buffer_std430_layout 1 +#define GL_NV_uniform_buffer_unified_memory 1 +#define GL_NV_vdpau_interop 1 +#define GL_NV_vdpau_interop2 1 +#define GL_NV_vertex_array_range 1 +#define GL_NV_vertex_array_range2 1 +#define GL_NV_vertex_attrib_integer_64bit 1 +#define GL_NV_vertex_buffer_unified_memory 1 +#define GL_NV_vertex_program 1 +#define GL_NV_vertex_program1_1 1 +#define GL_NV_vertex_program2 1 +#define GL_NV_vertex_program2_option 1 +#define GL_NV_vertex_program3 1 +#define GL_NV_vertex_program4 1 +#define GL_NV_video_capture 1 +#define GL_NV_viewport_array2 1 +#define GL_NV_viewport_swizzle 1 +#define GL_OES_byte_coordinates 1 +#define GL_OES_compressed_paletted_texture 1 +#define GL_OES_fixed_point 1 +#define GL_OES_query_matrix 1 +#define GL_OES_read_format 1 +#define GL_OES_single_precision 1 +#define GL_OML_interlace 1 +#define GL_OML_resample 1 +#define GL_OML_subsample 1 +#define GL_OVR_multiview 1 +#define GL_OVR_multiview2 1 +#define GL_PGI_misc_hints 1 +#define GL_PGI_vertex_hints 1 +#define GL_REND_screen_coordinates 1 +#define GL_S3_s3tc 1 +#define GL_SGIS_detail_texture 1 +#define GL_SGIS_fog_function 1 +#define GL_SGIS_generate_mipmap 1 +#define GL_SGIS_multisample 1 +#define GL_SGIS_pixel_texture 1 +#define GL_SGIS_point_line_texgen 1 +#define GL_SGIS_point_parameters 1 +#define GL_SGIS_sharpen_texture 1 +#define GL_SGIS_texture4D 1 +#define GL_SGIS_texture_border_clamp 1 +#define GL_SGIS_texture_color_mask 1 +#define GL_SGIS_texture_edge_clamp 1 +#define GL_SGIS_texture_filter4 1 +#define GL_SGIS_texture_lod 1 +#define GL_SGIS_texture_select 1 +#define GL_SGIX_async 1 +#define GL_SGIX_async_histogram 1 +#define GL_SGIX_async_pixel 1 +#define GL_SGIX_blend_alpha_minmax 1 +#define GL_SGIX_calligraphic_fragment 1 +#define GL_SGIX_clipmap 1 +#define GL_SGIX_convolution_accuracy 1 +#define GL_SGIX_depth_pass_instrument 1 +#define GL_SGIX_depth_texture 1 +#define GL_SGIX_flush_raster 1 +#define GL_SGIX_fog_offset 1 +#define GL_SGIX_fragment_lighting 1 +#define GL_SGIX_framezoom 1 +#define GL_SGIX_igloo_interface 1 +#define GL_SGIX_instruments 1 +#define GL_SGIX_interlace 1 +#define GL_SGIX_ir_instrument1 1 +#define GL_SGIX_list_priority 1 +#define GL_SGIX_pixel_texture 1 +#define GL_SGIX_pixel_tiles 1 +#define GL_SGIX_polynomial_ffd 1 +#define GL_SGIX_reference_plane 1 +#define GL_SGIX_resample 1 +#define GL_SGIX_scalebias_hint 1 +#define GL_SGIX_shadow 1 +#define GL_SGIX_shadow_ambient 1 +#define GL_SGIX_sprite 1 +#define GL_SGIX_subsample 1 +#define GL_SGIX_tag_sample_buffer 1 +#define GL_SGIX_texture_add_env 1 +#define GL_SGIX_texture_coordinate_clamp 1 +#define GL_SGIX_texture_lod_bias 1 +#define GL_SGIX_texture_multi_buffer 1 +#define GL_SGIX_texture_scale_bias 1 +#define GL_SGIX_vertex_preclip 1 +#define GL_SGIX_ycrcb 1 +#define GL_SGIX_ycrcb_subsample 1 +#define GL_SGIX_ycrcba 1 +#define GL_SGI_color_matrix 1 +#define GL_SGI_color_table 1 +#define GL_SGI_texture_color_table 1 +#define GL_SUNX_constant_data 1 +#define GL_SUN_convolution_border_modes 1 +#define GL_SUN_global_alpha 1 +#define GL_SUN_mesh_array 1 +#define GL_SUN_slice_accum 1 +#define GL_SUN_triangle_list 1 +#define GL_SUN_vertex 1 +#define GL_WIN_phong_shading 1 +#define GL_WIN_specular_fog 1 + +typedef void(GLAD_API_PTR *PFNGLACCUMXOESPROC)(GLenum op, GLfixed value); +typedef GLboolean(GLAD_API_PTR *PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key, + GLuint timeout); +typedef void(GLAD_API_PTR *PFNGLACTIVEPROGRAMEXTPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); +typedef void(GLAD_API_PTR *PFNGLACTIVESTENCILFACEEXTPROC)(GLenum face); +typedef void(GLAD_API_PTR *PFNGLACTIVETEXTUREPROC)(GLenum texture); +typedef void(GLAD_API_PTR *PFNGLACTIVETEXTUREARBPROC)(GLenum texture); +typedef void(GLAD_API_PTR *PFNGLACTIVEVARYINGNVPROC)(GLuint program, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, + GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod); +typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, + GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod); +typedef void(GLAD_API_PTR *PFNGLALPHAFRAGMENTOP3ATIPROC)( + GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, + GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); +typedef void(GLAD_API_PTR *PFNGLALPHAFUNCXOESPROC)(GLenum func, GLfixed ref); +typedef void(GLAD_API_PTR *PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)(void); +typedef void(GLAD_API_PTR *PFNGLAPPLYTEXTUREEXTPROC)(GLenum mode); +typedef GLboolean(GLAD_API_PTR *PFNGLAREPROGRAMSRESIDENTNVPROC)(GLsizei n, const GLuint *programs, + GLboolean *residences); +typedef GLboolean(GLAD_API_PTR *PFNGLARETEXTURESRESIDENTEXTPROC)(GLsizei n, const GLuint *textures, + GLboolean *residences); +typedef void(GLAD_API_PTR *PFNGLARRAYELEMENTEXTPROC)(GLint i); +typedef void(GLAD_API_PTR *PFNGLARRAYOBJECTATIPROC)(GLenum array, GLint size, GLenum type, + GLsizei stride, GLuint buffer, GLuint offset); +typedef GLuint(GLAD_API_PTR *PFNGLASYNCCOPYBUFFERSUBDATANVXPROC)( + GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, + const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, + GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, + GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, + const GLuint64 *signalValueArray); +typedef GLuint(GLAD_API_PTR *PFNGLASYNCCOPYIMAGESUBDATANVXPROC)( + GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, + const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, + GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, + GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, + GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, + const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray); +typedef void(GLAD_API_PTR *PFNGLASYNCMARKERSGIXPROC)(GLuint marker); +typedef void(GLAD_API_PTR *PFNGLATTACHOBJECTARBPROC)(GLhandleARB containerObj, GLhandleARB obj); +typedef void(GLAD_API_PTR *PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERNVPROC)(GLuint id, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBEGINCONDITIONALRENDERNVXPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINFRAGMENTSHADERATIPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBEGINOCCLUSIONQUERYNVPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINPERFMONITORAMDPROC)(GLuint monitor); +typedef void(GLAD_API_PTR *PFNGLBEGINPERFQUERYINTELPROC)(GLuint queryHandle); +typedef void(GLAD_API_PTR *PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINQUERYARBPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)(GLenum primitiveMode); +typedef void(GLAD_API_PTR *PFNGLBEGINTRANSFORMFEEDBACKNVPROC)(GLenum primitiveMode); +typedef void(GLAD_API_PTR *PFNGLBEGINVERTEXSHADEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBEGINVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +typedef void(GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDATTRIBLOCATIONARBPROC)(GLhandleARB programObj, GLuint index, + const GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERARBPROC)(GLenum target, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASEEXTPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERBASENVPROC)(GLenum target, GLuint index, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFEROFFSETEXTPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFEROFFSETNVPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGEEXTPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERRANGENVPROC)(GLenum target, GLuint index, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERSBASEPROC)(GLenum target, GLuint first, GLsizei count, + const GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLBINDBUFFERSRANGEPROC)(GLenum target, GLuint first, GLsizei count, + const GLuint *buffers, + const GLintptr *offsets, + const GLsizeiptr *sizes); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONEXTPROC)(GLuint program, GLuint color, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, + GLuint index, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +typedef void(GLAD_API_PTR *PFNGLBINDFRAMEBUFFEREXTPROC)(GLenum target, GLuint framebuffer); +typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTUREPROC)(GLuint unit, GLuint texture, GLint level, + GLboolean layered, GLint layer, GLenum access, + GLenum format); +typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTUREEXTPROC)(GLuint index, GLuint texture, GLint level, + GLboolean layered, GLint layer, + GLenum access, GLint format); +typedef void(GLAD_API_PTR *PFNGLBINDIMAGETEXTURESPROC)(GLuint first, GLsizei count, + const GLuint *textures); +typedef GLuint(GLAD_API_PTR *PFNGLBINDLIGHTPARAMETEREXTPROC)(GLenum light, GLenum value); +typedef GLuint(GLAD_API_PTR *PFNGLBINDMATERIALPARAMETEREXTPROC)(GLenum face, GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDMULTITEXTUREEXTPROC)(GLenum texunit, GLenum target, + GLuint texture); +typedef GLuint(GLAD_API_PTR *PFNGLBINDPARAMETEREXTPROC)(GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); +typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMNVPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef void(GLAD_API_PTR *PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLBINDRENDERBUFFEREXTPROC)(GLenum target, GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); +typedef void(GLAD_API_PTR *PFNGLBINDSAMPLERSPROC)(GLuint first, GLsizei count, + const GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLBINDSHADINGRATEIMAGENVPROC)(GLuint texture); +typedef GLuint(GLAD_API_PTR *PFNGLBINDTEXGENPARAMETEREXTPROC)(GLenum unit, GLenum coord, + GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREEXTPROC)(GLenum target, GLuint texture); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTUREUNITPROC)(GLuint unit, GLuint texture); +typedef GLuint(GLAD_API_PTR *PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)(GLenum unit, GLenum value); +typedef void(GLAD_API_PTR *PFNGLBINDTEXTURESPROC)(GLuint first, GLsizei count, + const GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDTRANSFORMFEEDBACKNVPROC)(GLenum target, GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXARRAYPROC)(GLuint array); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXARRAYAPPLEPROC)(GLuint array); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXBUFFERPROC)(GLuint bindingindex, GLuint buffer, + GLintptr offset, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXBUFFERSPROC)(GLuint first, GLsizei count, + const GLuint *buffers, + const GLintptr *offsets, + const GLsizei *strides); +typedef void(GLAD_API_PTR *PFNGLBINDVERTEXSHADEREXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)(GLuint video_capture_slot, + GLuint stream, + GLenum frame_region, + GLintptrARB offset); +typedef void(GLAD_API_PTR *PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)(GLuint video_capture_slot, + GLuint stream, + GLenum frame_region, + GLenum target, GLuint texture); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3BEXTPROC)(GLbyte bx, GLbyte by, GLbyte bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3BVEXTPROC)(const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3DEXTPROC)(GLdouble bx, GLdouble by, GLdouble bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3DVEXTPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3FEXTPROC)(GLfloat bx, GLfloat by, GLfloat bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3FVEXTPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3IEXTPROC)(GLint bx, GLint by, GLint bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3IVEXTPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3SEXTPROC)(GLshort bx, GLshort by, GLshort bz); +typedef void(GLAD_API_PTR *PFNGLBINORMAL3SVEXTPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLBINORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLBITMAPXOESPROC)(GLsizei width, GLsizei height, GLfixed xorig, + GLfixed yorig, GLfixed xmove, GLfixed ymove, + const GLubyte *bitmap); +typedef void(GLAD_API_PTR *PFNGLBLENDBARRIERKHRPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBLENDBARRIERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, + GLfloat alpha); +typedef void(GLAD_API_PTR *PFNGLBLENDCOLOREXTPROC)(GLfloat red, GLfloat green, GLfloat blue, + GLfloat alpha); +typedef void(GLAD_API_PTR *PFNGLBLENDCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONINDEXEDAMDPROC)(GLuint buf, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEEXTPROC)(GLenum modeRGB, GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONSEPARATEIARBPROC)(GLuint buf, GLenum modeRGB, + GLenum modeAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDEQUATIONIARBPROC)(GLuint buf, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCINDEXEDAMDPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEEXTPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEINGRPROC)(GLenum sfactorRGB, GLenum dfactorRGB, + GLenum sfactorAlpha, + GLenum dfactorAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)(GLuint buf, GLenum srcRGB, + GLenum dstRGB, GLenum srcAlpha, + GLenum dstAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCSEPARATEIARBPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, + GLenum srcAlpha, GLenum dstAlpha); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(GLAD_API_PTR *PFNGLBLENDFUNCIARBPROC)(GLuint buf, GLenum src, GLenum dst); +typedef void(GLAD_API_PTR *PFNGLBLENDPARAMETERINVPROC)(GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, + GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, + GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERLAYEREXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint srcLayer, + GLint dstX0, GLint dstY0, GLint dstX1, + GLint dstY1, GLint dstLayer, + GLbitfield mask, GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITFRAMEBUFFERLAYERSEXTPROC)(GLint srcX0, GLint srcY0, GLint srcX1, + GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBLITNAMEDFRAMEBUFFERPROC)(GLuint readFramebuffer, + GLuint drawFramebuffer, GLint srcX0, + GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, + GLint dstY1, GLbitfield mask, + GLenum filter); +typedef void(GLAD_API_PTR *PFNGLBUFFERADDRESSRANGENVPROC)(GLenum pname, GLuint index, + GLuint64EXT address, GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLBUFFERATTACHMEMORYNVPROC)(GLenum target, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, + GLenum usage); +typedef void(GLAD_API_PTR *PFNGLBUFFERDATAARBPROC)(GLenum target, GLsizeiptrARB size, + const void *data, GLenum usage); +typedef void(GLAD_API_PTR *PFNGLBUFFERPAGECOMMITMENTARBPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLBUFFERPAGECOMMITMENTMEMNVPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, GLuint memory, + GLuint64 memOffset, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLBUFFERPARAMETERIAPPLEPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEPROC)(GLenum target, GLsizeiptr size, const void *data, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEEXTERNALEXTPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, + GLeglClientBufferEXT clientBuffer, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLBUFFERSTORAGEMEMEXTPROC)(GLenum target, GLsizeiptr size, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, + const void *data); +typedef void(GLAD_API_PTR *PFNGLBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, + GLsizeiptrARB size, const void *data); +typedef void(GLAD_API_PTR *PFNGLCALLCOMMANDLISTNVPROC)(GLuint list); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)(GLenum target); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)(GLuint framebuffer, + GLenum target); +typedef GLenum(GLAD_API_PTR *PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)(GLuint framebuffer, + GLenum target); +typedef void(GLAD_API_PTR *PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +typedef void(GLAD_API_PTR *PFNGLCLAMPCOLORARBPROC)(GLenum target, GLenum clamp); +typedef void(GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLCLEARACCUMXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERDATAPROC)(GLenum target, GLenum internalformat, + GLenum format, GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERSUBDATAPROC)(GLenum target, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, + GLint stencil); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, + GLfloat alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORIIEXTPROC)(GLint red, GLint green, GLint blue, + GLint alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORIUIEXTPROC)(GLuint red, GLuint green, GLuint blue, + GLuint alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARCOLORXOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHPROC)(GLdouble depth); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHDNVPROC)(GLdouble depth); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHFPROC)(GLfloat d); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHFOESPROC)(GLclampf depth); +typedef void(GLAD_API_PTR *PFNGLCLEARDEPTHXOESPROC)(GLfixed depth); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERDATAPROC)(GLuint buffer, GLenum internalformat, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLenum internalformat, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLenum internalformat, + GLintptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, + GLenum internalformat, + GLsizeiptr offset, GLsizeiptr size, + GLenum format, GLenum type, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, GLfloat depth, + GLint stencil); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)(GLuint framebuffer, GLenum buffer, + GLint drawbuffer, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLCLEARSTENCILPROC)(GLint s); +typedef void(GLAD_API_PTR *PFNGLCLEARTEXIMAGEPROC)(GLuint texture, GLint level, GLenum format, + GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCLEARTEXSUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCLIENTACTIVETEXTUREARBPROC)(GLenum texture); +typedef void(GLAD_API_PTR *PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)(GLenum stream); +typedef void(GLAD_API_PTR *PFNGLCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC)(GLsizei fenceObjectCount, + const GLuint *semaphoreArray, + const GLuint64 *fenceValueArray); +typedef GLenum(GLAD_API_PTR *PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, + GLuint64 timeout); +typedef void(GLAD_API_PTR *PFNGLCLIPCONTROLPROC)(GLenum origin, GLenum depth); +typedef void(GLAD_API_PTR *PFNGLCLIPPLANEFOESPROC)(GLenum plane, const GLfloat *equation); +typedef void(GLAD_API_PTR *PFNGLCLIPPLANEXOESPROC)(GLenum plane, const GLfixed *equation); +typedef void(GLAD_API_PTR *PFNGLCOLOR3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue); +typedef void(GLAD_API_PTR *PFNGLCOLOR3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR3XOESPROC)(GLfixed red, GLfixed green, GLfixed blue); +typedef void(GLAD_API_PTR *PFNGLCOLOR3XVOESPROC)(const GLfixed *components); +typedef void(GLAD_API_PTR *PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)(GLfloat r, GLfloat g, GLfloat b, + GLfloat a, GLfloat nx, GLfloat ny, + GLfloat nz, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *c, const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4HNVPROC)(GLhalfNV red, GLhalfNV green, GLhalfNV blue, + GLhalfNV alpha); +typedef void(GLAD_API_PTR *PFNGLCOLOR4HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX2FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX2FVSUNPROC)(const GLubyte *c, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX3FSUNPROC)(GLubyte r, GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLCOLOR4UBVERTEX3FVSUNPROC)(const GLubyte *c, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCOLOR4XOESPROC)(GLfixed red, GLfixed green, GLfixed blue, + GLfixed alpha); +typedef void(GLAD_API_PTR *PFNGLCOLOR4XVOESPROC)(const GLfixed *components); +typedef void(GLAD_API_PTR *PFNGLCOLORFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod); +typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod); +typedef void(GLAD_API_PTR *PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod, + GLuint arg3, GLuint arg3Rep, + GLuint arg3Mod); +typedef void(GLAD_API_PTR *PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, + GLboolean alpha); +typedef void(GLAD_API_PTR *PFNGLCOLORMASKINDEXEDEXTPROC)(GLuint index, GLboolean r, GLboolean g, + GLboolean b, GLboolean a); +typedef void(GLAD_API_PTR *PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, + GLboolean a); +typedef void(GLAD_API_PTR *PFNGLCOLORPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLCOLORPOINTERVINTELPROC)(GLint size, GLenum type, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLsizei count, + GLenum format, GLenum type, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLEEXTPROC)(GLenum target, GLenum internalFormat, + GLsizei width, GLenum format, GLenum type, + const void *table); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLenum format, GLenum type, + const void *table); +typedef void(GLAD_API_PTR *PFNGLCOMBINERINPUTNVPROC)(GLenum stage, GLenum portion, GLenum variable, + GLenum input, GLenum mapping, + GLenum componentUsage); +typedef void(GLAD_API_PTR *PFNGLCOMBINEROUTPUTNVPROC)(GLenum stage, GLenum portion, GLenum abOutput, + GLenum cdOutput, GLenum sumOutput, + GLenum scale, GLenum bias, + GLboolean abDotProduct, + GLboolean cdDotProduct, GLboolean muxSum); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERFNVPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERFVNVPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLCOMBINERPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCOMMANDLISTSEGMENTSNVPROC)(GLuint list, GLuint segments); +typedef void(GLAD_API_PTR *PFNGLCOMPILECOMMANDLISTNVPROC)(GLuint list); +typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERPROC)(GLuint shader); +typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERARBPROC)(GLhandleARB shaderObj); +typedef void(GLAD_API_PTR *PFNGLCOMPILESHADERINCLUDEARBPROC)(GLuint shader, GLsizei count, + const GLchar *const *path, + const GLint *length); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)( + GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, + GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLint border, + GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLint border, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)(GLenum target, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)(GLenum target, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)( + GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)( + GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLint border, + GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLsizei width, GLsizei height, + GLint border, GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLsizei imageSize, + const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, + GLsizei height, GLenum format, GLsizei imageSize, const void *bits); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)( + GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +typedef void(GLAD_API_PTR *PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)( + GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, + const void *bits); +typedef void(GLAD_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)(GLenum pname, GLfloat value); +typedef void(GLAD_API_PTR *PFNGLCONSERVATIVERASTERPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONFILTER1DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLenum format, + GLenum type, const void *image); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONFILTER2DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *image); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERFEXTPROC)(GLenum target, GLenum pname, + GLfloat params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERIEXTPROC)(GLenum target, GLenum pname, + GLint params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERXOESPROC)(GLenum target, GLenum pname, + GLfixed param); +typedef void(GLAD_API_PTR *PFNGLCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, + const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, + GLintptr readOffset, GLintptr writeOffset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLCOPYCOLORSUBTABLEEXTPROC)(GLenum target, GLsizei start, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYCOLORTABLESGIPROC)(GLenum target, GLenum internalformat, + GLint x, GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)(GLenum target, + GLenum internalformat, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)(GLenum target, + GLenum internalformat, GLint x, + GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYIMAGESUBDATAPROC)(GLuint srcName, GLenum srcTarget, + GLint srcLevel, GLint srcX, GLint srcY, + GLint srcZ, GLuint dstName, GLenum dstTarget, + GLint dstLevel, GLint dstX, GLint dstY, + GLint dstZ, GLsizei srcWidth, + GLsizei srcHeight, GLsizei srcDepth); +typedef void(GLAD_API_PTR *PFNGLCOPYIMAGESUBDATANVPROC)( + GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, + GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, + GLsizei width, GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLint x, GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYNAMEDBUFFERSUBDATAPROC)(GLuint readBuffer, GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLCOPYPATHNVPROC)(GLuint resultPath, GLuint srcPath); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE1DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXIMAGE2DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLint x, GLint y, + GLsizei width, GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, + GLint x, GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint x, GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum internalformat, + GLint x, GLint y, GLsizei width, + GLsizei height, GLint border); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint x, GLint y, + GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint x, + GLint y, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, GLint x, + GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint x, + GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLCOVERFILLPATHINSTANCEDNVPROC)(GLsizei numPaths, GLenum pathNameType, + const void *paths, GLuint pathBase, + GLenum coverMode, + GLenum transformType, + const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, + GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLCOVERAGEMODULATIONNVPROC)(GLenum components); +typedef void(GLAD_API_PTR *PFNGLCOVERAGEMODULATIONTABLENVPROC)(GLsizei n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLCREATEBUFFERSPROC)(GLsizei n, GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLCREATECOMMANDLISTSNVPROC)(GLsizei n, GLuint *lists); +typedef void(GLAD_API_PTR *PFNGLCREATEFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLCREATEMEMORYOBJECTSEXTPROC)(GLsizei n, GLuint *memoryObjects); +typedef void(GLAD_API_PTR *PFNGLCREATEPERFQUERYINTELPROC)(GLuint queryId, GLuint *queryHandle); +typedef GLuint(GLAD_API_PTR *PFNGLCREATEPROGRAMPROC)(void); +typedef GLhandleARB(GLAD_API_PTR *PFNGLCREATEPROGRAMOBJECTARBPROC)(void); +typedef void(GLAD_API_PTR *PFNGLCREATEPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +typedef GLuint(GLAD_API_PTR *PFNGLCREATEPROGRESSFENCENVXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLCREATEQUERIESPROC)(GLenum target, GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLCREATERENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLCREATESAMPLERSPROC)(GLsizei n, GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLCREATESEMAPHORESNVPROC)(GLsizei n, GLuint *semaphores); +typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROC)(GLenum type); +typedef GLhandleARB(GLAD_API_PTR *PFNGLCREATESHADEROBJECTARBPROC)(GLenum shaderType); +typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROGRAMEXTPROC)(GLenum type, const GLchar *string); +typedef GLuint(GLAD_API_PTR *PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, + const GLchar *const *strings); +typedef void(GLAD_API_PTR *PFNGLCREATESTATESNVPROC)(GLsizei n, GLuint *states); +typedef GLsync(GLAD_API_PTR *PFNGLCREATESYNCFROMCLEVENTARBPROC)(struct _cl_context *context, + struct _cl_event *event, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLCREATETEXTURESPROC)(GLenum target, GLsizei n, GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLCREATETRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLCREATEVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLCULLFACEPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLCULLPARAMETERDVEXTPROC)(GLenum pname, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLCULLPARAMETERFVEXTPROC)(GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLCURRENTPALETTEMATRIXARBPROC)(GLint index); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKPROC)(GLDEBUGPROC callback, + const void *userParam); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKAMDPROC)(GLDEBUGPROCAMD callback, + void *userParam); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, + const void *userParam); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECONTROLPROC)(GLenum source, GLenum type, + GLenum severity, GLsizei count, + const GLuint *ids, GLboolean enabled); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, + GLenum severity, GLsizei count, + const GLuint *ids, GLboolean enabled); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEENABLEAMDPROC)(GLenum category, GLenum severity, + GLsizei count, const GLuint *ids, + GLboolean enabled); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTPROC)(GLenum source, GLenum type, GLuint id, + GLenum severity, GLsizei length, + const GLchar *buf); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTAMDPROC)(GLenum category, GLenum severity, + GLuint id, GLsizei length, + const GLchar *buf); +typedef void(GLAD_API_PTR *PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, + GLenum severity, GLsizei length, + const GLchar *buf); +typedef void(GLAD_API_PTR *PFNGLDEFORMSGIXPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLDEFORMATIONMAP3DSGIXPROC)(GLenum target, GLdouble u1, GLdouble u2, + GLint ustride, GLint uorder, GLdouble v1, + GLdouble v2, GLint vstride, GLint vorder, + GLdouble w1, GLdouble w2, GLint wstride, + GLint worder, const GLdouble *points); +typedef void(GLAD_API_PTR *PFNGLDEFORMATIONMAP3FSGIXPROC)(GLenum target, GLfloat u1, GLfloat u2, + GLint ustride, GLint uorder, GLfloat v1, + GLfloat v2, GLint vstride, GLint vorder, + GLfloat w1, GLfloat w2, GLint wstride, + GLint worder, const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLDELETEASYNCMARKERSSGIXPROC)(GLuint marker, GLsizei range); +typedef void(GLAD_API_PTR *PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLDELETEBUFFERSARBPROC)(GLsizei n, const GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLDELETECOMMANDLISTSNVPROC)(GLsizei n, const GLuint *lists); +typedef void(GLAD_API_PTR *PFNGLDELETEFENCESAPPLEPROC)(GLsizei n, const GLuint *fences); +typedef void(GLAD_API_PTR *PFNGLDELETEFENCESNVPROC)(GLsizei n, const GLuint *fences); +typedef void(GLAD_API_PTR *PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLDELETEFRAMEBUFFERSEXTPROC)(GLsizei n, const GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLDELETEMEMORYOBJECTSEXTPROC)(GLsizei n, const GLuint *memoryObjects); +typedef void(GLAD_API_PTR *PFNGLDELETENAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLDELETENAMESAMDPROC)(GLenum identifier, GLuint num, + const GLuint *names); +typedef void(GLAD_API_PTR *PFNGLDELETEOBJECTARBPROC)(GLhandleARB obj); +typedef void(GLAD_API_PTR *PFNGLDELETEOCCLUSIONQUERIESNVPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range); +typedef void(GLAD_API_PTR *PFNGLDELETEPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +typedef void(GLAD_API_PTR *PFNGLDELETEPERFQUERYINTELPROC)(GLuint queryHandle); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLDELETEPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEQUERIESARBPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEQUERYRESOURCETAGNVPROC)(GLsizei n, const GLint *tagIds); +typedef void(GLAD_API_PTR *PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLDELETERENDERBUFFERSEXTPROC)(GLsizei n, const GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLDELETESEMAPHORESEXTPROC)(GLsizei n, const GLuint *semaphores); +typedef void(GLAD_API_PTR *PFNGLDELETESHADERPROC)(GLuint shader); +typedef void(GLAD_API_PTR *PFNGLDELETESTATESNVPROC)(GLsizei n, const GLuint *states); +typedef void(GLAD_API_PTR *PFNGLDELETESYNCPROC)(GLsync sync); +typedef void(GLAD_API_PTR *PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLDELETETEXTURESEXTPROC)(GLsizei n, const GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETETRANSFORMFEEDBACKSNVPROC)(GLsizei n, const GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXARRAYSAPPLEPROC)(GLsizei n, const GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLDELETEVERTEXSHADEREXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLDEPTHBOUNDSEXTPROC)(GLclampd zmin, GLclampd zmax); +typedef void(GLAD_API_PTR *PFNGLDEPTHBOUNDSDNVPROC)(GLdouble zmin, GLdouble zmax); +typedef void(GLAD_API_PTR *PFNGLDEPTHFUNCPROC)(GLenum func); +typedef void(GLAD_API_PTR *PFNGLDEPTHMASKPROC)(GLboolean flag); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEARRAYDVNVPROC)(GLuint first, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEINDEXEDDNVPROC)(GLuint index, GLdouble n, GLdouble f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEDNVPROC)(GLdouble zNear, GLdouble zFar); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEFOESPROC)(GLclampf n, GLclampf f); +typedef void(GLAD_API_PTR *PFNGLDEPTHRANGEXOESPROC)(GLfixed n, GLfixed f); +typedef void(GLAD_API_PTR *PFNGLDETACHOBJECTARBPROC)(GLhandleARB containerObj, + GLhandleARB attachedObj); +typedef void(GLAD_API_PTR *PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +typedef void(GLAD_API_PTR *PFNGLDETAILTEXFUNCSGISPROC)(GLenum target, GLsizei n, + const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLDISABLEPROC)(GLenum cap); +typedef void(GLAD_API_PTR *PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISABLEIPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEPROC)(GLuint num_groups_x, GLuint num_groups_y, + GLuint num_groups_z); +typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)( + GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, + GLuint group_size_y, GLuint group_size_z); +typedef void(GLAD_API_PTR *PFNGLDISPATCHCOMPUTEINDIRECTPROC)(GLintptr indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSEXTPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDARBPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLint first, + GLsizei count, + GLsizei instancecount, + GLuint baseinstance); +typedef void(GLAD_API_PTR *PFNGLDRAWARRAYSINSTANCEDEXTPROC)(GLenum mode, GLint start, GLsizei count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERPROC)(GLenum buf); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSARBPROC)(GLsizei n, const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLDRAWBUFFERSATIPROC)(GLsizei n, const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSADDRESSNVPROC)(GLenum primitiveMode, + const GLuint64 *indirects, + const GLsizei *sizes, GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSNVPROC)(GLenum primitiveMode, GLuint buffer, + const GLintptr *indirects, const GLsizei *sizes, + GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)(const GLuint64 *indirects, + const GLsizei *sizes, + const GLuint *states, + const GLuint *fbos, GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWCOMMANDSSTATESNVPROC)(GLuint buffer, const GLintptr *indirects, + const GLsizei *sizes, + const GLuint *states, const GLuint *fbos, + GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTARRAYATIPROC)(GLenum mode, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, + const void *indices); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, + const void *indices, GLint basevertex); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, + const void *indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, + const void *indices, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDARBPROC)(GLenum mode, GLsizei count, + GLenum type, const void *indices, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)(GLenum mode, GLsizei count, + GLenum type, + const void *indices, + GLsizei instancecount, + GLuint baseinstance); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, + GLenum type, + const void *indices, + GLsizei instancecount, + GLint basevertex); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)( + GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, + GLint basevertex, GLuint baseinstance); +typedef void(GLAD_API_PTR *PFNGLDRAWELEMENTSINSTANCEDEXTPROC)(GLenum mode, GLsizei count, + GLenum type, const void *indices, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLDRAWMESHARRAYSSUNPROC)(GLenum mode, GLint first, GLsizei count, + GLsizei width); +typedef void(GLAD_API_PTR *PFNGLDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect); +typedef void(GLAD_API_PTR *PFNGLDRAWMESHTASKSNVPROC)(GLuint first, GLuint count); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, + GLuint end, GLint first, + GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTARRAYATIPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const void *indices); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, + GLuint end, GLsizei count, + GLenum type, const void *indices, + GLint basevertex); +typedef void(GLAD_API_PTR *PFNGLDRAWRANGEELEMENTSEXTPROC)(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, + const void *indices); +typedef void(GLAD_API_PTR *PFNGLDRAWTEXTURENVPROC)(GLuint texture, GLuint sampler, GLfloat x0, + GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, + GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)(GLenum mode, GLuint id, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKNVPROC)(GLenum mode, GLuint id); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, + GLuint stream); +typedef void(GLAD_API_PTR *PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)(GLenum mode, GLuint id, + GLuint stream, + GLsizei instancecount); +typedef void(GLAD_API_PTR *PFNGLDRAWVKIMAGENVPROC)(GLuint64 vkImage, GLuint sampler, GLfloat x0, + GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, + GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +typedef void(GLAD_API_PTR *PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)(GLenum target, GLeglImageOES image, + const GLint *attrib_list); +typedef void(GLAD_API_PTR *PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC)(GLuint texture, + GLeglImageOES image, + const GLint *attrib_list); +typedef void(GLAD_API_PTR *PFNGLEDGEFLAGFORMATNVPROC)(GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLEDGEFLAGPOINTEREXTPROC)(GLsizei stride, GLsizei count, + const GLboolean *pointer); +typedef void(GLAD_API_PTR *PFNGLEDGEFLAGPOINTERLISTIBMPROC)(GLint stride, const GLboolean **pointer, + GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLELEMENTPOINTERAPPLEPROC)(GLenum type, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLELEMENTPOINTERATIPROC)(GLenum type, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLENABLEPROC)(GLenum cap); +typedef void(GLAD_API_PTR *PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLECLIENTSTATEIEXTPROC)(GLenum array, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)(GLuint id); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYATTRIBPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)(GLuint vaobj, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXARRAYEXTPROC)(GLuint vaobj, GLenum array); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBAPPLEPROC)(GLuint index, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEVERTEXATTRIBARRAYARBPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLENABLEIPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDCONDITIONALRENDERNVXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDFRAGMENTSHADERATIPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDOCCLUSIONQUERYNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDPERFMONITORAMDPROC)(GLuint monitor); +typedef void(GLAD_API_PTR *PFNGLENDPERFQUERYINTELPROC)(GLuint queryHandle); +typedef void(GLAD_API_PTR *PFNGLENDQUERYPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLENDQUERYARBPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); +typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKEXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDTRANSFORMFEEDBACKNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDVERTEXSHADEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLENDVIDEOCAPTURENVPROC)(GLuint video_capture_slot); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD1XOESPROC)(GLfixed u); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD1XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD2XOESPROC)(GLfixed u, GLfixed v); +typedef void(GLAD_API_PTR *PFNGLEVALCOORD2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLEVALMAPSNVPROC)(GLenum target, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLEVALUATEDEPTHVALUESARBPROC)(void); +typedef void(GLAD_API_PTR *PFNGLEXECUTEPROGRAMNVPROC)(GLenum target, GLuint id, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLEXTRACTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +typedef void(GLAD_API_PTR *PFNGLFEEDBACKBUFFERXOESPROC)(GLsizei n, GLenum type, + const GLfixed *buffer); +typedef GLsync(GLAD_API_PTR *PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLFINALCOMBINERINPUTNVPROC)(GLenum variable, GLenum input, + GLenum mapping, GLenum componentUsage); +typedef void(GLAD_API_PTR *PFNGLFINISHPROC)(void); +typedef GLint(GLAD_API_PTR *PFNGLFINISHASYNCSGIXPROC)(GLuint *markerp); +typedef void(GLAD_API_PTR *PFNGLFINISHFENCEAPPLEPROC)(GLuint fence); +typedef void(GLAD_API_PTR *PFNGLFINISHFENCENVPROC)(GLuint fence); +typedef void(GLAD_API_PTR *PFNGLFINISHOBJECTAPPLEPROC)(GLenum object, GLint name); +typedef void(GLAD_API_PTR *PFNGLFINISHTEXTURESUNXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFLUSHPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)(GLenum target, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLFLUSHPIXELDATARANGENVPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLFLUSHRASTERSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFLUSHSTATICDATAIBMPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +typedef void(GLAD_API_PTR *PFNGLFLUSHVERTEXARRAYRANGENVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDFORMATNVPROC)(GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDPOINTEREXTPROC)(GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDDEXTPROC)(GLdouble coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDDVEXTPROC)(const GLdouble *coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDFEXTPROC)(GLfloat coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDFVEXTPROC)(const GLfloat *coord); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDHNVPROC)(GLhalfNV fog); +typedef void(GLAD_API_PTR *PFNGLFOGCOORDHVNVPROC)(const GLhalfNV *fog); +typedef void(GLAD_API_PTR *PFNGLFOGFUNCSGISPROC)(GLsizei n, const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLFOGXOESPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLFOGXVOESPROC)(GLenum pname, const GLfixed *param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTCOLORMATERIALSGIXPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTCOVERAGECOLORNVPROC)(GLuint color); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELFSGIXPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELISGIXPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTFSGIXPROC)(GLenum light, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTISGIXPROC)(GLenum light, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALFSGIXPROC)(GLenum face, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALISGIXPROC)(GLenum face, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLFRAMETERMINATORGREMEDYPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFRAMEZOOMSGIXPROC)(GLint factor); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)(GLuint framebuffer, GLsizei n, + const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERPARAMETERIPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERPARAMETERIMESAPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERREADBUFFEREXTPROC)(GLuint framebuffer, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLenum target, GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLenum target, GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLenum target, + GLuint numsamples, + GLuint pixelindex, + const GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREEXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLenum face); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLenum face); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)(GLenum target, GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)(GLenum target, + GLenum attachment, + GLuint texture, GLint level, + GLint baseViewIndex, + GLsizei numViews); +typedef void(GLAD_API_PTR *PFNGLFREEOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLFRONTFACEPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLFRUSTUMFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, + GLfloat n, GLfloat f); +typedef void(GLAD_API_PTR *PFNGLFRUSTUMXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, + GLfixed n, GLfixed f); +typedef GLuint(GLAD_API_PTR *PFNGLGENASYNCMARKERSSGIXPROC)(GLsizei range); +typedef void(GLAD_API_PTR *PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLGENBUFFERSARBPROC)(GLsizei n, GLuint *buffers); +typedef void(GLAD_API_PTR *PFNGLGENFENCESAPPLEPROC)(GLsizei n, GLuint *fences); +typedef void(GLAD_API_PTR *PFNGLGENFENCESNVPROC)(GLsizei n, GLuint *fences); +typedef GLuint(GLAD_API_PTR *PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); +typedef void(GLAD_API_PTR *PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLGENFRAMEBUFFERSEXTPROC)(GLsizei n, GLuint *framebuffers); +typedef void(GLAD_API_PTR *PFNGLGENNAMESAMDPROC)(GLenum identifier, GLuint num, GLuint *names); +typedef void(GLAD_API_PTR *PFNGLGENOCCLUSIONQUERIESNVPROC)(GLsizei n, GLuint *ids); +typedef GLuint(GLAD_API_PTR *PFNGLGENPATHSNVPROC)(GLsizei range); +typedef void(GLAD_API_PTR *PFNGLGENPERFMONITORSAMDPROC)(GLsizei n, GLuint *monitors); +typedef void(GLAD_API_PTR *PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +typedef void(GLAD_API_PTR *PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLGENPROGRAMSNVPROC)(GLsizei n, GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENQUERIESARBPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENQUERYRESOURCETAGNVPROC)(GLsizei n, GLint *tagIds); +typedef void(GLAD_API_PTR *PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLGENRENDERBUFFERSEXTPROC)(GLsizei n, GLuint *renderbuffers); +typedef void(GLAD_API_PTR *PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); +typedef void(GLAD_API_PTR *PFNGLGENSEMAPHORESEXTPROC)(GLsizei n, GLuint *semaphores); +typedef GLuint(GLAD_API_PTR *PFNGLGENSYMBOLSEXTPROC)(GLenum datatype, GLenum storagetype, + GLenum range, GLuint components); +typedef void(GLAD_API_PTR *PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLGENTEXTURESEXTPROC)(GLsizei n, GLuint *textures); +typedef void(GLAD_API_PTR *PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENTRANSFORMFEEDBACKSNVPROC)(GLsizei n, GLuint *ids); +typedef void(GLAD_API_PTR *PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +typedef void(GLAD_API_PTR *PFNGLGENVERTEXARRAYSAPPLEPROC)(GLsizei n, GLuint *arrays); +typedef GLuint(GLAD_API_PTR *PFNGLGENVERTEXSHADERSEXTPROC)(GLuint range); +typedef void(GLAD_API_PTR *PFNGLGENERATEMIPMAPPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLGENERATEMIPMAPEXTPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLGENERATEMULTITEXMIPMAPEXTPROC)(GLenum texunit, GLenum target); +typedef void(GLAD_API_PTR *PFNGLGENERATETEXTUREMIPMAPPROC)(GLuint texture); +typedef void(GLAD_API_PTR *PFNGLGENERATETEXTUREMIPMAPEXTPROC)(GLuint texture, GLenum target); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)(GLuint program, + GLuint bufferIndex, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei *length, GLint *size, GLenum *type, + GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEATTRIBARBPROC)(GLhandleARB programObj, GLuint index, + GLsizei maxLength, GLsizei *length, + GLint *size, GLenum *type, GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, + GLuint index, GLsizei bufSize, + GLsizei *length, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, + GLenum shadertype, GLuint index, + GLsizei bufSize, + GLsizei *length, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, + GLuint index, GLenum pname, + GLint *values); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, + GLsizei *length, GLint *size, GLenum *type, + GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMARBPROC)(GLhandleARB programObj, GLuint index, + GLsizei maxLength, GLsizei *length, + GLint *size, GLenum *type, + GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, + GLuint uniformBlockIndex, + GLsizei bufSize, GLsizei *length, + GLchar *uniformBlockName); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, + GLuint uniformBlockIndex, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, + GLsizei bufSize, GLsizei *length, + GLchar *uniformName); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, + const GLuint *uniformIndices, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETACTIVEVARYINGNVPROC)(GLuint program, GLuint index, + GLsizei bufSize, GLsizei *length, + GLsizei *size, GLenum *type, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETARRAYOBJECTFVATIPROC)(GLenum array, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETARRAYOBJECTIVATIPROC)(GLenum array, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETATTACHEDOBJECTSARBPROC)(GLhandleARB containerObj, + GLsizei maxCount, GLsizei *count, + GLhandleARB *obj); +typedef void(GLAD_API_PTR *PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, + GLsizei *count, GLuint *shaders); +typedef GLint(GLAD_API_PTR *PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETATTRIBLOCATIONARBPROC)(GLhandleARB programObj, + const GLcharARB *name); +typedef void(GLAD_API_PTR *PFNGLGETBOOLEANINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERIVARBPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPARAMETERUI64VNVPROC)(GLenum target, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERPOINTERVARBPROC)(GLenum target, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, + GLsizeiptr size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETBUFFERSUBDATAARBPROC)(GLenum target, GLintptrARB offset, + GLsizeiptrARB size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETCLIPPLANEFOESPROC)(GLenum plane, GLfloat *equation); +typedef void(GLAD_API_PTR *PFNGLGETCLIPPLANEXOESPROC)(GLenum plane, GLfixed *equation); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEEXTPROC)(GLenum target, GLenum format, GLenum type, + void *data); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOLORTABLESGIPROC)(GLenum target, GLenum format, GLenum type, + void *table); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, + GLenum variable, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, + GLenum variable, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)(GLenum stage, GLenum portion, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)(GLenum stage, GLenum portion, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)(GLenum stage, GLenum pname, + GLfloat *params); +typedef GLuint(GLAD_API_PTR *PFNGLGETCOMMANDHEADERNVPROC)(GLenum tokenID, GLuint size); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, + GLint lod, void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint level, + void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)(GLuint texture, GLint level, + GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, + GLint lod, void *img); +typedef void(GLAD_API_PTR *PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONFILTEREXTPROC)(GLenum target, GLenum format, + GLenum type, void *image); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)(GLenum target, GLenum pname, + GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETCOVERAGEMODULATIONTABLENVPROC)(GLsizei bufSize, GLfloat *v); +typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGPROC)(GLuint count, GLsizei bufSize, + GLenum *sources, GLenum *types, + GLuint *ids, GLenum *severities, + GLsizei *lengths, GLchar *messageLog); +typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGAMDPROC)(GLuint count, GLsizei bufSize, + GLenum *categories, GLenum *severities, + GLuint *ids, GLsizei *lengths, + GLchar *message); +typedef GLuint(GLAD_API_PTR *PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, + GLenum *sources, GLenum *types, + GLuint *ids, GLenum *severities, + GLsizei *lengths, GLchar *messageLog); +typedef void(GLAD_API_PTR *PFNGLGETDETAILTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLdouble *data); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEI_VEXTPROC)(GLenum pname, GLuint index, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); +typedef GLenum(GLAD_API_PTR *PFNGLGETERRORPROC)(void); +typedef void(GLAD_API_PTR *PFNGLGETFENCEIVNVPROC)(GLuint fence, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)(GLenum variable, + GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)(GLenum variable, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFIRSTPERFQUERYIDINTELPROC)(GLuint *queryId); +typedef void(GLAD_API_PTR *PFNGLGETFIXEDVOESPROC)(GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETFLOATINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETFLOATI_VEXTPROC)(GLenum pname, GLuint index, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETFOGFUNCSGISPROC)(GLfloat *points); +typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETFRAGDATALOCATIONEXTPROC)(GLuint program, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTLIGHTFVSGIXPROC)(GLenum light, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTLIGHTIVSGIXPROC)(GLenum light, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum face, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum face, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLenum target, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC)(GLenum target, GLenum pname, + GLuint numsamples, + GLuint pixelindex, GLsizei size, + GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC)(GLenum target, GLenum pname, + GLint *params); +typedef GLenum(GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSPROC)(void); +typedef GLenum(GLAD_API_PTR *PFNGLGETGRAPHICSRESETSTATUSARBPROC)(void); +typedef GLhandleARB(GLAD_API_PTR *PFNGLGETHANDLEARBPROC)(GLenum pname); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMEXTPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, void *values); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETHISTOGRAMPARAMETERXVOESPROC)(GLenum target, GLenum pname, + GLfixed *params); +typedef GLuint64(GLAD_API_PTR *PFNGLGETIMAGEHANDLEARBPROC)(GLuint texture, GLint level, + GLboolean layered, GLint layer, + GLenum format); +typedef GLuint64(GLAD_API_PTR *PFNGLGETIMAGEHANDLENVPROC)(GLuint texture, GLint level, + GLboolean layered, GLint layer, + GLenum format); +typedef void(GLAD_API_PTR *PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETINFOLOGARBPROC)(GLhandleARB obj, GLsizei maxLength, + GLsizei *length, GLcharARB *infoLog); +typedef GLint(GLAD_API_PTR *PFNGLGETINSTRUMENTSSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERINDEXEDVEXTPROC)(GLenum target, GLuint index, + GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERUI64I_VNVPROC)(GLenum value, GLuint index, + GLuint64EXT *result); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERUI64VNVPROC)(GLenum value, GLuint64EXT *result); +typedef void(GLAD_API_PTR *PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum target, + GLenum internalformat, + GLsizei samples, GLenum pname, + GLsizei count, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATI64VPROC)(GLenum target, GLenum internalformat, + GLenum pname, GLsizei count, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, + GLenum pname, GLsizei count, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETINVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETINVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETINVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)(GLuint id, GLenum value, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTFLOATVEXTPROC)(GLuint id, GLenum value, + GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)(GLuint id, GLenum value, + GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETMAPATTRIBPARAMETERFVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPATTRIBPARAMETERIVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, + GLsizei ustride, GLsizei vstride, + GLboolean packed, void *points); +typedef void(GLAD_API_PTR *PFNGLGETMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMAPXVOESPROC)(GLenum target, GLenum query, GLfixed *v); +typedef void(GLAD_API_PTR *PFNGLGETMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC)( + GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMINMAXEXTPROC)(GLenum target, GLboolean reset, GLenum format, + GLenum type, void *values); +typedef void(GLAD_API_PTR *PFNGLGETMINMAXPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMINMAXPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXIMAGEEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLenum format, GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); +typedef void(GLAD_API_PTR *PFNGLGETMULTISAMPLEFVNVPROC)(GLenum pname, GLuint index, GLfloat *val); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)(GLuint buffer, GLenum pname, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)(GLuint buffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)(GLuint buffer, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPOINTERVPROC)(GLuint buffer, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)(GLuint buffer, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, void *data); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC)( + GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, + GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)(GLuint framebuffer, + GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)(GLuint framebuffer, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)(GLuint program, + GLenum target, + GLuint index, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)(GLuint program, + GLenum target, + GLuint index, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, + GLenum pname, void *string); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDPROGRAMIVEXTPROC)(GLuint program, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)(GLuint renderbuffer, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)(GLuint renderbuffer, + GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name, + GLsizei bufSize, GLint *stringlen, + GLchar *string); +typedef void(GLAD_API_PTR *PFNGLGETNAMEDSTRINGIVARBPROC)(GLint namelen, const GLchar *name, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNEXTPERFQUERYIDINTELPROC)(GLuint queryId, GLuint *nextQueryId); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTBUFFERFVATIPROC)(GLuint buffer, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTBUFFERIVATIPROC)(GLuint buffer, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei bufSize, + GLsizei *length, GLchar *label); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTLABELEXTPROC)(GLenum type, GLuint object, GLsizei bufSize, + GLsizei *length, GLchar *label); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERFVARBPROC)(GLhandleARB obj, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERIVAPPLEPROC)(GLenum objectType, GLuint name, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPARAMETERIVARBPROC)(GLhandleARB obj, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOBJECTPTRLABELPROC)(const void *ptr, GLsizei bufSize, + GLsizei *length, GLchar *label); +typedef void(GLAD_API_PTR *PFNGLGETOCCLUSIONQUERYIVNVPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETOCCLUSIONQUERYUIVNVPROC)(GLuint id, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETPATHCOMMANDSNVPROC)(GLuint path, GLubyte *commands); +typedef void(GLAD_API_PTR *PFNGLGETPATHCOORDSNVPROC)(GLuint path, GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLGETPATHDASHARRAYNVPROC)(GLuint path, GLfloat *dashArray); +typedef GLfloat(GLAD_API_PTR *PFNGLGETPATHLENGTHNVPROC)(GLuint path, GLsizei startSegment, + GLsizei numSegments); +typedef void(GLAD_API_PTR *PFNGLGETPATHMETRICRANGENVPROC)(GLbitfield metricQueryMask, + GLuint firstPathName, GLsizei numPaths, + GLsizei stride, GLfloat *metrics); +typedef void(GLAD_API_PTR *PFNGLGETPATHMETRICSNVPROC)(GLbitfield metricQueryMask, GLsizei numPaths, + GLenum pathNameType, const void *paths, + GLuint pathBase, GLsizei stride, + GLfloat *metrics); +typedef void(GLAD_API_PTR *PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, + GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, GLint *value); +typedef void(GLAD_API_PTR *PFNGLGETPATHSPACINGNVPROC)(GLenum pathListMode, GLsizei numPaths, + GLenum pathNameType, const void *paths, + GLuint pathBase, GLfloat advanceScale, + GLfloat kerningScale, GLenum transformType, + GLfloat *returnedSpacing); +typedef void(GLAD_API_PTR *PFNGLGETPERFCOUNTERINFOINTELPROC)( + GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, + GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, + GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, + GLuint64 *rawCounterMaxValue); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)(GLuint monitor, GLenum pname, + GLsizei dataSize, GLuint *data, + GLint *bytesWritten); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)(GLuint group, GLuint counter, + GLenum pname, void *data); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)(GLuint group, GLuint counter, + GLsizei bufSize, + GLsizei *length, + GLchar *counterString); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORCOUNTERSAMDPROC)(GLuint group, GLint *numCounters, + GLint *maxActiveCounters, + GLsizei counterSize, + GLuint *counters); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)(GLuint group, GLsizei bufSize, + GLsizei *length, + GLchar *groupString); +typedef void(GLAD_API_PTR *PFNGLGETPERFMONITORGROUPSAMDPROC)(GLint *numGroups, GLsizei groupsSize, + GLuint *groups); +typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYDATAINTELPROC)(GLuint queryHandle, GLuint flags, + GLsizei dataSize, void *data, + GLuint *bytesWritten); +typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYIDBYNAMEINTELPROC)(GLchar *queryName, GLuint *queryId); +typedef void(GLAD_API_PTR *PFNGLGETPERFQUERYINFOINTELPROC)(GLuint queryId, GLuint queryNameLength, + GLchar *queryName, GLuint *dataSize, + GLuint *noCounters, GLuint *noInstances, + GLuint *capsMask); +typedef void(GLAD_API_PTR *PFNGLGETPIXELMAPXVPROC)(GLenum map, GLint size, GLfixed *values); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERINDEXEDVEXTPROC)(GLenum target, GLuint index, + void **data); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERI_VEXTPROC)(GLenum pname, GLuint index, void **params); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERVPROC)(GLenum pname, void **params); +typedef void(GLAD_API_PTR *PFNGLGETPOINTERVEXTPROC)(GLenum pname, void **params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, + GLsizei *length, GLenum *binaryFormat, + void *binary); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)(GLenum target, GLuint index, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)(GLenum target, GLuint index, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMINTERFACEIVPROC)(GLuint program, GLenum programInterface, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)(GLenum target, GLuint index, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)(GLenum target, GLuint index, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPARAMETERDVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPARAMETERFVNVPROC)(GLenum target, GLuint index, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, + GLint *params); +typedef GLuint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEINDEXPROC)(GLuint program, + GLenum programInterface, + const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCELOCATIONPROC)(GLuint program, + GLenum programInterface, + const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)(GLuint program, + GLenum programInterface, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCENAMEPROC)(GLuint program, GLenum programInterface, + GLuint index, GLsizei bufSize, + GLsizei *length, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEFVNVPROC)(GLuint program, GLenum programInterface, + GLuint index, GLsizei propCount, + const GLenum *props, GLsizei count, + GLsizei *length, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMRESOURCEIVPROC)(GLuint program, GLenum programInterface, + GLuint index, GLsizei propCount, + const GLenum *props, GLsizei count, + GLsizei *length, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, + GLenum pname, GLint *values); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, void *string); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSTRINGNVPROC)(GLuint id, GLenum pname, GLubyte *program); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)(GLenum target, GLuint index, + GLuint *param); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETPROGRAMIVNVPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTI64VPROC)(GLuint id, GLuint buffer, + GLenum pname, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTIVPROC)(GLuint id, GLuint buffer, GLenum pname, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTUI64VPROC)(GLuint id, GLuint buffer, + GLenum pname, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYBUFFEROBJECTUIVPROC)(GLuint id, GLuint buffer, GLenum pname, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTI64VEXTPROC)(GLuint id, GLenum pname, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTIVARBPROC)(GLuint id, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUI64VEXTPROC)(GLuint id, GLenum pname, + GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYOBJECTUIVARBPROC)(GLuint id, GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETQUERYIVARBPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, + GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETSEPARABLEFILTEREXTPROC)(GLenum target, GLenum format, + GLenum type, void *row, void *column, + void *span); +typedef void(GLAD_API_PTR *PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); +typedef void(GLAD_API_PTR *PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, + GLenum precisiontype, GLint *range, + GLint *precision); +typedef void(GLAD_API_PTR *PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, + GLsizei *length, GLchar *source); +typedef void(GLAD_API_PTR *PFNGLGETSHADERSOURCEARBPROC)(GLhandleARB obj, GLsizei maxLength, + GLsizei *length, GLcharARB *source); +typedef void(GLAD_API_PTR *PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint entry, + GLenum *rate); +typedef void(GLAD_API_PTR *PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC)(GLenum rate, GLuint samples, + GLuint index, + GLint *location); +typedef void(GLAD_API_PTR *PFNGLGETSHARPENTEXFUNCSGISPROC)(GLenum target, GLfloat *points); +typedef GLushort(GLAD_API_PTR *PFNGLGETSTAGEINDEXNVPROC)(GLenum shadertype); +typedef const GLubyte *(GLAD_API_PTR *PFNGLGETSTRINGPROC)(GLenum name); +typedef const GLubyte *(GLAD_API_PTR *PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); +typedef GLuint(GLAD_API_PTR *PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, + const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, + GLenum shadertype, + const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, + GLsizei *length, GLint *values); +typedef void(GLAD_API_PTR *PFNGLGETTEXBUMPPARAMETERFVATIPROC)(GLenum pname, GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLGETTEXBUMPPARAMETERIVATIPROC)(GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETTEXENVXVOESPROC)(GLenum target, GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, + GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLGETTEXGENXVOESPROC)(GLenum coord, GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, + GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXLEVELPARAMETERXVOESPROC)(GLenum target, GLint level, + GLenum pname, GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)(GLenum target, GLenum pname, + void **params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, + GLfixed *params); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTUREHANDLEARBPROC)(GLuint texture); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTUREHANDLENVPROC)(GLuint texture); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREIMAGEPROC)(GLuint texture, GLint level, GLenum format, + GLenum type, GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREIMAGEEXTPROC)(GLuint texture, GLenum target, GLint level, + GLenum format, GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERFVPROC)(GLuint texture, GLint level, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERIVPROC)(GLuint texture, GLint level, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLint level, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint *params); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTURESAMPLERHANDLEARBPROC)(GLuint texture, GLuint sampler); +typedef GLuint64(GLAD_API_PTR *PFNGLGETTEXTURESAMPLERHANDLENVPROC)(GLuint texture, GLuint sampler); +typedef void(GLAD_API_PTR *PFNGLGETTEXTURESUBIMAGEPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, GLenum type, GLsizei bufSize, + void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETTRACKMATRIXIVNVPROC)(GLenum target, GLuint address, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, + GLsizei bufSize, GLsizei *length, + GLsizei *size, GLenum *type, + GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)(GLuint program, GLuint index, + GLsizei bufSize, + GLsizei *length, GLsizei *size, + GLenum *type, GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)(GLuint program, GLuint index, + GLint *location); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKI64_VPROC)(GLuint xfb, GLenum pname, + GLuint index, GLint64 *param); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKI_VPROC)(GLuint xfb, GLenum pname, GLuint index, + GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETTRANSFORMFEEDBACKIVPROC)(GLuint xfb, GLenum pname, GLint *param); +typedef GLuint(GLAD_API_PTR *PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, + const GLchar *uniformBlockName); +typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMBUFFERSIZEEXTPROC)(GLuint program, GLint location); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, + const GLchar *const *uniformNames, + GLuint *uniformIndices); +typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); +typedef GLint(GLAD_API_PTR *PFNGLGETUNIFORMLOCATIONARBPROC)(GLhandleARB programObj, + const GLcharARB *name); +typedef GLintptr(GLAD_API_PTR *PFNGLGETUNIFORMOFFSETEXTPROC)(GLuint program, GLint location); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMFVARBPROC)(GLhandleARB programObj, GLint location, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMI64VARBPROC)(GLuint program, GLint location, + GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMI64VNVPROC)(GLuint program, GLint location, + GLint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMIVARBPROC)(GLhandleARB programObj, GLint location, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUI64VARBPROC)(GLuint program, GLint location, + GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUI64VNVPROC)(GLuint program, GLint location, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNIFORMUIVEXTPROC)(GLuint program, GLint location, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETUNSIGNEDBYTEI_VEXTPROC)(GLenum target, GLuint index, + GLubyte *data); +typedef void(GLAD_API_PTR *PFNGLGETUNSIGNEDBYTEVEXTPROC)(GLenum pname, GLubyte *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTARRAYOBJECTFVATIPROC)(GLuint id, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTARRAYOBJECTIVATIPROC)(GLuint id, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTBOOLEANVEXTPROC)(GLuint id, GLenum value, + GLboolean *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTFLOATVEXTPROC)(GLuint id, GLenum value, GLfloat *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTINTEGERVEXTPROC)(GLuint id, GLenum value, GLint *data); +typedef void(GLAD_API_PTR *PFNGLGETVARIANTPOINTERVEXTPROC)(GLuint id, GLenum value, void **data); +typedef GLint(GLAD_API_PTR *PFNGLGETVARYINGLOCATIONNVPROC)(GLuint program, const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINDEXED64IVPROC)(GLuint vaobj, GLuint index, + GLenum pname, GLint64 *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINDEXEDIVPROC)(GLuint vaobj, GLuint index, + GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)(GLuint vaobj, GLuint index, + GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYINTEGERVEXTPROC)(GLuint vaobj, GLenum pname, + GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)(GLuint vaobj, GLuint index, + GLenum pname, void **param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYPOINTERVEXTPROC)(GLuint vaobj, GLenum pname, + void **param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXARRAYIVPROC)(GLuint vaobj, GLenum pname, GLint *param); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIIVEXTPROC)(GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIUIVEXTPROC)(GLuint index, GLenum pname, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLDVEXTPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLI64VNVPROC)(GLuint index, GLenum pname, + GLint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLUI64VARBPROC)(GLuint index, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBLUI64VNVPROC)(GLuint index, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, + void **pointer); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVARBPROC)(GLuint index, GLenum pname, + void **pointer); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBPOINTERVNVPROC)(GLuint index, GLenum pname, + void **pointer); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVARBPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBDVNVPROC)(GLuint index, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVARBPROC)(GLuint index, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBFVNVPROC)(GLuint index, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVARBPROC)(GLuint index, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVERTEXATTRIBIVNVPROC)(GLuint index, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOCAPTUREIVNVPROC)(GLuint video_capture_slot, GLenum pname, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOI64VNVPROC)(GLuint video_slot, GLenum pname, + GLint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOIVNVPROC)(GLuint video_slot, GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOUI64VNVPROC)(GLuint video_slot, GLenum pname, + GLuint64EXT *params); +typedef void(GLAD_API_PTR *PFNGLGETVIDEOUIVNVPROC)(GLuint video_slot, GLenum pname, GLuint *params); +typedef GLVULKANPROCNV(GLAD_API_PTR *PFNGLGETVKPROCADDRNVPROC)(const GLchar *name); +typedef void(GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint lod, + GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)(GLenum target, GLint lod, + GLsizei bufSize, void *img); +typedef void(GLAD_API_PTR *PFNGLGETNTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, + GLenum type, GLsizei bufSize, void *pixels); +typedef void(GLAD_API_PTR *PFNGLGETNTEXIMAGEARBPROC)(GLenum target, GLint level, GLenum format, + GLenum type, GLsizei bufSize, void *img); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMDVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMDVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMFVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMFVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMI64VARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMIVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMIVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLint *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUI64VARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUIVPROC)(GLuint program, GLint location, GLsizei bufSize, + GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGETNUNIFORMUIVARBPROC)(GLuint program, GLint location, + GLsizei bufSize, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORBSUNPROC)(GLbyte factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORDSUNPROC)(GLdouble factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORFSUNPROC)(GLfloat factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORISUNPROC)(GLint factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORSSUNPROC)(GLshort factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUBSUNPROC)(GLubyte factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUISUNPROC)(GLuint factor); +typedef void(GLAD_API_PTR *PFNGLGLOBALALPHAFACTORUSSUNPROC)(GLushort factor); +typedef void(GLAD_API_PTR *PFNGLHINTPROC)(GLenum target, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLHINTPGIPROC)(GLenum target, GLint mode); +typedef void(GLAD_API_PTR *PFNGLHISTOGRAMEXTPROC)(GLenum target, GLsizei width, + GLenum internalformat, GLboolean sink); +typedef void(GLAD_API_PTR *PFNGLIGLOOINTERFACESGIXPROC)(GLenum pname, const void *params); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERFHPPROC)(GLenum target, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERIHPPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYFDEXTPROC)(GLuint memory, GLuint64 size, + GLenum handleType, GLint fd); +typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC)(GLuint memory, GLuint64 size, + GLenum handleType, void *handle); +typedef void(GLAD_API_PTR *PFNGLIMPORTMEMORYWIN32NAMEEXTPROC)(GLuint memory, GLuint64 size, + GLenum handleType, const void *name); +typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREFDEXTPROC)(GLuint semaphore, GLenum handleType, + GLint fd); +typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC)(GLuint semaphore, + GLenum handleType, void *handle); +typedef void(GLAD_API_PTR *PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC)(GLuint semaphore, + GLenum handleType, + const void *name); +typedef GLsync(GLAD_API_PTR *PFNGLIMPORTSYNCEXTPROC)(GLenum external_sync_type, + GLintptr external_sync, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLINDEXFORMATNVPROC)(GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLINDEXFUNCEXTPROC)(GLenum func, GLclampf ref); +typedef void(GLAD_API_PTR *PFNGLINDEXMATERIALEXTPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLINDEXPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLINDEXPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLINDEXXOESPROC)(GLfixed component); +typedef void(GLAD_API_PTR *PFNGLINDEXXVOESPROC)(const GLfixed *component); +typedef void(GLAD_API_PTR *PFNGLINSERTCOMPONENTEXTPROC)(GLuint res, GLuint src, GLuint num); +typedef void(GLAD_API_PTR *PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar *marker); +typedef void(GLAD_API_PTR *PFNGLINSTRUMENTSBUFFERSGIXPROC)(GLsizei size, GLint *buffer); +typedef void(GLAD_API_PTR *PFNGLINTERPOLATEPATHSNVPROC)(GLuint resultPath, GLuint pathA, + GLuint pathB, GLfloat weight); +typedef void(GLAD_API_PTR *PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLINVALIDATEBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length); +typedef void(GLAD_API_PTR *PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, + const GLenum *attachments); +typedef void(GLAD_API_PTR *PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)(GLuint framebuffer, + GLsizei numAttachments, + const GLenum *attachments); +typedef void(GLAD_API_PTR *PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)( + GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, + const GLenum *attachments, GLint x, + GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLINVALIDATETEXIMAGEPROC)(GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLINVALIDATETEXSUBIMAGEPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth); +typedef GLboolean(GLAD_API_PTR *PFNGLISASYNCMARKERSGIXPROC)(GLuint marker); +typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERARBPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISBUFFERRESIDENTNVPROC)(GLenum target); +typedef GLboolean(GLAD_API_PTR *PFNGLISCOMMANDLISTNVPROC)(GLuint list); +typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDPROC)(GLenum cap); +typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDINDEXEDEXTPROC)(GLenum target, GLuint index); +typedef GLboolean(GLAD_API_PTR *PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +typedef GLboolean(GLAD_API_PTR *PFNGLISFENCEAPPLEPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLISFENCENVPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISFRAMEBUFFEREXTPROC)(GLuint framebuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISMEMORYOBJECTEXTPROC)(GLuint memoryObject); +typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEAMDPROC)(GLenum identifier, GLuint name); +typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEDBUFFERRESIDENTNVPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISNAMEDSTRINGARBPROC)(GLint namelen, const GLchar *name); +typedef GLboolean(GLAD_API_PTR *PFNGLISOBJECTBUFFERATIPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISOCCLUSIONQUERYNVPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISPATHNVPROC)(GLuint path); +typedef GLboolean(GLAD_API_PTR *PFNGLISPOINTINFILLPATHNVPROC)(GLuint path, GLuint mask, GLfloat x, + GLfloat y); +typedef GLboolean(GLAD_API_PTR *PFNGLISPOINTINSTROKEPATHNVPROC)(GLuint path, GLfloat x, GLfloat y); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMPROC)(GLuint program); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMARBPROC)(GLuint program); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMNVPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef GLboolean(GLAD_API_PTR *PFNGLISQUERYPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISQUERYARBPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISRENDERBUFFEREXTPROC)(GLuint renderbuffer); +typedef GLboolean(GLAD_API_PTR *PFNGLISSAMPLERPROC)(GLuint sampler); +typedef GLboolean(GLAD_API_PTR *PFNGLISSEMAPHOREEXTPROC)(GLuint semaphore); +typedef GLboolean(GLAD_API_PTR *PFNGLISSHADERPROC)(GLuint shader); +typedef GLboolean(GLAD_API_PTR *PFNGLISSTATENVPROC)(GLuint state); +typedef GLboolean(GLAD_API_PTR *PFNGLISSYNCPROC)(GLsync sync); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREPROC)(GLuint texture); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREEXTPROC)(GLuint texture); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISTEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +typedef GLboolean(GLAD_API_PTR *PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISTRANSFORMFEEDBACKNVPROC)(GLuint id); +typedef GLboolean(GLAD_API_PTR *PFNGLISVARIANTENABLEDEXTPROC)(GLuint id, GLenum cap); +typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXARRAYPROC)(GLuint array); +typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXARRAYAPPLEPROC)(GLuint array); +typedef GLboolean(GLAD_API_PTR *PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)(GLuint index, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLLGPUCOPYIMAGESUBDATANVXPROC)( + GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, + GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, + GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, + GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLLGPUINTERLOCKNVXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC)(GLbitfield gpuMask, GLuint buffer, + GLintptr offset, GLsizeiptr size, + const void *data); +typedef void(GLAD_API_PTR *PFNGLLABELOBJECTEXTPROC)(GLenum type, GLuint object, GLsizei length, + const GLchar *label); +typedef void(GLAD_API_PTR *PFNGLLIGHTENVISGIXPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLLIGHTMODELXOESPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLLIGHTMODELXVOESPROC)(GLenum pname, const GLfixed *param); +typedef void(GLAD_API_PTR *PFNGLLIGHTXOESPROC)(GLenum light, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLLIGHTXVOESPROC)(GLenum light, GLenum pname, const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLLINEWIDTHPROC)(GLfloat width); +typedef void(GLAD_API_PTR *PFNGLLINEWIDTHXOESPROC)(GLfixed width); +typedef void(GLAD_API_PTR *PFNGLLINKPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLLINKPROGRAMARBPROC)(GLhandleARB programObj); +typedef void(GLAD_API_PTR *PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)( + GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, + const GLuint *states, const GLuint *fbos, GLuint count); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERFSGIXPROC)(GLuint list, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERFVSGIXPROC)(GLuint list, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERISGIXPROC)(GLuint list, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLLISTPARAMETERIVSGIXPROC)(GLuint list, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLLOADMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLLOADPROGRAMNVPROC)(GLenum target, GLuint id, GLsizei len, + const GLubyte *program); +typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLLOADTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLLOCKARRAYSEXTPROC)(GLint first, GLsizei count); +typedef void(GLAD_API_PTR *PFNGLLOGICOPPROC)(GLenum opcode); +typedef void(GLAD_API_PTR *PFNGLMAKEBUFFERNONRESIDENTNVPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLMAKEBUFFERRESIDENTNVPROC)(GLenum target, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)(GLuint64 handle, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)(GLuint64 handle, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)(GLuint buffer, GLenum access); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)(GLuint64 handle); +typedef void(GLAD_API_PTR *PFNGLMAP1XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint stride, + GLint order, GLfixed points); +typedef void(GLAD_API_PTR *PFNGLMAP2XOESPROC)(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, + GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, + GLint vorder, GLfixed points); +typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERARBPROC)(GLenum target, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, + GLsizeiptr length, GLbitfield access); +typedef void(GLAD_API_PTR *PFNGLMAPCONTROLPOINTSNVPROC)(GLenum target, GLuint index, GLenum type, + GLsizei ustride, GLsizei vstride, + GLint uorder, GLint vorder, + GLboolean packed, const void *points); +typedef void(GLAD_API_PTR *PFNGLMAPGRID1XOESPROC)(GLint n, GLfixed u1, GLfixed u2); +typedef void(GLAD_API_PTR *PFNGLMAPGRID2XOESPROC)(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, + GLfixed v2); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERPROC)(GLuint buffer, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFEREXTPROC)(GLuint buffer, GLenum access); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERRANGEPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length, GLbitfield access); +typedef void *(GLAD_API_PTR *PFNGLMAPNAMEDBUFFERRANGEEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr length, GLbitfield access); +typedef void *(GLAD_API_PTR *PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLMAPPARAMETERFVNVPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMAPPARAMETERIVNVPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void *(GLAD_API_PTR *PFNGLMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level, + GLbitfield access, GLint *stride, + GLenum *layout); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB1DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, + GLdouble u2, GLint stride, GLint order, + const GLdouble *points); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB1FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, + GLfloat u2, GLint stride, GLint order, + const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB2DAPPLEPROC)(GLuint index, GLuint size, GLdouble u1, + GLdouble u2, GLint ustride, + GLint uorder, GLdouble v1, GLdouble v2, + GLint vstride, GLint vorder, + const GLdouble *points); +typedef void(GLAD_API_PTR *PFNGLMAPVERTEXATTRIB2FAPPLEPROC)(GLuint index, GLuint size, GLfloat u1, + GLfloat u2, GLint ustride, GLint uorder, + GLfloat v1, GLfloat v2, GLint vstride, + GLint vorder, const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLMATERIALXOESPROC)(GLenum face, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLMATERIALXVOESPROC)(GLenum face, GLenum pname, const GLfixed *param); +typedef void(GLAD_API_PTR *PFNGLMATRIXFRUSTUMEXTPROC)(GLenum mode, GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, GLdouble zNear, + GLdouble zFar); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUBVARBPROC)(GLint size, const GLubyte *indices); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUIVARBPROC)(GLint size, const GLuint *indices); +typedef void(GLAD_API_PTR *PFNGLMATRIXINDEXUSVARBPROC)(GLint size, const GLushort *indices); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOAD3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOAD3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADIDENTITYEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXLOADFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULT3X2FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULT3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)(GLenum matrixMode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSEDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTTRANSPOSEFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTDEXTPROC)(GLenum mode, const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXMULTFEXTPROC)(GLenum mode, const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMATRIXORTHOEXTPROC)(GLenum mode, GLdouble left, GLdouble right, + GLdouble bottom, GLdouble top, GLdouble zNear, + GLdouble zFar); +typedef void(GLAD_API_PTR *PFNGLMATRIXPOPEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLMATRIXPUSHEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLMATRIXROTATEDEXTPROC)(GLenum mode, GLdouble angle, GLdouble x, + GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLMATRIXROTATEFEXTPROC)(GLenum mode, GLfloat angle, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLMATRIXSCALEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLMATRIXSCALEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLMATRIXTRANSLATEDEXTPROC)(GLenum mode, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLMATRIXTRANSLATEFEXTPROC)(GLenum mode, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLMAXSHADERCOMPILERTHREADSARBPROC)(GLuint count); +typedef void(GLAD_API_PTR *PFNGLMAXSHADERCOMPILERTHREADSKHRPROC)(GLuint count); +typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIERPROC)(GLbitfield barriers); +typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIERBYREGIONPROC)(GLbitfield barriers); +typedef void(GLAD_API_PTR *PFNGLMEMORYBARRIEREXTPROC)(GLbitfield barriers); +typedef void(GLAD_API_PTR *PFNGLMEMORYOBJECTPARAMETERIVEXTPROC)(GLuint memoryObject, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMINSAMPLESHADINGPROC)(GLfloat value); +typedef void(GLAD_API_PTR *PFNGLMINSAMPLESHADINGARBPROC)(GLfloat value); +typedef void(GLAD_API_PTR *PFNGLMINMAXEXTPROC)(GLenum target, GLenum internalformat, + GLboolean sink); +typedef void(GLAD_API_PTR *PFNGLMULTMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXDARBPROC)(const GLdouble *m); +typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXFARBPROC)(const GLfloat *m); +typedef void(GLAD_API_PTR *PFNGLMULTTRANSPOSEMATRIXXOESPROC)(const GLfixed *m); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, + const GLsizei *count, GLsizei drawcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSEXTPROC)(GLenum mode, const GLint *first, + const GLsizei *count, GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect, + GLsizei drawcount, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)(GLenum mode, const void *indirect, + GLsizei primcount, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, + GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)(GLenum mode, + const void *indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC)(GLenum mode, const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)(GLenum mode, + const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)(GLenum mode, const GLint *first, + const GLsizei *count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, + GLenum type, const void *const *indices, + GLsizei drawcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, + GLenum type, + const void *const *indices, + GLsizei drawcount, + const GLint *basevertex); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSEXTPROC)(GLenum mode, const GLsizei *count, + GLenum type, const void *const *indices, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, + const void *indirect, + GLsizei drawcount, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)(GLenum mode, GLenum type, + const void *indirect, + GLsizei primcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)( + GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, + GLsizei stride, GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)(GLenum mode, GLenum type, + const void *indirect, + GLsizei drawCount, + GLsizei stride, + GLint vertexBufferCount); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC)(GLenum mode, GLenum type, + const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)(GLenum mode, GLenum type, + const void *indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC)(GLintptr indirect, + GLintptr drawcount, + GLsizei maxdrawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC)(GLintptr indirect, + GLsizei drawcount, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)(GLenum mode, GLuint start, + GLuint end, const GLint *first, + const GLsizei *count, + GLsizei primcount); +typedef void(GLAD_API_PTR *PFNGLMULTIMODEDRAWARRAYSIBMPROC)(const GLenum *mode, const GLint *first, + const GLsizei *count, GLsizei primcount, + GLint modestride); +typedef void(GLAD_API_PTR *PFNGLMULTIMODEDRAWELEMENTSIBMPROC)(const GLenum *mode, + const GLsizei *count, GLenum type, + const void *const *indices, + GLsizei primcount, GLint modestride); +typedef void(GLAD_API_PTR *PFNGLMULTITEXBUFFEREXTPROC)(GLenum texunit, GLenum target, + GLenum internalformat, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1BOESPROC)(GLenum texture, GLbyte s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1DARBPROC)(GLenum target, GLdouble s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1FARBPROC)(GLenum target, GLfloat s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1HNVPROC)(GLenum target, GLhalfNV s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1IARBPROC)(GLenum target, GLint s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1SARBPROC)(GLenum target, GLshort s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1XOESPROC)(GLenum texture, GLfixed s); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD1XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2BOESPROC)(GLenum texture, GLbyte s, GLbyte t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2DARBPROC)(GLenum target, GLdouble s, GLdouble t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2FARBPROC)(GLenum target, GLfloat s, GLfloat t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2IARBPROC)(GLenum target, GLint s, GLint t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2SARBPROC)(GLenum target, GLshort s, GLshort t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2XOESPROC)(GLenum texture, GLfixed s, GLfixed t); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD2XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3BOESPROC)(GLenum texture, GLbyte s, GLbyte t, + GLbyte r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3DARBPROC)(GLenum target, GLdouble s, GLdouble t, + GLdouble r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3FARBPROC)(GLenum target, GLfloat s, GLfloat t, + GLfloat r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, + GLhalfNV r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3IARBPROC)(GLenum target, GLint s, GLint t, GLint r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3SARBPROC)(GLenum target, GLshort s, GLshort t, + GLshort r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3XOESPROC)(GLenum texture, GLfixed s, GLfixed t, + GLfixed r); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD3XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4BOESPROC)(GLenum texture, GLbyte s, GLbyte t, + GLbyte r, GLbyte q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4BVOESPROC)(GLenum texture, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4DARBPROC)(GLenum target, GLdouble s, GLdouble t, + GLdouble r, GLdouble q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4DVARBPROC)(GLenum target, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4FARBPROC)(GLenum target, GLfloat s, GLfloat t, + GLfloat r, GLfloat q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4FVARBPROC)(GLenum target, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4HNVPROC)(GLenum target, GLhalfNV s, GLhalfNV t, + GLhalfNV r, GLhalfNV q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4HVNVPROC)(GLenum target, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4IARBPROC)(GLenum target, GLint s, GLint t, GLint r, + GLint q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4IVARBPROC)(GLenum target, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4SARBPROC)(GLenum target, GLshort s, GLshort t, + GLshort r, GLshort q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4SVARBPROC)(GLenum target, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4XOESPROC)(GLenum texture, GLfixed s, GLfixed t, + GLfixed r, GLfixed q); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORD4XVOESPROC)(GLenum texture, const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLMULTITEXCOORDPOINTEREXTPROC)(GLenum texunit, GLint size, + GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVFEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVFVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVIEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXENVIVEXTPROC)(GLenum texunit, GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENDEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLdouble param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENDVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENFEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENFVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENIEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXGENIVEXTPROC)(GLenum texunit, GLenum coord, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE1DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE2DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLint border, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXIMAGE3DEXTPROC)(GLenum texunit, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIUIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERFEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERFVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLMULTITEXPARAMETERIVEXTPROC)(GLenum texunit, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTITEXRENDERBUFFEREXTPROC)(GLenum texunit, GLenum target, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE1DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLsizei width, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE2DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLsizei width, + GLsizei height, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTITEXSUBIMAGE3DEXTPROC)(GLenum texunit, GLenum target, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, + GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLMULTICASTBARRIERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLMULTICASTBLITFRAMEBUFFERNVPROC)( + GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef void(GLAD_API_PTR *PFNGLMULTICASTBUFFERSUBDATANVPROC)(GLbitfield gpuMask, GLuint buffer, + GLintptr offset, GLsizeiptr size, + const void *data); +typedef void(GLAD_API_PTR *PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC)( + GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, + GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLMULTICASTCOPYIMAGESUBDATANVPROC)( + GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, + GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, + GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); +typedef void(GLAD_API_PTR *PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)( + GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLint64 *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTIVNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLint *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC)(GLuint gpu, GLuint id, + GLenum pname, GLuint *params); +typedef void(GLAD_API_PTR *PFNGLMULTICASTSCISSORARRAYVNVXPROC)(GLuint gpu, GLuint first, + GLsizei count, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLMULTICASTVIEWPORTARRAYVNVXPROC)(GLuint gpu, GLuint first, + GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC)(GLuint gpu, GLuint index, + GLfloat xcoeff, + GLfloat ycoeff); +typedef void(GLAD_API_PTR *PFNGLMULTICASTWAITSYNCNVPROC)(GLuint signalGpu, GLbitfield waitGpuMask); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERATTACHMEMORYNVPROC)(GLuint buffer, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERDATAPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLenum usage); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERDATAEXTPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLenum usage); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, GLuint memory, + GLuint64 memOffset, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEEXTPROC)(GLuint buffer, GLsizeiptr size, + const void *data, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC)( + GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC)(GLuint buffer, GLsizeiptr size, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSUBDATAPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, const void *data); +typedef void(GLAD_API_PTR *PFNGLNAMEDBUFFERSUBDATAEXTPROC)(GLuint buffer, GLintptr offset, + GLsizeiptr size, const void *data); +typedef void(GLAD_API_PTR *PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)(GLuint readBuffer, + GLuint writeBuffer, + GLintptr readOffset, + GLintptr writeOffset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)(GLuint framebuffer, GLenum buf); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)(GLuint framebuffer, GLsizei n, + const GLenum *bufs); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)(GLuint framebuffer, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)(GLuint framebuffer, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)(GLuint framebuffer, GLenum src); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)(GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)(GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)(GLuint framebuffer, + GLuint start, + GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC)(GLuint framebuffer, + GLuint numsamples, + GLuint pixelindex, + const GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)(GLuint framebuffer, GLenum attachment, + GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum textarget, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)(GLuint framebuffer, + GLenum attachment, GLuint texture, + GLint level); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)(GLuint framebuffer, + GLenum attachment, + GLuint texture, GLint level, + GLenum face); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)(GLuint framebuffer, + GLenum attachment, GLuint texture, + GLint level, GLint layer); +typedef void(GLAD_API_PTR *PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)(GLuint framebuffer, + GLenum attachment, + GLuint texture, GLint level, + GLint layer); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)(GLuint program, GLenum target, + GLuint index, GLdouble x, + GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)(GLuint program, GLenum target, + GLuint index, GLfloat x, + GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)(GLuint program, GLenum target, + GLuint index, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)(GLuint program, GLenum target, + GLuint index, GLint x, + GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)(GLuint program, + GLenum target, GLuint index, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)(GLuint program, + GLenum target, GLuint index, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)(GLuint program, + GLenum target, GLuint index, + GLsizei count, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)( + GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLNAMEDPROGRAMSTRINGEXTPROC)(GLuint program, GLenum target, + GLenum format, GLsizei len, + const void *string); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEPROC)(GLuint renderbuffer, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)(GLuint renderbuffer, + GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)( + GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)( + GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLNAMEDSTRINGARBPROC)(GLenum type, GLint namelen, const GLchar *name, + GLint stringlen, const GLchar *string); +typedef GLuint(GLAD_API_PTR *PFNGLNEWOBJECTBUFFERATIPROC)(GLsizei size, const void *pointer, + GLenum usage); +typedef void(GLAD_API_PTR *PFNGLNORMAL3FVERTEX3FSUNPROC)(GLfloat nx, GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLNORMAL3HNVPROC)(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); +typedef void(GLAD_API_PTR *PFNGLNORMAL3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLNORMAL3XOESPROC)(GLfixed nx, GLfixed ny, GLfixed nz); +typedef void(GLAD_API_PTR *PFNGLNORMAL3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALFORMATNVPROC)(GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLNORMALPOINTEREXTPROC)(GLenum type, GLsizei stride, GLsizei count, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLNORMALPOINTERLISTIBMPROC)(GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLNORMALPOINTERVINTELPROC)(GLenum type, const void **pointer); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3BATIPROC)(GLenum stream, GLbyte nx, GLbyte ny, + GLbyte nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3BVATIPROC)(GLenum stream, const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3DATIPROC)(GLenum stream, GLdouble nx, GLdouble ny, + GLdouble nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3FATIPROC)(GLenum stream, GLfloat nx, GLfloat ny, + GLfloat nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3IATIPROC)(GLenum stream, GLint nx, GLint ny, GLint nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3SATIPROC)(GLenum stream, GLshort nx, GLshort ny, + GLshort nz); +typedef void(GLAD_API_PTR *PFNGLNORMALSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLOBJECTLABELPROC)(GLenum identifier, GLuint name, GLsizei length, + const GLchar *label); +typedef void(GLAD_API_PTR *PFNGLOBJECTPTRLABELPROC)(const void *ptr, GLsizei length, + const GLchar *label); +typedef GLenum(GLAD_API_PTR *PFNGLOBJECTPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, + GLenum option); +typedef GLenum(GLAD_API_PTR *PFNGLOBJECTUNPURGEABLEAPPLEPROC)(GLenum objectType, GLuint name, + GLenum option); +typedef void(GLAD_API_PTR *PFNGLORTHOFOESPROC)(GLfloat l, GLfloat r, GLfloat b, GLfloat t, + GLfloat n, GLfloat f); +typedef void(GLAD_API_PTR *PFNGLORTHOXOESPROC)(GLfixed l, GLfixed r, GLfixed b, GLfixed t, + GLfixed n, GLfixed f); +typedef void(GLAD_API_PTR *PFNGLPNTRIANGLESFATIPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPNTRIANGLESIATIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); +typedef void(GLAD_API_PTR *PFNGLPASSTHROUGHXOESPROC)(GLfixed token); +typedef void(GLAD_API_PTR *PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); +typedef void(GLAD_API_PTR *PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLPATHCOMMANDSNVPROC)(GLuint path, GLsizei numCommands, + const GLubyte *commands, GLsizei numCoords, + GLenum coordType, const void *coords); +typedef void(GLAD_API_PTR *PFNGLPATHCOORDSNVPROC)(GLuint path, GLsizei numCoords, GLenum coordType, + const void *coords); +typedef void(GLAD_API_PTR *PFNGLPATHCOVERDEPTHFUNCNVPROC)(GLenum func); +typedef void(GLAD_API_PTR *PFNGLPATHDASHARRAYNVPROC)(GLuint path, GLsizei dashCount, + const GLfloat *dashArray); +typedef GLenum(GLAD_API_PTR *PFNGLPATHGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, + GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum(GLAD_API_PTR *PFNGLPATHGLYPHINDEXRANGENVPROC)(GLenum fontTarget, + const void *fontName, + GLbitfield fontStyle, + GLuint pathParameterTemplate, + GLfloat emScale, GLuint *baseAndCount); +typedef void(GLAD_API_PTR *PFNGLPATHGLYPHRANGENVPROC)(GLuint firstPathName, GLenum fontTarget, + const void *fontName, GLbitfield fontStyle, + GLuint firstGlyph, GLsizei numGlyphs, + GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, + GLfloat emScale); +typedef void(GLAD_API_PTR *PFNGLPATHGLYPHSNVPROC)(GLuint firstPathName, GLenum fontTarget, + const void *fontName, GLbitfield fontStyle, + GLsizei numGlyphs, GLenum type, + const void *charcodes, GLenum handleMissingGlyphs, + GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum(GLAD_API_PTR *PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)( + GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, + GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, + GLfloat emScale); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERFNVPROC)(GLuint path, GLenum pname, GLfloat value); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERFVNVPROC)(GLuint path, GLenum pname, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERINVPROC)(GLuint path, GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLPATHPARAMETERIVNVPROC)(GLuint path, GLenum pname, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPATHSTENCILDEPTHOFFSETNVPROC)(GLfloat factor, GLfloat units); +typedef void(GLAD_API_PTR *PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLPATHSTRINGNVPROC)(GLuint path, GLenum format, GLsizei length, + const void *pathString); +typedef void(GLAD_API_PTR *PFNGLPATHSUBCOMMANDSNVPROC)(GLuint path, GLsizei commandStart, + GLsizei commandsToDelete, + GLsizei numCommands, const GLubyte *commands, + GLsizei numCoords, GLenum coordType, + const void *coords); +typedef void(GLAD_API_PTR *PFNGLPATHSUBCOORDSNVPROC)(GLuint path, GLsizei coordStart, + GLsizei numCoords, GLenum coordType, + const void *coords); +typedef void(GLAD_API_PTR *PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPAUSETRANSFORMFEEDBACKNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPIXELDATARANGENVPROC)(GLenum target, GLsizei length, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLPIXELMAPXPROC)(GLenum map, GLint size, const GLfixed *values); +typedef void(GLAD_API_PTR *PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPIXELSTOREXPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERFVSGISPROC)(GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERISGISPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENPARAMETERIVSGISPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPIXELTEXGENSGIXPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFERXOESPROC)(GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)(GLenum target, GLenum pname, + GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)(GLenum target, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPIXELZOOMXOESPROC)(GLfixed xfactor, GLfixed yfactor); +typedef GLboolean(GLAD_API_PTR *PFNGLPOINTALONGPATHNVPROC)(GLuint path, GLsizei startSegment, + GLsizei numSegments, GLfloat distance, + GLfloat *x, GLfloat *y, + GLfloat *tangentX, GLfloat *tangentY); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFARBPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFEXTPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFSGISPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVARBPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERFVSGISPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERINVPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERIVNVPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPOINTPARAMETERXVOESPROC)(GLenum pname, const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLPOINTSIZEPROC)(GLfloat size); +typedef void(GLAD_API_PTR *PFNGLPOINTSIZEXOESPROC)(GLfixed size); +typedef GLint(GLAD_API_PTR *PFNGLPOLLASYNCSGIXPROC)(GLuint *markerp); +typedef GLint(GLAD_API_PTR *PFNGLPOLLINSTRUMENTSSGIXPROC)(GLint *marker_p); +typedef void(GLAD_API_PTR *PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat units, + GLfloat clamp); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETCLAMPEXTPROC)(GLfloat factor, GLfloat units, + GLfloat clamp); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETEXTPROC)(GLfloat factor, GLfloat bias); +typedef void(GLAD_API_PTR *PFNGLPOLYGONOFFSETXOESPROC)(GLfixed factor, GLfixed units); +typedef void(GLAD_API_PTR *PFNGLPOPDEBUGGROUPPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPOPGROUPMARKEREXTPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPRESENTFRAMEDUALFILLNVPROC)( + GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, + GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, + GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); +typedef void(GLAD_API_PTR *PFNGLPRESENTFRAMEKEYEDNVPROC)(GLuint video_slot, + GLuint64EXT minPresentTime, + GLuint beginPresentTimeId, + GLuint presentDurationId, GLenum type, + GLenum target0, GLuint fill0, GLuint key0, + GLenum target1, GLuint fill1, GLuint key1); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVEBOUNDINGBOXARBPROC)(GLfloat minX, GLfloat minY, + GLfloat minZ, GLfloat minW, + GLfloat maxX, GLfloat maxY, + GLfloat maxZ, GLfloat maxW); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTINDEXNVPROC)(GLuint index); +typedef void(GLAD_API_PTR *PFNGLPRIMITIVERESTARTNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLPRIORITIZETEXTURESEXTPROC)(GLsizei n, const GLuint *textures, + const GLclampf *priorities); +typedef void(GLAD_API_PTR *PFNGLPRIORITIZETEXTURESXOESPROC)(GLsizei n, const GLuint *textures, + const GLfixed *priorities); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, + const void *binary, GLsizei length); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)(GLenum target, + GLuint bindingIndex, + GLuint wordIndex, GLsizei count, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)(GLenum target, + GLuint bindingIndex, + GLuint wordIndex, GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)(GLenum target, GLuint bindingIndex, + GLuint wordIndex, GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, + GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, + GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4INVPROC)(GLenum target, GLuint index, GLint x, + GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4IVNVPROC)(GLenum target, GLuint index, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4UINVPROC)(GLenum target, GLuint index, + GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, + GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, + GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, + GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, + GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4INVPROC)(GLenum target, GLuint index, + GLint x, GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)(GLenum target, GLuint index, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)(GLenum target, GLuint index, + GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)(GLenum target, GLuint index, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)(GLenum target, GLuint index, + GLsizei count, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)(GLenum target, GLuint index, + GLsizei count, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)(GLenum target, GLuint index, + GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)(GLuint id, GLsizei len, + const GLubyte *name, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4DNVPROC)(GLenum target, GLuint index, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4DVNVPROC)(GLenum target, GLuint index, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4FNVPROC)(GLenum target, GLuint index, GLfloat x, + GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETER4FVNVPROC)(GLenum target, GLuint index, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIARBPROC)(GLuint program, GLenum pname, + GLint value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERIEXTPROC)(GLuint program, GLenum pname, + GLint value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERS4DVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPARAMETERS4FVNVPROC)(GLenum target, GLuint index, + GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)(GLuint program, GLint location, + GLenum genMode, GLint components, + const GLfloat *coeffs); +typedef void(GLAD_API_PTR *PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len, + const void *string); +typedef void(GLAD_API_PTR *PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)(GLenum target, GLsizei count, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DEXTPROC)(GLuint program, GLint location, + GLdouble x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FEXTPROC)(GLuint program, GLint location, + GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64ARBPROC)(GLuint program, GLint location, + GLint64 x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64NVPROC)(GLuint program, GLint location, + GLint64EXT x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IEXTPROC)(GLuint program, GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIEXTPROC)(GLuint program, GLint location, + GLuint v0); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM1UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, + GLdouble v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DEXTPROC)(GLuint program, GLint location, GLdouble x, + GLdouble y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, + GLint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64ARBPROC)(GLuint program, GLint location, + GLint64 x, GLint64 y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64NVPROC)(GLuint program, GLint location, + GLint64EXT x, GLint64EXT y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x, GLuint64 y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x, GLuint64EXT y); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM2UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, + GLdouble v1, GLdouble v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DEXTPROC)(GLuint program, GLint location, GLdouble x, + GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64ARBPROC)(GLuint program, GLint location, + GLint64 x, GLint64 y, GLint64 z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64NVPROC)(GLuint program, GLint location, + GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x, GLuint64 y, GLuint64 z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM3UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, + GLdouble v1, GLdouble v2, GLdouble v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DEXTPROC)(GLuint program, GLint location, GLdouble x, + GLdouble y, GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2, GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FEXTPROC)(GLuint program, GLint location, GLfloat v0, + GLfloat v1, GLfloat v2, GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2, GLint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64ARBPROC)(GLuint program, GLint location, + GLint64 x, GLint64 y, GLint64 z, + GLint64 w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64NVPROC)(GLuint program, GLint location, + GLint64EXT x, GLint64EXT y, GLint64EXT z, + GLint64EXT w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4I64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IEXTPROC)(GLuint program, GLint location, GLint v0, + GLint v1, GLint v2, GLint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4IVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2, GLuint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64ARBPROC)(GLuint program, GLint location, + GLuint64 x, GLuint64 y, GLuint64 z, + GLuint64 w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64NVPROC)(GLuint program, GLint location, + GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z, GLuint64EXT w); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64VARBPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIEXTPROC)(GLuint program, GLint location, GLuint v0, + GLuint v1, GLuint v2, GLuint v3); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORM4UIVEXTPROC)(GLuint program, GLint location, + GLsizei count, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)(GLuint program, GLint location, + GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)(GLuint program, GLint location, + GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64 *values); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)(GLuint program, GLint location, + GLsizei count, + const GLuint64 *values); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, + GLsizei count, GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)(GLuint program, GLint location, + GLsizei count, + GLboolean transpose, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMUI64NVPROC)(GLuint program, GLint location, + GLuint64EXT value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMUNIFORMUI64VNVPROC)(GLuint program, GLint location, + GLsizei count, const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLPROGRAMVERTEXLIMITNVPROC)(GLenum target, GLint limit); +typedef void(GLAD_API_PTR *PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPROVOKINGVERTEXEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLPUSHDEBUGGROUPPROC)(GLenum source, GLuint id, GLsizei length, + const GLchar *message); +typedef void(GLAD_API_PTR *PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar *marker); +typedef void(GLAD_API_PTR *PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +typedef GLbitfield(GLAD_API_PTR *PFNGLQUERYMATRIXXOESPROC)(GLfixed *mantissa, GLint *exponent); +typedef void(GLAD_API_PTR *PFNGLQUERYOBJECTPARAMETERUIAMDPROC)(GLenum target, GLuint id, + GLenum pname, GLuint param); +typedef GLint(GLAD_API_PTR *PFNGLQUERYRESOURCENVPROC)(GLenum queryType, GLint tagId, GLuint count, + GLint *buffer); +typedef void(GLAD_API_PTR *PFNGLQUERYRESOURCETAGNVPROC)(GLint tagId, const GLchar *tagString); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS2XOESPROC)(GLfixed x, GLfixed y); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS3XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS4XOESPROC)(GLfixed x, GLfixed y, GLfixed z, GLfixed w); +typedef void(GLAD_API_PTR *PFNGLRASTERPOS4XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLRASTERSAMPLESEXTPROC)(GLuint samples, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLREADBUFFERPROC)(GLenum src); +typedef void(GLAD_API_PTR *PFNGLREADINSTRUMENTSSGIXPROC)(GLint marker); +typedef void(GLAD_API_PTR *PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, void *pixels); +typedef void(GLAD_API_PTR *PFNGLREADNPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei bufSize, + void *data); +typedef void(GLAD_API_PTR *PFNGLREADNPIXELSARBPROC)(GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei bufSize, + void *data); +typedef void(GLAD_API_PTR *PFNGLRECTXOESPROC)(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); +typedef void(GLAD_API_PTR *PFNGLRECTXVOESPROC)(const GLfixed *v1, const GLfixed *v2); +typedef void(GLAD_API_PTR *PFNGLREFERENCEPLANESGIXPROC)(const GLdouble *equation); +typedef GLboolean(GLAD_API_PTR *PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC)(GLuint memory, GLuint64 key); +typedef void(GLAD_API_PTR *PFNGLRELEASESHADERCOMPILERPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRENDERGPUMASKNVPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC)( + GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)( + GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)( + GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEPOINTERSUNPROC)(GLenum type, GLsizei stride, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUBSUNPROC)(GLubyte code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUBVSUNPROC)(const GLubyte *code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)(GLuint rc, GLfloat r, + GLfloat g, GLfloat b, + GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *c, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)(GLuint rc, GLubyte r, + GLubyte g, GLubyte b, + GLubyte a, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)(const GLuint *rc, + const GLubyte *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)(GLuint rc, GLfloat nx, + GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUISUNPROC)(GLuint code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, + GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)( + GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)( + const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)(GLuint rc, GLfloat s, + GLfloat t, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *tc, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)(GLuint rc, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)(const GLuint *rc, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUIVSUNPROC)(const GLuint *code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUSSUNPROC)(GLushort code); +typedef void(GLAD_API_PTR *PFNGLREPLACEMENTCODEUSVSUNPROC)(const GLushort *code); +typedef void(GLAD_API_PTR *PFNGLREQUESTRESIDENTPROGRAMSNVPROC)(GLsizei n, const GLuint *programs); +typedef void(GLAD_API_PTR *PFNGLRESETHISTOGRAMEXTPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLRESETMEMORYOBJECTPARAMETERNVPROC)(GLuint memory, GLenum pname); +typedef void(GLAD_API_PTR *PFNGLRESETMINMAXEXTPROC)(GLenum target); +typedef void(GLAD_API_PTR *PFNGLRESIZEBUFFERSMESAPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRESOLVEDEPTHVALUESNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); +typedef void(GLAD_API_PTR *PFNGLRESUMETRANSFORMFEEDBACKNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLROTATEXOESPROC)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLECOVERAGEARBPROC)(GLfloat value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKEXTPROC)(GLclampf value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKINDEXEDNVPROC)(GLuint index, GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKSGISPROC)(GLclampf value, GLboolean invert); +typedef void(GLAD_API_PTR *PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLSAMPLEPATTERNEXTPROC)(GLenum pattern); +typedef void(GLAD_API_PTR *PFNGLSAMPLEPATTERNSGISPROC)(GLenum pattern); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, + const GLint *param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, + const GLuint *param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, + const GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, + const GLint *param); +typedef void(GLAD_API_PTR *PFNGLSCALEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSCISSOREXCLUSIVEARRAYVNVPROC)(GLuint first, GLsizei count, + const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSCISSOREXCLUSIVENVPROC)(GLint x, GLint y, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3BEXTPROC)(GLbyte red, GLbyte green, GLbyte blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3BVEXTPROC)(const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3DEXTPROC)(GLdouble red, GLdouble green, + GLdouble blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3DVEXTPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3FEXTPROC)(GLfloat red, GLfloat green, GLfloat blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3FVEXTPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3HNVPROC)(GLhalfNV red, GLhalfNV green, + GLhalfNV blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3IEXTPROC)(GLint red, GLint green, GLint blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3IVEXTPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3SEXTPROC)(GLshort red, GLshort green, GLshort blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3SVEXTPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBEXTPROC)(GLubyte red, GLubyte green, GLubyte blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UBVEXTPROC)(const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIEXTPROC)(GLuint red, GLuint green, GLuint blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3UIVEXTPROC)(const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3USEXTPROC)(GLushort red, GLushort green, + GLushort blue); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLOR3USVEXTPROC)(const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORFORMATNVPROC)(GLint size, GLenum type, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORPOINTEREXTPROC)(GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)(GLint size, GLenum type, + GLint stride, + const void **pointer, + GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)(GLuint monitor, GLboolean enable, + GLuint group, GLint numCounters, + GLuint *counterList); +typedef void(GLAD_API_PTR *PFNGLSEMAPHOREPARAMETERIVNVPROC)(GLuint semaphore, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLSEMAPHOREPARAMETERUI64VEXTPROC)(GLuint semaphore, GLenum pname, + const GLuint64 *params); +typedef void(GLAD_API_PTR *PFNGLSEPARABLEFILTER2DEXTPROC)(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *row, const void *column); +typedef void(GLAD_API_PTR *PFNGLSETFENCEAPPLEPROC)(GLuint fence); +typedef void(GLAD_API_PTR *PFNGLSETFENCENVPROC)(GLuint fence, GLenum condition); +typedef void(GLAD_API_PTR *PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLSETINVARIANTEXTPROC)(GLuint id, GLenum type, const void *addr); +typedef void(GLAD_API_PTR *PFNGLSETLOCALCONSTANTEXTPROC)(GLuint id, GLenum type, const void *addr); +typedef void(GLAD_API_PTR *PFNGLSETMULTISAMPLEFVAMDPROC)(GLenum pname, GLuint index, + const GLfloat *val); +typedef void(GLAD_API_PTR *PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, + GLenum binaryFormat, const void *binary, + GLsizei length); +typedef void(GLAD_API_PTR *PFNGLSHADEROP1EXTPROC)(GLenum op, GLuint res, GLuint arg1); +typedef void(GLAD_API_PTR *PFNGLSHADEROP2EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2); +typedef void(GLAD_API_PTR *PFNGLSHADEROP3EXTPROC)(GLenum op, GLuint res, GLuint arg1, GLuint arg2, + GLuint arg3); +typedef void(GLAD_API_PTR *PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, + const GLchar *const *string, const GLint *length); +typedef void(GLAD_API_PTR *PFNGLSHADERSOURCEARBPROC)(GLhandleARB shaderObj, GLsizei count, + const GLcharARB **string, const GLint *length); +typedef void(GLAD_API_PTR *PFNGLSHADERSTORAGEBLOCKBINDINGPROC)(GLuint program, + GLuint storageBlockIndex, + GLuint storageBlockBinding); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATEIMAGEBARRIERNVPROC)(GLboolean synchronize); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATEIMAGEPALETTENVPROC)(GLuint viewport, GLuint first, + GLsizei count, const GLenum *rates); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC)(GLenum rate, GLuint samples, + const GLint *locations); +typedef void(GLAD_API_PTR *PFNGLSHADINGRATESAMPLEORDERNVPROC)(GLenum order); +typedef void(GLAD_API_PTR *PFNGLSHARPENTEXFUNCSGISPROC)(GLenum target, GLsizei n, + const GLfloat *points); +typedef void(GLAD_API_PTR *PFNGLSIGNALSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, + const GLuint *buffers, + GLuint numTextureBarriers, + const GLuint *textures, + const GLenum *dstLayouts); +typedef void(GLAD_API_PTR *PFNGLSIGNALSEMAPHOREUI64NVXPROC)(GLuint signalGpu, + GLsizei fenceObjectCount, + const GLuint *semaphoreArray, + const GLuint64 *fenceValueArray); +typedef void(GLAD_API_PTR *PFNGLSIGNALVKFENCENVPROC)(GLuint64 vkFence); +typedef void(GLAD_API_PTR *PFNGLSIGNALVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +typedef void(GLAD_API_PTR *PFNGLSPECIALIZESHADERPROC)(GLuint shader, const GLchar *pEntryPoint, + GLuint numSpecializationConstants, + const GLuint *pConstantIndex, + const GLuint *pConstantValue); +typedef void(GLAD_API_PTR *PFNGLSPECIALIZESHADERARBPROC)(GLuint shader, const GLchar *pEntryPoint, + GLuint numSpecializationConstants, + const GLuint *pConstantIndex, + const GLuint *pConstantValue); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERFSGIXPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERFVSGIXPROC)(GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERISGIXPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLSPRITEPARAMETERIVSGIXPROC)(GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLSTARTINSTRUMENTSSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLSTATECAPTURENVPROC)(GLuint state, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLSTENCILCLEARTAGEXTPROC)(GLsizei stencilTagBits, + GLuint stencilClearTag); +typedef void(GLAD_API_PTR *PFNGLSTENCILFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, + GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILFILLPATHNVPROC)(GLuint path, GLenum fillMode, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, + GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, + GLint ref, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILMASKPROC)(GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, + GLenum dppass); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, + GLenum dppass); +typedef void(GLAD_API_PTR *PFNGLSTENCILOPVALUEAMDPROC)(GLenum face, GLuint value); +typedef void(GLAD_API_PTR *PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, + GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path, GLint reference, GLuint mask); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, + GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path, GLenum fillMode, + GLuint mask, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)( + GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, + GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)(GLuint path, GLint reference, + GLuint mask, GLenum coverMode); +typedef void(GLAD_API_PTR *PFNGLSTOPINSTRUMENTSSGIXPROC)(GLint marker); +typedef void(GLAD_API_PTR *PFNGLSTRINGMARKERGREMEDYPROC)(GLsizei len, const void *string); +typedef void(GLAD_API_PTR *PFNGLSUBPIXELPRECISIONBIASNVPROC)(GLuint xbits, GLuint ybits); +typedef void(GLAD_API_PTR *PFNGLSWIZZLEEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, + GLenum outZ, GLenum outW); +typedef void(GLAD_API_PTR *PFNGLSYNCTEXTUREINTELPROC)(GLuint texture); +typedef void(GLAD_API_PTR *PFNGLTAGSAMPLEBUFFERSGIXPROC)(void); +typedef void(GLAD_API_PTR *PFNGLTANGENT3BEXTPROC)(GLbyte tx, GLbyte ty, GLbyte tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3BVEXTPROC)(const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3DEXTPROC)(GLdouble tx, GLdouble ty, GLdouble tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3DVEXTPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3FEXTPROC)(GLfloat tx, GLfloat ty, GLfloat tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3FVEXTPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3IEXTPROC)(GLint tx, GLint ty, GLint tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3IVEXTPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLTANGENT3SEXTPROC)(GLshort tx, GLshort ty, GLshort tz); +typedef void(GLAD_API_PTR *PFNGLTANGENT3SVEXTPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLTANGENTPOINTEREXTPROC)(GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLTBUFFERMASK3DFXPROC)(GLuint mask); +typedef void(GLAD_API_PTR *PFNGLTESSELLATIONFACTORAMDPROC)(GLfloat factor); +typedef void(GLAD_API_PTR *PFNGLTESSELLATIONMODEAMDPROC)(GLenum mode); +typedef GLboolean(GLAD_API_PTR *PFNGLTESTFENCEAPPLEPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLTESTFENCENVPROC)(GLuint fence); +typedef GLboolean(GLAD_API_PTR *PFNGLTESTOBJECTAPPLEPROC)(GLenum object, GLuint name); +typedef void(GLAD_API_PTR *PFNGLTEXATTACHMEMORYNVPROC)(GLenum target, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFERARBPROC)(GLenum target, GLenum internalformat, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFEREXTPROC)(GLenum target, GLenum internalformat, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXBUFFERRANGEPROC)(GLenum target, GLenum internalformat, + GLuint buffer, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTEXBUMPPARAMETERFVATIPROC)(GLenum pname, const GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLTEXBUMPPARAMETERIVATIPROC)(GLenum pname, const GLint *param); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1BOESPROC)(GLbyte s); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1HNVPROC)(GLhalfNV s); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1XOESPROC)(GLfixed s); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD1XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2BOESPROC)(GLbyte s, GLbyte t); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat r, + GLfloat g, GLfloat b, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLfloat *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)( + GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, + GLfloat nz, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLfloat *c, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLubyte r, + GLubyte g, GLubyte b, GLubyte a, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLubyte *c, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat nx, + GLfloat ny, GLfloat nz, + GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)(const GLfloat *tc, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FVERTEX3FSUNPROC)(GLfloat s, GLfloat t, GLfloat x, + GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2FVERTEX3FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2HNVPROC)(GLhalfNV s, GLhalfNV t); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2XOESPROC)(GLfixed s, GLfixed t); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3BOESPROC)(GLbyte s, GLbyte t, GLbyte r); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3XOESPROC)(GLfixed s, GLfixed t, GLfixed r); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4BOESPROC)(GLbyte s, GLbyte t, GLbyte r, GLbyte q); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)( + GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, + GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)(const GLfloat *tc, + const GLfloat *c, + const GLfloat *n, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FVERTEX4FSUNPROC)(GLfloat s, GLfloat t, GLfloat p, + GLfloat q, GLfloat x, GLfloat y, + GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4FVERTEX4FVSUNPROC)(const GLfloat *tc, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4HNVPROC)(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4XOESPROC)(GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void(GLAD_API_PTR *PFNGLTEXCOORD4XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLTEXCOORDPOINTERVINTELPROC)(GLint size, GLenum type, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLTEXENVXOESPROC)(GLenum target, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLTEXENVXVOESPROC)(GLenum target, GLenum pname, + const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLTEXFILTERFUNCSGISPROC)(GLenum target, GLenum filter, GLsizei n, + const GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLTEXGENXOESPROC)(GLenum coord, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLTEXGENXVOESPROC)(GLenum coord, GLenum pname, const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLint border, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLint border, + GLenum format, GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)( + GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, + GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DEXTPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)( + GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXIMAGE4DSGISPROC)(GLenum target, GLint level, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLsizei size4d, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXPAGECOMMITMENTARBPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, + GLsizei depth, GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXPAGECOMMITMENTMEMNVPROC)(GLenum target, GLint layer, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLuint memory, GLuint64 offset, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIIVEXTPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIUIVEXTPROC)(GLenum target, GLenum pname, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERXOESPROC)(GLenum target, GLenum pname, GLfixed param); +typedef void(GLAD_API_PTR *PFNGLTEXPARAMETERXVOESPROC)(GLenum target, GLenum pname, + const GLfixed *params); +typedef void(GLAD_API_PTR *PFNGLTEXRENDERBUFFERNVPROC)(GLenum target, GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE1DPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE1DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM1DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM2DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC)(GLenum target, GLsizei samples, + GLenum internalFormat, + GLsizei width, GLsizei height, + GLboolean fixedSampleLocations, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM3DEXTPROC)(GLenum target, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC)( + GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, + GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXSTORAGESPARSEAMDPROC)(GLenum target, GLenum internalFormat, + GLsizei width, GLsizei height, + GLsizei depth, GLsizei layers, + GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE1DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE2DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE3DEXTPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXSUBIMAGE4DSGISPROC)(GLenum target, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLint woffset, + GLsizei width, GLsizei height, GLsizei depth, + GLsizei size4d, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREATTACHMEMORYNVPROC)(GLuint texture, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBARRIERPROC)(void); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBARRIERNVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERPROC)(GLuint texture, GLenum internalformat, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFEREXTPROC)(GLuint texture, GLenum target, + GLenum internalformat, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERRANGEPROC)(GLuint texture, GLenum internalformat, + GLuint buffer, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTEXTUREBUFFERRANGEEXTPROC)(GLuint texture, GLenum target, + GLenum internalformat, GLuint buffer, + GLintptr offset, GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTEXTURECOLORMASKSGISPROC)(GLboolean red, GLboolean green, + GLboolean blue, GLboolean alpha); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE1DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLint border, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLint border, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)( + GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, + GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)(GLuint texture, GLenum target, + GLsizei samples, + GLint internalFormat, + GLsizei width, GLsizei height, + GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DEXTPROC)(GLuint texture, GLenum target, GLint level, + GLint internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)( + GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, + GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, + GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)( + GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, + GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURELIGHTEXTPROC)(GLenum pname); +typedef void(GLAD_API_PTR *PFNGLTEXTUREMATERIALEXTPROC)(GLenum face, GLenum mode); +typedef void(GLAD_API_PTR *PFNGLTEXTURENORMALEXTPROC)(GLenum mode); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPAGECOMMITMENTEXTPROC)(GLuint texture, GLint level, + GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC)(GLuint texture, GLint layer, + GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, + GLsizei depth, GLuint memory, + GLuint64 offset, GLboolean commit); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIIVPROC)(GLuint texture, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIUIVPROC)(GLuint texture, GLenum pname, + const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIUIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLuint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFPROC)(GLuint texture, GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFVPROC)(GLuint texture, GLenum pname, + const GLfloat *param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERFVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIPROC)(GLuint texture, GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIEXTPROC)(GLuint texture, GLenum target, + GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIVPROC)(GLuint texture, GLenum pname, + const GLint *param); +typedef void(GLAD_API_PTR *PFNGLTEXTUREPARAMETERIVEXTPROC)(GLuint texture, GLenum target, + GLenum pname, const GLint *params); +typedef void(GLAD_API_PTR *PFNGLTEXTURERANGEAPPLEPROC)(GLenum target, GLsizei length, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLTEXTURERENDERBUFFEREXTPROC)(GLuint texture, GLenum target, + GLuint renderbuffer); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE1DPROC)(GLuint texture, GLsizei levels, + GLenum internalformat, GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE1DEXTPROC)(GLuint texture, GLenum target, + GLsizei levels, GLenum internalformat, + GLsizei width); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DPROC)(GLuint texture, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DEXTPROC)(GLuint texture, GLenum target, + GLsizei levels, GLenum internalformat, + GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)(GLuint texture, GLenum target, + GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DPROC)(GLuint texture, GLsizei levels, + GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DEXTPROC)(GLuint texture, GLenum target, + GLsizei levels, GLenum internalformat, + GLsizei width, GLsizei height, + GLsizei depth); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)(GLuint texture, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height, + GLsizei depth, + GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)( + GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, + GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM1DEXTPROC)(GLuint texture, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM2DEXTPROC)(GLuint texture, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLuint memory, + GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC)( + GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, + GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM3DEXTPROC)(GLuint texture, GLsizei levels, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, + GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC)( + GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, + GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void(GLAD_API_PTR *PFNGLTEXTURESTORAGESPARSEAMDPROC)(GLuint texture, GLenum target, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, + GLsizei layers, GLbitfield flags); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE1DPROC)(GLuint texture, GLint level, GLint xoffset, + GLsizei width, GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE1DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLsizei width, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE2DPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE2DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint yoffset, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE3DPROC)(GLuint texture, GLint level, GLint xoffset, + GLint yoffset, GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, GLenum format, + GLenum type, const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTURESUBIMAGE3DEXTPROC)(GLuint texture, GLenum target, + GLint level, GLint xoffset, GLint yoffset, + GLint zoffset, GLsizei width, + GLsizei height, GLsizei depth, + GLenum format, GLenum type, + const void *pixels); +typedef void(GLAD_API_PTR *PFNGLTEXTUREVIEWPROC)(GLuint texture, GLenum target, GLuint origtexture, + GLenum internalformat, GLuint minlevel, + GLuint numlevels, GLuint minlayer, + GLuint numlayers); +typedef void(GLAD_API_PTR *PFNGLTRACKMATRIXNVPROC)(GLenum target, GLuint address, GLenum matrix, + GLenum transform); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)(GLsizei count, const GLint *attribs, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)(GLuint xfb, GLuint index, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)(GLuint xfb, GLuint index, + GLuint buffer, GLintptr offset, + GLsizeiptr size); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)(GLsizei count, + const GLint *attribs, + GLsizei nbuffers, + const GLint *bufstreams, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, + const GLchar *const *varyings, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)(GLuint program, GLsizei count, + const GLchar *const *varyings, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)(GLuint program, GLsizei count, + const GLint *locations, + GLenum bufferMode); +typedef void(GLAD_API_PTR *PFNGLTRANSFORMPATHNVPROC)(GLuint resultPath, GLuint srcPath, + GLenum transformType, + const GLfloat *transformValues); +typedef void(GLAD_API_PTR *PFNGLTRANSLATEXOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FARBPROC)(GLint location, GLfloat v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64ARBPROC)(GLint location, GLint64 x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64NVPROC)(GLint location, GLint64EXT x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IARBPROC)(GLint location, GLint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64ARBPROC)(GLint location, GLuint64 x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64NVPROC)(GLint location, GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIEXTPROC)(GLint location, GLuint v0); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM1UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FARBPROC)(GLint location, GLfloat v0, GLfloat v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64ARBPROC)(GLint location, GLint64 x, GLint64 y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IARBPROC)(GLint location, GLint v0, GLint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIEXTPROC)(GLint location, GLuint v0, GLuint v1); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM2UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FARBPROC)(GLint location, GLfloat v0, GLfloat v1, + GLfloat v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64ARBPROC)(GLint location, GLint64 x, GLint64 y, + GLint64 z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, + GLint64EXT z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, + GLuint64 z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM3UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, + const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, + GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FARBPROC)(GLint location, GLfloat v0, GLfloat v1, + GLfloat v2, GLfloat v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4FVARBPROC)(GLint location, GLsizei count, + const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, + GLint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64ARBPROC)(GLint location, GLint64 x, GLint64 y, GLint64 z, + GLint64 w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64NVPROC)(GLint location, GLint64EXT x, GLint64EXT y, + GLint64EXT z, GLint64EXT w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64VARBPROC)(GLint location, GLsizei count, + const GLint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4I64VNVPROC)(GLint location, GLsizei count, + const GLint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IARBPROC)(GLint location, GLint v0, GLint v1, GLint v2, + GLint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4IVARBPROC)(GLint location, GLsizei count, + const GLint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, + GLuint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64ARBPROC)(GLint location, GLuint64 x, GLuint64 y, + GLuint64 z, GLuint64 w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64NVPROC)(GLint location, GLuint64EXT x, GLuint64EXT y, + GLuint64EXT z, GLuint64EXT w); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIEXTPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, + GLuint v3); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORM4UIVEXTPROC)(GLint location, GLsizei count, + const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, + GLuint uniformBlockBinding); +typedef void(GLAD_API_PTR *PFNGLUNIFORMBUFFEREXTPROC)(GLuint program, GLint location, + GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64ARBPROC)(GLint location, GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64NVPROC)(GLint location, GLuint64 value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64VARBPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMHANDLEUI64VNVPROC)(GLint location, GLsizei count, + const GLuint64 *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4FVARBPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLdouble *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, + const GLuint *indices); +typedef void(GLAD_API_PTR *PFNGLUNIFORMUI64NVPROC)(GLint location, GLuint64EXT value); +typedef void(GLAD_API_PTR *PFNGLUNIFORMUI64VNVPROC)(GLint location, GLsizei count, + const GLuint64EXT *value); +typedef void(GLAD_API_PTR *PFNGLUNLOCKARRAYSEXTPROC)(void); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPBUFFERPROC)(GLenum target); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPBUFFERARBPROC)(GLenum target); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPNAMEDBUFFERPROC)(GLuint buffer); +typedef GLboolean(GLAD_API_PTR *PFNGLUNMAPNAMEDBUFFEREXTPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLUNMAPTEXTURE2DINTELPROC)(GLuint texture, GLint level); +typedef void(GLAD_API_PTR *PFNGLUPDATEOBJECTBUFFERATIPROC)(GLuint buffer, GLuint offset, + GLsizei size, const void *pointer, + GLenum preserve); +typedef void(GLAD_API_PTR *PFNGLUPLOADGPUMASKNVXPROC)(GLbitfield mask); +typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMOBJECTARBPROC)(GLhandleARB programObj); +typedef void(GLAD_API_PTR *PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, + GLuint program); +typedef void(GLAD_API_PTR *PFNGLUSESHADERPROGRAMEXTPROC)(GLenum type, GLuint program); +typedef void(GLAD_API_PTR *PFNGLVDPAUFININVPROC)(void); +typedef void(GLAD_API_PTR *PFNGLVDPAUGETSURFACEIVNVPROC)(GLvdpauSurfaceNV surface, GLenum pname, + GLsizei count, GLsizei *length, + GLint *values); +typedef void(GLAD_API_PTR *PFNGLVDPAUINITNVPROC)(const void *vdpDevice, const void *getProcAddress); +typedef GLboolean(GLAD_API_PTR *PFNGLVDPAUISSURFACENVPROC)(GLvdpauSurfaceNV surface); +typedef void(GLAD_API_PTR *PFNGLVDPAUMAPSURFACESNVPROC)(GLsizei numSurfaces, + const GLvdpauSurfaceNV *surfaces); +typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)( + const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)( + const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); +typedef GLvdpauSurfaceNV(GLAD_API_PTR *PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC)( + const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, + GLboolean isFrameStructure); +typedef void(GLAD_API_PTR *PFNGLVDPAUSURFACEACCESSNVPROC)(GLvdpauSurfaceNV surface, GLenum access); +typedef void(GLAD_API_PTR *PFNGLVDPAUUNMAPSURFACESNVPROC)(GLsizei numSurface, + const GLvdpauSurfaceNV *surfaces); +typedef void(GLAD_API_PTR *PFNGLVDPAUUNREGISTERSURFACENVPROC)(GLvdpauSurfaceNV surface); +typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMPROC)(GLuint program); +typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMARBPROC)(GLhandleARB programObj); +typedef void(GLAD_API_PTR *PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); +typedef void(GLAD_API_PTR *PFNGLVARIANTARRAYOBJECTATIPROC)(GLuint id, GLenum type, GLsizei stride, + GLuint buffer, GLuint offset); +typedef void(GLAD_API_PTR *PFNGLVARIANTPOINTEREXTPROC)(GLuint id, GLenum type, GLuint stride, + const void *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTBVEXTPROC)(GLuint id, const GLbyte *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTDVEXTPROC)(GLuint id, const GLdouble *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTFVEXTPROC)(GLuint id, const GLfloat *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTIVEXTPROC)(GLuint id, const GLint *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTSVEXTPROC)(GLuint id, const GLshort *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTUBVEXTPROC)(GLuint id, const GLubyte *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTUIVEXTPROC)(GLuint id, const GLuint *addr); +typedef void(GLAD_API_PTR *PFNGLVARIANTUSVEXTPROC)(GLuint id, const GLushort *addr); +typedef void(GLAD_API_PTR *PFNGLVERTEX2BOESPROC)(GLbyte x, GLbyte y); +typedef void(GLAD_API_PTR *PFNGLVERTEX2BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX2HNVPROC)(GLhalfNV x, GLhalfNV y); +typedef void(GLAD_API_PTR *PFNGLVERTEX2HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEX2XOESPROC)(GLfixed x); +typedef void(GLAD_API_PTR *PFNGLVERTEX2XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX3BOESPROC)(GLbyte x, GLbyte y, GLbyte z); +typedef void(GLAD_API_PTR *PFNGLVERTEX3BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX3HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z); +typedef void(GLAD_API_PTR *PFNGLVERTEX3HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEX3XOESPROC)(GLfixed x, GLfixed y); +typedef void(GLAD_API_PTR *PFNGLVERTEX3XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX4BOESPROC)(GLbyte x, GLbyte y, GLbyte z, GLbyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEX4BVOESPROC)(const GLbyte *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEX4HNVPROC)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); +typedef void(GLAD_API_PTR *PFNGLVERTEX4HVNVPROC)(const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEX4XOESPROC)(GLfixed x, GLfixed y, GLfixed z); +typedef void(GLAD_API_PTR *PFNGLVERTEX4XVOESPROC)(const GLfixed *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBBINDINGPROC)(GLuint vaobj, GLuint attribindex, + GLuint bindingindex); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBFORMATPROC)(GLuint vaobj, GLuint attribindex, + GLint size, GLenum type, + GLboolean normalized, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBIFORMATPROC)(GLuint vaobj, GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYATTRIBLFORMATPROC)(GLuint vaobj, GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)(GLuint vaobj, + GLuint bindingindex, + GLuint buffer, GLintptr offset, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYBINDINGDIVISORPROC)(GLuint vaobj, GLuint bindingindex, + GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint vaobj, GLuint buffer); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum texunit, GLint size, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYRANGEAPPLEPROC)(GLsizei length, void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYRANGENVPROC)(GLsizei length, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLuint bindingindex); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)(GLuint vaobj, GLuint index, + GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLint size, GLenum type, + GLboolean normalized, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLuint index, GLint size, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)(GLuint vaobj, + GLuint attribindex, + GLint size, GLenum type, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLuint index, GLint size, + GLenum type, GLsizei stride, + GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)( + GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)(GLuint vaobj, + GLuint bindingindex, + GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint vaobj, GLuint bindingindex, + GLuint buffer, GLintptr offset, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint vaobj, GLuint first, + GLsizei count, const GLuint *buffers, + const GLintptr *offsets, + const GLsizei *strides); +typedef void(GLAD_API_PTR *PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)(GLuint vaobj, GLuint buffer, + GLint size, GLenum type, + GLsizei stride, GLintptr offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DARBPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DNVPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FARBPROC)(GLuint index, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FNVPROC)(GLuint index, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1HNVPROC)(GLuint index, GLhalfNV x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SARBPROC)(GLuint index, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SNVPROC)(GLuint index, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB1SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DARBPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DNVPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FARBPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FNVPROC)(GLuint index, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SARBPROC)(GLuint index, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SNVPROC)(GLuint index, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB2SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DARBPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DNVPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FARBPROC)(GLuint index, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FNVPROC)(GLuint index, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, + GLhalfNV z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SARBPROC)(GLuint index, GLshort x, GLshort y, + GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SNVPROC)(GLuint index, GLshort x, GLshort y, + GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB3SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NBVARBPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NIVARBPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NSVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, + GLubyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBARBPROC)(GLuint index, GLubyte x, GLubyte y, + GLubyte z, GLubyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUBVARBPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUIVARBPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4NUSVARBPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4BVARBPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DARBPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DNVPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVARBPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4DVNVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FARBPROC)(GLuint index, GLfloat x, GLfloat y, + GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FNVPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, + GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVARBPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4FVNVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4HNVPROC)(GLuint index, GLhalfNV x, GLhalfNV y, + GLhalfNV z, GLhalfNV w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4HVNVPROC)(GLuint index, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4IVARBPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SARBPROC)(GLuint index, GLshort x, GLshort y, + GLshort z, GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SNVPROC)(GLuint index, GLshort x, GLshort y, GLshort z, + GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVARBPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4SVNVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBNVPROC)(GLuint index, GLubyte x, GLubyte y, + GLubyte z, GLubyte w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVARBPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UBVNVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4UIVARBPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIB4USVARBPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, + GLenum type, GLboolean normalized, + GLsizei stride, GLuint buffer, + GLuint offset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBBINDINGPROC)(GLuint attribindex, GLuint bindingindex); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBDIVISORARBPROC)(GLuint index, GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBFORMATPROC)(GLuint attribindex, GLint size, GLenum type, + GLboolean normalized, + GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBFORMATNVPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IEXTPROC)(GLuint index, GLint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIEXTPROC)(GLuint index, GLuint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI1UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IEXTPROC)(GLuint index, GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIEXTPROC)(GLuint index, GLuint x, GLuint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI2UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IEXTPROC)(GLuint index, GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIEXTPROC)(GLuint index, GLuint x, GLuint y, + GLuint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI3UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4BVEXTPROC)(GLuint index, const GLbyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, + GLint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IEXTPROC)(GLuint index, GLint x, GLint y, GLint z, + GLint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4IVEXTPROC)(GLuint index, const GLint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4SVEXTPROC)(GLuint index, const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UBVEXTPROC)(GLuint index, const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIEXTPROC)(GLuint index, GLuint x, GLuint y, GLuint z, + GLuint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4UIVEXTPROC)(GLuint index, const GLuint *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBI4USVEXTPROC)(GLuint index, const GLushort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIFORMATPROC)(GLuint attribindex, GLint size, + GLenum type, GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIFORMATNVPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBIPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DEXTPROC)(GLuint index, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1I64NVPROC)(GLuint index, GLint64EXT x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64ARBPROC)(GLuint index, GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64NVPROC)(GLuint index, GLuint64EXT x); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64VARBPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL1UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DEXTPROC)(GLuint index, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2UI64NVPROC)(GLuint index, GLuint64EXT x, + GLuint64EXT y); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL2UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DEXTPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, + GLint64EXT z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3UI64NVPROC)(GLuint index, GLuint64EXT x, + GLuint64EXT y, GLuint64EXT z); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL3UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DEXTPROC)(GLuint index, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4DVEXTPROC)(GLuint index, const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4I64NVPROC)(GLuint index, GLint64EXT x, GLint64EXT y, + GLint64EXT z, GLint64EXT w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4I64VNVPROC)(GLuint index, const GLint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4UI64NVPROC)(GLuint index, GLuint64EXT x, + GLuint64EXT y, GLuint64EXT z, + GLuint64EXT w); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBL4UI64VNVPROC)(GLuint index, const GLuint64EXT *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLFORMATPROC)(GLuint attribindex, GLint size, + GLenum type, GLuint relativeoffset); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLFORMATNVPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBLPOINTEREXTPROC)(GLuint index, GLint size, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, + GLboolean normalized, GLuint value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, + GLboolean normalized, const GLuint *value); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPARAMETERIAMDPROC)(GLuint index, GLenum pname, + GLint param); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERARBPROC)(GLuint index, GLint size, GLenum type, + GLboolean normalized, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBPOINTERNVPROC)(GLuint index, GLint fsize, GLenum type, + GLsizei stride, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS1SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS2SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS3SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4DVNVPROC)(GLuint index, GLsizei count, + const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4FVNVPROC)(GLuint index, GLsizei count, + const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4HVNVPROC)(GLuint index, GLsizei n, const GLhalfNV *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4SVNVPROC)(GLuint index, GLsizei count, + const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXATTRIBS4UBVNVPROC)(GLuint index, GLsizei count, + const GLubyte *v); +typedef void(GLAD_API_PTR *PFNGLVERTEXBINDINGDIVISORPROC)(GLuint bindingindex, GLuint divisor); +typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDARBPROC)(GLint count); +typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDENVFATIPROC)(GLenum pname, GLfloat param); +typedef void(GLAD_API_PTR *PFNGLVERTEXBLENDENVIATIPROC)(GLenum pname, GLint param); +typedef void(GLAD_API_PTR *PFNGLVERTEXFORMATNVPROC)(GLint size, GLenum type, GLsizei stride); +typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + GLsizei count, const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTERLISTIBMPROC)(GLint size, GLenum type, GLint stride, + const void **pointer, GLint ptrstride); +typedef void(GLAD_API_PTR *PFNGLVERTEXPOINTERVINTELPROC)(GLint size, GLenum type, + const void **pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1DATIPROC)(GLenum stream, GLdouble x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1FATIPROC)(GLenum stream, GLfloat x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1IATIPROC)(GLenum stream, GLint x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1SATIPROC)(GLenum stream, GLshort x); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM1SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2DATIPROC)(GLenum stream, GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2FATIPROC)(GLenum stream, GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2IATIPROC)(GLenum stream, GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2SATIPROC)(GLenum stream, GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM2SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3DATIPROC)(GLenum stream, GLdouble x, GLdouble y, + GLdouble z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3FATIPROC)(GLenum stream, GLfloat x, GLfloat y, + GLfloat z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3IATIPROC)(GLenum stream, GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3SATIPROC)(GLenum stream, GLshort x, GLshort y, + GLshort z); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM3SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4DATIPROC)(GLenum stream, GLdouble x, GLdouble y, + GLdouble z, GLdouble w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4DVATIPROC)(GLenum stream, const GLdouble *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4FATIPROC)(GLenum stream, GLfloat x, GLfloat y, + GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4FVATIPROC)(GLenum stream, const GLfloat *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4IATIPROC)(GLenum stream, GLint x, GLint y, GLint z, + GLint w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4IVATIPROC)(GLenum stream, const GLint *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4SATIPROC)(GLenum stream, GLshort x, GLshort y, + GLshort z, GLshort w); +typedef void(GLAD_API_PTR *PFNGLVERTEXSTREAM4SVATIPROC)(GLenum stream, const GLshort *coords); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTPOINTEREXTPROC)(GLint size, GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTFEXTPROC)(GLfloat weight); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTFVEXTPROC)(const GLfloat *weight); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTHNVPROC)(GLhalfNV weight); +typedef void(GLAD_API_PTR *PFNGLVERTEXWEIGHTHVNVPROC)(const GLhalfNV *weight); +typedef GLenum(GLAD_API_PTR *PFNGLVIDEOCAPTURENVPROC)(GLuint video_capture_slot, + GLuint *sequence_num, + GLuint64EXT *capture_time); +typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + const GLdouble *params); +typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + const GLfloat *params); +typedef void(GLAD_API_PTR *PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)(GLuint video_capture_slot, + GLuint stream, GLenum pname, + const GLint *params); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, + GLfloat h); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTPOSITIONWSCALENVPROC)(GLuint index, GLfloat xcoeff, + GLfloat ycoeff); +typedef void(GLAD_API_PTR *PFNGLVIEWPORTSWIZZLENVPROC)(GLuint index, GLenum swizzlex, + GLenum swizzley, GLenum swizzlez, + GLenum swizzlew); +typedef void(GLAD_API_PTR *PFNGLWAITSEMAPHOREEXTPROC)(GLuint semaphore, GLuint numBufferBarriers, + const GLuint *buffers, + GLuint numTextureBarriers, + const GLuint *textures, + const GLenum *srcLayouts); +typedef void(GLAD_API_PTR *PFNGLWAITSEMAPHOREUI64NVXPROC)(GLuint waitGpu, GLsizei fenceObjectCount, + const GLuint *semaphoreArray, + const GLuint64 *fenceValueArray); +typedef void(GLAD_API_PTR *PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void(GLAD_API_PTR *PFNGLWAITVKSEMAPHORENVPROC)(GLuint64 vkSemaphore); +typedef void(GLAD_API_PTR *PFNGLWEIGHTPATHSNVPROC)(GLuint resultPath, GLsizei numPaths, + const GLuint *paths, const GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTPOINTERARBPROC)(GLint size, GLenum type, GLsizei stride, + const void *pointer); +typedef void(GLAD_API_PTR *PFNGLWEIGHTBVARBPROC)(GLint size, const GLbyte *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTDVARBPROC)(GLint size, const GLdouble *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTFVARBPROC)(GLint size, const GLfloat *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTIVARBPROC)(GLint size, const GLint *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTSVARBPROC)(GLint size, const GLshort *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTUBVARBPROC)(GLint size, const GLubyte *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTUIVARBPROC)(GLint size, const GLuint *weights); +typedef void(GLAD_API_PTR *PFNGLWEIGHTUSVARBPROC)(GLint size, const GLushort *weights); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DARBPROC)(GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DMESAPROC)(GLdouble x, GLdouble y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DVARBPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2DVMESAPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FARBPROC)(GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FMESAPROC)(GLfloat x, GLfloat y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FVARBPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2FVMESAPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IARBPROC)(GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IMESAPROC)(GLint x, GLint y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IVARBPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2IVMESAPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SARBPROC)(GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SMESAPROC)(GLshort x, GLshort y); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SVARBPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS2SVMESAPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DARBPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DMESAPROC)(GLdouble x, GLdouble y, GLdouble z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DVARBPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3DVMESAPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FARBPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FMESAPROC)(GLfloat x, GLfloat y, GLfloat z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FVARBPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3FVMESAPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IARBPROC)(GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IMESAPROC)(GLint x, GLint y, GLint z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IVARBPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3IVMESAPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SARBPROC)(GLshort x, GLshort y, GLshort z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SMESAPROC)(GLshort x, GLshort y, GLshort z); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SVARBPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS3SVMESAPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4DMESAPROC)(GLdouble x, GLdouble y, GLdouble z, + GLdouble w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4DVMESAPROC)(const GLdouble *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4FMESAPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4FVMESAPROC)(const GLfloat *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4IMESAPROC)(GLint x, GLint y, GLint z, GLint w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4IVMESAPROC)(const GLint *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4SMESAPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +typedef void(GLAD_API_PTR *PFNGLWINDOWPOS4SVMESAPROC)(const GLshort *v); +typedef void(GLAD_API_PTR *PFNGLWINDOWRECTANGLESEXTPROC)(GLenum mode, GLsizei count, + const GLint *box); +typedef void(GLAD_API_PTR *PFNGLWRITEMASKEXTPROC)(GLuint res, GLuint in, GLenum outX, GLenum outY, + GLenum outZ, GLenum outW); + +typedef struct GladGLContext { + PFNGLACCUMXOESPROC AccumxOES; + PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC AcquireKeyedMutexWin32EXT; + PFNGLACTIVEPROGRAMEXTPROC ActiveProgramEXT; + PFNGLACTIVESHADERPROGRAMPROC ActiveShaderProgram; + PFNGLACTIVESTENCILFACEEXTPROC ActiveStencilFaceEXT; + PFNGLACTIVETEXTUREPROC ActiveTexture; + PFNGLACTIVETEXTUREARBPROC ActiveTextureARB; + PFNGLACTIVEVARYINGNVPROC ActiveVaryingNV; + PFNGLALPHAFRAGMENTOP1ATIPROC AlphaFragmentOp1ATI; + PFNGLALPHAFRAGMENTOP2ATIPROC AlphaFragmentOp2ATI; + PFNGLALPHAFRAGMENTOP3ATIPROC AlphaFragmentOp3ATI; + PFNGLALPHAFUNCXOESPROC AlphaFuncxOES; + PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC AlphaToCoverageDitherControlNV; + PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC ApplyFramebufferAttachmentCMAAINTEL; + PFNGLAPPLYTEXTUREEXTPROC ApplyTextureEXT; + PFNGLAREPROGRAMSRESIDENTNVPROC AreProgramsResidentNV; + PFNGLARETEXTURESRESIDENTEXTPROC AreTexturesResidentEXT; + PFNGLARRAYELEMENTEXTPROC ArrayElementEXT; + PFNGLARRAYOBJECTATIPROC ArrayObjectATI; + PFNGLASYNCCOPYBUFFERSUBDATANVXPROC AsyncCopyBufferSubDataNVX; + PFNGLASYNCCOPYIMAGESUBDATANVXPROC AsyncCopyImageSubDataNVX; + PFNGLASYNCMARKERSGIXPROC AsyncMarkerSGIX; + PFNGLATTACHOBJECTARBPROC AttachObjectARB; + PFNGLATTACHSHADERPROC AttachShader; + PFNGLBEGINCONDITIONALRENDERPROC BeginConditionalRender; + PFNGLBEGINCONDITIONALRENDERNVPROC BeginConditionalRenderNV; + PFNGLBEGINCONDITIONALRENDERNVXPROC BeginConditionalRenderNVX; + PFNGLBEGINFRAGMENTSHADERATIPROC BeginFragmentShaderATI; + PFNGLBEGINOCCLUSIONQUERYNVPROC BeginOcclusionQueryNV; + PFNGLBEGINPERFMONITORAMDPROC BeginPerfMonitorAMD; + PFNGLBEGINPERFQUERYINTELPROC BeginPerfQueryINTEL; + PFNGLBEGINQUERYPROC BeginQuery; + PFNGLBEGINQUERYARBPROC BeginQueryARB; + PFNGLBEGINQUERYINDEXEDPROC BeginQueryIndexed; + PFNGLBEGINTRANSFORMFEEDBACKPROC BeginTransformFeedback; + PFNGLBEGINTRANSFORMFEEDBACKEXTPROC BeginTransformFeedbackEXT; + PFNGLBEGINTRANSFORMFEEDBACKNVPROC BeginTransformFeedbackNV; + PFNGLBEGINVERTEXSHADEREXTPROC BeginVertexShaderEXT; + PFNGLBEGINVIDEOCAPTURENVPROC BeginVideoCaptureNV; + PFNGLBINDATTRIBLOCATIONPROC BindAttribLocation; + PFNGLBINDATTRIBLOCATIONARBPROC BindAttribLocationARB; + PFNGLBINDBUFFERPROC BindBuffer; + PFNGLBINDBUFFERARBPROC BindBufferARB; + PFNGLBINDBUFFERBASEPROC BindBufferBase; + PFNGLBINDBUFFERBASEEXTPROC BindBufferBaseEXT; + PFNGLBINDBUFFERBASENVPROC BindBufferBaseNV; + PFNGLBINDBUFFEROFFSETEXTPROC BindBufferOffsetEXT; + PFNGLBINDBUFFEROFFSETNVPROC BindBufferOffsetNV; + PFNGLBINDBUFFERRANGEPROC BindBufferRange; + PFNGLBINDBUFFERRANGEEXTPROC BindBufferRangeEXT; + PFNGLBINDBUFFERRANGENVPROC BindBufferRangeNV; + PFNGLBINDBUFFERSBASEPROC BindBuffersBase; + PFNGLBINDBUFFERSRANGEPROC BindBuffersRange; + PFNGLBINDFRAGDATALOCATIONPROC BindFragDataLocation; + PFNGLBINDFRAGDATALOCATIONEXTPROC BindFragDataLocationEXT; + PFNGLBINDFRAGDATALOCATIONINDEXEDPROC BindFragDataLocationIndexed; + PFNGLBINDFRAGMENTSHADERATIPROC BindFragmentShaderATI; + PFNGLBINDFRAMEBUFFERPROC BindFramebuffer; + PFNGLBINDFRAMEBUFFEREXTPROC BindFramebufferEXT; + PFNGLBINDIMAGETEXTUREPROC BindImageTexture; + PFNGLBINDIMAGETEXTUREEXTPROC BindImageTextureEXT; + PFNGLBINDIMAGETEXTURESPROC BindImageTextures; + PFNGLBINDLIGHTPARAMETEREXTPROC BindLightParameterEXT; + PFNGLBINDMATERIALPARAMETEREXTPROC BindMaterialParameterEXT; + PFNGLBINDMULTITEXTUREEXTPROC BindMultiTextureEXT; + PFNGLBINDPARAMETEREXTPROC BindParameterEXT; + PFNGLBINDPROGRAMARBPROC BindProgramARB; + PFNGLBINDPROGRAMNVPROC BindProgramNV; + PFNGLBINDPROGRAMPIPELINEPROC BindProgramPipeline; + PFNGLBINDRENDERBUFFERPROC BindRenderbuffer; + PFNGLBINDRENDERBUFFEREXTPROC BindRenderbufferEXT; + PFNGLBINDSAMPLERPROC BindSampler; + PFNGLBINDSAMPLERSPROC BindSamplers; + PFNGLBINDSHADINGRATEIMAGENVPROC BindShadingRateImageNV; + PFNGLBINDTEXGENPARAMETEREXTPROC BindTexGenParameterEXT; + PFNGLBINDTEXTUREPROC BindTexture; + PFNGLBINDTEXTUREEXTPROC BindTextureEXT; + PFNGLBINDTEXTUREUNITPROC BindTextureUnit; + PFNGLBINDTEXTUREUNITPARAMETEREXTPROC BindTextureUnitParameterEXT; + PFNGLBINDTEXTURESPROC BindTextures; + PFNGLBINDTRANSFORMFEEDBACKPROC BindTransformFeedback; + PFNGLBINDTRANSFORMFEEDBACKNVPROC BindTransformFeedbackNV; + PFNGLBINDVERTEXARRAYPROC BindVertexArray; + PFNGLBINDVERTEXARRAYAPPLEPROC BindVertexArrayAPPLE; + PFNGLBINDVERTEXBUFFERPROC BindVertexBuffer; + PFNGLBINDVERTEXBUFFERSPROC BindVertexBuffers; + PFNGLBINDVERTEXSHADEREXTPROC BindVertexShaderEXT; + PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC BindVideoCaptureStreamBufferNV; + PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC BindVideoCaptureStreamTextureNV; + PFNGLBINORMAL3BEXTPROC Binormal3bEXT; + PFNGLBINORMAL3BVEXTPROC Binormal3bvEXT; + PFNGLBINORMAL3DEXTPROC Binormal3dEXT; + PFNGLBINORMAL3DVEXTPROC Binormal3dvEXT; + PFNGLBINORMAL3FEXTPROC Binormal3fEXT; + PFNGLBINORMAL3FVEXTPROC Binormal3fvEXT; + PFNGLBINORMAL3IEXTPROC Binormal3iEXT; + PFNGLBINORMAL3IVEXTPROC Binormal3ivEXT; + PFNGLBINORMAL3SEXTPROC Binormal3sEXT; + PFNGLBINORMAL3SVEXTPROC Binormal3svEXT; + PFNGLBINORMALPOINTEREXTPROC BinormalPointerEXT; + PFNGLBITMAPXOESPROC BitmapxOES; + PFNGLBLENDBARRIERKHRPROC BlendBarrierKHR; + PFNGLBLENDBARRIERNVPROC BlendBarrierNV; + PFNGLBLENDCOLORPROC BlendColor; + PFNGLBLENDCOLOREXTPROC BlendColorEXT; + PFNGLBLENDCOLORXOESPROC BlendColorxOES; + PFNGLBLENDEQUATIONPROC BlendEquation; + PFNGLBLENDEQUATIONEXTPROC BlendEquationEXT; + PFNGLBLENDEQUATIONINDEXEDAMDPROC BlendEquationIndexedAMD; + PFNGLBLENDEQUATIONSEPARATEPROC BlendEquationSeparate; + PFNGLBLENDEQUATIONSEPARATEEXTPROC BlendEquationSeparateEXT; + PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC BlendEquationSeparateIndexedAMD; + PFNGLBLENDEQUATIONSEPARATEIPROC BlendEquationSeparatei; + PFNGLBLENDEQUATIONSEPARATEIARBPROC BlendEquationSeparateiARB; + PFNGLBLENDEQUATIONIPROC BlendEquationi; + PFNGLBLENDEQUATIONIARBPROC BlendEquationiARB; + PFNGLBLENDFUNCPROC BlendFunc; + PFNGLBLENDFUNCINDEXEDAMDPROC BlendFuncIndexedAMD; + PFNGLBLENDFUNCSEPARATEPROC BlendFuncSeparate; + PFNGLBLENDFUNCSEPARATEEXTPROC BlendFuncSeparateEXT; + PFNGLBLENDFUNCSEPARATEINGRPROC BlendFuncSeparateINGR; + PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC BlendFuncSeparateIndexedAMD; + PFNGLBLENDFUNCSEPARATEIPROC BlendFuncSeparatei; + PFNGLBLENDFUNCSEPARATEIARBPROC BlendFuncSeparateiARB; + PFNGLBLENDFUNCIPROC BlendFunci; + PFNGLBLENDFUNCIARBPROC BlendFunciARB; + PFNGLBLENDPARAMETERINVPROC BlendParameteriNV; + PFNGLBLITFRAMEBUFFERPROC BlitFramebuffer; + PFNGLBLITFRAMEBUFFEREXTPROC BlitFramebufferEXT; + PFNGLBLITFRAMEBUFFERLAYEREXTPROC BlitFramebufferLayerEXT; + PFNGLBLITFRAMEBUFFERLAYERSEXTPROC BlitFramebufferLayersEXT; + PFNGLBLITNAMEDFRAMEBUFFERPROC BlitNamedFramebuffer; + PFNGLBUFFERADDRESSRANGENVPROC BufferAddressRangeNV; + PFNGLBUFFERATTACHMEMORYNVPROC BufferAttachMemoryNV; + PFNGLBUFFERDATAPROC BufferData; + PFNGLBUFFERDATAARBPROC BufferDataARB; + PFNGLBUFFERPAGECOMMITMENTARBPROC BufferPageCommitmentARB; + PFNGLBUFFERPAGECOMMITMENTMEMNVPROC BufferPageCommitmentMemNV; + PFNGLBUFFERPARAMETERIAPPLEPROC BufferParameteriAPPLE; + PFNGLBUFFERSTORAGEPROC BufferStorage; + PFNGLBUFFERSTORAGEEXTERNALEXTPROC BufferStorageExternalEXT; + PFNGLBUFFERSTORAGEMEMEXTPROC BufferStorageMemEXT; + PFNGLBUFFERSUBDATAPROC BufferSubData; + PFNGLBUFFERSUBDATAARBPROC BufferSubDataARB; + PFNGLCALLCOMMANDLISTNVPROC CallCommandListNV; + PFNGLCHECKFRAMEBUFFERSTATUSPROC CheckFramebufferStatus; + PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC CheckFramebufferStatusEXT; + PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC CheckNamedFramebufferStatus; + PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC CheckNamedFramebufferStatusEXT; + PFNGLCLAMPCOLORPROC ClampColor; + PFNGLCLAMPCOLORARBPROC ClampColorARB; + PFNGLCLEARPROC Clear; + PFNGLCLEARACCUMXOESPROC ClearAccumxOES; + PFNGLCLEARBUFFERDATAPROC ClearBufferData; + PFNGLCLEARBUFFERSUBDATAPROC ClearBufferSubData; + PFNGLCLEARBUFFERFIPROC ClearBufferfi; + PFNGLCLEARBUFFERFVPROC ClearBufferfv; + PFNGLCLEARBUFFERIVPROC ClearBufferiv; + PFNGLCLEARBUFFERUIVPROC ClearBufferuiv; + PFNGLCLEARCOLORPROC ClearColor; + PFNGLCLEARCOLORIIEXTPROC ClearColorIiEXT; + PFNGLCLEARCOLORIUIEXTPROC ClearColorIuiEXT; + PFNGLCLEARCOLORXOESPROC ClearColorxOES; + PFNGLCLEARDEPTHPROC ClearDepth; + PFNGLCLEARDEPTHDNVPROC ClearDepthdNV; + PFNGLCLEARDEPTHFPROC ClearDepthf; + PFNGLCLEARDEPTHFOESPROC ClearDepthfOES; + PFNGLCLEARDEPTHXOESPROC ClearDepthxOES; + PFNGLCLEARNAMEDBUFFERDATAPROC ClearNamedBufferData; + PFNGLCLEARNAMEDBUFFERDATAEXTPROC ClearNamedBufferDataEXT; + PFNGLCLEARNAMEDBUFFERSUBDATAPROC ClearNamedBufferSubData; + PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC ClearNamedBufferSubDataEXT; + PFNGLCLEARNAMEDFRAMEBUFFERFIPROC ClearNamedFramebufferfi; + PFNGLCLEARNAMEDFRAMEBUFFERFVPROC ClearNamedFramebufferfv; + PFNGLCLEARNAMEDFRAMEBUFFERIVPROC ClearNamedFramebufferiv; + PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC ClearNamedFramebufferuiv; + PFNGLCLEARSTENCILPROC ClearStencil; + PFNGLCLEARTEXIMAGEPROC ClearTexImage; + PFNGLCLEARTEXSUBIMAGEPROC ClearTexSubImage; + PFNGLCLIENTACTIVETEXTUREARBPROC ClientActiveTextureARB; + PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC ClientActiveVertexStreamATI; + PFNGLCLIENTATTRIBDEFAULTEXTPROC ClientAttribDefaultEXT; + PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC ClientWaitSemaphoreui64NVX; + PFNGLCLIENTWAITSYNCPROC ClientWaitSync; + PFNGLCLIPCONTROLPROC ClipControl; + PFNGLCLIPPLANEFOESPROC ClipPlanefOES; + PFNGLCLIPPLANEXOESPROC ClipPlanexOES; + PFNGLCOLOR3FVERTEX3FSUNPROC Color3fVertex3fSUN; + PFNGLCOLOR3FVERTEX3FVSUNPROC Color3fVertex3fvSUN; + PFNGLCOLOR3HNVPROC Color3hNV; + PFNGLCOLOR3HVNVPROC Color3hvNV; + PFNGLCOLOR3XOESPROC Color3xOES; + PFNGLCOLOR3XVOESPROC Color3xvOES; + PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC Color4fNormal3fVertex3fSUN; + PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC Color4fNormal3fVertex3fvSUN; + PFNGLCOLOR4HNVPROC Color4hNV; + PFNGLCOLOR4HVNVPROC Color4hvNV; + PFNGLCOLOR4UBVERTEX2FSUNPROC Color4ubVertex2fSUN; + PFNGLCOLOR4UBVERTEX2FVSUNPROC Color4ubVertex2fvSUN; + PFNGLCOLOR4UBVERTEX3FSUNPROC Color4ubVertex3fSUN; + PFNGLCOLOR4UBVERTEX3FVSUNPROC Color4ubVertex3fvSUN; + PFNGLCOLOR4XOESPROC Color4xOES; + PFNGLCOLOR4XVOESPROC Color4xvOES; + PFNGLCOLORFORMATNVPROC ColorFormatNV; + PFNGLCOLORFRAGMENTOP1ATIPROC ColorFragmentOp1ATI; + PFNGLCOLORFRAGMENTOP2ATIPROC ColorFragmentOp2ATI; + PFNGLCOLORFRAGMENTOP3ATIPROC ColorFragmentOp3ATI; + PFNGLCOLORMASKPROC ColorMask; + PFNGLCOLORMASKINDEXEDEXTPROC ColorMaskIndexedEXT; + PFNGLCOLORMASKIPROC ColorMaski; + PFNGLCOLORPOINTEREXTPROC ColorPointerEXT; + PFNGLCOLORPOINTERLISTIBMPROC ColorPointerListIBM; + PFNGLCOLORPOINTERVINTELPROC ColorPointervINTEL; + PFNGLCOLORSUBTABLEEXTPROC ColorSubTableEXT; + PFNGLCOLORTABLEEXTPROC ColorTableEXT; + PFNGLCOLORTABLEPARAMETERFVSGIPROC ColorTableParameterfvSGI; + PFNGLCOLORTABLEPARAMETERIVSGIPROC ColorTableParameterivSGI; + PFNGLCOLORTABLESGIPROC ColorTableSGI; + PFNGLCOMBINERINPUTNVPROC CombinerInputNV; + PFNGLCOMBINEROUTPUTNVPROC CombinerOutputNV; + PFNGLCOMBINERPARAMETERFNVPROC CombinerParameterfNV; + PFNGLCOMBINERPARAMETERFVNVPROC CombinerParameterfvNV; + PFNGLCOMBINERPARAMETERINVPROC CombinerParameteriNV; + PFNGLCOMBINERPARAMETERIVNVPROC CombinerParameterivNV; + PFNGLCOMBINERSTAGEPARAMETERFVNVPROC CombinerStageParameterfvNV; + PFNGLCOMMANDLISTSEGMENTSNVPROC CommandListSegmentsNV; + PFNGLCOMPILECOMMANDLISTNVPROC CompileCommandListNV; + PFNGLCOMPILESHADERPROC CompileShader; + PFNGLCOMPILESHADERARBPROC CompileShaderARB; + PFNGLCOMPILESHADERINCLUDEARBPROC CompileShaderIncludeARB; + PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC CompressedMultiTexImage1DEXT; + PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC CompressedMultiTexImage2DEXT; + PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC CompressedMultiTexImage3DEXT; + PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC CompressedMultiTexSubImage1DEXT; + PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC CompressedMultiTexSubImage2DEXT; + PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC CompressedMultiTexSubImage3DEXT; + PFNGLCOMPRESSEDTEXIMAGE1DPROC CompressedTexImage1D; + PFNGLCOMPRESSEDTEXIMAGE1DARBPROC CompressedTexImage1DARB; + PFNGLCOMPRESSEDTEXIMAGE2DPROC CompressedTexImage2D; + PFNGLCOMPRESSEDTEXIMAGE2DARBPROC CompressedTexImage2DARB; + PFNGLCOMPRESSEDTEXIMAGE3DPROC CompressedTexImage3D; + PFNGLCOMPRESSEDTEXIMAGE3DARBPROC CompressedTexImage3DARB; + PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC CompressedTexSubImage1D; + PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC CompressedTexSubImage1DARB; + PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC CompressedTexSubImage2D; + PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC CompressedTexSubImage2DARB; + PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC CompressedTexSubImage3D; + PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC CompressedTexSubImage3DARB; + PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC CompressedTextureImage1DEXT; + PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC CompressedTextureImage2DEXT; + PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC CompressedTextureImage3DEXT; + PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC CompressedTextureSubImage1D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC CompressedTextureSubImage1DEXT; + PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC CompressedTextureSubImage2D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC CompressedTextureSubImage2DEXT; + PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC CompressedTextureSubImage3D; + PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC CompressedTextureSubImage3DEXT; + PFNGLCONSERVATIVERASTERPARAMETERFNVPROC ConservativeRasterParameterfNV; + PFNGLCONSERVATIVERASTERPARAMETERINVPROC ConservativeRasterParameteriNV; + PFNGLCONVOLUTIONFILTER1DEXTPROC ConvolutionFilter1DEXT; + PFNGLCONVOLUTIONFILTER2DEXTPROC ConvolutionFilter2DEXT; + PFNGLCONVOLUTIONPARAMETERFEXTPROC ConvolutionParameterfEXT; + PFNGLCONVOLUTIONPARAMETERFVEXTPROC ConvolutionParameterfvEXT; + PFNGLCONVOLUTIONPARAMETERIEXTPROC ConvolutionParameteriEXT; + PFNGLCONVOLUTIONPARAMETERIVEXTPROC ConvolutionParameterivEXT; + PFNGLCONVOLUTIONPARAMETERXOESPROC ConvolutionParameterxOES; + PFNGLCONVOLUTIONPARAMETERXVOESPROC ConvolutionParameterxvOES; + PFNGLCOPYBUFFERSUBDATAPROC CopyBufferSubData; + PFNGLCOPYCOLORSUBTABLEEXTPROC CopyColorSubTableEXT; + PFNGLCOPYCOLORTABLESGIPROC CopyColorTableSGI; + PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC CopyConvolutionFilter1DEXT; + PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC CopyConvolutionFilter2DEXT; + PFNGLCOPYIMAGESUBDATAPROC CopyImageSubData; + PFNGLCOPYIMAGESUBDATANVPROC CopyImageSubDataNV; + PFNGLCOPYMULTITEXIMAGE1DEXTPROC CopyMultiTexImage1DEXT; + PFNGLCOPYMULTITEXIMAGE2DEXTPROC CopyMultiTexImage2DEXT; + PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC CopyMultiTexSubImage1DEXT; + PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC CopyMultiTexSubImage2DEXT; + PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC CopyMultiTexSubImage3DEXT; + PFNGLCOPYNAMEDBUFFERSUBDATAPROC CopyNamedBufferSubData; + PFNGLCOPYPATHNVPROC CopyPathNV; + PFNGLCOPYTEXIMAGE1DPROC CopyTexImage1D; + PFNGLCOPYTEXIMAGE1DEXTPROC CopyTexImage1DEXT; + PFNGLCOPYTEXIMAGE2DPROC CopyTexImage2D; + PFNGLCOPYTEXIMAGE2DEXTPROC CopyTexImage2DEXT; + PFNGLCOPYTEXSUBIMAGE1DPROC CopyTexSubImage1D; + PFNGLCOPYTEXSUBIMAGE1DEXTPROC CopyTexSubImage1DEXT; + PFNGLCOPYTEXSUBIMAGE2DPROC CopyTexSubImage2D; + PFNGLCOPYTEXSUBIMAGE2DEXTPROC CopyTexSubImage2DEXT; + PFNGLCOPYTEXSUBIMAGE3DPROC CopyTexSubImage3D; + PFNGLCOPYTEXSUBIMAGE3DEXTPROC CopyTexSubImage3DEXT; + PFNGLCOPYTEXTUREIMAGE1DEXTPROC CopyTextureImage1DEXT; + PFNGLCOPYTEXTUREIMAGE2DEXTPROC CopyTextureImage2DEXT; + PFNGLCOPYTEXTURESUBIMAGE1DPROC CopyTextureSubImage1D; + PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC CopyTextureSubImage1DEXT; + PFNGLCOPYTEXTURESUBIMAGE2DPROC CopyTextureSubImage2D; + PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC CopyTextureSubImage2DEXT; + PFNGLCOPYTEXTURESUBIMAGE3DPROC CopyTextureSubImage3D; + PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC CopyTextureSubImage3DEXT; + PFNGLCOVERFILLPATHINSTANCEDNVPROC CoverFillPathInstancedNV; + PFNGLCOVERFILLPATHNVPROC CoverFillPathNV; + PFNGLCOVERSTROKEPATHINSTANCEDNVPROC CoverStrokePathInstancedNV; + PFNGLCOVERSTROKEPATHNVPROC CoverStrokePathNV; + PFNGLCOVERAGEMODULATIONNVPROC CoverageModulationNV; + PFNGLCOVERAGEMODULATIONTABLENVPROC CoverageModulationTableNV; + PFNGLCREATEBUFFERSPROC CreateBuffers; + PFNGLCREATECOMMANDLISTSNVPROC CreateCommandListsNV; + PFNGLCREATEFRAMEBUFFERSPROC CreateFramebuffers; + PFNGLCREATEMEMORYOBJECTSEXTPROC CreateMemoryObjectsEXT; + PFNGLCREATEPERFQUERYINTELPROC CreatePerfQueryINTEL; + PFNGLCREATEPROGRAMPROC CreateProgram; + PFNGLCREATEPROGRAMOBJECTARBPROC CreateProgramObjectARB; + PFNGLCREATEPROGRAMPIPELINESPROC CreateProgramPipelines; + PFNGLCREATEPROGRESSFENCENVXPROC CreateProgressFenceNVX; + PFNGLCREATEQUERIESPROC CreateQueries; + PFNGLCREATERENDERBUFFERSPROC CreateRenderbuffers; + PFNGLCREATESAMPLERSPROC CreateSamplers; + PFNGLCREATESEMAPHORESNVPROC CreateSemaphoresNV; + PFNGLCREATESHADERPROC CreateShader; + PFNGLCREATESHADEROBJECTARBPROC CreateShaderObjectARB; + PFNGLCREATESHADERPROGRAMEXTPROC CreateShaderProgramEXT; + PFNGLCREATESHADERPROGRAMVPROC CreateShaderProgramv; + PFNGLCREATESTATESNVPROC CreateStatesNV; + PFNGLCREATESYNCFROMCLEVENTARBPROC CreateSyncFromCLeventARB; + PFNGLCREATETEXTURESPROC CreateTextures; + PFNGLCREATETRANSFORMFEEDBACKSPROC CreateTransformFeedbacks; + PFNGLCREATEVERTEXARRAYSPROC CreateVertexArrays; + PFNGLCULLFACEPROC CullFace; + PFNGLCULLPARAMETERDVEXTPROC CullParameterdvEXT; + PFNGLCULLPARAMETERFVEXTPROC CullParameterfvEXT; + PFNGLCURRENTPALETTEMATRIXARBPROC CurrentPaletteMatrixARB; + PFNGLDEBUGMESSAGECALLBACKPROC DebugMessageCallback; + PFNGLDEBUGMESSAGECALLBACKAMDPROC DebugMessageCallbackAMD; + PFNGLDEBUGMESSAGECALLBACKARBPROC DebugMessageCallbackARB; + PFNGLDEBUGMESSAGECONTROLPROC DebugMessageControl; + PFNGLDEBUGMESSAGECONTROLARBPROC DebugMessageControlARB; + PFNGLDEBUGMESSAGEENABLEAMDPROC DebugMessageEnableAMD; + PFNGLDEBUGMESSAGEINSERTPROC DebugMessageInsert; + PFNGLDEBUGMESSAGEINSERTAMDPROC DebugMessageInsertAMD; + PFNGLDEBUGMESSAGEINSERTARBPROC DebugMessageInsertARB; + PFNGLDEFORMSGIXPROC DeformSGIX; + PFNGLDEFORMATIONMAP3DSGIXPROC DeformationMap3dSGIX; + PFNGLDEFORMATIONMAP3FSGIXPROC DeformationMap3fSGIX; + PFNGLDELETEASYNCMARKERSSGIXPROC DeleteAsyncMarkersSGIX; + PFNGLDELETEBUFFERSPROC DeleteBuffers; + PFNGLDELETEBUFFERSARBPROC DeleteBuffersARB; + PFNGLDELETECOMMANDLISTSNVPROC DeleteCommandListsNV; + PFNGLDELETEFENCESAPPLEPROC DeleteFencesAPPLE; + PFNGLDELETEFENCESNVPROC DeleteFencesNV; + PFNGLDELETEFRAGMENTSHADERATIPROC DeleteFragmentShaderATI; + PFNGLDELETEFRAMEBUFFERSPROC DeleteFramebuffers; + PFNGLDELETEFRAMEBUFFERSEXTPROC DeleteFramebuffersEXT; + PFNGLDELETEMEMORYOBJECTSEXTPROC DeleteMemoryObjectsEXT; + PFNGLDELETENAMEDSTRINGARBPROC DeleteNamedStringARB; + PFNGLDELETENAMESAMDPROC DeleteNamesAMD; + PFNGLDELETEOBJECTARBPROC DeleteObjectARB; + PFNGLDELETEOCCLUSIONQUERIESNVPROC DeleteOcclusionQueriesNV; + PFNGLDELETEPATHSNVPROC DeletePathsNV; + PFNGLDELETEPERFMONITORSAMDPROC DeletePerfMonitorsAMD; + PFNGLDELETEPERFQUERYINTELPROC DeletePerfQueryINTEL; + PFNGLDELETEPROGRAMPROC DeleteProgram; + PFNGLDELETEPROGRAMPIPELINESPROC DeleteProgramPipelines; + PFNGLDELETEPROGRAMSARBPROC DeleteProgramsARB; + PFNGLDELETEPROGRAMSNVPROC DeleteProgramsNV; + PFNGLDELETEQUERIESPROC DeleteQueries; + PFNGLDELETEQUERIESARBPROC DeleteQueriesARB; + PFNGLDELETEQUERYRESOURCETAGNVPROC DeleteQueryResourceTagNV; + PFNGLDELETERENDERBUFFERSPROC DeleteRenderbuffers; + PFNGLDELETERENDERBUFFERSEXTPROC DeleteRenderbuffersEXT; + PFNGLDELETESAMPLERSPROC DeleteSamplers; + PFNGLDELETESEMAPHORESEXTPROC DeleteSemaphoresEXT; + PFNGLDELETESHADERPROC DeleteShader; + PFNGLDELETESTATESNVPROC DeleteStatesNV; + PFNGLDELETESYNCPROC DeleteSync; + PFNGLDELETETEXTURESPROC DeleteTextures; + PFNGLDELETETEXTURESEXTPROC DeleteTexturesEXT; + PFNGLDELETETRANSFORMFEEDBACKSPROC DeleteTransformFeedbacks; + PFNGLDELETETRANSFORMFEEDBACKSNVPROC DeleteTransformFeedbacksNV; + PFNGLDELETEVERTEXARRAYSPROC DeleteVertexArrays; + PFNGLDELETEVERTEXARRAYSAPPLEPROC DeleteVertexArraysAPPLE; + PFNGLDELETEVERTEXSHADEREXTPROC DeleteVertexShaderEXT; + PFNGLDEPTHBOUNDSEXTPROC DepthBoundsEXT; + PFNGLDEPTHBOUNDSDNVPROC DepthBoundsdNV; + PFNGLDEPTHFUNCPROC DepthFunc; + PFNGLDEPTHMASKPROC DepthMask; + PFNGLDEPTHRANGEPROC DepthRange; + PFNGLDEPTHRANGEARRAYDVNVPROC DepthRangeArraydvNV; + PFNGLDEPTHRANGEARRAYVPROC DepthRangeArrayv; + PFNGLDEPTHRANGEINDEXEDPROC DepthRangeIndexed; + PFNGLDEPTHRANGEINDEXEDDNVPROC DepthRangeIndexeddNV; + PFNGLDEPTHRANGEDNVPROC DepthRangedNV; + PFNGLDEPTHRANGEFPROC DepthRangef; + PFNGLDEPTHRANGEFOESPROC DepthRangefOES; + PFNGLDEPTHRANGEXOESPROC DepthRangexOES; + PFNGLDETACHOBJECTARBPROC DetachObjectARB; + PFNGLDETACHSHADERPROC DetachShader; + PFNGLDETAILTEXFUNCSGISPROC DetailTexFuncSGIS; + PFNGLDISABLEPROC Disable; + PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC DisableClientStateIndexedEXT; + PFNGLDISABLECLIENTSTATEIEXTPROC DisableClientStateiEXT; + PFNGLDISABLEINDEXEDEXTPROC DisableIndexedEXT; + PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC DisableVariantClientStateEXT; + PFNGLDISABLEVERTEXARRAYATTRIBPROC DisableVertexArrayAttrib; + PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC DisableVertexArrayAttribEXT; + PFNGLDISABLEVERTEXARRAYEXTPROC DisableVertexArrayEXT; + PFNGLDISABLEVERTEXATTRIBAPPLEPROC DisableVertexAttribAPPLE; + PFNGLDISABLEVERTEXATTRIBARRAYPROC DisableVertexAttribArray; + PFNGLDISABLEVERTEXATTRIBARRAYARBPROC DisableVertexAttribArrayARB; + PFNGLDISABLEIPROC Disablei; + PFNGLDISPATCHCOMPUTEPROC DispatchCompute; + PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC DispatchComputeGroupSizeARB; + PFNGLDISPATCHCOMPUTEINDIRECTPROC DispatchComputeIndirect; + PFNGLDRAWARRAYSPROC DrawArrays; + PFNGLDRAWARRAYSEXTPROC DrawArraysEXT; + PFNGLDRAWARRAYSINDIRECTPROC DrawArraysIndirect; + PFNGLDRAWARRAYSINSTANCEDPROC DrawArraysInstanced; + PFNGLDRAWARRAYSINSTANCEDARBPROC DrawArraysInstancedARB; + PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC DrawArraysInstancedBaseInstance; + PFNGLDRAWARRAYSINSTANCEDEXTPROC DrawArraysInstancedEXT; + PFNGLDRAWBUFFERPROC DrawBuffer; + PFNGLDRAWBUFFERSPROC DrawBuffers; + PFNGLDRAWBUFFERSARBPROC DrawBuffersARB; + PFNGLDRAWBUFFERSATIPROC DrawBuffersATI; + PFNGLDRAWCOMMANDSADDRESSNVPROC DrawCommandsAddressNV; + PFNGLDRAWCOMMANDSNVPROC DrawCommandsNV; + PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC DrawCommandsStatesAddressNV; + PFNGLDRAWCOMMANDSSTATESNVPROC DrawCommandsStatesNV; + PFNGLDRAWELEMENTARRAYAPPLEPROC DrawElementArrayAPPLE; + PFNGLDRAWELEMENTARRAYATIPROC DrawElementArrayATI; + PFNGLDRAWELEMENTSPROC DrawElements; + PFNGLDRAWELEMENTSBASEVERTEXPROC DrawElementsBaseVertex; + PFNGLDRAWELEMENTSINDIRECTPROC DrawElementsIndirect; + PFNGLDRAWELEMENTSINSTANCEDPROC DrawElementsInstanced; + PFNGLDRAWELEMENTSINSTANCEDARBPROC DrawElementsInstancedARB; + PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC DrawElementsInstancedBaseInstance; + PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC DrawElementsInstancedBaseVertex; + PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC + DrawElementsInstancedBaseVertexBaseInstance; + PFNGLDRAWELEMENTSINSTANCEDEXTPROC DrawElementsInstancedEXT; + PFNGLDRAWMESHARRAYSSUNPROC DrawMeshArraysSUN; + PFNGLDRAWMESHTASKSINDIRECTNVPROC DrawMeshTasksIndirectNV; + PFNGLDRAWMESHTASKSNVPROC DrawMeshTasksNV; + PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC DrawRangeElementArrayAPPLE; + PFNGLDRAWRANGEELEMENTARRAYATIPROC DrawRangeElementArrayATI; + PFNGLDRAWRANGEELEMENTSPROC DrawRangeElements; + PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC DrawRangeElementsBaseVertex; + PFNGLDRAWRANGEELEMENTSEXTPROC DrawRangeElementsEXT; + PFNGLDRAWTEXTURENVPROC DrawTextureNV; + PFNGLDRAWTRANSFORMFEEDBACKPROC DrawTransformFeedback; + PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC DrawTransformFeedbackInstanced; + PFNGLDRAWTRANSFORMFEEDBACKNVPROC DrawTransformFeedbackNV; + PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC DrawTransformFeedbackStream; + PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC DrawTransformFeedbackStreamInstanced; + PFNGLDRAWVKIMAGENVPROC DrawVkImageNV; + PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC EGLImageTargetTexStorageEXT; + PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC EGLImageTargetTextureStorageEXT; + PFNGLEDGEFLAGFORMATNVPROC EdgeFlagFormatNV; + PFNGLEDGEFLAGPOINTEREXTPROC EdgeFlagPointerEXT; + PFNGLEDGEFLAGPOINTERLISTIBMPROC EdgeFlagPointerListIBM; + PFNGLELEMENTPOINTERAPPLEPROC ElementPointerAPPLE; + PFNGLELEMENTPOINTERATIPROC ElementPointerATI; + PFNGLENABLEPROC Enable; + PFNGLENABLECLIENTSTATEINDEXEDEXTPROC EnableClientStateIndexedEXT; + PFNGLENABLECLIENTSTATEIEXTPROC EnableClientStateiEXT; + PFNGLENABLEINDEXEDEXTPROC EnableIndexedEXT; + PFNGLENABLEVARIANTCLIENTSTATEEXTPROC EnableVariantClientStateEXT; + PFNGLENABLEVERTEXARRAYATTRIBPROC EnableVertexArrayAttrib; + PFNGLENABLEVERTEXARRAYATTRIBEXTPROC EnableVertexArrayAttribEXT; + PFNGLENABLEVERTEXARRAYEXTPROC EnableVertexArrayEXT; + PFNGLENABLEVERTEXATTRIBAPPLEPROC EnableVertexAttribAPPLE; + PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray; + PFNGLENABLEVERTEXATTRIBARRAYARBPROC EnableVertexAttribArrayARB; + PFNGLENABLEIPROC Enablei; + PFNGLENDCONDITIONALRENDERPROC EndConditionalRender; + PFNGLENDCONDITIONALRENDERNVPROC EndConditionalRenderNV; + PFNGLENDCONDITIONALRENDERNVXPROC EndConditionalRenderNVX; + PFNGLENDFRAGMENTSHADERATIPROC EndFragmentShaderATI; + PFNGLENDOCCLUSIONQUERYNVPROC EndOcclusionQueryNV; + PFNGLENDPERFMONITORAMDPROC EndPerfMonitorAMD; + PFNGLENDPERFQUERYINTELPROC EndPerfQueryINTEL; + PFNGLENDQUERYPROC EndQuery; + PFNGLENDQUERYARBPROC EndQueryARB; + PFNGLENDQUERYINDEXEDPROC EndQueryIndexed; + PFNGLENDTRANSFORMFEEDBACKPROC EndTransformFeedback; + PFNGLENDTRANSFORMFEEDBACKEXTPROC EndTransformFeedbackEXT; + PFNGLENDTRANSFORMFEEDBACKNVPROC EndTransformFeedbackNV; + PFNGLENDVERTEXSHADEREXTPROC EndVertexShaderEXT; + PFNGLENDVIDEOCAPTURENVPROC EndVideoCaptureNV; + PFNGLEVALCOORD1XOESPROC EvalCoord1xOES; + PFNGLEVALCOORD1XVOESPROC EvalCoord1xvOES; + PFNGLEVALCOORD2XOESPROC EvalCoord2xOES; + PFNGLEVALCOORD2XVOESPROC EvalCoord2xvOES; + PFNGLEVALMAPSNVPROC EvalMapsNV; + PFNGLEVALUATEDEPTHVALUESARBPROC EvaluateDepthValuesARB; + PFNGLEXECUTEPROGRAMNVPROC ExecuteProgramNV; + PFNGLEXTRACTCOMPONENTEXTPROC ExtractComponentEXT; + PFNGLFEEDBACKBUFFERXOESPROC FeedbackBufferxOES; + PFNGLFENCESYNCPROC FenceSync; + PFNGLFINALCOMBINERINPUTNVPROC FinalCombinerInputNV; + PFNGLFINISHPROC Finish; + PFNGLFINISHASYNCSGIXPROC FinishAsyncSGIX; + PFNGLFINISHFENCEAPPLEPROC FinishFenceAPPLE; + PFNGLFINISHFENCENVPROC FinishFenceNV; + PFNGLFINISHOBJECTAPPLEPROC FinishObjectAPPLE; + PFNGLFINISHTEXTURESUNXPROC FinishTextureSUNX; + PFNGLFLUSHPROC Flush; + PFNGLFLUSHMAPPEDBUFFERRANGEPROC FlushMappedBufferRange; + PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC FlushMappedBufferRangeAPPLE; + PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC FlushMappedNamedBufferRange; + PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC FlushMappedNamedBufferRangeEXT; + PFNGLFLUSHPIXELDATARANGENVPROC FlushPixelDataRangeNV; + PFNGLFLUSHRASTERSGIXPROC FlushRasterSGIX; + PFNGLFLUSHSTATICDATAIBMPROC FlushStaticDataIBM; + PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC FlushVertexArrayRangeAPPLE; + PFNGLFLUSHVERTEXARRAYRANGENVPROC FlushVertexArrayRangeNV; + PFNGLFOGCOORDFORMATNVPROC FogCoordFormatNV; + PFNGLFOGCOORDPOINTEREXTPROC FogCoordPointerEXT; + PFNGLFOGCOORDPOINTERLISTIBMPROC FogCoordPointerListIBM; + PFNGLFOGCOORDDEXTPROC FogCoorddEXT; + PFNGLFOGCOORDDVEXTPROC FogCoorddvEXT; + PFNGLFOGCOORDFEXTPROC FogCoordfEXT; + PFNGLFOGCOORDFVEXTPROC FogCoordfvEXT; + PFNGLFOGCOORDHNVPROC FogCoordhNV; + PFNGLFOGCOORDHVNVPROC FogCoordhvNV; + PFNGLFOGFUNCSGISPROC FogFuncSGIS; + PFNGLFOGXOESPROC FogxOES; + PFNGLFOGXVOESPROC FogxvOES; + PFNGLFRAGMENTCOLORMATERIALSGIXPROC FragmentColorMaterialSGIX; + PFNGLFRAGMENTCOVERAGECOLORNVPROC FragmentCoverageColorNV; + PFNGLFRAGMENTLIGHTMODELFSGIXPROC FragmentLightModelfSGIX; + PFNGLFRAGMENTLIGHTMODELFVSGIXPROC FragmentLightModelfvSGIX; + PFNGLFRAGMENTLIGHTMODELISGIXPROC FragmentLightModeliSGIX; + PFNGLFRAGMENTLIGHTMODELIVSGIXPROC FragmentLightModelivSGIX; + PFNGLFRAGMENTLIGHTFSGIXPROC FragmentLightfSGIX; + PFNGLFRAGMENTLIGHTFVSGIXPROC FragmentLightfvSGIX; + PFNGLFRAGMENTLIGHTISGIXPROC FragmentLightiSGIX; + PFNGLFRAGMENTLIGHTIVSGIXPROC FragmentLightivSGIX; + PFNGLFRAGMENTMATERIALFSGIXPROC FragmentMaterialfSGIX; + PFNGLFRAGMENTMATERIALFVSGIXPROC FragmentMaterialfvSGIX; + PFNGLFRAGMENTMATERIALISGIXPROC FragmentMaterialiSGIX; + PFNGLFRAGMENTMATERIALIVSGIXPROC FragmentMaterialivSGIX; + PFNGLFRAMETERMINATORGREMEDYPROC FrameTerminatorGREMEDY; + PFNGLFRAMEZOOMSGIXPROC FrameZoomSGIX; + PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC FramebufferDrawBufferEXT; + PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC FramebufferDrawBuffersEXT; + PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC FramebufferFetchBarrierEXT; + PFNGLFRAMEBUFFERPARAMETERIPROC FramebufferParameteri; + PFNGLFRAMEBUFFERPARAMETERIMESAPROC FramebufferParameteriMESA; + PFNGLFRAMEBUFFERREADBUFFEREXTPROC FramebufferReadBufferEXT; + PFNGLFRAMEBUFFERRENDERBUFFERPROC FramebufferRenderbuffer; + PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC FramebufferRenderbufferEXT; + PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC FramebufferSampleLocationsfvARB; + PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC FramebufferSampleLocationsfvNV; + PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC FramebufferSamplePositionsfvAMD; + PFNGLFRAMEBUFFERTEXTUREPROC FramebufferTexture; + PFNGLFRAMEBUFFERTEXTURE1DPROC FramebufferTexture1D; + PFNGLFRAMEBUFFERTEXTURE1DEXTPROC FramebufferTexture1DEXT; + PFNGLFRAMEBUFFERTEXTURE2DPROC FramebufferTexture2D; + PFNGLFRAMEBUFFERTEXTURE2DEXTPROC FramebufferTexture2DEXT; + PFNGLFRAMEBUFFERTEXTURE3DPROC FramebufferTexture3D; + PFNGLFRAMEBUFFERTEXTURE3DEXTPROC FramebufferTexture3DEXT; + PFNGLFRAMEBUFFERTEXTUREARBPROC FramebufferTextureARB; + PFNGLFRAMEBUFFERTEXTUREEXTPROC FramebufferTextureEXT; + PFNGLFRAMEBUFFERTEXTUREFACEARBPROC FramebufferTextureFaceARB; + PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC FramebufferTextureFaceEXT; + PFNGLFRAMEBUFFERTEXTURELAYERPROC FramebufferTextureLayer; + PFNGLFRAMEBUFFERTEXTURELAYERARBPROC FramebufferTextureLayerARB; + PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC FramebufferTextureLayerEXT; + PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC FramebufferTextureMultiviewOVR; + PFNGLFREEOBJECTBUFFERATIPROC FreeObjectBufferATI; + PFNGLFRONTFACEPROC FrontFace; + PFNGLFRUSTUMFOESPROC FrustumfOES; + PFNGLFRUSTUMXOESPROC FrustumxOES; + PFNGLGENASYNCMARKERSSGIXPROC GenAsyncMarkersSGIX; + PFNGLGENBUFFERSPROC GenBuffers; + PFNGLGENBUFFERSARBPROC GenBuffersARB; + PFNGLGENFENCESAPPLEPROC GenFencesAPPLE; + PFNGLGENFENCESNVPROC GenFencesNV; + PFNGLGENFRAGMENTSHADERSATIPROC GenFragmentShadersATI; + PFNGLGENFRAMEBUFFERSPROC GenFramebuffers; + PFNGLGENFRAMEBUFFERSEXTPROC GenFramebuffersEXT; + PFNGLGENNAMESAMDPROC GenNamesAMD; + PFNGLGENOCCLUSIONQUERIESNVPROC GenOcclusionQueriesNV; + PFNGLGENPATHSNVPROC GenPathsNV; + PFNGLGENPERFMONITORSAMDPROC GenPerfMonitorsAMD; + PFNGLGENPROGRAMPIPELINESPROC GenProgramPipelines; + PFNGLGENPROGRAMSARBPROC GenProgramsARB; + PFNGLGENPROGRAMSNVPROC GenProgramsNV; + PFNGLGENQUERIESPROC GenQueries; + PFNGLGENQUERIESARBPROC GenQueriesARB; + PFNGLGENQUERYRESOURCETAGNVPROC GenQueryResourceTagNV; + PFNGLGENRENDERBUFFERSPROC GenRenderbuffers; + PFNGLGENRENDERBUFFERSEXTPROC GenRenderbuffersEXT; + PFNGLGENSAMPLERSPROC GenSamplers; + PFNGLGENSEMAPHORESEXTPROC GenSemaphoresEXT; + PFNGLGENSYMBOLSEXTPROC GenSymbolsEXT; + PFNGLGENTEXTURESPROC GenTextures; + PFNGLGENTEXTURESEXTPROC GenTexturesEXT; + PFNGLGENTRANSFORMFEEDBACKSPROC GenTransformFeedbacks; + PFNGLGENTRANSFORMFEEDBACKSNVPROC GenTransformFeedbacksNV; + PFNGLGENVERTEXARRAYSPROC GenVertexArrays; + PFNGLGENVERTEXARRAYSAPPLEPROC GenVertexArraysAPPLE; + PFNGLGENVERTEXSHADERSEXTPROC GenVertexShadersEXT; + PFNGLGENERATEMIPMAPPROC GenerateMipmap; + PFNGLGENERATEMIPMAPEXTPROC GenerateMipmapEXT; + PFNGLGENERATEMULTITEXMIPMAPEXTPROC GenerateMultiTexMipmapEXT; + PFNGLGENERATETEXTUREMIPMAPPROC GenerateTextureMipmap; + PFNGLGENERATETEXTUREMIPMAPEXTPROC GenerateTextureMipmapEXT; + PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GetActiveAtomicCounterBufferiv; + PFNGLGETACTIVEATTRIBPROC GetActiveAttrib; + PFNGLGETACTIVEATTRIBARBPROC GetActiveAttribARB; + PFNGLGETACTIVESUBROUTINENAMEPROC GetActiveSubroutineName; + PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GetActiveSubroutineUniformName; + PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GetActiveSubroutineUniformiv; + PFNGLGETACTIVEUNIFORMPROC GetActiveUniform; + PFNGLGETACTIVEUNIFORMARBPROC GetActiveUniformARB; + PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GetActiveUniformBlockName; + PFNGLGETACTIVEUNIFORMBLOCKIVPROC GetActiveUniformBlockiv; + PFNGLGETACTIVEUNIFORMNAMEPROC GetActiveUniformName; + PFNGLGETACTIVEUNIFORMSIVPROC GetActiveUniformsiv; + PFNGLGETACTIVEVARYINGNVPROC GetActiveVaryingNV; + PFNGLGETARRAYOBJECTFVATIPROC GetArrayObjectfvATI; + PFNGLGETARRAYOBJECTIVATIPROC GetArrayObjectivATI; + PFNGLGETATTACHEDOBJECTSARBPROC GetAttachedObjectsARB; + PFNGLGETATTACHEDSHADERSPROC GetAttachedShaders; + PFNGLGETATTRIBLOCATIONPROC GetAttribLocation; + PFNGLGETATTRIBLOCATIONARBPROC GetAttribLocationARB; + PFNGLGETBOOLEANINDEXEDVEXTPROC GetBooleanIndexedvEXT; + PFNGLGETBOOLEANI_VPROC GetBooleani_v; + PFNGLGETBOOLEANVPROC GetBooleanv; + PFNGLGETBUFFERPARAMETERI64VPROC GetBufferParameteri64v; + PFNGLGETBUFFERPARAMETERIVPROC GetBufferParameteriv; + PFNGLGETBUFFERPARAMETERIVARBPROC GetBufferParameterivARB; + PFNGLGETBUFFERPARAMETERUI64VNVPROC GetBufferParameterui64vNV; + PFNGLGETBUFFERPOINTERVPROC GetBufferPointerv; + PFNGLGETBUFFERPOINTERVARBPROC GetBufferPointervARB; + PFNGLGETBUFFERSUBDATAPROC GetBufferSubData; + PFNGLGETBUFFERSUBDATAARBPROC GetBufferSubDataARB; + PFNGLGETCLIPPLANEFOESPROC GetClipPlanefOES; + PFNGLGETCLIPPLANEXOESPROC GetClipPlanexOES; + PFNGLGETCOLORTABLEEXTPROC GetColorTableEXT; + PFNGLGETCOLORTABLEPARAMETERFVEXTPROC GetColorTableParameterfvEXT; + PFNGLGETCOLORTABLEPARAMETERFVSGIPROC GetColorTableParameterfvSGI; + PFNGLGETCOLORTABLEPARAMETERIVEXTPROC GetColorTableParameterivEXT; + PFNGLGETCOLORTABLEPARAMETERIVSGIPROC GetColorTableParameterivSGI; + PFNGLGETCOLORTABLESGIPROC GetColorTableSGI; + PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC GetCombinerInputParameterfvNV; + PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC GetCombinerInputParameterivNV; + PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC GetCombinerOutputParameterfvNV; + PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC GetCombinerOutputParameterivNV; + PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC GetCombinerStageParameterfvNV; + PFNGLGETCOMMANDHEADERNVPROC GetCommandHeaderNV; + PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC GetCompressedMultiTexImageEXT; + PFNGLGETCOMPRESSEDTEXIMAGEPROC GetCompressedTexImage; + PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GetCompressedTexImageARB; + PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC GetCompressedTextureImage; + PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC GetCompressedTextureImageEXT; + PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC GetCompressedTextureSubImage; + PFNGLGETCONVOLUTIONFILTEREXTPROC GetConvolutionFilterEXT; + PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC GetConvolutionParameterfvEXT; + PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC GetConvolutionParameterivEXT; + PFNGLGETCONVOLUTIONPARAMETERXVOESPROC GetConvolutionParameterxvOES; + PFNGLGETCOVERAGEMODULATIONTABLENVPROC GetCoverageModulationTableNV; + PFNGLGETDEBUGMESSAGELOGPROC GetDebugMessageLog; + PFNGLGETDEBUGMESSAGELOGAMDPROC GetDebugMessageLogAMD; + PFNGLGETDEBUGMESSAGELOGARBPROC GetDebugMessageLogARB; + PFNGLGETDETAILTEXFUNCSGISPROC GetDetailTexFuncSGIS; + PFNGLGETDOUBLEINDEXEDVEXTPROC GetDoubleIndexedvEXT; + PFNGLGETDOUBLEI_VPROC GetDoublei_v; + PFNGLGETDOUBLEI_VEXTPROC GetDoublei_vEXT; + PFNGLGETDOUBLEVPROC GetDoublev; + PFNGLGETERRORPROC GetError; + PFNGLGETFENCEIVNVPROC GetFenceivNV; + PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC GetFinalCombinerInputParameterfvNV; + PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC GetFinalCombinerInputParameterivNV; + PFNGLGETFIRSTPERFQUERYIDINTELPROC GetFirstPerfQueryIdINTEL; + PFNGLGETFIXEDVOESPROC GetFixedvOES; + PFNGLGETFLOATINDEXEDVEXTPROC GetFloatIndexedvEXT; + PFNGLGETFLOATI_VPROC GetFloati_v; + PFNGLGETFLOATI_VEXTPROC GetFloati_vEXT; + PFNGLGETFLOATVPROC GetFloatv; + PFNGLGETFOGFUNCSGISPROC GetFogFuncSGIS; + PFNGLGETFRAGDATAINDEXPROC GetFragDataIndex; + PFNGLGETFRAGDATALOCATIONPROC GetFragDataLocation; + PFNGLGETFRAGDATALOCATIONEXTPROC GetFragDataLocationEXT; + PFNGLGETFRAGMENTLIGHTFVSGIXPROC GetFragmentLightfvSGIX; + PFNGLGETFRAGMENTLIGHTIVSGIXPROC GetFragmentLightivSGIX; + PFNGLGETFRAGMENTMATERIALFVSGIXPROC GetFragmentMaterialfvSGIX; + PFNGLGETFRAGMENTMATERIALIVSGIXPROC GetFragmentMaterialivSGIX; + PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetFramebufferAttachmentParameteriv; + PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC GetFramebufferAttachmentParameterivEXT; + PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC GetFramebufferParameterfvAMD; + PFNGLGETFRAMEBUFFERPARAMETERIVPROC GetFramebufferParameteriv; + PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC GetFramebufferParameterivEXT; + PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC GetFramebufferParameterivMESA; + PFNGLGETGRAPHICSRESETSTATUSPROC GetGraphicsResetStatus; + PFNGLGETGRAPHICSRESETSTATUSARBPROC GetGraphicsResetStatusARB; + PFNGLGETHANDLEARBPROC GetHandleARB; + PFNGLGETHISTOGRAMEXTPROC GetHistogramEXT; + PFNGLGETHISTOGRAMPARAMETERFVEXTPROC GetHistogramParameterfvEXT; + PFNGLGETHISTOGRAMPARAMETERIVEXTPROC GetHistogramParameterivEXT; + PFNGLGETHISTOGRAMPARAMETERXVOESPROC GetHistogramParameterxvOES; + PFNGLGETIMAGEHANDLEARBPROC GetImageHandleARB; + PFNGLGETIMAGEHANDLENVPROC GetImageHandleNV; + PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC GetImageTransformParameterfvHP; + PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC GetImageTransformParameterivHP; + PFNGLGETINFOLOGARBPROC GetInfoLogARB; + PFNGLGETINSTRUMENTSSGIXPROC GetInstrumentsSGIX; + PFNGLGETINTEGER64I_VPROC GetInteger64i_v; + PFNGLGETINTEGER64VPROC GetInteger64v; + PFNGLGETINTEGERINDEXEDVEXTPROC GetIntegerIndexedvEXT; + PFNGLGETINTEGERI_VPROC GetIntegeri_v; + PFNGLGETINTEGERUI64I_VNVPROC GetIntegerui64i_vNV; + PFNGLGETINTEGERUI64VNVPROC GetIntegerui64vNV; + PFNGLGETINTEGERVPROC GetIntegerv; + PFNGLGETINTERNALFORMATSAMPLEIVNVPROC GetInternalformatSampleivNV; + PFNGLGETINTERNALFORMATI64VPROC GetInternalformati64v; + PFNGLGETINTERNALFORMATIVPROC GetInternalformativ; + PFNGLGETINVARIANTBOOLEANVEXTPROC GetInvariantBooleanvEXT; + PFNGLGETINVARIANTFLOATVEXTPROC GetInvariantFloatvEXT; + PFNGLGETINVARIANTINTEGERVEXTPROC GetInvariantIntegervEXT; + PFNGLGETLIGHTXOESPROC GetLightxOES; + PFNGLGETLISTPARAMETERFVSGIXPROC GetListParameterfvSGIX; + PFNGLGETLISTPARAMETERIVSGIXPROC GetListParameterivSGIX; + PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC GetLocalConstantBooleanvEXT; + PFNGLGETLOCALCONSTANTFLOATVEXTPROC GetLocalConstantFloatvEXT; + PFNGLGETLOCALCONSTANTINTEGERVEXTPROC GetLocalConstantIntegervEXT; + PFNGLGETMAPATTRIBPARAMETERFVNVPROC GetMapAttribParameterfvNV; + PFNGLGETMAPATTRIBPARAMETERIVNVPROC GetMapAttribParameterivNV; + PFNGLGETMAPCONTROLPOINTSNVPROC GetMapControlPointsNV; + PFNGLGETMAPPARAMETERFVNVPROC GetMapParameterfvNV; + PFNGLGETMAPPARAMETERIVNVPROC GetMapParameterivNV; + PFNGLGETMAPXVOESPROC GetMapxvOES; + PFNGLGETMATERIALXOESPROC GetMaterialxOES; + PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC GetMemoryObjectDetachedResourcesuivNV; + PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC GetMemoryObjectParameterivEXT; + PFNGLGETMINMAXEXTPROC GetMinmaxEXT; + PFNGLGETMINMAXPARAMETERFVEXTPROC GetMinmaxParameterfvEXT; + PFNGLGETMINMAXPARAMETERIVEXTPROC GetMinmaxParameterivEXT; + PFNGLGETMULTITEXENVFVEXTPROC GetMultiTexEnvfvEXT; + PFNGLGETMULTITEXENVIVEXTPROC GetMultiTexEnvivEXT; + PFNGLGETMULTITEXGENDVEXTPROC GetMultiTexGendvEXT; + PFNGLGETMULTITEXGENFVEXTPROC GetMultiTexGenfvEXT; + PFNGLGETMULTITEXGENIVEXTPROC GetMultiTexGenivEXT; + PFNGLGETMULTITEXIMAGEEXTPROC GetMultiTexImageEXT; + PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC GetMultiTexLevelParameterfvEXT; + PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC GetMultiTexLevelParameterivEXT; + PFNGLGETMULTITEXPARAMETERIIVEXTPROC GetMultiTexParameterIivEXT; + PFNGLGETMULTITEXPARAMETERIUIVEXTPROC GetMultiTexParameterIuivEXT; + PFNGLGETMULTITEXPARAMETERFVEXTPROC GetMultiTexParameterfvEXT; + PFNGLGETMULTITEXPARAMETERIVEXTPROC GetMultiTexParameterivEXT; + PFNGLGETMULTISAMPLEFVPROC GetMultisamplefv; + PFNGLGETMULTISAMPLEFVNVPROC GetMultisamplefvNV; + PFNGLGETNAMEDBUFFERPARAMETERI64VPROC GetNamedBufferParameteri64v; + PFNGLGETNAMEDBUFFERPARAMETERIVPROC GetNamedBufferParameteriv; + PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC GetNamedBufferParameterivEXT; + PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC GetNamedBufferParameterui64vNV; + PFNGLGETNAMEDBUFFERPOINTERVPROC GetNamedBufferPointerv; + PFNGLGETNAMEDBUFFERPOINTERVEXTPROC GetNamedBufferPointervEXT; + PFNGLGETNAMEDBUFFERSUBDATAPROC GetNamedBufferSubData; + PFNGLGETNAMEDBUFFERSUBDATAEXTPROC GetNamedBufferSubDataEXT; + PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC GetNamedFramebufferAttachmentParameteriv; + PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC + GetNamedFramebufferAttachmentParameterivEXT; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC GetNamedFramebufferParameterfvAMD; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC GetNamedFramebufferParameteriv; + PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC GetNamedFramebufferParameterivEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC GetNamedProgramLocalParameterIivEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC GetNamedProgramLocalParameterIuivEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC GetNamedProgramLocalParameterdvEXT; + PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC GetNamedProgramLocalParameterfvEXT; + PFNGLGETNAMEDPROGRAMSTRINGEXTPROC GetNamedProgramStringEXT; + PFNGLGETNAMEDPROGRAMIVEXTPROC GetNamedProgramivEXT; + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC GetNamedRenderbufferParameteriv; + PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC GetNamedRenderbufferParameterivEXT; + PFNGLGETNAMEDSTRINGARBPROC GetNamedStringARB; + PFNGLGETNAMEDSTRINGIVARBPROC GetNamedStringivARB; + PFNGLGETNEXTPERFQUERYIDINTELPROC GetNextPerfQueryIdINTEL; + PFNGLGETOBJECTBUFFERFVATIPROC GetObjectBufferfvATI; + PFNGLGETOBJECTBUFFERIVATIPROC GetObjectBufferivATI; + PFNGLGETOBJECTLABELPROC GetObjectLabel; + PFNGLGETOBJECTLABELEXTPROC GetObjectLabelEXT; + PFNGLGETOBJECTPARAMETERFVARBPROC GetObjectParameterfvARB; + PFNGLGETOBJECTPARAMETERIVAPPLEPROC GetObjectParameterivAPPLE; + PFNGLGETOBJECTPARAMETERIVARBPROC GetObjectParameterivARB; + PFNGLGETOBJECTPTRLABELPROC GetObjectPtrLabel; + PFNGLGETOCCLUSIONQUERYIVNVPROC GetOcclusionQueryivNV; + PFNGLGETOCCLUSIONQUERYUIVNVPROC GetOcclusionQueryuivNV; + PFNGLGETPATHCOMMANDSNVPROC GetPathCommandsNV; + PFNGLGETPATHCOORDSNVPROC GetPathCoordsNV; + PFNGLGETPATHDASHARRAYNVPROC GetPathDashArrayNV; + PFNGLGETPATHLENGTHNVPROC GetPathLengthNV; + PFNGLGETPATHMETRICRANGENVPROC GetPathMetricRangeNV; + PFNGLGETPATHMETRICSNVPROC GetPathMetricsNV; + PFNGLGETPATHPARAMETERFVNVPROC GetPathParameterfvNV; + PFNGLGETPATHPARAMETERIVNVPROC GetPathParameterivNV; + PFNGLGETPATHSPACINGNVPROC GetPathSpacingNV; + PFNGLGETPERFCOUNTERINFOINTELPROC GetPerfCounterInfoINTEL; + PFNGLGETPERFMONITORCOUNTERDATAAMDPROC GetPerfMonitorCounterDataAMD; + PFNGLGETPERFMONITORCOUNTERINFOAMDPROC GetPerfMonitorCounterInfoAMD; + PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC GetPerfMonitorCounterStringAMD; + PFNGLGETPERFMONITORCOUNTERSAMDPROC GetPerfMonitorCountersAMD; + PFNGLGETPERFMONITORGROUPSTRINGAMDPROC GetPerfMonitorGroupStringAMD; + PFNGLGETPERFMONITORGROUPSAMDPROC GetPerfMonitorGroupsAMD; + PFNGLGETPERFQUERYDATAINTELPROC GetPerfQueryDataINTEL; + PFNGLGETPERFQUERYIDBYNAMEINTELPROC GetPerfQueryIdByNameINTEL; + PFNGLGETPERFQUERYINFOINTELPROC GetPerfQueryInfoINTEL; + PFNGLGETPIXELMAPXVPROC GetPixelMapxv; + PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC GetPixelTexGenParameterfvSGIS; + PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC GetPixelTexGenParameterivSGIS; + PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC GetPixelTransformParameterfvEXT; + PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC GetPixelTransformParameterivEXT; + PFNGLGETPOINTERINDEXEDVEXTPROC GetPointerIndexedvEXT; + PFNGLGETPOINTERI_VEXTPROC GetPointeri_vEXT; + PFNGLGETPOINTERVPROC GetPointerv; + PFNGLGETPOINTERVEXTPROC GetPointervEXT; + PFNGLGETPROGRAMBINARYPROC GetProgramBinary; + PFNGLGETPROGRAMENVPARAMETERIIVNVPROC GetProgramEnvParameterIivNV; + PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC GetProgramEnvParameterIuivNV; + PFNGLGETPROGRAMENVPARAMETERDVARBPROC GetProgramEnvParameterdvARB; + PFNGLGETPROGRAMENVPARAMETERFVARBPROC GetProgramEnvParameterfvARB; + PFNGLGETPROGRAMINFOLOGPROC GetProgramInfoLog; + PFNGLGETPROGRAMINTERFACEIVPROC GetProgramInterfaceiv; + PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC GetProgramLocalParameterIivNV; + PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC GetProgramLocalParameterIuivNV; + PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GetProgramLocalParameterdvARB; + PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GetProgramLocalParameterfvARB; + PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC GetProgramNamedParameterdvNV; + PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC GetProgramNamedParameterfvNV; + PFNGLGETPROGRAMPARAMETERDVNVPROC GetProgramParameterdvNV; + PFNGLGETPROGRAMPARAMETERFVNVPROC GetProgramParameterfvNV; + PFNGLGETPROGRAMPIPELINEINFOLOGPROC GetProgramPipelineInfoLog; + PFNGLGETPROGRAMPIPELINEIVPROC GetProgramPipelineiv; + PFNGLGETPROGRAMRESOURCEINDEXPROC GetProgramResourceIndex; + PFNGLGETPROGRAMRESOURCELOCATIONPROC GetProgramResourceLocation; + PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GetProgramResourceLocationIndex; + PFNGLGETPROGRAMRESOURCENAMEPROC GetProgramResourceName; + PFNGLGETPROGRAMRESOURCEFVNVPROC GetProgramResourcefvNV; + PFNGLGETPROGRAMRESOURCEIVPROC GetProgramResourceiv; + PFNGLGETPROGRAMSTAGEIVPROC GetProgramStageiv; + PFNGLGETPROGRAMSTRINGARBPROC GetProgramStringARB; + PFNGLGETPROGRAMSTRINGNVPROC GetProgramStringNV; + PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC GetProgramSubroutineParameteruivNV; + PFNGLGETPROGRAMIVPROC GetProgramiv; + PFNGLGETPROGRAMIVARBPROC GetProgramivARB; + PFNGLGETPROGRAMIVNVPROC GetProgramivNV; + PFNGLGETQUERYBUFFEROBJECTI64VPROC GetQueryBufferObjecti64v; + PFNGLGETQUERYBUFFEROBJECTIVPROC GetQueryBufferObjectiv; + PFNGLGETQUERYBUFFEROBJECTUI64VPROC GetQueryBufferObjectui64v; + PFNGLGETQUERYBUFFEROBJECTUIVPROC GetQueryBufferObjectuiv; + PFNGLGETQUERYINDEXEDIVPROC GetQueryIndexediv; + PFNGLGETQUERYOBJECTI64VPROC GetQueryObjecti64v; + PFNGLGETQUERYOBJECTI64VEXTPROC GetQueryObjecti64vEXT; + PFNGLGETQUERYOBJECTIVPROC GetQueryObjectiv; + PFNGLGETQUERYOBJECTIVARBPROC GetQueryObjectivARB; + PFNGLGETQUERYOBJECTUI64VPROC GetQueryObjectui64v; + PFNGLGETQUERYOBJECTUI64VEXTPROC GetQueryObjectui64vEXT; + PFNGLGETQUERYOBJECTUIVPROC GetQueryObjectuiv; + PFNGLGETQUERYOBJECTUIVARBPROC GetQueryObjectuivARB; + PFNGLGETQUERYIVPROC GetQueryiv; + PFNGLGETQUERYIVARBPROC GetQueryivARB; + PFNGLGETRENDERBUFFERPARAMETERIVPROC GetRenderbufferParameteriv; + PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC GetRenderbufferParameterivEXT; + PFNGLGETSAMPLERPARAMETERIIVPROC GetSamplerParameterIiv; + PFNGLGETSAMPLERPARAMETERIUIVPROC GetSamplerParameterIuiv; + PFNGLGETSAMPLERPARAMETERFVPROC GetSamplerParameterfv; + PFNGLGETSAMPLERPARAMETERIVPROC GetSamplerParameteriv; + PFNGLGETSEMAPHOREPARAMETERIVNVPROC GetSemaphoreParameterivNV; + PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC GetSemaphoreParameterui64vEXT; + PFNGLGETSEPARABLEFILTEREXTPROC GetSeparableFilterEXT; + PFNGLGETSHADERINFOLOGPROC GetShaderInfoLog; + PFNGLGETSHADERPRECISIONFORMATPROC GetShaderPrecisionFormat; + PFNGLGETSHADERSOURCEPROC GetShaderSource; + PFNGLGETSHADERSOURCEARBPROC GetShaderSourceARB; + PFNGLGETSHADERIVPROC GetShaderiv; + PFNGLGETSHADINGRATEIMAGEPALETTENVPROC GetShadingRateImagePaletteNV; + PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC GetShadingRateSampleLocationivNV; + PFNGLGETSHARPENTEXFUNCSGISPROC GetSharpenTexFuncSGIS; + PFNGLGETSTAGEINDEXNVPROC GetStageIndexNV; + PFNGLGETSTRINGPROC GetString; + PFNGLGETSTRINGIPROC GetStringi; + PFNGLGETSUBROUTINEINDEXPROC GetSubroutineIndex; + PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GetSubroutineUniformLocation; + PFNGLGETSYNCIVPROC GetSynciv; + PFNGLGETTEXBUMPPARAMETERFVATIPROC GetTexBumpParameterfvATI; + PFNGLGETTEXBUMPPARAMETERIVATIPROC GetTexBumpParameterivATI; + PFNGLGETTEXENVXVOESPROC GetTexEnvxvOES; + PFNGLGETTEXFILTERFUNCSGISPROC GetTexFilterFuncSGIS; + PFNGLGETTEXGENXVOESPROC GetTexGenxvOES; + PFNGLGETTEXIMAGEPROC GetTexImage; + PFNGLGETTEXLEVELPARAMETERFVPROC GetTexLevelParameterfv; + PFNGLGETTEXLEVELPARAMETERIVPROC GetTexLevelParameteriv; + PFNGLGETTEXLEVELPARAMETERXVOESPROC GetTexLevelParameterxvOES; + PFNGLGETTEXPARAMETERIIVPROC GetTexParameterIiv; + PFNGLGETTEXPARAMETERIIVEXTPROC GetTexParameterIivEXT; + PFNGLGETTEXPARAMETERIUIVPROC GetTexParameterIuiv; + PFNGLGETTEXPARAMETERIUIVEXTPROC GetTexParameterIuivEXT; + PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC GetTexParameterPointervAPPLE; + PFNGLGETTEXPARAMETERFVPROC GetTexParameterfv; + PFNGLGETTEXPARAMETERIVPROC GetTexParameteriv; + PFNGLGETTEXPARAMETERXVOESPROC GetTexParameterxvOES; + PFNGLGETTEXTUREHANDLEARBPROC GetTextureHandleARB; + PFNGLGETTEXTUREHANDLENVPROC GetTextureHandleNV; + PFNGLGETTEXTUREIMAGEPROC GetTextureImage; + PFNGLGETTEXTUREIMAGEEXTPROC GetTextureImageEXT; + PFNGLGETTEXTURELEVELPARAMETERFVPROC GetTextureLevelParameterfv; + PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC GetTextureLevelParameterfvEXT; + PFNGLGETTEXTURELEVELPARAMETERIVPROC GetTextureLevelParameteriv; + PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC GetTextureLevelParameterivEXT; + PFNGLGETTEXTUREPARAMETERIIVPROC GetTextureParameterIiv; + PFNGLGETTEXTUREPARAMETERIIVEXTPROC GetTextureParameterIivEXT; + PFNGLGETTEXTUREPARAMETERIUIVPROC GetTextureParameterIuiv; + PFNGLGETTEXTUREPARAMETERIUIVEXTPROC GetTextureParameterIuivEXT; + PFNGLGETTEXTUREPARAMETERFVPROC GetTextureParameterfv; + PFNGLGETTEXTUREPARAMETERFVEXTPROC GetTextureParameterfvEXT; + PFNGLGETTEXTUREPARAMETERIVPROC GetTextureParameteriv; + PFNGLGETTEXTUREPARAMETERIVEXTPROC GetTextureParameterivEXT; + PFNGLGETTEXTURESAMPLERHANDLEARBPROC GetTextureSamplerHandleARB; + PFNGLGETTEXTURESAMPLERHANDLENVPROC GetTextureSamplerHandleNV; + PFNGLGETTEXTURESUBIMAGEPROC GetTextureSubImage; + PFNGLGETTRACKMATRIXIVNVPROC GetTrackMatrixivNV; + PFNGLGETTRANSFORMFEEDBACKVARYINGPROC GetTransformFeedbackVarying; + PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC GetTransformFeedbackVaryingEXT; + PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC GetTransformFeedbackVaryingNV; + PFNGLGETTRANSFORMFEEDBACKI64_VPROC GetTransformFeedbacki64_v; + PFNGLGETTRANSFORMFEEDBACKI_VPROC GetTransformFeedbacki_v; + PFNGLGETTRANSFORMFEEDBACKIVPROC GetTransformFeedbackiv; + PFNGLGETUNIFORMBLOCKINDEXPROC GetUniformBlockIndex; + PFNGLGETUNIFORMBUFFERSIZEEXTPROC GetUniformBufferSizeEXT; + PFNGLGETUNIFORMINDICESPROC GetUniformIndices; + PFNGLGETUNIFORMLOCATIONPROC GetUniformLocation; + PFNGLGETUNIFORMLOCATIONARBPROC GetUniformLocationARB; + PFNGLGETUNIFORMOFFSETEXTPROC GetUniformOffsetEXT; + PFNGLGETUNIFORMSUBROUTINEUIVPROC GetUniformSubroutineuiv; + PFNGLGETUNIFORMDVPROC GetUniformdv; + PFNGLGETUNIFORMFVPROC GetUniformfv; + PFNGLGETUNIFORMFVARBPROC GetUniformfvARB; + PFNGLGETUNIFORMI64VARBPROC GetUniformi64vARB; + PFNGLGETUNIFORMI64VNVPROC GetUniformi64vNV; + PFNGLGETUNIFORMIVPROC GetUniformiv; + PFNGLGETUNIFORMIVARBPROC GetUniformivARB; + PFNGLGETUNIFORMUI64VARBPROC GetUniformui64vARB; + PFNGLGETUNIFORMUI64VNVPROC GetUniformui64vNV; + PFNGLGETUNIFORMUIVPROC GetUniformuiv; + PFNGLGETUNIFORMUIVEXTPROC GetUniformuivEXT; + PFNGLGETUNSIGNEDBYTEI_VEXTPROC GetUnsignedBytei_vEXT; + PFNGLGETUNSIGNEDBYTEVEXTPROC GetUnsignedBytevEXT; + PFNGLGETVARIANTARRAYOBJECTFVATIPROC GetVariantArrayObjectfvATI; + PFNGLGETVARIANTARRAYOBJECTIVATIPROC GetVariantArrayObjectivATI; + PFNGLGETVARIANTBOOLEANVEXTPROC GetVariantBooleanvEXT; + PFNGLGETVARIANTFLOATVEXTPROC GetVariantFloatvEXT; + PFNGLGETVARIANTINTEGERVEXTPROC GetVariantIntegervEXT; + PFNGLGETVARIANTPOINTERVEXTPROC GetVariantPointervEXT; + PFNGLGETVARYINGLOCATIONNVPROC GetVaryingLocationNV; + PFNGLGETVERTEXARRAYINDEXED64IVPROC GetVertexArrayIndexed64iv; + PFNGLGETVERTEXARRAYINDEXEDIVPROC GetVertexArrayIndexediv; + PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC GetVertexArrayIntegeri_vEXT; + PFNGLGETVERTEXARRAYINTEGERVEXTPROC GetVertexArrayIntegervEXT; + PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC GetVertexArrayPointeri_vEXT; + PFNGLGETVERTEXARRAYPOINTERVEXTPROC GetVertexArrayPointervEXT; + PFNGLGETVERTEXARRAYIVPROC GetVertexArrayiv; + PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC GetVertexAttribArrayObjectfvATI; + PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC GetVertexAttribArrayObjectivATI; + PFNGLGETVERTEXATTRIBIIVPROC GetVertexAttribIiv; + PFNGLGETVERTEXATTRIBIIVEXTPROC GetVertexAttribIivEXT; + PFNGLGETVERTEXATTRIBIUIVPROC GetVertexAttribIuiv; + PFNGLGETVERTEXATTRIBIUIVEXTPROC GetVertexAttribIuivEXT; + PFNGLGETVERTEXATTRIBLDVPROC GetVertexAttribLdv; + PFNGLGETVERTEXATTRIBLDVEXTPROC GetVertexAttribLdvEXT; + PFNGLGETVERTEXATTRIBLI64VNVPROC GetVertexAttribLi64vNV; + PFNGLGETVERTEXATTRIBLUI64VARBPROC GetVertexAttribLui64vARB; + PFNGLGETVERTEXATTRIBLUI64VNVPROC GetVertexAttribLui64vNV; + PFNGLGETVERTEXATTRIBPOINTERVPROC GetVertexAttribPointerv; + PFNGLGETVERTEXATTRIBPOINTERVARBPROC GetVertexAttribPointervARB; + PFNGLGETVERTEXATTRIBPOINTERVNVPROC GetVertexAttribPointervNV; + PFNGLGETVERTEXATTRIBDVPROC GetVertexAttribdv; + PFNGLGETVERTEXATTRIBDVARBPROC GetVertexAttribdvARB; + PFNGLGETVERTEXATTRIBDVNVPROC GetVertexAttribdvNV; + PFNGLGETVERTEXATTRIBFVPROC GetVertexAttribfv; + PFNGLGETVERTEXATTRIBFVARBPROC GetVertexAttribfvARB; + PFNGLGETVERTEXATTRIBFVNVPROC GetVertexAttribfvNV; + PFNGLGETVERTEXATTRIBIVPROC GetVertexAttribiv; + PFNGLGETVERTEXATTRIBIVARBPROC GetVertexAttribivARB; + PFNGLGETVERTEXATTRIBIVNVPROC GetVertexAttribivNV; + PFNGLGETVIDEOCAPTURESTREAMDVNVPROC GetVideoCaptureStreamdvNV; + PFNGLGETVIDEOCAPTURESTREAMFVNVPROC GetVideoCaptureStreamfvNV; + PFNGLGETVIDEOCAPTURESTREAMIVNVPROC GetVideoCaptureStreamivNV; + PFNGLGETVIDEOCAPTUREIVNVPROC GetVideoCaptureivNV; + PFNGLGETVIDEOI64VNVPROC GetVideoi64vNV; + PFNGLGETVIDEOIVNVPROC GetVideoivNV; + PFNGLGETVIDEOUI64VNVPROC GetVideoui64vNV; + PFNGLGETVIDEOUIVNVPROC GetVideouivNV; + PFNGLGETVKPROCADDRNVPROC GetVkProcAddrNV; + PFNGLGETNCOMPRESSEDTEXIMAGEPROC GetnCompressedTexImage; + PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC GetnCompressedTexImageARB; + PFNGLGETNTEXIMAGEPROC GetnTexImage; + PFNGLGETNTEXIMAGEARBPROC GetnTexImageARB; + PFNGLGETNUNIFORMDVPROC GetnUniformdv; + PFNGLGETNUNIFORMDVARBPROC GetnUniformdvARB; + PFNGLGETNUNIFORMFVPROC GetnUniformfv; + PFNGLGETNUNIFORMFVARBPROC GetnUniformfvARB; + PFNGLGETNUNIFORMI64VARBPROC GetnUniformi64vARB; + PFNGLGETNUNIFORMIVPROC GetnUniformiv; + PFNGLGETNUNIFORMIVARBPROC GetnUniformivARB; + PFNGLGETNUNIFORMUI64VARBPROC GetnUniformui64vARB; + PFNGLGETNUNIFORMUIVPROC GetnUniformuiv; + PFNGLGETNUNIFORMUIVARBPROC GetnUniformuivARB; + PFNGLGLOBALALPHAFACTORBSUNPROC GlobalAlphaFactorbSUN; + PFNGLGLOBALALPHAFACTORDSUNPROC GlobalAlphaFactordSUN; + PFNGLGLOBALALPHAFACTORFSUNPROC GlobalAlphaFactorfSUN; + PFNGLGLOBALALPHAFACTORISUNPROC GlobalAlphaFactoriSUN; + PFNGLGLOBALALPHAFACTORSSUNPROC GlobalAlphaFactorsSUN; + PFNGLGLOBALALPHAFACTORUBSUNPROC GlobalAlphaFactorubSUN; + PFNGLGLOBALALPHAFACTORUISUNPROC GlobalAlphaFactoruiSUN; + PFNGLGLOBALALPHAFACTORUSSUNPROC GlobalAlphaFactorusSUN; + PFNGLHINTPROC Hint; + PFNGLHINTPGIPROC HintPGI; + PFNGLHISTOGRAMEXTPROC HistogramEXT; + PFNGLIGLOOINTERFACESGIXPROC IglooInterfaceSGIX; + PFNGLIMAGETRANSFORMPARAMETERFHPPROC ImageTransformParameterfHP; + PFNGLIMAGETRANSFORMPARAMETERFVHPPROC ImageTransformParameterfvHP; + PFNGLIMAGETRANSFORMPARAMETERIHPPROC ImageTransformParameteriHP; + PFNGLIMAGETRANSFORMPARAMETERIVHPPROC ImageTransformParameterivHP; + PFNGLIMPORTMEMORYFDEXTPROC ImportMemoryFdEXT; + PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC ImportMemoryWin32HandleEXT; + PFNGLIMPORTMEMORYWIN32NAMEEXTPROC ImportMemoryWin32NameEXT; + PFNGLIMPORTSEMAPHOREFDEXTPROC ImportSemaphoreFdEXT; + PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC ImportSemaphoreWin32HandleEXT; + PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC ImportSemaphoreWin32NameEXT; + PFNGLIMPORTSYNCEXTPROC ImportSyncEXT; + PFNGLINDEXFORMATNVPROC IndexFormatNV; + PFNGLINDEXFUNCEXTPROC IndexFuncEXT; + PFNGLINDEXMATERIALEXTPROC IndexMaterialEXT; + PFNGLINDEXPOINTEREXTPROC IndexPointerEXT; + PFNGLINDEXPOINTERLISTIBMPROC IndexPointerListIBM; + PFNGLINDEXXOESPROC IndexxOES; + PFNGLINDEXXVOESPROC IndexxvOES; + PFNGLINSERTCOMPONENTEXTPROC InsertComponentEXT; + PFNGLINSERTEVENTMARKEREXTPROC InsertEventMarkerEXT; + PFNGLINSTRUMENTSBUFFERSGIXPROC InstrumentsBufferSGIX; + PFNGLINTERPOLATEPATHSNVPROC InterpolatePathsNV; + PFNGLINVALIDATEBUFFERDATAPROC InvalidateBufferData; + PFNGLINVALIDATEBUFFERSUBDATAPROC InvalidateBufferSubData; + PFNGLINVALIDATEFRAMEBUFFERPROC InvalidateFramebuffer; + PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC InvalidateNamedFramebufferData; + PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC InvalidateNamedFramebufferSubData; + PFNGLINVALIDATESUBFRAMEBUFFERPROC InvalidateSubFramebuffer; + PFNGLINVALIDATETEXIMAGEPROC InvalidateTexImage; + PFNGLINVALIDATETEXSUBIMAGEPROC InvalidateTexSubImage; + PFNGLISASYNCMARKERSGIXPROC IsAsyncMarkerSGIX; + PFNGLISBUFFERPROC IsBuffer; + PFNGLISBUFFERARBPROC IsBufferARB; + PFNGLISBUFFERRESIDENTNVPROC IsBufferResidentNV; + PFNGLISCOMMANDLISTNVPROC IsCommandListNV; + PFNGLISENABLEDPROC IsEnabled; + PFNGLISENABLEDINDEXEDEXTPROC IsEnabledIndexedEXT; + PFNGLISENABLEDIPROC IsEnabledi; + PFNGLISFENCEAPPLEPROC IsFenceAPPLE; + PFNGLISFENCENVPROC IsFenceNV; + PFNGLISFRAMEBUFFERPROC IsFramebuffer; + PFNGLISFRAMEBUFFEREXTPROC IsFramebufferEXT; + PFNGLISIMAGEHANDLERESIDENTARBPROC IsImageHandleResidentARB; + PFNGLISIMAGEHANDLERESIDENTNVPROC IsImageHandleResidentNV; + PFNGLISMEMORYOBJECTEXTPROC IsMemoryObjectEXT; + PFNGLISNAMEAMDPROC IsNameAMD; + PFNGLISNAMEDBUFFERRESIDENTNVPROC IsNamedBufferResidentNV; + PFNGLISNAMEDSTRINGARBPROC IsNamedStringARB; + PFNGLISOBJECTBUFFERATIPROC IsObjectBufferATI; + PFNGLISOCCLUSIONQUERYNVPROC IsOcclusionQueryNV; + PFNGLISPATHNVPROC IsPathNV; + PFNGLISPOINTINFILLPATHNVPROC IsPointInFillPathNV; + PFNGLISPOINTINSTROKEPATHNVPROC IsPointInStrokePathNV; + PFNGLISPROGRAMPROC IsProgram; + PFNGLISPROGRAMARBPROC IsProgramARB; + PFNGLISPROGRAMNVPROC IsProgramNV; + PFNGLISPROGRAMPIPELINEPROC IsProgramPipeline; + PFNGLISQUERYPROC IsQuery; + PFNGLISQUERYARBPROC IsQueryARB; + PFNGLISRENDERBUFFERPROC IsRenderbuffer; + PFNGLISRENDERBUFFEREXTPROC IsRenderbufferEXT; + PFNGLISSAMPLERPROC IsSampler; + PFNGLISSEMAPHOREEXTPROC IsSemaphoreEXT; + PFNGLISSHADERPROC IsShader; + PFNGLISSTATENVPROC IsStateNV; + PFNGLISSYNCPROC IsSync; + PFNGLISTEXTUREPROC IsTexture; + PFNGLISTEXTUREEXTPROC IsTextureEXT; + PFNGLISTEXTUREHANDLERESIDENTARBPROC IsTextureHandleResidentARB; + PFNGLISTEXTUREHANDLERESIDENTNVPROC IsTextureHandleResidentNV; + PFNGLISTRANSFORMFEEDBACKPROC IsTransformFeedback; + PFNGLISTRANSFORMFEEDBACKNVPROC IsTransformFeedbackNV; + PFNGLISVARIANTENABLEDEXTPROC IsVariantEnabledEXT; + PFNGLISVERTEXARRAYPROC IsVertexArray; + PFNGLISVERTEXARRAYAPPLEPROC IsVertexArrayAPPLE; + PFNGLISVERTEXATTRIBENABLEDAPPLEPROC IsVertexAttribEnabledAPPLE; + PFNGLLGPUCOPYIMAGESUBDATANVXPROC LGPUCopyImageSubDataNVX; + PFNGLLGPUINTERLOCKNVXPROC LGPUInterlockNVX; + PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC LGPUNamedBufferSubDataNVX; + PFNGLLABELOBJECTEXTPROC LabelObjectEXT; + PFNGLLIGHTENVISGIXPROC LightEnviSGIX; + PFNGLLIGHTMODELXOESPROC LightModelxOES; + PFNGLLIGHTMODELXVOESPROC LightModelxvOES; + PFNGLLIGHTXOESPROC LightxOES; + PFNGLLIGHTXVOESPROC LightxvOES; + PFNGLLINEWIDTHPROC LineWidth; + PFNGLLINEWIDTHXOESPROC LineWidthxOES; + PFNGLLINKPROGRAMPROC LinkProgram; + PFNGLLINKPROGRAMARBPROC LinkProgramARB; + PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC ListDrawCommandsStatesClientNV; + PFNGLLISTPARAMETERFSGIXPROC ListParameterfSGIX; + PFNGLLISTPARAMETERFVSGIXPROC ListParameterfvSGIX; + PFNGLLISTPARAMETERISGIXPROC ListParameteriSGIX; + PFNGLLISTPARAMETERIVSGIXPROC ListParameterivSGIX; + PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC LoadIdentityDeformationMapSGIX; + PFNGLLOADMATRIXXOESPROC LoadMatrixxOES; + PFNGLLOADPROGRAMNVPROC LoadProgramNV; + PFNGLLOADTRANSPOSEMATRIXDARBPROC LoadTransposeMatrixdARB; + PFNGLLOADTRANSPOSEMATRIXFARBPROC LoadTransposeMatrixfARB; + PFNGLLOADTRANSPOSEMATRIXXOESPROC LoadTransposeMatrixxOES; + PFNGLLOCKARRAYSEXTPROC LockArraysEXT; + PFNGLLOGICOPPROC LogicOp; + PFNGLMAKEBUFFERNONRESIDENTNVPROC MakeBufferNonResidentNV; + PFNGLMAKEBUFFERRESIDENTNVPROC MakeBufferResidentNV; + PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC MakeImageHandleNonResidentARB; + PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC MakeImageHandleNonResidentNV; + PFNGLMAKEIMAGEHANDLERESIDENTARBPROC MakeImageHandleResidentARB; + PFNGLMAKEIMAGEHANDLERESIDENTNVPROC MakeImageHandleResidentNV; + PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC MakeNamedBufferNonResidentNV; + PFNGLMAKENAMEDBUFFERRESIDENTNVPROC MakeNamedBufferResidentNV; + PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC MakeTextureHandleNonResidentARB; + PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC MakeTextureHandleNonResidentNV; + PFNGLMAKETEXTUREHANDLERESIDENTARBPROC MakeTextureHandleResidentARB; + PFNGLMAKETEXTUREHANDLERESIDENTNVPROC MakeTextureHandleResidentNV; + PFNGLMAP1XOESPROC Map1xOES; + PFNGLMAP2XOESPROC Map2xOES; + PFNGLMAPBUFFERPROC MapBuffer; + PFNGLMAPBUFFERARBPROC MapBufferARB; + PFNGLMAPBUFFERRANGEPROC MapBufferRange; + PFNGLMAPCONTROLPOINTSNVPROC MapControlPointsNV; + PFNGLMAPGRID1XOESPROC MapGrid1xOES; + PFNGLMAPGRID2XOESPROC MapGrid2xOES; + PFNGLMAPNAMEDBUFFERPROC MapNamedBuffer; + PFNGLMAPNAMEDBUFFEREXTPROC MapNamedBufferEXT; + PFNGLMAPNAMEDBUFFERRANGEPROC MapNamedBufferRange; + PFNGLMAPNAMEDBUFFERRANGEEXTPROC MapNamedBufferRangeEXT; + PFNGLMAPOBJECTBUFFERATIPROC MapObjectBufferATI; + PFNGLMAPPARAMETERFVNVPROC MapParameterfvNV; + PFNGLMAPPARAMETERIVNVPROC MapParameterivNV; + PFNGLMAPTEXTURE2DINTELPROC MapTexture2DINTEL; + PFNGLMAPVERTEXATTRIB1DAPPLEPROC MapVertexAttrib1dAPPLE; + PFNGLMAPVERTEXATTRIB1FAPPLEPROC MapVertexAttrib1fAPPLE; + PFNGLMAPVERTEXATTRIB2DAPPLEPROC MapVertexAttrib2dAPPLE; + PFNGLMAPVERTEXATTRIB2FAPPLEPROC MapVertexAttrib2fAPPLE; + PFNGLMATERIALXOESPROC MaterialxOES; + PFNGLMATERIALXVOESPROC MaterialxvOES; + PFNGLMATRIXFRUSTUMEXTPROC MatrixFrustumEXT; + PFNGLMATRIXINDEXPOINTERARBPROC MatrixIndexPointerARB; + PFNGLMATRIXINDEXUBVARBPROC MatrixIndexubvARB; + PFNGLMATRIXINDEXUIVARBPROC MatrixIndexuivARB; + PFNGLMATRIXINDEXUSVARBPROC MatrixIndexusvARB; + PFNGLMATRIXLOAD3X2FNVPROC MatrixLoad3x2fNV; + PFNGLMATRIXLOAD3X3FNVPROC MatrixLoad3x3fNV; + PFNGLMATRIXLOADIDENTITYEXTPROC MatrixLoadIdentityEXT; + PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC MatrixLoadTranspose3x3fNV; + PFNGLMATRIXLOADTRANSPOSEDEXTPROC MatrixLoadTransposedEXT; + PFNGLMATRIXLOADTRANSPOSEFEXTPROC MatrixLoadTransposefEXT; + PFNGLMATRIXLOADDEXTPROC MatrixLoaddEXT; + PFNGLMATRIXLOADFEXTPROC MatrixLoadfEXT; + PFNGLMATRIXMULT3X2FNVPROC MatrixMult3x2fNV; + PFNGLMATRIXMULT3X3FNVPROC MatrixMult3x3fNV; + PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC MatrixMultTranspose3x3fNV; + PFNGLMATRIXMULTTRANSPOSEDEXTPROC MatrixMultTransposedEXT; + PFNGLMATRIXMULTTRANSPOSEFEXTPROC MatrixMultTransposefEXT; + PFNGLMATRIXMULTDEXTPROC MatrixMultdEXT; + PFNGLMATRIXMULTFEXTPROC MatrixMultfEXT; + PFNGLMATRIXORTHOEXTPROC MatrixOrthoEXT; + PFNGLMATRIXPOPEXTPROC MatrixPopEXT; + PFNGLMATRIXPUSHEXTPROC MatrixPushEXT; + PFNGLMATRIXROTATEDEXTPROC MatrixRotatedEXT; + PFNGLMATRIXROTATEFEXTPROC MatrixRotatefEXT; + PFNGLMATRIXSCALEDEXTPROC MatrixScaledEXT; + PFNGLMATRIXSCALEFEXTPROC MatrixScalefEXT; + PFNGLMATRIXTRANSLATEDEXTPROC MatrixTranslatedEXT; + PFNGLMATRIXTRANSLATEFEXTPROC MatrixTranslatefEXT; + PFNGLMAXSHADERCOMPILERTHREADSARBPROC MaxShaderCompilerThreadsARB; + PFNGLMAXSHADERCOMPILERTHREADSKHRPROC MaxShaderCompilerThreadsKHR; + PFNGLMEMORYBARRIERPROC MemoryBarrier; + PFNGLMEMORYBARRIERBYREGIONPROC MemoryBarrierByRegion; + PFNGLMEMORYBARRIEREXTPROC MemoryBarrierEXT; + PFNGLMEMORYOBJECTPARAMETERIVEXTPROC MemoryObjectParameterivEXT; + PFNGLMINSAMPLESHADINGPROC MinSampleShading; + PFNGLMINSAMPLESHADINGARBPROC MinSampleShadingARB; + PFNGLMINMAXEXTPROC MinmaxEXT; + PFNGLMULTMATRIXXOESPROC MultMatrixxOES; + PFNGLMULTTRANSPOSEMATRIXDARBPROC MultTransposeMatrixdARB; + PFNGLMULTTRANSPOSEMATRIXFARBPROC MultTransposeMatrixfARB; + PFNGLMULTTRANSPOSEMATRIXXOESPROC MultTransposeMatrixxOES; + PFNGLMULTIDRAWARRAYSPROC MultiDrawArrays; + PFNGLMULTIDRAWARRAYSEXTPROC MultiDrawArraysEXT; + PFNGLMULTIDRAWARRAYSINDIRECTPROC MultiDrawArraysIndirect; + PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC MultiDrawArraysIndirectAMD; + PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC MultiDrawArraysIndirectBindlessCountNV; + PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC MultiDrawArraysIndirectBindlessNV; + PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC MultiDrawArraysIndirectCount; + PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC MultiDrawArraysIndirectCountARB; + PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC MultiDrawElementArrayAPPLE; + PFNGLMULTIDRAWELEMENTSPROC MultiDrawElements; + PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC MultiDrawElementsBaseVertex; + PFNGLMULTIDRAWELEMENTSEXTPROC MultiDrawElementsEXT; + PFNGLMULTIDRAWELEMENTSINDIRECTPROC MultiDrawElementsIndirect; + PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC MultiDrawElementsIndirectAMD; + PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC MultiDrawElementsIndirectBindlessCountNV; + PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC MultiDrawElementsIndirectBindlessNV; + PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC MultiDrawElementsIndirectCount; + PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC MultiDrawElementsIndirectCountARB; + PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC MultiDrawMeshTasksIndirectCountNV; + PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC MultiDrawMeshTasksIndirectNV; + PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC MultiDrawRangeElementArrayAPPLE; + PFNGLMULTIMODEDRAWARRAYSIBMPROC MultiModeDrawArraysIBM; + PFNGLMULTIMODEDRAWELEMENTSIBMPROC MultiModeDrawElementsIBM; + PFNGLMULTITEXBUFFEREXTPROC MultiTexBufferEXT; + PFNGLMULTITEXCOORD1BOESPROC MultiTexCoord1bOES; + PFNGLMULTITEXCOORD1BVOESPROC MultiTexCoord1bvOES; + PFNGLMULTITEXCOORD1DARBPROC MultiTexCoord1dARB; + PFNGLMULTITEXCOORD1DVARBPROC MultiTexCoord1dvARB; + PFNGLMULTITEXCOORD1FARBPROC MultiTexCoord1fARB; + PFNGLMULTITEXCOORD1FVARBPROC MultiTexCoord1fvARB; + PFNGLMULTITEXCOORD1HNVPROC MultiTexCoord1hNV; + PFNGLMULTITEXCOORD1HVNVPROC MultiTexCoord1hvNV; + PFNGLMULTITEXCOORD1IARBPROC MultiTexCoord1iARB; + PFNGLMULTITEXCOORD1IVARBPROC MultiTexCoord1ivARB; + PFNGLMULTITEXCOORD1SARBPROC MultiTexCoord1sARB; + PFNGLMULTITEXCOORD1SVARBPROC MultiTexCoord1svARB; + PFNGLMULTITEXCOORD1XOESPROC MultiTexCoord1xOES; + PFNGLMULTITEXCOORD1XVOESPROC MultiTexCoord1xvOES; + PFNGLMULTITEXCOORD2BOESPROC MultiTexCoord2bOES; + PFNGLMULTITEXCOORD2BVOESPROC MultiTexCoord2bvOES; + PFNGLMULTITEXCOORD2DARBPROC MultiTexCoord2dARB; + PFNGLMULTITEXCOORD2DVARBPROC MultiTexCoord2dvARB; + PFNGLMULTITEXCOORD2FARBPROC MultiTexCoord2fARB; + PFNGLMULTITEXCOORD2FVARBPROC MultiTexCoord2fvARB; + PFNGLMULTITEXCOORD2HNVPROC MultiTexCoord2hNV; + PFNGLMULTITEXCOORD2HVNVPROC MultiTexCoord2hvNV; + PFNGLMULTITEXCOORD2IARBPROC MultiTexCoord2iARB; + PFNGLMULTITEXCOORD2IVARBPROC MultiTexCoord2ivARB; + PFNGLMULTITEXCOORD2SARBPROC MultiTexCoord2sARB; + PFNGLMULTITEXCOORD2SVARBPROC MultiTexCoord2svARB; + PFNGLMULTITEXCOORD2XOESPROC MultiTexCoord2xOES; + PFNGLMULTITEXCOORD2XVOESPROC MultiTexCoord2xvOES; + PFNGLMULTITEXCOORD3BOESPROC MultiTexCoord3bOES; + PFNGLMULTITEXCOORD3BVOESPROC MultiTexCoord3bvOES; + PFNGLMULTITEXCOORD3DARBPROC MultiTexCoord3dARB; + PFNGLMULTITEXCOORD3DVARBPROC MultiTexCoord3dvARB; + PFNGLMULTITEXCOORD3FARBPROC MultiTexCoord3fARB; + PFNGLMULTITEXCOORD3FVARBPROC MultiTexCoord3fvARB; + PFNGLMULTITEXCOORD3HNVPROC MultiTexCoord3hNV; + PFNGLMULTITEXCOORD3HVNVPROC MultiTexCoord3hvNV; + PFNGLMULTITEXCOORD3IARBPROC MultiTexCoord3iARB; + PFNGLMULTITEXCOORD3IVARBPROC MultiTexCoord3ivARB; + PFNGLMULTITEXCOORD3SARBPROC MultiTexCoord3sARB; + PFNGLMULTITEXCOORD3SVARBPROC MultiTexCoord3svARB; + PFNGLMULTITEXCOORD3XOESPROC MultiTexCoord3xOES; + PFNGLMULTITEXCOORD3XVOESPROC MultiTexCoord3xvOES; + PFNGLMULTITEXCOORD4BOESPROC MultiTexCoord4bOES; + PFNGLMULTITEXCOORD4BVOESPROC MultiTexCoord4bvOES; + PFNGLMULTITEXCOORD4DARBPROC MultiTexCoord4dARB; + PFNGLMULTITEXCOORD4DVARBPROC MultiTexCoord4dvARB; + PFNGLMULTITEXCOORD4FARBPROC MultiTexCoord4fARB; + PFNGLMULTITEXCOORD4FVARBPROC MultiTexCoord4fvARB; + PFNGLMULTITEXCOORD4HNVPROC MultiTexCoord4hNV; + PFNGLMULTITEXCOORD4HVNVPROC MultiTexCoord4hvNV; + PFNGLMULTITEXCOORD4IARBPROC MultiTexCoord4iARB; + PFNGLMULTITEXCOORD4IVARBPROC MultiTexCoord4ivARB; + PFNGLMULTITEXCOORD4SARBPROC MultiTexCoord4sARB; + PFNGLMULTITEXCOORD4SVARBPROC MultiTexCoord4svARB; + PFNGLMULTITEXCOORD4XOESPROC MultiTexCoord4xOES; + PFNGLMULTITEXCOORD4XVOESPROC MultiTexCoord4xvOES; + PFNGLMULTITEXCOORDPOINTEREXTPROC MultiTexCoordPointerEXT; + PFNGLMULTITEXENVFEXTPROC MultiTexEnvfEXT; + PFNGLMULTITEXENVFVEXTPROC MultiTexEnvfvEXT; + PFNGLMULTITEXENVIEXTPROC MultiTexEnviEXT; + PFNGLMULTITEXENVIVEXTPROC MultiTexEnvivEXT; + PFNGLMULTITEXGENDEXTPROC MultiTexGendEXT; + PFNGLMULTITEXGENDVEXTPROC MultiTexGendvEXT; + PFNGLMULTITEXGENFEXTPROC MultiTexGenfEXT; + PFNGLMULTITEXGENFVEXTPROC MultiTexGenfvEXT; + PFNGLMULTITEXGENIEXTPROC MultiTexGeniEXT; + PFNGLMULTITEXGENIVEXTPROC MultiTexGenivEXT; + PFNGLMULTITEXIMAGE1DEXTPROC MultiTexImage1DEXT; + PFNGLMULTITEXIMAGE2DEXTPROC MultiTexImage2DEXT; + PFNGLMULTITEXIMAGE3DEXTPROC MultiTexImage3DEXT; + PFNGLMULTITEXPARAMETERIIVEXTPROC MultiTexParameterIivEXT; + PFNGLMULTITEXPARAMETERIUIVEXTPROC MultiTexParameterIuivEXT; + PFNGLMULTITEXPARAMETERFEXTPROC MultiTexParameterfEXT; + PFNGLMULTITEXPARAMETERFVEXTPROC MultiTexParameterfvEXT; + PFNGLMULTITEXPARAMETERIEXTPROC MultiTexParameteriEXT; + PFNGLMULTITEXPARAMETERIVEXTPROC MultiTexParameterivEXT; + PFNGLMULTITEXRENDERBUFFEREXTPROC MultiTexRenderbufferEXT; + PFNGLMULTITEXSUBIMAGE1DEXTPROC MultiTexSubImage1DEXT; + PFNGLMULTITEXSUBIMAGE2DEXTPROC MultiTexSubImage2DEXT; + PFNGLMULTITEXSUBIMAGE3DEXTPROC MultiTexSubImage3DEXT; + PFNGLMULTICASTBARRIERNVPROC MulticastBarrierNV; + PFNGLMULTICASTBLITFRAMEBUFFERNVPROC MulticastBlitFramebufferNV; + PFNGLMULTICASTBUFFERSUBDATANVPROC MulticastBufferSubDataNV; + PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC MulticastCopyBufferSubDataNV; + PFNGLMULTICASTCOPYIMAGESUBDATANVPROC MulticastCopyImageSubDataNV; + PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC MulticastFramebufferSampleLocationsfvNV; + PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC MulticastGetQueryObjecti64vNV; + PFNGLMULTICASTGETQUERYOBJECTIVNVPROC MulticastGetQueryObjectivNV; + PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC MulticastGetQueryObjectui64vNV; + PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC MulticastGetQueryObjectuivNV; + PFNGLMULTICASTSCISSORARRAYVNVXPROC MulticastScissorArrayvNVX; + PFNGLMULTICASTVIEWPORTARRAYVNVXPROC MulticastViewportArrayvNVX; + PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC MulticastViewportPositionWScaleNVX; + PFNGLMULTICASTWAITSYNCNVPROC MulticastWaitSyncNV; + PFNGLNAMEDBUFFERATTACHMEMORYNVPROC NamedBufferAttachMemoryNV; + PFNGLNAMEDBUFFERDATAPROC NamedBufferData; + PFNGLNAMEDBUFFERDATAEXTPROC NamedBufferDataEXT; + PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC NamedBufferPageCommitmentARB; + PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC NamedBufferPageCommitmentEXT; + PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC NamedBufferPageCommitmentMemNV; + PFNGLNAMEDBUFFERSTORAGEPROC NamedBufferStorage; + PFNGLNAMEDBUFFERSTORAGEEXTPROC NamedBufferStorageEXT; + PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC NamedBufferStorageExternalEXT; + PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC NamedBufferStorageMemEXT; + PFNGLNAMEDBUFFERSUBDATAPROC NamedBufferSubData; + PFNGLNAMEDBUFFERSUBDATAEXTPROC NamedBufferSubDataEXT; + PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC NamedCopyBufferSubDataEXT; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC NamedFramebufferDrawBuffer; + PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC NamedFramebufferDrawBuffers; + PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC NamedFramebufferParameteri; + PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC NamedFramebufferParameteriEXT; + PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC NamedFramebufferReadBuffer; + PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC NamedFramebufferRenderbuffer; + PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC NamedFramebufferRenderbufferEXT; + PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC NamedFramebufferSampleLocationsfvARB; + PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC NamedFramebufferSampleLocationsfvNV; + PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC NamedFramebufferSamplePositionsfvAMD; + PFNGLNAMEDFRAMEBUFFERTEXTUREPROC NamedFramebufferTexture; + PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC NamedFramebufferTexture1DEXT; + PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC NamedFramebufferTexture2DEXT; + PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC NamedFramebufferTexture3DEXT; + PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC NamedFramebufferTextureEXT; + PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC NamedFramebufferTextureFaceEXT; + PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC NamedFramebufferTextureLayer; + PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC NamedFramebufferTextureLayerEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC NamedProgramLocalParameter4dEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC NamedProgramLocalParameter4dvEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC NamedProgramLocalParameter4fEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC NamedProgramLocalParameter4fvEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC NamedProgramLocalParameterI4iEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC NamedProgramLocalParameterI4ivEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC NamedProgramLocalParameterI4uiEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC NamedProgramLocalParameterI4uivEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC NamedProgramLocalParameters4fvEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC NamedProgramLocalParametersI4ivEXT; + PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC NamedProgramLocalParametersI4uivEXT; + PFNGLNAMEDPROGRAMSTRINGEXTPROC NamedProgramStringEXT; + PFNGLNAMEDRENDERBUFFERSTORAGEPROC NamedRenderbufferStorage; + PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC NamedRenderbufferStorageEXT; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC NamedRenderbufferStorageMultisample; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC + NamedRenderbufferStorageMultisampleAdvancedAMD; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC + NamedRenderbufferStorageMultisampleCoverageEXT; + PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC NamedRenderbufferStorageMultisampleEXT; + PFNGLNAMEDSTRINGARBPROC NamedStringARB; + PFNGLNEWOBJECTBUFFERATIPROC NewObjectBufferATI; + PFNGLNORMAL3FVERTEX3FSUNPROC Normal3fVertex3fSUN; + PFNGLNORMAL3FVERTEX3FVSUNPROC Normal3fVertex3fvSUN; + PFNGLNORMAL3HNVPROC Normal3hNV; + PFNGLNORMAL3HVNVPROC Normal3hvNV; + PFNGLNORMAL3XOESPROC Normal3xOES; + PFNGLNORMAL3XVOESPROC Normal3xvOES; + PFNGLNORMALFORMATNVPROC NormalFormatNV; + PFNGLNORMALPOINTEREXTPROC NormalPointerEXT; + PFNGLNORMALPOINTERLISTIBMPROC NormalPointerListIBM; + PFNGLNORMALPOINTERVINTELPROC NormalPointervINTEL; + PFNGLNORMALSTREAM3BATIPROC NormalStream3bATI; + PFNGLNORMALSTREAM3BVATIPROC NormalStream3bvATI; + PFNGLNORMALSTREAM3DATIPROC NormalStream3dATI; + PFNGLNORMALSTREAM3DVATIPROC NormalStream3dvATI; + PFNGLNORMALSTREAM3FATIPROC NormalStream3fATI; + PFNGLNORMALSTREAM3FVATIPROC NormalStream3fvATI; + PFNGLNORMALSTREAM3IATIPROC NormalStream3iATI; + PFNGLNORMALSTREAM3IVATIPROC NormalStream3ivATI; + PFNGLNORMALSTREAM3SATIPROC NormalStream3sATI; + PFNGLNORMALSTREAM3SVATIPROC NormalStream3svATI; + PFNGLOBJECTLABELPROC ObjectLabel; + PFNGLOBJECTPTRLABELPROC ObjectPtrLabel; + PFNGLOBJECTPURGEABLEAPPLEPROC ObjectPurgeableAPPLE; + PFNGLOBJECTUNPURGEABLEAPPLEPROC ObjectUnpurgeableAPPLE; + PFNGLORTHOFOESPROC OrthofOES; + PFNGLORTHOXOESPROC OrthoxOES; + PFNGLPNTRIANGLESFATIPROC PNTrianglesfATI; + PFNGLPNTRIANGLESIATIPROC PNTrianglesiATI; + PFNGLPASSTEXCOORDATIPROC PassTexCoordATI; + PFNGLPASSTHROUGHXOESPROC PassThroughxOES; + PFNGLPATCHPARAMETERFVPROC PatchParameterfv; + PFNGLPATCHPARAMETERIPROC PatchParameteri; + PFNGLPATHCOMMANDSNVPROC PathCommandsNV; + PFNGLPATHCOORDSNVPROC PathCoordsNV; + PFNGLPATHCOVERDEPTHFUNCNVPROC PathCoverDepthFuncNV; + PFNGLPATHDASHARRAYNVPROC PathDashArrayNV; + PFNGLPATHGLYPHINDEXARRAYNVPROC PathGlyphIndexArrayNV; + PFNGLPATHGLYPHINDEXRANGENVPROC PathGlyphIndexRangeNV; + PFNGLPATHGLYPHRANGENVPROC PathGlyphRangeNV; + PFNGLPATHGLYPHSNVPROC PathGlyphsNV; + PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC PathMemoryGlyphIndexArrayNV; + PFNGLPATHPARAMETERFNVPROC PathParameterfNV; + PFNGLPATHPARAMETERFVNVPROC PathParameterfvNV; + PFNGLPATHPARAMETERINVPROC PathParameteriNV; + PFNGLPATHPARAMETERIVNVPROC PathParameterivNV; + PFNGLPATHSTENCILDEPTHOFFSETNVPROC PathStencilDepthOffsetNV; + PFNGLPATHSTENCILFUNCNVPROC PathStencilFuncNV; + PFNGLPATHSTRINGNVPROC PathStringNV; + PFNGLPATHSUBCOMMANDSNVPROC PathSubCommandsNV; + PFNGLPATHSUBCOORDSNVPROC PathSubCoordsNV; + PFNGLPAUSETRANSFORMFEEDBACKPROC PauseTransformFeedback; + PFNGLPAUSETRANSFORMFEEDBACKNVPROC PauseTransformFeedbackNV; + PFNGLPIXELDATARANGENVPROC PixelDataRangeNV; + PFNGLPIXELMAPXPROC PixelMapx; + PFNGLPIXELSTOREFPROC PixelStoref; + PFNGLPIXELSTOREIPROC PixelStorei; + PFNGLPIXELSTOREXPROC PixelStorex; + PFNGLPIXELTEXGENPARAMETERFSGISPROC PixelTexGenParameterfSGIS; + PFNGLPIXELTEXGENPARAMETERFVSGISPROC PixelTexGenParameterfvSGIS; + PFNGLPIXELTEXGENPARAMETERISGISPROC PixelTexGenParameteriSGIS; + PFNGLPIXELTEXGENPARAMETERIVSGISPROC PixelTexGenParameterivSGIS; + PFNGLPIXELTEXGENSGIXPROC PixelTexGenSGIX; + PFNGLPIXELTRANSFERXOESPROC PixelTransferxOES; + PFNGLPIXELTRANSFORMPARAMETERFEXTPROC PixelTransformParameterfEXT; + PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC PixelTransformParameterfvEXT; + PFNGLPIXELTRANSFORMPARAMETERIEXTPROC PixelTransformParameteriEXT; + PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC PixelTransformParameterivEXT; + PFNGLPIXELZOOMXOESPROC PixelZoomxOES; + PFNGLPOINTALONGPATHNVPROC PointAlongPathNV; + PFNGLPOINTPARAMETERFPROC PointParameterf; + PFNGLPOINTPARAMETERFARBPROC PointParameterfARB; + PFNGLPOINTPARAMETERFEXTPROC PointParameterfEXT; + PFNGLPOINTPARAMETERFSGISPROC PointParameterfSGIS; + PFNGLPOINTPARAMETERFVPROC PointParameterfv; + PFNGLPOINTPARAMETERFVARBPROC PointParameterfvARB; + PFNGLPOINTPARAMETERFVEXTPROC PointParameterfvEXT; + PFNGLPOINTPARAMETERFVSGISPROC PointParameterfvSGIS; + PFNGLPOINTPARAMETERIPROC PointParameteri; + PFNGLPOINTPARAMETERINVPROC PointParameteriNV; + PFNGLPOINTPARAMETERIVPROC PointParameteriv; + PFNGLPOINTPARAMETERIVNVPROC PointParameterivNV; + PFNGLPOINTPARAMETERXVOESPROC PointParameterxvOES; + PFNGLPOINTSIZEPROC PointSize; + PFNGLPOINTSIZEXOESPROC PointSizexOES; + PFNGLPOLLASYNCSGIXPROC PollAsyncSGIX; + PFNGLPOLLINSTRUMENTSSGIXPROC PollInstrumentsSGIX; + PFNGLPOLYGONMODEPROC PolygonMode; + PFNGLPOLYGONOFFSETPROC PolygonOffset; + PFNGLPOLYGONOFFSETCLAMPPROC PolygonOffsetClamp; + PFNGLPOLYGONOFFSETCLAMPEXTPROC PolygonOffsetClampEXT; + PFNGLPOLYGONOFFSETEXTPROC PolygonOffsetEXT; + PFNGLPOLYGONOFFSETXOESPROC PolygonOffsetxOES; + PFNGLPOPDEBUGGROUPPROC PopDebugGroup; + PFNGLPOPGROUPMARKEREXTPROC PopGroupMarkerEXT; + PFNGLPRESENTFRAMEDUALFILLNVPROC PresentFrameDualFillNV; + PFNGLPRESENTFRAMEKEYEDNVPROC PresentFrameKeyedNV; + PFNGLPRIMITIVEBOUNDINGBOXARBPROC PrimitiveBoundingBoxARB; + PFNGLPRIMITIVERESTARTINDEXPROC PrimitiveRestartIndex; + PFNGLPRIMITIVERESTARTINDEXNVPROC PrimitiveRestartIndexNV; + PFNGLPRIMITIVERESTARTNVPROC PrimitiveRestartNV; + PFNGLPRIORITIZETEXTURESEXTPROC PrioritizeTexturesEXT; + PFNGLPRIORITIZETEXTURESXOESPROC PrioritizeTexturesxOES; + PFNGLPROGRAMBINARYPROC ProgramBinary; + PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC ProgramBufferParametersIivNV; + PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC ProgramBufferParametersIuivNV; + PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC ProgramBufferParametersfvNV; + PFNGLPROGRAMENVPARAMETER4DARBPROC ProgramEnvParameter4dARB; + PFNGLPROGRAMENVPARAMETER4DVARBPROC ProgramEnvParameter4dvARB; + PFNGLPROGRAMENVPARAMETER4FARBPROC ProgramEnvParameter4fARB; + PFNGLPROGRAMENVPARAMETER4FVARBPROC ProgramEnvParameter4fvARB; + PFNGLPROGRAMENVPARAMETERI4INVPROC ProgramEnvParameterI4iNV; + PFNGLPROGRAMENVPARAMETERI4IVNVPROC ProgramEnvParameterI4ivNV; + PFNGLPROGRAMENVPARAMETERI4UINVPROC ProgramEnvParameterI4uiNV; + PFNGLPROGRAMENVPARAMETERI4UIVNVPROC ProgramEnvParameterI4uivNV; + PFNGLPROGRAMENVPARAMETERS4FVEXTPROC ProgramEnvParameters4fvEXT; + PFNGLPROGRAMENVPARAMETERSI4IVNVPROC ProgramEnvParametersI4ivNV; + PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC ProgramEnvParametersI4uivNV; + PFNGLPROGRAMLOCALPARAMETER4DARBPROC ProgramLocalParameter4dARB; + PFNGLPROGRAMLOCALPARAMETER4DVARBPROC ProgramLocalParameter4dvARB; + PFNGLPROGRAMLOCALPARAMETER4FARBPROC ProgramLocalParameter4fARB; + PFNGLPROGRAMLOCALPARAMETER4FVARBPROC ProgramLocalParameter4fvARB; + PFNGLPROGRAMLOCALPARAMETERI4INVPROC ProgramLocalParameterI4iNV; + PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC ProgramLocalParameterI4ivNV; + PFNGLPROGRAMLOCALPARAMETERI4UINVPROC ProgramLocalParameterI4uiNV; + PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC ProgramLocalParameterI4uivNV; + PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC ProgramLocalParameters4fvEXT; + PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC ProgramLocalParametersI4ivNV; + PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC ProgramLocalParametersI4uivNV; + PFNGLPROGRAMNAMEDPARAMETER4DNVPROC ProgramNamedParameter4dNV; + PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC ProgramNamedParameter4dvNV; + PFNGLPROGRAMNAMEDPARAMETER4FNVPROC ProgramNamedParameter4fNV; + PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC ProgramNamedParameter4fvNV; + PFNGLPROGRAMPARAMETER4DNVPROC ProgramParameter4dNV; + PFNGLPROGRAMPARAMETER4DVNVPROC ProgramParameter4dvNV; + PFNGLPROGRAMPARAMETER4FNVPROC ProgramParameter4fNV; + PFNGLPROGRAMPARAMETER4FVNVPROC ProgramParameter4fvNV; + PFNGLPROGRAMPARAMETERIPROC ProgramParameteri; + PFNGLPROGRAMPARAMETERIARBPROC ProgramParameteriARB; + PFNGLPROGRAMPARAMETERIEXTPROC ProgramParameteriEXT; + PFNGLPROGRAMPARAMETERS4DVNVPROC ProgramParameters4dvNV; + PFNGLPROGRAMPARAMETERS4FVNVPROC ProgramParameters4fvNV; + PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC ProgramPathFragmentInputGenNV; + PFNGLPROGRAMSTRINGARBPROC ProgramStringARB; + PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC ProgramSubroutineParametersuivNV; + PFNGLPROGRAMUNIFORM1DPROC ProgramUniform1d; + PFNGLPROGRAMUNIFORM1DEXTPROC ProgramUniform1dEXT; + PFNGLPROGRAMUNIFORM1DVPROC ProgramUniform1dv; + PFNGLPROGRAMUNIFORM1DVEXTPROC ProgramUniform1dvEXT; + PFNGLPROGRAMUNIFORM1FPROC ProgramUniform1f; + PFNGLPROGRAMUNIFORM1FEXTPROC ProgramUniform1fEXT; + PFNGLPROGRAMUNIFORM1FVPROC ProgramUniform1fv; + PFNGLPROGRAMUNIFORM1FVEXTPROC ProgramUniform1fvEXT; + PFNGLPROGRAMUNIFORM1IPROC ProgramUniform1i; + PFNGLPROGRAMUNIFORM1I64ARBPROC ProgramUniform1i64ARB; + PFNGLPROGRAMUNIFORM1I64NVPROC ProgramUniform1i64NV; + PFNGLPROGRAMUNIFORM1I64VARBPROC ProgramUniform1i64vARB; + PFNGLPROGRAMUNIFORM1I64VNVPROC ProgramUniform1i64vNV; + PFNGLPROGRAMUNIFORM1IEXTPROC ProgramUniform1iEXT; + PFNGLPROGRAMUNIFORM1IVPROC ProgramUniform1iv; + PFNGLPROGRAMUNIFORM1IVEXTPROC ProgramUniform1ivEXT; + PFNGLPROGRAMUNIFORM1UIPROC ProgramUniform1ui; + PFNGLPROGRAMUNIFORM1UI64ARBPROC ProgramUniform1ui64ARB; + PFNGLPROGRAMUNIFORM1UI64NVPROC ProgramUniform1ui64NV; + PFNGLPROGRAMUNIFORM1UI64VARBPROC ProgramUniform1ui64vARB; + PFNGLPROGRAMUNIFORM1UI64VNVPROC ProgramUniform1ui64vNV; + PFNGLPROGRAMUNIFORM1UIEXTPROC ProgramUniform1uiEXT; + PFNGLPROGRAMUNIFORM1UIVPROC ProgramUniform1uiv; + PFNGLPROGRAMUNIFORM1UIVEXTPROC ProgramUniform1uivEXT; + PFNGLPROGRAMUNIFORM2DPROC ProgramUniform2d; + PFNGLPROGRAMUNIFORM2DEXTPROC ProgramUniform2dEXT; + PFNGLPROGRAMUNIFORM2DVPROC ProgramUniform2dv; + PFNGLPROGRAMUNIFORM2DVEXTPROC ProgramUniform2dvEXT; + PFNGLPROGRAMUNIFORM2FPROC ProgramUniform2f; + PFNGLPROGRAMUNIFORM2FEXTPROC ProgramUniform2fEXT; + PFNGLPROGRAMUNIFORM2FVPROC ProgramUniform2fv; + PFNGLPROGRAMUNIFORM2FVEXTPROC ProgramUniform2fvEXT; + PFNGLPROGRAMUNIFORM2IPROC ProgramUniform2i; + PFNGLPROGRAMUNIFORM2I64ARBPROC ProgramUniform2i64ARB; + PFNGLPROGRAMUNIFORM2I64NVPROC ProgramUniform2i64NV; + PFNGLPROGRAMUNIFORM2I64VARBPROC ProgramUniform2i64vARB; + PFNGLPROGRAMUNIFORM2I64VNVPROC ProgramUniform2i64vNV; + PFNGLPROGRAMUNIFORM2IEXTPROC ProgramUniform2iEXT; + PFNGLPROGRAMUNIFORM2IVPROC ProgramUniform2iv; + PFNGLPROGRAMUNIFORM2IVEXTPROC ProgramUniform2ivEXT; + PFNGLPROGRAMUNIFORM2UIPROC ProgramUniform2ui; + PFNGLPROGRAMUNIFORM2UI64ARBPROC ProgramUniform2ui64ARB; + PFNGLPROGRAMUNIFORM2UI64NVPROC ProgramUniform2ui64NV; + PFNGLPROGRAMUNIFORM2UI64VARBPROC ProgramUniform2ui64vARB; + PFNGLPROGRAMUNIFORM2UI64VNVPROC ProgramUniform2ui64vNV; + PFNGLPROGRAMUNIFORM2UIEXTPROC ProgramUniform2uiEXT; + PFNGLPROGRAMUNIFORM2UIVPROC ProgramUniform2uiv; + PFNGLPROGRAMUNIFORM2UIVEXTPROC ProgramUniform2uivEXT; + PFNGLPROGRAMUNIFORM3DPROC ProgramUniform3d; + PFNGLPROGRAMUNIFORM3DEXTPROC ProgramUniform3dEXT; + PFNGLPROGRAMUNIFORM3DVPROC ProgramUniform3dv; + PFNGLPROGRAMUNIFORM3DVEXTPROC ProgramUniform3dvEXT; + PFNGLPROGRAMUNIFORM3FPROC ProgramUniform3f; + PFNGLPROGRAMUNIFORM3FEXTPROC ProgramUniform3fEXT; + PFNGLPROGRAMUNIFORM3FVPROC ProgramUniform3fv; + PFNGLPROGRAMUNIFORM3FVEXTPROC ProgramUniform3fvEXT; + PFNGLPROGRAMUNIFORM3IPROC ProgramUniform3i; + PFNGLPROGRAMUNIFORM3I64ARBPROC ProgramUniform3i64ARB; + PFNGLPROGRAMUNIFORM3I64NVPROC ProgramUniform3i64NV; + PFNGLPROGRAMUNIFORM3I64VARBPROC ProgramUniform3i64vARB; + PFNGLPROGRAMUNIFORM3I64VNVPROC ProgramUniform3i64vNV; + PFNGLPROGRAMUNIFORM3IEXTPROC ProgramUniform3iEXT; + PFNGLPROGRAMUNIFORM3IVPROC ProgramUniform3iv; + PFNGLPROGRAMUNIFORM3IVEXTPROC ProgramUniform3ivEXT; + PFNGLPROGRAMUNIFORM3UIPROC ProgramUniform3ui; + PFNGLPROGRAMUNIFORM3UI64ARBPROC ProgramUniform3ui64ARB; + PFNGLPROGRAMUNIFORM3UI64NVPROC ProgramUniform3ui64NV; + PFNGLPROGRAMUNIFORM3UI64VARBPROC ProgramUniform3ui64vARB; + PFNGLPROGRAMUNIFORM3UI64VNVPROC ProgramUniform3ui64vNV; + PFNGLPROGRAMUNIFORM3UIEXTPROC ProgramUniform3uiEXT; + PFNGLPROGRAMUNIFORM3UIVPROC ProgramUniform3uiv; + PFNGLPROGRAMUNIFORM3UIVEXTPROC ProgramUniform3uivEXT; + PFNGLPROGRAMUNIFORM4DPROC ProgramUniform4d; + PFNGLPROGRAMUNIFORM4DEXTPROC ProgramUniform4dEXT; + PFNGLPROGRAMUNIFORM4DVPROC ProgramUniform4dv; + PFNGLPROGRAMUNIFORM4DVEXTPROC ProgramUniform4dvEXT; + PFNGLPROGRAMUNIFORM4FPROC ProgramUniform4f; + PFNGLPROGRAMUNIFORM4FEXTPROC ProgramUniform4fEXT; + PFNGLPROGRAMUNIFORM4FVPROC ProgramUniform4fv; + PFNGLPROGRAMUNIFORM4FVEXTPROC ProgramUniform4fvEXT; + PFNGLPROGRAMUNIFORM4IPROC ProgramUniform4i; + PFNGLPROGRAMUNIFORM4I64ARBPROC ProgramUniform4i64ARB; + PFNGLPROGRAMUNIFORM4I64NVPROC ProgramUniform4i64NV; + PFNGLPROGRAMUNIFORM4I64VARBPROC ProgramUniform4i64vARB; + PFNGLPROGRAMUNIFORM4I64VNVPROC ProgramUniform4i64vNV; + PFNGLPROGRAMUNIFORM4IEXTPROC ProgramUniform4iEXT; + PFNGLPROGRAMUNIFORM4IVPROC ProgramUniform4iv; + PFNGLPROGRAMUNIFORM4IVEXTPROC ProgramUniform4ivEXT; + PFNGLPROGRAMUNIFORM4UIPROC ProgramUniform4ui; + PFNGLPROGRAMUNIFORM4UI64ARBPROC ProgramUniform4ui64ARB; + PFNGLPROGRAMUNIFORM4UI64NVPROC ProgramUniform4ui64NV; + PFNGLPROGRAMUNIFORM4UI64VARBPROC ProgramUniform4ui64vARB; + PFNGLPROGRAMUNIFORM4UI64VNVPROC ProgramUniform4ui64vNV; + PFNGLPROGRAMUNIFORM4UIEXTPROC ProgramUniform4uiEXT; + PFNGLPROGRAMUNIFORM4UIVPROC ProgramUniform4uiv; + PFNGLPROGRAMUNIFORM4UIVEXTPROC ProgramUniform4uivEXT; + PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC ProgramUniformHandleui64ARB; + PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC ProgramUniformHandleui64NV; + PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC ProgramUniformHandleui64vARB; + PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC ProgramUniformHandleui64vNV; + PFNGLPROGRAMUNIFORMMATRIX2DVPROC ProgramUniformMatrix2dv; + PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC ProgramUniformMatrix2dvEXT; + PFNGLPROGRAMUNIFORMMATRIX2FVPROC ProgramUniformMatrix2fv; + PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC ProgramUniformMatrix2fvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC ProgramUniformMatrix2x3dv; + PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC ProgramUniformMatrix2x3dvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC ProgramUniformMatrix2x3fv; + PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC ProgramUniformMatrix2x3fvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC ProgramUniformMatrix2x4dv; + PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC ProgramUniformMatrix2x4dvEXT; + PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC ProgramUniformMatrix2x4fv; + PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC ProgramUniformMatrix2x4fvEXT; + PFNGLPROGRAMUNIFORMMATRIX3DVPROC ProgramUniformMatrix3dv; + PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC ProgramUniformMatrix3dvEXT; + PFNGLPROGRAMUNIFORMMATRIX3FVPROC ProgramUniformMatrix3fv; + PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC ProgramUniformMatrix3fvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC ProgramUniformMatrix3x2dv; + PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC ProgramUniformMatrix3x2dvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC ProgramUniformMatrix3x2fv; + PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC ProgramUniformMatrix3x2fvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC ProgramUniformMatrix3x4dv; + PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC ProgramUniformMatrix3x4dvEXT; + PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC ProgramUniformMatrix3x4fv; + PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC ProgramUniformMatrix3x4fvEXT; + PFNGLPROGRAMUNIFORMMATRIX4DVPROC ProgramUniformMatrix4dv; + PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC ProgramUniformMatrix4dvEXT; + PFNGLPROGRAMUNIFORMMATRIX4FVPROC ProgramUniformMatrix4fv; + PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC ProgramUniformMatrix4fvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC ProgramUniformMatrix4x2dv; + PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC ProgramUniformMatrix4x2dvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC ProgramUniformMatrix4x2fv; + PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC ProgramUniformMatrix4x2fvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC ProgramUniformMatrix4x3dv; + PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC ProgramUniformMatrix4x3dvEXT; + PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC ProgramUniformMatrix4x3fv; + PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC ProgramUniformMatrix4x3fvEXT; + PFNGLPROGRAMUNIFORMUI64NVPROC ProgramUniformui64NV; + PFNGLPROGRAMUNIFORMUI64VNVPROC ProgramUniformui64vNV; + PFNGLPROGRAMVERTEXLIMITNVPROC ProgramVertexLimitNV; + PFNGLPROVOKINGVERTEXPROC ProvokingVertex; + PFNGLPROVOKINGVERTEXEXTPROC ProvokingVertexEXT; + PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC PushClientAttribDefaultEXT; + PFNGLPUSHDEBUGGROUPPROC PushDebugGroup; + PFNGLPUSHGROUPMARKEREXTPROC PushGroupMarkerEXT; + PFNGLQUERYCOUNTERPROC QueryCounter; + PFNGLQUERYMATRIXXOESPROC QueryMatrixxOES; + PFNGLQUERYOBJECTPARAMETERUIAMDPROC QueryObjectParameteruiAMD; + PFNGLQUERYRESOURCENVPROC QueryResourceNV; + PFNGLQUERYRESOURCETAGNVPROC QueryResourceTagNV; + PFNGLRASTERPOS2XOESPROC RasterPos2xOES; + PFNGLRASTERPOS2XVOESPROC RasterPos2xvOES; + PFNGLRASTERPOS3XOESPROC RasterPos3xOES; + PFNGLRASTERPOS3XVOESPROC RasterPos3xvOES; + PFNGLRASTERPOS4XOESPROC RasterPos4xOES; + PFNGLRASTERPOS4XVOESPROC RasterPos4xvOES; + PFNGLRASTERSAMPLESEXTPROC RasterSamplesEXT; + PFNGLREADBUFFERPROC ReadBuffer; + PFNGLREADINSTRUMENTSSGIXPROC ReadInstrumentsSGIX; + PFNGLREADPIXELSPROC ReadPixels; + PFNGLREADNPIXELSPROC ReadnPixels; + PFNGLREADNPIXELSARBPROC ReadnPixelsARB; + PFNGLRECTXOESPROC RectxOES; + PFNGLRECTXVOESPROC RectxvOES; + PFNGLREFERENCEPLANESGIXPROC ReferencePlaneSGIX; + PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC ReleaseKeyedMutexWin32EXT; + PFNGLRELEASESHADERCOMPILERPROC ReleaseShaderCompiler; + PFNGLRENDERGPUMASKNVPROC RenderGpuMaskNV; + PFNGLRENDERBUFFERSTORAGEPROC RenderbufferStorage; + PFNGLRENDERBUFFERSTORAGEEXTPROC RenderbufferStorageEXT; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC RenderbufferStorageMultisample; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC RenderbufferStorageMultisampleAdvancedAMD; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC RenderbufferStorageMultisampleCoverageNV; + PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC RenderbufferStorageMultisampleEXT; + PFNGLREPLACEMENTCODEPOINTERSUNPROC ReplacementCodePointerSUN; + PFNGLREPLACEMENTCODEUBSUNPROC ReplacementCodeubSUN; + PFNGLREPLACEMENTCODEUBVSUNPROC ReplacementCodeubvSUN; + PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC ReplacementCodeuiColor3fVertex3fSUN; + PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC ReplacementCodeuiColor3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC + ReplacementCodeuiColor4fNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC + ReplacementCodeuiColor4fNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC ReplacementCodeuiColor4ubVertex3fSUN; + PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC ReplacementCodeuiColor4ubVertex3fvSUN; + PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC ReplacementCodeuiNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC ReplacementCodeuiNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUISUNPROC ReplacementCodeuiSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC + ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC + ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC + ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC + ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC ReplacementCodeuiTexCoord2fVertex3fSUN; + PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC ReplacementCodeuiTexCoord2fVertex3fvSUN; + PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC ReplacementCodeuiVertex3fSUN; + PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC ReplacementCodeuiVertex3fvSUN; + PFNGLREPLACEMENTCODEUIVSUNPROC ReplacementCodeuivSUN; + PFNGLREPLACEMENTCODEUSSUNPROC ReplacementCodeusSUN; + PFNGLREPLACEMENTCODEUSVSUNPROC ReplacementCodeusvSUN; + PFNGLREQUESTRESIDENTPROGRAMSNVPROC RequestResidentProgramsNV; + PFNGLRESETHISTOGRAMEXTPROC ResetHistogramEXT; + PFNGLRESETMEMORYOBJECTPARAMETERNVPROC ResetMemoryObjectParameterNV; + PFNGLRESETMINMAXEXTPROC ResetMinmaxEXT; + PFNGLRESIZEBUFFERSMESAPROC ResizeBuffersMESA; + PFNGLRESOLVEDEPTHVALUESNVPROC ResolveDepthValuesNV; + PFNGLRESUMETRANSFORMFEEDBACKPROC ResumeTransformFeedback; + PFNGLRESUMETRANSFORMFEEDBACKNVPROC ResumeTransformFeedbackNV; + PFNGLROTATEXOESPROC RotatexOES; + PFNGLSAMPLECOVERAGEPROC SampleCoverage; + PFNGLSAMPLECOVERAGEARBPROC SampleCoverageARB; + PFNGLSAMPLEMAPATIPROC SampleMapATI; + PFNGLSAMPLEMASKEXTPROC SampleMaskEXT; + PFNGLSAMPLEMASKINDEXEDNVPROC SampleMaskIndexedNV; + PFNGLSAMPLEMASKSGISPROC SampleMaskSGIS; + PFNGLSAMPLEMASKIPROC SampleMaski; + PFNGLSAMPLEPATTERNEXTPROC SamplePatternEXT; + PFNGLSAMPLEPATTERNSGISPROC SamplePatternSGIS; + PFNGLSAMPLERPARAMETERIIVPROC SamplerParameterIiv; + PFNGLSAMPLERPARAMETERIUIVPROC SamplerParameterIuiv; + PFNGLSAMPLERPARAMETERFPROC SamplerParameterf; + PFNGLSAMPLERPARAMETERFVPROC SamplerParameterfv; + PFNGLSAMPLERPARAMETERIPROC SamplerParameteri; + PFNGLSAMPLERPARAMETERIVPROC SamplerParameteriv; + PFNGLSCALEXOESPROC ScalexOES; + PFNGLSCISSORPROC Scissor; + PFNGLSCISSORARRAYVPROC ScissorArrayv; + PFNGLSCISSOREXCLUSIVEARRAYVNVPROC ScissorExclusiveArrayvNV; + PFNGLSCISSOREXCLUSIVENVPROC ScissorExclusiveNV; + PFNGLSCISSORINDEXEDPROC ScissorIndexed; + PFNGLSCISSORINDEXEDVPROC ScissorIndexedv; + PFNGLSECONDARYCOLOR3BEXTPROC SecondaryColor3bEXT; + PFNGLSECONDARYCOLOR3BVEXTPROC SecondaryColor3bvEXT; + PFNGLSECONDARYCOLOR3DEXTPROC SecondaryColor3dEXT; + PFNGLSECONDARYCOLOR3DVEXTPROC SecondaryColor3dvEXT; + PFNGLSECONDARYCOLOR3FEXTPROC SecondaryColor3fEXT; + PFNGLSECONDARYCOLOR3FVEXTPROC SecondaryColor3fvEXT; + PFNGLSECONDARYCOLOR3HNVPROC SecondaryColor3hNV; + PFNGLSECONDARYCOLOR3HVNVPROC SecondaryColor3hvNV; + PFNGLSECONDARYCOLOR3IEXTPROC SecondaryColor3iEXT; + PFNGLSECONDARYCOLOR3IVEXTPROC SecondaryColor3ivEXT; + PFNGLSECONDARYCOLOR3SEXTPROC SecondaryColor3sEXT; + PFNGLSECONDARYCOLOR3SVEXTPROC SecondaryColor3svEXT; + PFNGLSECONDARYCOLOR3UBEXTPROC SecondaryColor3ubEXT; + PFNGLSECONDARYCOLOR3UBVEXTPROC SecondaryColor3ubvEXT; + PFNGLSECONDARYCOLOR3UIEXTPROC SecondaryColor3uiEXT; + PFNGLSECONDARYCOLOR3UIVEXTPROC SecondaryColor3uivEXT; + PFNGLSECONDARYCOLOR3USEXTPROC SecondaryColor3usEXT; + PFNGLSECONDARYCOLOR3USVEXTPROC SecondaryColor3usvEXT; + PFNGLSECONDARYCOLORFORMATNVPROC SecondaryColorFormatNV; + PFNGLSECONDARYCOLORPOINTEREXTPROC SecondaryColorPointerEXT; + PFNGLSECONDARYCOLORPOINTERLISTIBMPROC SecondaryColorPointerListIBM; + PFNGLSELECTPERFMONITORCOUNTERSAMDPROC SelectPerfMonitorCountersAMD; + PFNGLSEMAPHOREPARAMETERIVNVPROC SemaphoreParameterivNV; + PFNGLSEMAPHOREPARAMETERUI64VEXTPROC SemaphoreParameterui64vEXT; + PFNGLSEPARABLEFILTER2DEXTPROC SeparableFilter2DEXT; + PFNGLSETFENCEAPPLEPROC SetFenceAPPLE; + PFNGLSETFENCENVPROC SetFenceNV; + PFNGLSETFRAGMENTSHADERCONSTANTATIPROC SetFragmentShaderConstantATI; + PFNGLSETINVARIANTEXTPROC SetInvariantEXT; + PFNGLSETLOCALCONSTANTEXTPROC SetLocalConstantEXT; + PFNGLSETMULTISAMPLEFVAMDPROC SetMultisamplefvAMD; + PFNGLSHADERBINARYPROC ShaderBinary; + PFNGLSHADEROP1EXTPROC ShaderOp1EXT; + PFNGLSHADEROP2EXTPROC ShaderOp2EXT; + PFNGLSHADEROP3EXTPROC ShaderOp3EXT; + PFNGLSHADERSOURCEPROC ShaderSource; + PFNGLSHADERSOURCEARBPROC ShaderSourceARB; + PFNGLSHADERSTORAGEBLOCKBINDINGPROC ShaderStorageBlockBinding; + PFNGLSHADINGRATEIMAGEBARRIERNVPROC ShadingRateImageBarrierNV; + PFNGLSHADINGRATEIMAGEPALETTENVPROC ShadingRateImagePaletteNV; + PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC ShadingRateSampleOrderCustomNV; + PFNGLSHADINGRATESAMPLEORDERNVPROC ShadingRateSampleOrderNV; + PFNGLSHARPENTEXFUNCSGISPROC SharpenTexFuncSGIS; + PFNGLSIGNALSEMAPHOREEXTPROC SignalSemaphoreEXT; + PFNGLSIGNALSEMAPHOREUI64NVXPROC SignalSemaphoreui64NVX; + PFNGLSIGNALVKFENCENVPROC SignalVkFenceNV; + PFNGLSIGNALVKSEMAPHORENVPROC SignalVkSemaphoreNV; + PFNGLSPECIALIZESHADERPROC SpecializeShader; + PFNGLSPECIALIZESHADERARBPROC SpecializeShaderARB; + PFNGLSPRITEPARAMETERFSGIXPROC SpriteParameterfSGIX; + PFNGLSPRITEPARAMETERFVSGIXPROC SpriteParameterfvSGIX; + PFNGLSPRITEPARAMETERISGIXPROC SpriteParameteriSGIX; + PFNGLSPRITEPARAMETERIVSGIXPROC SpriteParameterivSGIX; + PFNGLSTARTINSTRUMENTSSGIXPROC StartInstrumentsSGIX; + PFNGLSTATECAPTURENVPROC StateCaptureNV; + PFNGLSTENCILCLEARTAGEXTPROC StencilClearTagEXT; + PFNGLSTENCILFILLPATHINSTANCEDNVPROC StencilFillPathInstancedNV; + PFNGLSTENCILFILLPATHNVPROC StencilFillPathNV; + PFNGLSTENCILFUNCPROC StencilFunc; + PFNGLSTENCILFUNCSEPARATEPROC StencilFuncSeparate; + PFNGLSTENCILFUNCSEPARATEATIPROC StencilFuncSeparateATI; + PFNGLSTENCILMASKPROC StencilMask; + PFNGLSTENCILMASKSEPARATEPROC StencilMaskSeparate; + PFNGLSTENCILOPPROC StencilOp; + PFNGLSTENCILOPSEPARATEPROC StencilOpSeparate; + PFNGLSTENCILOPSEPARATEATIPROC StencilOpSeparateATI; + PFNGLSTENCILOPVALUEAMDPROC StencilOpValueAMD; + PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC StencilStrokePathInstancedNV; + PFNGLSTENCILSTROKEPATHNVPROC StencilStrokePathNV; + PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC StencilThenCoverFillPathInstancedNV; + PFNGLSTENCILTHENCOVERFILLPATHNVPROC StencilThenCoverFillPathNV; + PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC StencilThenCoverStrokePathInstancedNV; + PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC StencilThenCoverStrokePathNV; + PFNGLSTOPINSTRUMENTSSGIXPROC StopInstrumentsSGIX; + PFNGLSTRINGMARKERGREMEDYPROC StringMarkerGREMEDY; + PFNGLSUBPIXELPRECISIONBIASNVPROC SubpixelPrecisionBiasNV; + PFNGLSWIZZLEEXTPROC SwizzleEXT; + PFNGLSYNCTEXTUREINTELPROC SyncTextureINTEL; + PFNGLTAGSAMPLEBUFFERSGIXPROC TagSampleBufferSGIX; + PFNGLTANGENT3BEXTPROC Tangent3bEXT; + PFNGLTANGENT3BVEXTPROC Tangent3bvEXT; + PFNGLTANGENT3DEXTPROC Tangent3dEXT; + PFNGLTANGENT3DVEXTPROC Tangent3dvEXT; + PFNGLTANGENT3FEXTPROC Tangent3fEXT; + PFNGLTANGENT3FVEXTPROC Tangent3fvEXT; + PFNGLTANGENT3IEXTPROC Tangent3iEXT; + PFNGLTANGENT3IVEXTPROC Tangent3ivEXT; + PFNGLTANGENT3SEXTPROC Tangent3sEXT; + PFNGLTANGENT3SVEXTPROC Tangent3svEXT; + PFNGLTANGENTPOINTEREXTPROC TangentPointerEXT; + PFNGLTBUFFERMASK3DFXPROC TbufferMask3DFX; + PFNGLTESSELLATIONFACTORAMDPROC TessellationFactorAMD; + PFNGLTESSELLATIONMODEAMDPROC TessellationModeAMD; + PFNGLTESTFENCEAPPLEPROC TestFenceAPPLE; + PFNGLTESTFENCENVPROC TestFenceNV; + PFNGLTESTOBJECTAPPLEPROC TestObjectAPPLE; + PFNGLTEXATTACHMEMORYNVPROC TexAttachMemoryNV; + PFNGLTEXBUFFERPROC TexBuffer; + PFNGLTEXBUFFERARBPROC TexBufferARB; + PFNGLTEXBUFFEREXTPROC TexBufferEXT; + PFNGLTEXBUFFERRANGEPROC TexBufferRange; + PFNGLTEXBUMPPARAMETERFVATIPROC TexBumpParameterfvATI; + PFNGLTEXBUMPPARAMETERIVATIPROC TexBumpParameterivATI; + PFNGLTEXCOORD1BOESPROC TexCoord1bOES; + PFNGLTEXCOORD1BVOESPROC TexCoord1bvOES; + PFNGLTEXCOORD1HNVPROC TexCoord1hNV; + PFNGLTEXCOORD1HVNVPROC TexCoord1hvNV; + PFNGLTEXCOORD1XOESPROC TexCoord1xOES; + PFNGLTEXCOORD1XVOESPROC TexCoord1xvOES; + PFNGLTEXCOORD2BOESPROC TexCoord2bOES; + PFNGLTEXCOORD2BVOESPROC TexCoord2bvOES; + PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC TexCoord2fColor3fVertex3fSUN; + PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC TexCoord2fColor3fVertex3fvSUN; + PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC TexCoord2fColor4fNormal3fVertex3fSUN; + PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC TexCoord2fColor4fNormal3fVertex3fvSUN; + PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC TexCoord2fColor4ubVertex3fSUN; + PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC TexCoord2fColor4ubVertex3fvSUN; + PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC TexCoord2fNormal3fVertex3fSUN; + PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC TexCoord2fNormal3fVertex3fvSUN; + PFNGLTEXCOORD2FVERTEX3FSUNPROC TexCoord2fVertex3fSUN; + PFNGLTEXCOORD2FVERTEX3FVSUNPROC TexCoord2fVertex3fvSUN; + PFNGLTEXCOORD2HNVPROC TexCoord2hNV; + PFNGLTEXCOORD2HVNVPROC TexCoord2hvNV; + PFNGLTEXCOORD2XOESPROC TexCoord2xOES; + PFNGLTEXCOORD2XVOESPROC TexCoord2xvOES; + PFNGLTEXCOORD3BOESPROC TexCoord3bOES; + PFNGLTEXCOORD3BVOESPROC TexCoord3bvOES; + PFNGLTEXCOORD3HNVPROC TexCoord3hNV; + PFNGLTEXCOORD3HVNVPROC TexCoord3hvNV; + PFNGLTEXCOORD3XOESPROC TexCoord3xOES; + PFNGLTEXCOORD3XVOESPROC TexCoord3xvOES; + PFNGLTEXCOORD4BOESPROC TexCoord4bOES; + PFNGLTEXCOORD4BVOESPROC TexCoord4bvOES; + PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC TexCoord4fColor4fNormal3fVertex4fSUN; + PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC TexCoord4fColor4fNormal3fVertex4fvSUN; + PFNGLTEXCOORD4FVERTEX4FSUNPROC TexCoord4fVertex4fSUN; + PFNGLTEXCOORD4FVERTEX4FVSUNPROC TexCoord4fVertex4fvSUN; + PFNGLTEXCOORD4HNVPROC TexCoord4hNV; + PFNGLTEXCOORD4HVNVPROC TexCoord4hvNV; + PFNGLTEXCOORD4XOESPROC TexCoord4xOES; + PFNGLTEXCOORD4XVOESPROC TexCoord4xvOES; + PFNGLTEXCOORDFORMATNVPROC TexCoordFormatNV; + PFNGLTEXCOORDPOINTEREXTPROC TexCoordPointerEXT; + PFNGLTEXCOORDPOINTERLISTIBMPROC TexCoordPointerListIBM; + PFNGLTEXCOORDPOINTERVINTELPROC TexCoordPointervINTEL; + PFNGLTEXENVXOESPROC TexEnvxOES; + PFNGLTEXENVXVOESPROC TexEnvxvOES; + PFNGLTEXFILTERFUNCSGISPROC TexFilterFuncSGIS; + PFNGLTEXGENXOESPROC TexGenxOES; + PFNGLTEXGENXVOESPROC TexGenxvOES; + PFNGLTEXIMAGE1DPROC TexImage1D; + PFNGLTEXIMAGE2DPROC TexImage2D; + PFNGLTEXIMAGE2DMULTISAMPLEPROC TexImage2DMultisample; + PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC TexImage2DMultisampleCoverageNV; + PFNGLTEXIMAGE3DPROC TexImage3D; + PFNGLTEXIMAGE3DEXTPROC TexImage3DEXT; + PFNGLTEXIMAGE3DMULTISAMPLEPROC TexImage3DMultisample; + PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC TexImage3DMultisampleCoverageNV; + PFNGLTEXIMAGE4DSGISPROC TexImage4DSGIS; + PFNGLTEXPAGECOMMITMENTARBPROC TexPageCommitmentARB; + PFNGLTEXPAGECOMMITMENTMEMNVPROC TexPageCommitmentMemNV; + PFNGLTEXPARAMETERIIVPROC TexParameterIiv; + PFNGLTEXPARAMETERIIVEXTPROC TexParameterIivEXT; + PFNGLTEXPARAMETERIUIVPROC TexParameterIuiv; + PFNGLTEXPARAMETERIUIVEXTPROC TexParameterIuivEXT; + PFNGLTEXPARAMETERFPROC TexParameterf; + PFNGLTEXPARAMETERFVPROC TexParameterfv; + PFNGLTEXPARAMETERIPROC TexParameteri; + PFNGLTEXPARAMETERIVPROC TexParameteriv; + PFNGLTEXPARAMETERXOESPROC TexParameterxOES; + PFNGLTEXPARAMETERXVOESPROC TexParameterxvOES; + PFNGLTEXRENDERBUFFERNVPROC TexRenderbufferNV; + PFNGLTEXSTORAGE1DPROC TexStorage1D; + PFNGLTEXSTORAGE1DEXTPROC TexStorage1DEXT; + PFNGLTEXSTORAGE2DPROC TexStorage2D; + PFNGLTEXSTORAGE2DEXTPROC TexStorage2DEXT; + PFNGLTEXSTORAGE2DMULTISAMPLEPROC TexStorage2DMultisample; + PFNGLTEXSTORAGE3DPROC TexStorage3D; + PFNGLTEXSTORAGE3DEXTPROC TexStorage3DEXT; + PFNGLTEXSTORAGE3DMULTISAMPLEPROC TexStorage3DMultisample; + PFNGLTEXSTORAGEMEM1DEXTPROC TexStorageMem1DEXT; + PFNGLTEXSTORAGEMEM2DEXTPROC TexStorageMem2DEXT; + PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC TexStorageMem2DMultisampleEXT; + PFNGLTEXSTORAGEMEM3DEXTPROC TexStorageMem3DEXT; + PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC TexStorageMem3DMultisampleEXT; + PFNGLTEXSTORAGESPARSEAMDPROC TexStorageSparseAMD; + PFNGLTEXSUBIMAGE1DPROC TexSubImage1D; + PFNGLTEXSUBIMAGE1DEXTPROC TexSubImage1DEXT; + PFNGLTEXSUBIMAGE2DPROC TexSubImage2D; + PFNGLTEXSUBIMAGE2DEXTPROC TexSubImage2DEXT; + PFNGLTEXSUBIMAGE3DPROC TexSubImage3D; + PFNGLTEXSUBIMAGE3DEXTPROC TexSubImage3DEXT; + PFNGLTEXSUBIMAGE4DSGISPROC TexSubImage4DSGIS; + PFNGLTEXTUREATTACHMEMORYNVPROC TextureAttachMemoryNV; + PFNGLTEXTUREBARRIERPROC TextureBarrier; + PFNGLTEXTUREBARRIERNVPROC TextureBarrierNV; + PFNGLTEXTUREBUFFERPROC TextureBuffer; + PFNGLTEXTUREBUFFEREXTPROC TextureBufferEXT; + PFNGLTEXTUREBUFFERRANGEPROC TextureBufferRange; + PFNGLTEXTUREBUFFERRANGEEXTPROC TextureBufferRangeEXT; + PFNGLTEXTURECOLORMASKSGISPROC TextureColorMaskSGIS; + PFNGLTEXTUREIMAGE1DEXTPROC TextureImage1DEXT; + PFNGLTEXTUREIMAGE2DEXTPROC TextureImage2DEXT; + PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC TextureImage2DMultisampleCoverageNV; + PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC TextureImage2DMultisampleNV; + PFNGLTEXTUREIMAGE3DEXTPROC TextureImage3DEXT; + PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC TextureImage3DMultisampleCoverageNV; + PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC TextureImage3DMultisampleNV; + PFNGLTEXTURELIGHTEXTPROC TextureLightEXT; + PFNGLTEXTUREMATERIALEXTPROC TextureMaterialEXT; + PFNGLTEXTURENORMALEXTPROC TextureNormalEXT; + PFNGLTEXTUREPAGECOMMITMENTEXTPROC TexturePageCommitmentEXT; + PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC TexturePageCommitmentMemNV; + PFNGLTEXTUREPARAMETERIIVPROC TextureParameterIiv; + PFNGLTEXTUREPARAMETERIIVEXTPROC TextureParameterIivEXT; + PFNGLTEXTUREPARAMETERIUIVPROC TextureParameterIuiv; + PFNGLTEXTUREPARAMETERIUIVEXTPROC TextureParameterIuivEXT; + PFNGLTEXTUREPARAMETERFPROC TextureParameterf; + PFNGLTEXTUREPARAMETERFEXTPROC TextureParameterfEXT; + PFNGLTEXTUREPARAMETERFVPROC TextureParameterfv; + PFNGLTEXTUREPARAMETERFVEXTPROC TextureParameterfvEXT; + PFNGLTEXTUREPARAMETERIPROC TextureParameteri; + PFNGLTEXTUREPARAMETERIEXTPROC TextureParameteriEXT; + PFNGLTEXTUREPARAMETERIVPROC TextureParameteriv; + PFNGLTEXTUREPARAMETERIVEXTPROC TextureParameterivEXT; + PFNGLTEXTURERANGEAPPLEPROC TextureRangeAPPLE; + PFNGLTEXTURERENDERBUFFEREXTPROC TextureRenderbufferEXT; + PFNGLTEXTURESTORAGE1DPROC TextureStorage1D; + PFNGLTEXTURESTORAGE1DEXTPROC TextureStorage1DEXT; + PFNGLTEXTURESTORAGE2DPROC TextureStorage2D; + PFNGLTEXTURESTORAGE2DEXTPROC TextureStorage2DEXT; + PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC TextureStorage2DMultisample; + PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC TextureStorage2DMultisampleEXT; + PFNGLTEXTURESTORAGE3DPROC TextureStorage3D; + PFNGLTEXTURESTORAGE3DEXTPROC TextureStorage3DEXT; + PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC TextureStorage3DMultisample; + PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC TextureStorage3DMultisampleEXT; + PFNGLTEXTURESTORAGEMEM1DEXTPROC TextureStorageMem1DEXT; + PFNGLTEXTURESTORAGEMEM2DEXTPROC TextureStorageMem2DEXT; + PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC TextureStorageMem2DMultisampleEXT; + PFNGLTEXTURESTORAGEMEM3DEXTPROC TextureStorageMem3DEXT; + PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC TextureStorageMem3DMultisampleEXT; + PFNGLTEXTURESTORAGESPARSEAMDPROC TextureStorageSparseAMD; + PFNGLTEXTURESUBIMAGE1DPROC TextureSubImage1D; + PFNGLTEXTURESUBIMAGE1DEXTPROC TextureSubImage1DEXT; + PFNGLTEXTURESUBIMAGE2DPROC TextureSubImage2D; + PFNGLTEXTURESUBIMAGE2DEXTPROC TextureSubImage2DEXT; + PFNGLTEXTURESUBIMAGE3DPROC TextureSubImage3D; + PFNGLTEXTURESUBIMAGE3DEXTPROC TextureSubImage3DEXT; + PFNGLTEXTUREVIEWPROC TextureView; + PFNGLTRACKMATRIXNVPROC TrackMatrixNV; + PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC TransformFeedbackAttribsNV; + PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC TransformFeedbackBufferBase; + PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC TransformFeedbackBufferRange; + PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC TransformFeedbackStreamAttribsNV; + PFNGLTRANSFORMFEEDBACKVARYINGSPROC TransformFeedbackVaryings; + PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC TransformFeedbackVaryingsEXT; + PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC TransformFeedbackVaryingsNV; + PFNGLTRANSFORMPATHNVPROC TransformPathNV; + PFNGLTRANSLATEXOESPROC TranslatexOES; + PFNGLUNIFORM1DPROC Uniform1d; + PFNGLUNIFORM1DVPROC Uniform1dv; + PFNGLUNIFORM1FPROC Uniform1f; + PFNGLUNIFORM1FARBPROC Uniform1fARB; + PFNGLUNIFORM1FVPROC Uniform1fv; + PFNGLUNIFORM1FVARBPROC Uniform1fvARB; + PFNGLUNIFORM1IPROC Uniform1i; + PFNGLUNIFORM1I64ARBPROC Uniform1i64ARB; + PFNGLUNIFORM1I64NVPROC Uniform1i64NV; + PFNGLUNIFORM1I64VARBPROC Uniform1i64vARB; + PFNGLUNIFORM1I64VNVPROC Uniform1i64vNV; + PFNGLUNIFORM1IARBPROC Uniform1iARB; + PFNGLUNIFORM1IVPROC Uniform1iv; + PFNGLUNIFORM1IVARBPROC Uniform1ivARB; + PFNGLUNIFORM1UIPROC Uniform1ui; + PFNGLUNIFORM1UI64ARBPROC Uniform1ui64ARB; + PFNGLUNIFORM1UI64NVPROC Uniform1ui64NV; + PFNGLUNIFORM1UI64VARBPROC Uniform1ui64vARB; + PFNGLUNIFORM1UI64VNVPROC Uniform1ui64vNV; + PFNGLUNIFORM1UIEXTPROC Uniform1uiEXT; + PFNGLUNIFORM1UIVPROC Uniform1uiv; + PFNGLUNIFORM1UIVEXTPROC Uniform1uivEXT; + PFNGLUNIFORM2DPROC Uniform2d; + PFNGLUNIFORM2DVPROC Uniform2dv; + PFNGLUNIFORM2FPROC Uniform2f; + PFNGLUNIFORM2FARBPROC Uniform2fARB; + PFNGLUNIFORM2FVPROC Uniform2fv; + PFNGLUNIFORM2FVARBPROC Uniform2fvARB; + PFNGLUNIFORM2IPROC Uniform2i; + PFNGLUNIFORM2I64ARBPROC Uniform2i64ARB; + PFNGLUNIFORM2I64NVPROC Uniform2i64NV; + PFNGLUNIFORM2I64VARBPROC Uniform2i64vARB; + PFNGLUNIFORM2I64VNVPROC Uniform2i64vNV; + PFNGLUNIFORM2IARBPROC Uniform2iARB; + PFNGLUNIFORM2IVPROC Uniform2iv; + PFNGLUNIFORM2IVARBPROC Uniform2ivARB; + PFNGLUNIFORM2UIPROC Uniform2ui; + PFNGLUNIFORM2UI64ARBPROC Uniform2ui64ARB; + PFNGLUNIFORM2UI64NVPROC Uniform2ui64NV; + PFNGLUNIFORM2UI64VARBPROC Uniform2ui64vARB; + PFNGLUNIFORM2UI64VNVPROC Uniform2ui64vNV; + PFNGLUNIFORM2UIEXTPROC Uniform2uiEXT; + PFNGLUNIFORM2UIVPROC Uniform2uiv; + PFNGLUNIFORM2UIVEXTPROC Uniform2uivEXT; + PFNGLUNIFORM3DPROC Uniform3d; + PFNGLUNIFORM3DVPROC Uniform3dv; + PFNGLUNIFORM3FPROC Uniform3f; + PFNGLUNIFORM3FARBPROC Uniform3fARB; + PFNGLUNIFORM3FVPROC Uniform3fv; + PFNGLUNIFORM3FVARBPROC Uniform3fvARB; + PFNGLUNIFORM3IPROC Uniform3i; + PFNGLUNIFORM3I64ARBPROC Uniform3i64ARB; + PFNGLUNIFORM3I64NVPROC Uniform3i64NV; + PFNGLUNIFORM3I64VARBPROC Uniform3i64vARB; + PFNGLUNIFORM3I64VNVPROC Uniform3i64vNV; + PFNGLUNIFORM3IARBPROC Uniform3iARB; + PFNGLUNIFORM3IVPROC Uniform3iv; + PFNGLUNIFORM3IVARBPROC Uniform3ivARB; + PFNGLUNIFORM3UIPROC Uniform3ui; + PFNGLUNIFORM3UI64ARBPROC Uniform3ui64ARB; + PFNGLUNIFORM3UI64NVPROC Uniform3ui64NV; + PFNGLUNIFORM3UI64VARBPROC Uniform3ui64vARB; + PFNGLUNIFORM3UI64VNVPROC Uniform3ui64vNV; + PFNGLUNIFORM3UIEXTPROC Uniform3uiEXT; + PFNGLUNIFORM3UIVPROC Uniform3uiv; + PFNGLUNIFORM3UIVEXTPROC Uniform3uivEXT; + PFNGLUNIFORM4DPROC Uniform4d; + PFNGLUNIFORM4DVPROC Uniform4dv; + PFNGLUNIFORM4FPROC Uniform4f; + PFNGLUNIFORM4FARBPROC Uniform4fARB; + PFNGLUNIFORM4FVPROC Uniform4fv; + PFNGLUNIFORM4FVARBPROC Uniform4fvARB; + PFNGLUNIFORM4IPROC Uniform4i; + PFNGLUNIFORM4I64ARBPROC Uniform4i64ARB; + PFNGLUNIFORM4I64NVPROC Uniform4i64NV; + PFNGLUNIFORM4I64VARBPROC Uniform4i64vARB; + PFNGLUNIFORM4I64VNVPROC Uniform4i64vNV; + PFNGLUNIFORM4IARBPROC Uniform4iARB; + PFNGLUNIFORM4IVPROC Uniform4iv; + PFNGLUNIFORM4IVARBPROC Uniform4ivARB; + PFNGLUNIFORM4UIPROC Uniform4ui; + PFNGLUNIFORM4UI64ARBPROC Uniform4ui64ARB; + PFNGLUNIFORM4UI64NVPROC Uniform4ui64NV; + PFNGLUNIFORM4UI64VARBPROC Uniform4ui64vARB; + PFNGLUNIFORM4UI64VNVPROC Uniform4ui64vNV; + PFNGLUNIFORM4UIEXTPROC Uniform4uiEXT; + PFNGLUNIFORM4UIVPROC Uniform4uiv; + PFNGLUNIFORM4UIVEXTPROC Uniform4uivEXT; + PFNGLUNIFORMBLOCKBINDINGPROC UniformBlockBinding; + PFNGLUNIFORMBUFFEREXTPROC UniformBufferEXT; + PFNGLUNIFORMHANDLEUI64ARBPROC UniformHandleui64ARB; + PFNGLUNIFORMHANDLEUI64NVPROC UniformHandleui64NV; + PFNGLUNIFORMHANDLEUI64VARBPROC UniformHandleui64vARB; + PFNGLUNIFORMHANDLEUI64VNVPROC UniformHandleui64vNV; + PFNGLUNIFORMMATRIX2DVPROC UniformMatrix2dv; + PFNGLUNIFORMMATRIX2FVPROC UniformMatrix2fv; + PFNGLUNIFORMMATRIX2FVARBPROC UniformMatrix2fvARB; + PFNGLUNIFORMMATRIX2X3DVPROC UniformMatrix2x3dv; + PFNGLUNIFORMMATRIX2X3FVPROC UniformMatrix2x3fv; + PFNGLUNIFORMMATRIX2X4DVPROC UniformMatrix2x4dv; + PFNGLUNIFORMMATRIX2X4FVPROC UniformMatrix2x4fv; + PFNGLUNIFORMMATRIX3DVPROC UniformMatrix3dv; + PFNGLUNIFORMMATRIX3FVPROC UniformMatrix3fv; + PFNGLUNIFORMMATRIX3FVARBPROC UniformMatrix3fvARB; + PFNGLUNIFORMMATRIX3X2DVPROC UniformMatrix3x2dv; + PFNGLUNIFORMMATRIX3X2FVPROC UniformMatrix3x2fv; + PFNGLUNIFORMMATRIX3X4DVPROC UniformMatrix3x4dv; + PFNGLUNIFORMMATRIX3X4FVPROC UniformMatrix3x4fv; + PFNGLUNIFORMMATRIX4DVPROC UniformMatrix4dv; + PFNGLUNIFORMMATRIX4FVPROC UniformMatrix4fv; + PFNGLUNIFORMMATRIX4FVARBPROC UniformMatrix4fvARB; + PFNGLUNIFORMMATRIX4X2DVPROC UniformMatrix4x2dv; + PFNGLUNIFORMMATRIX4X2FVPROC UniformMatrix4x2fv; + PFNGLUNIFORMMATRIX4X3DVPROC UniformMatrix4x3dv; + PFNGLUNIFORMMATRIX4X3FVPROC UniformMatrix4x3fv; + PFNGLUNIFORMSUBROUTINESUIVPROC UniformSubroutinesuiv; + PFNGLUNIFORMUI64NVPROC Uniformui64NV; + PFNGLUNIFORMUI64VNVPROC Uniformui64vNV; + PFNGLUNLOCKARRAYSEXTPROC UnlockArraysEXT; + PFNGLUNMAPBUFFERPROC UnmapBuffer; + PFNGLUNMAPBUFFERARBPROC UnmapBufferARB; + PFNGLUNMAPNAMEDBUFFERPROC UnmapNamedBuffer; + PFNGLUNMAPNAMEDBUFFEREXTPROC UnmapNamedBufferEXT; + PFNGLUNMAPOBJECTBUFFERATIPROC UnmapObjectBufferATI; + PFNGLUNMAPTEXTURE2DINTELPROC UnmapTexture2DINTEL; + PFNGLUPDATEOBJECTBUFFERATIPROC UpdateObjectBufferATI; + PFNGLUPLOADGPUMASKNVXPROC UploadGpuMaskNVX; + PFNGLUSEPROGRAMPROC UseProgram; + PFNGLUSEPROGRAMOBJECTARBPROC UseProgramObjectARB; + PFNGLUSEPROGRAMSTAGESPROC UseProgramStages; + PFNGLUSESHADERPROGRAMEXTPROC UseShaderProgramEXT; + PFNGLVDPAUFININVPROC VDPAUFiniNV; + PFNGLVDPAUGETSURFACEIVNVPROC VDPAUGetSurfaceivNV; + PFNGLVDPAUINITNVPROC VDPAUInitNV; + PFNGLVDPAUISSURFACENVPROC VDPAUIsSurfaceNV; + PFNGLVDPAUMAPSURFACESNVPROC VDPAUMapSurfacesNV; + PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC VDPAURegisterOutputSurfaceNV; + PFNGLVDPAUREGISTERVIDEOSURFACENVPROC VDPAURegisterVideoSurfaceNV; + PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC + VDPAURegisterVideoSurfaceWithPictureStructureNV; + PFNGLVDPAUSURFACEACCESSNVPROC VDPAUSurfaceAccessNV; + PFNGLVDPAUUNMAPSURFACESNVPROC VDPAUUnmapSurfacesNV; + PFNGLVDPAUUNREGISTERSURFACENVPROC VDPAUUnregisterSurfaceNV; + PFNGLVALIDATEPROGRAMPROC ValidateProgram; + PFNGLVALIDATEPROGRAMARBPROC ValidateProgramARB; + PFNGLVALIDATEPROGRAMPIPELINEPROC ValidateProgramPipeline; + PFNGLVARIANTARRAYOBJECTATIPROC VariantArrayObjectATI; + PFNGLVARIANTPOINTEREXTPROC VariantPointerEXT; + PFNGLVARIANTBVEXTPROC VariantbvEXT; + PFNGLVARIANTDVEXTPROC VariantdvEXT; + PFNGLVARIANTFVEXTPROC VariantfvEXT; + PFNGLVARIANTIVEXTPROC VariantivEXT; + PFNGLVARIANTSVEXTPROC VariantsvEXT; + PFNGLVARIANTUBVEXTPROC VariantubvEXT; + PFNGLVARIANTUIVEXTPROC VariantuivEXT; + PFNGLVARIANTUSVEXTPROC VariantusvEXT; + PFNGLVERTEX2BOESPROC Vertex2bOES; + PFNGLVERTEX2BVOESPROC Vertex2bvOES; + PFNGLVERTEX2HNVPROC Vertex2hNV; + PFNGLVERTEX2HVNVPROC Vertex2hvNV; + PFNGLVERTEX2XOESPROC Vertex2xOES; + PFNGLVERTEX2XVOESPROC Vertex2xvOES; + PFNGLVERTEX3BOESPROC Vertex3bOES; + PFNGLVERTEX3BVOESPROC Vertex3bvOES; + PFNGLVERTEX3HNVPROC Vertex3hNV; + PFNGLVERTEX3HVNVPROC Vertex3hvNV; + PFNGLVERTEX3XOESPROC Vertex3xOES; + PFNGLVERTEX3XVOESPROC Vertex3xvOES; + PFNGLVERTEX4BOESPROC Vertex4bOES; + PFNGLVERTEX4BVOESPROC Vertex4bvOES; + PFNGLVERTEX4HNVPROC Vertex4hNV; + PFNGLVERTEX4HVNVPROC Vertex4hvNV; + PFNGLVERTEX4XOESPROC Vertex4xOES; + PFNGLVERTEX4XVOESPROC Vertex4xvOES; + PFNGLVERTEXARRAYATTRIBBINDINGPROC VertexArrayAttribBinding; + PFNGLVERTEXARRAYATTRIBFORMATPROC VertexArrayAttribFormat; + PFNGLVERTEXARRAYATTRIBIFORMATPROC VertexArrayAttribIFormat; + PFNGLVERTEXARRAYATTRIBLFORMATPROC VertexArrayAttribLFormat; + PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC VertexArrayBindVertexBufferEXT; + PFNGLVERTEXARRAYBINDINGDIVISORPROC VertexArrayBindingDivisor; + PFNGLVERTEXARRAYCOLOROFFSETEXTPROC VertexArrayColorOffsetEXT; + PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC VertexArrayEdgeFlagOffsetEXT; + PFNGLVERTEXARRAYELEMENTBUFFERPROC VertexArrayElementBuffer; + PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC VertexArrayFogCoordOffsetEXT; + PFNGLVERTEXARRAYINDEXOFFSETEXTPROC VertexArrayIndexOffsetEXT; + PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC VertexArrayMultiTexCoordOffsetEXT; + PFNGLVERTEXARRAYNORMALOFFSETEXTPROC VertexArrayNormalOffsetEXT; + PFNGLVERTEXARRAYPARAMETERIAPPLEPROC VertexArrayParameteriAPPLE; + PFNGLVERTEXARRAYRANGEAPPLEPROC VertexArrayRangeAPPLE; + PFNGLVERTEXARRAYRANGENVPROC VertexArrayRangeNV; + PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC VertexArraySecondaryColorOffsetEXT; + PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC VertexArrayTexCoordOffsetEXT; + PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC VertexArrayVertexAttribBindingEXT; + PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC VertexArrayVertexAttribDivisorEXT; + PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC VertexArrayVertexAttribFormatEXT; + PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC VertexArrayVertexAttribIFormatEXT; + PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC VertexArrayVertexAttribIOffsetEXT; + PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC VertexArrayVertexAttribLFormatEXT; + PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC VertexArrayVertexAttribLOffsetEXT; + PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC VertexArrayVertexAttribOffsetEXT; + PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC VertexArrayVertexBindingDivisorEXT; + PFNGLVERTEXARRAYVERTEXBUFFERPROC VertexArrayVertexBuffer; + PFNGLVERTEXARRAYVERTEXBUFFERSPROC VertexArrayVertexBuffers; + PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC VertexArrayVertexOffsetEXT; + PFNGLVERTEXATTRIB1DPROC VertexAttrib1d; + PFNGLVERTEXATTRIB1DARBPROC VertexAttrib1dARB; + PFNGLVERTEXATTRIB1DNVPROC VertexAttrib1dNV; + PFNGLVERTEXATTRIB1DVPROC VertexAttrib1dv; + PFNGLVERTEXATTRIB1DVARBPROC VertexAttrib1dvARB; + PFNGLVERTEXATTRIB1DVNVPROC VertexAttrib1dvNV; + PFNGLVERTEXATTRIB1FPROC VertexAttrib1f; + PFNGLVERTEXATTRIB1FARBPROC VertexAttrib1fARB; + PFNGLVERTEXATTRIB1FNVPROC VertexAttrib1fNV; + PFNGLVERTEXATTRIB1FVPROC VertexAttrib1fv; + PFNGLVERTEXATTRIB1FVARBPROC VertexAttrib1fvARB; + PFNGLVERTEXATTRIB1FVNVPROC VertexAttrib1fvNV; + PFNGLVERTEXATTRIB1HNVPROC VertexAttrib1hNV; + PFNGLVERTEXATTRIB1HVNVPROC VertexAttrib1hvNV; + PFNGLVERTEXATTRIB1SPROC VertexAttrib1s; + PFNGLVERTEXATTRIB1SARBPROC VertexAttrib1sARB; + PFNGLVERTEXATTRIB1SNVPROC VertexAttrib1sNV; + PFNGLVERTEXATTRIB1SVPROC VertexAttrib1sv; + PFNGLVERTEXATTRIB1SVARBPROC VertexAttrib1svARB; + PFNGLVERTEXATTRIB1SVNVPROC VertexAttrib1svNV; + PFNGLVERTEXATTRIB2DPROC VertexAttrib2d; + PFNGLVERTEXATTRIB2DARBPROC VertexAttrib2dARB; + PFNGLVERTEXATTRIB2DNVPROC VertexAttrib2dNV; + PFNGLVERTEXATTRIB2DVPROC VertexAttrib2dv; + PFNGLVERTEXATTRIB2DVARBPROC VertexAttrib2dvARB; + PFNGLVERTEXATTRIB2DVNVPROC VertexAttrib2dvNV; + PFNGLVERTEXATTRIB2FPROC VertexAttrib2f; + PFNGLVERTEXATTRIB2FARBPROC VertexAttrib2fARB; + PFNGLVERTEXATTRIB2FNVPROC VertexAttrib2fNV; + PFNGLVERTEXATTRIB2FVPROC VertexAttrib2fv; + PFNGLVERTEXATTRIB2FVARBPROC VertexAttrib2fvARB; + PFNGLVERTEXATTRIB2FVNVPROC VertexAttrib2fvNV; + PFNGLVERTEXATTRIB2HNVPROC VertexAttrib2hNV; + PFNGLVERTEXATTRIB2HVNVPROC VertexAttrib2hvNV; + PFNGLVERTEXATTRIB2SPROC VertexAttrib2s; + PFNGLVERTEXATTRIB2SARBPROC VertexAttrib2sARB; + PFNGLVERTEXATTRIB2SNVPROC VertexAttrib2sNV; + PFNGLVERTEXATTRIB2SVPROC VertexAttrib2sv; + PFNGLVERTEXATTRIB2SVARBPROC VertexAttrib2svARB; + PFNGLVERTEXATTRIB2SVNVPROC VertexAttrib2svNV; + PFNGLVERTEXATTRIB3DPROC VertexAttrib3d; + PFNGLVERTEXATTRIB3DARBPROC VertexAttrib3dARB; + PFNGLVERTEXATTRIB3DNVPROC VertexAttrib3dNV; + PFNGLVERTEXATTRIB3DVPROC VertexAttrib3dv; + PFNGLVERTEXATTRIB3DVARBPROC VertexAttrib3dvARB; + PFNGLVERTEXATTRIB3DVNVPROC VertexAttrib3dvNV; + PFNGLVERTEXATTRIB3FPROC VertexAttrib3f; + PFNGLVERTEXATTRIB3FARBPROC VertexAttrib3fARB; + PFNGLVERTEXATTRIB3FNVPROC VertexAttrib3fNV; + PFNGLVERTEXATTRIB3FVPROC VertexAttrib3fv; + PFNGLVERTEXATTRIB3FVARBPROC VertexAttrib3fvARB; + PFNGLVERTEXATTRIB3FVNVPROC VertexAttrib3fvNV; + PFNGLVERTEXATTRIB3HNVPROC VertexAttrib3hNV; + PFNGLVERTEXATTRIB3HVNVPROC VertexAttrib3hvNV; + PFNGLVERTEXATTRIB3SPROC VertexAttrib3s; + PFNGLVERTEXATTRIB3SARBPROC VertexAttrib3sARB; + PFNGLVERTEXATTRIB3SNVPROC VertexAttrib3sNV; + PFNGLVERTEXATTRIB3SVPROC VertexAttrib3sv; + PFNGLVERTEXATTRIB3SVARBPROC VertexAttrib3svARB; + PFNGLVERTEXATTRIB3SVNVPROC VertexAttrib3svNV; + PFNGLVERTEXATTRIB4NBVPROC VertexAttrib4Nbv; + PFNGLVERTEXATTRIB4NBVARBPROC VertexAttrib4NbvARB; + PFNGLVERTEXATTRIB4NIVPROC VertexAttrib4Niv; + PFNGLVERTEXATTRIB4NIVARBPROC VertexAttrib4NivARB; + PFNGLVERTEXATTRIB4NSVPROC VertexAttrib4Nsv; + PFNGLVERTEXATTRIB4NSVARBPROC VertexAttrib4NsvARB; + PFNGLVERTEXATTRIB4NUBPROC VertexAttrib4Nub; + PFNGLVERTEXATTRIB4NUBARBPROC VertexAttrib4NubARB; + PFNGLVERTEXATTRIB4NUBVPROC VertexAttrib4Nubv; + PFNGLVERTEXATTRIB4NUBVARBPROC VertexAttrib4NubvARB; + PFNGLVERTEXATTRIB4NUIVPROC VertexAttrib4Nuiv; + PFNGLVERTEXATTRIB4NUIVARBPROC VertexAttrib4NuivARB; + PFNGLVERTEXATTRIB4NUSVPROC VertexAttrib4Nusv; + PFNGLVERTEXATTRIB4NUSVARBPROC VertexAttrib4NusvARB; + PFNGLVERTEXATTRIB4BVPROC VertexAttrib4bv; + PFNGLVERTEXATTRIB4BVARBPROC VertexAttrib4bvARB; + PFNGLVERTEXATTRIB4DPROC VertexAttrib4d; + PFNGLVERTEXATTRIB4DARBPROC VertexAttrib4dARB; + PFNGLVERTEXATTRIB4DNVPROC VertexAttrib4dNV; + PFNGLVERTEXATTRIB4DVPROC VertexAttrib4dv; + PFNGLVERTEXATTRIB4DVARBPROC VertexAttrib4dvARB; + PFNGLVERTEXATTRIB4DVNVPROC VertexAttrib4dvNV; + PFNGLVERTEXATTRIB4FPROC VertexAttrib4f; + PFNGLVERTEXATTRIB4FARBPROC VertexAttrib4fARB; + PFNGLVERTEXATTRIB4FNVPROC VertexAttrib4fNV; + PFNGLVERTEXATTRIB4FVPROC VertexAttrib4fv; + PFNGLVERTEXATTRIB4FVARBPROC VertexAttrib4fvARB; + PFNGLVERTEXATTRIB4FVNVPROC VertexAttrib4fvNV; + PFNGLVERTEXATTRIB4HNVPROC VertexAttrib4hNV; + PFNGLVERTEXATTRIB4HVNVPROC VertexAttrib4hvNV; + PFNGLVERTEXATTRIB4IVPROC VertexAttrib4iv; + PFNGLVERTEXATTRIB4IVARBPROC VertexAttrib4ivARB; + PFNGLVERTEXATTRIB4SPROC VertexAttrib4s; + PFNGLVERTEXATTRIB4SARBPROC VertexAttrib4sARB; + PFNGLVERTEXATTRIB4SNVPROC VertexAttrib4sNV; + PFNGLVERTEXATTRIB4SVPROC VertexAttrib4sv; + PFNGLVERTEXATTRIB4SVARBPROC VertexAttrib4svARB; + PFNGLVERTEXATTRIB4SVNVPROC VertexAttrib4svNV; + PFNGLVERTEXATTRIB4UBNVPROC VertexAttrib4ubNV; + PFNGLVERTEXATTRIB4UBVPROC VertexAttrib4ubv; + PFNGLVERTEXATTRIB4UBVARBPROC VertexAttrib4ubvARB; + PFNGLVERTEXATTRIB4UBVNVPROC VertexAttrib4ubvNV; + PFNGLVERTEXATTRIB4UIVPROC VertexAttrib4uiv; + PFNGLVERTEXATTRIB4UIVARBPROC VertexAttrib4uivARB; + PFNGLVERTEXATTRIB4USVPROC VertexAttrib4usv; + PFNGLVERTEXATTRIB4USVARBPROC VertexAttrib4usvARB; + PFNGLVERTEXATTRIBARRAYOBJECTATIPROC VertexAttribArrayObjectATI; + PFNGLVERTEXATTRIBBINDINGPROC VertexAttribBinding; + PFNGLVERTEXATTRIBDIVISORPROC VertexAttribDivisor; + PFNGLVERTEXATTRIBDIVISORARBPROC VertexAttribDivisorARB; + PFNGLVERTEXATTRIBFORMATPROC VertexAttribFormat; + PFNGLVERTEXATTRIBFORMATNVPROC VertexAttribFormatNV; + PFNGLVERTEXATTRIBI1IPROC VertexAttribI1i; + PFNGLVERTEXATTRIBI1IEXTPROC VertexAttribI1iEXT; + PFNGLVERTEXATTRIBI1IVPROC VertexAttribI1iv; + PFNGLVERTEXATTRIBI1IVEXTPROC VertexAttribI1ivEXT; + PFNGLVERTEXATTRIBI1UIPROC VertexAttribI1ui; + PFNGLVERTEXATTRIBI1UIEXTPROC VertexAttribI1uiEXT; + PFNGLVERTEXATTRIBI1UIVPROC VertexAttribI1uiv; + PFNGLVERTEXATTRIBI1UIVEXTPROC VertexAttribI1uivEXT; + PFNGLVERTEXATTRIBI2IPROC VertexAttribI2i; + PFNGLVERTEXATTRIBI2IEXTPROC VertexAttribI2iEXT; + PFNGLVERTEXATTRIBI2IVPROC VertexAttribI2iv; + PFNGLVERTEXATTRIBI2IVEXTPROC VertexAttribI2ivEXT; + PFNGLVERTEXATTRIBI2UIPROC VertexAttribI2ui; + PFNGLVERTEXATTRIBI2UIEXTPROC VertexAttribI2uiEXT; + PFNGLVERTEXATTRIBI2UIVPROC VertexAttribI2uiv; + PFNGLVERTEXATTRIBI2UIVEXTPROC VertexAttribI2uivEXT; + PFNGLVERTEXATTRIBI3IPROC VertexAttribI3i; + PFNGLVERTEXATTRIBI3IEXTPROC VertexAttribI3iEXT; + PFNGLVERTEXATTRIBI3IVPROC VertexAttribI3iv; + PFNGLVERTEXATTRIBI3IVEXTPROC VertexAttribI3ivEXT; + PFNGLVERTEXATTRIBI3UIPROC VertexAttribI3ui; + PFNGLVERTEXATTRIBI3UIEXTPROC VertexAttribI3uiEXT; + PFNGLVERTEXATTRIBI3UIVPROC VertexAttribI3uiv; + PFNGLVERTEXATTRIBI3UIVEXTPROC VertexAttribI3uivEXT; + PFNGLVERTEXATTRIBI4BVPROC VertexAttribI4bv; + PFNGLVERTEXATTRIBI4BVEXTPROC VertexAttribI4bvEXT; + PFNGLVERTEXATTRIBI4IPROC VertexAttribI4i; + PFNGLVERTEXATTRIBI4IEXTPROC VertexAttribI4iEXT; + PFNGLVERTEXATTRIBI4IVPROC VertexAttribI4iv; + PFNGLVERTEXATTRIBI4IVEXTPROC VertexAttribI4ivEXT; + PFNGLVERTEXATTRIBI4SVPROC VertexAttribI4sv; + PFNGLVERTEXATTRIBI4SVEXTPROC VertexAttribI4svEXT; + PFNGLVERTEXATTRIBI4UBVPROC VertexAttribI4ubv; + PFNGLVERTEXATTRIBI4UBVEXTPROC VertexAttribI4ubvEXT; + PFNGLVERTEXATTRIBI4UIPROC VertexAttribI4ui; + PFNGLVERTEXATTRIBI4UIEXTPROC VertexAttribI4uiEXT; + PFNGLVERTEXATTRIBI4UIVPROC VertexAttribI4uiv; + PFNGLVERTEXATTRIBI4UIVEXTPROC VertexAttribI4uivEXT; + PFNGLVERTEXATTRIBI4USVPROC VertexAttribI4usv; + PFNGLVERTEXATTRIBI4USVEXTPROC VertexAttribI4usvEXT; + PFNGLVERTEXATTRIBIFORMATPROC VertexAttribIFormat; + PFNGLVERTEXATTRIBIFORMATNVPROC VertexAttribIFormatNV; + PFNGLVERTEXATTRIBIPOINTERPROC VertexAttribIPointer; + PFNGLVERTEXATTRIBIPOINTEREXTPROC VertexAttribIPointerEXT; + PFNGLVERTEXATTRIBL1DPROC VertexAttribL1d; + PFNGLVERTEXATTRIBL1DEXTPROC VertexAttribL1dEXT; + PFNGLVERTEXATTRIBL1DVPROC VertexAttribL1dv; + PFNGLVERTEXATTRIBL1DVEXTPROC VertexAttribL1dvEXT; + PFNGLVERTEXATTRIBL1I64NVPROC VertexAttribL1i64NV; + PFNGLVERTEXATTRIBL1I64VNVPROC VertexAttribL1i64vNV; + PFNGLVERTEXATTRIBL1UI64ARBPROC VertexAttribL1ui64ARB; + PFNGLVERTEXATTRIBL1UI64NVPROC VertexAttribL1ui64NV; + PFNGLVERTEXATTRIBL1UI64VARBPROC VertexAttribL1ui64vARB; + PFNGLVERTEXATTRIBL1UI64VNVPROC VertexAttribL1ui64vNV; + PFNGLVERTEXATTRIBL2DPROC VertexAttribL2d; + PFNGLVERTEXATTRIBL2DEXTPROC VertexAttribL2dEXT; + PFNGLVERTEXATTRIBL2DVPROC VertexAttribL2dv; + PFNGLVERTEXATTRIBL2DVEXTPROC VertexAttribL2dvEXT; + PFNGLVERTEXATTRIBL2I64NVPROC VertexAttribL2i64NV; + PFNGLVERTEXATTRIBL2I64VNVPROC VertexAttribL2i64vNV; + PFNGLVERTEXATTRIBL2UI64NVPROC VertexAttribL2ui64NV; + PFNGLVERTEXATTRIBL2UI64VNVPROC VertexAttribL2ui64vNV; + PFNGLVERTEXATTRIBL3DPROC VertexAttribL3d; + PFNGLVERTEXATTRIBL3DEXTPROC VertexAttribL3dEXT; + PFNGLVERTEXATTRIBL3DVPROC VertexAttribL3dv; + PFNGLVERTEXATTRIBL3DVEXTPROC VertexAttribL3dvEXT; + PFNGLVERTEXATTRIBL3I64NVPROC VertexAttribL3i64NV; + PFNGLVERTEXATTRIBL3I64VNVPROC VertexAttribL3i64vNV; + PFNGLVERTEXATTRIBL3UI64NVPROC VertexAttribL3ui64NV; + PFNGLVERTEXATTRIBL3UI64VNVPROC VertexAttribL3ui64vNV; + PFNGLVERTEXATTRIBL4DPROC VertexAttribL4d; + PFNGLVERTEXATTRIBL4DEXTPROC VertexAttribL4dEXT; + PFNGLVERTEXATTRIBL4DVPROC VertexAttribL4dv; + PFNGLVERTEXATTRIBL4DVEXTPROC VertexAttribL4dvEXT; + PFNGLVERTEXATTRIBL4I64NVPROC VertexAttribL4i64NV; + PFNGLVERTEXATTRIBL4I64VNVPROC VertexAttribL4i64vNV; + PFNGLVERTEXATTRIBL4UI64NVPROC VertexAttribL4ui64NV; + PFNGLVERTEXATTRIBL4UI64VNVPROC VertexAttribL4ui64vNV; + PFNGLVERTEXATTRIBLFORMATPROC VertexAttribLFormat; + PFNGLVERTEXATTRIBLFORMATNVPROC VertexAttribLFormatNV; + PFNGLVERTEXATTRIBLPOINTERPROC VertexAttribLPointer; + PFNGLVERTEXATTRIBLPOINTEREXTPROC VertexAttribLPointerEXT; + PFNGLVERTEXATTRIBP1UIPROC VertexAttribP1ui; + PFNGLVERTEXATTRIBP1UIVPROC VertexAttribP1uiv; + PFNGLVERTEXATTRIBP2UIPROC VertexAttribP2ui; + PFNGLVERTEXATTRIBP2UIVPROC VertexAttribP2uiv; + PFNGLVERTEXATTRIBP3UIPROC VertexAttribP3ui; + PFNGLVERTEXATTRIBP3UIVPROC VertexAttribP3uiv; + PFNGLVERTEXATTRIBP4UIPROC VertexAttribP4ui; + PFNGLVERTEXATTRIBP4UIVPROC VertexAttribP4uiv; + PFNGLVERTEXATTRIBPARAMETERIAMDPROC VertexAttribParameteriAMD; + PFNGLVERTEXATTRIBPOINTERPROC VertexAttribPointer; + PFNGLVERTEXATTRIBPOINTERARBPROC VertexAttribPointerARB; + PFNGLVERTEXATTRIBPOINTERNVPROC VertexAttribPointerNV; + PFNGLVERTEXATTRIBS1DVNVPROC VertexAttribs1dvNV; + PFNGLVERTEXATTRIBS1FVNVPROC VertexAttribs1fvNV; + PFNGLVERTEXATTRIBS1HVNVPROC VertexAttribs1hvNV; + PFNGLVERTEXATTRIBS1SVNVPROC VertexAttribs1svNV; + PFNGLVERTEXATTRIBS2DVNVPROC VertexAttribs2dvNV; + PFNGLVERTEXATTRIBS2FVNVPROC VertexAttribs2fvNV; + PFNGLVERTEXATTRIBS2HVNVPROC VertexAttribs2hvNV; + PFNGLVERTEXATTRIBS2SVNVPROC VertexAttribs2svNV; + PFNGLVERTEXATTRIBS3DVNVPROC VertexAttribs3dvNV; + PFNGLVERTEXATTRIBS3FVNVPROC VertexAttribs3fvNV; + PFNGLVERTEXATTRIBS3HVNVPROC VertexAttribs3hvNV; + PFNGLVERTEXATTRIBS3SVNVPROC VertexAttribs3svNV; + PFNGLVERTEXATTRIBS4DVNVPROC VertexAttribs4dvNV; + PFNGLVERTEXATTRIBS4FVNVPROC VertexAttribs4fvNV; + PFNGLVERTEXATTRIBS4HVNVPROC VertexAttribs4hvNV; + PFNGLVERTEXATTRIBS4SVNVPROC VertexAttribs4svNV; + PFNGLVERTEXATTRIBS4UBVNVPROC VertexAttribs4ubvNV; + PFNGLVERTEXBINDINGDIVISORPROC VertexBindingDivisor; + PFNGLVERTEXBLENDARBPROC VertexBlendARB; + PFNGLVERTEXBLENDENVFATIPROC VertexBlendEnvfATI; + PFNGLVERTEXBLENDENVIATIPROC VertexBlendEnviATI; + PFNGLVERTEXFORMATNVPROC VertexFormatNV; + PFNGLVERTEXPOINTEREXTPROC VertexPointerEXT; + PFNGLVERTEXPOINTERLISTIBMPROC VertexPointerListIBM; + PFNGLVERTEXPOINTERVINTELPROC VertexPointervINTEL; + PFNGLVERTEXSTREAM1DATIPROC VertexStream1dATI; + PFNGLVERTEXSTREAM1DVATIPROC VertexStream1dvATI; + PFNGLVERTEXSTREAM1FATIPROC VertexStream1fATI; + PFNGLVERTEXSTREAM1FVATIPROC VertexStream1fvATI; + PFNGLVERTEXSTREAM1IATIPROC VertexStream1iATI; + PFNGLVERTEXSTREAM1IVATIPROC VertexStream1ivATI; + PFNGLVERTEXSTREAM1SATIPROC VertexStream1sATI; + PFNGLVERTEXSTREAM1SVATIPROC VertexStream1svATI; + PFNGLVERTEXSTREAM2DATIPROC VertexStream2dATI; + PFNGLVERTEXSTREAM2DVATIPROC VertexStream2dvATI; + PFNGLVERTEXSTREAM2FATIPROC VertexStream2fATI; + PFNGLVERTEXSTREAM2FVATIPROC VertexStream2fvATI; + PFNGLVERTEXSTREAM2IATIPROC VertexStream2iATI; + PFNGLVERTEXSTREAM2IVATIPROC VertexStream2ivATI; + PFNGLVERTEXSTREAM2SATIPROC VertexStream2sATI; + PFNGLVERTEXSTREAM2SVATIPROC VertexStream2svATI; + PFNGLVERTEXSTREAM3DATIPROC VertexStream3dATI; + PFNGLVERTEXSTREAM3DVATIPROC VertexStream3dvATI; + PFNGLVERTEXSTREAM3FATIPROC VertexStream3fATI; + PFNGLVERTEXSTREAM3FVATIPROC VertexStream3fvATI; + PFNGLVERTEXSTREAM3IATIPROC VertexStream3iATI; + PFNGLVERTEXSTREAM3IVATIPROC VertexStream3ivATI; + PFNGLVERTEXSTREAM3SATIPROC VertexStream3sATI; + PFNGLVERTEXSTREAM3SVATIPROC VertexStream3svATI; + PFNGLVERTEXSTREAM4DATIPROC VertexStream4dATI; + PFNGLVERTEXSTREAM4DVATIPROC VertexStream4dvATI; + PFNGLVERTEXSTREAM4FATIPROC VertexStream4fATI; + PFNGLVERTEXSTREAM4FVATIPROC VertexStream4fvATI; + PFNGLVERTEXSTREAM4IATIPROC VertexStream4iATI; + PFNGLVERTEXSTREAM4IVATIPROC VertexStream4ivATI; + PFNGLVERTEXSTREAM4SATIPROC VertexStream4sATI; + PFNGLVERTEXSTREAM4SVATIPROC VertexStream4svATI; + PFNGLVERTEXWEIGHTPOINTEREXTPROC VertexWeightPointerEXT; + PFNGLVERTEXWEIGHTFEXTPROC VertexWeightfEXT; + PFNGLVERTEXWEIGHTFVEXTPROC VertexWeightfvEXT; + PFNGLVERTEXWEIGHTHNVPROC VertexWeighthNV; + PFNGLVERTEXWEIGHTHVNVPROC VertexWeighthvNV; + PFNGLVIDEOCAPTURENVPROC VideoCaptureNV; + PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC VideoCaptureStreamParameterdvNV; + PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC VideoCaptureStreamParameterfvNV; + PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC VideoCaptureStreamParameterivNV; + PFNGLVIEWPORTPROC Viewport; + PFNGLVIEWPORTARRAYVPROC ViewportArrayv; + PFNGLVIEWPORTINDEXEDFPROC ViewportIndexedf; + PFNGLVIEWPORTINDEXEDFVPROC ViewportIndexedfv; + PFNGLVIEWPORTPOSITIONWSCALENVPROC ViewportPositionWScaleNV; + PFNGLVIEWPORTSWIZZLENVPROC ViewportSwizzleNV; + PFNGLWAITSEMAPHOREEXTPROC WaitSemaphoreEXT; + PFNGLWAITSEMAPHOREUI64NVXPROC WaitSemaphoreui64NVX; + PFNGLWAITSYNCPROC WaitSync; + PFNGLWAITVKSEMAPHORENVPROC WaitVkSemaphoreNV; + PFNGLWEIGHTPATHSNVPROC WeightPathsNV; + PFNGLWEIGHTPOINTERARBPROC WeightPointerARB; + PFNGLWEIGHTBVARBPROC WeightbvARB; + PFNGLWEIGHTDVARBPROC WeightdvARB; + PFNGLWEIGHTFVARBPROC WeightfvARB; + PFNGLWEIGHTIVARBPROC WeightivARB; + PFNGLWEIGHTSVARBPROC WeightsvARB; + PFNGLWEIGHTUBVARBPROC WeightubvARB; + PFNGLWEIGHTUIVARBPROC WeightuivARB; + PFNGLWEIGHTUSVARBPROC WeightusvARB; + PFNGLWINDOWPOS2DARBPROC WindowPos2dARB; + PFNGLWINDOWPOS2DMESAPROC WindowPos2dMESA; + PFNGLWINDOWPOS2DVARBPROC WindowPos2dvARB; + PFNGLWINDOWPOS2DVMESAPROC WindowPos2dvMESA; + PFNGLWINDOWPOS2FARBPROC WindowPos2fARB; + PFNGLWINDOWPOS2FMESAPROC WindowPos2fMESA; + PFNGLWINDOWPOS2FVARBPROC WindowPos2fvARB; + PFNGLWINDOWPOS2FVMESAPROC WindowPos2fvMESA; + PFNGLWINDOWPOS2IARBPROC WindowPos2iARB; + PFNGLWINDOWPOS2IMESAPROC WindowPos2iMESA; + PFNGLWINDOWPOS2IVARBPROC WindowPos2ivARB; + PFNGLWINDOWPOS2IVMESAPROC WindowPos2ivMESA; + PFNGLWINDOWPOS2SARBPROC WindowPos2sARB; + PFNGLWINDOWPOS2SMESAPROC WindowPos2sMESA; + PFNGLWINDOWPOS2SVARBPROC WindowPos2svARB; + PFNGLWINDOWPOS2SVMESAPROC WindowPos2svMESA; + PFNGLWINDOWPOS3DARBPROC WindowPos3dARB; + PFNGLWINDOWPOS3DMESAPROC WindowPos3dMESA; + PFNGLWINDOWPOS3DVARBPROC WindowPos3dvARB; + PFNGLWINDOWPOS3DVMESAPROC WindowPos3dvMESA; + PFNGLWINDOWPOS3FARBPROC WindowPos3fARB; + PFNGLWINDOWPOS3FMESAPROC WindowPos3fMESA; + PFNGLWINDOWPOS3FVARBPROC WindowPos3fvARB; + PFNGLWINDOWPOS3FVMESAPROC WindowPos3fvMESA; + PFNGLWINDOWPOS3IARBPROC WindowPos3iARB; + PFNGLWINDOWPOS3IMESAPROC WindowPos3iMESA; + PFNGLWINDOWPOS3IVARBPROC WindowPos3ivARB; + PFNGLWINDOWPOS3IVMESAPROC WindowPos3ivMESA; + PFNGLWINDOWPOS3SARBPROC WindowPos3sARB; + PFNGLWINDOWPOS3SMESAPROC WindowPos3sMESA; + PFNGLWINDOWPOS3SVARBPROC WindowPos3svARB; + PFNGLWINDOWPOS3SVMESAPROC WindowPos3svMESA; + PFNGLWINDOWPOS4DMESAPROC WindowPos4dMESA; + PFNGLWINDOWPOS4DVMESAPROC WindowPos4dvMESA; + PFNGLWINDOWPOS4FMESAPROC WindowPos4fMESA; + PFNGLWINDOWPOS4FVMESAPROC WindowPos4fvMESA; + PFNGLWINDOWPOS4IMESAPROC WindowPos4iMESA; + PFNGLWINDOWPOS4IVMESAPROC WindowPos4ivMESA; + PFNGLWINDOWPOS4SMESAPROC WindowPos4sMESA; + PFNGLWINDOWPOS4SVMESAPROC WindowPos4svMESA; + PFNGLWINDOWRECTANGLESEXTPROC WindowRectanglesEXT; + PFNGLWRITEMASKEXTPROC WriteMaskEXT; +} GladGLContext; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/StgSharp.C/glfw3.h b/StgSharp.C/glfw3.h new file mode 100644 index 00000000..d4215c17 --- /dev/null +++ b/StgSharp.C/glfw3.h @@ -0,0 +1,6440 @@ +/************************************************************************* + * GLFW 3.4 - www.glfw->org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2019 Camilla Löwy org> + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_h_ +#define _glfw3_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + + /************************************************************************* + * Doxygen documentation + *************************************************************************/ + + /*! @file glfw3.h + * @brief The header of the GLFW 3 API. + * + * This is the header file of the GLFW 3 API. It defines all its types and + * declares all its functions. + * + * For more information about how to use this file, see @ref build_include. + */ + /*! @defgroup context Context reference + * @brief Functions and types related to OpenGL and OpenGL ES contexts. + * + * This is the reference documentation for OpenGL and OpenGL ES context related + * functions. For more task-oriented information, see the @ref context_guide. + */ + /*! @defgroup vulkan Vulkan support reference + * @brief Functions and types related to Vulkan. + * + * This is the reference documentation for Vulkan related functions and types. + * For more task-oriented information, see the @ref vulkan_guide. + */ + /*! @defgroup init Initialization, version and error reference + * @brief Functions and types related to initialization and error handling. + * + * This is the reference documentation for initialization and termination of + * the library, version management and error handling. For more task-oriented + * information, see the @ref intro_guide. + */ + /*! @defgroup input Input reference + * @brief Functions and types related to input handling. + * + * This is the reference documentation for input related functions and types. + * For more task-oriented information, see the @ref input_guide. + */ + /*! @defgroup monitor Monitor reference + * @brief Functions and types related to monitors. + * + * This is the reference documentation for monitor related functions and types. + * For more task-oriented information, see the @ref monitor_guide. + */ + /*! @defgroup window Window reference + * @brief Functions and types related to windows. + * + * This is the reference documentation for window related functions and types, + * including creation, deletion and event polling. For more task-oriented + * information, see the @ref window_guide. + */ + + + /************************************************************************* + * Compiler- and platform-specific preprocessor work + *************************************************************************/ + + /* If we are we on Windows, we want a single define for it. + */ +#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__)) +#define _WIN32 +#endif /* _WIN32 */ + + /* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + + /* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +#if defined(GLFW_INCLUDE_VULKAN) +#include +#endif /* Vulkan header */ + + /* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + + /* It is customary to use APIENTRY for OpenGL function pointer declarations on + * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. + */ +#if !defined(APIENTRY) +#if defined(_WIN32) +#define APIENTRY _stdcall +#else +#define APIENTRY +#endif +#define GLFW_APIENTRY_DEFINED +#endif /* APIENTRY */ + + /* Some Windows OpenGL headers need this. + */ +#if !defined(WINGDIAPI) && defined(_WIN32) +#define WINGDIAPI __declspec(dllimport) +#define GLFW_WINGDIAPI_DEFINED +#endif /* WINGDIAPI */ + + /* Some Windows GLU headers need this. + */ +#if !defined(CALLBACK) && defined(_WIN32) +#define CALLBACK __stdcall +#define GLFW_CALLBACK_DEFINED +#endif /* CALLBACK */ + + /* Include the chosen OpenGL or OpenGL ES headers. + */ +#if defined(GLFW_INCLUDE_ES1) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES2) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES3) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES31) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_ES32) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#elif defined(GLFW_INCLUDE_GLCOREARB) + +#if defined(__APPLE__) + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif /*GLFW_INCLUDE_GLEXT*/ + +#else /*__APPLE__*/ + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#endif /*__APPLE__*/ + +#elif defined(GLFW_INCLUDE_GLU) + +#if defined(__APPLE__) + +#if defined(GLFW_INCLUDE_GLU) +#include +#endif + +#else /*__APPLE__*/ + +#if defined(GLFW_INCLUDE_GLU) +#include +#endif + +#endif /*__APPLE__*/ + +#elif !defined(GLFW_INCLUDE_NONE) && \ + !defined(__gl_h_) && \ + !defined(__gles1_gl_h_) && \ + !defined(__gles2_gl2_h_) && \ + !defined(__gles2_gl3_h_) && \ + !defined(__gles2_gl31_h_) && \ + !defined(__gles2_gl32_h_) && \ + !defined(__gl_glcorearb_h_) && \ + !defined(__gl2_h_) /*legacy*/ && \ + !defined(__gl3_h_) /*legacy*/ && \ + !defined(__gl31_h_) /*legacy*/ && \ + !defined(__gl32_h_) /*legacy*/ && \ + !defined(__glcorearb_h_) /*legacy*/ && \ + !defined(__GL_H__) /*non-standard*/ && \ + !defined(__gltypes_h_) /*non-standard*/ && \ + !defined(__glee_h_) /*non-standard*/ + +#if defined(__APPLE__) + +#if !defined(GLFW_INCLUDE_GLEXT) +#define GL_GLEXT_LEGACY +#endif +#include + +#else /*__APPLE__*/ + +#include +#if defined(GLFW_INCLUDE_GLEXT) +#include +#endif + +#endif /*__APPLE__*/ + +#endif /* OpenGL and OpenGL ES headers */ + +#ifndef SSCAPI + +#include "ssgc_internal.h" + +#endif // ! SSCAPI + + + + //#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) + // /* GLFW_DLL must be defined by applications that are linking against the DLL + // * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW + // * configuration header when compiling the DLL version of the library. + // */ + //#error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" + //#endif + // + // /* SSCAPI is used to declare public API functions for export + // * from the DLL / shared library / dynamic library. + // */ + //#if defined(_WIN32) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Win32 DLL */ + //#define SSCAPI __declspec(dllexport) + //#elif defined(_WIN32) && defined(GLFW_DLL) + /* We are calling a GLFW Win32 DLL */ + //#define SSCAPI __declspec(dllimport) + //#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) + /* We are building GLFW as a Unix shared library */ + //#define SSCAPI __attribute__((visibility("default"))) + //#else + //#define SSCAPI + //#endif + + +/************************************************************************* + * GLFW API tokens + *************************************************************************/ + + /*! @name GLFW version macros + * @{ */ + /*! @brief The major version number of the GLFW header. + * + * The major version number of the GLFW header. This is incremented when the + * API is changed in non-compatible ways. + * @ingroup init + */ +#define GLFW_VERSION_MAJOR 3 + /*! @brief The minor version number of the GLFW header. + * + * The minor version number of the GLFW header. This is incremented when + * features are added to the API but it remains backward-compatible. + * @ingroup init + */ +#define GLFW_VERSION_MINOR 4 + /*! @brief The revision number of the GLFW header. + * + * The revision number of the GLFW header. This is incremented when a bug fix + * release is made that does not contain any API changes. + * @ingroup init + */ +#define GLFW_VERSION_REVISION 0 + /*! @} */ + + /*! @brief One. + * + * This is only semantic sugar for the number 1. You can instead use `1` or + * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal + * to one. + * + * @ingroup init + */ +#define GLFW_TRUE 1 + /*! @brief Zero. + * + * This is only semantic sugar for the number 0. You can instead use `0` or + * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is + * equal to zero. + * + * @ingroup init + */ +#define GLFW_FALSE 0 + + /*! @name Key and button actions + * @{ */ + /*! @brief The key or mouse button was released. + * + * The key or mouse button was released. + * + * @ingroup input + */ +#define GLFW_RELEASE 0 + /*! @brief The key or mouse button was pressed. + * + * The key or mouse button was pressed. + * + * @ingroup input + */ +#define GLFW_PRESS 1 + /*! @brief The key was held down until it repeated. + * + * The key was held down until it repeated. + * + * @ingroup input + */ +#define GLFW_REPEAT 2 + /*! @} */ + + /*! @defgroup hat_state Joystick hat states + * @brief Joystick hat states. + * + * See [joystick hat input](@ref joystick_hat) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_HAT_CENTERED 0 +#define GLFW_HAT_UP 1 +#define GLFW_HAT_RIGHT 2 +#define GLFW_HAT_DOWN 4 +#define GLFW_HAT_LEFT 8 +#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP) +#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) +#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP) +#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN) + /*! @} */ + + /*! @defgroup keys Keyboard keys + * @brief Keyboard key IDs. + * + * See [key input](@ref input_key) for how these are used. + * + * These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60), + * but re-arranged to map to 7-bit ASCII for printable keys (function keys are + * put in the 256+ range). + * + * The naming of the key codes follow these rules: + * - The US keyboard layout is used + * - Names of printable alphanumeric characters are used (e.g. "A", "R", + * "3", etc.) + * - For non-alphanumeric characters, Unicode:ish names are used (e.g. + * "COMMA", "LEFT_SQUARE_BRACKET", etc.). Note that some names do not + * correspond to the Unicode standard (usually for brevity) + * - Keys that lack a clear US mapping are named "WORLD_x" + * - For non-printable keys, custom names are used (e.g. "F4", + * "BACKSPACE", etc.) + * + * @ingroup input + * @{ + */ + + /* The unknown key */ +#define GLFW_KEY_UNKNOWN -1 + +/* Printable keys */ +#define GLFW_KEY_SPACE 32 +#define GLFW_KEY_APOSTROPHE 39 /* ' */ +#define GLFW_KEY_COMMA 44 /* , */ +#define GLFW_KEY_MINUS 45 /* - */ +#define GLFW_KEY_PERIOD 46 /* . */ +#define GLFW_KEY_SLASH 47 /* / */ +#define GLFW_KEY_0 48 +#define GLFW_KEY_1 49 +#define GLFW_KEY_2 50 +#define GLFW_KEY_3 51 +#define GLFW_KEY_4 52 +#define GLFW_KEY_5 53 +#define GLFW_KEY_6 54 +#define GLFW_KEY_7 55 +#define GLFW_KEY_8 56 +#define GLFW_KEY_9 57 +#define GLFW_KEY_SEMICOLON 59 /* ; */ +#define GLFW_KEY_EQUAL 61 /* = */ +#define GLFW_KEY_A 65 +#define GLFW_KEY_B 66 +#define GLFW_KEY_C 67 +#define GLFW_KEY_D 68 +#define GLFW_KEY_E 69 +#define GLFW_KEY_F 70 +#define GLFW_KEY_G 71 +#define GLFW_KEY_H 72 +#define GLFW_KEY_I 73 +#define GLFW_KEY_J 74 +#define GLFW_KEY_K 75 +#define GLFW_KEY_L 76 +#define GLFW_KEY_M 77 +#define GLFW_KEY_N 78 +#define GLFW_KEY_O 79 +#define GLFW_KEY_P 80 +#define GLFW_KEY_Q 81 +#define GLFW_KEY_R 82 +#define GLFW_KEY_S 83 +#define GLFW_KEY_T 84 +#define GLFW_KEY_U 85 +#define GLFW_KEY_V 86 +#define GLFW_KEY_W 87 +#define GLFW_KEY_X 88 +#define GLFW_KEY_Y 89 +#define GLFW_KEY_Z 90 +#define GLFW_KEY_LEFT_BRACKET 91 /* [ */ +#define GLFW_KEY_BACKSLASH 92 /* \ */ +#define GLFW_KEY_RIGHT_BRACKET 93 /* ] */ +#define GLFW_KEY_GRAVE_ACCENT 96 /* ` */ +#define GLFW_KEY_WORLD_1 161 /* non-US #1 */ +#define GLFW_KEY_WORLD_2 162 /* non-US #2 */ + +/* Function keys */ +#define GLFW_KEY_ESCAPE 256 +#define GLFW_KEY_ENTER 257 +#define GLFW_KEY_TAB 258 +#define GLFW_KEY_BACKSPACE 259 +#define GLFW_KEY_INSERT 260 +#define GLFW_KEY_DELETE 261 +#define GLFW_KEY_RIGHT 262 +#define GLFW_KEY_LEFT 263 +#define GLFW_KEY_DOWN 264 +#define GLFW_KEY_UP 265 +#define GLFW_KEY_PAGE_UP 266 +#define GLFW_KEY_PAGE_DOWN 267 +#define GLFW_KEY_HOME 268 +#define GLFW_KEY_END 269 +#define GLFW_KEY_CAPS_LOCK 280 +#define GLFW_KEY_SCROLL_LOCK 281 +#define GLFW_KEY_NUM_LOCK 282 +#define GLFW_KEY_PRINT_SCREEN 283 +#define GLFW_KEY_PAUSE 284 +#define GLFW_KEY_F1 290 +#define GLFW_KEY_F2 291 +#define GLFW_KEY_F3 292 +#define GLFW_KEY_F4 293 +#define GLFW_KEY_F5 294 +#define GLFW_KEY_F6 295 +#define GLFW_KEY_F7 296 +#define GLFW_KEY_F8 297 +#define GLFW_KEY_F9 298 +#define GLFW_KEY_F10 299 +#define GLFW_KEY_F11 300 +#define GLFW_KEY_F12 301 +#define GLFW_KEY_F13 302 +#define GLFW_KEY_F14 303 +#define GLFW_KEY_F15 304 +#define GLFW_KEY_F16 305 +#define GLFW_KEY_F17 306 +#define GLFW_KEY_F18 307 +#define GLFW_KEY_F19 308 +#define GLFW_KEY_F20 309 +#define GLFW_KEY_F21 310 +#define GLFW_KEY_F22 311 +#define GLFW_KEY_F23 312 +#define GLFW_KEY_F24 313 +#define GLFW_KEY_F25 314 +#define GLFW_KEY_KP_0 320 +#define GLFW_KEY_KP_1 321 +#define GLFW_KEY_KP_2 322 +#define GLFW_KEY_KP_3 323 +#define GLFW_KEY_KP_4 324 +#define GLFW_KEY_KP_5 325 +#define GLFW_KEY_KP_6 326 +#define GLFW_KEY_KP_7 327 +#define GLFW_KEY_KP_8 328 +#define GLFW_KEY_KP_9 329 +#define GLFW_KEY_KP_DECIMAL 330 +#define GLFW_KEY_KP_DIVIDE 331 +#define GLFW_KEY_KP_MULTIPLY 332 +#define GLFW_KEY_KP_SUBTRACT 333 +#define GLFW_KEY_KP_ADD 334 +#define GLFW_KEY_KP_ENTER 335 +#define GLFW_KEY_KP_EQUAL 336 +#define GLFW_KEY_LEFT_SHIFT 340 +#define GLFW_KEY_LEFT_CONTROL 341 +#define GLFW_KEY_LEFT_ALT 342 +#define GLFW_KEY_LEFT_SUPER 343 +#define GLFW_KEY_RIGHT_SHIFT 344 +#define GLFW_KEY_RIGHT_CONTROL 345 +#define GLFW_KEY_RIGHT_ALT 346 +#define GLFW_KEY_RIGHT_SUPER 347 +#define GLFW_KEY_MENU 348 + +#define GLFW_KEY_LAST GLFW_KEY_MENU + +/*! @} */ + +/*! @defgroup mods Modifier key flags + * @brief Modifier key flags. + * + * See [key input](@ref input_key) for how these are used. + * + * @ingroup input + * @{ */ + + /*! @brief If this bit is set one or more Shift keys were held down. + * + * If this bit is set one or more Shift keys were held down. + */ +#define GLFW_MOD_SHIFT 0x0001 + /*! @brief If this bit is set one or more Control keys were held down. + * + * If this bit is set one or more Control keys were held down. + */ +#define GLFW_MOD_CONTROL 0x0002 + /*! @brief If this bit is set one or more Alt keys were held down. + * + * If this bit is set one or more Alt keys were held down. + */ +#define GLFW_MOD_ALT 0x0004 + /*! @brief If this bit is set one or more Super keys were held down. + * + * If this bit is set one or more Super keys were held down. + */ +#define GLFW_MOD_SUPER 0x0008 + /*! @brief If this bit is set the Caps Lock key is enabled. + * + * If this bit is set the Caps Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_CAPS_LOCK 0x0010 + /*! @brief If this bit is set the Num Lock key is enabled. + * + * If this bit is set the Num Lock key is enabled and the @ref + * GLFW_LOCK_KEY_MODS input mode is set. + */ +#define GLFW_MOD_NUM_LOCK 0x0020 + + /*! @} */ + + /*! @defgroup buttons Mouse buttons + * @brief Mouse button IDs. + * + * See [mouse button input](@ref input_mouse_button) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_MOUSE_BUTTON_1 0 +#define GLFW_MOUSE_BUTTON_2 1 +#define GLFW_MOUSE_BUTTON_3 2 +#define GLFW_MOUSE_BUTTON_4 3 +#define GLFW_MOUSE_BUTTON_5 4 +#define GLFW_MOUSE_BUTTON_6 5 +#define GLFW_MOUSE_BUTTON_7 6 +#define GLFW_MOUSE_BUTTON_8 7 +#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8 +#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1 +#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2 +#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3 + /*! @} */ + + /*! @defgroup joysticks Joysticks + * @brief Joystick IDs. + * + * See [joystick input](@ref joystick) for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_JOYSTICK_1 0 +#define GLFW_JOYSTICK_2 1 +#define GLFW_JOYSTICK_3 2 +#define GLFW_JOYSTICK_4 3 +#define GLFW_JOYSTICK_5 4 +#define GLFW_JOYSTICK_6 5 +#define GLFW_JOYSTICK_7 6 +#define GLFW_JOYSTICK_8 7 +#define GLFW_JOYSTICK_9 8 +#define GLFW_JOYSTICK_10 9 +#define GLFW_JOYSTICK_11 10 +#define GLFW_JOYSTICK_12 11 +#define GLFW_JOYSTICK_13 12 +#define GLFW_JOYSTICK_14 13 +#define GLFW_JOYSTICK_15 14 +#define GLFW_JOYSTICK_16 15 +#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16 + /*! @} */ + + /*! @defgroup gamepad_buttons Gamepad buttons + * @brief Gamepad buttons. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_BUTTON_A 0 +#define GLFW_GAMEPAD_BUTTON_B 1 +#define GLFW_GAMEPAD_BUTTON_X 2 +#define GLFW_GAMEPAD_BUTTON_Y 3 +#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4 +#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5 +#define GLFW_GAMEPAD_BUTTON_BACK 6 +#define GLFW_GAMEPAD_BUTTON_START 7 +#define GLFW_GAMEPAD_BUTTON_GUIDE 8 +#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9 +#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10 +#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11 +#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12 +#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13 +#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14 +#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT + +#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A +#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B +#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X +#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y + /*! @} */ + + /*! @defgroup gamepad_axes Gamepad axes + * @brief Gamepad axes. + * + * See @ref gamepad for how these are used. + * + * @ingroup input + * @{ */ +#define GLFW_GAMEPAD_AXIS_LEFT_X 0 +#define GLFW_GAMEPAD_AXIS_LEFT_Y 1 +#define GLFW_GAMEPAD_AXIS_RIGHT_X 2 +#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3 +#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4 +#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5 +#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER + /*! @} */ + + /*! @defgroup errors Error codes + * @brief Error codes. + * + * See [error handling](@ref error_handling) for how these are used. + * + * @ingroup init + * @{ */ + /*! @brief No error has occurred. + * + * No error has occurred. + * + * @analysis Yay. + */ +#define GLFW_NO_ERROR 0 + /*! @brief GLFW has not been initialized. + * + * This occurs if a GLFW function was called that must not be called unless the + * library is [initialized](@ref intro_init). + * + * @analysis Application programmer error. Initialize GLFW before calling any + * function that requires initialization. + */ +#define GLFW_NOT_INITIALIZED 0x00010001 + /*! @brief No context is current for this thread. + * + * This occurs if a GLFW function was called that needs and operates on the + * current OpenGL or OpenGL ES context but no context is current on the calling + * thread. One such function is @ref glfwSwapInterval. + * + * @analysis Application programmer error. Ensure a context is current before + * calling functions that require a current context. + */ +#define GLFW_NO_CURRENT_CONTEXT 0x00010002 + /*! @brief One of the arguments to the function was an invalid enum value. + * + * One of the arguments to the function was an invalid enum value, for example + * requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_ENUM 0x00010003 + /*! @brief One of the arguments to the function was an invalid value. + * + * One of the arguments to the function was an invalid value, for example + * requesting a non-existent OpenGL or OpenGL ES version like 2.7. + * + * Requesting a valid but unavailable OpenGL or OpenGL ES version will instead + * result in a @ref GLFW_VERSION_UNAVAILABLE error. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_INVALID_VALUE 0x00010004 + /*! @brief A memory allocation failed. + * + * A memory allocation failed. + * + * @analysis A bug in GLFW or the underlying operating system. Report the bug + * to our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_OUT_OF_MEMORY 0x00010005 + /*! @brief GLFW could not find support for the requested API on the system. + * + * GLFW could not find support for the requested API on the system. + * + * @analysis The installed graphics driver does not support the requested + * API, or does not support it via the chosen context creation API. + * Below are a few examples. + * + * @par + * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only + * supports OpenGL ES via EGL, while Nvidia and Intel only support it via + * a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa + * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary + * driver. Older graphics drivers do not support Vulkan. + */ +#define GLFW_API_UNAVAILABLE 0x00010006 + /*! @brief The requested OpenGL or OpenGL ES version is not available. + * + * The requested OpenGL or OpenGL ES version (including any requested context + * or framebuffer hints) is not available on this machine. + * + * @analysis The machine does not support your requirements. If your + * application is sufficiently flexible, downgrade your requirements and try + * again. Otherwise, inform the user that their machine does not match your + * requirements. + * + * @par + * Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0 + * comes out before the 4.x series gets that far, also fail with this error and + * not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions + * will exist. + */ +#define GLFW_VERSION_UNAVAILABLE 0x00010007 + /*! @brief A platform-specific error occurred that does not match any of the + * more specific categories. + * + * A platform-specific error occurred that does not match any of the more + * specific categories. + * + * @analysis A bug or configuration error in GLFW, the underlying operating + * system or its drivers, or a lack of required resources. Report the issue to + * our [issue tracker](https://github.com/glfw/glfw/issues). + */ +#define GLFW_PLATFORM_ERROR 0x00010008 + /*! @brief The requested format is not supported or available. + * + * If emitted during window creation, the requested pixel format is not + * supported. + * + * If emitted when querying the clipboard, the contents of the clipboard could + * not be converted to the requested format. + * + * @analysis If emitted during window creation, one or more + * [hard constraints](@ref window_hints_hard) did not match any of the + * available pixel formats. If your application is sufficiently flexible, + * downgrade your requirements and try again. Otherwise, inform the user that + * their machine does not match your requirements. + * + * @par + * If emitted when querying the clipboard, ignore the error or report it to + * the user, as appropriate. + */ +#define GLFW_FORMAT_UNAVAILABLE 0x00010009 + /*! @brief The specified window does not have an OpenGL or OpenGL ES context. + * + * A window that does not have an OpenGL or OpenGL ES context was passed to + * a function that requires it to have one. + * + * @analysis Application programmer error. Fix the offending call. + */ +#define GLFW_NO_WINDOW_CONTEXT 0x0001000A + /*! @brief The specified cursor shape is not available. + * + * The specified standard cursor shape is not available, either because the + * current platform cursor theme does not provide it or because it is not + * available on the platform. + * + * @analysis Platform or system settings limitation. Pick another + * [standard cursor shape](@ref shapes) or create a + * [custom cursor](@ref cursor_custom). + */ +#define GLFW_CURSOR_UNAVAILABLE 0x0001000B + /*! @brief The requested feature is not provided by the platform. + * + * The requested feature is not provided by the platform, so GLFW is unable to + * implement it. The documentation for each function notes if it could emit + * this error. + * + * @analysis Platform or platform version limitation. The error can be ignored + * unless the feature is critical to the application. + * + * @par + * A function call that emits this error has no effect other than the error and + * updating any existing out parameters. + */ +#define GLFW_FEATURE_UNAVAILABLE 0x0001000C + /*! @brief The requested feature is not implemented for the platform. + * + * The requested feature has not yet been implemented in GLFW for this platform. + * + * @analysis An incomplete implementation of GLFW for this platform, hopefully + * fixed in a future release. The error can be ignored unless the feature is + * critical to the application. + * + * @par + * A function call that emits this error has no effect other than the error and + * updating any existing out parameters. + */ +#define GLFW_FEATURE_UNIMPLEMENTED 0x0001000D + /*! @brief Platform unavailable or no matching platform was found. + * + * If emitted during initialization, no matching platform was found. If @ref + * GLFW_PLATFORM is set to `GLFW_ANY_PLATFORM`, GLFW could not detect any of the + * platforms supported by this library binary, except for the Null platform. If set to + * a specific platform, it is either not supported by this library binary or GLFW was not + * able to detect it. + * + * If emitted by a native access function, GLFW was initialized for a different platform + * than the function is for. + * + * @analysis Failure to detect any platform usually only happens on non-macOS Unix + * systems, either when no window system is running or the program was run from + * a terminal that does not have the necessary environment variables. Fall back to + * a different platform if possible or notify the user that no usable platform was + * detected. + * + * Failure to detect a specific platform may have the same cause as above or be because + * support for that platform was not compiled in. Call @ref glfwPlatformSupported to + * check whether a specific platform is supported by a library binary. + */ +#define GLFW_PLATFORM_UNAVAILABLE 0x0001000E + /*! @} */ + + /*! @addtogroup window + * @{ */ + /*! @brief Input focus window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUSED_hint) or + * [window attribute](@ref GLFW_FOCUSED_attrib). + */ +#define GLFW_FOCUSED 0x00020001 + /*! @brief Window iconification window attribute + * + * Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib). + */ +#define GLFW_ICONIFIED 0x00020002 + /*! @brief Window resize-ability window hint and attribute + * + * Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and + * [window attribute](@ref GLFW_RESIZABLE_attrib). + */ +#define GLFW_RESIZABLE 0x00020003 + /*! @brief Window visibility window hint and attribute + * + * Window visibility [window hint](@ref GLFW_VISIBLE_hint) and + * [window attribute](@ref GLFW_VISIBLE_attrib). + */ +#define GLFW_VISIBLE 0x00020004 + /*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_DECORATED_hint) and + * [window attribute](@ref GLFW_DECORATED_attrib). + */ +#define GLFW_DECORATED 0x00020005 + /*! @brief Window auto-iconification window hint and attribute + * + * Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and + * [window attribute](@ref GLFW_AUTO_ICONIFY_attrib). + */ +#define GLFW_AUTO_ICONIFY 0x00020006 + /*! @brief Window decoration window hint and attribute + * + * Window decoration [window hint](@ref GLFW_FLOATING_hint) and + * [window attribute](@ref GLFW_FLOATING_attrib). + */ +#define GLFW_FLOATING 0x00020007 + /*! @brief Window maximization window hint and attribute + * + * Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and + * [window attribute](@ref GLFW_MAXIMIZED_attrib). + */ +#define GLFW_MAXIMIZED 0x00020008 + /*! @brief Cursor centering window hint + * + * Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint). + */ +#define GLFW_CENTER_CURSOR 0x00020009 + /*! @brief Window framebuffer transparency hint and attribute + * + * Window framebuffer transparency + * [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and + * [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib). + */ +#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A + /*! @brief Mouse cursor hover window attribute. + * + * Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib). + */ +#define GLFW_HOVERED 0x0002000B + /*! @brief Input focus on calling show window hint and attribute + * + * Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or + * [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib). + */ +#define GLFW_FOCUS_ON_SHOW 0x0002000C + + /*! @brief Mouse input transparency window hint and attribute + * + * Mouse input transparency [window hint](@ref GLFW_MOUSE_PASSTHROUGH_hint) or + * [window attribute](@ref GLFW_MOUSE_PASSTHROUGH_attrib). + */ +#define GLFW_MOUSE_PASSTHROUGH 0x0002000D + + /*! @brief Initial position x-coordinate window hint. + * + * Initial position x-coordinate [window hint](@ref GLFW_POSITION_X). + */ +#define GLFW_POSITION_X 0x0002000E + + /*! @brief Initial position y-coordinate window hint. + * + * Initial position y-coordinate [window hint](@ref GLFW_POSITION_Y). + */ +#define GLFW_POSITION_Y 0x0002000F + + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_RED_BITS). + */ +#define GLFW_RED_BITS 0x00021001 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS). + */ +#define GLFW_GREEN_BITS 0x00021002 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS). + */ +#define GLFW_BLUE_BITS 0x00021003 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS). + */ +#define GLFW_ALPHA_BITS 0x00021004 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS). + */ +#define GLFW_DEPTH_BITS 0x00021005 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS). + */ +#define GLFW_STENCIL_BITS 0x00021006 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS). + */ +#define GLFW_ACCUM_RED_BITS 0x00021007 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS). + */ +#define GLFW_ACCUM_GREEN_BITS 0x00021008 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS). + */ +#define GLFW_ACCUM_BLUE_BITS 0x00021009 + /*! @brief Framebuffer bit depth hint. + * + * Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS). + */ +#define GLFW_ACCUM_ALPHA_BITS 0x0002100A + /*! @brief Framebuffer auxiliary buffer hint. + * + * Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS). + */ +#define GLFW_AUX_BUFFERS 0x0002100B + /*! @brief OpenGL stereoscopic rendering hint. + * + * OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO). + */ +#define GLFW_STEREO 0x0002100C + /*! @brief Framebuffer MSAA samples hint. + * + * Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES). + */ +#define GLFW_SAMPLES 0x0002100D + /*! @brief Framebuffer sRGB hint. + * + * Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE). + */ +#define GLFW_SRGB_CAPABLE 0x0002100E + /*! @brief Monitor refresh rate hint. + * + * Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE). + */ +#define GLFW_REFRESH_RATE 0x0002100F + /*! @brief Framebuffer double buffering hint and attribute. + * + * Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER_hint) and + * [attribute](@ref GLFW_DOUBLEBUFFER_attrib). + */ +#define GLFW_DOUBLEBUFFER 0x00021010 + + /*! @brief Context client API hint and attribute. + * + * Context client API [hint](@ref GLFW_CLIENT_API_hint) and + * [attribute](@ref GLFW_CLIENT_API_attrib). + */ +#define GLFW_CLIENT_API 0x00022001 + /*! @brief Context client API major version hint and attribute. + * + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 + /*! @brief Context client API minor version hint and attribute. + * + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). + */ +#define GLFW_CONTEXT_VERSION_MINOR 0x00022003 + /*! @brief Context client API revision number attribute. + * + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). + */ +#define GLFW_CONTEXT_REVISION 0x00022004 + /*! @brief Context robustness hint and attribute. + * + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). + */ +#define GLFW_CONTEXT_ROBUSTNESS 0x00022005 + /*! @brief OpenGL forward-compatibility hint and attribute. + * + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). + */ +#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 + /*! @brief Debug mode context hint and attribute. + * + * Debug mode context [hint](@ref GLFW_CONTEXT_DEBUG_hint) and + * [attribute](@ref GLFW_CONTEXT_DEBUG_attrib). + */ +#define GLFW_CONTEXT_DEBUG 0x00022007 + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_OPENGL_DEBUG_CONTEXT GLFW_CONTEXT_DEBUG + /*! @brief OpenGL profile hint and attribute. + * + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). + */ +#define GLFW_OPENGL_PROFILE 0x00022008 + /*! @brief Context flush-on-release hint and attribute. + * + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). + */ +#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 + /*! @brief Context error suppression hint and attribute. + * + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). + */ +#define GLFW_CONTEXT_NO_ERROR 0x0002200A + /*! @brief Context creation API hint and attribute. + * + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). + */ +#define GLFW_CONTEXT_CREATION_API 0x0002200B + /*! @brief Window content area scaling window + * [window hint](@ref GLFW_SCALE_TO_MONITOR). + */ +#define GLFW_SCALE_TO_MONITOR 0x0002200C + /*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). + */ +#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 + /*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). + */ +#define GLFW_COCOA_FRAME_NAME 0x00023002 + /*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). + */ +#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 + /*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_CLASS_NAME 0x00024001 + /*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ +#define GLFW_X11_INSTANCE_NAME 0x00024002 +#define GLFW_WIN32_KEYBOARD_MENU 0x00025001 + /*! @brief Wayland specific + * [window hint](@ref GLFW_WAYLAND_APP_ID_hint). + * + * Allows specification of the Wayland app_id. + */ +#define GLFW_WAYLAND_APP_ID 0x00026001 + /*! @} */ + +#define GLFW_NO_API 0 +#define GLFW_OPENGL_API 0x00030001 +#define GLFW_OPENGL_ES_API 0x00030002 + +#define GLFW_NO_ROBUSTNESS 0 +#define GLFW_NO_RESET_NOTIFICATION 0x00031001 +#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002 + +#define GLFW_OPENGL_ANY_PROFILE 0 +#define GLFW_OPENGL_CORE_PROFILE 0x00032001 +#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002 + +#define GLFW_CURSOR 0x00033001 +#define GLFW_STICKY_KEYS 0x00033002 +#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 +#define GLFW_LOCK_KEY_MODS 0x00033004 +#define GLFW_RAW_MOUSE_MOTION 0x00033005 + +#define GLFW_CURSOR_NORMAL 0x00034001 +#define GLFW_CURSOR_HIDDEN 0x00034002 +#define GLFW_CURSOR_DISABLED 0x00034003 +#define GLFW_CURSOR_CAPTURED 0x00034004 + +#define GLFW_ANY_RELEASE_BEHAVIOR 0 +#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 +#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 + +#define GLFW_NATIVE_CONTEXT_API 0x00036001 +#define GLFW_EGL_CONTEXT_API 0x00036002 +#define GLFW_OSMESA_CONTEXT_API 0x00036003 + +#define GLFW_ANGLE_PLATFORM_TYPE_NONE 0x00037001 +#define GLFW_ANGLE_PLATFORM_TYPE_OPENGL 0x00037002 +#define GLFW_ANGLE_PLATFORM_TYPE_OPENGLES 0x00037003 +#define GLFW_ANGLE_PLATFORM_TYPE_D3D9 0x00037004 +#define GLFW_ANGLE_PLATFORM_TYPE_D3D11 0x00037005 +#define GLFW_ANGLE_PLATFORM_TYPE_VULKAN 0x00037007 +#define GLFW_ANGLE_PLATFORM_TYPE_METAL 0x00037008 + +#define GLFW_WAYLAND_PREFER_LIBDECOR 0x00038001 +#define GLFW_WAYLAND_DISABLE_LIBDECOR 0x00038002 + +#define GLFW_ANY_POSITION 0x80000000 + +/*! @defgroup shapes Standard cursor shapes + * @brief Standard system cursor shapes. + * + * These are the [standard cursor shapes](@ref cursor_standard) that can be + * requested from the platform (window system). + * + * @ingroup input + * @{ */ + + /*! @brief The regular arrow cursor shape. + * + * The regular arrow cursor shape. + */ +#define GLFW_ARROW_CURSOR 0x00036001 + /*! @brief The text input I-beam cursor shape. + * + * The text input I-beam cursor shape. + */ +#define GLFW_IBEAM_CURSOR 0x00036002 + /*! @brief The crosshair cursor shape. + * + * The crosshair cursor shape. + */ +#define GLFW_CROSSHAIR_CURSOR 0x00036003 + /*! @brief The pointing hand cursor shape. + * + * The pointing hand cursor shape. + */ +#define GLFW_POINTING_HAND_CURSOR 0x00036004 + /*! @brief The horizontal resize/move arrow shape. + * + * The horizontal resize/move arrow shape. This is usually a horizontal + * double-headed arrow. + */ +#define GLFW_RESIZE_EW_CURSOR 0x00036005 + /*! @brief The vertical resize/move arrow shape. + * + * The vertical resize/move shape. This is usually a vertical double-headed + * arrow. + */ +#define GLFW_RESIZE_NS_CURSOR 0x00036006 + /*! @brief The top-left to bottom-right diagonal resize/move arrow shape. + * + * The top-left to bottom-right diagonal resize/move shape. This is usually + * a diagonal double-headed arrow. + * + * @note @macos This shape is provided by a private system API and may fail + * with @ref GLFW_CURSOR_UNAVAILABLE in the future. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_RESIZE_NWSE_CURSOR 0x00036007 + /*! @brief The top-right to bottom-left diagonal resize/move arrow shape. + * + * The top-right to bottom-left diagonal resize/move shape. This is usually + * a diagonal double-headed arrow. + * + * @note @macos This shape is provided by a private system API and may fail + * with @ref GLFW_CURSOR_UNAVAILABLE in the future. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_RESIZE_NESW_CURSOR 0x00036008 + /*! @brief The omni-directional resize/move cursor shape. + * + * The omni-directional resize cursor/move shape. This is usually either + * a combined horizontal and vertical double-headed arrow or a grabbing hand. + */ +#define GLFW_RESIZE_ALL_CURSOR 0x00036009 + /*! @brief The operation-not-allowed shape. + * + * The operation-not-allowed shape. This is usually a circle with a diagonal + * line through it. + * + * @note @x11 This shape is provided by a newer standard not supported by all + * cursor themes. + * + * @note @wayland This shape is provided by a newer standard not supported by + * all cursor themes. + */ +#define GLFW_NOT_ALLOWED_CURSOR 0x0003600A + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_HRESIZE_CURSOR GLFW_RESIZE_EW_CURSOR + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_VRESIZE_CURSOR GLFW_RESIZE_NS_CURSOR + /*! @brief Legacy name for compatibility. + * + * This is an alias for compatibility with earlier versions. + */ +#define GLFW_HAND_CURSOR GLFW_POINTING_HAND_CURSOR + /*! @} */ + +#define GLFW_CONNECTED 0x00040001 +#define GLFW_DISCONNECTED 0x00040002 + +/*! @addtogroup init + * @{ */ + /*! @brief Joystick hat buttons init hint. + * + * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). + */ +#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 + /*! @brief ANGLE rendering backend init hint. + * + * ANGLE rendering backend [init hint](@ref GLFW_ANGLE_PLATFORM_TYPE_hint). + */ +#define GLFW_ANGLE_PLATFORM_TYPE 0x00050002 + /*! @brief Platform selection init hint. + * + * Platform selection [init hint](@ref GLFW_PLATFORM). + */ +#define GLFW_PLATFORM 0x00050003 + /*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). + */ +#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 + /*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). + */ +#define GLFW_COCOA_MENUBAR 0x00051002 + /*! @brief X11 specific init hint. + * + * X11 specific [init hint](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint). + */ +#define GLFW_X11_XCB_VULKAN_SURFACE 0x00052001 + /*! @brief Wayland specific init hint. + * + * Wayland specific [init hint](@ref GLFW_WAYLAND_LIBDECOR_hint). + */ +#define GLFW_WAYLAND_LIBDECOR 0x00053001 + /*! @} */ + + /*! @addtogroup init + * @{ */ + /*! @brief Hint value that enables automatic platform selection. + * + * Hint value for @ref GLFW_PLATFORM that enables automatic platform selection. + */ +#define GLFW_ANY_PLATFORM 0x00060000 +#define GLFW_PLATFORM_WIN32 0x00060001 +#define GLFW_PLATFORM_COCOA 0x00060002 +#define GLFW_PLATFORM_WAYLAND 0x00060003 +#define GLFW_PLATFORM_X11 0x00060004 +#define GLFW_PLATFORM_NULL 0x00060005 + /*! @} */ + +#define GLFW_DONT_CARE -1 + + +/************************************************************************* + * GLFW API types + *************************************************************************/ + + /*! @brief Client API function pointer type. + * + * Generic function pointer used for returning client API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 3.0. + * + * @ingroup context + */ + typedef void (*GLFWglproc)(void); + + /*! @brief Vulkan API function pointer type. + * + * Generic function pointer used for returning Vulkan API function pointers + * without forcing a cast from a regular pointer. + * + * @sa @ref vulkan_proc + * @sa @ref glfwGetInstanceProcAddress + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + typedef void (*GLFWvkproc)(void); + + /*! @brief Opaque monitor object. + * + * Opaque monitor object. + * + * @see @ref monitor_object + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + typedef struct GLFWmonitor GLFWmonitor; + + /*! @brief Opaque window object. + * + * Opaque window object. + * + * @see @ref window_object + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef struct GLFWwindow GLFWwindow; + + /*! @brief Opaque cursor object. + * + * Opaque cursor object. + * + * @see @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ + typedef struct GLFWcursor GLFWcursor; + + /*! @brief The function pointer type for memory allocation callbacks. + * + * This is the function pointer type for memory allocation callbacks. A memory + * allocation callback function has the following signature: + * @code + * void* function_name(size_t size, void* user) + * @endcode + * + * This function must return either a memory block at least `size` bytes long, + * or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation + * failures gracefully yet. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * Any memory allocated by this function will be deallocated during library + * termination or earlier. + * + * The size will always be greater than zero. Allocations of size zero are filtered out + * before reaching the custom allocator. + * + * @param[in] size The minimum size, in bytes, of the memory block. + * @param[in] user The user-defined pointer from the allocator. + * @return The address of the newly allocated memory block, or `NULL` if an + * error occurred. + * + * @pointer_lifetime The returned memory block must be valid at least until it + * is deallocated. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef void* (*GLFWallocatefun)(size_t size, void* user); + + /*! @brief The function pointer type for memory reallocation callbacks. + * + * This is the function pointer type for memory reallocation callbacks. + * A memory reallocation callback function has the following signature: + * @code + * void* function_name(void* block, size_t size, void* user) + * @endcode + * + * This function must return a memory block at least `size` bytes long, or + * `NULL` if allocation failed. Note that not all parts of GLFW handle allocation + * failures gracefully yet. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * Any memory allocated by this function will be deallocated during library + * termination or earlier. + * + * The block address will never be `NULL` and the size will always be greater than zero. + * Reallocations of a block to size zero are converted into deallocations. Reallocations + * of `NULL` to a non-zero size are converted into regular allocations. + * + * @param[in] block The address of the memory block to reallocate. + * @param[in] size The new minimum size, in bytes, of the memory block. + * @param[in] user The user-defined pointer from the allocator. + * @return The address of the newly allocated or resized memory block, or + * `NULL` if an error occurred. + * + * @pointer_lifetime The returned memory block must be valid at least until it + * is deallocated. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef void* (*GLFWreallocatefun)(void* block, size_t size, void* user); + + /*! @brief The function pointer type for memory deallocation callbacks. + * + * This is the function pointer type for memory deallocation callbacks. + * A memory deallocation callback function has the following signature: + * @code + * void function_name(void* block, void* user) + * @endcode + * + * This function may deallocate the specified memory block. This memory block + * will have been allocated with the same allocator. + * + * This function may be called during @ref glfwInit but before the library is + * flagged as initialized, as well as during @ref glfwTerminate after the + * library is no longer flagged as initialized. + * + * The block address will never be `NULL`. Deallocations of `NULL` are filtered out + * before reaching the custom allocator. + * + * @param[in] block The address of the memory block to deallocate. + * @param[in] user The user-defined pointer from the allocator. + * + * @pointer_lifetime The specified memory block will not be accessed by GLFW + * after this function is called. + * + * @reentrancy This function should not call any GLFW function. + * + * @thread_safety This function may be called from any thread that calls GLFW functions. + * + * @sa @ref init_allocator + * @sa @ref GLFWallocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef void (*GLFWdeallocatefun)(void* block, void* user); + + /*! @brief The function pointer type for error callbacks. + * + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. + * @param[in] description A UTF-8 encoded string describing the error. + * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.0. + * + * @ingroup init + */ + typedef void (*GLFWerrorfun)(int error_code, const char* description); + + /*! @brief The function pointer type for window position callbacks. + * + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * + * @param[in] window The window that was moved. + * @param[in] xpos The new x-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * @param[in] ypos The new y-coordinate, in screen coordinates, of the + * upper-left corner of the content area of the window. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPosCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos); + + /*! @brief The function pointer type for window size callbacks. + * + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window that was resized. + * @param[in] width The new width, in screen coordinates, of the window. + * @param[in] height The new height, in screen coordinates, of the window. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSizeCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + typedef void (*GLFWwindowsizefun)(GLFWwindow* window, int width, int height); + + /*! @brief The function pointer type for window close callbacks. + * + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode + * + * @param[in] window The window that the user attempted to close. + * + * @sa @ref window_close + * @sa @ref glfwSetWindowCloseCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + typedef void (*GLFWwindowclosefun)(GLFWwindow* window); + + /*! @brief The function pointer type for window content refresh callbacks. + * + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode + * + * @param[in] window The window whose content needs to be refreshed. + * + * @sa @ref window_refresh + * @sa @ref glfwSetWindowRefreshCallback + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + typedef void (*GLFWwindowrefreshfun)(GLFWwindow* window); + + /*! @brief The function pointer type for window focus callbacks. + * + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * + * @param[in] window The window that gained or lost input focus. + * @param[in] focused `GLFW_TRUE` if the window was given input focus, or + * `GLFW_FALSE` if it lost it. + * + * @sa @ref window_focus + * @sa @ref glfwSetWindowFocusCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWwindowfocusfun)(GLFWwindow* window, int focused); + + /*! @brief The function pointer type for window iconify callbacks. + * + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * + * @param[in] window The window that was iconified or restored. + * @param[in] iconified `GLFW_TRUE` if the window was iconified, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_iconify + * @sa @ref glfwSetWindowIconifyCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWwindowiconifyfun)(GLFWwindow* window, int iconified); + + /*! @brief The function pointer type for window maximize callbacks. + * + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * + * @param[in] window The window that was maximized or restored. + * @param[in] maximized `GLFW_TRUE` if the window was maximized, or + * `GLFW_FALSE` if it was restored. + * + * @sa @ref window_maximize + * @sa glfwSetWindowMaximizeCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ + typedef void (*GLFWwindowmaximizefun)(GLFWwindow* window, int maximized); + + /*! @brief The function pointer type for framebuffer size callbacks. + * + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * + * @param[in] window The window whose framebuffer was resized. + * @param[in] width The new width, in pixels, of the framebuffer. + * @param[in] height The new height, in pixels, of the framebuffer. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + typedef void (*GLFWframebuffersizefun)(GLFWwindow* window, int width, int height); + + /*! @brief The function pointer type for window content scale callbacks. + * + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * + * @param[in] window The window whose content scale changed. + * @param[in] xscale The new x-axis content scale of the window. + * @param[in] yscale The new y-axis content scale of the window. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * + * @since Added in version 3.3. + * + * @ingroup window + */ + typedef void (*GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale); + + /*! @brief The function pointer type for mouse button callbacks. + * + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] button The [mouse button](@ref buttons) that was pressed or + * released. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_mouse_button + * @sa @ref glfwSetMouseButtonCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle and modifier mask parameters. + * + * @ingroup input + */ + typedef void (*GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods); + + /*! @brief The function pointer type for cursor position callbacks. + * + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xpos The new cursor x-coordinate, relative to the left edge of + * the content area. + * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the + * content area. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPosCallback + * + * @since Added in version 3.0. Replaces `GLFWmouseposfun`. + * + * @ingroup input + */ + typedef void (*GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos); + + /*! @brief The function pointer type for cursor enter/leave callbacks. + * + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content + * area, or `GLFW_FALSE` if it left it. + * + * @sa @ref cursor_enter + * @sa @ref glfwSetCursorEnterCallback + * + * @since Added in version 3.0. + * + * @ingroup input + */ + typedef void (*GLFWcursorenterfun)(GLFWwindow* window, int entered); + + /*! @brief The function pointer type for scroll callbacks. + * + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] xoffset The scroll offset along the x-axis. + * @param[in] yoffset The scroll offset along the y-axis. + * + * @sa @ref scrolling + * @sa @ref glfwSetScrollCallback + * + * @since Added in version 3.0. Replaces `GLFWmousewheelfun`. + * + * @ingroup input + */ + typedef void (*GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset); + + /*! @brief The function pointer type for keyboard key callbacks. + * + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] key The [keyboard key](@ref keys) that was pressed or released. + * @param[in] scancode The platform-specific scancode of the key. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_key + * @sa @ref glfwSetKeyCallback + * + * @since Added in version 1.0. + * @glfw3 Added window handle, scancode and modifier mask parameters. + * + * @ingroup input + */ + typedef void (*GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods); + + /*! @brief The function pointer type for Unicode character callbacks. + * + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * + * @sa @ref input_char + * @sa @ref glfwSetCharCallback + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ + typedef void (*GLFWcharfun)(GLFWwindow* window, unsigned int codepoint); + + /*! @brief The function pointer type for Unicode character with modifiers + * callbacks. + * + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] codepoint The Unicode code point of the character. + * @param[in] mods Bit field describing which [modifier keys](@ref mods) were + * held down. + * + * @sa @ref input_char + * @sa @ref glfwSetCharModsCallback + * + * @deprecated Scheduled for removal in version 4.0. + * + * @since Added in version 3.1. + * + * @ingroup input + */ + typedef void (*GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods); + + /*! @brief The function pointer type for path drop callbacks. + * + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * + * @param[in] window The window that received the event. + * @param[in] path_count The number of dropped paths. + * @param[in] paths The UTF-8 encoded file and/or directory path names. + * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * + * @sa @ref path_drop + * @sa @ref glfwSetDropCallback + * + * @since Added in version 3.1. + * + * @ingroup input + */ + typedef void (*GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]); + + /*! @brief The function pointer type for monitor configuration callbacks. + * + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * + * @param[in] monitor The monitor that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref monitor_event + * @sa @ref glfwSetMonitorCallback + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + typedef void (*GLFWmonitorfun)(GLFWmonitor* monitor, int event); + + /*! @brief The function pointer type for joystick configuration callbacks. + * + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode + * + * @param[in] jid The joystick that was connected or disconnected. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. + * + * @sa @ref joystick_event + * @sa @ref glfwSetJoystickCallback + * + * @since Added in version 3.2. + * + * @ingroup input + */ + typedef void (*GLFWjoystickfun)(int jid, int event); + + /*! @brief Video mode type. + * + * This describes a single video mode. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * @sa @ref glfwGetVideoModes + * + * @since Added in version 1.0. + * @glfw3 Added refresh rate member. + * + * @ingroup monitor + */ + typedef struct GLFWvidmode + { + /*! The width, in screen coordinates, of the video mode. + */ + int width; + /*! The height, in screen coordinates, of the video mode. + */ + int height; + /*! The bit depth of the red channel of the video mode. + */ + int redBits; + /*! The bit depth of the green channel of the video mode. + */ + int greenBits; + /*! The bit depth of the blue channel of the video mode. + */ + int blueBits; + /*! The refresh rate, in Hz, of the video mode. + */ + int refreshRate; + } GLFWvidmode; + + /*! @brief Gamma ramp. + * + * This describes the gamma ramp for a monitor. + * + * @sa @ref monitor_gamma + * @sa @ref glfwGetGammaRamp + * @sa @ref glfwSetGammaRamp + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + typedef struct GLFWgammaramp + { + /*! An array of value describing the response of the red channel. + */ + unsigned short* red; + /*! An array of value describing the response of the green channel. + */ + unsigned short* green; + /*! An array of value describing the response of the blue channel. + */ + unsigned short* blue; + /*! The number of elements in each array. + */ + unsigned int size; + } GLFWgammaramp; + + /*! @brief Image data. + * + * This describes a single 2D image. See the documentation for each related + * function what the expected pixel format is. + * + * @sa @ref cursor_custom + * @sa @ref window_icon + * + * @since Added in version 2.1. + * @glfw3 Removed format and bytes-per-pixel members. + * + * @ingroup window + */ + typedef struct GLFWimage + { + /*! The width, in pixels, of this image. + */ + int width; + /*! The height, in pixels, of this image. + */ + int height; + /*! The pixel data of this image, arranged left-to-right, top-to-bottom. + */ + unsigned char* pixels; + } GLFWimage; + + /*! @brief Gamepad input state + * + * This describes the input state of a gamepad. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ + typedef struct GLFWgamepadstate + { + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + unsigned char buttons[15]; + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + float axes[6]; + } GLFWgamepadstate; + + /*! @brief + * + * @sa @ref init_allocator + * @sa @ref glfwInitAllocator + * + * @since Added in version 3.4. + * + * @ingroup init + */ + typedef struct GLFWallocator + { + GLFWallocatefun allocate; + GLFWreallocatefun reallocate; + GLFWdeallocatefun deallocate; + void* user; + } GLFWallocator; + + + /************************************************************************* + * GLFW API functions + *************************************************************************/ + + /*! @brief Initializes the GLFW library. + * + * This function initializes the GLFW library. Before most GLFW functions can + * be used, GLFW must be initialized, and before an application terminates GLFW + * should be terminated in order to free any resources allocated during or + * after initialization. + * + * If this function fails, it calls @ref glfwTerminate before returning. If it + * succeeds, you should call @ref glfwTerminate before the application exits. + * + * Additional calls to this function after successful initialization but before + * termination will return `GLFW_TRUE` immediately. + * + * The @ref GLFW_PLATFORM init hint controls which platforms are considered during + * initialization. This also depends on which platforms the library was compiled to + * support. + * + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_PLATFORM_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos This function will change the current directory of the + * application to the `Contents/Resources` subdirectory of the application's + * bundle, if present. This can be disabled with the @ref + * GLFW_COCOA_CHDIR_RESOURCES init hint. + * + * @remark @macos This function will create the main menu and dock icon for the + * application. If GLFW finds a `MainMenu.nib` it is loaded and assumed to + * contain a menu bar. Otherwise a minimal menu bar is created manually with + * common commands like Hide, Quit and About. The About entry opens a minimal + * about dialog with information from the application's bundle. The menu bar + * and dock icon can be disabled entirely with the @ref GLFW_COCOA_MENUBAR init + * hint. + * + * @remark @x11 This function will set the `LC_CTYPE` category of the + * application locale according to the current environment if that category is + * still "C". This is because the "C" locale breaks Unicode text input. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInitHint + * @sa @ref glfwInitAllocator + * @sa @ref glfwTerminate + * + * @since Added in version 1.0. + * + * @ingroup init + */ + SSCAPI int glfwInit(void); + + /*! @brief Terminates the GLFW library. + * + * This function destroys all remaining windows and cursors, restores any + * modified gamma ramps and frees any other allocated resources. Once this + * function is called, you must again call @ref glfwInit successfully before + * you will be able to use most GLFW functions. + * + * If GLFW has been successfully initialized, this function should be called + * before the application exits. If initialization fails, there is no need to + * call this function, as it is called by @ref glfwInit before it returns + * failure. + * + * This function has no effect if GLFW is not initialized. + * + * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. + * + * @remark This function may be called before @ref glfwInit. + * + * @warning The contexts of any remaining windows must not be current on any + * other thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref intro_init + * @sa @ref glfwInit + * + * @since Added in version 1.0. + * + * @ingroup init + */ + SSCAPI void glfwTerminate(void); + + /*! @brief Sets the specified init hint to the desired value. + * + * This function sets hints for the next initialization of GLFW. + * + * The values you set hints to are never reset by GLFW, but they only take + * effect during initialization. Once GLFW has been initialized, any values + * you set will be ignored until the library is terminated and initialized + * again. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [init hint](@ref init_hints) to set. + * @param[in] value The new value of the init hint. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref + * GLFW_INVALID_VALUE. + * + * @remarks This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa init_hints + * @sa glfwInit + * + * @since Added in version 3.3. + * + * @ingroup init + */ + SSCAPI void glfwInitHint(int hint, int value); + + /*! @brief Sets the init allocator to the desired value. + * + * To use the default allocator, call this function with a `NULL` argument. + * + * If you specify an allocator struct, every member must be a valid function + * pointer. If any member is `NULL`, this function emits @ref + * GLFW_INVALID_VALUE and the init allocator is unchanged. + * + * @param[in] allocator The allocator to use at the next initialization, or + * `NULL` to use the default one. + * + * @errors Possible errors include @ref GLFW_INVALID_VALUE. + * + * @pointer_lifetime The specified allocator is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref init_allocator + * @sa @ref glfwInit + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI void glfwInitAllocator(const GLFWallocator* allocator); + +#if defined(VK_VERSION_1_0) + + /*! @brief Sets the desired Vulkan `vkGetInstanceProcAddr` function. + * + * This function sets the `vkGetInstanceProcAddr` function that GLFW will use for all + * Vulkan related entry point queries. + * + * This feature is mostly useful on macOS, if your copy of the Vulkan loader is in + * a location where GLFW cannot find it through dynamic loading, or if you are still + * using the static library version of the loader. + * + * If set to `NULL`, GLFW will try to load the Vulkan loader dynamically by its standard + * name and get this function from there. This is the default behavior. + * + * The standard name of the loader is `vulkan-1.dll` on Windows, `libvulkan.so.1` on + * Linux and other Unix-like systems and `libvulkan.1.dylib` on macOS. If your code is + * also loading it via these names then you probably don't need to use this function. + * + * The function address you set is never reset by GLFW, but it only takes effect during + * initialization. Once GLFW has been initialized, any updates will be ignored until the + * library is terminated and initialized again. + * + * @param[in] loader The address of the function to use, or `NULL`. + * + * @par Loader function signature + * @code + * PFN_vkVoidFunction vkGetInstanceProcAddr(VkInstance instance, const char* name) + * @endcode + * For more information about this function, see the + * [Vulkan Registry](https://www.khronos.org/registry/vulkan/). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref vulkan_loader + * @sa @ref glfwInit + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI void glfwInitVulkanLoader(PFN_vkGetInstanceProcAddr loader); + +#endif /*VK_VERSION_1_0*/ + + /*! @brief Retrieves the version of the GLFW library. + * + * This function retrieves the major, minor and revision numbers of the GLFW + * library. It is intended for when you are using GLFW as a shared library and + * want to ensure that you are using the minimum required version. + * + * Any or all of the version arguments may be `NULL`. + * + * @param[out] major Where to store the major version number, or `NULL`. + * @param[out] minor Where to store the minor version number, or `NULL`. + * @param[out] rev Where to store the revision number, or `NULL`. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersionString + * + * @since Added in version 1.0. + * + * @ingroup init + */ + SSCAPI void glfwGetVersion(int* major, int* minor, int* rev); + + /*! @brief Returns a string describing the compile-time configuration. + * + * This function returns the compile-time generated + * [version string](@ref intro_version_string) of the GLFW library binary. It describes + * the version, platforms, compiler and any platform or operating system specific + * compile-time options. It should not be confused with the OpenGL or OpenGL ES version + * string, queried with `glGetString`. + * + * __Do not use the version string__ to parse the GLFW library version. The + * @ref glfwGetVersion function provides the version of the running library + * binary in numerical format. + * + * __Do not use the version string__ to parse what platforms are supported. The @ref + * glfwPlatformSupported function lets you query platform support. + * + * @return The ASCII encoded GLFW version string. + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @pointer_lifetime The returned string is static and compile-time generated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref intro_version + * @sa @ref glfwGetVersion + * + * @since Added in version 3.0. + * + * @ingroup init + */ + SSCAPI const char* glfwGetVersionString(void); + + /*! @brief Returns and clears the last error for the calling thread. + * + * This function returns and clears the [error code](@ref errors) of the last + * error that occurred on the calling thread, and optionally a UTF-8 encoded + * human-readable description of it. If no error has occurred since the last + * call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is + * set to `NULL`. + * + * @param[in] description Where to store the error description pointer, or `NULL`. + * @return The last error code for the calling thread, or @ref GLFW_NO_ERROR + * (zero). + * + * @errors None. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * next error occurs or the library is terminated. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref error_handling + * @sa @ref glfwSetErrorCallback + * + * @since Added in version 3.3. + * + * @ingroup init + */ + SSCAPI int glfwGetError(const char** description); + + /*! @brief Sets the error callback. + * + * This function sets the error callback, which is called with an error code + * and a human-readable description each time a GLFW error occurs. + * + * The error code is set before the callback is called. Calling @ref + * glfwGetError from the error callback will return the same value as the error + * code argument. + * + * The error callback is called on the thread where the error occurred. If you + * are using GLFW from multiple threads, your error callback needs to be + * written accordingly. + * + * Because the description string may have been generated specifically for that + * error, it is not guaranteed to be valid after the callback has returned. If + * you wish to use it after the callback returns, you need to make a copy. + * + * Once set, the error callback remains set even after the library has been + * terminated. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set. + * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * + * @errors None. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref error_handling + * @sa @ref glfwGetError + * + * @since Added in version 3.0. + * + * @ingroup init + */ + SSCAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); + + /*! @brief Returns the currently selected platform. + * + * This function returns the platform that was selected during initialization. The + * returned value will be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, + * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. + * + * @return The currently selected platform, or zero if an error occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref platform + * @sa @ref glfwPlatformSupported + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI int glfwGetPlatform(void); + + /*! @brief Returns whether the library includes support for the specified platform. + * + * This function returns whether the library was compiled with support for the specified + * platform. The platform must be one of `GLFW_PLATFORM_WIN32`, `GLFW_PLATFORM_COCOA`, + * `GLFW_PLATFORM_WAYLAND`, `GLFW_PLATFORM_X11` or `GLFW_PLATFORM_NULL`. + * + * @param[in] platform The platform to query. + * @return `GLFW_TRUE` if the platform is supported, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_INVALID_ENUM. + * + * @remark This function may be called before @ref glfwInit. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref platform + * @sa @ref glfwGetPlatform + * + * @since Added in version 3.4. + * + * @ingroup init + */ + SSCAPI int glfwPlatformSupported(int platform); + + /*! @brief Returns the currently connected monitors. + * + * This function returns an array of handles for all currently connected + * monitors. The primary monitor is always first in the returned array. If no + * monitors were found, this function returns `NULL`. + * + * @param[out] count Where to store the number of monitors in the returned + * array. This is set to zero if an error occurred. + * @return An array of monitor handles, or `NULL` if no monitors were found or + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * monitor configuration changes or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_monitors + * @sa @ref monitor_event + * @sa @ref glfwGetPrimaryMonitor + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI GLFWmonitor** glfwGetMonitors(int* count); + + /*! @brief Returns the primary monitor. + * + * This function returns the primary monitor. This is usually the monitor + * where elements like the task bar or global menu bar are located. + * + * @return The primary monitor, or `NULL` if no monitors were found or if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @remark The primary monitor is always first in the array returned by @ref + * glfwGetMonitors. + * + * @sa @ref monitor_monitors + * @sa @ref glfwGetMonitors + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI GLFWmonitor* glfwGetPrimaryMonitor(void); + + /*! @brief Returns the position of the monitor's viewport on the virtual screen. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the specified monitor. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); + + /*! @brief Retrieves the work area of the monitor. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the work area of the specified monitor along with the work area + * size in screen coordinates. The work area is defined as the area of the + * monitor not occluded by the window system task bar where present. If no + * task bar exists then the work area is the monitor resolution in screen + * coordinates. + * + * Any or all of the position and size arguments may be `NULL`. If an error + * occurs, all non-`NULL` position and size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * @param[out] width Where to store the monitor width, or `NULL`. + * @param[out] height Where to store the monitor height, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_workarea + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); + + /*! @brief Returns the physical size of the monitor. + * + * This function returns the size, in millimetres, of the display area of the + * specified monitor. + * + * Some platforms do not provide accurate monitor size information, either + * because the monitor + * [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data) + * data is incorrect or because the driver does not report it accurately. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] widthMM Where to store the width, in millimetres, of the + * monitor's display area, or `NULL`. + * @param[out] heightMM Where to store the height, in millimetres, of the + * monitor's display area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @win32 On Windows 8 and earlier the physical size is calculated from + * the current resolution and system DPI instead of querying the monitor EDID data. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); + + /*! @brief Retrieves the content scale for the specified monitor. + * + * This function retrieves the content scale for the specified monitor. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * The content scale may depend on both the monitor resolution and pixel + * density and on user settings. It may be very different from the raw DPI + * calculated from the physical size and current resolution. + * + * @param[in] monitor The monitor to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale); + + /*! @brief Returns the name of the specified monitor. + * + * This function returns a human-readable name, encoded as UTF-8, of the + * specified monitor. The name typically reflects the make and model of the + * monitor and is not guaranteed to be unique among the connected monitors. + * + * @param[in] monitor The monitor to query. + * @return The UTF-8 encoded name of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); + + /*! @brief Sets the user pointer of the specified monitor. + * + * This function sets the user-defined pointer of the specified monitor. The + * current value is retained until the monitor is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwGetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer); + + /*! @brief Returns the user pointer of the specified monitor. + * + * This function returns the current value of the user-defined pointer of the + * specified monitor. The initial value is `NULL`. + * + * This function may be called from the monitor callback, even for a monitor + * that is being disconnected. + * + * @param[in] monitor The monitor whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref monitor_userptr + * @sa @ref glfwSetMonitorUserPointer + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ + SSCAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); + + /*! @brief Sets the monitor configuration callback. + * + * This function sets the monitor configuration callback, or removes the + * currently set callback. This is called when a monitor is connected to or + * disconnected from the system. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_event + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); + + /*! @brief Returns the available video modes for the specified monitor. + * + * This function returns an array of all video modes supported by the specified + * monitor. The returned array is sorted in ascending order, first by color + * bit depth (the sum of all channel depths), then by resolution area (the + * product of width and height), then resolution width and finally by refresh + * rate. + * + * @param[in] monitor The monitor to query. + * @param[out] count Where to store the number of video modes in the returned + * array. This is set to zero if an error occurred. + * @return An array of video modes, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected, this function is called again for that monitor or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoMode + * + * @since Added in version 1.0. + * @glfw3 Changed to return an array of modes for a specific monitor. + * + * @ingroup monitor + */ + SSCAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); + + /*! @brief Returns the current mode of the specified monitor. + * + * This function returns the current video mode of the specified monitor. If + * you have created a full screen window for that monitor, the return value + * will depend on whether that window is iconified. + * + * @param[in] monitor The monitor to query. + * @return The current mode of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified monitor is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_modes + * @sa @ref glfwGetVideoModes + * + * @since Added in version 3.0. Replaces `glfwGetDesktopMode`. + * + * @ingroup monitor + */ + SSCAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); + + /*! @brief Generates a gamma ramp and sets it for the specified monitor. + * + * This function generates an appropriately sized gamma ramp from the specified + * exponent and then calls @ref glfwSetGammaRamp with it. The value must be + * a finite number greater than zero. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] gamma The desired exponent. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_INVALID_VALUE, + * @ref GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); + + /*! @brief Returns the current gamma ramp for the specified monitor. + * + * This function returns the current gamma ramp of the specified monitor. + * + * @param[in] monitor The monitor to query. + * @return The current gamma ramp, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR + * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE while + * returning `NULL`. + * + * @pointer_lifetime The returned structure and its arrays are allocated and + * freed by GLFW. You should not free them yourself. They are valid until the + * specified monitor is disconnected, this function is called again for that + * monitor or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); + + /*! @brief Sets the current gamma ramp for the specified monitor. + * + * This function sets the current gamma ramp for the specified monitor. The + * original gamma ramp for that monitor is saved by GLFW the first time this + * function is called and is restored by @ref glfwTerminate. + * + * The software controlled gamma ramp is applied _in addition_ to the hardware + * gamma correction, which today is usually an approximation of sRGB gamma. + * This means that setting a perfectly linear ramp, or gamma 1.0, will produce + * the default (usually sRGB-like) behavior. + * + * For gamma correct rendering with OpenGL or OpenGL ES, see the @ref + * GLFW_SRGB_CAPABLE hint. + * + * @param[in] monitor The monitor whose gamma ramp to set. + * @param[in] ramp The gamma ramp to use. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref GLFW_PLATFORM_ERROR + * and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark The size of the specified gamma ramp should match the size of the + * current ramp for that monitor. + * + * @remark @win32 The gamma ramp size must be 256. + * + * @remark @wayland Gamma handling is a privileged protocol, this function + * will thus never be implemented and emits @ref GLFW_FEATURE_UNAVAILABLE. + * + * @pointer_lifetime The specified gamma ramp is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in version 3.0. + * + * @ingroup monitor + */ + SSCAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); + + /*! @brief Resets all window hints to their default values. + * + * This function resets all window hints to their + * [default values](@ref window_hints_values). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwWindowHintString + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwDefaultWindowHints(void); + + /*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only integer value hints can be set with this function. String value hints + * are set with @ref glfwWindowHintString. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHintString + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.0. Replaces `glfwOpenWindowHint`. + * + * @ingroup window + */ + SSCAPI void glfwWindowHint(int hint, int value); + + /*! @brief Sets the specified window hint to the desired value. + * + * This function sets hints for the next call to @ref glfwCreateWindow. The + * hints, once set, retain their values until changed by a call to this + * function or @ref glfwDefaultWindowHints, or until the library is terminated. + * + * Only string type hints can be set with this function. Integer value hints + * are set with @ref glfwWindowHint. + * + * This function does not check whether the specified hint values are valid. + * If you set hints to invalid values this will instead be reported by the next + * call to @ref glfwCreateWindow. + * + * Some hints are platform specific. These may be set on any platform but they + * will only affect their specific platform. Other platforms will ignore them. + * Setting these hints requires no platform specific headers or functions. + * + * @param[in] hint The [window hint](@ref window_hints) to set. + * @param[in] value The new value of the window hint. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hints + * @sa @ref glfwWindowHint + * @sa @ref glfwDefaultWindowHints + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwWindowHintString(int hint, const char* value); + + /*! @brief Creates a window and its associated context. + * + * This function creates a window and its associated OpenGL or OpenGL ES + * context. Most of the options controlling how the window and its context + * should be created are specified with [window hints](@ref window_hints). + * + * Successful creation does not change which context is current. Before you + * can use the newly created context, you need to + * [make it current](@ref context_current). For information about the `share` + * parameter, see @ref context_sharing. + * + * The created window, framebuffer and context may differ from what you + * requested, as not all parameters and hints are + * [hard constraints](@ref window_hints_hard). This includes the size of the + * window, especially for full screen windows. To query the actual attributes + * of the created window, framebuffer and context, see @ref + * glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize. + * + * To create a full screen window, you need to specify the monitor the window + * will cover. If no monitor is specified, the window will be windowed mode. + * Unless you have a way for the user to choose a specific monitor, it is + * recommended that you pick the primary monitor. For more information on how + * to query connected monitors, see @ref monitor_monitors. + * + * For full screen windows, the specified size becomes the resolution of the + * window's _desired video mode_. As long as a full screen window is not + * iconified, the supported video mode most closely matching the desired video + * mode is set for the specified monitor. For more information about full + * screen windows, including the creation of so called _windowed full screen_ + * or _borderless full screen_ windows, see @ref window_windowed_full_screen. + * + * Once you have created the window, you can switch it between windowed and + * full screen mode with @ref glfwSetWindowMonitor. This will not affect its + * OpenGL or OpenGL ES context. + * + * By default, newly created windows use the placement recommended by the + * window system. To create the window at a specific position, set the @ref + * GLFW_POSITION_X and @ref GLFW_POSITION_Y window hints before creation. To + * restore the default behavior, set either or both hints back to + * `GLFW_ANY_POSITION`. + * + * As long as at least one full screen window is not iconified, the screensaver + * is prohibited from starting. + * + * Window systems put limits on window sizes. Very large or very small window + * dimensions may be overridden by the window system on creation. Check the + * actual [size](@ref window_size) after creation. + * + * The [swap interval](@ref buffer_swap) is not set during window creation and + * the initial value may vary depending on driver settings and defaults. + * + * @param[in] width The desired width, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] height The desired height, in screen coordinates, of the window. + * This must be greater than zero. + * @param[in] title The initial, UTF-8 encoded window title. + * @param[in] monitor The monitor to use for full screen mode, or `NULL` for + * windowed mode. + * @param[in] share The window whose context to share resources with, or `NULL` + * to not share resources. + * @return The handle of the created window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref + * GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @win32 Window creation will fail if the Microsoft GDI software + * OpenGL implementation is the only one available. + * + * @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it + * will be set as the initial icon for the window. If no such icon is present, + * the `IDI_APPLICATION` icon will be used instead. To set a different icon, + * see @ref glfwSetWindowIcon. + * + * @remark @win32 The context to share resources with must not be current on + * any other thread. + * + * @remark @macos The OS only supports core profile contexts for OpenGL + * versions 3.2 and later. Before creating an OpenGL context of version 3.2 or + * later you must set the [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) + * hint accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all + * on macOS. + * + * @remark @macos The GLFW window has no icon, as it is not a document + * window, but the dock icon will be the same as the application bundle's icon. + * For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @macos On OS X 10.10 and later the window frame will not be rendered + * at full resolution on Retina displays unless the + * [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint) + * hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the + * application bundle's `Info.plist`. For more information, see + * [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html) + * in the Mac Developer Library. The GLFW test and example programs use + * a custom `Info.plist` template for this, which can be found as + * `CMake/Info.plist.in` in the source tree. + * + * @remark @macos When activating frame autosaving with + * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified + * window size and position may be overridden by previously saved values. + * + * @remark @x11 Some window managers will not respect the placement of + * initially hidden windows. + * + * @remark @x11 Due to the asynchronous nature of X11, it may take a moment for + * a window to reach its requested state. This means you may not be able to + * query the final size, position or other attributes directly after window + * creation. + * + * @remark @x11 The class part of the `WM_CLASS` window property will by + * default be set to the window title passed to this function. The instance + * part will use the contents of the `RESOURCE_NAME` environment variable, if + * present and not empty, or fall back to the window title. Set the + * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and + * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to + * override this. + * + * @remark @wayland Compositors should implement the xdg-decoration protocol + * for GLFW to decorate the window properly. If this protocol isn't + * supported, or if the compositor prefers client-side decorations, a very + * simple fallback frame will be drawn using the wp_viewporter protocol. A + * compositor can still emit close, maximize or fullscreen events, using for + * instance a keybind mechanism. If neither of these protocols is supported, + * the window won't be decorated. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size or refresh rate. + * + * @remark @wayland Screensaver inhibition requires the idle-inhibit protocol + * to be implemented in the user's compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwDestroyWindow + * + * @since Added in version 3.0. Replaces `glfwOpenWindow`. + * + * @ingroup window + */ + SSCAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); + + /*! @brief Destroys the specified window and its context. + * + * This function destroys the specified window and its context. On calling + * this function, no further callbacks will be called for that window. + * + * If the context of the specified window is current on the main thread, it is + * detached before being destroyed. + * + * @param[in] window The window to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @note The context of the specified window must not be current on any other + * thread when this function is called. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_creation + * @sa @ref glfwCreateWindow + * + * @since Added in version 3.0. Replaces `glfwCloseWindow`. + * + * @ingroup window + */ + SSCAPI void glfwDestroyWindow(GLFWwindow* window); + + /*! @brief Checks the close flag of the specified window. + * + * This function returns the value of the close flag of the specified window. + * + * @param[in] window The window to query. + * @return The value of the close flag. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI int glfwWindowShouldClose(GLFWwindow* window); + + /*! @brief Sets the close flag of the specified window. + * + * This function sets the value of the close flag of the specified window. + * This can be used to override the user's attempt to close the window, or + * to signal that it should be closed. + * + * @param[in] window The window whose flag to change. + * @param[in] value The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_close + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); + + /*! @brief Sets the title of the specified window. + * + * This function sets the window title, encoded as UTF-8, of the specified + * window. + * + * @param[in] window The window whose title to change. + * @param[in] title The UTF-8 encoded window title. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos The window title will not be updated until the next time you + * process events. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_title + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); + + /*! @brief Sets the icon for the specified window. + * + * This function sets the icon of the specified window. If passed an array of + * candidate images, those of or closest to the sizes desired by the system are + * selected. If no images are specified, the window reverts to its default + * icon. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The desired image sizes varies depending on platform and system settings. + * The selected images will be rescaled as needed. Good sizes include 16x16, + * 32x32 and 48x48. + * + * @param[in] window The window whose icon to set. + * @param[in] count The number of images in the specified array, or zero to + * revert to the default window icon. + * @param[in] images The images to create the icon from. This is ignored if + * count is zero. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @remark @macos Regular windows do not have icons on macOS. This function + * will emit @ref GLFW_FEATURE_UNAVAILABLE. The dock icon will be the same as + * the application bundle's icon. For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. + * + * @remark @wayland There is no existing protocol to change an icon, the + * window will thus inherit the one defined in the application's desktop file. + * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_icon + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); + + /*! @brief Retrieves the position of the content area of the specified window. + * + * This function retrieves the position, in screen coordinates, of the + * upper-left corner of the content area of the specified window. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The window to query. + * @param[out] xpos Where to store the x-coordinate of the upper-left corner of + * the content area, or `NULL`. + * @param[out] ypos Where to store the y-coordinate of the upper-left corner of + * the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way for an application to retrieve the global + * position of its windows. This function will emit @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwSetWindowPos + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); + + /*! @brief Sets the position of the content area of the specified window. + * + * This function sets the position, in screen coordinates, of the upper-left + * corner of the content area of the specified windowed mode window. If the + * window is a full screen window, this function does nothing. + * + * __Do not use this function__ to move an already visible window unless you + * have very good reasons for doing so, as it will confuse and annoy the user. + * + * The window manager may put limits on what positions are allowed. GLFW + * cannot and should not override these limits. + * + * @param[in] window The window to query. + * @param[in] xpos The x-coordinate of the upper-left corner of the content area. + * @param[in] ypos The y-coordinate of the upper-left corner of the content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way for an application to set the global + * position of its windows. This function will emit @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * @sa @ref glfwGetWindowPos + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); + + /*! @brief Retrieves the size of the content area of the specified window. + * + * This function retrieves the size, in screen coordinates, of the content area + * of the specified window. If you wish to retrieve the size of the + * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose size to retrieve. + * @param[out] width Where to store the width, in screen coordinates, of the + * content area, or `NULL`. + * @param[out] height Where to store the height, in screen coordinates, of the + * content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwSetWindowSize + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); + + /*! @brief Sets the size limits of the specified window. + * + * This function sets the size limits of the content area of the specified + * window. If the window is full screen, the size limits only take effect + * once it is made windowed. If the window is not resizable, this function + * does nothing. + * + * The size limits are applied immediately to a windowed mode window and may + * cause it to be resized. + * + * The maximum dimensions must be greater than or equal to the minimum + * dimensions and all must be greater than or equal to zero. + * + * @param[in] window The window to set limits for. + * @param[in] minwidth The minimum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] minheight The minimum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * @param[in] maxwidth The maximum width, in screen coordinates, of the content + * area, or `GLFW_DONT_CARE`. + * @param[in] maxheight The maximum height, in screen coordinates, of the + * content area, or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The size limits will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowAspectRatio + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight); + + /*! @brief Sets the aspect ratio of the specified window. + * + * This function sets the required aspect ratio of the content area of the + * specified window. If the window is full screen, the aspect ratio only takes + * effect once it is made windowed. If the window is not resizable, this + * function does nothing. + * + * The aspect ratio is specified as a numerator and a denominator and both + * values must be greater than zero. For example, the common 16:9 aspect ratio + * is specified as 16 and 9, respectively. + * + * If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect + * ratio limit is disabled. + * + * The aspect ratio is applied immediately to a windowed mode window and may + * cause it to be resized. + * + * @param[in] window The window to set limits for. + * @param[in] numer The numerator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * @param[in] denom The denominator of the desired aspect ratio, or + * `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @remark If you set size limits and an aspect ratio that conflict, the + * results are undefined. + * + * @remark @wayland The aspect ratio will not be applied until the window is + * actually resized, either by the user or by the compositor. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_sizelimits + * @sa @ref glfwSetWindowSizeLimits + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); + + /*! @brief Sets the size of the content area of the specified window. + * + * This function sets the size, in screen coordinates, of the content area of + * the specified window. + * + * For full screen windows, this function updates the resolution of its desired + * video mode and switches to the video mode closest to it, without affecting + * the window's context. As the context is unaffected, the bit depths of the + * framebuffer remain unchanged. + * + * If you wish to update the refresh rate of the desired video mode in addition + * to its resolution, see @ref glfwSetWindowMonitor. + * + * The window manager may put limits on what sizes are allowed. GLFW cannot + * and should not override these limits. + * + * @param[in] window The window to resize. + * @param[in] width The desired width, in screen coordinates, of the window + * content area. + * @param[in] height The desired height, in screen coordinates, of the window + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland A full screen window will not attempt to change the mode, + * no matter what the requested size. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * @sa @ref glfwGetWindowSize + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); + + /*! @brief Retrieves the size of the framebuffer of the specified window. + * + * This function retrieves the size, in pixels, of the framebuffer of the + * specified window. If you wish to retrieve the size of the window in screen + * coordinates, see @ref glfwGetWindowSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose framebuffer to query. + * @param[out] width Where to store the width, in pixels, of the framebuffer, + * or `NULL`. + * @param[out] height Where to store the height, in pixels, of the framebuffer, + * or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * @sa @ref glfwSetFramebufferSizeCallback + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); + + /*! @brief Retrieves the size of the frame of the window. + * + * This function retrieves the size, in screen coordinates, of each edge of the + * frame of the specified window. This size includes the title bar, if the + * window has one. The size of the frame may vary depending on the + * [window-related hints](@ref window_hints_wnd) used to create it. + * + * Because this function retrieves the size of each window frame edge and not + * the offset along a particular coordinate axis, the retrieved values will + * always be zero or positive. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] window The window whose frame size to query. + * @param[out] left Where to store the size, in screen coordinates, of the left + * edge of the window frame, or `NULL`. + * @param[out] top Where to store the size, in screen coordinates, of the top + * edge of the window frame, or `NULL`. + * @param[out] right Where to store the size, in screen coordinates, of the + * right edge of the window frame, or `NULL`. + * @param[out] bottom Where to store the size, in screen coordinates, of the + * bottom edge of the window frame, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 3.1. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); + + /*! @brief Retrieves the content scale for the specified window. + * + * This function retrieves the content scale for the specified window. The + * content scale is the ratio between the current DPI and the platform's + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. + * + * On platforms where each monitors can have its own content scale, the window + * content scale will depend on which monitor the system considers the window + * to be on. + * + * @param[in] window The window to query. + * @param[out] xscale Where to store the x-axis content scale, or `NULL`. + * @param[out] yscale Where to store the y-axis content scale, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwSetWindowContentScaleCallback + * @sa @ref glfwGetMonitorContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale); + + /*! @brief Returns the opacity of the whole window. + * + * This function returns the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. If the system + * does not support whole window transparency, this function always returns one. + * + * The initial opacity value for newly created windows is one. + * + * @param[in] window The window to query. + * @return The opacity value of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwSetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI float glfwGetWindowOpacity(GLFWwindow* window); + + /*! @brief Sets the opacity of the whole window. + * + * This function sets the opacity of the window, including any decorations. + * + * The opacity (or alpha) value is a positive finite number between zero and + * one, where zero is fully transparent and one is fully opaque. + * + * The initial opacity value for newly created windows is one. + * + * A window created with framebuffer transparency may not use whole window + * transparency. The results of doing this are undefined. + * + * @param[in] window The window to set the opacity for. + * @param[in] opacity The desired opacity of the specified window. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland There is no way to set an opacity factor for a window. + * This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_transparency + * @sa @ref glfwGetWindowOpacity + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); + + /*! @brief Iconifies the specified window. + * + * This function iconifies (minimizes) the specified window if it was + * previously restored. If the window is already iconified, this function does + * nothing. + * + * If the specified window is a full screen window, GLFW restores the original + * video mode of the monitor. The window's desired video mode is set again + * when the window is restored. + * + * @param[in] window The window to iconify. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Once a window is iconified, @ref glfwRestoreWindow won’t + * be able to restore it. This is a design decision of the xdg-shell + * protocol. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwRestoreWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwIconifyWindow(GLFWwindow* window); + + /*! @brief Restores the specified window. + * + * This function restores the specified window if it was previously iconified + * (minimized) or maximized. If the window is already restored, this function + * does nothing. + * + * If the specified window is an iconified full screen window, its desired + * video mode is set again for its monitor when the window is restored. + * + * @param[in] window The window to restore. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwMaximizeWindow + * + * @since Added in version 2.1. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwRestoreWindow(GLFWwindow* window); + + /*! @brief Maximizes the specified window. + * + * This function maximizes the specified window if it was previously not + * maximized. If the window is already maximized, this function does nothing. + * + * If the specified window is a full screen window, this function does nothing. + * + * @param[in] window The window to maximize. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_iconify + * @sa @ref glfwIconifyWindow + * @sa @ref glfwRestoreWindow + * + * @since Added in GLFW 3.2. + * + * @ingroup window + */ + SSCAPI void glfwMaximizeWindow(GLFWwindow* window); + + /*! @brief Makes the specified window visible. + * + * This function makes the specified window visible if it was previously + * hidden. If the window is already visible or is in full screen mode, this + * function does nothing. + * + * By default, windowed mode windows are focused when shown + * Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint + * to change this behavior for all newly created windows, or change the + * behavior for an existing window with @ref glfwSetWindowAttrib. + * + * @param[in] window The window to make visible. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @wayland Because Wayland wants every frame of the desktop to be + * complete, this function does not immediately make the window visible. + * Instead it will become visible the next time the window framebuffer is + * updated after this call. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwHideWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwShowWindow(GLFWwindow* window); + + /*! @brief Hides the specified window. + * + * This function hides the specified window if it was previously visible. If + * the window is already hidden or is in full screen mode, this function does + * nothing. + * + * @param[in] window The window to hide. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_hide + * @sa @ref glfwShowWindow + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwHideWindow(GLFWwindow* window); + + /*! @brief Brings the specified window to front and sets input focus. + * + * This function brings the specified window to front and sets input focus. + * The window should already be visible and not iconified. + * + * By default, both windowed and full screen mode windows are focused when + * initially created. Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to + * disable this behavior. + * + * Also by default, windowed mode windows are focused when shown + * with @ref glfwShowWindow. Set the + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior. + * + * __Do not use this function__ to steal focus from other applications unless + * you are certain that is what the user wants. Focus stealing can be + * extremely disruptive. + * + * For a less disruptive way of getting the user's attention, see + * [attention requests](@ref window_attention). + * + * @param[in] window The window to give input focus. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland It is not possible for an application to set the input + * focus. This function will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * @sa @ref window_attention + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwFocusWindow(GLFWwindow* window); + + /*! @brief Requests user attention to the specified window. + * + * This function requests user attention to the specified window. On + * platforms where this is not supported, attention is requested to the + * application as a whole. + * + * Once the user has given attention, usually by focusing the window or + * application, the system will end the request automatically. + * + * @param[in] window The window to request attention to. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark @macos Attention is requested to the application as a whole, not the + * specific window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attention + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwRequestWindowAttention(GLFWwindow* window); + + /*! @brief Returns the monitor that the window uses for full screen mode. + * + * This function returns the handle of the monitor that the specified window is + * in full screen on. + * + * @param[in] window The window to query. + * @return The monitor, or `NULL` if the window is in windowed mode or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref glfwSetWindowMonitor + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); + + /*! @brief Sets the mode, monitor, video mode and placement of a window. + * + * This function sets the monitor that the window uses for full screen mode or, + * if the monitor is `NULL`, makes it windowed mode. + * + * When setting a monitor, this function updates the width, height and refresh + * rate of the desired video mode and switches to the video mode closest to it. + * The window position is ignored when setting a monitor. + * + * When the monitor is `NULL`, the position, width and height are used to + * place the window content area. The refresh rate is ignored when no monitor + * is specified. + * + * If you only wish to update the resolution of a full screen window or the + * size of a windowed mode window, see @ref glfwSetWindowSize. + * + * When a window transitions from full screen to windowed mode, this function + * restores any previous window settings such as whether it is decorated, + * floating, resizable, has size or aspect ratio limits, etc. + * + * @param[in] window The window whose monitor, size or video mode to set. + * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. + * @param[in] xpos The desired x-coordinate of the upper-left corner of the + * content area. + * @param[in] ypos The desired y-coordinate of the upper-left corner of the + * content area. + * @param[in] width The desired with, in screen coordinates, of the content + * area or video mode. + * @param[in] height The desired height, in screen coordinates, of the content + * area or video mode. + * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, + * or `GLFW_DONT_CARE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise + * affected by any resizing or mode switching, although you may need to update + * your viewport if the framebuffer size has changed. + * + * @remark @wayland The desired window position is ignored, as there is no way + * for an application to set this property. + * + * @remark @wayland Setting the window to full screen will not attempt to + * change the mode, no matter what the requested size or refresh rate. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_monitor + * @sa @ref window_full_screen + * @sa @ref glfwGetWindowMonitor + * @sa @ref glfwSetWindowSize + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate); + + /*! @brief Returns an attribute of the specified window. + * + * This function returns the value of an attribute of the specified window or + * its OpenGL or OpenGL ES context. + * + * @param[in] window The window to query. + * @param[in] attrib The [window attribute](@ref window_attribs) whose value to + * return. + * @return The value of the attribute, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @remark Framebuffer related hints are not window attributes. See @ref + * window_attribs_fb for more information. + * + * @remark Zero is a valid value for many window and context related + * attributes so you cannot use a return value of zero as an indication of + * errors. However, this function should not fail as long as it is passed + * valid arguments and the library has been [initialized](@ref intro_init). + * + * @remark @wayland The Wayland protocol provides no way to check whether a + * window is iconfied, so @ref GLFW_ICONIFIED always returns `GLFW_FALSE`. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwSetWindowAttrib + * + * @since Added in version 3.0. Replaces `glfwGetWindowParam` and + * `glfwGetGLVersion`. + * + * @ingroup window + */ + SSCAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); + + /*! @brief Sets an attribute of the specified window. + * + * This function sets the value of an attribute of the specified window. + * + * The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib), + * [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib), + * [GLFW_FLOATING](@ref GLFW_FLOATING_attrib), + * [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and + * [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib). + * [GLFW_MOUSE_PASSTHROUGH](@ref GLFW_MOUSE_PASSTHROUGH_attrib) + * + * Some of these attributes are ignored for full screen windows. The new + * value will take effect if the window is later made windowed. + * + * Some of these attributes are ignored for windowed mode windows. The new + * value will take effect if the window is later made full screen. + * + * @param[in] window The window to set the attribute for. + * @param[in] attrib A supported window attribute. + * @param[in] value `GLFW_TRUE` or `GLFW_FALSE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE. + * + * @remark Calling @ref glfwGetWindowAttrib will always return the latest + * value, even if that value is ignored by the current mode of the window. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_attribs + * @sa @ref glfwGetWindowAttrib + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value); + + /*! @brief Sets the user pointer of the specified window. + * + * This function sets the user-defined pointer of the specified window. The + * current value is retained until the window is destroyed. The initial value + * is `NULL`. + * + * @param[in] window The window whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwGetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); + + /*! @brief Returns the user pointer of the specified window. + * + * This function returns the current value of the user-defined pointer of the + * specified window. The initial value is `NULL`. + * + * @param[in] window The window whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref window_userptr + * @sa @ref glfwSetWindowUserPointer + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI void* glfwGetWindowUserPointer(GLFWwindow* window); + + /*! @brief Sets the position callback for the specified window. + * + * This function sets the position callback of the specified window, which is + * called when the window is moved. The callback is provided with the + * position, in screen coordinates, of the upper-left corner of the content + * area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland This callback will never be called, as there is no way for + * an application to know its global position. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_pos + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); + + /*! @brief Sets the size callback for the specified window. + * + * This function sets the size callback of the specified window, which is + * called when the window is resized. The callback is provided with the size, + * in screen coordinates, of the content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ + SSCAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); + + /*! @brief Sets the close callback for the specified window. + * + * This function sets the close callback of the specified window, which is + * called when the user attempts to close the window, for example by clicking + * the close widget in the title bar. + * + * The close flag is set before this callback is called, but you can modify it + * at any time with @ref glfwSetWindowShouldClose. + * + * The close callback is not triggered by @ref glfwDestroyWindow. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @macos Selecting Quit from the application menu will trigger the + * close callback for all windows. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_close + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ + SSCAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); + + /*! @brief Sets the refresh callback for the specified window. + * + * This function sets the refresh callback of the specified window, which is + * called when the content area of the window needs to be redrawn, for example + * if the window has been exposed after having been covered by another window. + * + * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where + * the window contents are saved off-screen, this callback may be called only + * very infrequently or never at all. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_refresh + * + * @since Added in version 2.5. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup window + */ + SSCAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); + + /*! @brief Sets the focus callback for the specified window. + * + * This function sets the focus callback of the specified window, which is + * called when the window gains or loses input focus. + * + * After the focus callback is called for a window that lost input focus, + * synthetic key and mouse button release events will be generated for all such + * that had been pressed. For more information, see @ref glfwSetKeyCallback + * and @ref glfwSetMouseButtonCallback. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_focus + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); + + /*! @brief Sets the iconify callback for the specified window. + * + * This function sets the iconification callback of the specified window, which + * is called when the window is iconified or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_iconify + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); + + /*! @brief Sets the maximize callback for the specified window. + * + * This function sets the maximization callback of the specified window, which + * is called when the window is maximized or restored. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_maximize + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); + + /*! @brief Sets the framebuffer resize callback for the specified window. + * + * This function sets the framebuffer resize callback of the specified window, + * which is called when the framebuffer of the specified window is resized. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_fbsize + * + * @since Added in version 3.0. + * + * @ingroup window + */ + SSCAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); + + /*! @brief Sets the window content scale callback for the specified window. + * + * This function sets the window content scale callback of the specified window, + * which is called when the content scale of the specified window changes. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref window_scale + * @sa @ref glfwGetWindowContentScale + * + * @since Added in version 3.3. + * + * @ingroup window + */ + SSCAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); + + /*! @brief Processes all pending events. + * + * This function processes only those events that are already in the event + * queue and then returns immediately. Processing events will cause the window + * and input callbacks associated with those events to be called. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 1.0. + * + * @ingroup window + */ + SSCAPI void glfwPollEvents(void); + + /*! @brief Waits until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue. Once one or more events are available, + * it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue + * are processed and the function then returns immediately. Processing events + * will cause the window and input callbacks associated with those events to be + * called. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 2.5. + * + * @ingroup window + */ + SSCAPI void glfwWaitEvents(void); + + /*! @brief Waits with timeout until events are queued and processes them. + * + * This function puts the calling thread to sleep until at least one event is + * available in the event queue, or until the specified timeout is reached. If + * one or more events are available, it behaves exactly like @ref + * glfwPollEvents, i.e. the events in the queue are processed and the function + * then returns immediately. Processing events will cause the window and input + * callbacks associated with those events to be called. + * + * The timeout value must be a positive finite number. + * + * Since not all events are associated with callbacks, this function may return + * without a callback having been called even if you are monitoring all + * callbacks. + * + * On some platforms, a window move, resize or menu operation will cause event + * processing to block. This is due to how event processing is designed on + * those platforms. You can use the + * [window refresh callback](@ref window_refresh) to redraw the contents of + * your window when necessary during such operations. + * + * Do not assume that callbacks you set will _only_ be called in response to + * event processing functions like this one. While it is necessary to poll for + * events, window systems that require GLFW to register callbacks of its own + * can pass events to GLFW in response to many window system function calls. + * GLFW will pass those events on to the application callbacks before + * returning. + * + * Event processing is not required for joystick input to work. + * + * @param[in] timeout The maximum amount of time, in seconds, to wait. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref events + * @sa @ref glfwPollEvents + * @sa @ref glfwWaitEvents + * + * @since Added in version 3.2. + * + * @ingroup window + */ + SSCAPI void glfwWaitEventsTimeout(double timeout); + + /*! @brief Posts an empty event to the event queue. + * + * This function posts an empty event from the current thread to the event + * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref events + * @sa @ref glfwWaitEvents + * @sa @ref glfwWaitEventsTimeout + * + * @since Added in version 3.1. + * + * @ingroup window + */ + SSCAPI void glfwPostEmptyEvent(void); + + /*! @brief Returns the value of an input option for the specified window. + * + * This function returns the value of an input option for the specified window. + * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * @param[in] window The window to query. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI int glfwGetInputMode(GLFWwindow* window, int mode); + + /*! @brief Sets an input option for the specified window. + * + * This function sets an input mode option for the specified window. The mode + * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. + * + * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor + * modes: + * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the + * content area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual + * and unlimited cursor movement. This is useful for implementing for + * example 3D camera controls. + * - `GLFW_CURSOR_CAPTURED` makes the cursor visible and confines it to the + * content area of the window. + * + * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to + * enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are + * enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS` + * the next time it is called even if the key had been released before the + * call. This is useful when you are only interested in whether keys have been + * pressed but not when or in which order. + * + * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either + * `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it. + * If sticky mouse buttons are enabled, a mouse button press will ensure that + * @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even + * if the mouse button had been released before the call. This is useful when + * you are only interested in whether mouse buttons have been pressed but not + * when or in which order. + * + * If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to + * enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled, + * callbacks that receive modifier bits will also have the @ref + * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, + * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. + * + * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` + * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is + * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, + * attempting to set this will emit @ref GLFW_FEATURE_UNAVAILABLE. Call @ref + * glfwRawMouseMotionSupported to check for support. + * + * @param[in] window The window whose input mode to set. + * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. + * @param[in] value The new value of the specified input mode. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_PLATFORM_ERROR and @ref + * GLFW_FEATURE_UNAVAILABLE (see above). + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref glfwGetInputMode + * + * @since Added in version 3.0. Replaces `glfwEnable` and `glfwDisable`. + * + * @ingroup input + */ + SSCAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); + + /*! @brief Returns whether raw mouse motion is supported. + * + * This function returns whether raw mouse motion is supported on the current + * system. This status does not change after GLFW has been initialized so you + * only need to check this once. If you attempt to enable raw motion on + * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. + * + * Raw mouse motion is closer to the actual motion of the mouse across + * a surface. It is not affected by the scaling and acceleration applied to + * the motion of the desktop cursor. That processing is suitable for a cursor + * while raw motion is better for controlling for example a 3D camera. Because + * of this, raw mouse motion is only provided when the cursor is disabled. + * + * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref raw_mouse_motion + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwRawMouseMotionSupported(void); + + /*! @brief Returns the layout-specific name of the specified printable key. + * + * This function returns the name of the specified printable key, encoded as + * UTF-8. This is typically the character that key would produce without any + * modifier keys, intended for displaying key bindings to the user. For dead + * keys, it is typically the diacritic it would add to a character. + * + * __Do not use this function__ for [text input](@ref input_char). You will + * break text input for many languages even if it happens to work for yours. + * + * If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key, + * otherwise the scancode is ignored. If you specify a non-printable key, or + * `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this + * function returns `NULL` but does not emit an error. + * + * This behavior allows you to always pass in the arguments in the + * [key callback](@ref input_key) without modification. + * + * The printable keys are: + * - `GLFW_KEY_APOSTROPHE` + * - `GLFW_KEY_COMMA` + * - `GLFW_KEY_MINUS` + * - `GLFW_KEY_PERIOD` + * - `GLFW_KEY_SLASH` + * - `GLFW_KEY_SEMICOLON` + * - `GLFW_KEY_EQUAL` + * - `GLFW_KEY_LEFT_BRACKET` + * - `GLFW_KEY_RIGHT_BRACKET` + * - `GLFW_KEY_BACKSLASH` + * - `GLFW_KEY_WORLD_1` + * - `GLFW_KEY_WORLD_2` + * - `GLFW_KEY_0` to `GLFW_KEY_9` + * - `GLFW_KEY_A` to `GLFW_KEY_Z` + * - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9` + * - `GLFW_KEY_KP_DECIMAL` + * - `GLFW_KEY_KP_DIVIDE` + * - `GLFW_KEY_KP_MULTIPLY` + * - `GLFW_KEY_KP_SUBTRACT` + * - `GLFW_KEY_KP_ADD` + * - `GLFW_KEY_KP_EQUAL` + * + * Names for printable keys depend on keyboard layout, while names for + * non-printable keys are the same across layouts but depend on the application + * language and should be localized along with other user interface text. + * + * @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`. + * @param[in] scancode The scancode of the key to query. + * @return The UTF-8 encoded, layout-specific name of the key, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key_name + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI const char* glfwGetKeyName(int key, int scancode); + + /*! @brief Returns the platform-specific scancode of the specified key. + * + * This function returns the platform-specific scancode of the specified key. + * + * If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this + * method will return `-1`. + * + * @param[in] key Any [named key](@ref keys). + * @return The platform-specific scancode for the key, or `-1` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref input_key + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwGetKeyScancode(int key); + + /*! @brief Returns the last reported state of a keyboard key for the specified + * window. + * + * This function returns the last state reported for the specified key to the + * specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. The action `GLFW_REPEAT` is only reported to the key callback. + * + * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns + * `GLFW_PRESS` the first time you call it for a key that was pressed, even if + * that key has already been released. + * + * The key functions deal with physical keys, with [key tokens](@ref keys) + * named after their use on the standard US keyboard layout. If you want to + * input text, use the Unicode character callback instead. + * + * The [modifier key bit masks](@ref mods) are not key tokens and cannot be + * used with this function. + * + * __Do not use this function__ to implement [text input](@ref input_char). + * + * @param[in] window The desired window. + * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * not a valid key for this function. + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ + SSCAPI int glfwGetKey(GLFWwindow* window, int key); + + /*! @brief Returns the last reported state of a mouse button for the specified + * window. + * + * This function returns the last state reported for the specified mouse button + * to the specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. + * + * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function + * returns `GLFW_PRESS` the first time you call it for a mouse button that was + * pressed, even if that mouse button has already been released. + * + * @param[in] window The desired window. + * @param[in] button The desired [mouse button](@ref buttons). + * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup input + */ + SSCAPI int glfwGetMouseButton(GLFWwindow* window, int button); + + /*! @brief Retrieves the position of the cursor relative to the content area of + * the window. + * + * This function returns the position of the cursor, in screen coordinates, + * relative to the upper-left corner of the content area of the specified + * window. + * + * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor + * position is unbounded and limited only by the minimum and maximum values of + * a `double`. + * + * The coordinate can be converted to their integer equivalents with the + * `floor` function. Casting directly to an integer type works for positive + * coordinates, but fails for negative ones. + * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * + * @param[in] window The desired window. + * @param[out] xpos Where to store the cursor x-coordinate, relative to the + * left edge of the content area, or `NULL`. + * @param[out] ypos Where to store the cursor y-coordinate, relative to the to + * top edge of the content area, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwSetCursorPos + * + * @since Added in version 3.0. Replaces `glfwGetMousePos`. + * + * @ingroup input + */ + SSCAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); + + /*! @brief Sets the position of the cursor, relative to the content area of the + * window. + * + * This function sets the position, in screen coordinates, of the cursor + * relative to the upper-left corner of the content area of the specified + * window. The window must have input focus. If the window does not have + * input focus when this function is called, it fails silently. + * + * __Do not use this function__ to implement things like camera controls. GLFW + * already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the + * cursor, transparently re-centers it and provides unconstrained cursor + * motion. See @ref glfwSetInputMode for more information. + * + * If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is + * unconstrained and limited only by the minimum and maximum values of + * a `double`. + * + * @param[in] window The desired window. + * @param[in] xpos The desired x-coordinate, relative to the left edge of the + * content area. + * @param[in] ypos The desired y-coordinate, relative to the top edge of the + * content area. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_PLATFORM_ERROR and @ref GLFW_FEATURE_UNAVAILABLE (see remarks). + * + * @remark @wayland This function will only work when the cursor mode is + * `GLFW_CURSOR_DISABLED`, otherwise it will emit @ref GLFW_FEATURE_UNAVAILABLE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * @sa @ref glfwGetCursorPos + * + * @since Added in version 3.0. Replaces `glfwSetMousePos`. + * + * @ingroup input + */ + SSCAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); + + /*! @brief Creates a custom cursor. + * + * Creates a new custom cursor image that can be set for a window with @ref + * glfwSetCursor. The cursor can be destroyed with @ref glfwDestroyCursor. + * Any remaining cursors are destroyed by @ref glfwTerminate. + * + * The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight + * bits per channel with the red channel first. They are arranged canonically + * as packed sequential rows, starting from the top-left corner. + * + * The cursor hotspot is specified in pixels, relative to the upper-left corner + * of the cursor image. Like all other coordinate systems in GLFW, the X-axis + * points to the right and the Y-axis points down. + * + * @param[in] image The desired cursor image. + * @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot. + * @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot. + * @return The handle of the created cursor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified image data is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwDestroyCursor + * @sa @ref glfwCreateStandardCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); + + /*! @brief Creates a cursor with a standard shape. + * + * Returns a cursor with a standard shape, that can be set for a window with + * @ref glfwSetCursor. The images for these cursors come from the system + * cursor theme and their exact appearance will vary between platforms. + * + * Most of these shapes are guaranteed to exist on every supported platform but + * a few may not be present. See the table below for details. + * + * Cursor shape | Windows | macOS | X11 | Wayland + * ------------------------------ | ------- | ----- | ------ | ------- + * @ref GLFW_ARROW_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_IBEAM_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_CROSSHAIR_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_POINTING_HAND_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_EW_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_NS_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_RESIZE_NWSE_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 + * @ref GLFW_RESIZE_NESW_CURSOR | Yes | Yes1 | Maybe2 | Maybe2 + * @ref GLFW_RESIZE_ALL_CURSOR | Yes | Yes | Yes | Yes + * @ref GLFW_NOT_ALLOWED_CURSOR | Yes | Yes | Maybe2 | Maybe2 + * + * 1) This uses a private system API and may fail in the future. + * + * 2) This uses a newer standard that not all cursor themes support. + * + * If the requested shape is not available, this function emits a @ref + * GLFW_CURSOR_UNAVAILABLE error and returns `NULL`. + * + * @param[in] shape One of the [standard shapes](@ref shapes). + * @return A new cursor ready to use or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM, @ref GLFW_CURSOR_UNAVAILABLE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_standard + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWcursor* glfwCreateStandardCursor(int shape); + + /*! @brief Destroys a cursor. + * + * This function destroys a cursor previously created with @ref + * glfwCreateCursor. Any remaining cursors will be destroyed by @ref + * glfwTerminate. + * + * If the specified cursor is current for any window, that window will be + * reverted to the default cursor. This does not affect the cursor mode. + * + * @param[in] cursor The cursor object to destroy. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @reentrancy This function must not be called from a callback. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * @sa @ref glfwCreateCursor + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI void glfwDestroyCursor(GLFWcursor* cursor); + + /*! @brief Sets the cursor for the window. + * + * This function sets the cursor image to be used when the cursor is over the + * content area of the specified window. The set cursor will only be visible + * when the [cursor mode](@ref cursor_mode) of the window is + * `GLFW_CURSOR_NORMAL`. + * + * On some platforms, the set cursor may not be visible unless the window also + * has input focus. + * + * @param[in] window The window to set the cursor for. + * @param[in] cursor The cursor to set, or `NULL` to switch back to the default + * arrow cursor. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_object + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); + + /*! @brief Sets the key callback. + * + * This function sets the key callback of the specified window, which is called + * when a key is pressed, repeated or released. + * + * The key functions deal with physical keys, with layout independent + * [key tokens](@ref keys) named after their values in the standard US keyboard + * layout. If you want to input text, use the + * [character callback](@ref glfwSetCharCallback) instead. + * + * When a window loses input focus, it will generate synthetic key release + * events for all pressed keys. You can tell these events from user-generated + * events by the fact that the synthetic ones are generated after the focus + * loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * The scancode of a key is specific to that platform or sometimes even to that + * machine. Scancodes are intended to allow users to bind keys that don't have + * a GLFW key token. Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their + * state is not saved and so it cannot be queried with @ref glfwGetKey. + * + * Sometimes GLFW needs to generate synthetic key events, in which case the + * scancode may be zero. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new key callback, or `NULL` to remove the currently + * set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ + SSCAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); + + /*! @brief Sets the Unicode character callback. + * + * This function sets the character callback of the specified window, which is + * called when a Unicode character is input. + * + * The character callback is intended for Unicode text input. As it deals with + * characters, it is keyboard layout dependent, whereas the + * [key callback](@ref glfwSetKeyCallback) is not. Characters do not map 1:1 + * to physical keys, as a key may produce zero, one or more characters. If you + * want to know whether a specific physical key was pressed or released, see + * the key callback instead. + * + * The character callback behaves as system text input normally does and will + * not be called if modifier keys are held down that would prevent normal text + * input on that platform, for example a Super (Command) key on macOS or Alt key + * on Windows. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 2.4. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ + SSCAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); + + /*! @brief Sets the Unicode character with modifiers callback. + * + * This function sets the character with modifiers callback of the specified + * window, which is called when a Unicode character is input regardless of what + * modifier keys are used. + * + * The character with modifiers callback is intended for implementing custom + * Unicode character input. For regular Unicode text input, see the + * [character callback](@ref glfwSetCharCallback). Like the character + * callback, the character with modifiers callback deals with characters and is + * keyboard layout dependent. Characters do not map 1:1 to physical keys, as + * a key may produce zero, one or more characters. If you want to know whether + * a specific physical key was pressed or released, see the + * [key callback](@ref glfwSetKeyCallback) instead. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or an + * [error](@ref error_handling) occurred. + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * + * @deprecated Scheduled for removal in version 4.0. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); + + /*! @brief Sets the mouse button callback. + * + * This function sets the mouse button callback of the specified window, which + * is called when a mouse button is pressed or released. + * + * When a window loses input focus, it will generate synthetic mouse button + * release events for all pressed mouse buttons. You can tell these events + * from user-generated events by the fact that the synthetic ones are generated + * after the focus loss event has been processed, i.e. after the + * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter and return value. + * + * @ingroup input + */ + SSCAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); + + /*! @brief Sets the cursor position callback. + * + * This function sets the cursor position callback of the specified window, + * which is called when the cursor is moved. The callback is provided with the + * position, in screen coordinates, relative to the upper-left corner of the + * content area of the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_pos + * + * @since Added in version 3.0. Replaces `glfwSetMousePosCallback`. + * + * @ingroup input + */ + SSCAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); + + /*! @brief Sets the cursor enter/leave callback. + * + * This function sets the cursor boundary crossing callback of the specified + * window, which is called when the cursor enters or leaves the content area of + * the window. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref cursor_enter + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); + + /*! @brief Sets the scroll callback. + * + * This function sets the scroll callback of the specified window, which is + * called when a scrolling device is used, such as a mouse wheel or scrolling + * area of a touchpad. + * + * The scroll callback receives all scrolling input, like that from a mouse + * wheel or a touchpad scrolling area. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref scrolling + * + * @since Added in version 3.0. Replaces `glfwSetMouseWheelCallback`. + * + * @ingroup input + */ + SSCAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); + + /*! @brief Sets the path drop callback. + * + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. + * + * Because the path array and its strings may have been generated specifically + * for that event, they are not guaranteed to be valid after the callback has + * returned. If you wish to use them after the callback returns, you need to + * make a deep copy. + * + * @param[in] window The window whose callback to set. + * @param[in] callback The new file drop callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark @wayland File drop is currently unimplemented. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref path_drop + * + * @since Added in version 3.1. + * + * @ingroup input + */ + SSCAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); + + /*! @brief Returns whether the specified joystick is present. + * + * This function returns whether the specified joystick is present. + * + * There is no need to call this function before other functions that accept + * a joystick ID, as they all check for presence before performing any other + * work. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick + * + * @since Added in version 3.0. Replaces `glfwGetJoystickParam`. + * + * @ingroup input + */ + SSCAPI int glfwJoystickPresent(int jid); + + /*! @brief Returns the values of all axes of the specified joystick. + * + * This function returns the values of all axes of the specified joystick. + * Each element in the array is a value between -1.0 and 1.0. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of axis values in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of axis values, or `NULL` if the joystick is not present or + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_axis + * + * @since Added in version 3.0. Replaces `glfwGetJoystickPos`. + * + * @ingroup input + */ + SSCAPI const float* glfwGetJoystickAxes(int jid, int* count); + + /*! @brief Returns the state of all buttons of the specified joystick. + * + * This function returns the state of all buttons of the specified joystick. + * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. + * + * For backward compatibility with earlier versions that did not have @ref + * glfwGetJoystickHats, the button array also includes all hats, each + * represented as four buttons. The hats are in the same order as returned by + * __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and + * _left_. To disable these extra buttons, set the @ref + * GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of button states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of button states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_button + * + * @since Added in version 2.2. + * @glfw3 Changed to return a dynamic array. + * + * @ingroup input + */ + SSCAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); + + /*! @brief Returns the state of all hats of the specified joystick. + * + * This function returns the state of all hats of the specified joystick. + * Each element in the array is one of the following values: + * + * Name | Value + * ---- | ----- + * `GLFW_HAT_CENTERED` | 0 + * `GLFW_HAT_UP` | 1 + * `GLFW_HAT_RIGHT` | 2 + * `GLFW_HAT_DOWN` | 4 + * `GLFW_HAT_LEFT` | 8 + * `GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP` + * `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN` + * `GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP` + * `GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN` + * + * The diagonal directions are bitwise combinations of the primary (up, right, + * down and left) directions and you can test for these individually by ANDing + * it with the corresponding direction. + * + * @code + * if (hats[2] & GLFW_HAT_RIGHT) + * { + * // State of hat 2 could be right-up, right or right-down + * } + * @endcode + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of hat states in the returned + * array. This is set to zero if the joystick is not present or an error + * occurred. + * @return An array of hat states, or `NULL` if the joystick is not present + * or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, this function is called again for that joystick or the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_hat + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); + + /*! @brief Returns the name of the specified joystick. + * + * This function returns the name, encoded as UTF-8, of the specified joystick. + * The returned string is allocated and freed by GLFW. You should not free it + * yourself. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_name + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI const char* glfwGetJoystickName(int jid); + + /*! @brief Returns the SDL compatible GUID of the specified joystick. + * + * This function returns the SDL compatible GUID, as a UTF-8 encoded + * hexadecimal string, of the specified joystick. The returned string is + * allocated and freed by GLFW. You should not free it yourself. + * + * The GUID is what connects a joystick to a gamepad mapping. A connected + * joystick will always have a GUID even if there is no gamepad mapping + * assigned to it. + * + * If the specified joystick is not present this function will return `NULL` + * but will not generate an error. This can be used instead of first calling + * @ref glfwJoystickPresent. + * + * The GUID uses the format introduced in SDL 2.0.5. This GUID tries to + * uniquely identify the make and model of a joystick but does not identify + * a specific unit, e.g. all wired Xbox 360 controllers will have the same + * GUID on that platform. The GUID for a unit may vary between platforms + * depending on what hardware information the platform specific APIs provide. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick + * is not present or an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI const char* glfwGetJoystickGUID(int jid); + + /*! @brief Sets the user pointer of the specified joystick. + * + * This function sets the user-defined pointer of the specified joystick. The + * current value is retained until the joystick is disconnected. The initial + * value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to set. + * @param[in] pointer The new value. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwGetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI void glfwSetJoystickUserPointer(int jid, void* pointer); + + /*! @brief Returns the user pointer of the specified joystick. + * + * This function returns the current value of the user-defined pointer of the + * specified joystick. The initial value is `NULL`. + * + * This function may be called from the joystick callback, even for a joystick + * that is being disconnected. + * + * @param[in] jid The joystick whose pointer to return. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @sa @ref joystick_userptr + * @sa @ref glfwSetJoystickUserPointer + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI void* glfwGetJoystickUserPointer(int jid); + + /*! @brief Returns whether the specified joystick has a gamepad mapping. + * + * This function returns whether the specified joystick is both present and has + * a gamepad mapping. + * + * If the specified joystick is present but does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check if a joystick is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwGetGamepadState + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwJoystickIsGamepad(int jid); + + /*! @brief Sets the joystick configuration callback. + * + * This function sets the joystick configuration callback, or removes the + * currently set callback. This is called when a joystick is connected to or + * disconnected from the system. + * + * For joystick connection and disconnection events to be delivered on all + * platforms, you need to call one of the [event processing](@ref events) + * functions. Joystick disconnection may also be detected and the callback + * called by joystick functions. The function will then return whatever it + * returns if the joystick is not present. + * + * @param[in] callback The new callback, or `NULL` to remove the currently set + * callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref joystick_event + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); + + /*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. + * + * This function parses the specified ASCII encoded string and updates the + * internal list with any gamepad mappings it finds. This string may + * contain either a single gamepad mapping or many mappings separated by + * newlines. The parser supports the full format of the `gamecontrollerdb.txt` + * source file including empty lines and comments. + * + * See @ref gamepad_mapping for a description of the format. + * + * If there is already a gamepad mapping for a given GUID in the internal list, + * it will be replaced by the one passed to this function. If the library is + * terminated and re-initialized the internal list will revert to the built-in + * default. + * + * @param[in] string The string containing the gamepad mappings. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * @sa @ref glfwGetGamepadName + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwUpdateGamepadMappings(const char* string); + + /*! @brief Returns the human-readable gamepad name for the specified joystick. + * + * This function returns the human-readable name of the gamepad from the + * gamepad mapping assigned to the specified joystick. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `NULL` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @return The UTF-8 encoded name of the gamepad, or `NULL` if the + * joystick is not present, does not have a mapping or an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref GLFW_INVALID_ENUM. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the specified joystick is + * disconnected, the gamepad mappings are updated or the library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI const char* glfwGetGamepadName(int jid); + + /*! @brief Retrieves the state of the specified joystick remapped as a gamepad. + * + * This function retrieves the state of the specified joystick remapped to + * an Xbox-like gamepad. + * + * If the specified joystick is not present or does not have a gamepad mapping + * this function will return `GLFW_FALSE` but will not generate an error. Call + * @ref glfwJoystickPresent to check whether it is present regardless of + * whether it has a mapping. + * + * The Guide button may not be available for input as it is often hooked by the + * system or the Steam client. + * + * Not all devices have all the buttons or axes provided by @ref + * GLFWgamepadstate. Unavailable buttons and axes will always report + * `GLFW_RELEASE` and 0.0 respectively. + * + * @param[in] jid The [joystick](@ref joysticks) to query. + * @param[out] state The gamepad input state of the joystick. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is + * connected, it has no gamepad mapping or an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_ENUM. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref gamepad + * @sa @ref glfwUpdateGamepadMappings + * @sa @ref glfwJoystickIsGamepad + * + * @since Added in version 3.3. + * + * @ingroup input + */ + SSCAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); + + /*! @brief Sets the clipboard to the specified string. + * + * This function sets the system clipboard to the specified, UTF-8 encoded + * string. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwGetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); + + /*! @brief Returns the contents of the clipboard as a string. + * + * This function returns the contents of the system clipboard, if it contains + * or is convertible to a UTF-8 encoded string. If the clipboard is empty or + * if its contents cannot be converted, `NULL` is returned and a @ref + * GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @param[in] window Deprecated. Any valid window or `NULL`. + * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_FORMAT_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library + * is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa @ref glfwSetClipboardString + * + * @since Added in version 3.0. + * + * @ingroup input + */ + SSCAPI const char* glfwGetClipboardString(GLFWwindow* window); + + /*! @brief Returns the GLFW time. + * + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. + * + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * The resolution of the timer is system dependent, but is usually on the order + * of a few micro- or nanoseconds. It uses the highest-resolution monotonic + * time source on each operating system. + * + * @return The current time, in seconds, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwSetTime. + * + * @sa @ref time + * + * @since Added in version 1.0. + * + * @ingroup input + */ + SSCAPI double glfwGetTime(void); + + /*! @brief Sets the GLFW time. + * + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. + * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. + * + * @param[in] time The new value, in seconds. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_INVALID_VALUE. + * + * @remark The upper limit of GLFW time is calculated as + * floor((264 - 1) / 109) and is due to implementations + * storing nanoseconds in 64 bits. The limit may be increased in the future. + * + * @thread_safety This function may be called from any thread. Reading and + * writing of the internal base time is not atomic, so it needs to be + * externally synchronized with calls to @ref glfwGetTime. + * + * @sa @ref time + * + * @since Added in version 2.2. + * + * @ingroup input + */ + SSCAPI void glfwSetTime(double time); + + /*! @brief Returns the current value of the raw timer. + * + * This function returns the current value of the raw timer, measured in + * 1 / frequency seconds. To get the frequency, call @ref + * glfwGetTimerFrequency. + * + * @return The value of the timer, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerFrequency + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI uint64_t glfwGetTimerValue(void); + + /*! @brief Returns the frequency, in Hz, of the raw timer. + * + * This function returns the frequency, in Hz, of the raw timer. + * + * @return The frequency of the timer, in Hz, or zero if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref time + * @sa @ref glfwGetTimerValue + * + * @since Added in version 3.2. + * + * @ingroup input + */ + SSCAPI uint64_t glfwGetTimerFrequency(void); + + /*! @brief Makes the context of the specified window current for the calling + * thread. + * + * This function makes the OpenGL or OpenGL ES context of the specified window + * current on the calling thread. A context must only be made current on + * a single thread at a time and each thread can have only a single current + * context at a time. + * + * When moving a context between threads, you must make it non-current on the + * old thread before making it current on the new one. + * + * By default, making a context non-current implicitly forces a pipeline flush. + * On machines that support `GL_KHR_context_flush_control`, you can control + * whether a context performs this flush by setting the + * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) + * hint. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * @param[in] window The window whose context to make current, or `NULL` to + * detach the current context. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwGetCurrentContext + * + * @since Added in version 3.0. + * + * @ingroup context + */ + SSCAPI void glfwMakeContextCurrent(GLFWwindow* window); + + /*! @brief Returns the window whose context is current on the calling thread. + * + * This function returns the window whose OpenGL or OpenGL ES context is + * current on the calling thread. + * + * @return The window whose context is current, or `NULL` if no window's + * context is current. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_current + * @sa @ref glfwMakeContextCurrent + * + * @since Added in version 3.0. + * + * @ingroup context + */ + SSCAPI GLFWwindow* glfwGetCurrentContext(void); + + /*! @brief Swaps the front and back buffers of the specified window. + * + * This function swaps the front and back buffers of the specified window when + * rendering with OpenGL or OpenGL ES. If the swap interval is greater than + * zero, the GPU driver waits the specified number of screen updates before + * swapping the buffers. + * + * The specified window must have an OpenGL or OpenGL ES context. Specifying + * a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT + * error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see `vkQueuePresentKHR` instead. + * + * @param[in] window The window whose buffers to swap. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark __EGL:__ The context of the specified window must be current on the + * calling thread. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapInterval + * + * @since Added in version 1.0. + * @glfw3 Added window handle parameter. + * + * @ingroup window + */ + SSCAPI void glfwSwapBuffers(GLFWwindow* window); + + /*! @brief Sets the swap interval for the current context. + * + * This function sets the swap interval for the current OpenGL or OpenGL ES + * context, i.e. the number of screen updates to wait from the time @ref + * glfwSwapBuffers was called before swapping the buffers and returning. This + * is sometimes called _vertical synchronization_, _vertical retrace + * synchronization_ or just _vsync_. + * + * A context that supports either of the `WGL_EXT_swap_control_tear` and + * `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap + * intervals, which allows the driver to swap immediately even if a frame + * arrives a little bit late. You can check for these extensions with @ref + * glfwExtensionSupported. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see the present mode of your swapchain instead. + * + * @param[in] interval The minimum number of screen updates to wait for + * until the buffers are swapped by @ref glfwSwapBuffers. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark This function is not called during context creation, leaving the + * swap interval set to whatever is the default for that API. This is done + * because some swap interval extensions used by GLFW do not allow the swap + * interval to be reset to zero once it has been set to a non-zero value. + * + * @remark Some GPU drivers do not honor the requested swap interval, either + * because of a user setting that overrides the application's request or due to + * bugs in the driver. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref buffer_swap + * @sa @ref glfwSwapBuffers + * + * @since Added in version 1.0. + * + * @ingroup context + */ + SSCAPI void glfwSwapInterval(int interval); + + /*! @brief Returns whether the specified extension is available. + * + * This function returns whether the specified + * [API extension](@ref context_glext) is supported by the current OpenGL or + * OpenGL ES context. It searches both for client API extension and context + * creation API extensions. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * As this functions retrieves and searches one or more extension strings each + * call, it is recommended that you cache its results if it is going to be used + * frequently. The extension strings will not change during the lifetime of + * a context, so there is no danger in doing this. + * + * This function does not apply to Vulkan. If you are using Vulkan, see @ref + * glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties` + * and `vkEnumerateDeviceExtensionProperties` instead. + * + * @param[in] extension The ASCII encoded name of the extension. + * @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwGetProcAddress + * + * @since Added in version 1.0. + * + * @ingroup context + */ + SSCAPI int glfwExtensionSupported(const char* extension); + + /*! @brief Returns the address of the specified function for the current + * context. + * + * This function returns the address of the specified OpenGL or OpenGL ES + * [core or extension function](@ref context_glext), if it is supported + * by the current context. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * This function does not apply to Vulkan. If you are rendering with Vulkan, + * see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and + * `vkGetDeviceProcAddr` instead. + * + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR. + * + * @remark The address of a given function is not guaranteed to be the same + * between contexts. + * + * @remark This function may return a non-`NULL` address despite the + * associated version or extension not being available. Always check the + * context version or extension string first. + * + * @pointer_lifetime The returned function pointer is valid until the context + * is destroyed or the library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref context_glext + * @sa @ref glfwExtensionSupported + * + * @since Added in version 1.0. + * + * @ingroup context + */ + SSCAPI GLFWglproc glfwGetProcAddress(const char* procname); + + /*! @brief Returns whether the Vulkan loader and an ICD have been found. + * + * This function returns whether the Vulkan loader and any minimally functional + * ICD have been found. + * + * The availability of a Vulkan loader and even an ICD does not by itself guarantee that + * surface creation or even instance creation is possible. Call @ref + * glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan + * surface creation are available and @ref glfwGetPhysicalDevicePresentationSupport to + * check whether a queue family of a physical device supports image presentation. + * + * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` + * otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_support + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI int glfwVulkanSupported(void); + + /*! @brief Returns the Vulkan instance extensions required by GLFW. + * + * This function returns an array of names of Vulkan instance extensions required + * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the + * list will always contain `VK_KHR_surface`, so if you don't require any + * additional extensions you can pass this list directly to the + * `VkInstanceCreateInfo` struct. + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * If Vulkan is available but no set of extensions allowing window surface + * creation was found, this function returns `NULL`. You may still use Vulkan + * for off-screen rendering and compute work. + * + * @param[out] count Where to store the number of extensions in the returned + * array. This is set to zero if an error occurred. + * @return An array of ASCII encoded extension names, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @remark Additional extensions may be required by future versions of GLFW. + * You should check if any extensions you wish to enable are already in the + * returned array, as it is an error to specify an extension more than once in + * the `VkInstanceCreateInfo` struct. + * + * @pointer_lifetime The returned array is allocated and freed by GLFW. You + * should not free it yourself. It is guaranteed to be valid only until the + * library is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_ext + * @sa @ref glfwCreateWindowSurface + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count); + +#if defined(VK_VERSION_1_0) + + /*! @brief Returns the address of the specified Vulkan instance function. + * + * This function returns the address of the specified Vulkan core or extension + * function for the specified instance. If instance is set to `NULL` it can + * return any function exported from the Vulkan loader, including at least the + * following functions: + * + * - `vkEnumerateInstanceExtensionProperties` + * - `vkEnumerateInstanceLayerProperties` + * - `vkCreateInstance` + * - `vkGetInstanceProcAddr` + * + * If Vulkan is not available on the machine, this function returns `NULL` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available. + * + * This function is equivalent to calling `vkGetInstanceProcAddr` with + * a platform-specific query of the Vulkan loader as a fallback. + * + * @param[in] instance The Vulkan instance to query, or `NULL` to retrieve + * functions related to instance creation. + * @param[in] procname The ASCII encoded name of the function. + * @return The address of the function, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_API_UNAVAILABLE. + * + * @pointer_lifetime The returned function pointer is valid until the library + * is terminated. + * + * @thread_safety This function may be called from any thread. + * + * @sa @ref vulkan_proc + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname); + + /*! @brief Returns whether the specified queue family can present images. + * + * This function returns whether the specified queue family of the specified + * physical device supports presentation to the platform GLFW was built for. + * + * If Vulkan or the required window surface creation instance extensions are + * not available on the machine, or if the specified instance was not created + * with the required extensions, this function returns `GLFW_FALSE` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported + * to check whether Vulkan is at least minimally available and @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * @param[in] instance The instance that the physical device belongs to. + * @param[in] device The physical device that the queue family belongs to. + * @param[in] queuefamily The index of the queue family to query. + * @return `GLFW_TRUE` if the queue family supports presentation, or + * `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. + * + * @remark @macos This function currently always returns `GLFW_TRUE`, as the + * `VK_MVK_macos_surface` and `VK_EXT_metal_surface` extensions do not provide + * a `vkGetPhysicalDevice*PresentationSupport` type function. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_present + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily); + + /*! @brief Creates a Vulkan surface for the specified window. + * + * This function creates a Vulkan surface for the specified window. + * + * If the Vulkan loader or at least one minimally functional ICD were not found, + * this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref + * GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported to check whether + * Vulkan is at least minimally available. + * + * If the required window surface creation instance extensions are not + * available or if the specified instance was not created with these extensions + * enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and + * generates a @ref GLFW_API_UNAVAILABLE error. Call @ref + * glfwGetRequiredInstanceExtensions to check what instance extensions are + * required. + * + * The window surface cannot be shared with another API so the window must + * have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib) + * set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error + * and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`. + * + * The window surface must be destroyed before the specified Vulkan instance. + * It is the responsibility of the caller to destroy the window surface. GLFW + * does not destroy it for you. Call `vkDestroySurfaceKHR` to destroy the + * surface. + * + * @param[in] instance The Vulkan instance to create the surface in. + * @param[in] window The window to create the surface for. + * @param[in] allocator The allocator to use, or `NULL` to use the default + * allocator. + * @param[out] surface Where to store the handle of the surface. This is set + * to `VK_NULL_HANDLE` if an error occurred. + * @return `VK_SUCCESS` if successful, or a Vulkan error code if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE + * + * @remark If an error occurs before the creation call is made, GLFW returns + * the Vulkan error code most appropriate for the error. Appropriate use of + * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should + * eliminate almost all occurrences of these errors. + * + * @remark @macos GLFW prefers the `VK_EXT_metal_surface` extension, with the + * `VK_MVK_macos_surface` extension as a fallback. The name of the selected + * extension, if any, is included in the array returned by @ref + * glfwGetRequiredInstanceExtensions. + * + * @remark @macos This function creates and sets a `CAMetalLayer` instance for + * the window content view, which is required for MoltenVK to function. + * + * @remark @x11 By default GLFW prefers the `VK_KHR_xcb_surface` extension, + * with the `VK_KHR_xlib_surface` extension as a fallback. You can make + * `VK_KHR_xlib_surface` the preferred extension by setting the + * [GLFW_X11_XCB_VULKAN_SURFACE](@ref GLFW_X11_XCB_VULKAN_SURFACE_hint) init + * hint. The name of the selected extension, if any, is included in the array + * returned by @ref glfwGetRequiredInstanceExtensions. + * + * @thread_safety This function may be called from any thread. For + * synchronization details of Vulkan objects, see the Vulkan specification. + * + * @sa @ref vulkan_surface + * @sa @ref glfwGetRequiredInstanceExtensions + * + * @since Added in version 3.2. + * + * @ingroup vulkan + */ + SSCAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + +#endif /*VK_VERSION_1_0*/ + + + /************************************************************************* + * Global definition cleanup + *************************************************************************/ + + /* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */ + +#ifdef GLFW_WINGDIAPI_DEFINED +#undef WINGDIAPI +#undef GLFW_WINGDIAPI_DEFINED +#endif + +#ifdef GLFW_CALLBACK_DEFINED +#undef CALLBACK +#undef GLFW_CALLBACK_DEFINED +#endif + +/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally + * defined by some gl.h variants (OpenBSD) so define it after if needed. + */ +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#define GLFW_GLAPIENTRY_DEFINED +#endif + + /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_h_ */ + diff --git a/StgSharp.C/glfw3.lib b/StgSharp.C/glfw3.lib new file mode 100644 index 00000000..4baa46d0 Binary files /dev/null and b/StgSharp.C/glfw3.lib differ diff --git a/StgSharp.C/glfw3_mt.lib b/StgSharp.C/glfw3_mt.lib new file mode 100644 index 00000000..30ba4ada Binary files /dev/null and b/StgSharp.C/glfw3_mt.lib differ diff --git a/StgSharp.C/glfw3dll.lib b/StgSharp.C/glfw3dll.lib new file mode 100644 index 00000000..e1b3f3ef Binary files /dev/null and b/StgSharp.C/glfw3dll.lib differ diff --git a/StgSharp.C/glfw3native.h b/StgSharp.C/glfw3native.h new file mode 100644 index 00000000..a97c9840 --- /dev/null +++ b/StgSharp.C/glfw3native.h @@ -0,0 +1,632 @@ +/************************************************************************* + * GLFW 3.4 - www.glfw->org + * A library for OpenGL, window and input + *------------------------------------------------------------------------ + * Copyright (c) 2002-2006 Marcus Geelnard + * Copyright (c) 2006-2018 Camilla Löwy org> + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would + * be appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + *************************************************************************/ + +#ifndef _glfw3_native_h_ +#define _glfw3_native_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/************************************************************************* + * Doxygen documentation + *************************************************************************/ + +/*! @file glfw3native.h + * @brief The header of the native access functions. + * + * This is the header file of the native access functions. See @ref native for + * more information. + */ +/*! @defgroup native Native access + * @brief Functions related to accessing native handles. + * + * **By using the native access functions you assert that you know what you're + * doing and how to fix problems caused by using them. If you don't, you + * shouldn't be using them.** + * + * Before the inclusion of @ref glfw3native.h, you may define zero or more + * window system API macro and zero or more context creation API macros. + * + * The chosen backends must match those the library was compiled for. Failure + * to do this will cause a link-time error. + * + * The available window API macros are: + * * `GLFW_EXPOSE_NATIVE_WIN32` + * * `GLFW_EXPOSE_NATIVE_COCOA` + * * `GLFW_EXPOSE_NATIVE_X11` + * * `GLFW_EXPOSE_NATIVE_WAYLAND` + * + * The available context API macros are: + * * `GLFW_EXPOSE_NATIVE_WGL` + * * `GLFW_EXPOSE_NATIVE_NSGL` + * * `GLFW_EXPOSE_NATIVE_GLX` + * * `GLFW_EXPOSE_NATIVE_EGL` + * * `GLFW_EXPOSE_NATIVE_OSMESA` + * + * These macros select which of the native access functions that are declared + * and which platform-specific headers to include. It is then up your (by + * definition platform-specific) code to handle which of these should be + * defined. + * + * If you do not want the platform-specific headers to be included, define + * `GLFW_NATIVE_INCLUDE_NONE` before including the @ref glfw3native.h header. + * + * @code + * #define GLFW_EXPOSE_NATIVE_WIN32 + * #define GLFW_EXPOSE_NATIVE_WGL + * #define GLFW_NATIVE_INCLUDE_NONE + * #include + * @endcode + */ + +/************************************************************************* + * System headers and types + *************************************************************************/ + +#if !defined(GLFW_NATIVE_INCLUDE_NONE) + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) +/* This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + * example to allow applications to correctly declare a GL_KHR_debug callback) + * but windows.h assumes no one will define APIENTRY before it does + */ +#if defined(GLFW_APIENTRY_DEFINED) +#undef APIENTRY +#undef GLFW_APIENTRY_DEFINED +#endif +#include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) +#if defined(__OBJC__) +#import +#else +#include +#include +#endif +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) +#include +#include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +#include +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/* WGL is declared by windows.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/* NSGL is declared by Cocoa.h */ +#endif +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, glx.h will include gl.h, which will define it unconditionally + */ +#if defined(GLFW_GLAPIENTRY_DEFINED) +#undef GLAPIENTRY +#undef GLFW_GLAPIENTRY_DEFINED +#endif +#include +#endif +#if defined(GLFW_EXPOSE_NATIVE_EGL) +#include +#endif +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, osmesa.h will include gl.h, which will define it unconditionally + */ +#if defined(GLFW_GLAPIENTRY_DEFINED) +#undef GLAPIENTRY +#undef GLFW_GLAPIENTRY_DEFINED +#endif +#include +#endif + +#endif /*GLFW_NATIVE_INCLUDE_NONE*/ + +/************************************************************************* + * Functions + *************************************************************************/ + +#if defined(GLFW_EXPOSE_NATIVE_WIN32) +/*! @brief Returns the adapter device name of the specified monitor. + * + * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) + * of the specified monitor, or `NULL` if an [error](@ref error_handling) + * occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI const char *glfwGetWin32Adapter(GLFWmonitor *monitor); + +/*! @brief Returns the display device name of the specified monitor. + * + * @return The UTF-8 encoded display device name (for example + * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI const char *glfwGetWin32Monitor(GLFWmonitor *monitor); + +/*! @brief Returns the `HWND` of the specified window. + * + * @return The `HWND` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI HWND glfwGetWin32Window(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WGL) +/*! @brief Returns the `HGLRC` of the specified window. + * + * @return The `HGLRC` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI HGLRC glfwGetWGLContext(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_COCOA) +/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. + * + * @return The `CGDirectDisplayID` of the specified monitor, or + * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor *monitor); + +/*! @brief Returns the `NSWindow` of the specified window. + * + * @return The `NSWindow` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI id glfwGetCocoaWindow(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_NSGL) +/*! @brief Returns the `NSOpenGLContext` of the specified window. + * + * @return The `NSOpenGLContext` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI id glfwGetNSGLContext(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_X11) +/*! @brief Returns the `Display` used by GLFW. + * + * @return The `Display` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI Display *glfwGetX11Display(void); + +/*! @brief Returns the `RRCrtc` of the specified monitor. + * + * @return The `RRCrtc` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI RRCrtc glfwGetX11Adapter(GLFWmonitor *monitor); + +/*! @brief Returns the `RROutput` of the specified monitor. + * + * @return The `RROutput` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.1. + * + * @ingroup native + */ +SSCAPI RROutput glfwGetX11Monitor(GLFWmonitor *monitor); + +/*! @brief Returns the `Window` of the specified window. + * + * @return The `Window` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI Window glfwGetX11Window(GLFWwindow *window); + +/*! @brief Sets the current primary selection to the specified string. + * + * @param[in] string A UTF-8 encoded string. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The specified string is copied before this function + * returns. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwGetX11SelectionString + * @sa glfwSetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI void glfwSetX11SelectionString(const char *string); + +/*! @brief Returns the contents of the current primary selection as a string. + * + * If the selection is empty or if its contents cannot be converted, `NULL` + * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated. + * + * @return The contents of the selection as a UTF-8 encoded string, or `NULL` + * if an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @pointer_lifetime The returned string is allocated and freed by GLFW. You + * should not free it yourself. It is valid until the next call to @ref + * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the + * library is terminated. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref clipboard + * @sa glfwSetX11SelectionString + * @sa glfwGetClipboardString + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI const char *glfwGetX11SelectionString(void); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_GLX) +/*! @brief Returns the `GLXContext` of the specified window. + * + * @return The `GLXContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI GLXContext glfwGetGLXContext(GLFWwindow *window); + +/*! @brief Returns the `GLXWindow` of the specified window. + * + * @return The `GLXWindow` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI GLXWindow glfwGetGLXWindow(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_WAYLAND) +/*! @brief Returns the `struct wl_display*` used by GLFW. + * + * @return The `struct wl_display*` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI struct wl_display *glfwGetWaylandDisplay(void); + +/*! @brief Returns the `struct wl_output*` of the specified monitor. + * + * @return The `struct wl_output*` of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI struct wl_output *glfwGetWaylandMonitor(GLFWmonitor *monitor); + +/*! @brief Returns the main `struct wl_surface*` of the specified window. + * + * @return The main `struct wl_surface*` of the specified window, or `NULL` if + * an [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.2. + * + * @ingroup native + */ +SSCAPI struct wl_surface *glfwGetWaylandWindow(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_EGL) +/*! @brief Returns the `EGLDisplay` used by GLFW. + * + * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark Because EGL is initialized on demand, this function will return + * `EGL_NO_DISPLAY` until the first context has been created via EGL. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI EGLDisplay glfwGetEGLDisplay(void); + +/*! @brief Returns the `EGLContext` of the specified window. + * + * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI EGLContext glfwGetEGLContext(GLFWwindow *window); + +/*! @brief Returns the `EGLSurface` of the specified window. + * + * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.0. + * + * @ingroup native + */ +SSCAPI EGLSurface glfwGetEGLSurface(GLFWwindow *window); +#endif + +#if defined(GLFW_EXPOSE_NATIVE_OSMESA) +/*! @brief Retrieves the color buffer associated with the specified window. + * + * @param[in] window The window whose color buffer to retrieve. + * @param[out] width Where to store the width of the color buffer, or `NULL`. + * @param[out] height Where to store the height of the color buffer, or `NULL`. + * @param[out] format Where to store the OSMesa pixel format of the color + * buffer, or `NULL`. + * @param[out] buffer Where to store the address of the color buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI int glfwGetOSMesaColorBuffer(GLFWwindow *window, int *width, int *height, int *format, + void **buffer); + +/*! @brief Retrieves the depth buffer associated with the specified window. + * + * @param[in] window The window whose depth buffer to retrieve. + * @param[out] width Where to store the width of the depth buffer, or `NULL`. + * @param[out] height Where to store the height of the depth buffer, or `NULL`. + * @param[out] bytesPerValue Where to store the number of bytes per depth + * buffer element, or `NULL`. + * @param[out] buffer Where to store the address of the depth buffer, or + * `NULL`. + * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI int glfwGetOSMesaDepthBuffer(GLFWwindow *window, int *width, int *height, int *bytesPerValue, + void **buffer); + +/*! @brief Returns the `OSMesaContext` of the specified window. + * + * @return The `OSMesaContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @thread_safety This function may be called from any thread. Access is not + * synchronized. + * + * @since Added in version 3.3. + * + * @ingroup native + */ +SSCAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow *window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _glfw3_native_h_ */ diff --git a/StgSharp.C/hash.c b/StgSharp.C/hash.c new file mode 100644 index 00000000..8939ef66 --- /dev/null +++ b/StgSharp.C/hash.c @@ -0,0 +1,44 @@ +#include "ssc_intrinsic.h" +#include "StgSharpC.h" + +INTERNAL int SSCDECL city_hash_simplify_sse(byte const *str, int const length) +{ + uint32_t hash = length, size = length << 1; + byte *end = str + size, *ptr = str; + + if (size < 4) { + for (; ptr < end; ptr += 2) { + hash = _mm_crc32_u16(hash, *ptr); + } + } else if (size < 16) { + byte *last = end - 4; + for (; ptr < end; ptr += 4) { + hash = _mm_crc32_u32(hash, *(uint32_t *)ptr); + } + for (; ptr < end; ptr++) { + hash = _mm_crc32_u16(hash, *ptr); + } + } else { + byte *last_128 = end - 16, *last_32 = end - 4; + uint64_t hash64 = size; + for (; ptr < last_128; ptr += 16) { + __m128i vec = _mm_loadu_si32((int *)ptr); + hash64 = _mm_crc32_u64(hash64, _mm_extract_epi64(vec, 0)); + hash64 = _mm_crc32_u64(hash64, _mm_extract_epi64(vec, 1)); + } + hash = _mm_crc32_u8(hash, hash64); + hash = _mm_crc32_u8(hash, hash64 >> 32); + for (; ptr < last_32; ptr += 4) { + hash = _mm_crc32_u32(hash,*(uint32_t *)ptr); + } + for (; ptr < end; ptr += 2) { + hash = _mm_crc32_u8(hash,*ptr); + } + } + hash ^= hash >> 16; + hash *= 0x85ebca6b; + hash ^= hash >> 13; + hash *= 0xc2b2ae35; + hash ^= hash >> 16; + return hash; +} diff --git a/StgSharp.C/intrinsic.c b/StgSharp.C/intrinsic.c new file mode 100644 index 00000000..bfd00e20 --- /dev/null +++ b/StgSharp.C/intrinsic.c @@ -0,0 +1,137 @@ +#include "StgSharpC.h" +#include "ssc_intrinsic.h" + + +#ifdef _MSC_VER +#include +#include +#else +#include +#endif // _MSC_VER + +PRIVATE void load_intrinsic_sse(ssc_intrinsic *context); +PRIVATE void load_intrinsic_avx(ssc_intrinsic *context); +PRIVATE void load_intrinsic_512(ssc_intrinsic *context); + +PRIVATE int check_isa(most_advanced_instruction instruction_family) +{ + if (instruction_family != NEON) { +#if _MSC_VER + return __check_isa_support(instruction_family, 0); +#else + switch (instruction_family) { + case SSE: + return __builtin_cpu_supports("sse4.2"); + case AVX256: + return __builtin_cpu_supports("avx2"); + case AVX512: + return __builtin_cpu_supports("avx512f"); + default: + return 0; + } +#endif // _MSC_VER + } + +#if defined(__ARM_NEON) || defined(__ARM_NEON__) + return 1; +#else + return 0; +#endif +} + +SSCAPI int load_intrinsic_function(void *intrinsic_context) +{ + ssc_null_assert(intrinsic_context); + + ssc_intrinsic *context = (ssc_intrinsic *)intrinsic_context; + + if (check_isa(AVX512)) { + load_intrinsic_512(context); + return 3; + } else if (check_isa(AVX256)) { + load_intrinsic_avx(context); + return 2; + } else if (check_isa(SSE)) { + load_intrinsic_sse(context); + return 1; + } else if (check_isa(NEON)) { + return -1; + } + + return 0; +} + +void load_intrinsic_sse(ssc_intrinsic *context) +{ + context->add_m2 = addmatrix2_sse; + context->add_m3 = addmatrix3_sse; + context->add_m4 = addmatrix4_sse; + context->transpose_23 = transpose23; + context->transpose_24 = transpose24; + context->transpose_32 = transpose32; + context->transpose_33 = transpose33; + context->transpose_34 = transpose34; + context->transpose_42 = transpose42; + context->transpose_43 = transpose43; + context->transpose_44 = transpose44; + context->normalize_3 = normalize; + context->det_matrix33 = det_mat3; + context->det_matrix44 = det_mat4; + context->dot_31 = dot_31_sse; + context->dot_32 = dot_32_sse; + context->dot_41 = dot_41_sse; + context->dot_42 = dot_42_sse; + context->dot_43 = dot_43_sse; + context->city_hash_simplify = city_hash_simplify_sse; + context->index_pair = index_pair_sse; +} + +void load_intrinsic_avx(ssc_intrinsic *context) +{ + context->add_m2 = addmatrix2_avx; + context->add_m3 = addmatrix3_avx; + context->add_m4 = addmatrix4_avx; + context->transpose_23 = transpose23; + context->transpose_24 = transpose24; + context->transpose_32 = transpose32; + context->transpose_33 = transpose33; + context->transpose_34 = transpose34; + context->transpose_42 = transpose42; + context->transpose_43 = transpose43; + context->transpose_44 = transpose44; + context->normalize_3 = normalize; + context->det_matrix33 = det_mat3; + context->det_matrix44 = det_mat4; + context->dot_31 = dot_31_avx; + context->dot_32 = dot_32_avx; + context->dot_41 = dot_41_avx; + context->dot_42 = dot_42_avx; + context->dot_43 = dot_43_avx; + context->city_hash_simplify = city_hash_simplify_sse; + context->index_pair = index_pair_sse; +} + +void load_intrinsic_512(ssc_intrinsic *context) +{ + context->add_m2 = addmatrix2_avx; + context->add_m3 = addmatrix3_512; + context->add_m4 = addmatrix4_512; + context->transpose_23 = transpose23; + context->transpose_24 = transpose24; + context->transpose_32 = transpose32; + context->transpose_33 = transpose33; + context->transpose_34 = transpose34; + context->transpose_42 = transpose42; + context->transpose_43 = transpose43; + context->transpose_44 = transpose44; + context->normalize_3 = normalize; + context->det_matrix33 = det_mat3; + context->det_matrix44 = det_mat4; + context->dot_31 = dot_31_avx; + context->dot_32 = dot_32_avx; + context->dot_41 = dot_41_avx; + context->dot_42 = dot_42_avx; + context->dot_43 = dot_43_avx; + context->city_hash_simplify = city_hash_simplify_sse; + context->index_pair = index_pair_sse; +} diff --git a/StgSharp.C/khrplatform.h b/StgSharp.C/khrplatform.h new file mode 100644 index 00000000..5cd17f65 --- /dev/null +++ b/StgSharp.C/khrplatform.h @@ -0,0 +1,310 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are 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 Materials. +** +** THE MATERIALS ARE 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +#define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) +/* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +#define KHRONOS_APICALL +#elif defined(_WIN32) +#define KHRONOS_APICALL __declspec(dllimport) +#elif defined(__SYMBIAN32__) +#define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +#define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +#define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) +/* Win32 but not WinCE */ +#define KHRONOS_APIENTRY __stdcall +#else +#define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined(__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || \ + defined(__SCO__) || defined(__USLC__) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/StgSharp.C/mat2.c b/StgSharp.C/mat2.c new file mode 100644 index 00000000..211b1eab --- /dev/null +++ b/StgSharp.C/mat2.c @@ -0,0 +1,42 @@ +#include "StgSharpC.h" +#include "ssc_intrinsic.h" + +INTERNAL void __cdecl transpose23(__2_columnset *source, __3_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); +} + +INTERNAL void __cdecl transpose24(__2_columnset *source, __4_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL void __cdecl addmatrix2_sse(__2_columnset *left, __2_columnset *right, __2_columnset *ans) +{ + __m128 temp0 = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + __m128 temp1 = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + _mm_storeu_ps(&ans->m[0][0], temp0); + _mm_storeu_ps(&ans->m[0][1], temp1); +} + +INTERNAL void __cdecl addmatrix2_avx(__2_columnset *left, __2_columnset *right, __2_columnset *ans) +{ + __m256 temp = _mm256_add_ps(ALIGN256(left->column[0]), ALIGN256(right->column[0])); + _mm256_storeu_ps(&ans->m[0][0], temp); +} diff --git a/StgSharp.C/mat3.c b/StgSharp.C/mat3.c new file mode 100644 index 00000000..b9dfeef6 --- /dev/null +++ b/StgSharp.C/mat3.c @@ -0,0 +1,104 @@ +#include "StgSharpC.h" +#include "ssc_intrinsic.h" +#include + +INTERNAL void _cdecl transpose32(__3_columnset *source, __2_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL void _cdecl transpose33(__3_columnset *source, __3_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); +} + +INTERNAL void _cdecl transpose34(__3_columnset *source, __4_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL float _cdecl det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2) +{ + //let adding row aligned + __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + + //let sub row aligned + __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); + __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); + + //multple all add row + __m128 cache = _mm_mul_ps(c0, addc1); + cache = _mm_mul_ps(cache, addc2); + + //multiple all sub row + __m128 sub = _mm_mul_ps(c0, subc1); + sub = _mm_mul_ps(sub, subc2); + + //main-corner sub sub-corner + cache = _mm_sub_ps(cache, sub); + + __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + return ret.m128_f32[2]; +} + +INTERNAL float _cdecl det_mat3(__3_columnset *source, __3_columnset *transpose) +{ + return det_mat3_internal(source->column[0], source->column[1], source->column[2]); +} + +#pragma region add + +INTERNAL void __cdecl addmatrix3_sse(__3_columnset *left, __3_columnset *right, __3_columnset *ans) +{ + __m128 temp0 = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + __m128 temp1 = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + __m128 temp2 = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + _mm_storeu_ps(&ans->m[0][0], temp0); + _mm_storeu_ps(&ans->m[0][1], temp1); + _mm_storeu_ps(&ans->m[0][2], temp2); +} + +INTERNAL void __cdecl addmatrix3_avx(__3_columnset *left, __3_columnset *right, __3_columnset *ans) +{ + __m256 temp0 = _mm256_add_ps(ALIGN256(left->part), ALIGN256(right->part)); + __m128 temp1 = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + _mm256_storeu_ps(&ans->m[0][0], temp0); + _mm_storeu_ps(&ans->m[0][2], temp1); +} + +INTERNAL void __cdecl addmatrix3_512(__3_columnset *left, __3_columnset *right, __3_columnset *ans) +{ + __m512 temp = _mm512_add_ps(_mm512_loadu_ps(left), _mm512_loadu_ps(right)); + _mm512_mask_store_ps(ans, 0x0fff, temp); +} + +#pragma endregion diff --git a/StgSharp.C/mat4.c b/StgSharp.C/mat4.c new file mode 100644 index 00000000..5ddd28f6 --- /dev/null +++ b/StgSharp.C/mat4.c @@ -0,0 +1,84 @@ + +#include "StgSharpC.h" +#include "ssc_intrinsic.h" +#include +#include + +INTERNAL void __cdecl transpose42(__4_columnset const *source, __2_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL void __cdecl transpose43(__4_columnset const *source, __3_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); +} + +INTERNAL void __cdecl transpose44(__4_columnset const *source, __4_columnset *target) +{ + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + _MM_SHUFFLE(3, 2, 3, 2)); + + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); +} + +INTERNAL float __cdecl det_mat4(__4_columnset const *mat_ptr, __4_columnset const *transpose) +{ + __m128 mc0 = ALIGN(mat_ptr->column[0]); + __m128 mc1 = ALIGN(mat_ptr->column[1]); + __m128 mc2 = ALIGN(mat_ptr->column[2]); + __m128 mc3 = ALIGN(mat_ptr->column[3]); + + __m128 cogeneration = + _mm_set_ps(det_mat3_internal(mc0, mc1, mc2), det_mat3_internal(mc0, mc1, mc3), + det_mat3_internal(mc0, mc2, mc3), det_mat3_internal(mc1, mc2, mc3)); + __m128 retvec = _mm_mul_ps(ALIGN(transpose->column[3]), cogeneration); + retvec = _mm_hsub_ps(retvec, retvec); + retvec = _mm_hadd_ps(retvec, retvec); + return -retvec.m128_f32[0]; +} + +INTERNAL void SSCDECL addmatrix4_sse(__4_columnset *left, __4_columnset *right, __4_columnset *ans) +{ + ans->column[0] = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + ans->column[1] = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + ans->column[2] = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + ans->column[3] = _mm_add_ps(ALIGN(left->column[3]), ALIGN(right->column[3])); +} + +INTERNAL void SSCDECL addmatrix4_avx(__4_columnset *left, __4_columnset *right, __4_columnset *ans) +{ + ans->half[0] = _mm256_add_ps(ALIGN256(left->half[0]), ALIGN256(right->half[0])); + ans->half[1] = _mm256_add_ps(ALIGN256(left->half[1]), ALIGN256(right->half[1])); +} + +INTERNAL void SSCDECL addmatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans) +{ + ans->stream = _mm512_add_ps(ALIGN512(left->stream), ALIGN512(right->stream)); +} diff --git a/StgSharp.C/ssc_internal.h b/StgSharp.C/ssc_internal.h new file mode 100644 index 00000000..164b7ced --- /dev/null +++ b/StgSharp.C/ssc_internal.h @@ -0,0 +1,37 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#include "xmmintrin.h" +/* +#include "GLAD/gl.h" +#include "glfw3.h" +#include "StgSharpC.h" +*/ + +#ifndef SSC_INTERNAL +#define SSC_INTERNAL + +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS 1 +#define WIN32_LEAN_AND_MEAN +#define SSCDECL __cdecl +#define SSCAPI __declspec(dllexport) +#define FORCEINLINE __forceinline +#include +#elif defined(__clang__) || defined(__GNUC__) +#define SSCDECL __attribute__((cdecl)) +#define SSCAPI __attribute__((dllexport)) +#define FORCEINLINE __attribute__((always_inline)) +#else +#define SSCAPI +#define SSCDECL +#define FORCEINLINE +#endif + +#define SSCAPI_DEFINE + +#define PRIVATE static +#define INTERNAL extern + +#endif // diff --git a/StgSharp.C/ssc_intrinsic.h b/StgSharp.C/ssc_intrinsic.h new file mode 100644 index 00000000..a82dd608 --- /dev/null +++ b/StgSharp.C/ssc_intrinsic.h @@ -0,0 +1,151 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#ifndef SSC_INTRIN +#define SSC_INTRIN + +#include "StgSharpC.h" +#include +#include + +#ifdef _MSC_VER +#include +#include +#endif + +#define LASTTWO(x) (x & 3) +#define LAST(x) (x & 3) +#define get_align_begin(x) ((x + 15) & (~15)) + +#define SSE_INSERT(source, target, reset3, reset2, reset1, reset0) \ + (LASTTWO(source - 1) << 6) | (LASTTWO(target - 1) << 4) | (LAST(reset3) << 3) | \ + (LAST(reset2) << 2) | (LAST(reset1) << 1) | LAST(reset0) +#define SSE_INSERT_SIMPLE(source, target) SSE_INSERT(source, target, 0, 0, 0, 0) +#define M256_PERMUTE(s3, s2, s1, s0) (LASTTWO(s3) << 6) | (LASTTWO(s2) << 4) | (LASTTWO(s1) << 2) | (LASTTWO(s0) + +#define zero_vec _mm_setzero_ps() +#define zero_vec_256 _mm256_setzero_ps() + +typedef union uint64_u { + uint64_t u64; + uint32_t u32[2]; +}uint64_u; + +typedef union column_2 { + __m256 stream; + __m128 column[2]; + float m[4][2]; +} __2_columnset; + +typedef union column_3 { + __m256 part; + __m128 column[3]; + float m[4][3]; +} __3_columnset; + +typedef union column_4 { + __m512 stream; + __m256 half[2]; + __m128 column[4]; + float m[4][4]; +} __4_columnset; + +typedef void(SSCDECL *VECTORNORMALIZEPROC)(__m128 *source, __m128 *target); +typedef void(SSCDECL *DOTPROC)(void *transpose, __m128 *vector, __m128 *ans); +typedef void(SSCDECL *MATRIXTRANSPOSEPROC)(void *source, void *target); +typedef void(SSCDECL *MATRIXDETPROC)(void *mat, void *transpose); +typedef void(SSCDECL *MATARITHMETIC)(void *left, void *right, void *ans); +typedef void(SSCDECL *SCALERMATARITHMETIC)(void *left, void *right, void *ans); + +#pragma region matix function + +INTERNAL void normalize(__m128 *source, __m128 *target); + +INTERNAL void SSCDECL addmatrix2_sse(__2_columnset *left, __2_columnset *right, __2_columnset *ans); +INTERNAL void SSCDECL addmatrix2_avx(__2_columnset *left, __2_columnset *right, __2_columnset *ans); +INTERNAL void SSCDECL transpose23(__2_columnset const *source, __3_columnset *target); +INTERNAL void SSCDECL transpose24(__2_columnset const *source, __4_columnset *target); + +INTERNAL void SSCDECL addmatrix3_sse(__3_columnset *left, __3_columnset *right, __3_columnset *ans); +INTERNAL void SSCDECL addmatrix3_avx(__3_columnset *left, __3_columnset *right, __3_columnset *ans); +INTERNAL void SSCDECL addmatrix3_512(__3_columnset *left, __3_columnset *right, __3_columnset *ans); +INTERNAL void SSCDECL transpose32(__3_columnset const *source, __2_columnset *target); +INTERNAL void SSCDECL transpose33(__3_columnset const *source, __3_columnset *target); +INTERNAL void SSCDECL transpose34(__3_columnset const *source, __4_columnset *target); +INTERNAL float SSCDECL det_mat3(__3_columnset *matrix, __3_columnset *tranpose); + +INTERNAL void SSCDECL addmatrix4_sse(__4_columnset *left, __4_columnset *right, __4_columnset *ans); +INTERNAL void SSCDECL addmatrix4_avx(__4_columnset *left, __4_columnset *right, __4_columnset *ans); +INTERNAL void SSCDECL addmatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans); +INTERNAL void SSCDECL transpose42(__4_columnset const *source, __2_columnset *target); +INTERNAL void SSCDECL transpose43(__4_columnset const *source, __3_columnset *target); +INTERNAL void SSCDECL transpose44(__4_columnset const *source, __4_columnset *target); +INTERNAL float SSCDECL det_mat4(__4_columnset *matrix, __4_columnset *transpose); + +#pragma endregion + +#pragma region dot + +INTERNAL void FORCEINLINE SSCDECL dot_41_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void FORCEINLINE SSCDECL dot_31_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void FORCEINLINE SSCDECL dot_41_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void FORCEINLINE SSCDECL dot_31_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans); + +INTERNAL void SSCDECL dot_32_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_32_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_42_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_42_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); + +INTERNAL void SSCDECL dot_43_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_43_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans); +INTERNAL void SSCDECL dot_43_512(__4_columnset *transpose, __m128 *vector, __m128 *ans); + +#pragma endregion + +#pragma region string + +INTERNAL int SSCDECL city_hash_simplify_sse(byte const *str, int length); +INTERNAL int SSCDECL index_pair_sse(short const *str, uint32_t target, int length); + +#pragma endregion + +typedef struct ssc_intrinsic { + MATARITHMETIC add_m2; + MATARITHMETIC add_m3; + MATARITHMETIC add_m4; + int (*city_hash_simplify)(byte *str, int length); + MATRIXDETPROC det_matrix33; + MATRIXDETPROC det_matrix44; + DOTPROC dot_31; + DOTPROC dot_32; + DOTPROC dot_41; + DOTPROC dot_42; + DOTPROC dot_43; + int (*index_pair)(short const *str, uint32_t target, int length); + VECTORNORMALIZEPROC normalize_3; + MATRIXTRANSPOSEPROC transpose_23; + MATRIXTRANSPOSEPROC transpose_24; + MATRIXTRANSPOSEPROC transpose_32; + MATRIXTRANSPOSEPROC transpose_33; + MATRIXTRANSPOSEPROC transpose_34; + MATRIXTRANSPOSEPROC transpose_42; + MATRIXTRANSPOSEPROC transpose_43; + MATRIXTRANSPOSEPROC transpose_44; +} ssc_intrinsic; + +typedef enum most_advanced_instruction { +#ifdef _MSC_VER + SSE = __IA_SUPPORT_SSE42, + AVX256 = __IA_SUPPORT_VECTOR256, + AVX512 = __IA_SUPPORT_VECTOR512, + NEON +#else + SSE, + AVX256, + AVX512, + NEON +#endif +} most_advanced_instruction; + +#endif // !SSC_INTRIN diff --git a/StgSharp.C/stb_image.c b/StgSharp.C/stb_image.c new file mode 100644 index 00000000..3c2d25a2 --- /dev/null +++ b/StgSharp.C/stb_image.c @@ -0,0 +1,8475 @@ +#include "stb_image.h" + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) || \ + defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) || \ + defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) || \ + defined(STBI_ONLY_ZLIB) +#ifndef STBI_ONLY_JPEG +#define STBI_NO_JPEG +#endif +#ifndef STBI_ONLY_PNG +#define STBI_NO_PNG +#endif +#ifndef STBI_ONLY_BMP +#define STBI_NO_BMP +#endif +#ifndef STBI_ONLY_PSD +#define STBI_NO_PSD +#endif +#ifndef STBI_ONLY_TGA +#define STBI_NO_TGA +#endif +#ifndef STBI_ONLY_GIF +#define STBI_NO_GIF +#endif +#ifndef STBI_ONLY_HDR +#define STBI_NO_HDR +#endif +#ifndef STBI_ONLY_PIC +#define STBI_NO_PIC +#endif +#ifndef STBI_ONLY_PNM +#define STBI_NO_PNM +#endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + +#ifdef __cplusplus +#define STBI_EXTERN extern "C" +#else +#define STBI_EXTERN extern +#endif + +#ifndef _MSC_VER +#ifdef __cplusplus +#define stbi_inline inline +#else +#define stbi_inline +#endif +#else +#define stbi_inline __forceinline +#endif + +#ifndef STBI_NO_THREAD_LOCALS +#if defined(__cplusplus) && __cplusplus >= 201103L +#define STBI_THREAD_LOCAL thread_local +#elif defined(__GNUC__) && __GNUC__ < 5 +#define STBI_THREAD_LOCAL __thread +#elif defined(_MSC_VER) +#define STBI_THREAD_LOCAL __declspec(thread) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) +#define STBI_THREAD_LOCAL _Thread_local +#endif + +#ifndef STBI_THREAD_LOCAL +#if defined(__GNUC__) +#define STBI_THREAD_LOCAL __thread +#endif +#endif +#endif + +#if defined(_MSC_VER) || defined(__SYMBIAN32__) +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32) == 4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL +#define stbi_lrot(x, y) _lrotl(x, y) +#else +#define stbi_lrot(x, y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && \ + (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && \ + !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p, newsz) realloc(p, newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p, oldsz, newsz) STBI_REALLOC(p, newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && \ + !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info, 1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax, 1 + cpuid + mov res, edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#endif + +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif + +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +#ifdef _MSC_VER +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name +#else +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +#ifndef STBI_MAX_DIMENSIONS +#define STBI_MAX_DIMENSIONS (1 << 24) +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct { + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *)buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *)buffer + len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int)fread(data, 1, size, (FILE *)user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + int ch; + fseek((FILE *)user, n, SEEK_CUR); + ch = fgetc((FILE *)user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, (FILE *)user); /* push byte back onto stream if valid. */ + } +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE *)user) || ferror((FILE *)user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = { + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *)f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum { STBI_ORDER_RGB, STBI_ORDER_BGR }; + +typedef struct { + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, + int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); +#endif + +static +#ifdef STBI_THREAD_LOCAL + STBI_THREAD_LOCAL +#endif + const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +#ifndef STBI_NO_FAILURE_STRINGS +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} +#endif + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) + return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) + return 0; + if (b == 0) + return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX / b; +} + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || \ + !defined(STBI_NO_HDR) +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); +} +#endif + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + stbi__addsizes_valid(a * b * c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add); +} +#endif + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || \ + !defined(STBI_NO_HDR) +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) + return NULL; + return stbi__malloc(a * b + add); +} +#endif + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) + return NULL; + return stbi__malloc(a * b * c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) + return NULL; + return stbi__malloc(a * b * c * d + add); +} +#endif + +// returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. +static int stbi__addints_valid(int a, int b) +{ + if ((a >= 0) != (b >= 0)) + return 1; // a and b have different signs, so no overflow + if (a < 0 && b < 0) + return a >= + INT_MIN - + b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + return a <= INT_MAX - b; +} + +// returns 1 if the product of two signed shorts is valid, 0 on overflow. +static int stbi__mul2shorts_valid(short a, short b) +{ + if (b == 0 || b == -1) + return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + if ((a >= 0) == (b >= 0)) + return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid + if (b < 0) + return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + return a >= SHRT_MIN / b; +} + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS +#define stbi__err(x, y) 0 +#elif defined(STBI_FAILURE_USERMSG) +#define stbi__err(x, y) stbi__err(y) +#else +#define stbi__err(x, y) stbi__err(x) +#endif + +#define stbi__errpf(x, y) ((float *)(size_t)(stbi__err(x, y) ? NULL : NULL)) +#define stbi__errpuc(x, y) ((unsigned char *)(size_t)(stbi__err(x, y) ? NULL : NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load_global = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#else +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; + +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; +} + +#define stbi__vertically_flip_on_load \ + (stbi__vertically_flip_on_load_set ? stbi__vertically_flip_on_load_local : \ + stbi__vertically_flip_on_load_global) +#endif // STBI_THREAD_LOCAL + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri, int bpc) +{ + memset(ri, 0, + sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = + STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) +#ifndef STBI_NO_PNG + if (stbi__png_test(s)) + return stbi__png_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) + return stbi__bmp_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_GIF + if (stbi__gif_test(s)) + return stbi__gif_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_PSD + if (stbi__psd_test(s)) + return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc); +#else + STBI_NOTUSED(bpc); +#endif +#ifndef STBI_NO_PIC + if (stbi__pic_test(s)) + return stbi__pic_load(s, x, y, comp, req_comp, ri); +#endif + + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later +#ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) + return stbi__jpeg_load(s, x, y, comp, req_comp, ri); +#endif +#ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) + return stbi__pnm_load(s, x, y, comp, req_comp, ri); +#endif + +#ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } +#endif + +#ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s, x, y, comp, req_comp, ri); +#endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *)stbi__malloc(img_len); + if (reduced == NULL) + return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = + (stbi_uc)((orig[i] >> 8) & + 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *)stbi__malloc(img_len * 2); + if (enlarged == NULL) + return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = + (stbi__uint16)((orig[i] << 8) + + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h >> 1); row++) { + stbi_uc *row0 = bytes + row * bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1) * bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, + int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 8) { + result = stbi__convert_16_to_8((stbi__uint16 *)result, *x, *y, + req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *)result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, + int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 16) { + result = stbi__convert_8_to_16((stbi_uc *)result, *x, *y, + req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *)result; +} + +#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, + unsigned long flags, + const char *str, int cbmb, + wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte( + unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, + int cbmb, const char *defchar, int *used_default); +#endif + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t *input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int)bufferlen, NULL, + NULL); +} +#endif + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, + sizeof(wFilename) / sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, + sizeof(wMode) / sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f = 0; +#else + f = fopen(filename, mode); +#endif + return f; +} + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) + return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f, x, y, comp, req_comp); + fclose(f); + return result; +} + +STBIDEF void stbi_load_to_target(char const *filename, int *x, int *y, stbi_uc *target, int *comp, + int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) { + *target = "can't fopen, Unable to open file"; + return; + } + result = stbi_load_from_file(f, x, y, comp, req_comp); + fclose(f); +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s, f); + result = stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s, f); + result = stbi__load_and_postprocess_16bit(&s, x, y, comp, req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) + return (stbi_us *)stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f, x, y, comp, req_comp); + fclose(f); + return result; +} + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, + int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, + int req_comp) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, + int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s, buffer, len); + + result = (unsigned char *)stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices(result, *x, *y, *z, *comp); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; +#ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s, x, y, comp, req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data, x, y, comp, req_comp); + return hdr_data; + } +#endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, + int req_comp) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__loadf_main(&s, x, y, comp, req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__loadf_main(&s, x, y, comp, req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) + return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f, x, y, comp, req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s, f); + return stbi__loadf_main(&s, x, y, comp, req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ +#ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__hdr_test(&s); +#else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; +#endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result = 0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ +#ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s, f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; +#else + STBI_NOTUSED(f); + return 0; +#endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ +#ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__hdr_test(&s); +#else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; +#endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma = 2.2f, stbi__l2h_scale = 1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) +{ + stbi__l2h_gamma = gamma; +} +STBIDEF void stbi_ldr_to_hdr_scale(float scale) +{ + stbi__l2h_scale = scale; +} +#endif + +static float stbi__h2l_gamma_i = 1.0f / 2.2f, stbi__h2l_scale_i = 1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) +{ + stbi__h2l_gamma_i = 1 / gamma; +} +STBIDEF void stbi_hdr_to_ldr_scale(float scale) +{ + stbi__h2l_scale_i = 1 / scale; +} + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum { STBI__SCAN_load = 0, STBI__SCAN_type, STBI__SCAN_header }; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data, (char *)s->buffer_start, s->buflen); + s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + 1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) + return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) + return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && \ + defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && \ + defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) + return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int)(s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int)(s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char *)buffer + blen, n - blen); + res = (count == (n - blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer + n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} +#endif + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc)((x) & 255)) // truncate int to byte without warnings + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && \ + defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && \ + defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && \ + defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && \ + defined(STBI_NO_PNM) +// nothing +#else +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, + unsigned int x, unsigned int y) +{ + int i, j; + unsigned char *good; + + if (req_comp == img_n) + return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *)stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j = 0; j < (int)y; ++j) { + unsigned char *src = data + j * x * img_n; + unsigned char *dest = good + j * x * req_comp; + +#define STBI__COMBO(a, b) ((a) * 8 + (b)) +#define STBI__CASE(a, b) \ + case STBI__COMBO(a, b): \ + for (i = x - 1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1, 2) + { + dest[0] = src[0]; + dest[1] = 255; + } + break; + STBI__CASE(1, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(1, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = 255; + } + break; + STBI__CASE(2, 1) + { + dest[0] = src[0]; + } + break; + STBI__CASE(2, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(2, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = src[1]; + } + break; + STBI__CASE(3, 4) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = 255; + } + break; + STBI__CASE(3, 1) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + } + break; + STBI__CASE(3, 2) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + dest[1] = 255; + } + break; + STBI__CASE(4, 1) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + } + break; + STBI__CASE(4, 2) + { + dest[0] = stbi__compute_y(src[0], src[1], src[2]); + dest[1] = src[3]; + } + break; + STBI__CASE(4, 3) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + } + break; + default: + STBI_ASSERT(0); + STBI_FREE(data); + STBI_FREE(good); + return stbi__errpuc("unsupported", "Unsupported format conversion"); + } +#undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, + unsigned int x, unsigned int y) +{ + int i, j; + stbi__uint16 *good; + + if (req_comp == img_n) + return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *)stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *)stbi__errpuc("outofmem", "Out of memory"); + } + + for (j = 0; j < (int)y; ++j) { + stbi__uint16 *src = data + j * x * img_n; + stbi__uint16 *dest = good + j * x * req_comp; + +#define STBI__COMBO(a, b) ((a) * 8 + (b)) +#define STBI__CASE(a, b) \ + case STBI__COMBO(a, b): \ + for (i = x - 1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1, 2) + { + dest[0] = src[0]; + dest[1] = 0xffff; + } + break; + STBI__CASE(1, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(1, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = 0xffff; + } + break; + STBI__CASE(2, 1) + { + dest[0] = src[0]; + } + break; + STBI__CASE(2, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(2, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = src[1]; + } + break; + STBI__CASE(3, 4) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = 0xffff; + } + break; + STBI__CASE(3, 1) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + } + break; + STBI__CASE(3, 2) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + dest[1] = 0xffff; + } + break; + STBI__CASE(4, 1) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + } + break; + STBI__CASE(4, 2) + { + dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); + dest[1] = src[3]; + } + break; + STBI__CASE(4, 3) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + } + break; + default: + STBI_ASSERT(0); + STBI_FREE(data); + STBI_FREE(good); + return (stbi__uint16 *)stbi__errpuc("unsupported", + "Unsupported format conversion"); + } +#undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i, k, n; + float *output; + if (!data) + return NULL; + output = (float *)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { + STBI_FREE(data); + return stbi__errpf("outofmem", "Out of memory"); + } + // compute number of non-alpha components + if (comp & 1) + n = comp; + else + n = comp - 1; + for (i = 0; i < x * y; ++i) { + for (k = 0; k < n; ++k) { + output[i * comp + k] = + (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * + stbi__l2h_scale); + } + } + if (n < comp) { + for (i = 0; i < x * y; ++i) { + output[i * comp + n] = data[i * comp + n] / 255.0f; + } + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int)(x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i, k, n; + stbi_uc *output; + if (!data) + return NULL; + output = (stbi_uc *)stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + // compute number of non-alpha components + if (comp & 1) + n = comp; + else + n = comp - 1; + for (i = 0; i < x * y; ++i) { + for (k = 0; k < n; ++k) { + float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, + stbi__h2l_gamma_i) * + 255 + + 0.5f; + if (z < 0) + z = 0; + if (z > 255) + z = 255; + output[i * comp + k] = (stbi_uc)stbi__float2int(z); + } + if (k < comp) { + float z = data[i * comp + k] * 255 + 0.5f; + if (z < 0) + z = 0; + if (z > 255) + z = 255; + output[i * comp + k] = (stbi_uc)stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct { + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct { + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + + // sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + + // definition of jpeg image component + struct { + int id; + int h, v; + int tq; + int hd, ha; + int dc_pred; + + int x, y, w2, h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + + // kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, + const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i, j, k = 0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i = 0; i < 16; ++i) { + for (j = 0; j < count[i]; ++j) { + h->size[k++] = (stbi_uc)(i + 1); + if (k >= 257) + return stbi__err("bad size list", "Corrupt JPEG"); + } + } + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for (j = 1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16)(code++); + if (code - 1 >= (1u << j)) + return stbi__err("bad code lengths", "Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16 - j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i = 0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS - s); + int m = 1 << (FAST_BITS - s); + for (j = 0; j < m; ++j) { + h->fast[c + j] = (stbi_uc)i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i = 0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> + (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) + k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) + c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char)c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17] = { 0, 1, 3, 7, 15, 31, 63, 127, 255, + 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535 }; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c, k; + + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k = FAST_BITS + 1;; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + if (c < 0 || c >= 256) // symbol id out of bounds! + return -1; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == + h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) + return 0; // ran out of bits from stream, return 0s intead of continuing + + sgn = j->code_buffer >> + 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) + return 0; // ran out of bits from stream, return 0s intead of continuing + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < 1) + return 0; // ran out of bits from stream, return 0s intead of continuing + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = { + 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, + 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, + stbi__huffman *hac, stbi__int16 *fac, int b, + stbi__uint16 *dequant) +{ + int diff, dc, k; + int t; + + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) + return stbi__err("bad huffman code", "Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data, 0, 64 * sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) + return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, dequant[0])) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short)(dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c, r, s; + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) + return stbi__err("bad huffman code", + "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) + return stbi__err("bad huffman code", "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) + break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff, dc; + int t; + if (j->spec_end != 0) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data, 0, + 64 * sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) + return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short)(dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short)(1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, + stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c, r, s; + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) + return stbi__err( + "bad huffman code", + "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) + return stbi__err("bad huffman code", "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = + (short)(stbi__extend_receive(j, s) * (1 << shift)); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short)(1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit) == 0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r, s; + int rs = stbi__jpeg_huff_decode( + j, + hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) + return stbi__err("bad huffman code", "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) + return stbi__err("bad huffman code", + "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit) == 0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short)s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int)x > 255) { + if (x < 0) + return 0; + if (x > 255) + return 255; + } + return (stbi_uc)x; +} + +#define stbi__f2f(x) ((int)(((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0, s1, s2, s3, s4, s5, s6, s7) \ + int t0, t1, t2, t3, p1, p2, p3, p4, p5, x0, x1, x2, x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2 + p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3 * stbi__f2f(-1.847759065f); \ + t3 = p1 + p2 * stbi__f2f(0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2 + p3); \ + t1 = stbi__fsh(p2 - p3); \ + x0 = t0 + t3; \ + x3 = t0 - t3; \ + x1 = t1 + t2; \ + x2 = t1 - t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0 + t2; \ + p4 = t1 + t3; \ + p1 = t0 + t3; \ + p2 = t1 + t2; \ + p5 = (p3 + p4) * stbi__f2f(1.175875602f); \ + t0 = t0 * stbi__f2f(0.298631336f); \ + t1 = t1 * stbi__f2f(2.053119869f); \ + t2 = t2 * stbi__f2f(3.072711026f); \ + t3 = t3 * stbi__f2f(1.501321110f); \ + p1 = p5 + p1 * stbi__f2f(-0.899976223f); \ + p2 = p5 + p2 * stbi__f2f(-2.562915447f); \ + p3 = p3 * stbi__f2f(-1.961570560f); \ + p4 = p4 * stbi__f2f(-0.390180644f); \ + t3 += p1 + p4; \ + t2 += p2 + p3; \ + t1 += p2 + p4; \ + t0 += p1 + p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i, val[64], *v = val; + stbi_uc *o; + short *d = data; + + // columns + for (i = 0; i < 8; ++i, ++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 && d[40] == 0 && + d[48] == 0 && d[56] == 0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0] * 4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; + x1 += 512; + x2 += 512; + x3 += 512; + v[0] = (x0 + t3) >> 10; + v[56] = (x0 - t3) >> 10; + v[8] = (x1 + t2) >> 10; + v[48] = (x1 - t2) >> 10; + v[16] = (x2 + t1) >> 10; + v[40] = (x2 - t1) >> 10; + v[24] = (x3 + t0) >> 10; + v[32] = (x3 - t0) >> 10; + } + } + + for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128 << 17); + x1 += 65536 + (128 << 17); + x2 += 65536 + (128 << 17); + x3 += 65536 + (128 << 17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0 + t3) >> 17); + o[7] = stbi__clamp((x0 - t3) >> 17); + o[1] = stbi__clamp((x1 + t2) >> 17); + o[6] = stbi__clamp((x1 - t2) >> 17); + o[2] = stbi__clamp((x2 + t1) >> 17); + o[5] = stbi__clamp((x2 - t1) >> 17); + o[3] = stbi__clamp((x3 + t0) >> 17); + o[4] = stbi__clamp((x3 - t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y +#define dct_const(x, y) _mm_setr_epi16((x), (y), (x), (y), (x), (y), (x), (y)) + +// out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +// out(1) = c1[even]*x + c1[odd]*y +#define dct_rot(out0, out1, x, y, c0, c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x), (y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x), (y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) +#define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add +#define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub +#define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack +#define dct_bfly32o(out0, out1, a, b, bias, s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) +#define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) +#define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + +#define dct_pass(bias, shift) \ + { \ + /* even part */ \ + dct_rot(t2e, t3e, row2, row6, rot0_0, rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o, y2o, row7, row3, rot2_0, rot2_1); \ + dct_rot(y1o, y3o, row5, row1, rot3_0, rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o, y5o, sum17, sum35, rot1_0, rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0, row7, x0, x7, bias, shift); \ + dct_bfly32o(row1, row6, x1, x6, bias, shift); \ + dct_bfly32o(row2, row5, x2, x5, bias, shift); \ + dct_bfly32o(row3, row4, x3, x4, bias, shift); \ + } + + __m128i rot0_0 = + dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = + dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), + stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), + stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), + stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), + stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), + stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), + stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); + + // load + row0 = _mm_load_si128((const __m128i *)(data + 0 * 8)); + row1 = _mm_load_si128((const __m128i *)(data + 1 * 8)); + row2 = _mm_load_si128((const __m128i *)(data + 2 * 8)); + row3 = _mm_load_si128((const __m128i *)(data + 3 * 8)); + row4 = _mm_load_si128((const __m128i *)(data + 4 * 8)); + row5 = _mm_load_si128((const __m128i *)(data + 5 * 8)); + row6 = _mm_load_si128((const __m128i *)(data + 6 * 8)); + row7 = _mm_load_si128((const __m128i *)(data + 7 * 8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *)out, p0); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p0, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p2); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p2, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p1); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p1, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p3); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + + // wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0, out1, a, b, shiftop, s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0, row7, x0, x7, shiftop, shift); \ + dct_bfly32o(row1, row6, x1, x6, shiftop, shift); \ + dct_bfly32o(row2, row5, x2, x5, shiftop, shift); \ + dct_bfly32o(row3, row4, x3, x4, shiftop, shift); \ + } + + // load + row0 = vld1q_s16(data + 0 * 8); + row1 = vld1q_s16(data + 1 * 8); + row2 = vld1q_s16(data + 2 * 8); + row3 = vld1q_s16(data + 3 * 8); + row4 = vld1q_s16(data + 4 * 8); + row5 = vld1q_s16(data + 5 * 8); + row6 = vld1q_s16(data + 6 * 8); + row7 = vld1q_s16(data + 7 * 8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { + // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. + // whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) \ + { \ + int16x8x2_t t = vtrnq_s16(x, y); \ + x = t.val[0]; \ + y = t.val[1]; \ + } +#define dct_trn32(x, y) \ + { \ + int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); \ + x = vreinterpretq_s16_s32(t.val[0]); \ + y = vreinterpretq_s16_s32(t.val[1]); \ + } +#define dct_trn64(x, y) \ + { \ + int16x8_t x0 = x; \ + int16x8_t y0 = y; \ + x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); \ + y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); \ + } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) \ + { \ + uint8x8x2_t t = vtrn_u8(x, y); \ + x = t.val[0]; \ + y = t.val[1]; \ + } +#define dct_trn8_16(x, y) \ + { \ + uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); \ + x = vreinterpret_u8_u16(t.val[0]); \ + y = vreinterpret_u8_u16(t.val[1]); \ + } +#define dct_trn8_32(x, y) \ + { \ + uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); \ + x = vreinterpret_u8_u32(t.val[0]); \ + y = vreinterpret_u8_u32(t.val[1]); \ + } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); + out += out_stride; + vst1_u8(out, p1); + out += out_stride; + vst1_u8(out, p2); + out += out_stride; + vst1_u8(out, p3); + out += out_stride; + vst1_u8(out, p4); + out += out_stride; + vst1_u8(out, p5); + out += out_stride; + vst1_u8(out, p6); + out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { + x = j->marker; + j->marker = STBI__MARKER_none; + return x; + } + x = stbi__get8(j->s); + if (x != 0xff) + return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = + j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i, j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block( + z, data, z->huff_dc + z->img_comp[n].hd, + z->huff_ac + ha, z->fast_ac[ha], n, + z->dequant[z->img_comp[n].tq])) + return 0; + z->idct_block_kernel(z->img_comp[n].data + + z->img_comp[n].w2 * j * 8 + + i * 8, + z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i, j, k, x, y; + STBI_SIMD_ALIGN(short, data[64]); + for (j = 0; j < z->img_mcu_y; ++j) { + for (i = 0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k = 0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y = 0; y < z->img_comp[n].v; ++y) { + for (x = 0; x < z->img_comp[n].h; ++x) { + int x2 = + (i * z->img_comp[n].h + x) * + 8; + int y2 = + (j * z->img_comp[n].v + y) * + 8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block( + z, data, + z->huff_dc + + z->img_comp[n] + .hd, + z->huff_ac + ha, + z->fast_ac[ha], n, + z->dequant[z->img_comp[n] + .tq])) + return 0; + z->idct_block_kernel( + z->img_comp[n].data + + z->img_comp[n].w2 * + y2 + + x2, + z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i, j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + short *data = z->img_comp[n].coeff + + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc( + z, data, &z->huff_dc[z->img_comp[n].hd], + n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac( + z, data, &z->huff_ac[ha], + z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i, j, k, x, y; + for (j = 0; j < z->img_mcu_y; ++j) { + for (i = 0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k = 0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y = 0; y < z->img_comp[n].v; ++y) { + for (x = 0; x < z->img_comp[n].h; ++x) { + int x2 = (i * z->img_comp[n].h + x); + int y2 = (j * z->img_comp[n].v + y); + short *data = + z->img_comp[n].coeff + + 64 * (x2 + + y2 * z->img_comp[n] + .coeff_w); + if (!stbi__jpeg_decode_block_prog_dc( + z, data, + &z->huff_dc[z->img_comp[n] + .hd], + n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i = 0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i, j, n; + for (n = 0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + short *data = z->img_comp[n].coeff + + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data + + z->img_comp[n].w2 * j * 8 + + i * 8, + z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker", "Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) + return stbi__err("bad DRI len", "Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s) - 2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15, i; + if (p != 0 && p != 1) + return stbi__err("bad DQT type", "Corrupt JPEG"); + if (t > 3) + return stbi__err("bad DQT table", "Corrupt JPEG"); + + for (i = 0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = + (stbi__uint16)(sixteen ? stbi__get16be(z->s) : + stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L == 0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s) - 2; + while (L > 0) { + stbi_uc *v; + int sizes[16], i, n = 0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) + return stbi__err("bad DHT header", "Corrupt JPEG"); + for (i = 0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + if (n > 256) + return stbi__err( + "bad DHT header", + "Corrupt JPEG"); // Loop over i < n would write past end of values! + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc + th, sizes)) + return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac + th, sizes)) + return 0; + v = z->huff_ac[th].values; + } + for (i = 0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L == 0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len", "Corrupt JPEG"); + else + return stbi__err("bad APP len", "Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = { 'J', 'F', 'I', 'F', '\0' }; + int ok = 1; + int i; + for (i = 0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = { 'A', 'd', 'o', 'b', 'e', '\0' }; + int ok = 1; + int i; + for (i = 0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker", "Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) + return stbi__err("bad SOS component count", "Corrupt JPEG"); + if (Ls != 6 + 2 * z->scan_n) + return stbi__err("bad SOS len", "Corrupt JPEG"); + for (i = 0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) + return 0; // no match + z->img_comp[which].hd = q >> 4; + if (z->img_comp[which].hd > 3) + return stbi__err("bad DC huff", "Corrupt JPEG"); + z->img_comp[which].ha = q & 15; + if (z->img_comp[which].ha > 3) + return stbi__err("bad AC huff", "Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || + z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) + return stbi__err("bad SOS", "Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) + return stbi__err("bad SOS", "Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i = 0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf, p, i, q, h_max = 1, v_max = 1, c; + Lf = stbi__get16be(s); + if (Lf < 11) + return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG + p = stbi__get8(s); + if (p != 8) + return stbi__err("only 8-bit", + "JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); + if (s->img_y == 0) + return stbi__err( + "no header height", + "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); + if (s->img_x == 0) + return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) + return stbi__err("bad component count", "Corrupt JPEG"); + s->img_n = c; + for (i = 0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8 + 3 * s->img_n) + return stbi__err("bad SOF len", "Corrupt JPEG"); + + z->rgb = 0; + for (i = 0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); + if (!z->img_comp[i].h || z->img_comp[i].h > 4) + return stbi__err("bad H", "Corrupt JPEG"); + z->img_comp[i].v = q & 15; + if (!z->img_comp[i].v || z->img_comp[i].v > 4) + return stbi__err("bad V", "Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); + if (z->img_comp[i].tq > 3) + return stbi__err("bad TQ", "Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) + return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) + return stbi__err("too large", "Image too large to decode"); + + for (i = 0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) + h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) + v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i = 0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) + return stbi__err("bad H", "Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) + return stbi__err("bad V", "Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; + + for (i = 0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = + stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i + 1, + stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc *)(((size_t)z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3( + z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components( + z, i + 1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = + (short *)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) + return stbi__err("no SOI", "Corrupt JPEG"); + if (scan == STBI__SCAN_type) + return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z, m)) + return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) + return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) + return 0; + return 1; +} + +static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j) +{ + // some JPEGs have junk at end, skip over it but if we find what looks + // like a valid marker, resume there + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + while (x == 255) { // might be a marker + if (stbi__at_eof(j->s)) + return STBI__MARKER_none; + x = stbi__get8(j->s); + if (x != 0x00 && x != 0xff) { + // not a stuffed zero or lead-in to another marker, looks + // like an actual marker, return it + return x; + } + // stuffed zero has x=0 now which ends the loop, meaning we go + // back to regular scan loop. + // repeated 0xff keeps trying to read the next byte of the marker. + } + } + return STBI__MARKER_none; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) + return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) + return 0; + if (!stbi__parse_entropy_coded_data(j)) + return 0; + if (j->marker == STBI__MARKER_none) { + j->marker = stbi__skip_jpeg_junk_at_end(j); + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + m = stbi__get_marker(j); + if (STBI__RESTART(m)) + m = stbi__get_marker(j); + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) + return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) + return stbi__err("bad DNL height", "Corrupt JPEG"); + m = stbi__get_marker(j); + } else { + if (!stbi__process_marker(j, m)) + return 1; + m = stbi__get_marker(j); + } + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, int w, int hs); + +#define stbi__div4(x) ((stbi_uc)((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc *stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i = 0; i < w; ++i) + out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc *stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0] * 3 + input[1] + 2); + for (i = 1; i < w - 1; ++i) { + int n = 3 * input[i] + 2; + out[i * 2 + 0] = stbi__div4(n + input[i - 1]); + out[i * 2 + 1] = stbi__div4(n + input[i + 1]); + } + out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); + out[i * 2 + 1] = input[w - 1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc)((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate 2x2 samples for every one in input + int i, t0, t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3 * in_near[0] + in_far[0]; + out[0] = stbi__div4(t1 + 2); + for (i = 1; i < w; ++i) { + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + } + out[w * 2 - 1] = stbi__div4(t1 + 2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // need to generate 2x2 samples for every one in input + int i = 0, t0, t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3 * in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w - 1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *)(in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *)(in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *)(out + i * 2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i * 2, o); +#endif + + // "previous" value for next iter + t1 = 3 * in_near[i + 7] + in_far[i + 7]; + } + + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + } + out[w * 2 - 1] = stbi__div4(t1 + 2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, + int hs) +{ + // resample with nearest-neighbor + int i, j; + STBI_NOTUSED(in_far); + for (i = 0; i < w; ++i) + for (j = 0; j < hs; ++j) + out[i * hs + j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int)((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, + const stbi_uc *pcr, int count, int step) +{ + int i; + for (i = 0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1 << 19); // rounding + int r, g, b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr * stbi__float2fixed(1.40200f); + g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb * stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned)r > 255) { + if (r < 0) + r = 0; + else + r = 255; + } + if ((unsigned)g > 255) { + if (g < 0) + g = 0; + else + g = 255; + } + if ((unsigned)b > 255) { + if (b < 0) + b = 0; + else + b = 255; + } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, + stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); + __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); + __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); + __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); + __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i + 7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *)(y + i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *)(pcr + i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *)(pcb + i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *)(out + 0), o0); + _mm_storeu_si128((__m128i *)(out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); + int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); + int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); + int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); + + for (; i + 7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8 * 4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1 << 19); // rounding + int r, g, b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr * stbi__float2fixed(1.40200f); + g = y_fixed + cr * -stbi__float2fixed(0.71414f) + + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb * stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned)r > 255) { + if (r < 0) + r = 0; + else + r = 255; + } + if ((unsigned)g > 255) { + if (g < 0) + g = 0; + else + g = 255; + } + if ((unsigned)b > 255) { + if (b < 0) + b = 0; + else + b = 255; + } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct { + resample_row_func resample; + stbi_uc *line0, *line1; + int hs, vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x * y + 128; + return (stbi_uc)((t + (t >> 8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) + return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { + stbi__cleanup_jpeg(z); + return NULL; + } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { + stbi__cleanup_jpeg(z); + return NULL; + } + + // resample and color-convert + { + int k; + unsigned int i, j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k = 0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *)stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { + stbi__cleanup_jpeg(z); + return stbi__errpuc("outofmem", "Out of memory"); + } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) + r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) + r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) + r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) + r->resample = z->resample_row_hv_2_kernel; + else + r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { + stbi__cleanup_jpeg(z); + return stbi__errpuc("outofmem", "Out of memory"); + } + + // now go ahead and resample + for (j = 0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k = 0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, r->w_lores, + r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i = 0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], + coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i = 0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], + coutput[2], z->s->img_x, n); + for (i = 0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], + coutput[2], z->s->img_x, n); + } + } else + for (i = 0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i = 0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], + coutput[1][i], + coutput[2][i]); + else { + for (i = 0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], + coutput[1][i], + coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i = 0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i = 0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], + coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i = 0; i < z->s->img_x; ++i) + out[i] = y[i]; + else + for (i = 0; i < z->s->img_x; ++i) { + *out++ = y[i]; + *out++ = 255; + } + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) + *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + unsigned char *result; + stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) + return stbi__errpuc("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x, y, comp, req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) + return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind(j->s); + return 0; + } + if (x) + *x = j->s->img_x; + if (y) + *y = j->s->img_y; + if (comp) + *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg *j = (stbi__jpeg *)(stbi__malloc(sizeof(stbi__jpeg))); + if (!j) + return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct { + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16 - bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i, k = 0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i = 0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i = 1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i = 1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16)code; + z->firstsymbol[i] = (stbi__uint16)k; + code = (code + sizes[i]); + if (sizes[i]) + if (code - 1 >= (1 << i)) + return stbi__err("bad codelengths", "Corrupt PNG"); + z->maxcode[i] = code << (16 - i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i = 0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); + z->size[c] = (stbi_uc)s; + z->value[c] = (stbi__uint16)i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s], s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct { + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static int stbi__zeof(stbi__zbuf *z) +{ + return (z->zbuffer >= z->zbuffer_end); +} + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + return stbi__zeof(z) ? 0 : *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) + stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b, s, k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s = STBI__ZFAST_BITS + 1;; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) + return -1; // invalid code! + // code size is s, so: + b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) + return -1; // some data was corrupt somewhere! + if (z->size[b] != s) + return -1; // was originally an assert, but report failure instead. + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b, s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, + int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) + return stbi__err("output buffer limit", "Corrupt PNG"); + cur = (unsigned int)(z->zout - z->zout_start); + limit = old_limit = (unsigned)(z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned)n) + return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if (limit > UINT_MAX / 2) + return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) + return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, + 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, + 99, 115, 131, 163, 195, 227, 258, 0, 0 }; + +static const int stbi__zlength_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 }; + +static const int stbi__zdist_base[32] = { 1, 2, 3, 4, 5, 7, 9, 13, + 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, + 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 }; + +static const int stbi__zdist_extra[32] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, + 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for (;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) + return stbi__err("bad huffman code", + "Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) + return 0; + zout = a->zout; + } + *zout++ = (char)z; + } else { + stbi_uc *p; + int len, dist; + if (z == 256) { + a->zout = zout; + return 1; + } + if (z >= 286) + return stbi__err( + "bad huffman code", + "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) + len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0 || z >= 30) + return stbi__err( + "bad huffman code", + "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) + dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) + return stbi__err("bad dist", "Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) + return 0; + zout = a->zout; + } + p = (stbi_uc *)(zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { + do + *zout++ = v; + while (--len); + } + } else { + if (len) { + do + *zout++ = *p++; + while (--len); + } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, + 11, 4, 12, 3, 13, 2, 14, 1, 15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286 + 32 + 137]; //padding for maximum single op + stbi_uc codelength_sizes[19]; + int i, n; + + int hlit = stbi__zreceive(a, 5) + 257; + int hdist = stbi__zreceive(a, 5) + 1; + int hclen = stbi__zreceive(a, 4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i = 0; i < hclen; ++i) { + int s = stbi__zreceive(a, 3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) + return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) + return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc)c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a, 2) + 3; + if (n == 0) + return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n - 1]; + } else if (c == 17) { + c = stbi__zreceive(a, 3) + 3; + } else if (c == 18) { + c = stbi__zreceive(a, 7) + 11; + } else { + return stbi__err("bad codelengths", "Corrupt PNG"); + } + if (ntot - n < c) + return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes + n, fill, c); + n += c; + } + } + if (n != ntot) + return stbi__err("bad codelengths", "Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) + return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) + return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len, nlen, k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + if (a->num_bits < 0) + return stbi__err("zlib corrupt", "Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) + return stbi__err("zlib corrupt", "Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) + return stbi__err("read past buffer", "Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) + return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) + return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + if ((cmf * 256 + flg) % 31 != 0) + return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + if (flg & 32) + return stbi__err("no preset dict", + "Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) + return stbi__err("bad compression", + "Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = { + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8 +}; +static const stbi_uc stbi__zdefault_distance[32] = { + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) + return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a, 1); + type = stbi__zreceive(a, 2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) + return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, + STBI__ZNSYMS)) + return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, + 32)) + return 0; + } else { + if (!stbi__compute_huffman_codes(a)) + return 0; + } + if (!stbi__parse_huffman_block(a)) + return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, + int *outlen) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(initial_size); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, + int initial_size, int *outlen, + int parse_header) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(initial_size); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *)ibuffer; + a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int)(a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(16384); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *)ibuffer; + a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int)(a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct { + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; + int i; + for (i = 0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) + return stbi__err("bad png sig", "Not a PNG"); + return 1; +} + +typedef struct { + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + +enum { + STBI__F_none = 0, + STBI__F_sub = 1, + STBI__F_up = 2, + STBI__F_avg = 3, + STBI__F_paeth = 4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = { STBI__F_none, STBI__F_sub, STBI__F_none, STBI__F_avg_first, + STBI__F_paeth_first }; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p - a); + int pb = abs(p - b); + int pc = abs(p - c); + if (pa <= pb && pa <= pc) + return a; + if (pb <= pc) + return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0, 0, 0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, + stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16 ? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i, j, stride = x * out_n * bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n * bytes; + int filter_bytes = img_n * bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); + a->out = (stbi_uc *)stbi__malloc_mad3(x, y, output_bytes, + 0); // extra bytes to write off the end into + if (!a->out) + return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) + return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) + return stbi__err("not enough pixels", "Corrupt PNG"); + + for (j = 0; j < y; ++j) { + stbi_uc *cur = a->out + stride * j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter", "Corrupt PNG"); + + if (depth < 8) { + if (img_width_bytes > x) + return stbi__err("invalid width", "Corrupt PNG"); + cur += x * out_n - + img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - + stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) + filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k = 0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none: + cur[k] = raw[k]; + break; + case STBI__F_sub: + cur[k] = raw[k]; + break; + case STBI__F_up: + cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + break; + case STBI__F_avg: + cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); + break; + case STBI__F_paeth: + cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); + break; + case STBI__F_avg_first: + cur[k] = raw[k]; + break; + case STBI__F_paeth_first: + cur[k] = raw[k]; + break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes + 1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1) * filter_bytes; +#define STBI__CASE(f) \ + case f: \ + for (k = 0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: + memcpy(cur, raw, nk); + break; + STBI__CASE(STBI__F_sub) + { + cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); + } + break; + STBI__CASE(STBI__F_up) + { + cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + } + break; + STBI__CASE(STBI__F_avg) + { + cur[k] = STBI__BYTECAST( + raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); + } + break; + STBI__CASE(STBI__F_paeth) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - filter_bytes], + prior[k], + prior[k - filter_bytes])); + } + break; + STBI__CASE(STBI__F_avg_first) + { + cur[k] = STBI__BYTECAST(raw[k] + + (cur[k - filter_bytes] >> 1)); + } + break; + STBI__CASE(STBI__F_paeth_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); + } + break; + } +#undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n + 1 == out_n); +#define STBI__CASE(f) \ + case f: \ + for (i = x - 1; i >= 1; --i, cur[filter_bytes] = 255, raw += filter_bytes, \ + cur += output_bytes, prior += output_bytes) \ + for (k = 0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) + { + cur[k] = raw[k]; + } + break; + STBI__CASE(STBI__F_sub) + { + cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); + } + break; + STBI__CASE(STBI__F_up) + { + cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + } + break; + STBI__CASE(STBI__F_avg) + { + cur[k] = STBI__BYTECAST( + raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); + } + break; + STBI__CASE(STBI__F_paeth) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - output_bytes], + prior[k], + prior[k - output_bytes])); + } + break; + STBI__CASE(STBI__F_avg_first) + { + cur[k] = STBI__BYTECAST(raw[k] + + (cur[k - output_bytes] >> 1)); + } + break; + STBI__CASE(STBI__F_paeth_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); + } + break; + } +#undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + + stride * j; // start at the beginning of the row again + for (i = 0; i < x; ++i, cur += output_bytes) { + cur[filter_bytes + 1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j = 0; j < y; ++j) { + stbi_uc *cur = a->out + stride * j; + stbi_uc *in = a->out + stride * j + x * out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : + 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k = x * img_n; k >= 2; k -= 2, ++in) { + *cur++ = scale * ((*in >> 4)); + *cur++ = scale * ((*in) & 0x0f); + } + if (k > 0) + *cur++ = scale * ((*in >> 4)); + } else if (depth == 2) { + for (k = x * img_n; k >= 4; k -= 4, ++in) { + *cur++ = scale * ((*in >> 6)); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in) & 0x03); + } + if (k > 0) + *cur++ = scale * ((*in >> 6)); + if (k > 1) + *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) + *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k = x * img_n; k >= 8; k -= 8, ++in) { + *cur++ = scale * ((*in >> 7)); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in) & 0x01); + } + if (k > 0) + *cur++ = scale * ((*in >> 7)); + if (k > 1) + *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) + *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) + *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) + *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) + *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) + *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride * j; + if (img_n == 1) { + for (q = x - 1; q >= 0; --q) { + cur[q * 2 + 1] = 255; + cur[q * 2 + 0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q = x - 1; q >= 0; --q) { + cur[q * 4 + 3] = 255; + cur[q * 4 + 2] = cur[q * 3 + 2]; + cur[q * 4 + 1] = cur[q * 3 + 1]; + cur[q * 4 + 0] = cur[q * 3 + 0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16 *)cur; + + for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, + int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, + a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + if (!final) + return stbi__err("outofmem", "Out of memory"); + for (p = 0; p < 7; ++p) { + int xorig[] = { 0, 4, 0, 2, 0, 1, 0 }; + int yorig[] = { 0, 0, 4, 0, 2, 0, 1 }; + int xspc[] = { 8, 8, 4, 4, 2, 2, 1 }; + int yspc[] = { 8, 8, 8, 4, 4, 2, 2 }; + int i, j, x, y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, + depth, color)) { + STBI_FREE(final); + return 0; + } + for (j = 0; j < y; ++j) { + for (i = 0; i < x; ++i) { + int out_y = j * yspc[p] + yorig[p]; + int out_x = i * xspc[p] + xorig[p]; + memcpy(final + out_y * a->s->img_x * out_bytes + + out_x * out_bytes, + a->out + (j * x + i) * out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16 *)z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *)stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) + return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i = 0; i < pixel_count; ++i) { + int n = orig[i] * 4; + p[0] = palette[n]; + p[1] = palette[n + 1]; + p[2] = palette[n + 2]; + p += 3; + } + } else { + for (i = 0; i < pixel_count; ++i) { + int n = orig[i] * 4; + p[0] = palette[n]; + p[1] = palette[n + 1]; + p[2] = palette[n + 2]; + p[3] = palette[n + 3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load_global = 0; +static int stbi__de_iphone_flag_global = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_global = flag_true_if_should_convert; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#else +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; + +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; +} + +#define stbi__unpremultiply_on_load \ + (stbi__unpremultiply_on_load_set ? stbi__unpremultiply_on_load_local : \ + stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag \ + (stbi__de_iphone_flag_set ? stbi__de_iphone_flag_local : stbi__de_iphone_flag_global) +#endif // STBI_THREAD_LOCAL + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i = 0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i = 0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = (t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i = 0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a, b, c, d) \ + (((unsigned)(a) << 24) + ((unsigned)(b) << 16) + ((unsigned)(c) << 8) + (unsigned)(d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n = 0; + stbi_uc has_trans = 0, tc[3] = { 0 }; + stbi__uint16 tc16[3]; + stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; + int first = 1, k, interlace = 0, color = 0, is_iphone = 0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) + return 0; + + if (scan == STBI__SCAN_type) + return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C', 'g', 'B', 'I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { + int comp, filter; + if (!first) + return stbi__err("multiple IHDR", "Corrupt PNG"); + first = 0; + if (c.length != 13) + return stbi__err("bad IHDR len", "Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + z->depth = stbi__get8(s); + if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && + z->depth != 16) + return stbi__err("1/2/4/8/16-bit only", + "PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); + if (color > 6) + return stbi__err("bad ctype", "Corrupt PNG"); + if (color == 3 && z->depth == 16) + return stbi__err("bad ctype", "Corrupt PNG"); + if (color == 3) + pal_img_n = 3; + else if (color & 1) + return stbi__err("bad ctype", "Corrupt PNG"); + comp = stbi__get8(s); + if (comp) + return stbi__err("bad comp method", "Corrupt PNG"); + filter = stbi__get8(s); + if (filter) + return stbi__err("bad filter method", "Corrupt PNG"); + interlace = stbi__get8(s); + if (interlace > 1) + return stbi__err("bad interlace method", "Corrupt PNG"); + if (!s->img_x || !s->img_y) + return stbi__err("0-pixel image", "Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) + return stbi__err("too large", "Image too large to decode"); + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) + return stbi__err("too large", "Corrupt PNG"); + } + // even with SCAN_header, have to scan to see if we have a tRNS + break; + } + + case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256 * 3) + return stbi__err("invalid PLTE", "Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) + return stbi__err("invalid PLTE", "Corrupt PNG"); + for (i = 0; i < pal_len; ++i) { + palette[i * 4 + 0] = stbi__get8(s); + palette[i * 4 + 1] = stbi__get8(s); + palette[i * 4 + 2] = stbi__get8(s); + palette[i * 4 + 3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) + return stbi__err("tRNS after IDAT", "Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { + s->img_n = 4; + return 1; + } + if (pal_len == 0) + return stbi__err("tRNS before PLTE", "Corrupt PNG"); + if (c.length > pal_len) + return stbi__err("bad tRNS len", "Corrupt PNG"); + pal_img_n = 4; + for (i = 0; i < c.length; ++i) + palette[i * 4 + 3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) + return stbi__err("tRNS with alpha", "Corrupt PNG"); + if (c.length != (stbi__uint32)s->img_n * 2) + return stbi__err("bad tRNS len", "Corrupt PNG"); + has_trans = 1; + // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. + if (scan == STBI__SCAN_header) { + ++s->img_n; + return 1; + } + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) + tc16[k] = (stbi__uint16)stbi__get16be( + s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) + tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * + stbi__depth_scale_table + [z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) + return stbi__err("no PLTE", "Corrupt PNG"); + if (scan == STBI__SCAN_header) { + // header scan definitely stops at first IDAT + if (pal_img_n) + s->img_n = pal_img_n; + return 1; + } + if (c.length > (1u << 30)) + return stbi__err("IDAT size limit", + "IDAT section larger than 2^30 bytes"); + if ((int)(ioff + c.length) < (int)ioff) + return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) + idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *)STBI_REALLOC_SIZED(z->idata, idata_limit_old, + idata_limit); + if (p == NULL) + return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata + ioff, c.length)) + return stbi__err("outofdata", "Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { + stbi__uint32 raw_len, bpl; + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) + return 1; + if (z->idata == NULL) + return stbi__err("no IDAT", "Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *)stbi_zlib_decode_malloc_guesssize_headerflag( + (char *)z->idata, ioff, raw_len, (int *)&raw_len, !is_iphone); + if (z->expanded == NULL) + return 0; // zlib should set error + STBI_FREE(z->idata); + z->idata = NULL; + if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n + 1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, + color, interlace)) + return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) + return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) + return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) + s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); + z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) + return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { +#ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); +#endif + return stbi__err(invalid_chunk, + "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result = NULL; + if (req_comp < 0 || req_comp > 4) + return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc("bad bits_per_channel", + "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *)result, + p->s->img_out_n, req_comp, + p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *)result, + p->s->img_out_n, req_comp, + p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) + return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) + *n = p->s->img_n; + } + STBI_FREE(p->out); + p->out = NULL; + STBI_FREE(p->expanded); + p->expanded = NULL; + STBI_FREE(p->idata); + p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x, y, comp, req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind(p->s); + return 0; + } + if (x) + *x = p->s->img_x; + if (y) + *y = p->s->img_y; + if (comp) + *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') + return 0; + if (stbi__get8(s) != 'M') + return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n = 0; + if (z == 0) + return -1; + if (z >= 0x10000) { + n += 16; + z >>= 16; + } + if (z >= 0x00100) { + n += 8; + z >>= 8; + } + if (z >= 0x00010) { + n += 4; + z >>= 4; + } + if (z >= 0x00004) { + n += 2; + z >>= 2; + } + if (z >= 0x00002) { + n += 1; /* >>= 1;*/ + } + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(unsigned int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff /*0b11111111*/, + 0x55 /*0b01010101*/, + 0x49 /*0b01001001*/, + 0x11 /*0b00010001*/, + 0x21 /*0b00100001*/, + 0x41 /*0b01000001*/, + 0x81 /*0b10000001*/, + 0x01 /*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0, 0, 1, 0, 2, 4, 6, 0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8 - bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct { + int bpp, offset, hsz; + unsigned int mr, mg, mb, ma, all_a; + int extra_read; +} stbi__bmp_data; + +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) +{ + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; + + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = + 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; + } + return 0; // error +} + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') + return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; + + if (info->offset < 0) + return stbi__errpuc("bad BMP", "bad BMP"); + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) + return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) + return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) + return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + if (compress >= 4) + return stbi__errpuc( + "BMP JPEG/PNG", + "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) + return stbi__errpuc("bad BMP", + "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != + 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i = 0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *)1; +} + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; + stbi_uc pal[256][4]; + int psize = 0, i, j, width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int)s->img_y) > 0; + s->img_y = abs((int)s->img_y); + + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; + } + if (psize == 0) { + // accept some number of extra bytes after the header, but if the offset points either to before + // the header ends or implies a large amount of extra data, reject the file as malformed + int bytes_read_so_far = + s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); + int header_limit = 1024; // max we actually read is below 256 bytes currently. + int extra_data_limit = + 256 * + 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. + if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { + return stbi__errpuc("bad header", "Corrupt BMP"); + } + // we established that bytes_read_so_far is positive and sensible. + // the first half of this test rejects offsets that are either too small positives, or + // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn + // ensures the number computed in the second half of the test can't overflow. + if (info.offset < bytes_read_so_far || + info.offset - bytes_read_so_far > extra_data_limit) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } else { + stbi__skip(s, info.offset - bytes_read_so_far); + } + } + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z = 0; + if (psize == 0 || psize > 256) { + STBI_FREE(out); + return stbi__errpuc("invalid", "Corrupt BMP"); + } + for (i = 0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) + stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - + psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) + width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) + width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) + width = s->img_x; + else { + STBI_FREE(out); + return stbi__errpuc("bad bpp", "Corrupt BMP"); + } + pad = (-width) & 3; + if (info.bpp == 1) { + for (j = 0; j < (int)s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i = 0; i < (int)s->img_x; ++i) { + int color = (v >> bit_offset) & 0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) + out[z++] = 255; + if (i + 1 == (int)s->img_x) + break; + if ((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j = 0; j < (int)s->img_y; ++j) { + for (i = 0; i < (int)s->img_x; i += 2) { + int v = stbi__get8(s), v2 = 0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) + out[z++] = 255; + if (i + 1 == (int)s->img_x) + break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) + out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, + bcount = 0, acount = 0; + int z = 0; + int easy = 0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) + width = 3 * s->img_x; + else if (info.bpp == 16) + width = 2 * s->img_x; + else /* bpp = 32 and pad = 0 */ + width = 0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { + STBI_FREE(out); + return stbi__errpuc("bad masks", "Corrupt BMP"); + } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr) - 7; + rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg) - 7; + gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb) - 7; + bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma) - 7; + acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { + STBI_FREE(out); + return stbi__errpuc("bad masks", "Corrupt BMP"); + } + } + for (j = 0; j < (int)s->img_y; ++j) { + if (easy) { + for (i = 0; i < (int)s->img_x; ++i) { + unsigned char a; + out[z + 2] = stbi__get8(s); + out[z + 1] = stbi__get8(s); + out[z + 0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) + out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i = 0; i < (int)s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? + (stbi__uint32)stbi__get16le(s) : + stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) + out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j = 0; j < (int)s->img_y >> 1; ++j) { + stbi_uc *p1 = out + j * s->img_x * target; + stbi_uc *p2 = out + (s->img_y - 1 - j) * s->img_x * target; + for (i = 0; i < (int)s->img_x * target; ++i) { + t = p1[i]; + p1[i] = p2[i]; + p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) + *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int *is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) + *is_rgb16 = 0; + switch (bits_per_pixel) { + case 8: + return STBI_grey; + case 16: + if (is_grey) + return STBI_grey_alpha; + // fallthrough + case 15: + if (is_rgb16) + *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: + return bits_per_pixel / 8; + default: + return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if (tga_colormap_type > 1) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if (tga_colormap_type == 1) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, + 4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && + (tga_image_type != 11)) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s, + 9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if (tga_w < 1) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if (tga_h < 1) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp( + tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if (!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) + *x = tga_w; + if (y) + *y = tga_h; + if (comp) + *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if (tga_color_type > 1) + goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if (tga_color_type == 1) { // colormapped (paletted) image + if (sz != 1 && sz != 9) + goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s, + 4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) + goto errorEnd; + stbi__skip(s, 4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) + goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s, + 9); // skip colormap specification and image x/y origin + } + if (stbi__get16le(s) < 1) + goto errorEnd; // test width + if (stbi__get16le(s) < 1) + goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) + goto errorEnd; // for colormapped images, bpp is size of an index + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) + goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc *out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255) / 31); + out[1] = (stbi_uc)((g * 255) / 31); + out[2] = (stbi_uc)((b * 255) / 31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16 = 0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = { 0 }; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO + + if (tga_height > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + // do a tiny bit of precessing + if (tga_image_type >= 8) { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if (tga_indexed) + tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else + tga_comp = + stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) + *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char *)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) + return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset); + + if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { + for (i = 0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height - i - 1 : i; + stbi_uc *tga_row = tga_data + row * tga_width * tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if (tga_indexed) { + if (tga_palette_len == 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start); + // load the palette + tga_palette = + (unsigned char *)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i = 0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i = 0; i < tga_width * tga_height; ++i) { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if (tga_is_RLE) { + if (RLE_count == 0) { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if (!RLE_repeating) { + read_next_pixel = 1; + } + } else { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if (read_next_pixel) { + // load however much data we did have + if (tga_indexed) { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : + stbi__get16le(s); + if (pal_idx >= tga_palette_len) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx + j]; + } + } else if (tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i * tga_comp + j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if (tga_inverted) { + for (j = 0; j * 2 < tga_height; ++j) { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if (tga_palette != NULL) { + STBI_FREE(tga_palette); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) { + unsigned char *tga_pixel = tga_data; + for (i = 0; i < tga_width * tga_height; ++i) { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = + stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = tga_x_origin = tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) + return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) + return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w, h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", + "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + if (h > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s, stbi__get32be(s)); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s)); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s)); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *)stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *)stbi__malloc(4 * w * h); + + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w * h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out + channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *)out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out + channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *)out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16)stbi__get16be(s); + } else { + stbi_uc *p = out + channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc)(stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i = 0; i < w * h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *)out + 4 * i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); + pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); + pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); + } + } + } else { + for (i = 0; i < w * h; ++i) { + unsigned char *pixel = out + 4 * i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); + pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); + pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, 4, req_comp, w, + h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } + + if (comp) + *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s, const char *str) +{ + int i; + for (i = 0; i < 4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) + return 0; + + for (i = 0; i < 84; ++i) + stbi__get8(s); + + if (!stbi__pic_is4(s, "PICT")) + return 0; + + return 1; +} + +typedef struct { + stbi_uc size, type, channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask = 0x80, i; + + for (i = 0; i < 4; ++i, mask >>= 1) { + if (channel & mask) { + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", "PIC file too short"); + dest[i] = stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel, stbi_uc *dest, const stbi_uc *src) +{ + int mask = 0x80, i; + + for (i = 0; i < 4; ++i, mask >>= 1) + if (channel & mask) + dest[i] = src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s, int width, int height, int *comp, + stbi_uc *result) +{ + int act_comp = 0, num_packets = 0, y, chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets == sizeof(packets) / sizeof(packets[0])) + return stbi__errpuc("bad format", "too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", "file too short (reading packets)"); + if (packet->size != 8) + return stbi__errpuc("bad format", "packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for (y = 0; y < height; ++y) { + int packet_idx; + + for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { + stbi__pic_packet *packet = &packets[packet_idx]; + stbi_uc *dest = result + y * width * 4; + + switch (packet->type) { + default: + return stbi__errpuc("bad format", + "packet has bad compression type"); + + case 0: { //uncompressed + int x; + + for (x = 0; x < width; ++x, dest += 4) + if (!stbi__readval(s, packet->channel, dest)) + return 0; + break; + } + + case 1: //Pure RLE + { + int left = width, i; + + while (left > 0) { + stbi_uc count, value[4]; + + count = stbi__get8(s); + if (stbi__at_eof(s)) + return stbi__errpuc( + "bad file", + "file too short (pure read count)"); + + if (count > left) + count = (stbi_uc)left; + + if (!stbi__readval(s, packet->channel, value)) + return 0; + + for (i = 0; i < count; ++i, dest += 4) + stbi__copyval(packet->channel, dest, value); + left -= count; + } + } break; + + case 2: { //Mixed RLE + int left = width; + while (left > 0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) + return stbi__errpuc( + "bad file", + "file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count == 128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file", + "scanline overrun"); + + if (!stbi__readval(s, packet->channel, value)) + return 0; + + for (i = 0; i < count; ++i, dest += 4) + stbi__copyval(packet->channel, dest, value); + } else { // Raw + ++count; + if (count > left) + return stbi__errpuc("bad file", + "scanline overrun"); + + for (i = 0; i < count; ++i, dest += 4) + if (!stbi__readval(s, packet->channel, + dest)) + return 0; + } + left -= count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s, int *px, int *py, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *result; + int i, x, y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) + comp = &internal_comp; + + for (i = 0; i < 92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", "file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) + return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *)stbi__malloc_mad3(x, y, 4, 0); + if (!result) + return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x * y * 4); + + if (!stbi__pic_load_core(s, x, y, comp, result)) { + STBI_FREE(result); + result = 0; + } + *px = x; + *py = y; + if (req_comp == 0) + req_comp = *comp; + result = stbi__convert_format(result, 4, req_comp, x, y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct { + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct { + int w, h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || + stbi__get8(s) != '8') + return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') + return 0; + if (stbi__get8(s) != 'a') + return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, + int transp) +{ + int i; + for (i = 0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || + stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') + return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') + return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (g->w > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + + if (comp != 0) + *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) + return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif *g = (stbi__gif *)stbi__malloc(sizeof(stbi__gif)); + if (!g) + return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind(s); + return 0; + } + if (x) + *x = g->w; + if (y) + *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) + return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) + return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc)init_code; + g->codes[init_code].suffix = (stbi_uc)init_code; + } + + // support no starting clear code + avail = clear + 2; + oldcode = -1; + + len = 0; + for (;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32)stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s, len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", + "Corrupt GIF"); + } + + p->prefix = (stbi__int16)oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : + g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", + "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16)code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, + stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp, 0)) + return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *)stbi__malloc(4 * pcount); + g->background = (stbi_uc *)stbi__malloc(4 * pcount); + g->history = (stbi_uc *)stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, + 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, + pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = + 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy(&g->out[pi * 4], &two_back[pi * 4], 4); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy(&g->out[pi * 4], &g->background[pi * 4], 4); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy(g->background, g->out, 4 * g->w * g->h); + } + + // clear my history; + memset(g->history, 0x00, + g->w * g->h); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7), + g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *)g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *)g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) + return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = + 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = + 10 * + stbi__get16le( + s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *)s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) +{ + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); + + if (out) + STBI_FREE(out); + if (delays && *delays) + STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, + int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *)s) + u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = (stbi_uc *)STBI_REALLOC_SIZED(out, out_size, + layers * stride); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, + delays); + else { + out = (stbi_uc *)tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int *)STBI_REALLOC_SIZED( + *delays, delays_size, sizeof(int) * layers); + if (!new_delays) + return stbi__load_gif_main_outofmem(&g, out, + delays); + *delays = new_delays; + delays_size = layers * sizeof(int); + } + } else { + out = (stbi_uc *)stbi__malloc(layers * stride); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, + delays); + out_size = layers * stride; + if (delays) { + *delays = (int *)stbi__malloc(layers * sizeof(int)); + if (!*delays) + return stbi__load_gif_main_outofmem(&g, out, + delays); + delays_size = layers * sizeof(int); + } + } + memcpy(out + ((layers - 1) * stride), u, stride); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *)s) + u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s, x, y, comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i = 0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context *s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if (!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len = 0; + char c = '\0'; + + c = (char)stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN - 1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char)stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if (input[3] != 0) { + float f1; + // Exponent + f1 = (float)ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) + output[1] = 1; + if (req_comp == 4) + output[3] = 1; + } else { + switch (req_comp) { + case 4: + output[3] = 1; /* fallthrough */ + case 3: + output[0] = output[1] = output[2] = 0; + break; + case 2: + output[1] = 1; /* fallthrough */ + case 1: + output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1, c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s, buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for (;;) { + token = stbi__hdr_gettoken(s, buffer); + if (token[0] == 0) + break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) + valid = 1; + } + + if (!valid) + return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s, buffer); + if (strncmp(token, "-Y ", 3)) + return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int)strtol(token, &token, 10); + while (*token == ' ') + ++token; + if (strncmp(token, "+X ", 3)) + return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int)strtol(token, NULL, 10); + + if (height > STBI_MAX_DIMENSIONS) + return stbi__errpf("too large", "Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) + return stbi__errpf("too large", "Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) + *comp = 3; + if (req_comp == 0) + req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *)stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if (width < 8 || width >= 32768) { + // Read flat data + for (j = 0; j < height; ++j) { + for (i = 0; i < width; ++i) { + stbi_uc rgbe[4]; +main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, + rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc)c1; + rgbe[1] = (stbi_uc)c2; + rgbe[2] = (stbi_uc)len; + rgbe[3] = (stbi_uc)stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf("invalid decoded scanline length", + "corrupt HDR"); + } + if (scanline == NULL) { + scanline = (stbi_uc *)stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if ((count == 0) || (count > nleft)) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf("corrupt", + "bad RLE data in HDR"); + } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if ((count == 0) || (count > nleft)) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf("corrupt", + "bad RLE data in HDR"); + } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i = 0; i < width; ++i) + stbi__hdr_convert(hdr_data + (j * width + i) * req_comp, + scanline + i * 4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind(s); + return 0; + } + + for (;;) { + token = stbi__hdr_gettoken(s, buffer); + if (token[0] == 0) + break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) + valid = 1; + } + + if (!valid) { + stbi__rewind(s); + return 0; + } + token = stbi__hdr_gettoken(s, buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind(s); + return 0; + } + token += 3; + *y = (int)strtol(token, &token, 10); + while (*token == ' ') + ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind(s); + return 0; + } + token += 3; + *x = (int)strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind(s); + return 0; + } + if (x) + *x = s->img_x; + if (y) + *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind(s); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind(s); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind(s); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind(s); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp = 0, num_packets = 0, chained, dummy; + stbi__pic_packet packets[10]; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind(s); + return 0; + } + if ((*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets == sizeof(packets) / sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind(s); + return 0; + } + if (packet->size != 8) { + stbi__rewind(s); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char)stbi__get8(s); + t = (char)stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, + stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = + stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) + *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, + 0); + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { + STBI_FREE(out); + return stbi__errpuc("bad PNM", "PNM file truncated"); + } + + if (req_comp && req_comp != s->img_n) { + if (ri->bits_per_channel == 16) { + out = (stbi_uc *)stbi__convert_format16((stbi__uint16 *)out, s->img_n, + req_comp, s->img_x, s->img_y); + } else { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + } + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char)stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r') + *c = (char)stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value * 10 + (*c - '0'); + *c = (char)stbi__get8(s); + if ((value > 214748364) || (value == 214748364 && *c > '7')) + return stbi__err( + "integer parse overflow", + "Parsing an integer in the PPM header overflowed a 32-bit int"); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char)stbi__get8(s); + t = (char)stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char)stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + if (*x == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + if (*y == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err("max value > 65535", + "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ +#ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) + return 1; +#endif + +#ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) + return 1; +#endif + + // test tga last because it's a crappy test! +#ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; +#endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ +#ifndef STBI_NO_PNG + if (stbi__png_is16(s)) + return 1; +#endif + +#ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) + return 1; +#endif + +#ifndef STBI_NO_PNM + if (stbi__pnm_is16(s)) + return 1; +#endif + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) + return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s, x, y, comp); + fseek(f, pos, SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) + return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f, pos, SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__info_main(&s, x, y, comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, + int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user); + return stbi__info_main(&s, x, y, comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user); + return stbi__is_16_main(&s); +} + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +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. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +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 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. +------------------------------------------------------------------------------ +*/ diff --git a/StgSharp.C/stb_image.h b/StgSharp.C/stb_image.h new file mode 100644 index 00000000..ae870bf6 --- /dev/null +++ b/StgSharp.C/stb_image.h @@ -0,0 +1,787 @@ +/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.28 (2023-01-29) many error fixes, security errors, just tons of stuff + 2.27 (2021-07-11) document stbi_info better, 16-bit PNM support, bug fixes + 2.26 (2020-07-13) many minor fixes + 2.25 (2020-02-02) fix warnings + 2.24 (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically + 2.23 (2019-08-11) fix clang static analysis warning + 2.22 (2019-03-04) gif fixes, fix warnings + 2.21 (2019-02-25) fix typo in comment + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine Simon Breuss (16-bit PNM) + John-Mark Allen + Carmelo J Fdez-Aguera + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Blazej Dariusz Roszkowski + Phil Jordan Dave Moore Roy Eltham + Hayaki Saito Nathan Reed Won Chun + Luke Graham Johan Duparc Nick Verigakis the Horde3D community + Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Eugene Golushkov Laurent Gomila Cort Stratton github:snagar + Aruelien Pocheville Sergio Gonzalez Thibault Reuille github:Zelex + Cass Everitt Ryamond Barbiero github:grim210 + Paul Du Bois Engin Manap Aldo Culquicondor github:sammyhw + Philipp Wiesemann Dale Weiler Oriol Ferrer Mesia github:phprus + Josh Tobin Neil Bickford Matthew Gregan github:poppolopoppo + Julian Raschke Gregory Mullen Christian Floisand github:darealshinji + Baldur Karlsson Kevin Schmidt JR Smith github:Michaelangel007 + Brad Weinberger Matvey Cherevko github:mosra + Luca Sas Alexander Veselov Zack Middleton [reserved] + Ryan C. Gordon [reserved] [reserved] + DO NOT ADD YOUR NAME HERE + + Jacko Dirks + + To add your name to the credits, pick a random blank space in the middle and fill it. + 80% of merge conflicts on stb PRs are due to people adding their name at the end + of the credits. +*/ + +#pragma once + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data); +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// To query the width, height and component count of an image without having to +// decode the full file, you can use the stbi_info family of functions: +// +// int x,y,n,ok; +// ok = stbi_info(filename, &x, &y, &n); +// // returns ok=1 and sets x, y, n if image is a supported format, +// // 0 otherwise. +// +// Note that stb_image pervasively uses ints in its public API for sizes, +// including sizes of memory buffers. This is now part of the API and thus +// hard to change without causing breakage. As a result, the various image +// loaders all have certain limits on image size; these differ somewhat +// by format but generally boil down to either just under 2GB or just under +// 1GB. When the decoded image would be larger than this, stb_image decoding +// will fail. +// +// Additionally, stb_image will reject image files that have any of their +// dimensions set to a larger value than the configurable STBI_MAX_DIMENSIONS, +// which defaults to 2**24 = 16777216 pixels. Due to the above memory limit, +// the only way to have an image with such dimensions load correctly +// is for it to have a rather extreme aspect ratio. Either way, the +// assumption here is that such larger images are likely to be malformed +// or malicious. If you do need to load an image with individual dimensions +// larger than that, and it still fits in the overall size limit, you can +// #define STBI_MAX_DIMENSIONS on your own to be something larger. +// +// =========================================================================== +// +// UNICODE: +// +// If compiling for Windows and you wish to use Unicode filenames, compile +// with +// #define STBI_WINDOWS_UTF8 +// and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert +// Windows wchar_t filenames to utf8. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy-to-use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// provide more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image supports loading HDR images in general, and currently the Radiance +// .HDR file format specifically. You can still load any file through the existing +// interface; if you attempt to load an HDR file, it will be automatically remapped +// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// We optionally support converting iPhone-formatted PNGs (which store +// premultiplied BGRA) back to RGB, even though they're internally encoded +// differently. To enable this conversion, call +// stbi_convert_iphone_png_to_rgb(1). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// +// - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater +// than that size (in either width or height) without further processing. +// This is to let programs in the wild set an upper bound to prevent +// denial-of-service attacks on untrusted data, as one could generate a +// valid image of gigantic dimensions and force stb_image to allocate a +// huge block of memory and spend disproportionate time decoding it. By +// default this is set to (1 << 24), which is 16777216, but that's still +// very big. + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum { + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +#include +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STBIDEF +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct { + int (*read)( + void *user, char *data, + int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip)(void *user, + int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof)(void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); +STBIDEF void stbi_load_to_target(char const *filename, int *x, int *y, stbi_uc *target, + int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *channels_in_file, + int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, + int *y, int *z, int *comp, int req_comp); +#endif + +#ifdef STBI_WINDOWS_UTF8 +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t *input); +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, + int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, + int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, + int *channels_in_file, int desired_channels); +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *channels_in_file, + int desired_channels); +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *channels_in_file, + int desired_channels); +#endif +#endif + +#ifndef STBI_NO_HDR +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); +STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); +STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr(char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + +// get a VERY brief reason for failure +// on most compilers (and ALL modern mainstream compilers) this is threadsafe +STBIDEF const char *stbi_failure_reason(void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free(void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, + int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit(char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// as above, but only applies to images loaded on the thread that calls the function +// this function is only available if your compiler supports thread-local variables; +// calling it will fail to link if your compiler doesn't +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, + int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, + int initial_size, int *outlen, + int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, + int ilen); + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +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. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +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 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. +------------------------------------------------------------------------------ +*/ diff --git a/StgSharp.C/string.c b/StgSharp.C/string.c new file mode 100644 index 00000000..713d353b --- /dev/null +++ b/StgSharp.C/string.c @@ -0,0 +1,53 @@ +#include "ssc_intrinsic.h" + +int index_pair_sse(short const *str, uint32_t target, int length) +{ + int index = 0, result = 0, size = length, end = size - 8; + __m128i s = { + target, + target, + target, + target, + }; + __m128i vec, com; + + while (index < end) { + vec = _mm_loadu_epi32(str + index); + com = _mm_cmpeq_epi16(vec, s); + result = _mm_movemask_epi8(com); + if (result) { + for (size_t i = 0; i < 7; i++) { + if (((result & 0xF) == 0xF)) { + return index + i; + } + if (result == 0) { + break; + } + result >>= 2; + } + } + index += 1; + vec = _mm_loadu_epi32(str + index); + com = _mm_cmpeq_epi16(vec, s); + result = _mm_movemask_epi8(com); + if (result) { + for (size_t i = 0; i < 7; i++) { + if (((result & 0xF) == 0xF)) { + return index + i; + } + if (result == 0) { + break; + } + result >>= 2; + } + } + index += 7; + } + for (; (index < size - 1) && (!result); index += 2) { + result = *(int *)(str + index) == target; + } + if (result) { + return index; + } + return -1; +} diff --git a/StgSharp.C/vector.c b/StgSharp.C/vector.c new file mode 100644 index 00000000..c534bae7 --- /dev/null +++ b/StgSharp.C/vector.c @@ -0,0 +1,31 @@ +#include "StgSharpC.h" +#include "ssc_internal.h" + +SSCAPI void SSCDECL normalize(__m128 *source, __m128 *target) +{ + __m128 a_length_sq = _mm_mul_ps(*source, *source); + a_length_sq = _mm_add_ps(a_length_sq, + _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); + a_length_sq = _mm_add_ss(a_length_sq, + _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); + + __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq); + *source = _mm_mul_ps(*source, a_inv_length); + + __m128 dot_product = _mm_mul_ps(*target, *source); + dot_product = _mm_add_ps(dot_product, + _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(2, 3, 0, 1))); + dot_product = _mm_add_ss(dot_product, + _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(0, 0, 3, 2))); + + __m128 b_orthogonal = _mm_sub_ps(*target, _mm_mul_ps(*source, dot_product)); + + __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal); + b_length_sq = _mm_add_ps(b_length_sq, + _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); + b_length_sq = _mm_add_ss(b_length_sq, + _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); + + __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq); + *target = _mm_mul_ps(b_orthogonal, b_inv_length); +} diff --git a/StgSharp.C/vector_dot.c b/StgSharp.C/vector_dot.c new file mode 100644 index 00000000..a6152e89 --- /dev/null +++ b/StgSharp.C/vector_dot.c @@ -0,0 +1,147 @@ +#include "ssc_intrinsic.h" +#include "SSC_internal.h" + +static const int avxdot_indices[] = { 0, 4, 1, 5, 2, 3, 6, 7 }; + +INTERNAL void FORCEINLINE SSCDECL dot_41_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + *ans = _mm_dp_ps(transpose->column[0], *vector, 0B11110001); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 1)); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[3], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 4)); +} + +INTERNAL void SSCDECL dot_41_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __m256 _double = _mm256_set_m128(vector[0], vector[0]); + __m256 tmp = _mm256_dp_ps(transpose->half[0], _double, 0B11110001); + tmp = _mm256_blend_ps(tmp, _mm256_dp_ps(transpose->half[0], _double, 0B11110010), + 0B00100010); + *ans = _mm256_castps256_ps128( + _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices))); +} + +INTERNAL void FORCEINLINE SSCDECL dot_31_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + *ans = _mm_dp_ps(transpose->column[0], *vector, 0B11110001); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); +} + +INTERNAL void FORCEINLINE SSCDECL dot_31_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __m256 _double = _mm256_set_m128(vector[0], vector[0]); + __m256 tmp = _mm256_dp_ps(transpose->part, _double, 0B11110001); + *ans = _mm256_castps256_ps128( + _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices))); + *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], *vector, 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); +} + +INTERNAL void SSCDECL dot_42_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + ans[0] = _mm_dp_ps(transpose->column[0], vector[0], 0B11110001); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[3], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 4)); + + ans[1] = _mm_dp_ps(transpose->column[0], vector[1], 0B11110001); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[3], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 4)); +} + +INTERNAL void SSCDECL dot_32_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + ans[0] = _mm_dp_ps(transpose->column[0], vector[0], 0B11110001); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[0], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); + + ans[1] = _mm_dp_ps(transpose->column[0], vector[1], 0B11110001); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 2)); + ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], vector[1], 0B11110001), + SSE_INSERT_SIMPLE(1, 3)); +} + +INTERNAL void SSCDECL dot_42_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __2_columnset *ans_ptr = (__2_columnset *)ans, *right_ptr = (__2_columnset *)vector; + __m256 temp = ALIGN256(transpose->half[0]); + + ans_ptr->stream = _mm256_dp_ps(temp, right_ptr->stream, 0B11110001); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110010), 0B00100010); + + temp = ALIGN256(transpose->half[1]); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110100), 0B01000100); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11111000), 0B10001000); + + ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 3, 0, 1)); +} + +INTERNAL void SSCDECL dot_32_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __2_columnset *ans_ptr = (__2_columnset *)ans, *right_ptr = (__2_columnset *)vector; + __m256 temp = transpose->part; + + ans_ptr->stream = _mm256_dp_ps(temp, right_ptr->stream, 0B11110001); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110010), 0B00100010); + + temp = _mm256_set_m128(transpose->column[2], transpose->column[2]); + ans_ptr->stream = _mm256_blend_ps( + ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110100), 0B01000100); + + ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 2, 0, 1)); +} + +INTERNAL void SSCDECL dot_43_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + dot_41_sse(transpose, vector, ans); + dot_41_sse(transpose, vector + 1, ans + 1); + dot_41_sse(transpose, vector + 2, ans + 2); +} + +INTERNAL void SSCDECL dot_43_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans) +{ + __3_columnset *ans_ptr = (__3_columnset *)ans, *right_ptr = (__3_columnset *)vector; + __m256 temp = ALIGN256(transpose->half[0]); + __m256 third = _mm256_set_m128(right_ptr->column[2], right_ptr->column[2]); + + ans_ptr->part = _mm256_dp_ps(temp, right_ptr->part, 0B11110001); + __m256 ans_third = _mm256_dp_ps(temp, third, 0B11110001); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->part = _mm256_blend_ps( + ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11110010), 0B00100010); + + temp = ALIGN256(transpose->half[1]); + ans_ptr->part = _mm256_blend_ps( + ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11110100), 0B01000100); + ans_third = _mm256_blend_ps(ans_third, _mm256_dp_ps(temp, third, 0B11110010), 0B00100010); + temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + ans_ptr->part = _mm256_blend_ps( + ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11111000), 0B10001000); + + ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 3, 0, 1)); + ans[2] = _mm256_castps256_ps128( + _mm256_permutevar8x32_ps(ans_third, _mm256_loadu_epi32(avxdot_indices))); +} diff --git a/StgSharp.C/wgl.h b/StgSharp.C/wgl.h new file mode 100644 index 00000000..a48052de --- /dev/null +++ b/StgSharp.C/wgl.h @@ -0,0 +1,1076 @@ +/** + * Loader generated by glad 2.0.5 on Fri Feb 16 00:51:03 2024 + * + * SPDX-License-Identifier: (WTFPL OR CC0-1.0) AND Apache-2.0 + * + * Generator: C/C++ + * Specification: wgl + * Extensions: 57 + * + * APIs: + * - wgl=1.0 + * + * Options: + * - ALIAS = False + * - DEBUG = False + * - HEADER_ONLY = False + * - LOADER = False + * - MX = True + * - ON_DEMAND = False + * + * Commandline: + * --api='wgl=1.0' --extensions='WGL_3DFX_multisample,WGL_3DL_stereo_control,WGL_AMD_gpu_association,WGL_ARB_buffer_region,WGL_ARB_context_flush_control,WGL_ARB_create_context,WGL_ARB_create_context_no_error,WGL_ARB_create_context_profile,WGL_ARB_create_context_robustness,WGL_ARB_extensions_string,WGL_ARB_framebuffer_sRGB,WGL_ARB_make_current_read,WGL_ARB_multisample,WGL_ARB_pbuffer,WGL_ARB_pixel_format,WGL_ARB_pixel_format_float,WGL_ARB_render_texture,WGL_ARB_robustness_application_isolation,WGL_ARB_robustness_share_group_isolation,WGL_ATI_pixel_format_float,WGL_ATI_render_texture_rectangle,WGL_EXT_colorspace,WGL_EXT_create_context_es2_profile,WGL_EXT_create_context_es_profile,WGL_EXT_depth_float,WGL_EXT_display_color_table,WGL_EXT_extensions_string,WGL_EXT_framebuffer_sRGB,WGL_EXT_make_current_read,WGL_EXT_multisample,WGL_EXT_pbuffer,WGL_EXT_pixel_format,WGL_EXT_pixel_format_packed_float,WGL_EXT_swap_control,WGL_EXT_swap_control_tear,WGL_I3D_digital_video_control,WGL_I3D_gamma,WGL_I3D_genlock,WGL_I3D_image_buffer,WGL_I3D_swap_frame_lock,WGL_I3D_swap_frame_usage,WGL_NV_DX_interop,WGL_NV_DX_interop2,WGL_NV_copy_image,WGL_NV_delay_before_swap,WGL_NV_float_buffer,WGL_NV_gpu_affinity,WGL_NV_multigpu_context,WGL_NV_multisample_coverage,WGL_NV_present_video,WGL_NV_render_depth_texture,WGL_NV_render_texture_rectangle,WGL_NV_swap_group,WGL_NV_vertex_array_range,WGL_NV_video_capture,WGL_NV_video_output,WGL_OML_sync_control' c --mx + * + * Online: + * http://glad.sh/#api=wgl%3D1.0&extensions=WGL_3DFX_multisample%2CWGL_3DL_stereo_control%2CWGL_AMD_gpu_association%2CWGL_ARB_buffer_region%2CWGL_ARB_context_flush_control%2CWGL_ARB_create_context%2CWGL_ARB_create_context_no_error%2CWGL_ARB_create_context_profile%2CWGL_ARB_create_context_robustness%2CWGL_ARB_extensions_string%2CWGL_ARB_framebuffer_sRGB%2CWGL_ARB_make_current_read%2CWGL_ARB_multisample%2CWGL_ARB_pbuffer%2CWGL_ARB_pixel_format%2CWGL_ARB_pixel_format_float%2CWGL_ARB_render_texture%2CWGL_ARB_robustness_application_isolation%2CWGL_ARB_robustness_share_group_isolation%2CWGL_ATI_pixel_format_float%2CWGL_ATI_render_texture_rectangle%2CWGL_EXT_colorspace%2CWGL_EXT_create_context_es2_profile%2CWGL_EXT_create_context_es_profile%2CWGL_EXT_depth_float%2CWGL_EXT_display_color_table%2CWGL_EXT_extensions_string%2CWGL_EXT_framebuffer_sRGB%2CWGL_EXT_make_current_read%2CWGL_EXT_multisample%2CWGL_EXT_pbuffer%2CWGL_EXT_pixel_format%2CWGL_EXT_pixel_format_packed_float%2CWGL_EXT_swap_control%2CWGL_EXT_swap_control_tear%2CWGL_I3D_digital_video_control%2CWGL_I3D_gamma%2CWGL_I3D_genlock%2CWGL_I3D_image_buffer%2CWGL_I3D_swap_frame_lock%2CWGL_I3D_swap_frame_usage%2CWGL_NV_DX_interop%2CWGL_NV_DX_interop2%2CWGL_NV_copy_image%2CWGL_NV_delay_before_swap%2CWGL_NV_float_buffer%2CWGL_NV_gpu_affinity%2CWGL_NV_multigpu_context%2CWGL_NV_multisample_coverage%2CWGL_NV_present_video%2CWGL_NV_render_depth_texture%2CWGL_NV_render_texture_rectangle%2CWGL_NV_swap_group%2CWGL_NV_vertex_array_range%2CWGL_NV_video_capture%2CWGL_NV_video_output%2CWGL_OML_sync_control&generator=c&options=MX + * + */ + +#ifndef GLAD_WGL_H_ +#define GLAD_WGL_H_ + +#include +#include "gl.h" + +#define GLAD_WGL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef GLAD_PLATFORM_H_ +#define GLAD_PLATFORM_H_ + +#ifndef GLAD_PLATFORM_WIN32 +#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__) +#define GLAD_PLATFORM_WIN32 1 +#else +#define GLAD_PLATFORM_WIN32 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_APPLE +#ifdef __APPLE__ +#define GLAD_PLATFORM_APPLE 1 +#else +#define GLAD_PLATFORM_APPLE 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_EMSCRIPTEN +#ifdef __EMSCRIPTEN__ +#define GLAD_PLATFORM_EMSCRIPTEN 1 +#else +#define GLAD_PLATFORM_EMSCRIPTEN 0 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#if defined(_MSC_VER) && !defined(GLAD_INTERNAL_HAVE_WINAPIFAMILY) +#ifdef __has_include +#if __has_include() +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ +#define GLAD_INTERNAL_HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef GLAD_INTERNAL_HAVE_WINAPIFAMILY +#include +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ + WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#define GLAD_PLATFORM_UWP 1 +#endif +#endif + +#ifndef GLAD_PLATFORM_UWP +#define GLAD_PLATFORM_UWP 0 +#endif +#endif + +#ifdef __GNUC__ +#define GLAD_GNUC_EXTENSION __extension__ +#else +#define GLAD_GNUC_EXTENSION +#endif + +#define GLAD_UNUSED(x) (void)(x) + +#ifndef GLAD_API_CALL +#if defined(GLAD_API_CALL_EXPORT) +#if GLAD_PLATFORM_WIN32 || defined(__CYGWIN__) +#if defined(GLAD_API_CALL_EXPORT_BUILD) +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllexport)) extern +#else +#define GLAD_API_CALL __declspec(dllexport) extern +#endif +#else +#if defined(__GNUC__) +#define GLAD_API_CALL __attribute__((dllimport)) extern +#else +#define GLAD_API_CALL __declspec(dllimport) extern +#endif +#endif +#elif defined(__GNUC__) && defined(GLAD_API_CALL_EXPORT_BUILD) +#define GLAD_API_CALL __attribute__((visibility("default"))) extern +#else +#define GLAD_API_CALL extern +#endif +#else +#define GLAD_API_CALL extern +#endif +#endif + +#ifdef APIENTRY +#define GLAD_API_PTR APIENTRY +#elif GLAD_PLATFORM_WIN32 +#define GLAD_API_PTR __stdcall +#else +#define GLAD_API_PTR +#endif + +#ifndef GLAPI +#define GLAPI GLAD_API_CALL +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY GLAD_API_PTR +#endif + +#define GLAD_MAKE_VERSION(major, minor) (major * 10000 + minor) +#define GLAD_VERSION_MAJOR(version) (version / 10000) +#define GLAD_VERSION_MINOR(version) (version % 10000) + +#define GLAD_GENERATOR_VERSION "2.0.5" + +typedef void (*GLADapiproc)(void); + +typedef GLADapiproc (*GLADloadfunc)(const char *name); +typedef GLADapiproc (*GLADuserptrloadfunc)(void *userptr, const char *name); + +typedef void (*GLADprecallback)(const char *name, GLADapiproc apiproc, int len_args, ...); +typedef void (*GLADpostcallback)(void *ret, const char *name, GLADapiproc apiproc, int len_args, + ...); + +#endif /* GLAD_PLATFORM_H_ */ + +#define ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 +#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 +#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 +#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 +#define ERROR_INVALID_PROFILE_ARB 0x2096 +#define ERROR_INVALID_VERSION_ARB 0x2095 +#define ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 +#define WGL_ACCELERATION_ARB 0x2003 +#define WGL_ACCELERATION_EXT 0x2003 +#define WGL_ACCESS_READ_ONLY_NV 0x00000000 +#define WGL_ACCESS_READ_WRITE_NV 0x00000001 +#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002 +#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 +#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 +#define WGL_ACCUM_BITS_ARB 0x201D +#define WGL_ACCUM_BITS_EXT 0x201D +#define WGL_ACCUM_BLUE_BITS_ARB 0x2020 +#define WGL_ACCUM_BLUE_BITS_EXT 0x2020 +#define WGL_ACCUM_GREEN_BITS_ARB 0x201F +#define WGL_ACCUM_GREEN_BITS_EXT 0x201F +#define WGL_ACCUM_RED_BITS_ARB 0x201E +#define WGL_ACCUM_RED_BITS_EXT 0x201E +#define WGL_ALPHA_BITS_ARB 0x201B +#define WGL_ALPHA_BITS_EXT 0x201B +#define WGL_ALPHA_SHIFT_ARB 0x201C +#define WGL_ALPHA_SHIFT_EXT 0x201C +#define WGL_AUX0_ARB 0x2087 +#define WGL_AUX1_ARB 0x2088 +#define WGL_AUX2_ARB 0x2089 +#define WGL_AUX3_ARB 0x208A +#define WGL_AUX4_ARB 0x208B +#define WGL_AUX5_ARB 0x208C +#define WGL_AUX6_ARB 0x208D +#define WGL_AUX7_ARB 0x208E +#define WGL_AUX8_ARB 0x208F +#define WGL_AUX9_ARB 0x2090 +#define WGL_AUX_BUFFERS_ARB 0x2024 +#define WGL_AUX_BUFFERS_EXT 0x2024 +#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 +#define WGL_BACK_LEFT_ARB 0x2085 +#define WGL_BACK_RIGHT_ARB 0x2086 +#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 +#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 +#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 +#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 +#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1 +#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2 +#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0 +#define WGL_BLUE_BITS_ARB 0x2019 +#define WGL_BLUE_BITS_EXT 0x2019 +#define WGL_BLUE_SHIFT_ARB 0x201A +#define WGL_BLUE_SHIFT_EXT 0x201A +#define WGL_COLORSPACE_EXT 0x309D +#define WGL_COLORSPACE_LINEAR_EXT 0x308A +#define WGL_COLORSPACE_SRGB_EXT 0x3089 +#define WGL_COLOR_BITS_ARB 0x2014 +#define WGL_COLOR_BITS_EXT 0x2014 +#define WGL_COLOR_SAMPLES_NV 0x20B9 +#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001 +#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 +#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 +#define WGL_CONTEXT_FLAGS_ARB 0x2094 +#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 +#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 +#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 +#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 +#define WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC +#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD +#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE +#define WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA +#define WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB +#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3 +#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098 +#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0 +#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008 +#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 +#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 +#define WGL_COVERAGE_SAMPLES_NV 0x2042 +#define WGL_CUBE_MAP_FACE_ARB 0x207C +#define WGL_DEPTH_BITS_ARB 0x2022 +#define WGL_DEPTH_BITS_EXT 0x2022 +#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 +#define WGL_DEPTH_COMPONENT_NV 0x20A7 +#define WGL_DEPTH_FLOAT_EXT 0x2040 +#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 +#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 +#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 +#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 +#define WGL_DOUBLE_BUFFER_ARB 0x2011 +#define WGL_DOUBLE_BUFFER_EXT 0x2011 +#define WGL_DRAW_TO_BITMAP_ARB 0x2002 +#define WGL_DRAW_TO_BITMAP_EXT 0x2002 +#define WGL_DRAW_TO_PBUFFER_ARB 0x202D +#define WGL_DRAW_TO_PBUFFER_EXT 0x202D +#define WGL_DRAW_TO_WINDOW_ARB 0x2001 +#define WGL_DRAW_TO_WINDOW_EXT 0x2001 +#define WGL_FLOAT_COMPONENTS_NV 0x20B0 +#define WGL_FONT_LINES 0 +#define WGL_FONT_POLYGONS 1 +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 +#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 +#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 +#define WGL_FRONT_LEFT_ARB 0x2083 +#define WGL_FRONT_RIGHT_ARB 0x2084 +#define WGL_FULL_ACCELERATION_ARB 0x2027 +#define WGL_FULL_ACCELERATION_EXT 0x2027 +#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F +#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E +#define WGL_GENERIC_ACCELERATION_ARB 0x2026 +#define WGL_GENERIC_ACCELERATION_EXT 0x2026 +#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 +#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 +#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C +#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A +#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B +#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046 +#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045 +#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047 +#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 +#define WGL_GPU_CLOCK_AMD 0x21A4 +#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 +#define WGL_GPU_NUM_PIPES_AMD 0x21A5 +#define WGL_GPU_NUM_RB_AMD 0x21A7 +#define WGL_GPU_NUM_SIMD_AMD 0x21A6 +#define WGL_GPU_NUM_SPI_AMD 0x21A8 +#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 +#define WGL_GPU_RAM_AMD 0x21A3 +#define WGL_GPU_RENDERER_STRING_AMD 0x1F01 +#define WGL_GPU_VENDOR_AMD 0x1F00 +#define WGL_GREEN_BITS_ARB 0x2017 +#define WGL_GREEN_BITS_EXT 0x2017 +#define WGL_GREEN_SHIFT_ARB 0x2018 +#define WGL_GREEN_SHIFT_EXT 0x2018 +#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 +#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 +#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 +#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 +#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 +#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E +#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E +#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F +#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F +#define WGL_MIPMAP_LEVEL_ARB 0x207B +#define WGL_MIPMAP_TEXTURE_ARB 0x2074 +#define WGL_NEED_PALETTE_ARB 0x2004 +#define WGL_NEED_PALETTE_EXT 0x2004 +#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 +#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 +#define WGL_NO_ACCELERATION_ARB 0x2025 +#define WGL_NO_ACCELERATION_EXT 0x2025 +#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 +#define WGL_NO_TEXTURE_ARB 0x2077 +#define WGL_NUMBER_OVERLAYS_ARB 0x2008 +#define WGL_NUMBER_OVERLAYS_EXT 0x2008 +#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 +#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 +#define WGL_NUMBER_UNDERLAYS_ARB 0x2009 +#define WGL_NUMBER_UNDERLAYS_EXT 0x2009 +#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF +#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 +#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 +#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 +#define WGL_PBUFFER_HEIGHT_ARB 0x2035 +#define WGL_PBUFFER_HEIGHT_EXT 0x2035 +#define WGL_PBUFFER_LARGEST_ARB 0x2033 +#define WGL_PBUFFER_LARGEST_EXT 0x2033 +#define WGL_PBUFFER_LOST_ARB 0x2036 +#define WGL_PBUFFER_WIDTH_ARB 0x2034 +#define WGL_PBUFFER_WIDTH_EXT 0x2034 +#define WGL_PIXEL_TYPE_ARB 0x2013 +#define WGL_PIXEL_TYPE_EXT 0x2013 +#define WGL_RED_BITS_ARB 0x2015 +#define WGL_RED_BITS_EXT 0x2015 +#define WGL_RED_SHIFT_ARB 0x2016 +#define WGL_RED_SHIFT_EXT 0x2016 +#define WGL_SAMPLES_3DFX 0x2061 +#define WGL_SAMPLES_ARB 0x2042 +#define WGL_SAMPLES_EXT 0x2042 +#define WGL_SAMPLE_BUFFERS_3DFX 0x2060 +#define WGL_SAMPLE_BUFFERS_ARB 0x2041 +#define WGL_SAMPLE_BUFFERS_EXT 0x2041 +#define WGL_SHARE_ACCUM_ARB 0x200E +#define WGL_SHARE_ACCUM_EXT 0x200E +#define WGL_SHARE_DEPTH_ARB 0x200C +#define WGL_SHARE_DEPTH_EXT 0x200C +#define WGL_SHARE_STENCIL_ARB 0x200D +#define WGL_SHARE_STENCIL_EXT 0x200D +#define WGL_STENCIL_BITS_ARB 0x2023 +#define WGL_STENCIL_BITS_EXT 0x2023 +#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 +#define WGL_STEREO_ARB 0x2012 +#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 +#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 +#define WGL_STEREO_EXT 0x2012 +#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 +#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 +#define WGL_SUPPORT_GDI_ARB 0x200F +#define WGL_SUPPORT_GDI_EXT 0x200F +#define WGL_SUPPORT_OPENGL_ARB 0x2010 +#define WGL_SUPPORT_OPENGL_EXT 0x2010 +#define WGL_SWAP_COPY_ARB 0x2029 +#define WGL_SWAP_COPY_EXT 0x2029 +#define WGL_SWAP_EXCHANGE_ARB 0x2028 +#define WGL_SWAP_EXCHANGE_EXT 0x2028 +#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 +#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 +#define WGL_SWAP_MAIN_PLANE 0x00000001 +#define WGL_SWAP_METHOD_ARB 0x2007 +#define WGL_SWAP_METHOD_EXT 0x2007 +#define WGL_SWAP_OVERLAY1 0x00000002 +#define WGL_SWAP_OVERLAY10 0x00000400 +#define WGL_SWAP_OVERLAY11 0x00000800 +#define WGL_SWAP_OVERLAY12 0x00001000 +#define WGL_SWAP_OVERLAY13 0x00002000 +#define WGL_SWAP_OVERLAY14 0x00004000 +#define WGL_SWAP_OVERLAY15 0x00008000 +#define WGL_SWAP_OVERLAY2 0x00000004 +#define WGL_SWAP_OVERLAY3 0x00000008 +#define WGL_SWAP_OVERLAY4 0x00000010 +#define WGL_SWAP_OVERLAY5 0x00000020 +#define WGL_SWAP_OVERLAY6 0x00000040 +#define WGL_SWAP_OVERLAY7 0x00000080 +#define WGL_SWAP_OVERLAY8 0x00000100 +#define WGL_SWAP_OVERLAY9 0x00000200 +#define WGL_SWAP_UNDEFINED_ARB 0x202A +#define WGL_SWAP_UNDEFINED_EXT 0x202A +#define WGL_SWAP_UNDERLAY1 0x00010000 +#define WGL_SWAP_UNDERLAY10 0x02000000 +#define WGL_SWAP_UNDERLAY11 0x04000000 +#define WGL_SWAP_UNDERLAY12 0x08000000 +#define WGL_SWAP_UNDERLAY13 0x10000000 +#define WGL_SWAP_UNDERLAY14 0x20000000 +#define WGL_SWAP_UNDERLAY15 0x40000000 +#define WGL_SWAP_UNDERLAY2 0x00020000 +#define WGL_SWAP_UNDERLAY3 0x00040000 +#define WGL_SWAP_UNDERLAY4 0x00080000 +#define WGL_SWAP_UNDERLAY5 0x00100000 +#define WGL_SWAP_UNDERLAY6 0x00200000 +#define WGL_SWAP_UNDERLAY7 0x00400000 +#define WGL_SWAP_UNDERLAY8 0x00800000 +#define WGL_SWAP_UNDERLAY9 0x01000000 +#define WGL_TEXTURE_1D_ARB 0x2079 +#define WGL_TEXTURE_2D_ARB 0x207A +#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 +#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F +#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 +#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 +#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 +#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 +#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 +#define WGL_TEXTURE_FLOAT_R_NV 0x20B5 +#define WGL_TEXTURE_FORMAT_ARB 0x2072 +#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5 +#define WGL_TEXTURE_RECTANGLE_NV 0x20A2 +#define WGL_TEXTURE_RGBA_ARB 0x2076 +#define WGL_TEXTURE_RGB_ARB 0x2075 +#define WGL_TEXTURE_TARGET_ARB 0x2073 +#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A +#define WGL_TRANSPARENT_ARB 0x200A +#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 +#define WGL_TRANSPARENT_EXT 0x200A +#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 +#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B +#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 +#define WGL_TRANSPARENT_VALUE_EXT 0x200B +#define WGL_TYPE_COLORINDEX_ARB 0x202C +#define WGL_TYPE_COLORINDEX_EXT 0x202C +#define WGL_TYPE_RGBA_ARB 0x202B +#define WGL_TYPE_RGBA_EXT 0x202B +#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 +#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 +#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 +#define WGL_UNIQUE_ID_NV 0x20CE +#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4 +#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 +#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 +#define WGL_VIDEO_OUT_COLOR_NV 0x20C3 +#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5 +#define WGL_VIDEO_OUT_FIELD_1 0x20C9 +#define WGL_VIDEO_OUT_FIELD_2 0x20CA +#define WGL_VIDEO_OUT_FRAME 0x20C8 +#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB +#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC + +struct _GPU_DEVICE { + DWORD cb; + CHAR DeviceName[32]; + CHAR DeviceString[128]; + DWORD Flags; + RECT rcVirtualScreen; +}; +DECLARE_HANDLE(HPBUFFERARB); +DECLARE_HANDLE(HPBUFFEREXT); +DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); +DECLARE_HANDLE(HPVIDEODEV); +DECLARE_HANDLE(HPGPUNV); +DECLARE_HANDLE(HGPUNV); +DECLARE_HANDLE(HVIDEOINPUTDEVICENV); +typedef struct _GPU_DEVICE GPU_DEVICE; +typedef struct _GPU_DEVICE *PGPU_DEVICE; + +#define WGL_VERSION_1_0 1 +GLAD_API_CALL int GLAD_WGL_VERSION_1_0; +#define WGL_3DFX_multisample 1 +GLAD_API_CALL int GLAD_WGL_3DFX_multisample; +#define WGL_3DL_stereo_control 1 +GLAD_API_CALL int GLAD_WGL_3DL_stereo_control; +#define WGL_AMD_gpu_association 1 +GLAD_API_CALL int GLAD_WGL_AMD_gpu_association; +#define WGL_ARB_buffer_region 1 +GLAD_API_CALL int GLAD_WGL_ARB_buffer_region; +#define WGL_ARB_context_flush_control 1 +GLAD_API_CALL int GLAD_WGL_ARB_context_flush_control; +#define WGL_ARB_create_context 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context; +#define WGL_ARB_create_context_no_error 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context_no_error; +#define WGL_ARB_create_context_profile 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context_profile; +#define WGL_ARB_create_context_robustness 1 +GLAD_API_CALL int GLAD_WGL_ARB_create_context_robustness; +#define WGL_ARB_extensions_string 1 +GLAD_API_CALL int GLAD_WGL_ARB_extensions_string; +#define WGL_ARB_framebuffer_sRGB 1 +GLAD_API_CALL int GLAD_WGL_ARB_framebuffer_sRGB; +#define WGL_ARB_make_current_read 1 +GLAD_API_CALL int GLAD_WGL_ARB_make_current_read; +#define WGL_ARB_multisample 1 +GLAD_API_CALL int GLAD_WGL_ARB_multisample; +#define WGL_ARB_pbuffer 1 +GLAD_API_CALL int GLAD_WGL_ARB_pbuffer; +#define WGL_ARB_pixel_format 1 +GLAD_API_CALL int GLAD_WGL_ARB_pixel_format; +#define WGL_ARB_pixel_format_float 1 +GLAD_API_CALL int GLAD_WGL_ARB_pixel_format_float; +#define WGL_ARB_render_texture 1 +GLAD_API_CALL int GLAD_WGL_ARB_render_texture; +#define WGL_ARB_robustness_application_isolation 1 +GLAD_API_CALL int GLAD_WGL_ARB_robustness_application_isolation; +#define WGL_ARB_robustness_share_group_isolation 1 +GLAD_API_CALL int GLAD_WGL_ARB_robustness_share_group_isolation; +#define WGL_ATI_pixel_format_float 1 +GLAD_API_CALL int GLAD_WGL_ATI_pixel_format_float; +#define WGL_ATI_render_texture_rectangle 1 +GLAD_API_CALL int GLAD_WGL_ATI_render_texture_rectangle; +#define WGL_EXT_colorspace 1 +GLAD_API_CALL int GLAD_WGL_EXT_colorspace; +#define WGL_EXT_create_context_es2_profile 1 +GLAD_API_CALL int GLAD_WGL_EXT_create_context_es2_profile; +#define WGL_EXT_create_context_es_profile 1 +GLAD_API_CALL int GLAD_WGL_EXT_create_context_es_profile; +#define WGL_EXT_depth_float 1 +GLAD_API_CALL int GLAD_WGL_EXT_depth_float; +#define WGL_EXT_display_color_table 1 +GLAD_API_CALL int GLAD_WGL_EXT_display_color_table; +#define WGL_EXT_extensions_string 1 +GLAD_API_CALL int GLAD_WGL_EXT_extensions_string; +#define WGL_EXT_framebuffer_sRGB 1 +GLAD_API_CALL int GLAD_WGL_EXT_framebuffer_sRGB; +#define WGL_EXT_make_current_read 1 +GLAD_API_CALL int GLAD_WGL_EXT_make_current_read; +#define WGL_EXT_multisample 1 +GLAD_API_CALL int GLAD_WGL_EXT_multisample; +#define WGL_EXT_pbuffer 1 +GLAD_API_CALL int GLAD_WGL_EXT_pbuffer; +#define WGL_EXT_pixel_format 1 +GLAD_API_CALL int GLAD_WGL_EXT_pixel_format; +#define WGL_EXT_pixel_format_packed_float 1 +GLAD_API_CALL int GLAD_WGL_EXT_pixel_format_packed_float; +#define WGL_EXT_swap_control 1 +GLAD_API_CALL int GLAD_WGL_EXT_swap_control; +#define WGL_EXT_swap_control_tear 1 +GLAD_API_CALL int GLAD_WGL_EXT_swap_control_tear; +#define WGL_I3D_digital_video_control 1 +GLAD_API_CALL int GLAD_WGL_I3D_digital_video_control; +#define WGL_I3D_gamma 1 +GLAD_API_CALL int GLAD_WGL_I3D_gamma; +#define WGL_I3D_genlock 1 +GLAD_API_CALL int GLAD_WGL_I3D_genlock; +#define WGL_I3D_image_buffer 1 +GLAD_API_CALL int GLAD_WGL_I3D_image_buffer; +#define WGL_I3D_swap_frame_lock 1 +GLAD_API_CALL int GLAD_WGL_I3D_swap_frame_lock; +#define WGL_I3D_swap_frame_usage 1 +GLAD_API_CALL int GLAD_WGL_I3D_swap_frame_usage; +#define WGL_NV_DX_interop 1 +GLAD_API_CALL int GLAD_WGL_NV_DX_interop; +#define WGL_NV_DX_interop2 1 +GLAD_API_CALL int GLAD_WGL_NV_DX_interop2; +#define WGL_NV_copy_image 1 +GLAD_API_CALL int GLAD_WGL_NV_copy_image; +#define WGL_NV_delay_before_swap 1 +GLAD_API_CALL int GLAD_WGL_NV_delay_before_swap; +#define WGL_NV_float_buffer 1 +GLAD_API_CALL int GLAD_WGL_NV_float_buffer; +#define WGL_NV_gpu_affinity 1 +GLAD_API_CALL int GLAD_WGL_NV_gpu_affinity; +#define WGL_NV_multigpu_context 1 +GLAD_API_CALL int GLAD_WGL_NV_multigpu_context; +#define WGL_NV_multisample_coverage 1 +GLAD_API_CALL int GLAD_WGL_NV_multisample_coverage; +#define WGL_NV_present_video 1 +GLAD_API_CALL int GLAD_WGL_NV_present_video; +#define WGL_NV_render_depth_texture 1 +GLAD_API_CALL int GLAD_WGL_NV_render_depth_texture; +#define WGL_NV_render_texture_rectangle 1 +GLAD_API_CALL int GLAD_WGL_NV_render_texture_rectangle; +#define WGL_NV_swap_group 1 +GLAD_API_CALL int GLAD_WGL_NV_swap_group; +#define WGL_NV_vertex_array_range 1 +GLAD_API_CALL int GLAD_WGL_NV_vertex_array_range; +#define WGL_NV_video_capture 1 +GLAD_API_CALL int GLAD_WGL_NV_video_capture; +#define WGL_NV_video_output 1 +GLAD_API_CALL int GLAD_WGL_NV_video_output; +#define WGL_OML_sync_control 1 +GLAD_API_CALL int GLAD_WGL_OML_sync_control; + +typedef int(GLAD_API_PTR *PFNCHOOSEPIXELFORMATPROC)(HDC hDc, const PIXELFORMATDESCRIPTOR *pPfd); +typedef int(GLAD_API_PTR *PFNDESCRIBEPIXELFORMATPROC)(HDC hdc, int ipfd, UINT cjpfd, + PIXELFORMATDESCRIPTOR *ppfd); +typedef UINT(GLAD_API_PTR *PFNGETENHMETAFILEPIXELFORMATPROC)(HENHMETAFILE hemf, UINT cbBuffer, + PIXELFORMATDESCRIPTOR *ppfd); +typedef int(GLAD_API_PTR *PFNGETPIXELFORMATPROC)(HDC hdc); +typedef BOOL(GLAD_API_PTR *PFNSETPIXELFORMATPROC)(HDC hdc, int ipfd, + const PIXELFORMATDESCRIPTOR *ppfd); +typedef BOOL(GLAD_API_PTR *PFNSWAPBUFFERSPROC)(HDC hdc); +typedef void *(GLAD_API_PTR *PFNWGLALLOCATEMEMORYNVPROC)(GLsizei size, GLfloat readfreq, + GLfloat writefreq, GLfloat priority); +typedef BOOL(GLAD_API_PTR *PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC)(HDC hDC, const HANDLE *pEvent, + const LPVOID *pAddress, + const DWORD *pSize, UINT count); +typedef BOOL(GLAD_API_PTR *PFNWGLBEGINFRAMETRACKINGI3DPROC)(void); +typedef GLboolean(GLAD_API_PTR *PFNWGLBINDDISPLAYCOLORTABLEEXTPROC)(GLushort id); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDSWAPBARRIERNVPROC)(GLuint group, GLuint barrier); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDTEXIMAGEARBPROC)(HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEOCAPTUREDEVICENVPROC)(UINT uVideoSlot, + HVIDEOINPUTDEVICENV hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEODEVICENVPROC)(HDC hDc, unsigned int uVideoSlot, + HVIDEOOUTPUTDEVICENV hVideoDevice, + const int *piAttribList); +typedef BOOL(GLAD_API_PTR *PFNWGLBINDVIDEOIMAGENVPROC)(HPVIDEODEV hVideoDevice, + HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef VOID(GLAD_API_PTR *PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC)( + HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, + GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +typedef BOOL(GLAD_API_PTR *PFNWGLCHOOSEPIXELFORMATARBPROC)(HDC hdc, const int *piAttribIList, + const FLOAT *pfAttribFList, + UINT nMaxFormats, int *piFormats, + UINT *nNumFormats); +typedef BOOL(GLAD_API_PTR *PFNWGLCHOOSEPIXELFORMATEXTPROC)(HDC hdc, const int *piAttribIList, + const FLOAT *pfAttribFList, + UINT nMaxFormats, int *piFormats, + UINT *nNumFormats); +typedef BOOL(GLAD_API_PTR *PFNWGLCOPYCONTEXTPROC)(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask); +typedef BOOL(GLAD_API_PTR *PFNWGLCOPYIMAGESUBDATANVPROC)( + HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, + GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, + GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); +typedef HDC(GLAD_API_PTR *PFNWGLCREATEAFFINITYDCNVPROC)(const HGPUNV *phGpuList); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC)(UINT id); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC)(UINT id, + HGLRC hShareContext, + const int *attribList); +typedef HANDLE(GLAD_API_PTR *PFNWGLCREATEBUFFERREGIONARBPROC)(HDC hDC, int iLayerPlane, UINT uType); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATECONTEXTPROC)(HDC hDc); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATECONTEXTATTRIBSARBPROC)(HDC hDC, HGLRC hShareContext, + const int *attribList); +typedef GLboolean(GLAD_API_PTR *PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC)(GLushort id); +typedef LPVOID(GLAD_API_PTR *PFNWGLCREATEIMAGEBUFFERI3DPROC)(HDC hDC, DWORD dwSize, UINT uFlags); +typedef HGLRC(GLAD_API_PTR *PFNWGLCREATELAYERCONTEXTPROC)(HDC hDc, int level); +typedef HPBUFFERARB(GLAD_API_PTR *PFNWGLCREATEPBUFFERARBPROC)(HDC hDC, int iPixelFormat, int iWidth, + int iHeight, const int *piAttribList); +typedef HPBUFFEREXT(GLAD_API_PTR *PFNWGLCREATEPBUFFEREXTPROC)(HDC hDC, int iPixelFormat, int iWidth, + int iHeight, const int *piAttribList); +typedef BOOL(GLAD_API_PTR *PFNWGLDXCLOSEDEVICENVPROC)(HANDLE hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLDXLOCKOBJECTSNVPROC)(HANDLE hDevice, GLint count, + HANDLE *hObjects); +typedef BOOL(GLAD_API_PTR *PFNWGLDXOBJECTACCESSNVPROC)(HANDLE hObject, GLenum access); +typedef HANDLE(GLAD_API_PTR *PFNWGLDXOPENDEVICENVPROC)(void *dxDevice); +typedef HANDLE(GLAD_API_PTR *PFNWGLDXREGISTEROBJECTNVPROC)(HANDLE hDevice, void *dxObject, + GLuint name, GLenum type, GLenum access); +typedef BOOL(GLAD_API_PTR *PFNWGLDXSETRESOURCESHAREHANDLENVPROC)(void *dxObject, + HANDLE shareHandle); +typedef BOOL(GLAD_API_PTR *PFNWGLDXUNLOCKOBJECTSNVPROC)(HANDLE hDevice, GLint count, + HANDLE *hObjects); +typedef BOOL(GLAD_API_PTR *PFNWGLDXUNREGISTEROBJECTNVPROC)(HANDLE hDevice, HANDLE hObject); +typedef BOOL(GLAD_API_PTR *PFNWGLDELAYBEFORESWAPNVPROC)(HDC hDC, GLfloat seconds); +typedef BOOL(GLAD_API_PTR *PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC)(HGLRC hglrc); +typedef VOID(GLAD_API_PTR *PFNWGLDELETEBUFFERREGIONARBPROC)(HANDLE hRegion); +typedef BOOL(GLAD_API_PTR *PFNWGLDELETECONTEXTPROC)(HGLRC oldContext); +typedef BOOL(GLAD_API_PTR *PFNWGLDELETEDCNVPROC)(HDC hdc); +typedef BOOL(GLAD_API_PTR *PFNWGLDESCRIBELAYERPLANEPROC)(HDC hDc, int pixelFormat, int layerPlane, + UINT nBytes, LAYERPLANEDESCRIPTOR *plpd); +typedef VOID(GLAD_API_PTR *PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC)(GLushort id); +typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYIMAGEBUFFERI3DPROC)(HDC hDC, LPVOID pAddress); +typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYPBUFFERARBPROC)(HPBUFFERARB hPbuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLDESTROYPBUFFEREXTPROC)(HPBUFFEREXT hPbuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLDISABLEFRAMELOCKI3DPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLDISABLEGENLOCKI3DPROC)(HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLENABLEFRAMELOCKI3DPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLENABLEGENLOCKI3DPROC)(HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLENDFRAMETRACKINGI3DPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUDEVICESNVPROC)(HGPUNV hGpu, UINT iDeviceIndex, + PGPU_DEVICE lpGpuDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUSFROMAFFINITYDCNVPROC)(HDC hAffinityDC, UINT iGpuIndex, + HGPUNV *hGpu); +typedef BOOL(GLAD_API_PTR *PFNWGLENUMGPUSNVPROC)(UINT iGpuIndex, HGPUNV *phGpu); +typedef UINT(GLAD_API_PTR *PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC)( + HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList); +typedef int(GLAD_API_PTR *PFNWGLENUMERATEVIDEODEVICESNVPROC)(HDC hDc, + HVIDEOOUTPUTDEVICENV *phDeviceList); +typedef void(GLAD_API_PTR *PFNWGLFREEMEMORYNVPROC)(void *pointer); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSAMPLERATEI3DPROC)(HDC hDC, UINT uRate); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEDELAYI3DPROC)(HDC hDC, UINT uDelay); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEEDGEI3DPROC)(HDC hDC, UINT uEdge); +typedef BOOL(GLAD_API_PTR *PFNWGLGENLOCKSOURCEI3DPROC)(HDC hDC, UINT uSource); +typedef UINT(GLAD_API_PTR *PFNWGLGETCONTEXTGPUIDAMDPROC)(HGLRC hglrc); +typedef HGLRC(GLAD_API_PTR *PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC)(void); +typedef HGLRC(GLAD_API_PTR *PFNWGLGETCURRENTCONTEXTPROC)(void); +typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTDCPROC)(void); +typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTREADDCARBPROC)(void); +typedef HDC(GLAD_API_PTR *PFNWGLGETCURRENTREADDCEXTPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + int *piValue); +typedef const char *(GLAD_API_PTR *PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDC hdc); +typedef const char *(GLAD_API_PTR *PFNWGLGETEXTENSIONSSTRINGEXTPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLGETFRAMEUSAGEI3DPROC)(float *pUsage); +typedef UINT(GLAD_API_PTR *PFNWGLGETGPUIDSAMDPROC)(UINT maxCount, UINT *ids); +typedef INT(GLAD_API_PTR *PFNWGLGETGPUINFOAMDPROC)(UINT id, INT property, GLenum dataType, + UINT size, void *data); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGAMMATABLEI3DPROC)(HDC hDC, int iEntries, USHORT *puRed, + USHORT *puGreen, USHORT *puBlue); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGAMMATABLEPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSAMPLERATEI3DPROC)(HDC hDC, UINT *uRate); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEDELAYI3DPROC)(HDC hDC, UINT *uDelay); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEEDGEI3DPROC)(HDC hDC, UINT *uEdge); +typedef BOOL(GLAD_API_PTR *PFNWGLGETGENLOCKSOURCEI3DPROC)(HDC hDC, UINT *uSource); +typedef int(GLAD_API_PTR *PFNWGLGETLAYERPALETTEENTRIESPROC)(HDC hdc, int iLayerPlane, int iStart, + int cEntries, COLORREF *pcr); +typedef BOOL(GLAD_API_PTR *PFNWGLGETMSCRATEOMLPROC)(HDC hdc, INT32 *numerator, INT32 *denominator); +typedef HDC(GLAD_API_PTR *PFNWGLGETPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer); +typedef HDC(GLAD_API_PTR *PFNWGLGETPBUFFERDCEXTPROC)(HPBUFFEREXT hPbuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBFVARBPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + const int *piAttributes, + FLOAT *pfValues); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBFVEXTPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + int *piAttributes, FLOAT *pfValues); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBIVARBPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + const int *piAttributes, + int *piValues); +typedef BOOL(GLAD_API_PTR *PFNWGLGETPIXELFORMATATTRIBIVEXTPROC)(HDC hdc, int iPixelFormat, + int iLayerPlane, UINT nAttributes, + int *piAttributes, int *piValues); +typedef PROC(GLAD_API_PTR *PFNWGLGETPROCADDRESSPROC)(LPCSTR lpszProc); +typedef int(GLAD_API_PTR *PFNWGLGETSWAPINTERVALEXTPROC)(void); +typedef BOOL(GLAD_API_PTR *PFNWGLGETSYNCVALUESOMLPROC)(HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc); +typedef BOOL(GLAD_API_PTR *PFNWGLGETVIDEODEVICENVPROC)(HDC hDC, int numDevices, + HPVIDEODEV *hVideoDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLGETVIDEOINFONVPROC)(HPVIDEODEV hpVideoDevice, + unsigned long *pulCounterOutputPbuffer, + unsigned long *pulCounterOutputVideo); +typedef BOOL(GLAD_API_PTR *PFNWGLISENABLEDFRAMELOCKI3DPROC)(BOOL *pFlag); +typedef BOOL(GLAD_API_PTR *PFNWGLISENABLEDGENLOCKI3DPROC)(HDC hDC, BOOL *pFlag); +typedef BOOL(GLAD_API_PTR *PFNWGLJOINSWAPGROUPNVPROC)(HDC hDC, GLuint group); +typedef GLboolean(GLAD_API_PTR *PFNWGLLOADDISPLAYCOLORTABLEEXTPROC)(const GLushort *table, + GLuint length); +typedef BOOL(GLAD_API_PTR *PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC)(HDC hDc, + HVIDEOINPUTDEVICENV hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC)(HGLRC hglrc); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKECONTEXTCURRENTARBPROC)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKECONTEXTCURRENTEXTPROC)(HDC hDrawDC, HDC hReadDC, HGLRC hglrc); +typedef BOOL(GLAD_API_PTR *PFNWGLMAKECURRENTPROC)(HDC hDc, HGLRC newContext); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYCURRENTCONTEXTNVPROC)(int iAttribute, int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMECOUNTNVPROC)(HDC hDC, GLuint *count); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMELOCKMASTERI3DPROC)(BOOL *pFlag); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYFRAMETRACKINGI3DPROC)(DWORD *pFrameCount, + DWORD *pMissedFrames, + float *pLastMissedUsage); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC)(HDC hDC, UINT *uMaxLineDelay, + UINT *uMaxPixelDelay); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYMAXSWAPGROUPSNVPROC)(HDC hDC, GLuint *maxGroups, + GLuint *maxBarriers); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYPBUFFERARBPROC)(HPBUFFERARB hPbuffer, int iAttribute, + int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYPBUFFEREXTPROC)(HPBUFFEREXT hPbuffer, int iAttribute, + int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYSWAPGROUPNVPROC)(HDC hDC, GLuint *group, GLuint *barrier); +typedef BOOL(GLAD_API_PTR *PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC)(HDC hDc, + HVIDEOINPUTDEVICENV hDevice, + int iAttribute, int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLREALIZELAYERPALETTEPROC)(HDC hdc, int iLayerPlane, BOOL bRealize); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC)(HDC hDC, const LPVOID *pAddress, + UINT count); +typedef int(GLAD_API_PTR *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer, HDC hDC); +typedef int(GLAD_API_PTR *PFNWGLRELEASEPBUFFERDCEXTPROC)(HPBUFFEREXT hPbuffer, HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASETEXIMAGEARBPROC)(HPBUFFERARB hPbuffer, int iBuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC)(HDC hDc, + HVIDEOINPUTDEVICENV hDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEODEVICENVPROC)(HPVIDEODEV hVideoDevice); +typedef BOOL(GLAD_API_PTR *PFNWGLRELEASEVIDEOIMAGENVPROC)(HPBUFFERARB hPbuffer, int iVideoBuffer); +typedef BOOL(GLAD_API_PTR *PFNWGLRESETFRAMECOUNTNVPROC)(HDC hDC); +typedef BOOL(GLAD_API_PTR *PFNWGLRESTOREBUFFERREGIONARBPROC)(HANDLE hRegion, int x, int y, + int width, int height, int xSrc, + int ySrc); +typedef BOOL(GLAD_API_PTR *PFNWGLSAVEBUFFERREGIONARBPROC)(HANDLE hRegion, int x, int y, int width, + int height); +typedef BOOL(GLAD_API_PTR *PFNWGLSENDPBUFFERTOVIDEONVPROC)(HPBUFFERARB hPbuffer, int iBufferType, + unsigned long *pulCounterPbuffer, + BOOL bBlock); +typedef BOOL(GLAD_API_PTR *PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + const int *piValue); +typedef BOOL(GLAD_API_PTR *PFNWGLSETGAMMATABLEI3DPROC)(HDC hDC, int iEntries, const USHORT *puRed, + const USHORT *puGreen, const USHORT *puBlue); +typedef BOOL(GLAD_API_PTR *PFNWGLSETGAMMATABLEPARAMETERSI3DPROC)(HDC hDC, int iAttribute, + const int *piValue); +typedef int(GLAD_API_PTR *PFNWGLSETLAYERPALETTEENTRIESPROC)(HDC hdc, int iLayerPlane, int iStart, + int cEntries, const COLORREF *pcr); +typedef BOOL(GLAD_API_PTR *PFNWGLSETPBUFFERATTRIBARBPROC)(HPBUFFERARB hPbuffer, + const int *piAttribList); +typedef BOOL(GLAD_API_PTR *PFNWGLSETSTEREOEMITTERSTATE3DLPROC)(HDC hDC, UINT uState); +typedef BOOL(GLAD_API_PTR *PFNWGLSHARELISTSPROC)(HGLRC hrcSrvShare, HGLRC hrcSrvSource); +typedef INT64(GLAD_API_PTR *PFNWGLSWAPBUFFERSMSCOMLPROC)(HDC hdc, INT64 target_msc, INT64 divisor, + INT64 remainder); +typedef BOOL(GLAD_API_PTR *PFNWGLSWAPINTERVALEXTPROC)(int interval); +typedef BOOL(GLAD_API_PTR *PFNWGLSWAPLAYERBUFFERSPROC)(HDC hdc, UINT fuFlags); +typedef INT64(GLAD_API_PTR *PFNWGLSWAPLAYERBUFFERSMSCOMLPROC)(HDC hdc, INT fuPlanes, + INT64 target_msc, INT64 divisor, + INT64 remainder); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSAPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTBITMAPSWPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase, FLOAT deviation, + FLOAT extrusion, int format, + LPGLYPHMETRICSFLOAT lpgmf); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESAPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase, FLOAT deviation, + FLOAT extrusion, int format, + LPGLYPHMETRICSFLOAT lpgmf); +typedef BOOL(GLAD_API_PTR *PFNWGLUSEFONTOUTLINESWPROC)(HDC hDC, DWORD first, DWORD count, + DWORD listBase, FLOAT deviation, + FLOAT extrusion, int format, + LPGLYPHMETRICSFLOAT lpgmf); +typedef BOOL(GLAD_API_PTR *PFNWGLWAITFORMSCOMLPROC)(HDC hdc, INT64 target_msc, INT64 divisor, + INT64 remainder, INT64 *ust, INT64 *msc, + INT64 *sbc); +typedef BOOL(GLAD_API_PTR *PFNWGLWAITFORSBCOMLPROC)(HDC hdc, INT64 target_sbc, INT64 *ust, + INT64 *msc, INT64 *sbc); + +GLAD_API_CALL PFNWGLALLOCATEMEMORYNVPROC glad_wglAllocateMemoryNV; +#define wglAllocateMemoryNV glad_wglAllocateMemoryNV +GLAD_API_CALL PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC glad_wglAssociateImageBufferEventsI3D; +#define wglAssociateImageBufferEventsI3D glad_wglAssociateImageBufferEventsI3D +GLAD_API_CALL PFNWGLBEGINFRAMETRACKINGI3DPROC glad_wglBeginFrameTrackingI3D; +#define wglBeginFrameTrackingI3D glad_wglBeginFrameTrackingI3D +GLAD_API_CALL PFNWGLBINDDISPLAYCOLORTABLEEXTPROC glad_wglBindDisplayColorTableEXT; +#define wglBindDisplayColorTableEXT glad_wglBindDisplayColorTableEXT +GLAD_API_CALL PFNWGLBINDSWAPBARRIERNVPROC glad_wglBindSwapBarrierNV; +#define wglBindSwapBarrierNV glad_wglBindSwapBarrierNV +GLAD_API_CALL PFNWGLBINDTEXIMAGEARBPROC glad_wglBindTexImageARB; +#define wglBindTexImageARB glad_wglBindTexImageARB +GLAD_API_CALL PFNWGLBINDVIDEOCAPTUREDEVICENVPROC glad_wglBindVideoCaptureDeviceNV; +#define wglBindVideoCaptureDeviceNV glad_wglBindVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLBINDVIDEODEVICENVPROC glad_wglBindVideoDeviceNV; +#define wglBindVideoDeviceNV glad_wglBindVideoDeviceNV +GLAD_API_CALL PFNWGLBINDVIDEOIMAGENVPROC glad_wglBindVideoImageNV; +#define wglBindVideoImageNV glad_wglBindVideoImageNV +GLAD_API_CALL PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC glad_wglBlitContextFramebufferAMD; +#define wglBlitContextFramebufferAMD glad_wglBlitContextFramebufferAMD +GLAD_API_CALL PFNWGLCHOOSEPIXELFORMATARBPROC glad_wglChoosePixelFormatARB; +#define wglChoosePixelFormatARB glad_wglChoosePixelFormatARB +GLAD_API_CALL PFNWGLCHOOSEPIXELFORMATEXTPROC glad_wglChoosePixelFormatEXT; +#define wglChoosePixelFormatEXT glad_wglChoosePixelFormatEXT +GLAD_API_CALL PFNWGLCOPYIMAGESUBDATANVPROC glad_wglCopyImageSubDataNV; +#define wglCopyImageSubDataNV glad_wglCopyImageSubDataNV +GLAD_API_CALL PFNWGLCREATEAFFINITYDCNVPROC glad_wglCreateAffinityDCNV; +#define wglCreateAffinityDCNV glad_wglCreateAffinityDCNV +GLAD_API_CALL PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC glad_wglCreateAssociatedContextAMD; +#define wglCreateAssociatedContextAMD glad_wglCreateAssociatedContextAMD +GLAD_API_CALL PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC glad_wglCreateAssociatedContextAttribsAMD; +#define wglCreateAssociatedContextAttribsAMD glad_wglCreateAssociatedContextAttribsAMD +GLAD_API_CALL PFNWGLCREATEBUFFERREGIONARBPROC glad_wglCreateBufferRegionARB; +#define wglCreateBufferRegionARB glad_wglCreateBufferRegionARB +GLAD_API_CALL PFNWGLCREATECONTEXTATTRIBSARBPROC glad_wglCreateContextAttribsARB; +#define wglCreateContextAttribsARB glad_wglCreateContextAttribsARB +GLAD_API_CALL PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC glad_wglCreateDisplayColorTableEXT; +#define wglCreateDisplayColorTableEXT glad_wglCreateDisplayColorTableEXT +GLAD_API_CALL PFNWGLCREATEIMAGEBUFFERI3DPROC glad_wglCreateImageBufferI3D; +#define wglCreateImageBufferI3D glad_wglCreateImageBufferI3D +GLAD_API_CALL PFNWGLCREATEPBUFFERARBPROC glad_wglCreatePbufferARB; +#define wglCreatePbufferARB glad_wglCreatePbufferARB +GLAD_API_CALL PFNWGLCREATEPBUFFEREXTPROC glad_wglCreatePbufferEXT; +#define wglCreatePbufferEXT glad_wglCreatePbufferEXT +GLAD_API_CALL PFNWGLDXCLOSEDEVICENVPROC glad_wglDXCloseDeviceNV; +#define wglDXCloseDeviceNV glad_wglDXCloseDeviceNV +GLAD_API_CALL PFNWGLDXLOCKOBJECTSNVPROC glad_wglDXLockObjectsNV; +#define wglDXLockObjectsNV glad_wglDXLockObjectsNV +GLAD_API_CALL PFNWGLDXOBJECTACCESSNVPROC glad_wglDXObjectAccessNV; +#define wglDXObjectAccessNV glad_wglDXObjectAccessNV +GLAD_API_CALL PFNWGLDXOPENDEVICENVPROC glad_wglDXOpenDeviceNV; +#define wglDXOpenDeviceNV glad_wglDXOpenDeviceNV +GLAD_API_CALL PFNWGLDXREGISTEROBJECTNVPROC glad_wglDXRegisterObjectNV; +#define wglDXRegisterObjectNV glad_wglDXRegisterObjectNV +GLAD_API_CALL PFNWGLDXSETRESOURCESHAREHANDLENVPROC glad_wglDXSetResourceShareHandleNV; +#define wglDXSetResourceShareHandleNV glad_wglDXSetResourceShareHandleNV +GLAD_API_CALL PFNWGLDXUNLOCKOBJECTSNVPROC glad_wglDXUnlockObjectsNV; +#define wglDXUnlockObjectsNV glad_wglDXUnlockObjectsNV +GLAD_API_CALL PFNWGLDXUNREGISTEROBJECTNVPROC glad_wglDXUnregisterObjectNV; +#define wglDXUnregisterObjectNV glad_wglDXUnregisterObjectNV +GLAD_API_CALL PFNWGLDELAYBEFORESWAPNVPROC glad_wglDelayBeforeSwapNV; +#define wglDelayBeforeSwapNV glad_wglDelayBeforeSwapNV +GLAD_API_CALL PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC glad_wglDeleteAssociatedContextAMD; +#define wglDeleteAssociatedContextAMD glad_wglDeleteAssociatedContextAMD +GLAD_API_CALL PFNWGLDELETEBUFFERREGIONARBPROC glad_wglDeleteBufferRegionARB; +#define wglDeleteBufferRegionARB glad_wglDeleteBufferRegionARB +GLAD_API_CALL PFNWGLDELETEDCNVPROC glad_wglDeleteDCNV; +#define wglDeleteDCNV glad_wglDeleteDCNV +GLAD_API_CALL PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC glad_wglDestroyDisplayColorTableEXT; +#define wglDestroyDisplayColorTableEXT glad_wglDestroyDisplayColorTableEXT +GLAD_API_CALL PFNWGLDESTROYIMAGEBUFFERI3DPROC glad_wglDestroyImageBufferI3D; +#define wglDestroyImageBufferI3D glad_wglDestroyImageBufferI3D +GLAD_API_CALL PFNWGLDESTROYPBUFFERARBPROC glad_wglDestroyPbufferARB; +#define wglDestroyPbufferARB glad_wglDestroyPbufferARB +GLAD_API_CALL PFNWGLDESTROYPBUFFEREXTPROC glad_wglDestroyPbufferEXT; +#define wglDestroyPbufferEXT glad_wglDestroyPbufferEXT +GLAD_API_CALL PFNWGLDISABLEFRAMELOCKI3DPROC glad_wglDisableFrameLockI3D; +#define wglDisableFrameLockI3D glad_wglDisableFrameLockI3D +GLAD_API_CALL PFNWGLDISABLEGENLOCKI3DPROC glad_wglDisableGenlockI3D; +#define wglDisableGenlockI3D glad_wglDisableGenlockI3D +GLAD_API_CALL PFNWGLENABLEFRAMELOCKI3DPROC glad_wglEnableFrameLockI3D; +#define wglEnableFrameLockI3D glad_wglEnableFrameLockI3D +GLAD_API_CALL PFNWGLENABLEGENLOCKI3DPROC glad_wglEnableGenlockI3D; +#define wglEnableGenlockI3D glad_wglEnableGenlockI3D +GLAD_API_CALL PFNWGLENDFRAMETRACKINGI3DPROC glad_wglEndFrameTrackingI3D; +#define wglEndFrameTrackingI3D glad_wglEndFrameTrackingI3D +GLAD_API_CALL PFNWGLENUMGPUDEVICESNVPROC glad_wglEnumGpuDevicesNV; +#define wglEnumGpuDevicesNV glad_wglEnumGpuDevicesNV +GLAD_API_CALL PFNWGLENUMGPUSFROMAFFINITYDCNVPROC glad_wglEnumGpusFromAffinityDCNV; +#define wglEnumGpusFromAffinityDCNV glad_wglEnumGpusFromAffinityDCNV +GLAD_API_CALL PFNWGLENUMGPUSNVPROC glad_wglEnumGpusNV; +#define wglEnumGpusNV glad_wglEnumGpusNV +GLAD_API_CALL PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC glad_wglEnumerateVideoCaptureDevicesNV; +#define wglEnumerateVideoCaptureDevicesNV glad_wglEnumerateVideoCaptureDevicesNV +GLAD_API_CALL PFNWGLENUMERATEVIDEODEVICESNVPROC glad_wglEnumerateVideoDevicesNV; +#define wglEnumerateVideoDevicesNV glad_wglEnumerateVideoDevicesNV +GLAD_API_CALL PFNWGLFREEMEMORYNVPROC glad_wglFreeMemoryNV; +#define wglFreeMemoryNV glad_wglFreeMemoryNV +GLAD_API_CALL PFNWGLGENLOCKSAMPLERATEI3DPROC glad_wglGenlockSampleRateI3D; +#define wglGenlockSampleRateI3D glad_wglGenlockSampleRateI3D +GLAD_API_CALL PFNWGLGENLOCKSOURCEDELAYI3DPROC glad_wglGenlockSourceDelayI3D; +#define wglGenlockSourceDelayI3D glad_wglGenlockSourceDelayI3D +GLAD_API_CALL PFNWGLGENLOCKSOURCEEDGEI3DPROC glad_wglGenlockSourceEdgeI3D; +#define wglGenlockSourceEdgeI3D glad_wglGenlockSourceEdgeI3D +GLAD_API_CALL PFNWGLGENLOCKSOURCEI3DPROC glad_wglGenlockSourceI3D; +#define wglGenlockSourceI3D glad_wglGenlockSourceI3D +GLAD_API_CALL PFNWGLGETCONTEXTGPUIDAMDPROC glad_wglGetContextGPUIDAMD; +#define wglGetContextGPUIDAMD glad_wglGetContextGPUIDAMD +GLAD_API_CALL PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC glad_wglGetCurrentAssociatedContextAMD; +#define wglGetCurrentAssociatedContextAMD glad_wglGetCurrentAssociatedContextAMD +GLAD_API_CALL PFNWGLGETCURRENTREADDCARBPROC glad_wglGetCurrentReadDCARB; +#define wglGetCurrentReadDCARB glad_wglGetCurrentReadDCARB +GLAD_API_CALL PFNWGLGETCURRENTREADDCEXTPROC glad_wglGetCurrentReadDCEXT; +#define wglGetCurrentReadDCEXT glad_wglGetCurrentReadDCEXT +GLAD_API_CALL PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC glad_wglGetDigitalVideoParametersI3D; +#define wglGetDigitalVideoParametersI3D glad_wglGetDigitalVideoParametersI3D +GLAD_API_CALL PFNWGLGETEXTENSIONSSTRINGARBPROC glad_wglGetExtensionsStringARB; +#define wglGetExtensionsStringARB glad_wglGetExtensionsStringARB +GLAD_API_CALL PFNWGLGETEXTENSIONSSTRINGEXTPROC glad_wglGetExtensionsStringEXT; +#define wglGetExtensionsStringEXT glad_wglGetExtensionsStringEXT +GLAD_API_CALL PFNWGLGETFRAMEUSAGEI3DPROC glad_wglGetFrameUsageI3D; +#define wglGetFrameUsageI3D glad_wglGetFrameUsageI3D +GLAD_API_CALL PFNWGLGETGPUIDSAMDPROC glad_wglGetGPUIDsAMD; +#define wglGetGPUIDsAMD glad_wglGetGPUIDsAMD +GLAD_API_CALL PFNWGLGETGPUINFOAMDPROC glad_wglGetGPUInfoAMD; +#define wglGetGPUInfoAMD glad_wglGetGPUInfoAMD +GLAD_API_CALL PFNWGLGETGAMMATABLEI3DPROC glad_wglGetGammaTableI3D; +#define wglGetGammaTableI3D glad_wglGetGammaTableI3D +GLAD_API_CALL PFNWGLGETGAMMATABLEPARAMETERSI3DPROC glad_wglGetGammaTableParametersI3D; +#define wglGetGammaTableParametersI3D glad_wglGetGammaTableParametersI3D +GLAD_API_CALL PFNWGLGETGENLOCKSAMPLERATEI3DPROC glad_wglGetGenlockSampleRateI3D; +#define wglGetGenlockSampleRateI3D glad_wglGetGenlockSampleRateI3D +GLAD_API_CALL PFNWGLGETGENLOCKSOURCEDELAYI3DPROC glad_wglGetGenlockSourceDelayI3D; +#define wglGetGenlockSourceDelayI3D glad_wglGetGenlockSourceDelayI3D +GLAD_API_CALL PFNWGLGETGENLOCKSOURCEEDGEI3DPROC glad_wglGetGenlockSourceEdgeI3D; +#define wglGetGenlockSourceEdgeI3D glad_wglGetGenlockSourceEdgeI3D +GLAD_API_CALL PFNWGLGETGENLOCKSOURCEI3DPROC glad_wglGetGenlockSourceI3D; +#define wglGetGenlockSourceI3D glad_wglGetGenlockSourceI3D +GLAD_API_CALL PFNWGLGETMSCRATEOMLPROC glad_wglGetMscRateOML; +#define wglGetMscRateOML glad_wglGetMscRateOML +GLAD_API_CALL PFNWGLGETPBUFFERDCARBPROC glad_wglGetPbufferDCARB; +#define wglGetPbufferDCARB glad_wglGetPbufferDCARB +GLAD_API_CALL PFNWGLGETPBUFFERDCEXTPROC glad_wglGetPbufferDCEXT; +#define wglGetPbufferDCEXT glad_wglGetPbufferDCEXT +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBFVARBPROC glad_wglGetPixelFormatAttribfvARB; +#define wglGetPixelFormatAttribfvARB glad_wglGetPixelFormatAttribfvARB +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBFVEXTPROC glad_wglGetPixelFormatAttribfvEXT; +#define wglGetPixelFormatAttribfvEXT glad_wglGetPixelFormatAttribfvEXT +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBIVARBPROC glad_wglGetPixelFormatAttribivARB; +#define wglGetPixelFormatAttribivARB glad_wglGetPixelFormatAttribivARB +GLAD_API_CALL PFNWGLGETPIXELFORMATATTRIBIVEXTPROC glad_wglGetPixelFormatAttribivEXT; +#define wglGetPixelFormatAttribivEXT glad_wglGetPixelFormatAttribivEXT +GLAD_API_CALL PFNWGLGETSWAPINTERVALEXTPROC glad_wglGetSwapIntervalEXT; +#define wglGetSwapIntervalEXT glad_wglGetSwapIntervalEXT +GLAD_API_CALL PFNWGLGETSYNCVALUESOMLPROC glad_wglGetSyncValuesOML; +#define wglGetSyncValuesOML glad_wglGetSyncValuesOML +GLAD_API_CALL PFNWGLGETVIDEODEVICENVPROC glad_wglGetVideoDeviceNV; +#define wglGetVideoDeviceNV glad_wglGetVideoDeviceNV +GLAD_API_CALL PFNWGLGETVIDEOINFONVPROC glad_wglGetVideoInfoNV; +#define wglGetVideoInfoNV glad_wglGetVideoInfoNV +GLAD_API_CALL PFNWGLISENABLEDFRAMELOCKI3DPROC glad_wglIsEnabledFrameLockI3D; +#define wglIsEnabledFrameLockI3D glad_wglIsEnabledFrameLockI3D +GLAD_API_CALL PFNWGLISENABLEDGENLOCKI3DPROC glad_wglIsEnabledGenlockI3D; +#define wglIsEnabledGenlockI3D glad_wglIsEnabledGenlockI3D +GLAD_API_CALL PFNWGLJOINSWAPGROUPNVPROC glad_wglJoinSwapGroupNV; +#define wglJoinSwapGroupNV glad_wglJoinSwapGroupNV +GLAD_API_CALL PFNWGLLOADDISPLAYCOLORTABLEEXTPROC glad_wglLoadDisplayColorTableEXT; +#define wglLoadDisplayColorTableEXT glad_wglLoadDisplayColorTableEXT +GLAD_API_CALL PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC glad_wglLockVideoCaptureDeviceNV; +#define wglLockVideoCaptureDeviceNV glad_wglLockVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC glad_wglMakeAssociatedContextCurrentAMD; +#define wglMakeAssociatedContextCurrentAMD glad_wglMakeAssociatedContextCurrentAMD +GLAD_API_CALL PFNWGLMAKECONTEXTCURRENTARBPROC glad_wglMakeContextCurrentARB; +#define wglMakeContextCurrentARB glad_wglMakeContextCurrentARB +GLAD_API_CALL PFNWGLMAKECONTEXTCURRENTEXTPROC glad_wglMakeContextCurrentEXT; +#define wglMakeContextCurrentEXT glad_wglMakeContextCurrentEXT +GLAD_API_CALL PFNWGLQUERYCURRENTCONTEXTNVPROC glad_wglQueryCurrentContextNV; +#define wglQueryCurrentContextNV glad_wglQueryCurrentContextNV +GLAD_API_CALL PFNWGLQUERYFRAMECOUNTNVPROC glad_wglQueryFrameCountNV; +#define wglQueryFrameCountNV glad_wglQueryFrameCountNV +GLAD_API_CALL PFNWGLQUERYFRAMELOCKMASTERI3DPROC glad_wglQueryFrameLockMasterI3D; +#define wglQueryFrameLockMasterI3D glad_wglQueryFrameLockMasterI3D +GLAD_API_CALL PFNWGLQUERYFRAMETRACKINGI3DPROC glad_wglQueryFrameTrackingI3D; +#define wglQueryFrameTrackingI3D glad_wglQueryFrameTrackingI3D +GLAD_API_CALL PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC glad_wglQueryGenlockMaxSourceDelayI3D; +#define wglQueryGenlockMaxSourceDelayI3D glad_wglQueryGenlockMaxSourceDelayI3D +GLAD_API_CALL PFNWGLQUERYMAXSWAPGROUPSNVPROC glad_wglQueryMaxSwapGroupsNV; +#define wglQueryMaxSwapGroupsNV glad_wglQueryMaxSwapGroupsNV +GLAD_API_CALL PFNWGLQUERYPBUFFERARBPROC glad_wglQueryPbufferARB; +#define wglQueryPbufferARB glad_wglQueryPbufferARB +GLAD_API_CALL PFNWGLQUERYPBUFFEREXTPROC glad_wglQueryPbufferEXT; +#define wglQueryPbufferEXT glad_wglQueryPbufferEXT +GLAD_API_CALL PFNWGLQUERYSWAPGROUPNVPROC glad_wglQuerySwapGroupNV; +#define wglQuerySwapGroupNV glad_wglQuerySwapGroupNV +GLAD_API_CALL PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC glad_wglQueryVideoCaptureDeviceNV; +#define wglQueryVideoCaptureDeviceNV glad_wglQueryVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC glad_wglReleaseImageBufferEventsI3D; +#define wglReleaseImageBufferEventsI3D glad_wglReleaseImageBufferEventsI3D +GLAD_API_CALL PFNWGLRELEASEPBUFFERDCARBPROC glad_wglReleasePbufferDCARB; +#define wglReleasePbufferDCARB glad_wglReleasePbufferDCARB +GLAD_API_CALL PFNWGLRELEASEPBUFFERDCEXTPROC glad_wglReleasePbufferDCEXT; +#define wglReleasePbufferDCEXT glad_wglReleasePbufferDCEXT +GLAD_API_CALL PFNWGLRELEASETEXIMAGEARBPROC glad_wglReleaseTexImageARB; +#define wglReleaseTexImageARB glad_wglReleaseTexImageARB +GLAD_API_CALL PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC glad_wglReleaseVideoCaptureDeviceNV; +#define wglReleaseVideoCaptureDeviceNV glad_wglReleaseVideoCaptureDeviceNV +GLAD_API_CALL PFNWGLRELEASEVIDEODEVICENVPROC glad_wglReleaseVideoDeviceNV; +#define wglReleaseVideoDeviceNV glad_wglReleaseVideoDeviceNV +GLAD_API_CALL PFNWGLRELEASEVIDEOIMAGENVPROC glad_wglReleaseVideoImageNV; +#define wglReleaseVideoImageNV glad_wglReleaseVideoImageNV +GLAD_API_CALL PFNWGLRESETFRAMECOUNTNVPROC glad_wglResetFrameCountNV; +#define wglResetFrameCountNV glad_wglResetFrameCountNV +GLAD_API_CALL PFNWGLRESTOREBUFFERREGIONARBPROC glad_wglRestoreBufferRegionARB; +#define wglRestoreBufferRegionARB glad_wglRestoreBufferRegionARB +GLAD_API_CALL PFNWGLSAVEBUFFERREGIONARBPROC glad_wglSaveBufferRegionARB; +#define wglSaveBufferRegionARB glad_wglSaveBufferRegionARB +GLAD_API_CALL PFNWGLSENDPBUFFERTOVIDEONVPROC glad_wglSendPbufferToVideoNV; +#define wglSendPbufferToVideoNV glad_wglSendPbufferToVideoNV +GLAD_API_CALL PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC glad_wglSetDigitalVideoParametersI3D; +#define wglSetDigitalVideoParametersI3D glad_wglSetDigitalVideoParametersI3D +GLAD_API_CALL PFNWGLSETGAMMATABLEI3DPROC glad_wglSetGammaTableI3D; +#define wglSetGammaTableI3D glad_wglSetGammaTableI3D +GLAD_API_CALL PFNWGLSETGAMMATABLEPARAMETERSI3DPROC glad_wglSetGammaTableParametersI3D; +#define wglSetGammaTableParametersI3D glad_wglSetGammaTableParametersI3D +GLAD_API_CALL PFNWGLSETPBUFFERATTRIBARBPROC glad_wglSetPbufferAttribARB; +#define wglSetPbufferAttribARB glad_wglSetPbufferAttribARB +GLAD_API_CALL PFNWGLSETSTEREOEMITTERSTATE3DLPROC glad_wglSetStereoEmitterState3DL; +#define wglSetStereoEmitterState3DL glad_wglSetStereoEmitterState3DL +GLAD_API_CALL PFNWGLSWAPBUFFERSMSCOMLPROC glad_wglSwapBuffersMscOML; +#define wglSwapBuffersMscOML glad_wglSwapBuffersMscOML +GLAD_API_CALL PFNWGLSWAPINTERVALEXTPROC glad_wglSwapIntervalEXT; +#define wglSwapIntervalEXT glad_wglSwapIntervalEXT +GLAD_API_CALL PFNWGLSWAPLAYERBUFFERSMSCOMLPROC glad_wglSwapLayerBuffersMscOML; +#define wglSwapLayerBuffersMscOML glad_wglSwapLayerBuffersMscOML +GLAD_API_CALL PFNWGLWAITFORMSCOMLPROC glad_wglWaitForMscOML; +#define wglWaitForMscOML glad_wglWaitForMscOML +GLAD_API_CALL PFNWGLWAITFORSBCOMLPROC glad_wglWaitForSbcOML; +#define wglWaitForSbcOML glad_wglWaitForSbcOML + +GLAD_API_CALL int gladLoadWGLUserPtr(HDC hdc, GLADuserptrloadfunc load, void *userptr); +GLAD_API_CALL int gladLoadWGL(HDC hdc, GLADloadfunc load); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log b/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log new file mode 100644 index 00000000..9192fb5b --- /dev/null +++ b/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log @@ -0,0 +1,52 @@ +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.bsc +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector_dot.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector_dot.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector_dot.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.pdb +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.dll +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.pdb +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.lib +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.exp +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.ilk +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.idb +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.command.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.read.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.write.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.11516.write.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.command.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.items.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.read.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.command.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.read.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.secondary.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.write.1.tlog diff --git a/StgSharp.C/x64/Debug/StgSharp.C.dll.recipe b/StgSharp.C/x64/Debug/StgSharp.C.dll.recipe new file mode 100644 index 00000000..d8a66a51 --- /dev/null +++ b/StgSharp.C/x64/Debug/StgSharp.C.dll.recipe @@ -0,0 +1,11 @@ + + + + + D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll + + + + + + \ No newline at end of file diff --git a/StgSharp.C/x64/Debug/StgSharp.C.ilk b/StgSharp.C/x64/Debug/StgSharp.C.ilk new file mode 100644 index 00000000..5abde768 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.ilk differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.13144.write.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.13144.write.1.tlog new file mode 100644 index 00000000..a3e06b10 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.13144.write.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog new file mode 100644 index 00000000..4239242a Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.command.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog new file mode 100644 index 00000000..70e4cda1 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/CL.read.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/Cl.items.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/Cl.items.tlog new file mode 100644 index 00000000..22541118 --- /dev/null +++ b/StgSharp.C/x64/Debug/StgSharp.C.tlog/Cl.items.tlog @@ -0,0 +1,11 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\dllmain.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\dllmain.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\intrinsic.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\intrinsic.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat2.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\mat2.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat3.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\mat3.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\mat4.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\stb_image.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\stb_image.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\StgSharpC.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\StgSharpC.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\hash.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\string.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\string.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\vector.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\vector.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\vector_dot.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\vector_dot.obj diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/StgSharp.C.lastbuildstate b/StgSharp.C/x64/Debug/StgSharp.C.tlog/StgSharp.C.lastbuildstate new file mode 100644 index 00000000..174a20c9 --- /dev/null +++ b/StgSharp.C/x64/Debug/StgSharp.C.tlog/StgSharp.C.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.41.34120:TargetPlatformVersion=10.0.22621.0: +Debug|x64|D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\| diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.command.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.command.1.tlog new file mode 100644 index 00000000..4dd2c07f Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.command.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.read.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.read.1.tlog new file mode 100644 index 00000000..925321f8 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.read.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.write.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.write.1.tlog new file mode 100644 index 00000000..61a28e20 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/bscmake.write.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.command.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.command.1.tlog new file mode 100644 index 00000000..5b829347 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.command.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.read.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.read.1.tlog new file mode 100644 index 00000000..e095cc74 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.read.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.secondary.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.secondary.1.tlog new file mode 100644 index 00000000..27855864 --- /dev/null +++ b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.secondary.1.tlog @@ -0,0 +1,4 @@ +^D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\GLFW3.LIB|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\GLFW3DLL.LIB|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\GLFW3_MT.LIB|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\DLLMAIN.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\HASH.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\INTRINSIC.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\MAT2.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\MAT3.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\MAT4.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\STB_IMAGE.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\STGSHARPC.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\STRING.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\VECTOR.OBJ|D:\NITLOADINDUSTRY\研究项目\1-FLAGSHIP\TH2020\PROJECTFILE\内核源代码\STGSHARP.C\X64\DEBUG\VECTOR_DOT.OBJ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.lib +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.EXP +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Debug\StgSharp.C.ilk diff --git a/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.write.1.tlog b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.write.1.tlog new file mode 100644 index 00000000..a4f34ce0 Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharp.C.tlog/link.write.1.tlog differ diff --git a/StgSharp.C/x64/Debug/StgSharpC.cod b/StgSharp.C/x64/Debug/StgSharpC.cod new file mode 100644 index 00000000..1c2db210 --- /dev/null +++ b/StgSharp.C/x64/Debug/StgSharpC.cod @@ -0,0 +1,870 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +COMM currentContext:QWORD +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__9BC420BA_StgSharpC@c DB 01H +msvcjmc ENDS +PUBLIC glCheckShaderStat +PUBLIC initGL +PUBLIC linkShaderProgram +PUBLIC loadImageData +PUBLIC loadGlfuncDefault +PUBLIC unloadImageData +PUBLIC readLog +PUBLIC __JustMyCode_Default +PUBLIC ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ ; `string' +EXTRN __report_rangecheckfailure:PROC +EXTRN __imp_free:PROC +EXTRN __imp_strcpy_s:PROC +EXTRN stbi_load: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 __security_check_cookie:PROC +EXTRN __security_cookie:QWORD +; 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 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 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 +; 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\StgSharpC.c +; COMDAT readLog +_TEXT SEGMENT +$T1 = 200 +readLog PROC ; COMDAT + +; 72 : { + +$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:__9BC420BA_StgSharpC@c + 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001b 90 npad 1 + +; 73 : 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 + +; 74 : return infolog; + + 00056 48 8d 05 00 00 + 00 00 lea rax, OFFSET FLAT:infolog +$LN2@readLog: + +; 75 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\StgSharpC.c +; COMDAT unloadImageData +_TEXT SEGMENT +out$ = 224 +unloadImageData PROC ; COMDAT + +; 67 : { + +$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:__9BC420BA_StgSharpC@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 68 : 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 + +; 69 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\StgSharpC.c +; COMDAT loadGlfuncDefault +_TEXT SEGMENT +ret$ = 8 +i$1 = 40 +procName$ = 288 +loadGlfuncDefault PROC ; COMDAT + +; 31 : { + +$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:__9BC420BA_StgSharpC@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 32 : 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 + +; 33 : // printf("%llu\n", (uint64_t)ret); +; 34 : if (ret == NULL) { + + 00030 48 83 7d 08 00 cmp QWORD PTR ret$[rbp], 0 + 00035 75 5b jne SHORT $LN5@loadGlfunc + +; 35 : 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 + +; 36 : 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 + +; 37 : 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 + +; 38 : } + + 00090 eb c9 jmp SHORT $LN2@loadGlfunc +$LN3@loadGlfunc: +$LN5@loadGlfunc: + +; 39 : //printf("%s\n", infolog); +; 40 : } +; 41 : return (GLFWglproc)ret; + + 00092 48 8b 45 08 mov rax, QWORD PTR ret$[rbp] + +; 42 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\StgSharpC.c +; COMDAT loadImageData +_TEXT SEGMENT +location$ = 224 +out$ = 232 +loader$ = 240 +loadImageData PROC ; COMDAT + +; 59 : { + +$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:__9BC420BA_StgSharpC@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 60 : 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 + +; 61 : 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: + +; 62 : } +; 63 : 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 + +; 64 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\StgSharpC.c +; COMDAT linkShaderProgram +_TEXT SEGMENT +success$ = 4 +__$ArrayPad$ = 216 +context$ = 256 +shaderProgram$ = 264 +linkShaderProgram PROC ; COMDAT + +; 45 : { + +$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:__9BC420BA_StgSharpC@c + 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004d 90 npad 1 + +; 46 : 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 80 22 00 + 00 call QWORD PTR [rax+8832] + 00061 90 npad 1 + +; 47 : +; 48 : int success; +; 49 : 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 48 1a 00 + 00 call QWORD PTR [rax+6728] + 0007e 90 npad 1 + +; 50 : if (!success) { + + 0007f 83 7d 04 00 cmp DWORD PTR success$[rbp], 0 + 00083 75 29 jne SHORT $LN2@linkShader + +; 51 : 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 98 19 00 + 00 call QWORD PTR [rax+6552] + 000a7 90 npad 1 + +; 52 : return 0; + + 000a8 33 c0 xor eax, eax + 000aa eb 08 jmp SHORT $LN1@linkShader + +; 53 : } else { + + 000ac eb 06 jmp SHORT $LN3@linkShader +$LN2@linkShader: + +; 54 : return shaderProgram; + + 000ae 8b 85 08 01 00 + 00 mov eax, DWORD PTR shaderProgram$[rbp] +$LN3@linkShader: +$LN1@linkShader: + +; 55 : } +; 56 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\StgSharpC.c +; COMDAT initGL +_TEXT SEGMENT +majorVersion$ = 224 +minorVersion$ = 232 +initGL PROC ; COMDAT + +; 23 : { + +$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:__9BC420BA_StgSharpC@c + 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00022 90 npad 1 + +; 24 : 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 + +; 25 : 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 + +; 26 : 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 + +; 27 : 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 + +; 28 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\StgSharpC.c +; COMDAT glCheckShaderStat +_TEXT SEGMENT +stat$ = 4 +__$ArrayPad$ = 216 +context$ = 256 +shaderHandle$ = 264 +key$ = 272 +logRef$ = 280 +glCheckShaderStat PROC ; COMDAT + +; 12 : { + +$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:__9BC420BA_StgSharpC@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 13 : int stat = 0; + + 00059 c7 45 04 00 00 + 00 00 mov DWORD PTR stat$[rbp], 0 + +; 14 : 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 40 1b 00 + 00 call QWORD PTR [rax+6976] + 0007d 90 npad 1 + +; 15 : if (!stat) { + + 0007e 83 7d 04 00 cmp DWORD PTR stat$[rbp], 0 + 00082 75 23 jne SHORT $LN2@glCheckSha + +; 16 : 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 20 1b 00 + 00 call QWORD PTR [rax+6944] + 000a6 90 npad 1 +$LN2@glCheckSha: + +; 17 : } +; 18 : *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 + +; 19 : return stat; + + 000b8 8b 45 04 mov eax, DWORD PTR stat$[rbp] + +; 20 : } + + 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 +END diff --git a/StgSharp.C/x64/Debug/StgSharpC.log b/StgSharp.C/x64/Debug/StgSharpC.log new file mode 100644 index 00000000..923df6ad --- /dev/null +++ b/StgSharp.C/x64/Debug/StgSharpC.log @@ -0,0 +1,56 @@ +C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(517,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。 + StgSharpC.c + intrinsic.c + mat4.c + string.c +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\StgSharpC.c(14,30): warning C4244: “函数”: 从“uint64_t”转换到“GLuint”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\StgSharpC.c(16,43): warning C4244: “函数”: 从“uint64_t”转换到“GLuint”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\string.c(21,54): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\string.c(36,54): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(9,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(9,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(11,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(11,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(20,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(20,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(22,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(22,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(24,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(24,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(26,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(26,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(36,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(36,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(38,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(38,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(40,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(40,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(42,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(42,62): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(51,54): warning C4028: 形参 1 与声明不同 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(51,84): warning C4028: 形参 2 与声明不同 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(53,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(54,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(55,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(56,22): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(59,28): warning C4013: “det_mat3_internal”未定义;假设外部返回 int +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(59,28): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(59,62): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(60,28): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(60,62): warning C4244: “函数”: 从“int”转换到“float”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(61,36): warning C4133: “函数”: 从“const __m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(69,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(69,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(70,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(70,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(71,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(71,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(72,37): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(72,61): warning C4133: “函数”: 从“__m128 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(77,38): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(77,63): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(78,38): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c(78,63): warning C4133: “函数”: 从“__m256 *”到“const float *”的类型不兼容 + 正在创建库 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.lib 和对象 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.exp +LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library + StgSharpC.vcxproj -> D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll diff --git a/StgSharp.C/x64/Debug/StgSharpC.obj b/StgSharp.C/x64/Debug/StgSharpC.obj new file mode 100644 index 00000000..9a374b1e Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharpC.obj differ diff --git a/StgSharp.C/x64/Debug/StgSharpC.sbr b/StgSharp.C/x64/Debug/StgSharpC.sbr new file mode 100644 index 00000000..81d4436c Binary files /dev/null and b/StgSharp.C/x64/Debug/StgSharpC.sbr differ diff --git a/StgSharp.C/x64/Debug/StgSharpC.vcxproj.FileListAbsolute.txt b/StgSharp.C/x64/Debug/StgSharpC.vcxproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.C/x64/Debug/dllmain.cod b/StgSharp.C/x64/Debug/dllmain.cod new file mode 100644 index 00000000..5fc188d2 --- /dev/null +++ b/StgSharp.C/x64/Debug/dllmain.cod @@ -0,0 +1,263 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__F35F2EF4_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$DllMain DD imagerel $LN9 + DD imagerel $LN9+134 + 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 +; 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\dllmain.c +; COMDAT DllMain +_TEXT SEGMENT +tv64 = 192 +hModule$ = 240 +ul_reason_for_call$ = 248 +lpReserved$ = 256 +DllMain PROC ; COMDAT + +; 13 : { + +$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:__F35F2EF4_dllmain@c + 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00028 90 npad 1 + +; 14 : 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 32 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 12 je SHORT $LN5@DllMain + 00050 83 bd c0 00 00 + 00 03 cmp DWORD PTR tv64[rbp], 3 + 00057 74 10 je SHORT $LN6@DllMain + 00059 eb 1c jmp SHORT $LN2@DllMain +$LN4@DllMain: + +; 15 : { +; 16 : case DLL_PROCESS_ATTACH: +; 17 : return 1; + + 0005b b8 01 00 00 00 mov eax, 1 + 00060 eb 1a jmp SHORT $LN1@DllMain +$LN5@DllMain: + +; 18 : case DLL_THREAD_ATTACH: +; 19 : return 1; + + 00062 b8 01 00 00 00 mov eax, 1 + 00067 eb 13 jmp SHORT $LN1@DllMain +$LN6@DllMain: + +; 20 : case DLL_THREAD_DETACH: +; 21 : return 1; + + 00069 b8 01 00 00 00 mov eax, 1 + 0006e eb 0c jmp SHORT $LN1@DllMain +$LN7@DllMain: + +; 22 : case DLL_PROCESS_DETACH: +; 23 : return 1; + + 00070 b8 01 00 00 00 mov eax, 1 + 00075 eb 05 jmp SHORT $LN1@DllMain +$LN2@DllMain: + +; 24 : break; +; 25 : } +; 26 : return TRUE; + + 00077 b8 01 00 00 00 mov eax, 1 +$LN1@DllMain: + +; 27 : } + + 0007c 48 8d a5 d8 00 + 00 00 lea rsp, QWORD PTR [rbp+216] + 00083 5f pop rdi + 00084 5d pop rbp + 00085 c3 ret 0 +DllMain ENDP +_TEXT ENDS +END diff --git a/StgSharp.C/x64/Debug/dllmain.obj b/StgSharp.C/x64/Debug/dllmain.obj new file mode 100644 index 00000000..a56949d6 Binary files /dev/null and b/StgSharp.C/x64/Debug/dllmain.obj differ diff --git a/StgSharp.C/x64/Debug/dllmain.sbr b/StgSharp.C/x64/Debug/dllmain.sbr new file mode 100644 index 00000000..69abfd5b Binary files /dev/null and b/StgSharp.C/x64/Debug/dllmain.sbr differ diff --git a/StgSharp.C/x64/Debug/hash.cod b/StgSharp.C/x64/Debug/hash.cod new file mode 100644 index 00000000..d6f90aa0 --- /dev/null +++ b/StgSharp.C/x64/Debug/hash.cod @@ -0,0 +1,528 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__5A8332CE_isa_availability@h DB 01H +__EB6C2FE1_ssc_intrinsic@h DB 01H +__F5438B76_hash@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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\hash.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 + +; 5 : { + +$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:__F5438B76_hash@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 6 : 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 + +; 7 : 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 + +; 8 : +; 9 : if (size < 4) { + + 00057 83 7d 24 04 cmp DWORD PTR size$[rbp], 4 + 0005b 73 35 jae SHORT $LN20@city_hash_ + +; 10 : 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_ + +; 11 : 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 + +; 12 : } + + 0008b eb d2 jmp SHORT $LN2@city_hash_ +$LN3@city_hash_: + +; 13 : } 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_ + +; 14 : 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 + +; 15 : 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_ + +; 16 : 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 + +; 17 : } + + 000d0 eb d7 jmp SHORT $LN5@city_hash_ +$LN6@city_hash_: + +; 18 : 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_ + +; 19 : 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 + +; 20 : } + + 000ff eb d3 jmp SHORT $LN8@city_hash_ +$LN9@city_hash_: + +; 21 : } else { + + 00101 e9 21 01 00 00 jmp $LN23@city_hash_ +$LN22@city_hash_: + +; 22 : byte *last_128 = end - 16, *last_32 = end - 4; + + 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 + 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 + +; 23 : 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 + +; 24 : 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_ + +; 25 : __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 + +; 26 : 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 + +; 27 : 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 + +; 28 : } + + 001a5 eb 89 jmp SHORT $LN11@city_hash_ +$LN12@city_hash_: + +; 29 : 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 + +; 30 : 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 + +; 31 : 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_ + +; 32 : 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 + +; 33 : } + + 001fa eb d4 jmp SHORT $LN14@city_hash_ +$LN15@city_hash_: + +; 34 : 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_ + +; 35 : 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 + +; 36 : } + + 00225 eb d7 jmp SHORT $LN17@city_hash_ +$LN18@city_hash_: +$LN23@city_hash_: +$LN21@city_hash_: + +; 37 : } +; 38 : 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 + +; 39 : 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 + +; 40 : 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 + +; 41 : 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 + +; 42 : 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 + +; 43 : return hash; + + 0026b 8b 45 04 mov eax, DWORD PTR hash$[rbp] + +; 44 : } + + 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/StgSharp.C/x64/Debug/hash.obj b/StgSharp.C/x64/Debug/hash.obj new file mode 100644 index 00000000..5fefe104 Binary files /dev/null and b/StgSharp.C/x64/Debug/hash.obj differ diff --git a/StgSharp.C/x64/Debug/hash.sbr b/StgSharp.C/x64/Debug/hash.sbr new file mode 100644 index 00000000..d4812a21 Binary files /dev/null and b/StgSharp.C/x64/Debug/hash.sbr differ diff --git a/StgSharp.C/x64/Debug/intrinsic.cod b/StgSharp.C/x64/Debug/intrinsic.cod new file mode 100644 index 00000000..e41ee02f --- /dev/null +++ b/StgSharp.C/x64/Debug/intrinsic.cod @@ -0,0 +1,1178 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__5A8332CE_isa_availability@h DB 01H +__EB6C2FE1_ssc_intrinsic@h DB 01H +__BE01F05B_intrinsic@c DB 01H +msvcjmc ENDS +PUBLIC __check_isa_support +PUBLIC load_intrinsic_function +PUBLIC __JustMyCode_Default +PUBLIC ??_C@_1KG@LKFICGJK@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ ; `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 normalize:PROC +EXTRN addmatrix2_sse:PROC +EXTRN addmatrix2_avx:PROC +EXTRN transpose23:PROC +EXTRN transpose24:PROC +EXTRN addmatrix3_sse:PROC +EXTRN addmatrix3_avx:PROC +EXTRN addmatrix3_512:PROC +EXTRN transpose32:PROC +EXTRN transpose33:PROC +EXTRN transpose34:PROC +EXTRN det_mat3:PROC +EXTRN addmatrix4_sse:PROC +EXTRN addmatrix4_avx:PROC +EXTRN addmatrix4_512:PROC +EXTRN transpose42:PROC +EXTRN transpose43:PROC +EXTRN transpose44:PROC +EXTRN det_mat4:PROC +EXTRN dot_41_sse:PROC +EXTRN dot_31_sse:PROC +EXTRN dot_41_avx:PROC +EXTRN dot_31_avx:PROC +EXTRN dot_32_sse:PROC +EXTRN dot_32_avx:PROC +EXTRN dot_42_sse:PROC +EXTRN dot_42_avx:PROC +EXTRN dot_43_sse:PROC +EXTRN dot_43_avx:PROC +EXTRN city_hash_simplify_sse:PROC +EXTRN index_pair_sse:PROC +EXTRN _RTC_InitBase:PROC +EXTRN _RTC_Shutdown:PROC +EXTRN __CheckForDebuggerJustMyCode:PROC +EXTRN __isa_inverted:QWORD +EXTRN __avx10_version:DWORD +; COMDAT pdata +pdata SEGMENT +$pdata$__check_isa_support DD imagerel $LN7 + DD imagerel $LN7+138 + DD imagerel $unwind$__check_isa_support +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$load_intrinsic_function DD imagerel $LN11 + DD imagerel $LN11+213 + 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+434 + 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+434 + 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+434 + DD imagerel $unwind$load_intrinsic_512 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$check_isa DD imagerel check_isa + DD imagerel check_isa+70 + DD imagerel $unwind$check_isa +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@_1KG@LKFICGJK@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ +CONST SEGMENT +??_C@_1KG@LKFICGJK@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ DB 'D' + DB 00H, ':', 00H, '\', 00H, 'N', 00H, 'i', 00H, 't', 00H, 'l', 00H + DB 'o', 00H, 'a', 00H, 'd', 00H, 'I', 00H, 'n', 00H, 'd', 00H, 'u' + DB 00H, 's', 00H, 't', 00H, 'r', 00H, 'y', 00H, '\', 00H, 014H, 'x' + DB 'vzy', 098H, 0eeH, 'v\', 00H, '1', 00H, '-', 00H, 'F', 00H, 'l' + DB 00H, 'a', 00H, 'g', 00H, 's', 00H, 'h', 00H, 'i', 00H, 'p', 00H + DB '\', 00H, 'T', 00H, 'H', 00H, '2', 00H, '0', 00H, '2', 00H, '0' + DB 00H, '\', 00H, 'P', 00H, 'r', 00H, 'o', 00H, 'j', 00H, 'e', 00H + DB 'c', 00H, 't', 00H, 'F', 00H, 'i', 00H, 'l', 00H, 'e', 00H, '\' + DB 00H, 085H, 'Q8h', 090H, 'n', 0e3H, 'N', 01H, 'x\', 00H, 'S', 00H + DB 't', 00H, 'g', 00H, 'S', 00H, 'h', 00H, 'a', 00H, 'r', 00H, 'p' + DB 00H, '.', 00H, 'C', 00H, '\', 00H, 'i', 00H, 'n', 00H, 't', 00H + DB 'r', 00H, 'i', 00H, 'n', 00H, 's', 00H, 'i', 00H, 'c', 00H, '.' + DB 00H, 'c', 00H, 00H, 00H ; `string' +CONST ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$check_isa DD 025051201H + DD 010d2312H + DD 07006001dH + DD 05005H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$load_intrinsic_512 DD 025051301H + DD 010e2313H + DD 07007001dH + DD 05006H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$load_intrinsic_avx DD 025051301H + DD 010e2313H + DD 07007001dH + DD 05006H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$load_intrinsic_sse DD 025051301H + DD 010e2313H + DD 07007001dH + DD 05006H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$load_intrinsic_function DD 025051301H + DD 010e2313H + DD 070070021H + DD 05006H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$__check_isa_support DD 025051601H + DD 01112316H + DD 0700a001fH + DD 05009H +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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\intrinsic.c +; COMDAT check_isa +_TEXT SEGMENT +instruction_family$ = 224 +check_isa PROC ; COMDAT + +; 17 : { + + 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:__BE01F05B_intrinsic@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 18 : if (instruction_family != NEON) { + + 0001f 83 bd e0 00 00 + 00 05 cmp DWORD PTR instruction_family$[rbp], 5 + 00026 74 12 je SHORT $LN2@check_isa + +; 19 : #if _MSC_VER +; 20 : return __check_isa_support(instruction_family, 0); + + 00028 33 d2 xor edx, edx + 0002a 8b 8d e0 00 00 + 00 mov ecx, DWORD PTR instruction_family$[rbp] + 00030 e8 00 00 00 00 call __check_isa_support + 00035 0f b6 c0 movzx eax, al + 00038 eb 02 jmp SHORT $LN1@check_isa +$LN2@check_isa: + +; 21 : #else +; 22 : switch (instruction_family) { +; 23 : case SSE: +; 24 : return __builtin_cpu_supports("sse4.2"); +; 25 : case AVX256: +; 26 : return __builtin_cpu_supports("avx2"); +; 27 : case AVX512: +; 28 : return __builtin_cpu_supports("avx512f"); +; 29 : default: +; 30 : return 0; +; 31 : } +; 32 : #endif // _MSC_VER +; 33 : } +; 34 : +; 35 : #if defined(__ARM_NEON) || defined(__ARM_NEON__) +; 36 : return 1; +; 37 : #else +; 38 : return 0; + + 0003a 33 c0 xor eax, eax +$LN1@check_isa: + +; 39 : #endif +; 40 : } + + 0003c 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 00043 5f pop rdi + 00044 5d pop rbp + 00045 c3 ret 0 +check_isa ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\intrinsic.c +; COMDAT load_intrinsic_512 +_TEXT SEGMENT +context$ = 224 +load_intrinsic_512 PROC ; COMDAT + +; 115 : { + + 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:__BE01F05B_intrinsic@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 116 : context->add_m2 = addmatrix2_avx; + + 00020 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00027 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix2_avx + 0002e 48 89 08 mov QWORD PTR [rax], rcx + +; 117 : context->add_m3 = addmatrix3_512; + + 00031 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00038 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix3_512 + 0003f 48 89 48 08 mov QWORD PTR [rax+8], rcx + +; 118 : context->add_m4 = addmatrix4_512; + + 00043 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0004a 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix4_512 + 00051 48 89 48 10 mov QWORD PTR [rax+16], rcx + +; 119 : context->transpose_23 = transpose23; + + 00055 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0005c 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose23 + 00063 48 89 48 68 mov QWORD PTR [rax+104], rcx + +; 120 : context->transpose_24 = transpose24; + + 00067 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0006e 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose24 + 00075 48 89 48 70 mov QWORD PTR [rax+112], rcx + +; 121 : context->transpose_32 = transpose32; + + 00079 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00080 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose32 + 00087 48 89 48 78 mov QWORD PTR [rax+120], rcx + +; 122 : context->transpose_33 = transpose33; + + 0008b 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00092 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose33 + 00099 48 89 88 80 00 + 00 00 mov QWORD PTR [rax+128], rcx + +; 123 : context->transpose_34 = transpose34; + + 000a0 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000a7 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose34 + 000ae 48 89 88 88 00 + 00 00 mov QWORD PTR [rax+136], rcx + +; 124 : context->transpose_42 = transpose42; + + 000b5 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000bc 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose42 + 000c3 48 89 88 90 00 + 00 00 mov QWORD PTR [rax+144], rcx + +; 125 : context->transpose_43 = transpose43; + + 000ca 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000d1 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose43 + 000d8 48 89 88 98 00 + 00 00 mov QWORD PTR [rax+152], rcx + +; 126 : context->transpose_44 = transpose44; + + 000df 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000e6 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose44 + 000ed 48 89 88 a0 00 + 00 00 mov QWORD PTR [rax+160], rcx + +; 127 : context->normalize_3 = normalize; + + 000f4 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000fb 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:normalize + 00102 48 89 48 60 mov QWORD PTR [rax+96], rcx + +; 128 : context->det_matrix33 = det_mat3; + + 00106 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0010d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:det_mat3 + 00114 48 89 48 20 mov QWORD PTR [rax+32], rcx + +; 129 : context->det_matrix44 = det_mat4; + + 00118 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0011f 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:det_mat4 + 00126 48 89 48 28 mov QWORD PTR [rax+40], rcx + +; 130 : context->dot_31 = dot_31_avx; + + 0012a 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00131 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_31_avx + 00138 48 89 48 30 mov QWORD PTR [rax+48], rcx + +; 131 : context->dot_32 = dot_32_avx; + + 0013c 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00143 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_32_avx + 0014a 48 89 48 38 mov QWORD PTR [rax+56], rcx + +; 132 : context->dot_41 = dot_41_avx; + + 0014e 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00155 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_41_avx + 0015c 48 89 48 40 mov QWORD PTR [rax+64], rcx + +; 133 : context->dot_42 = dot_42_avx; + + 00160 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00167 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_42_avx + 0016e 48 89 48 48 mov QWORD PTR [rax+72], rcx + +; 134 : context->dot_43 = dot_43_avx; + + 00172 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00179 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_43_avx + 00180 48 89 48 50 mov QWORD PTR [rax+80], rcx + +; 135 : context->city_hash_simplify = city_hash_simplify_sse; + + 00184 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0018b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse + 00192 48 89 48 18 mov QWORD PTR [rax+24], rcx + +; 136 : context->index_pair = index_pair_sse; + + 00196 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0019d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:index_pair_sse + 001a4 48 89 48 58 mov QWORD PTR [rax+88], rcx + +; 137 : } + + 001a8 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 001af 5f pop rdi + 001b0 5d pop rbp + 001b1 c3 ret 0 +load_intrinsic_512 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\intrinsic.c +; COMDAT load_intrinsic_avx +_TEXT SEGMENT +context$ = 224 +load_intrinsic_avx PROC ; COMDAT + +; 90 : { + + 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:__BE01F05B_intrinsic@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 91 : context->add_m2 = addmatrix2_avx; + + 00020 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00027 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix2_avx + 0002e 48 89 08 mov QWORD PTR [rax], rcx + +; 92 : context->add_m3 = addmatrix3_avx; + + 00031 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00038 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix3_avx + 0003f 48 89 48 08 mov QWORD PTR [rax+8], rcx + +; 93 : context->add_m4 = addmatrix4_avx; + + 00043 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0004a 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix4_avx + 00051 48 89 48 10 mov QWORD PTR [rax+16], rcx + +; 94 : context->transpose_23 = transpose23; + + 00055 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0005c 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose23 + 00063 48 89 48 68 mov QWORD PTR [rax+104], rcx + +; 95 : context->transpose_24 = transpose24; + + 00067 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0006e 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose24 + 00075 48 89 48 70 mov QWORD PTR [rax+112], rcx + +; 96 : context->transpose_32 = transpose32; + + 00079 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00080 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose32 + 00087 48 89 48 78 mov QWORD PTR [rax+120], rcx + +; 97 : context->transpose_33 = transpose33; + + 0008b 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00092 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose33 + 00099 48 89 88 80 00 + 00 00 mov QWORD PTR [rax+128], rcx + +; 98 : context->transpose_34 = transpose34; + + 000a0 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000a7 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose34 + 000ae 48 89 88 88 00 + 00 00 mov QWORD PTR [rax+136], rcx + +; 99 : context->transpose_42 = transpose42; + + 000b5 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000bc 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose42 + 000c3 48 89 88 90 00 + 00 00 mov QWORD PTR [rax+144], rcx + +; 100 : context->transpose_43 = transpose43; + + 000ca 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000d1 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose43 + 000d8 48 89 88 98 00 + 00 00 mov QWORD PTR [rax+152], rcx + +; 101 : context->transpose_44 = transpose44; + + 000df 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000e6 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose44 + 000ed 48 89 88 a0 00 + 00 00 mov QWORD PTR [rax+160], rcx + +; 102 : context->normalize_3 = normalize; + + 000f4 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000fb 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:normalize + 00102 48 89 48 60 mov QWORD PTR [rax+96], rcx + +; 103 : context->det_matrix33 = det_mat3; + + 00106 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0010d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:det_mat3 + 00114 48 89 48 20 mov QWORD PTR [rax+32], rcx + +; 104 : context->det_matrix44 = det_mat4; + + 00118 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0011f 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:det_mat4 + 00126 48 89 48 28 mov QWORD PTR [rax+40], rcx + +; 105 : context->dot_31 = dot_31_avx; + + 0012a 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00131 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_31_avx + 00138 48 89 48 30 mov QWORD PTR [rax+48], rcx + +; 106 : context->dot_32 = dot_32_avx; + + 0013c 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00143 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_32_avx + 0014a 48 89 48 38 mov QWORD PTR [rax+56], rcx + +; 107 : context->dot_41 = dot_41_avx; + + 0014e 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00155 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_41_avx + 0015c 48 89 48 40 mov QWORD PTR [rax+64], rcx + +; 108 : context->dot_42 = dot_42_avx; + + 00160 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00167 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_42_avx + 0016e 48 89 48 48 mov QWORD PTR [rax+72], rcx + +; 109 : context->dot_43 = dot_43_avx; + + 00172 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00179 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_43_avx + 00180 48 89 48 50 mov QWORD PTR [rax+80], rcx + +; 110 : context->city_hash_simplify = city_hash_simplify_sse; + + 00184 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0018b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse + 00192 48 89 48 18 mov QWORD PTR [rax+24], rcx + +; 111 : context->index_pair = index_pair_sse; + + 00196 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0019d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:index_pair_sse + 001a4 48 89 48 58 mov QWORD PTR [rax+88], rcx + +; 112 : } + + 001a8 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 001af 5f pop rdi + 001b0 5d pop rbp + 001b1 c3 ret 0 +load_intrinsic_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\intrinsic.c +; COMDAT load_intrinsic_sse +_TEXT SEGMENT +context$ = 224 +load_intrinsic_sse PROC ; COMDAT + +; 65 : { + + 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:__BE01F05B_intrinsic@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 66 : context->add_m2 = addmatrix2_sse; + + 00020 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00027 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix2_sse + 0002e 48 89 08 mov QWORD PTR [rax], rcx + +; 67 : context->add_m3 = addmatrix3_sse; + + 00031 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00038 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix3_sse + 0003f 48 89 48 08 mov QWORD PTR [rax+8], rcx + +; 68 : context->add_m4 = addmatrix4_sse; + + 00043 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0004a 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:addmatrix4_sse + 00051 48 89 48 10 mov QWORD PTR [rax+16], rcx + +; 69 : context->transpose_23 = transpose23; + + 00055 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0005c 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose23 + 00063 48 89 48 68 mov QWORD PTR [rax+104], rcx + +; 70 : context->transpose_24 = transpose24; + + 00067 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0006e 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose24 + 00075 48 89 48 70 mov QWORD PTR [rax+112], rcx + +; 71 : context->transpose_32 = transpose32; + + 00079 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00080 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose32 + 00087 48 89 48 78 mov QWORD PTR [rax+120], rcx + +; 72 : context->transpose_33 = transpose33; + + 0008b 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00092 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose33 + 00099 48 89 88 80 00 + 00 00 mov QWORD PTR [rax+128], rcx + +; 73 : context->transpose_34 = transpose34; + + 000a0 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000a7 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose34 + 000ae 48 89 88 88 00 + 00 00 mov QWORD PTR [rax+136], rcx + +; 74 : context->transpose_42 = transpose42; + + 000b5 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000bc 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose42 + 000c3 48 89 88 90 00 + 00 00 mov QWORD PTR [rax+144], rcx + +; 75 : context->transpose_43 = transpose43; + + 000ca 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000d1 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose43 + 000d8 48 89 88 98 00 + 00 00 mov QWORD PTR [rax+152], rcx + +; 76 : context->transpose_44 = transpose44; + + 000df 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000e6 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:transpose44 + 000ed 48 89 88 a0 00 + 00 00 mov QWORD PTR [rax+160], rcx + +; 77 : context->normalize_3 = normalize; + + 000f4 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 000fb 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:normalize + 00102 48 89 48 60 mov QWORD PTR [rax+96], rcx + +; 78 : context->det_matrix33 = det_mat3; + + 00106 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0010d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:det_mat3 + 00114 48 89 48 20 mov QWORD PTR [rax+32], rcx + +; 79 : context->det_matrix44 = det_mat4; + + 00118 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0011f 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:det_mat4 + 00126 48 89 48 28 mov QWORD PTR [rax+40], rcx + +; 80 : context->dot_31 = dot_31_sse; + + 0012a 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00131 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_31_sse + 00138 48 89 48 30 mov QWORD PTR [rax+48], rcx + +; 81 : context->dot_32 = dot_32_sse; + + 0013c 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00143 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_32_sse + 0014a 48 89 48 38 mov QWORD PTR [rax+56], rcx + +; 82 : context->dot_41 = dot_41_sse; + + 0014e 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00155 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_41_sse + 0015c 48 89 48 40 mov QWORD PTR [rax+64], rcx + +; 83 : context->dot_42 = dot_42_sse; + + 00160 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00167 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_42_sse + 0016e 48 89 48 48 mov QWORD PTR [rax+72], rcx + +; 84 : context->dot_43 = dot_43_sse; + + 00172 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 00179 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:dot_43_sse + 00180 48 89 48 50 mov QWORD PTR [rax+80], rcx + +; 85 : context->city_hash_simplify = city_hash_simplify_sse; + + 00184 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0018b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse + 00192 48 89 48 18 mov QWORD PTR [rax+24], rcx + +; 86 : context->index_pair = index_pair_sse; + + 00196 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR context$[rbp] + 0019d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:index_pair_sse + 001a4 48 89 48 58 mov QWORD PTR [rax+88], rcx + +; 87 : } + + 001a8 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 001af 5f pop rdi + 001b0 5d pop rbp + 001b1 c3 ret 0 +load_intrinsic_sse ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\intrinsic.c +; COMDAT load_intrinsic_function +_TEXT SEGMENT +context$ = 8 +intrinsic_context$ = 256 +load_intrinsic_function PROC ; COMDAT + +; 43 : { + +$LN11: + 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:__BE01F05B_intrinsic@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 44 : ssc_null_assert(intrinsic_context); + + 00020 48 83 bd 00 01 + 00 00 00 cmp QWORD PTR intrinsic_context$[rbp], 0 + 00028 75 1c jne SHORT $LN10@load_intri + 0002a 41 b8 2c 00 00 + 00 mov r8d, 44 ; 0000002cH + 00030 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@LKFICGJK@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 00037 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@ + 0003e ff 15 00 00 00 + 00 call QWORD PTR __imp__wassert + 00044 33 c0 xor eax, eax +$LN10@load_intri: + +; 45 : +; 46 : ssc_intrinsic *context = (ssc_intrinsic *)intrinsic_context; + + 00046 48 8b 85 00 01 + 00 00 mov rax, QWORD PTR intrinsic_context$[rbp] + 0004d 48 89 45 08 mov QWORD PTR context$[rbp], rax + +; 47 : +; 48 : if (check_isa(AVX512)) { + + 00051 b9 04 00 00 00 mov ecx, 4 + 00056 e8 00 00 00 00 call check_isa + 0005b 85 c0 test eax, eax + 0005d 74 13 je SHORT $LN2@load_intri + +; 49 : load_intrinsic_512(context); + + 0005f 48 8b 4d 08 mov rcx, QWORD PTR context$[rbp] + 00063 e8 00 00 00 00 call load_intrinsic_512 + 00068 90 npad 1 + +; 50 : return 3; + + 00069 b8 03 00 00 00 mov eax, 3 + 0006e eb 5b jmp SHORT $LN1@load_intri + 00070 eb 57 jmp SHORT $LN3@load_intri +$LN2@load_intri: + +; 51 : } else if (check_isa(AVX256)) { + + 00072 b9 02 00 00 00 mov ecx, 2 + 00077 e8 00 00 00 00 call check_isa + 0007c 85 c0 test eax, eax + 0007e 74 13 je SHORT $LN4@load_intri + +; 52 : load_intrinsic_avx(context); + + 00080 48 8b 4d 08 mov rcx, QWORD PTR context$[rbp] + 00084 e8 00 00 00 00 call load_intrinsic_avx + 00089 90 npad 1 + +; 53 : return 2; + + 0008a b8 02 00 00 00 mov eax, 2 + 0008f eb 3a jmp SHORT $LN1@load_intri + 00091 eb 36 jmp SHORT $LN5@load_intri +$LN4@load_intri: + +; 54 : } else if (check_isa(SSE)) { + + 00093 b9 10 00 00 00 mov ecx, 16 + 00098 e8 00 00 00 00 call check_isa + 0009d 85 c0 test eax, eax + 0009f 74 13 je SHORT $LN6@load_intri + +; 55 : load_intrinsic_sse(context); + + 000a1 48 8b 4d 08 mov rcx, QWORD PTR context$[rbp] + 000a5 e8 00 00 00 00 call load_intrinsic_sse + 000aa 90 npad 1 + +; 56 : return 1; + + 000ab b8 01 00 00 00 mov eax, 1 + 000b0 eb 19 jmp SHORT $LN1@load_intri + 000b2 eb 15 jmp SHORT $LN7@load_intri +$LN6@load_intri: + +; 57 : } else if (check_isa(NEON)) { + + 000b4 b9 05 00 00 00 mov ecx, 5 + 000b9 e8 00 00 00 00 call check_isa + 000be 85 c0 test eax, eax + 000c0 74 07 je SHORT $LN8@load_intri + +; 58 : return -1; + + 000c2 b8 ff ff ff ff mov eax, -1 + 000c7 eb 02 jmp SHORT $LN1@load_intri +$LN8@load_intri: +$LN7@load_intri: +$LN5@load_intri: +$LN3@load_intri: + +; 59 : } +; 60 : +; 61 : return 0; + + 000c9 33 c0 xor eax, eax +$LN1@load_intri: + +; 62 : } + + 000cb 48 8d a5 e8 00 + 00 00 lea rsp, QWORD PTR [rbp+232] + 000d2 5f pop rdi + 000d3 5d pop rbp + 000d4 c3 ret 0 +load_intrinsic_function ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\include\immintrin.h +; COMDAT __check_isa_support +_TEXT SEGMENT +tv69 = 192 +tv71 = 196 +__x$ = 240 +__v$ = 248 +__check_isa_support PROC ; COMDAT + +; 109 : { return ((__x & __isa_inverted) == 0) && ((unsigned char)__avx10_version >= __v); } + +$LN7: + 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:__85982951_immintrin@h + 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00022 90 npad 1 + 00023 8b 85 f0 00 00 + 00 mov eax, DWORD PTR __x$[rbp] + 00029 48 23 05 00 00 + 00 00 and rax, QWORD PTR __isa_inverted + 00030 48 85 c0 test rax, rax + 00033 75 1b jne SHORT $LN3@check_isa_ + 00035 0f b6 05 00 00 + 00 00 movzx eax, BYTE PTR __avx10_version + 0003c 3b 85 f8 00 00 + 00 cmp eax, DWORD PTR __v$[rbp] + 00042 72 0c jb SHORT $LN3@check_isa_ + 00044 c7 85 c0 00 00 + 00 01 00 00 00 mov DWORD PTR tv69[rbp], 1 + 0004e eb 0a jmp SHORT $LN4@check_isa_ +$LN3@check_isa_: + 00050 c7 85 c0 00 00 + 00 00 00 00 00 mov DWORD PTR tv69[rbp], 0 +$LN4@check_isa_: + 0005a 83 bd c0 00 00 + 00 00 cmp DWORD PTR tv69[rbp], 0 + 00061 75 0c jne SHORT $LN5@check_isa_ + 00063 c7 85 c4 00 00 + 00 00 00 00 00 mov DWORD PTR tv71[rbp], 0 + 0006d eb 0a jmp SHORT $LN6@check_isa_ +$LN5@check_isa_: + 0006f c7 85 c4 00 00 + 00 01 00 00 00 mov DWORD PTR tv71[rbp], 1 +$LN6@check_isa_: + 00079 0f b6 85 c4 00 + 00 00 movzx eax, BYTE PTR tv71[rbp] + 00080 48 8d a5 d8 00 + 00 00 lea rsp, QWORD PTR [rbp+216] + 00087 5f pop rdi + 00088 5d pop rbp + 00089 c3 ret 0 +__check_isa_support ENDP +_TEXT ENDS +END diff --git a/StgSharp.C/x64/Debug/intrinsic.obj b/StgSharp.C/x64/Debug/intrinsic.obj new file mode 100644 index 00000000..4c75db74 Binary files /dev/null and b/StgSharp.C/x64/Debug/intrinsic.obj differ diff --git a/StgSharp.C/x64/Debug/intrinsic.sbr b/StgSharp.C/x64/Debug/intrinsic.sbr new file mode 100644 index 00000000..4b25a191 Binary files /dev/null and b/StgSharp.C/x64/Debug/intrinsic.sbr differ diff --git a/StgSharp.C/x64/Debug/mat2.cod b/StgSharp.C/x64/Debug/mat2.cod new file mode 100644 index 00000000..6bec1801 --- /dev/null +++ b/StgSharp.C/x64/Debug/mat2.cod @@ -0,0 +1,634 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__5A8332CE_isa_availability@h DB 01H +__EB6C2FE1_ssc_intrinsic@h DB 01H +__5972891A_mat2@c DB 01H +msvcjmc ENDS +PUBLIC addmatrix2_sse +PUBLIC addmatrix2_avx +PUBLIC transpose23 +PUBLIC transpose24 +PUBLIC __JustMyCode_Default +EXTRN _RTC_InitBase:PROC +EXTRN _RTC_Shutdown:PROC +EXTRN __CheckForDebuggerJustMyCode:PROC +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix2_sse DD imagerel $LN3 + DD imagerel $LN3+254 + DD imagerel $unwind$addmatrix2_sse +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix2_avx DD imagerel $LN3 + DD imagerel $LN3+169 + DD imagerel $unwind$addmatrix2_avx +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose23 DD imagerel $LN3 + DD imagerel $LN3+271 + DD imagerel $unwind$transpose23 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose24 DD imagerel $LN3 + DD imagerel $LN3+305 + DD imagerel $unwind$transpose24 +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$transpose24 DD 025051801H + DD 01132318H + DD 0700c0029H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$transpose23 DD 025051801H + DD 01132318H + DD 0700c0029H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix2_avx DD 02d062801H + DD 011a231fH + DD 07013002aH + DD 0d0115012H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix2_sse DD 025051d01H + DD 0118231dH + DD 070110029H + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat2.c +; COMDAT transpose24 +_TEXT SEGMENT +t0$ = 16 +t1$ = 64 +source$ = 320 +target$ = 328 +transpose24 PROC ; COMDAT + +; 17 : { + +$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 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:__5972891A_mat2@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 18 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 19 : _MM_SHUFFLE(1, 0, 1, 0)); +; 20 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 01 imul rax, rax, 1 + 0006b 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00072 48 03 c8 add rcx, rax + 00075 48 8b c1 mov rax, rcx + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b b8 10 00 00 00 mov eax, 16 + 00080 48 6b c0 00 imul rax, rax, 0 + 00084 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0008b 48 03 c8 add rcx, rax + 0008e 48 8b c1 mov rax, rcx + 00091 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00094 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00098 0f 28 c1 movaps xmm0, xmm1 + 0009b 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0 + +; 21 : _MM_SHUFFLE(3, 2, 3, 2)); +; 22 : +; 23 : target->column[0] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + + 0009f 0f 57 c0 xorps xmm0, xmm0 + 000a2 0f 28 4d 10 movaps xmm1, XMMWORD PTR t0$[rbp] + 000a6 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H + 000aa 0f 28 c1 movaps xmm0, xmm1 + 000ad b8 10 00 00 00 mov eax, 16 + 000b2 48 6b c0 00 imul rax, rax, 0 + 000b6 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000bd 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 24 : target->column[1] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); + + 000c1 0f 57 c0 xorps xmm0, xmm0 + 000c4 0f 28 4d 10 movaps xmm1, XMMWORD PTR t0$[rbp] + 000c8 0f c6 c8 dd shufps xmm1, xmm0, 221 ; 000000ddH + 000cc 0f 28 c1 movaps xmm0, xmm1 + 000cf b8 10 00 00 00 mov eax, 16 + 000d4 48 6b c0 01 imul rax, rax, 1 + 000d8 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000df 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 25 : target->column[2] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + + 000e3 0f 57 c0 xorps xmm0, xmm0 + 000e6 0f 28 4d 40 movaps xmm1, XMMWORD PTR t1$[rbp] + 000ea 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H + 000ee 0f 28 c1 movaps xmm0, xmm1 + 000f1 b8 10 00 00 00 mov eax, 16 + 000f6 48 6b c0 02 imul rax, rax, 2 + 000fa 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00101 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 26 : target->column[3] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); + + 00105 0f 57 c0 xorps xmm0, xmm0 + 00108 0f 28 4d 40 movaps xmm1, XMMWORD PTR t1$[rbp] + 0010c 0f c6 c8 dd shufps xmm1, xmm0, 221 ; 000000ddH + 00110 0f 28 c1 movaps xmm0, xmm1 + 00113 b8 10 00 00 00 mov eax, 16 + 00118 48 6b c0 03 imul rax, rax, 3 + 0011c 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00123 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 27 : } + + 00127 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 0012e 5f pop rdi + 0012f 5d pop rbp + 00130 c3 ret 0 +transpose24 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat2.c +; COMDAT transpose23 +_TEXT SEGMENT +t0$ = 16 +t1$ = 64 +source$ = 320 +target$ = 328 +transpose23 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 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:__5972891A_mat2@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 6 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 7 : _MM_SHUFFLE(1, 0, 1, 0)); +; 8 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 01 imul rax, rax, 1 + 0006b 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00072 48 03 c8 add rcx, rax + 00075 48 8b c1 mov rax, rcx + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b b8 10 00 00 00 mov eax, 16 + 00080 48 6b c0 00 imul rax, rax, 0 + 00084 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0008b 48 03 c8 add rcx, rax + 0008e 48 8b c1 mov rax, rcx + 00091 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00094 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00098 0f 28 c1 movaps xmm0, xmm1 + 0009b 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0 + +; 9 : _MM_SHUFFLE(3, 2, 3, 2)); +; 10 : +; 11 : target->column[0] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + + 0009f 0f 57 c0 xorps xmm0, xmm0 + 000a2 0f 28 4d 10 movaps xmm1, XMMWORD PTR t0$[rbp] + 000a6 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H + 000aa 0f 28 c1 movaps xmm0, xmm1 + 000ad b8 10 00 00 00 mov eax, 16 + 000b2 48 6b c0 00 imul rax, rax, 0 + 000b6 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000bd 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 12 : target->column[1] = _mm_shuffle_ps(t0, zero_vec, _MM_SHUFFLE(3, 1, 3, 1)); + + 000c1 0f 57 c0 xorps xmm0, xmm0 + 000c4 0f 28 4d 10 movaps xmm1, XMMWORD PTR t0$[rbp] + 000c8 0f c6 c8 dd shufps xmm1, xmm0, 221 ; 000000ddH + 000cc 0f 28 c1 movaps xmm0, xmm1 + 000cf b8 10 00 00 00 mov eax, 16 + 000d4 48 6b c0 01 imul rax, rax, 1 + 000d8 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000df 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 13 : target->column[2] = _mm_shuffle_ps(t1, zero_vec, _MM_SHUFFLE(2, 0, 2, 0)); + + 000e3 0f 57 c0 xorps xmm0, xmm0 + 000e6 0f 28 4d 40 movaps xmm1, XMMWORD PTR t1$[rbp] + 000ea 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H + 000ee 0f 28 c1 movaps xmm0, xmm1 + 000f1 b8 10 00 00 00 mov eax, 16 + 000f6 48 6b c0 02 imul rax, rax, 2 + 000fa 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00101 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 14 : } + + 00105 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 0010c 5f pop rdi + 0010d 5d pop rbp + 0010e c3 ret 0 +transpose23 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat2.c +; COMDAT addmatrix2_avx +_TEXT SEGMENT +temp$ = 32 +left$ = 336 +right$ = 344 +ans$ = 352 +addmatrix2_avx PROC ; COMDAT + +; 39 : { + +$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 01 + 00 00 sub rsp, 336 ; 00000150H + 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:__5972891A_mat2@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 40 : __m256 temp = _mm256_add_ps(ALIGN256(left->column[0]), ALIGN256(right->column[0])); + + 00035 b8 10 00 00 00 mov eax, 16 + 0003a 48 6b c0 00 imul rax, rax, 0 + 0003e 49 8b 8d 58 01 + 00 00 mov rcx, QWORD PTR right$[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 b8 10 00 00 00 mov eax, 16 + 00054 48 6b c0 00 imul rax, rax, 0 + 00058 49 8b 8d 50 01 + 00 00 mov rcx, QWORD PTR left$[r13] + 0005f 48 03 c8 add rcx, rax + 00062 48 8b c1 mov rax, rcx + 00065 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 00069 c5 f4 58 c0 vaddps ymm0, ymm1, ymm0 + 0006d c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 41 : _mm256_storeu_ps(&ans->m[0][0], temp); + + 00072 b8 08 00 00 00 mov eax, 8 + 00077 48 6b c0 00 imul rax, rax, 0 + 0007b 49 8b 8d 60 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 00082 48 03 c8 add rcx, rax + 00085 48 8b c1 mov rax, rcx + 00088 b9 04 00 00 00 mov ecx, 4 + 0008d 48 6b c9 00 imul rcx, rcx, 0 + 00091 48 03 c1 add rax, rcx + 00094 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00099 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 42 : } + + 0009d 49 8d a5 30 01 + 00 00 lea rsp, QWORD PTR [r13+304] + 000a4 5f pop rdi + 000a5 5d pop rbp + 000a6 41 5d pop r13 + 000a8 c3 ret 0 +addmatrix2_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat2.c +; COMDAT addmatrix2_sse +_TEXT SEGMENT +temp0$ = 16 +temp1$ = 64 +left$ = 320 +right$ = 328 +ans$ = 336 +addmatrix2_sse PROC ; COMDAT + +; 30 : { + +$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 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:__5972891A_mat2@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 31 : __m128 temp0 = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + + 0002a b8 10 00 00 00 mov eax, 16 + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR right$[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 b8 10 00 00 00 mov eax, 16 + 00048 48 6b c0 00 imul rax, rax, 0 + 0004c 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00053 48 03 c8 add rcx, rax + 00056 48 8b c1 mov rax, rcx + 00059 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0005c 0f 58 c8 addps xmm1, xmm0 + 0005f 0f 28 c1 movaps xmm0, xmm1 + 00062 0f 29 45 10 movaps XMMWORD PTR temp0$[rbp], xmm0 + +; 32 : __m128 temp1 = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + 00066 b8 10 00 00 00 mov eax, 16 + 0006b 48 6b c0 01 imul rax, rax, 1 + 0006f 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00076 48 03 c8 add rcx, rax + 00079 48 8b c1 mov rax, rcx + 0007c 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007f b8 10 00 00 00 mov eax, 16 + 00084 48 6b c0 01 imul rax, rax, 1 + 00088 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 0008f 48 03 c8 add rcx, rax + 00092 48 8b c1 mov rax, rcx + 00095 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00098 0f 58 c8 addps xmm1, xmm0 + 0009b 0f 28 c1 movaps xmm0, xmm1 + 0009e 0f 29 45 40 movaps XMMWORD PTR temp1$[rbp], xmm0 + +; 33 : +; 34 : _mm_storeu_ps(&ans->m[0][0], temp0); + + 000a2 b8 08 00 00 00 mov eax, 8 + 000a7 48 6b c0 00 imul rax, rax, 0 + 000ab 48 8b 8d 50 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000b2 48 03 c8 add rcx, rax + 000b5 48 8b c1 mov rax, rcx + 000b8 b9 04 00 00 00 mov ecx, 4 + 000bd 48 6b c9 00 imul rcx, rcx, 0 + 000c1 48 03 c1 add rax, rcx + 000c4 0f 28 45 10 movaps xmm0, XMMWORD PTR temp0$[rbp] + 000c8 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 35 : _mm_storeu_ps(&ans->m[0][1], temp1); + + 000cb b8 08 00 00 00 mov eax, 8 + 000d0 48 6b c0 00 imul rax, rax, 0 + 000d4 48 8b 8d 50 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000db 48 03 c8 add rcx, rax + 000de 48 8b c1 mov rax, rcx + 000e1 b9 04 00 00 00 mov ecx, 4 + 000e6 48 6b c9 01 imul rcx, rcx, 1 + 000ea 48 03 c1 add rax, rcx + 000ed 0f 28 45 40 movaps xmm0, XMMWORD PTR temp1$[rbp] + 000f1 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 36 : } + + 000f4 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 000fb 5f pop rdi + 000fc 5d pop rbp + 000fd c3 ret 0 +addmatrix2_sse ENDP +_TEXT ENDS +END diff --git a/StgSharp.C/x64/Debug/mat2.obj b/StgSharp.C/x64/Debug/mat2.obj new file mode 100644 index 00000000..8e00bbdd Binary files /dev/null and b/StgSharp.C/x64/Debug/mat2.obj differ diff --git a/StgSharp.C/x64/Debug/mat2.sbr b/StgSharp.C/x64/Debug/mat2.sbr new file mode 100644 index 00000000..8350f66a Binary files /dev/null and b/StgSharp.C/x64/Debug/mat2.sbr differ diff --git a/StgSharp.C/x64/Debug/mat3.cod b/StgSharp.C/x64/Debug/mat3.cod new file mode 100644 index 00000000..2ce0d7d0 --- /dev/null +++ b/StgSharp.C/x64/Debug/mat3.cod @@ -0,0 +1,1218 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__5A8332CE_isa_availability@h DB 01H +__EB6C2FE1_ssc_intrinsic@h DB 01H +__58B0E32D_mat3@c DB 01H +msvcjmc ENDS +PUBLIC addmatrix3_sse +PUBLIC addmatrix3_avx +PUBLIC addmatrix3_512 +PUBLIC transpose32 +PUBLIC transpose33 +PUBLIC transpose34 +PUBLIC det_mat3 +PUBLIC det_mat3_internal +PUBLIC __JustMyCode_Default +EXTRN _RTC_CheckStackVars:PROC +EXTRN _RTC_InitBase:PROC +EXTRN _RTC_Shutdown:PROC +EXTRN __CheckForDebuggerJustMyCode:PROC +EXTRN _fltused:DWORD +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix3_sse DD imagerel $LN3 + DD imagerel $LN3+355 + DD imagerel $unwind$addmatrix3_sse +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix3_avx DD imagerel $LN3 + DD imagerel $LN3+240 + DD imagerel $unwind$addmatrix3_avx +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix3_512 DD imagerel $LN3 + DD imagerel $LN3+133 + DD imagerel $unwind$addmatrix3_512 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose32 DD imagerel $LN3 + DD imagerel $LN3+205 + DD imagerel $unwind$transpose32 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose33 DD imagerel $LN3 + DD imagerel $LN3+340 + DD imagerel $unwind$transpose33 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose34 DD imagerel $LN3 + DD imagerel $LN3+372 + DD imagerel $unwind$transpose34 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$det_mat3 DD imagerel $LN3 + DD imagerel $LN3+154 + DD imagerel $unwind$det_mat3 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$det_mat3_internal DD imagerel $LN3 + DD imagerel $LN3+371 + DD imagerel $unwind$det_mat3_internal +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$det_mat3_internal DD 035053601H + DD 0118331dH + DD 070110049H + DD 05010H +xdata ENDS +; COMDAT CONST +CONST SEGMENT +det_mat3_internal$rtcName$0 DB 072H + DB 065H + DB 074H + DB 00H + ORG $+12 +det_mat3_internal$rtcVarDesc DD 0160H + DD 010H + DQ FLAT:det_mat3_internal$rtcName$0 + ORG $+48 +det_mat3_internal$rtcFrameData DD 01H + DD 00H + DQ FLAT:det_mat3_internal$rtcVarDesc +CONST ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$det_mat3 DD 035051801H + DD 01133318H + DD 0700c0031H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$transpose34 DD 025051801H + DD 01132318H + DD 0700c0035H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$transpose33 DD 025051801H + DD 01132318H + DD 0700c0035H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$transpose32 DD 025051801H + DD 01132318H + DD 0700c0029H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix3_512 DD 02d062801H + DD 011a231fH + DD 070130036H + DD 0d0115012H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix3_avx DD 02d062801H + DD 011a231fH + DD 070130030H + DD 0d0115012H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix3_sse DD 025051d01H + DD 0118231dH + DD 07011002fH + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT det_mat3_internal +_TEXT SEGMENT +addc1$ = 16 +addc2$ = 64 +subc1$ = 112 +subc2$ = 160 +cache$ = 208 +sub$ = 256 +ret$ = 304 +c0$ = 560 +c1$ = 568 +c2$ = 576 +det_mat3_internal PROC ; COMDAT + +; 45 : { + +$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 48 02 + 00 00 sub rsp, 584 ; 00000248H + 00018 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] + 0001d 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48] + 00022 b9 56 00 00 00 mov ecx, 86 ; 00000056H + 00027 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002c f3 ab rep stosd + 0002e 48 8b 8c 24 68 + 02 00 00 mov rcx, QWORD PTR [rsp+616] + 00036 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 0003d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00042 90 npad 1 + +; 46 : //let adding row aligned +; 47 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + + 00043 48 8b 85 38 02 + 00 00 mov rax, QWORD PTR c1$[rbp] + 0004a 48 8b 8d 38 02 + 00 00 mov rcx, QWORD PTR c1$[rbp] + 00051 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00054 0f c6 01 c9 shufps xmm0, XMMWORD PTR [rcx], 201 ; 000000c9H + 00058 0f 29 45 10 movaps XMMWORD PTR addc1$[rbp], xmm0 + +; 48 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + + 0005c 48 8b 85 40 02 + 00 00 mov rax, QWORD PTR c2$[rbp] + 00063 48 8b 8d 40 02 + 00 00 mov rcx, QWORD PTR c2$[rbp] + 0006a 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0006d 0f c6 01 d2 shufps xmm0, XMMWORD PTR [rcx], 210 ; 000000d2H + 00071 0f 29 45 40 movaps XMMWORD PTR addc2$[rbp], xmm0 + +; 49 : +; 50 : //let sub row aligned +; 51 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); + + 00075 48 8b 85 38 02 + 00 00 mov rax, QWORD PTR c1$[rbp] + 0007c 48 8b 8d 38 02 + 00 00 mov rcx, QWORD PTR c1$[rbp] + 00083 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00086 0f c6 01 d2 shufps xmm0, XMMWORD PTR [rcx], 210 ; 000000d2H + 0008a 0f 29 45 70 movaps XMMWORD PTR subc1$[rbp], xmm0 + +; 52 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); + + 0008e 48 8b 85 40 02 + 00 00 mov rax, QWORD PTR c2$[rbp] + 00095 48 8b 8d 40 02 + 00 00 mov rcx, QWORD PTR c2$[rbp] + 0009c 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0009f 0f c6 01 c9 shufps xmm0, XMMWORD PTR [rcx], 201 ; 000000c9H + 000a3 0f 29 85 a0 00 + 00 00 movaps XMMWORD PTR subc2$[rbp], xmm0 + +; 53 : +; 54 : //multple all add row +; 55 : __m128 cache = _mm_mul_ps(c0, addc1); + + 000aa 48 8b 85 30 02 + 00 00 mov rax, QWORD PTR c0$[rbp] + 000b1 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000b4 0f 59 45 10 mulps xmm0, XMMWORD PTR addc1$[rbp] + 000b8 0f 29 85 d0 00 + 00 00 movaps XMMWORD PTR cache$[rbp], xmm0 + +; 56 : cache = _mm_mul_ps(cache, addc2); + + 000bf 0f 28 85 d0 00 + 00 00 movaps xmm0, XMMWORD PTR cache$[rbp] + 000c6 0f 59 45 40 mulps xmm0, XMMWORD PTR addc2$[rbp] + 000ca 0f 29 85 d0 00 + 00 00 movaps XMMWORD PTR cache$[rbp], xmm0 + +; 57 : +; 58 : //multiple all sub row +; 59 : __m128 sub = _mm_mul_ps(c0, subc1); + + 000d1 48 8b 85 30 02 + 00 00 mov rax, QWORD PTR c0$[rbp] + 000d8 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000db 0f 59 45 70 mulps xmm0, XMMWORD PTR subc1$[rbp] + 000df 0f 29 85 00 01 + 00 00 movaps XMMWORD PTR sub$[rbp], xmm0 + +; 60 : sub = _mm_mul_ps(sub, subc2); + + 000e6 0f 28 85 00 01 + 00 00 movaps xmm0, XMMWORD PTR sub$[rbp] + 000ed 0f 59 85 a0 00 + 00 00 mulps xmm0, XMMWORD PTR subc2$[rbp] + 000f4 0f 29 85 00 01 + 00 00 movaps XMMWORD PTR sub$[rbp], xmm0 + +; 61 : +; 62 : //main-corner sub sub-corner +; 63 : cache = _mm_sub_ps(cache, sub); + + 000fb 0f 28 85 d0 00 + 00 00 movaps xmm0, XMMWORD PTR cache$[rbp] + 00102 0f 5c 85 00 01 + 00 00 subps xmm0, XMMWORD PTR sub$[rbp] + 00109 0f 29 85 d0 00 + 00 00 movaps XMMWORD PTR cache$[rbp], xmm0 + +; 64 : +; 65 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + + 00110 0f 28 85 d0 00 + 00 00 movaps xmm0, XMMWORD PTR cache$[rbp] + 00117 f2 0f 7c 85 d0 + 00 00 00 haddps xmm0, XMMWORD PTR cache$[rbp] + 0011f 0f 29 85 30 01 + 00 00 movaps XMMWORD PTR ret$[rbp], xmm0 + +; 66 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + + 00126 0f 28 85 30 01 + 00 00 movaps xmm0, XMMWORD PTR ret$[rbp] + 0012d 0f 58 85 d0 00 + 00 00 addps xmm0, XMMWORD PTR cache$[rbp] + 00134 0f 29 85 30 01 + 00 00 movaps XMMWORD PTR ret$[rbp], xmm0 + +; 67 : +; 68 : return ret.m128_f32[2]; + + 0013b b8 04 00 00 00 mov eax, 4 + 00140 48 6b c0 02 imul rax, rax, 2 + 00144 f3 0f 10 84 05 + 30 01 00 00 movss xmm0, DWORD PTR ret$[rbp+rax] + +; 69 : } + + 0014d f3 0f 7f 44 24 + 20 movdqu XMMWORD PTR [rsp+32], xmm0 + 00153 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00157 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:det_mat3_internal$rtcFrameData + 0015e e8 00 00 00 00 call _RTC_CheckStackVars + 00163 f3 0f 6f 44 24 + 20 movdqu xmm0, XMMWORD PTR [rsp+32] + 00169 48 8d a5 18 02 + 00 00 lea rsp, QWORD PTR [rbp+536] + 00170 5f pop rdi + 00171 5d pop rbp + 00172 c3 ret 0 +det_mat3_internal ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT det_mat3 +_TEXT SEGMENT +$T1 = 208 +$T2 = 256 +$T3 = 304 +source$ = 368 +transpose$ = 376 +det_mat3 PROC ; COMDAT + +; 72 : { + +$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 88 01 + 00 00 sub rsp, 392 ; 00000188H + 00013 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] + 00018 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 73 : return det_mat3_internal(source->column[0], source->column[1], source->column[2]); + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 02 imul rax, rax, 2 + 0002e 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax] + 00039 0f 11 85 30 01 + 00 00 movups XMMWORD PTR $T3[rbp], xmm0 + 00040 b8 10 00 00 00 mov eax, 16 + 00045 48 6b c0 01 imul rax, rax, 1 + 00049 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00050 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax] + 00054 0f 11 85 00 01 + 00 00 movups XMMWORD PTR $T2[rbp], xmm0 + 0005b b8 10 00 00 00 mov eax, 16 + 00060 48 6b c0 00 imul rax, rax, 0 + 00064 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0006b 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax] + 0006f 0f 11 85 d0 00 + 00 00 movups XMMWORD PTR $T1[rbp], xmm0 + 00076 4c 8d 85 30 01 + 00 00 lea r8, QWORD PTR $T3[rbp] + 0007d 48 8d 95 00 01 + 00 00 lea rdx, QWORD PTR $T2[rbp] + 00084 48 8d 8d d0 00 + 00 00 lea rcx, QWORD PTR $T1[rbp] + 0008b e8 00 00 00 00 call det_mat3_internal + +; 74 : } + + 00090 48 8d a5 58 01 + 00 00 lea rsp, QWORD PTR [rbp+344] + 00097 5f pop rdi + 00098 5d pop rbp + 00099 c3 ret 0 +det_mat3 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT transpose34 +_TEXT SEGMENT +t0$ = 16 +t1$ = 64 +t2$ = 112 +t3$ = 160 +source$ = 416 +target$ = 424 +transpose34 PROC ; COMDAT + +; 30 : { + +$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 a8 01 + 00 00 sub rsp, 424 ; 000001a8H + 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00018 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 31 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 32 : _MM_SHUFFLE(1, 0, 1, 0)); +; 33 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 01 imul rax, rax, 1 + 0006b 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00072 48 03 c8 add rcx, rax + 00075 48 8b c1 mov rax, rcx + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b b8 10 00 00 00 mov eax, 16 + 00080 48 6b c0 00 imul rax, rax, 0 + 00084 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0008b 48 03 c8 add rcx, rax + 0008e 48 8b c1 mov rax, rcx + 00091 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00094 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00098 0f 28 c1 movaps xmm0, xmm1 + 0009b 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0 + +; 34 : _MM_SHUFFLE(3, 2, 3, 2)); +; 35 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + + 0009f 0f 57 c0 xorps xmm0, xmm0 + 000a2 b8 10 00 00 00 mov eax, 16 + 000a7 48 6b c0 02 imul rax, rax, 2 + 000ab 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000b2 48 03 c8 add rcx, rax + 000b5 48 8b c1 mov rax, rcx + 000b8 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000bb 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 000bf 0f 28 c1 movaps xmm0, xmm1 + 000c2 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0 + +; 36 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(3, 2, 3, 2)); + + 000c6 0f 57 c0 xorps xmm0, xmm0 + 000c9 b8 10 00 00 00 mov eax, 16 + 000ce 48 6b c0 02 imul rax, rax, 2 + 000d2 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000d9 48 03 c8 add rcx, rax + 000dc 48 8b c1 mov rax, rcx + 000df 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000e2 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 000e6 0f 28 c1 movaps xmm0, xmm1 + 000e9 0f 29 85 a0 00 + 00 00 movaps XMMWORD PTR t3$[rbp], xmm0 + +; 37 : +; 38 : target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 000f0 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 000f4 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H + 000f9 b8 10 00 00 00 mov eax, 16 + 000fe 48 6b c0 00 imul rax, rax, 0 + 00102 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00109 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 39 : target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 0010d 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 00111 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH + 00116 b8 10 00 00 00 mov eax, 16 + 0011b 48 6b c0 01 imul rax, rax, 1 + 0011f 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00126 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 40 : target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 0012a 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp] + 0012e 0f c6 85 a0 00 + 00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H + 00136 b8 10 00 00 00 mov eax, 16 + 0013b 48 6b c0 02 imul rax, rax, 2 + 0013f 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00146 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 41 : target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); + + 0014a 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp] + 0014e 0f c6 85 a0 00 + 00 00 dd shufps xmm0, XMMWORD PTR t3$[rbp], 221 ; 000000ddH + 00156 b8 10 00 00 00 mov eax, 16 + 0015b 48 6b c0 03 imul rax, rax, 3 + 0015f 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00166 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 42 : } + + 0016a 48 8d a5 88 01 + 00 00 lea rsp, QWORD PTR [rbp+392] + 00171 5f pop rdi + 00172 5d pop rbp + 00173 c3 ret 0 +transpose34 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT transpose33 +_TEXT SEGMENT +t0$ = 16 +t1$ = 64 +t2$ = 112 +t3$ = 160 +source$ = 416 +target$ = 424 +transpose33 PROC ; COMDAT + +; 16 : { + +$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 a8 01 + 00 00 sub rsp, 424 ; 000001a8H + 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00018 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 17 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 18 : _MM_SHUFFLE(1, 0, 1, 0)); +; 19 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 01 imul rax, rax, 1 + 0006b 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00072 48 03 c8 add rcx, rax + 00075 48 8b c1 mov rax, rcx + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b b8 10 00 00 00 mov eax, 16 + 00080 48 6b c0 00 imul rax, rax, 0 + 00084 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0008b 48 03 c8 add rcx, rax + 0008e 48 8b c1 mov rax, rcx + 00091 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00094 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00098 0f 28 c1 movaps xmm0, xmm1 + 0009b 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0 + +; 20 : _MM_SHUFFLE(3, 2, 3, 2)); +; 21 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + + 0009f 0f 57 c0 xorps xmm0, xmm0 + 000a2 b8 10 00 00 00 mov eax, 16 + 000a7 48 6b c0 02 imul rax, rax, 2 + 000ab 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000b2 48 03 c8 add rcx, rax + 000b5 48 8b c1 mov rax, rcx + 000b8 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000bb 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 000bf 0f 28 c1 movaps xmm0, xmm1 + 000c2 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0 + +; 22 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(3, 2, 3, 2)); + + 000c6 0f 57 c0 xorps xmm0, xmm0 + 000c9 b8 10 00 00 00 mov eax, 16 + 000ce 48 6b c0 02 imul rax, rax, 2 + 000d2 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000d9 48 03 c8 add rcx, rax + 000dc 48 8b c1 mov rax, rcx + 000df 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000e2 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 000e6 0f 28 c1 movaps xmm0, xmm1 + 000e9 0f 29 85 a0 00 + 00 00 movaps XMMWORD PTR t3$[rbp], xmm0 + +; 23 : +; 24 : target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 000f0 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 000f4 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H + 000f9 b8 10 00 00 00 mov eax, 16 + 000fe 48 6b c0 00 imul rax, rax, 0 + 00102 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00109 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 25 : target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 0010d 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 00111 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH + 00116 b8 10 00 00 00 mov eax, 16 + 0011b 48 6b c0 01 imul rax, rax, 1 + 0011f 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00126 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 26 : target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 0012a 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp] + 0012e 0f c6 85 a0 00 + 00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H + 00136 b8 10 00 00 00 mov eax, 16 + 0013b 48 6b c0 02 imul rax, rax, 2 + 0013f 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00146 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 27 : } + + 0014a 48 8d a5 88 01 + 00 00 lea rsp, QWORD PTR [rbp+392] + 00151 5f pop rdi + 00152 5d pop rbp + 00153 c3 ret 0 +transpose33 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT transpose32 +_TEXT SEGMENT +t0$ = 16 +t2$ = 64 +source$ = 320 +target$ = 328 +transpose32 PROC ; COMDAT + +; 6 : { + +$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 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:__58B0E32D_mat3@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 7 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 8 : _MM_SHUFFLE(1, 0, 1, 0)); +; 9 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zero_vec, _MM_SHUFFLE(1, 0, 1, 0)); + + 00062 0f 57 c0 xorps xmm0, xmm0 + 00065 b8 10 00 00 00 mov eax, 16 + 0006a 48 6b c0 02 imul rax, rax, 2 + 0006e 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00075 48 03 c8 add rcx, rax + 00078 48 8b c1 mov rax, rcx + 0007b 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0007e 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 00082 0f 28 c1 movaps xmm0, xmm1 + 00085 0f 29 45 40 movaps XMMWORD PTR t2$[rbp], xmm0 + +; 10 : +; 11 : target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 00089 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 0008d 0f c6 45 40 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H + 00092 b8 10 00 00 00 mov eax, 16 + 00097 48 6b c0 00 imul rax, rax, 0 + 0009b 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000a2 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 12 : target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 000a6 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 000aa 0f c6 45 40 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH + 000af b8 10 00 00 00 mov eax, 16 + 000b4 48 6b c0 01 imul rax, rax, 1 + 000b8 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000bf 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 13 : } + + 000c3 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 000ca 5f pop rdi + 000cb 5d pop rbp + 000cc c3 ret 0 +transpose32 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT addmatrix3_512 +_TEXT SEGMENT +temp$ = 64 +left$ = 432 +right$ = 440 +ans$ = 448 +addmatrix3_512 PROC ; COMDAT + +; 99 : { + +$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 01 + 00 00 sub rsp, 432 ; 000001b0H + 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:__58B0E32D_mat3@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 100 : __m512 temp = _mm512_add_ps(_mm512_loadu_ps(left), _mm512_loadu_ps(right)); + + 00035 49 8b 85 b8 01 + 00 00 mov rax, QWORD PTR right$[r13] + 0003c 62 f1 7c 48 10 + 00 vmovups zmm0, ZMMWORD PTR [rax] + 00042 49 8b 85 b0 01 + 00 00 mov rax, QWORD PTR left$[r13] + 00049 62 f1 7c 48 10 + 08 vmovups zmm1, ZMMWORD PTR [rax] + 0004f 62 f1 74 48 58 + c0 vaddps zmm0, zmm1, zmm0 + 00055 62 f1 7c 48 11 + 45 01 vmovups ZMMWORD PTR temp$[rbp], zmm0 + +; 101 : _mm512_mask_store_ps(ans, 0x0fff, temp); + + 0005c b8 ff 0f 00 00 mov eax, 4095 ; 00000fffH + 00061 c5 f8 92 c8 kmovw k1, ax + 00065 49 8b 85 c0 01 + 00 00 mov rax, QWORD PTR ans$[r13] + 0006c 62 f1 7c 48 10 + 45 01 vmovups zmm0, ZMMWORD PTR temp$[rbp] + 00073 62 f1 7c 49 11 + 00 vmovups ZMMWORD PTR [rax] {k1}, zmm0 + +; 102 : } + + 00079 49 8d a5 90 01 + 00 00 lea rsp, QWORD PTR [r13+400] + 00080 5f pop rdi + 00081 5d pop rbp + 00082 41 5d pop r13 + 00084 c3 ret 0 +addmatrix3_512 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT addmatrix3_avx +_TEXT SEGMENT +temp0$ = 32 +temp1$ = 96 +left$ = 384 +right$ = 392 +ans$ = 400 +addmatrix3_avx PROC ; COMDAT + +; 90 : { + +$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 80 01 + 00 00 sub rsp, 384 ; 00000180H + 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:__58B0E32D_mat3@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 91 : __m256 temp0 = _mm256_add_ps(ALIGN256(left->part), ALIGN256(right->part)); + + 00035 49 8b 85 88 01 + 00 00 mov rax, QWORD PTR right$[r13] + 0003c c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00040 49 8b 85 80 01 + 00 00 mov rax, QWORD PTR left$[r13] + 00047 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 0004b c5 f4 58 c0 vaddps ymm0, ymm1, ymm0 + 0004f c5 fc 11 45 20 vmovups YMMWORD PTR temp0$[rbp], ymm0 + +; 92 : __m128 temp1 = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + 00054 b8 10 00 00 00 mov eax, 16 + 00059 48 6b c0 02 imul rax, rax, 2 + 0005d 49 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR right$[r13] + 00064 48 03 c8 add rcx, rax + 00067 48 8b c1 mov rax, rcx + 0006a 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0006d b8 10 00 00 00 mov eax, 16 + 00072 48 6b c0 02 imul rax, rax, 2 + 00076 49 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR left$[r13] + 0007d 48 03 c8 add rcx, rax + 00080 48 8b c1 mov rax, rcx + 00083 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00086 0f 58 c8 addps xmm1, xmm0 + 00089 0f 28 c1 movaps xmm0, xmm1 + 0008c 0f 29 45 60 movaps XMMWORD PTR temp1$[rbp], xmm0 + +; 93 : +; 94 : _mm256_storeu_ps(&ans->m[0][0], temp0); + + 00090 b8 0c 00 00 00 mov eax, 12 + 00095 48 6b c0 00 imul rax, rax, 0 + 00099 49 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 000a0 48 03 c8 add rcx, rax + 000a3 48 8b c1 mov rax, rcx + 000a6 b9 04 00 00 00 mov ecx, 4 + 000ab 48 6b c9 00 imul rcx, rcx, 0 + 000af 48 03 c1 add rax, rcx + 000b2 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp0$[rbp] + 000b7 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 95 : _mm_storeu_ps(&ans->m[0][2], temp1); + + 000bb b8 0c 00 00 00 mov eax, 12 + 000c0 48 6b c0 00 imul rax, rax, 0 + 000c4 49 8b 8d 90 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 04 00 00 00 mov ecx, 4 + 000d6 48 6b c9 02 imul rcx, rcx, 2 + 000da 48 03 c1 add rax, rcx + 000dd 0f 28 45 60 movaps xmm0, XMMWORD PTR temp1$[rbp] + 000e1 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 96 : } + + 000e4 49 8d a5 60 01 + 00 00 lea rsp, QWORD PTR [r13+352] + 000eb 5f pop rdi + 000ec 5d pop rbp + 000ed 41 5d pop r13 + 000ef c3 ret 0 +addmatrix3_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat3.c +; COMDAT addmatrix3_sse +_TEXT SEGMENT +temp0$ = 16 +temp1$ = 64 +temp2$ = 112 +left$ = 368 +right$ = 376 +ans$ = 384 +addmatrix3_sse PROC ; COMDAT + +; 79 : { + +$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 78 01 + 00 00 sub rsp, 376 ; 00000178H + 00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__58B0E32D_mat3@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 80 : __m128 temp0 = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + + 0002a b8 10 00 00 00 mov eax, 16 + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d 78 01 + 00 00 mov rcx, QWORD PTR right$[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 b8 10 00 00 00 mov eax, 16 + 00048 48 6b c0 00 imul rax, rax, 0 + 0004c 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00053 48 03 c8 add rcx, rax + 00056 48 8b c1 mov rax, rcx + 00059 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0005c 0f 58 c8 addps xmm1, xmm0 + 0005f 0f 28 c1 movaps xmm0, xmm1 + 00062 0f 29 45 10 movaps XMMWORD PTR temp0$[rbp], xmm0 + +; 81 : __m128 temp1 = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + 00066 b8 10 00 00 00 mov eax, 16 + 0006b 48 6b c0 01 imul rax, rax, 1 + 0006f 48 8b 8d 78 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00076 48 03 c8 add rcx, rax + 00079 48 8b c1 mov rax, rcx + 0007c 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007f b8 10 00 00 00 mov eax, 16 + 00084 48 6b c0 01 imul rax, rax, 1 + 00088 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 0008f 48 03 c8 add rcx, rax + 00092 48 8b c1 mov rax, rcx + 00095 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00098 0f 58 c8 addps xmm1, xmm0 + 0009b 0f 28 c1 movaps xmm0, xmm1 + 0009e 0f 29 45 40 movaps XMMWORD PTR temp1$[rbp], xmm0 + +; 82 : __m128 temp2 = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + 000a2 b8 10 00 00 00 mov eax, 16 + 000a7 48 6b c0 02 imul rax, rax, 2 + 000ab 48 8b 8d 78 01 + 00 00 mov rcx, QWORD PTR right$[rbp] + 000b2 48 03 c8 add rcx, rax + 000b5 48 8b c1 mov rax, rcx + 000b8 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000bb b8 10 00 00 00 mov eax, 16 + 000c0 48 6b c0 02 imul rax, rax, 2 + 000c4 48 8b 8d 70 01 + 00 00 mov rcx, QWORD PTR left$[rbp] + 000cb 48 03 c8 add rcx, rax + 000ce 48 8b c1 mov rax, rcx + 000d1 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000d4 0f 58 c8 addps xmm1, xmm0 + 000d7 0f 28 c1 movaps xmm0, xmm1 + 000da 0f 29 45 70 movaps XMMWORD PTR temp2$[rbp], xmm0 + +; 83 : +; 84 : _mm_storeu_ps(&ans->m[0][0], temp0); + + 000de b8 0c 00 00 00 mov eax, 12 + 000e3 48 6b c0 00 imul rax, rax, 0 + 000e7 48 8b 8d 80 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 04 00 00 00 mov ecx, 4 + 000f9 48 6b c9 00 imul rcx, rcx, 0 + 000fd 48 03 c1 add rax, rcx + 00100 0f 28 45 10 movaps xmm0, XMMWORD PTR temp0$[rbp] + 00104 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 85 : _mm_storeu_ps(&ans->m[0][1], temp1); + + 00107 b8 0c 00 00 00 mov eax, 12 + 0010c 48 6b c0 00 imul rax, rax, 0 + 00110 48 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00117 48 03 c8 add rcx, rax + 0011a 48 8b c1 mov rax, rcx + 0011d b9 04 00 00 00 mov ecx, 4 + 00122 48 6b c9 01 imul rcx, rcx, 1 + 00126 48 03 c1 add rax, rcx + 00129 0f 28 45 40 movaps xmm0, XMMWORD PTR temp1$[rbp] + 0012d 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 86 : _mm_storeu_ps(&ans->m[0][2], temp2); + + 00130 b8 0c 00 00 00 mov eax, 12 + 00135 48 6b c0 00 imul rax, rax, 0 + 00139 48 8b 8d 80 01 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00140 48 03 c8 add rcx, rax + 00143 48 8b c1 mov rax, rcx + 00146 b9 04 00 00 00 mov ecx, 4 + 0014b 48 6b c9 02 imul rcx, rcx, 2 + 0014f 48 03 c1 add rax, rcx + 00152 0f 28 45 70 movaps xmm0, XMMWORD PTR temp2$[rbp] + 00156 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 87 : } + + 00159 48 8d a5 58 01 + 00 00 lea rsp, QWORD PTR [rbp+344] + 00160 5f pop rdi + 00161 5d pop rbp + 00162 c3 ret 0 +addmatrix3_sse ENDP +_TEXT ENDS +END diff --git a/StgSharp.C/x64/Debug/mat3.obj b/StgSharp.C/x64/Debug/mat3.obj new file mode 100644 index 00000000..53bb1a6f Binary files /dev/null and b/StgSharp.C/x64/Debug/mat3.obj differ diff --git a/StgSharp.C/x64/Debug/mat3.sbr b/StgSharp.C/x64/Debug/mat3.sbr new file mode 100644 index 00000000..7a18a6b9 Binary files /dev/null and b/StgSharp.C/x64/Debug/mat3.sbr differ diff --git a/StgSharp.C/x64/Debug/mat4.cod b/StgSharp.C/x64/Debug/mat4.cod new file mode 100644 index 00000000..ea95ee60 --- /dev/null +++ b/StgSharp.C/x64/Debug/mat4.cod @@ -0,0 +1,1211 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__5A8332CE_isa_availability@h DB 01H +__EB6C2FE1_ssc_intrinsic@h DB 01H +__5DFFF5A8_mat4@c DB 01H +msvcjmc ENDS +PUBLIC addmatrix4_sse +PUBLIC addmatrix4_avx +PUBLIC addmatrix4_512 +PUBLIC transpose42 +PUBLIC transpose43 +PUBLIC transpose44 +PUBLIC det_mat4 +PUBLIC __JustMyCode_Default +PUBLIC __xmm@80000000800000008000000080000000 +EXTRN det_mat3_internal:PROC +EXTRN _RTC_CheckStackVars:PROC +EXTRN _RTC_InitBase:PROC +EXTRN _RTC_Shutdown:PROC +EXTRN __CheckForDebuggerJustMyCode:PROC +EXTRN _fltused:DWORD +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix4_sse DD imagerel $LN3 + DD imagerel $LN3+356 + DD imagerel $unwind$addmatrix4_sse +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix4_avx DD imagerel $LN3 + DD imagerel $LN3+206 + DD imagerel $unwind$addmatrix4_avx +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$addmatrix4_512 DD imagerel $LN3 + DD imagerel $LN3+97 + DD imagerel $unwind$addmatrix4_512 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose42 DD imagerel $LN3 + DD imagerel $LN3+227 + DD imagerel $unwind$transpose42 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose43 DD imagerel $LN3 + DD imagerel $LN3+384 + DD imagerel $unwind$transpose43 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$transpose44 DD imagerel $LN3 + DD imagerel $LN3+416 + DD imagerel $unwind$transpose44 +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$det_mat4 DD imagerel $LN3 + DD imagerel $LN3+655 + DD imagerel $unwind$det_mat4 +pdata ENDS +; COMDAT __xmm@80000000800000008000000080000000 +CONST SEGMENT +__xmm@80000000800000008000000080000000 DB 00H, 00H, 00H, 080H, 00H, 00H, 00H + DB 080H, 00H, 00H, 00H, 080H, 00H, 00H, 00H, 080H +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$det_mat4 DD 035053101H + DD 01133318H + DD 0700c00a3H + DD 0500bH +xdata ENDS +; COMDAT CONST +CONST SEGMENT +det_mat4$rtcName$0 DB 072H + DB 065H + DB 074H + DB 076H + DB 065H + DB 063H + DB 00H + ORG $+9 +det_mat4$rtcVarDesc DD 0130H + DD 010H + DQ FLAT:det_mat4$rtcName$0 + ORG $+48 +det_mat4$rtcFrameData DD 01H + DD 00H + DQ FLAT:det_mat4$rtcVarDesc +CONST ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$transpose44 DD 025051801H + DD 01132318H + DD 0700c0035H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$transpose43 DD 025051801H + DD 01132318H + DD 0700c0035H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$transpose42 DD 025051801H + DD 01132318H + DD 0700c0029H + DD 0500bH +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix4_512 DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix4_avx DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$addmatrix4_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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT det_mat4 +_TEXT SEGMENT +mc0$ = 16 +mc1$ = 64 +mc2$ = 112 +mc3$ = 160 +cogeneration$ = 208 +retvec$ = 256 +$T4 = 688 +$T5 = 736 +$T6 = 784 +$T7 = 832 +$T8 = 880 +$T9 = 928 +$T10 = 976 +$T11 = 1024 +$T12 = 1072 +$T13 = 1120 +$T14 = 1168 +$T15 = 1216 +tv89 = 1236 +tv95 = 1240 +tv133 = 1244 +mat_ptr$ = 1280 +transpose$ = 1288 +det_mat4 PROC ; COMDAT + +; 52 : { + +$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 18 05 + 00 00 sub rsp, 1304 ; 00000518H + 00013 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] + 00018 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48] + 0001d b9 da 00 00 00 mov ecx, 218 ; 000000daH + 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00027 f3 ab rep stosd + 00029 48 8b 8c 24 38 + 05 00 00 mov rcx, QWORD PTR [rsp+1336] + 00031 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__5DFFF5A8_mat4@c + 00038 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0003d 90 npad 1 + +; 53 : __m128 mc0 = ALIGN(mat_ptr->column[0]); + + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d 00 05 + 00 00 mov rcx, QWORD PTR mat_ptr$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00057 0f 29 45 10 movaps XMMWORD PTR mc0$[rbp], xmm0 + +; 54 : __m128 mc1 = ALIGN(mat_ptr->column[1]); + + 0005b b8 10 00 00 00 mov eax, 16 + 00060 48 6b c0 01 imul rax, rax, 1 + 00064 48 8b 8d 00 05 + 00 00 mov rcx, QWORD PTR mat_ptr$[rbp] + 0006b 48 03 c8 add rcx, rax + 0006e 48 8b c1 mov rax, rcx + 00071 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00074 0f 29 45 40 movaps XMMWORD PTR mc1$[rbp], xmm0 + +; 55 : __m128 mc2 = ALIGN(mat_ptr->column[2]); + + 00078 b8 10 00 00 00 mov eax, 16 + 0007d 48 6b c0 02 imul rax, rax, 2 + 00081 48 8b 8d 00 05 + 00 00 mov rcx, QWORD PTR mat_ptr$[rbp] + 00088 48 03 c8 add rcx, rax + 0008b 48 8b c1 mov rax, rcx + 0008e 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00091 0f 29 45 70 movaps XMMWORD PTR mc2$[rbp], xmm0 + +; 56 : __m128 mc3 = ALIGN(mat_ptr->column[3]); + + 00095 b8 10 00 00 00 mov eax, 16 + 0009a 48 6b c0 03 imul rax, rax, 3 + 0009e 48 8b 8d 00 05 + 00 00 mov rcx, QWORD PTR mat_ptr$[rbp] + 000a5 48 03 c8 add rcx, rax + 000a8 48 8b c1 mov rax, rcx + 000ab 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000ae 0f 29 85 a0 00 + 00 00 movaps XMMWORD PTR mc3$[rbp], xmm0 + +; 57 : +; 58 : __m128 cogeneration = + + 000b5 0f 28 85 a0 00 + 00 00 movaps xmm0, XMMWORD PTR mc3$[rbp] + 000bc 0f 29 85 10 03 + 00 00 movaps XMMWORD PTR $T6[rbp], xmm0 + 000c3 0f 28 45 70 movaps xmm0, XMMWORD PTR mc2$[rbp] + 000c7 0f 29 85 e0 02 + 00 00 movaps XMMWORD PTR $T5[rbp], xmm0 + 000ce 0f 28 45 40 movaps xmm0, XMMWORD PTR mc1$[rbp] + 000d2 0f 29 85 b0 02 + 00 00 movaps XMMWORD PTR $T4[rbp], xmm0 + 000d9 4c 8d 85 10 03 + 00 00 lea r8, QWORD PTR $T6[rbp] + 000e0 48 8d 95 e0 02 + 00 00 lea rdx, QWORD PTR $T5[rbp] + 000e7 48 8d 8d b0 02 + 00 00 lea rcx, QWORD PTR $T4[rbp] + 000ee e8 00 00 00 00 call det_mat3_internal + 000f3 f3 0f 2a c0 cvtsi2ss xmm0, eax + 000f7 f3 0f 11 85 d4 + 04 00 00 movss DWORD PTR tv89[rbp], xmm0 + 000ff 0f 28 8d a0 00 + 00 00 movaps xmm1, XMMWORD PTR mc3$[rbp] + 00106 0f 29 8d a0 03 + 00 00 movaps XMMWORD PTR $T9[rbp], xmm1 + 0010d 0f 28 4d 70 movaps xmm1, XMMWORD PTR mc2$[rbp] + 00111 0f 29 8d 70 03 + 00 00 movaps XMMWORD PTR $T8[rbp], xmm1 + 00118 0f 28 4d 10 movaps xmm1, XMMWORD PTR mc0$[rbp] + 0011c 0f 29 8d 40 03 + 00 00 movaps XMMWORD PTR $T7[rbp], xmm1 + 00123 4c 8d 85 a0 03 + 00 00 lea r8, QWORD PTR $T9[rbp] + 0012a 48 8d 95 70 03 + 00 00 lea rdx, QWORD PTR $T8[rbp] + 00131 48 8d 8d 40 03 + 00 00 lea rcx, QWORD PTR $T7[rbp] + 00138 e8 00 00 00 00 call det_mat3_internal + 0013d f3 0f 2a c0 cvtsi2ss xmm0, eax + 00141 f3 0f 11 85 d8 + 04 00 00 movss DWORD PTR tv95[rbp], xmm0 + 00149 0f 28 8d a0 00 + 00 00 movaps xmm1, XMMWORD PTR mc3$[rbp] + 00150 0f 29 8d 30 04 + 00 00 movaps XMMWORD PTR $T12[rbp], xmm1 + 00157 0f 28 4d 40 movaps xmm1, XMMWORD PTR mc1$[rbp] + 0015b 0f 29 8d 00 04 + 00 00 movaps XMMWORD PTR $T11[rbp], xmm1 + 00162 0f 28 4d 10 movaps xmm1, XMMWORD PTR mc0$[rbp] + 00166 0f 29 8d d0 03 + 00 00 movaps XMMWORD PTR $T10[rbp], xmm1 + 0016d 4c 8d 85 30 04 + 00 00 lea r8, QWORD PTR $T12[rbp] + 00174 48 8d 95 00 04 + 00 00 lea rdx, QWORD PTR $T11[rbp] + 0017b 48 8d 8d d0 03 + 00 00 lea rcx, QWORD PTR $T10[rbp] + 00182 e8 00 00 00 00 call det_mat3_internal + 00187 f3 0f 2a c0 cvtsi2ss xmm0, eax + 0018b f3 0f 11 85 dc + 04 00 00 movss DWORD PTR tv133[rbp], xmm0 + 00193 0f 28 4d 70 movaps xmm1, XMMWORD PTR mc2$[rbp] + 00197 0f 29 8d c0 04 + 00 00 movaps XMMWORD PTR $T15[rbp], xmm1 + 0019e 0f 28 4d 40 movaps xmm1, XMMWORD PTR mc1$[rbp] + 001a2 0f 29 8d 90 04 + 00 00 movaps XMMWORD PTR $T14[rbp], xmm1 + 001a9 0f 28 4d 10 movaps xmm1, XMMWORD PTR mc0$[rbp] + 001ad 0f 29 8d 60 04 + 00 00 movaps XMMWORD PTR $T13[rbp], xmm1 + 001b4 4c 8d 85 c0 04 + 00 00 lea r8, QWORD PTR $T15[rbp] + 001bb 48 8d 95 90 04 + 00 00 lea rdx, QWORD PTR $T14[rbp] + 001c2 48 8d 8d 60 04 + 00 00 lea rcx, QWORD PTR $T13[rbp] + 001c9 e8 00 00 00 00 call det_mat3_internal + 001ce f3 0f 2a c0 cvtsi2ss xmm0, eax + 001d2 f3 0f 10 8d dc + 04 00 00 movss xmm1, DWORD PTR tv133[rbp] + 001da f3 0f 10 95 d8 + 04 00 00 movss xmm2, DWORD PTR tv95[rbp] + 001e2 f3 0f 10 9d d4 + 04 00 00 movss xmm3, DWORD PTR tv89[rbp] + 001ea 0f 14 c8 unpcklps xmm1, xmm0 + 001ed 0f 14 da unpcklps xmm3, xmm2 + 001f0 0f 28 c3 movaps xmm0, xmm3 + 001f3 0f 16 c1 movlhps xmm0, xmm1 + 001f6 0f 29 85 d0 00 + 00 00 movaps XMMWORD PTR cogeneration$[rbp], xmm0 + +; 59 : _mm_set_ps(det_mat3_internal(mc0, mc1, mc2), det_mat3_internal(mc0, mc1, mc3), +; 60 : det_mat3_internal(mc0, mc2, mc3), det_mat3_internal(mc1, mc2, mc3)); +; 61 : __m128 retvec = _mm_mul_ps(ALIGN(transpose->column[3]), cogeneration); + + 001fd b8 10 00 00 00 mov eax, 16 + 00202 48 6b c0 03 imul rax, rax, 3 + 00206 48 8b 8d 08 05 + 00 00 mov rcx, QWORD PTR transpose$[rbp] + 0020d 48 03 c8 add rcx, rax + 00210 48 8b c1 mov rax, rcx + 00213 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00216 0f 59 85 d0 00 + 00 00 mulps xmm0, XMMWORD PTR cogeneration$[rbp] + 0021d 0f 29 85 00 01 + 00 00 movaps XMMWORD PTR retvec$[rbp], xmm0 + +; 62 : retvec = _mm_hsub_ps(retvec, retvec); + + 00224 0f 28 85 00 01 + 00 00 movaps xmm0, XMMWORD PTR retvec$[rbp] + 0022b f2 0f 7d 85 00 + 01 00 00 hsubps xmm0, XMMWORD PTR retvec$[rbp] + 00233 0f 29 85 00 01 + 00 00 movaps XMMWORD PTR retvec$[rbp], xmm0 + +; 63 : retvec = _mm_hadd_ps(retvec, retvec); + + 0023a 0f 28 85 00 01 + 00 00 movaps xmm0, XMMWORD PTR retvec$[rbp] + 00241 f2 0f 7c 85 00 + 01 00 00 haddps xmm0, XMMWORD PTR retvec$[rbp] + 00249 0f 29 85 00 01 + 00 00 movaps XMMWORD PTR retvec$[rbp], xmm0 + +; 64 : return -retvec.m128_f32[0]; + + 00250 b8 04 00 00 00 mov eax, 4 + 00255 48 6b c0 00 imul rax, rax, 0 + 00259 f3 0f 10 84 05 + 00 01 00 00 movss xmm0, DWORD PTR retvec$[rbp+rax] + 00262 0f 57 05 00 00 + 00 00 xorps xmm0, DWORD PTR __xmm@80000000800000008000000080000000 + +; 65 : } + + 00269 f3 0f 7f 44 24 + 20 movdqu XMMWORD PTR [rsp+32], xmm0 + 0026f 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] + 00273 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:det_mat4$rtcFrameData + 0027a e8 00 00 00 00 call _RTC_CheckStackVars + 0027f f3 0f 6f 44 24 + 20 movdqu xmm0, XMMWORD PTR [rsp+32] + 00285 48 8d a5 e8 04 + 00 00 lea rsp, QWORD PTR [rbp+1256] + 0028c 5f pop rdi + 0028d 5d pop rbp + 0028e c3 ret 0 +det_mat4 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT transpose44 +_TEXT SEGMENT +t0$ = 16 +t1$ = 64 +t2$ = 112 +t3$ = 160 +source$ = 416 +target$ = 424 +transpose44 PROC ; COMDAT + +; 35 : { + +$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 a8 01 + 00 00 sub rsp, 424 ; 000001a8H + 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00018 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__5DFFF5A8_mat4@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 36 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 37 : _MM_SHUFFLE(1, 0, 1, 0)); +; 38 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 01 imul rax, rax, 1 + 0006b 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00072 48 03 c8 add rcx, rax + 00075 48 8b c1 mov rax, rcx + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b b8 10 00 00 00 mov eax, 16 + 00080 48 6b c0 00 imul rax, rax, 0 + 00084 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0008b 48 03 c8 add rcx, rax + 0008e 48 8b c1 mov rax, rcx + 00091 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00094 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00098 0f 28 c1 movaps xmm0, xmm1 + 0009b 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0 + +; 39 : _MM_SHUFFLE(3, 2, 3, 2)); +; 40 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + + 0009f b8 10 00 00 00 mov eax, 16 + 000a4 48 6b c0 03 imul rax, rax, 3 + 000a8 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000af 48 03 c8 add rcx, rax + 000b2 48 8b c1 mov rax, rcx + 000b5 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000b8 b8 10 00 00 00 mov eax, 16 + 000bd 48 6b c0 02 imul rax, rax, 2 + 000c1 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000c8 48 03 c8 add rcx, rax + 000cb 48 8b c1 mov rax, rcx + 000ce 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000d1 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 000d5 0f 28 c1 movaps xmm0, xmm1 + 000d8 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0 + +; 41 : _MM_SHUFFLE(1, 0, 1, 0)); +; 42 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + + 000dc b8 10 00 00 00 mov eax, 16 + 000e1 48 6b c0 03 imul rax, rax, 3 + 000e5 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000ec 48 03 c8 add rcx, rax + 000ef 48 8b c1 mov rax, rcx + 000f2 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000f5 b8 10 00 00 00 mov eax, 16 + 000fa 48 6b c0 02 imul rax, rax, 2 + 000fe 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00105 48 03 c8 add rcx, rax + 00108 48 8b c1 mov rax, rcx + 0010b 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0010e 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00112 0f 28 c1 movaps xmm0, xmm1 + 00115 0f 29 85 a0 00 + 00 00 movaps XMMWORD PTR t3$[rbp], xmm0 + +; 43 : _MM_SHUFFLE(3, 2, 3, 2)); +; 44 : +; 45 : target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 0011c 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 00120 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H + 00125 b8 10 00 00 00 mov eax, 16 + 0012a 48 6b c0 00 imul rax, rax, 0 + 0012e 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00135 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 46 : target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 00139 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 0013d 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH + 00142 b8 10 00 00 00 mov eax, 16 + 00147 48 6b c0 01 imul rax, rax, 1 + 0014b 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00152 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 47 : target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 00156 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp] + 0015a 0f c6 85 a0 00 + 00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H + 00162 b8 10 00 00 00 mov eax, 16 + 00167 48 6b c0 02 imul rax, rax, 2 + 0016b 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00172 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 48 : target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); + + 00176 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp] + 0017a 0f c6 85 a0 00 + 00 00 dd shufps xmm0, XMMWORD PTR t3$[rbp], 221 ; 000000ddH + 00182 b8 10 00 00 00 mov eax, 16 + 00187 48 6b c0 03 imul rax, rax, 3 + 0018b 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00192 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 49 : } + + 00196 48 8d a5 88 01 + 00 00 lea rsp, QWORD PTR [rbp+392] + 0019d 5f pop rdi + 0019e 5d pop rbp + 0019f c3 ret 0 +transpose44 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT transpose43 +_TEXT SEGMENT +t0$ = 16 +t1$ = 64 +t2$ = 112 +t3$ = 160 +source$ = 416 +target$ = 424 +transpose43 PROC ; COMDAT + +; 19 : { + +$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 a8 01 + 00 00 sub rsp, 424 ; 000001a8H + 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00018 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__5DFFF5A8_mat4@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 20 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 21 : _MM_SHUFFLE(1, 0, 1, 0)); +; 22 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 01 imul rax, rax, 1 + 0006b 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00072 48 03 c8 add rcx, rax + 00075 48 8b c1 mov rax, rcx + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b b8 10 00 00 00 mov eax, 16 + 00080 48 6b c0 00 imul rax, rax, 0 + 00084 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0008b 48 03 c8 add rcx, rax + 0008e 48 8b c1 mov rax, rcx + 00091 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00094 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00098 0f 28 c1 movaps xmm0, xmm1 + 0009b 0f 29 45 40 movaps XMMWORD PTR t1$[rbp], xmm0 + +; 23 : _MM_SHUFFLE(3, 2, 3, 2)); +; 24 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + + 0009f b8 10 00 00 00 mov eax, 16 + 000a4 48 6b c0 03 imul rax, rax, 3 + 000a8 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000af 48 03 c8 add rcx, rax + 000b2 48 8b c1 mov rax, rcx + 000b5 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000b8 b8 10 00 00 00 mov eax, 16 + 000bd 48 6b c0 02 imul rax, rax, 2 + 000c1 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000c8 48 03 c8 add rcx, rax + 000cb 48 8b c1 mov rax, rcx + 000ce 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000d1 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 000d5 0f 28 c1 movaps xmm0, xmm1 + 000d8 0f 29 45 70 movaps XMMWORD PTR t2$[rbp], xmm0 + +; 25 : _MM_SHUFFLE(1, 0, 1, 0)); +; 26 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + + 000dc b8 10 00 00 00 mov eax, 16 + 000e1 48 6b c0 03 imul rax, rax, 3 + 000e5 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 000ec 48 03 c8 add rcx, rax + 000ef 48 8b c1 mov rax, rcx + 000f2 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000f5 b8 10 00 00 00 mov eax, 16 + 000fa 48 6b c0 02 imul rax, rax, 2 + 000fe 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00105 48 03 c8 add rcx, rax + 00108 48 8b c1 mov rax, rcx + 0010b 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0010e 0f c6 c8 ee shufps xmm1, xmm0, 238 ; 000000eeH + 00112 0f 28 c1 movaps xmm0, xmm1 + 00115 0f 29 85 a0 00 + 00 00 movaps XMMWORD PTR t3$[rbp], xmm0 + +; 27 : _MM_SHUFFLE(3, 2, 3, 2)); +; 28 : +; 29 : target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 0011c 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 00120 0f c6 45 70 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H + 00125 b8 10 00 00 00 mov eax, 16 + 0012a 48 6b c0 00 imul rax, rax, 0 + 0012e 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00135 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 30 : target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 00139 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 0013d 0f c6 45 70 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH + 00142 b8 10 00 00 00 mov eax, 16 + 00147 48 6b c0 01 imul rax, rax, 1 + 0014b 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00152 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 31 : target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + + 00156 0f 28 45 40 movaps xmm0, XMMWORD PTR t1$[rbp] + 0015a 0f c6 85 a0 00 + 00 00 88 shufps xmm0, XMMWORD PTR t3$[rbp], 136 ; 00000088H + 00162 b8 10 00 00 00 mov eax, 16 + 00167 48 6b c0 02 imul rax, rax, 2 + 0016b 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 00172 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 32 : } + + 00176 48 8d a5 88 01 + 00 00 lea rsp, QWORD PTR [rbp+392] + 0017d 5f pop rdi + 0017e 5d pop rbp + 0017f c3 ret 0 +transpose43 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT transpose42 +_TEXT SEGMENT +t0$ = 16 +t2$ = 64 +source$ = 320 +target$ = 328 +transpose42 PROC ; COMDAT + +; 8 : { + +$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 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:__5DFFF5A8_mat4@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 9 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), ALIGN(source->column[1]), + + 00025 b8 10 00 00 00 mov eax, 16 + 0002a 48 6b c0 01 imul rax, rax, 1 + 0002e 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00035 48 03 c8 add rcx, rax + 00038 48 8b c1 mov rax, rcx + 0003b 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0003e b8 10 00 00 00 mov eax, 16 + 00043 48 6b c0 00 imul rax, rax, 0 + 00047 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0004e 48 03 c8 add rcx, rax + 00051 48 8b c1 mov rax, rcx + 00054 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00057 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 0005b 0f 28 c1 movaps xmm0, xmm1 + 0005e 0f 29 45 10 movaps XMMWORD PTR t0$[rbp], xmm0 + +; 10 : _MM_SHUFFLE(1, 0, 1, 0)); +; 11 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), ALIGN(source->column[3]), + + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 03 imul rax, rax, 3 + 0006b 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00072 48 03 c8 add rcx, rax + 00075 48 8b c1 mov rax, rcx + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b b8 10 00 00 00 mov eax, 16 + 00080 48 6b c0 02 imul rax, rax, 2 + 00084 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR source$[rbp] + 0008b 48 03 c8 add rcx, rax + 0008e 48 8b c1 mov rax, rcx + 00091 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00094 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H + 00098 0f 28 c1 movaps xmm0, xmm1 + 0009b 0f 29 45 40 movaps XMMWORD PTR t2$[rbp], xmm0 + +; 12 : _MM_SHUFFLE(1, 0, 1, 0)); +; 13 : +; 14 : target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + + 0009f 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 000a3 0f c6 45 40 88 shufps xmm0, XMMWORD PTR t2$[rbp], 136 ; 00000088H + 000a8 b8 10 00 00 00 mov eax, 16 + 000ad 48 6b c0 00 imul rax, rax, 0 + 000b1 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000b8 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 15 : target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + + 000bc 0f 28 45 10 movaps xmm0, XMMWORD PTR t0$[rbp] + 000c0 0f c6 45 40 dd shufps xmm0, XMMWORD PTR t2$[rbp], 221 ; 000000ddH + 000c5 b8 10 00 00 00 mov eax, 16 + 000ca 48 6b c0 01 imul rax, rax, 1 + 000ce 48 8b 8d 48 01 + 00 00 mov rcx, QWORD PTR target$[rbp] + 000d5 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 16 : } + + 000d9 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 000e0 5f pop rdi + 000e1 5d pop rbp + 000e2 c3 ret 0 +transpose42 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT addmatrix4_512 +_TEXT SEGMENT +left$ = 224 +right$ = 232 +ans$ = 240 +addmatrix4_512 PROC ; COMDAT + +; 82 : { + +$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:__5DFFF5A8_mat4@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 83 : ans->stream = _mm512_add_ps(ALIGN512(left->stream), ALIGN512(right->stream)); + + 0002a 48 8b 85 e8 00 + 00 00 mov rax, QWORD PTR right$[rbp] + 00031 62 f1 7c 48 10 + 00 vmovups zmm0, ZMMWORD PTR [rax] + 00037 48 8b 85 e0 00 + 00 00 mov rax, QWORD PTR left$[rbp] + 0003e 62 f1 7c 48 10 + 08 vmovups zmm1, ZMMWORD PTR [rax] + 00044 62 f1 74 48 58 + c0 vaddps zmm0, zmm1, zmm0 + 0004a 48 8b 85 f0 00 + 00 00 mov rax, QWORD PTR ans$[rbp] + 00051 62 f1 7c 48 11 + 00 vmovups ZMMWORD PTR [rax], zmm0 + +; 84 : } + + 00057 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 0005e 5f pop rdi + 0005f 5d pop rbp + 00060 c3 ret 0 +addmatrix4_512 ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT addmatrix4_avx +_TEXT SEGMENT +left$ = 224 +right$ = 232 +ans$ = 240 +addmatrix4_avx PROC ; COMDAT + +; 76 : { + +$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:__5DFFF5A8_mat4@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 77 : ans->half[0] = _mm256_add_ps(ALIGN256(left->half[0]), ALIGN256(right->half[0])); + + 0002a b8 20 00 00 00 mov eax, 32 ; 00000020H + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 0003a 48 03 c8 add rcx, rax + 0003d 48 8b c1 mov rax, rcx + 00040 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00044 b8 20 00 00 00 mov eax, 32 ; 00000020H + 00049 48 6b c0 00 imul rax, rax, 0 + 0004d 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00054 48 03 c8 add rcx, rax + 00057 48 8b c1 mov rax, rcx + 0005a c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 0005e c5 f4 58 c0 vaddps ymm0, ymm1, ymm0 + 00062 b8 20 00 00 00 mov eax, 32 ; 00000020H + 00067 48 6b c0 00 imul rax, rax, 0 + 0006b 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00072 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0 + +; 78 : ans->half[1] = _mm256_add_ps(ALIGN256(left->half[1]), ALIGN256(right->half[1])); + + 00077 b8 20 00 00 00 mov eax, 32 ; 00000020H + 0007c 48 6b c0 01 imul rax, rax, 1 + 00080 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00087 48 03 c8 add rcx, rax + 0008a 48 8b c1 mov rax, rcx + 0008d c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00091 b8 20 00 00 00 mov eax, 32 ; 00000020H + 00096 48 6b c0 01 imul rax, rax, 1 + 0009a 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 000a1 48 03 c8 add rcx, rax + 000a4 48 8b c1 mov rax, rcx + 000a7 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 000ab c5 f4 58 c0 vaddps ymm0, ymm1, ymm0 + 000af b8 20 00 00 00 mov eax, 32 ; 00000020H + 000b4 48 6b c0 01 imul rax, rax, 1 + 000b8 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000bf c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0 + +; 79 : } + + 000c4 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 000cb 5f pop rdi + 000cc 5d pop rbp + 000cd c3 ret 0 +addmatrix4_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\mat4.c +; COMDAT addmatrix4_sse +_TEXT SEGMENT +left$ = 224 +right$ = 232 +ans$ = 240 +addmatrix4_sse PROC ; COMDAT + +; 68 : { + +$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:__5DFFF5A8_mat4@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 69 : ans->column[0] = _mm_add_ps(ALIGN(left->column[0]), ALIGN(right->column[0])); + + 0002a b8 10 00 00 00 mov eax, 16 + 0002f 48 6b c0 00 imul rax, rax, 0 + 00033 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[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 b8 10 00 00 00 mov eax, 16 + 00048 48 6b c0 00 imul rax, rax, 0 + 0004c 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00053 48 03 c8 add rcx, rax + 00056 48 8b c1 mov rax, rcx + 00059 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 0005c 0f 58 c8 addps xmm1, xmm0 + 0005f 0f 28 c1 movaps xmm0, xmm1 + 00062 b8 10 00 00 00 mov eax, 16 + 00067 48 6b c0 00 imul rax, rax, 0 + 0006b 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00072 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 70 : ans->column[1] = _mm_add_ps(ALIGN(left->column[1]), ALIGN(right->column[1])); + + 00076 b8 10 00 00 00 mov eax, 16 + 0007b 48 6b c0 01 imul rax, rax, 1 + 0007f 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 00086 48 03 c8 add rcx, rax + 00089 48 8b c1 mov rax, rcx + 0008c 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0008f b8 10 00 00 00 mov eax, 16 + 00094 48 6b c0 01 imul rax, rax, 1 + 00098 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 0009f 48 03 c8 add rcx, rax + 000a2 48 8b c1 mov rax, rcx + 000a5 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000a8 0f 58 c8 addps xmm1, xmm0 + 000ab 0f 28 c1 movaps xmm0, xmm1 + 000ae b8 10 00 00 00 mov eax, 16 + 000b3 48 6b c0 01 imul rax, rax, 1 + 000b7 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 000be 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 71 : ans->column[2] = _mm_add_ps(ALIGN(left->column[2]), ALIGN(right->column[2])); + + 000c2 b8 10 00 00 00 mov eax, 16 + 000c7 48 6b c0 02 imul rax, rax, 2 + 000cb 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 000d2 48 03 c8 add rcx, rax + 000d5 48 8b c1 mov rax, rcx + 000d8 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000db b8 10 00 00 00 mov eax, 16 + 000e0 48 6b c0 02 imul rax, rax, 2 + 000e4 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 000eb 48 03 c8 add rcx, rax + 000ee 48 8b c1 mov rax, rcx + 000f1 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000f4 0f 58 c8 addps xmm1, xmm0 + 000f7 0f 28 c1 movaps xmm0, xmm1 + 000fa b8 10 00 00 00 mov eax, 16 + 000ff 48 6b c0 02 imul rax, rax, 2 + 00103 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 0010a 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 72 : ans->column[3] = _mm_add_ps(ALIGN(left->column[3]), ALIGN(right->column[3])); + + 0010e b8 10 00 00 00 mov eax, 16 + 00113 48 6b c0 03 imul rax, rax, 3 + 00117 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR right$[rbp] + 0011e 48 03 c8 add rcx, rax + 00121 48 8b c1 mov rax, rcx + 00124 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00127 b8 10 00 00 00 mov eax, 16 + 0012c 48 6b c0 03 imul rax, rax, 3 + 00130 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR left$[rbp] + 00137 48 03 c8 add rcx, rax + 0013a 48 8b c1 mov rax, rcx + 0013d 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00140 0f 58 c8 addps xmm1, xmm0 + 00143 0f 28 c1 movaps xmm0, xmm1 + 00146 b8 10 00 00 00 mov eax, 16 + 0014b 48 6b c0 03 imul rax, rax, 3 + 0014f 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 00156 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 73 : } + + 0015a 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 00161 5f pop rdi + 00162 5d pop rbp + 00163 c3 ret 0 +addmatrix4_sse ENDP +_TEXT ENDS +END diff --git a/StgSharp.C/x64/Debug/mat4.obj b/StgSharp.C/x64/Debug/mat4.obj new file mode 100644 index 00000000..c43d9eb1 Binary files /dev/null and b/StgSharp.C/x64/Debug/mat4.obj differ diff --git a/StgSharp.C/x64/Debug/mat4.sbr b/StgSharp.C/x64/Debug/mat4.sbr new file mode 100644 index 00000000..110145a0 Binary files /dev/null and b/StgSharp.C/x64/Debug/mat4.sbr differ diff --git a/StgSharp.C/x64/Debug/stb_image.cod b/StgSharp.C/x64/Debug/stb_image.cod new file mode 100644 index 00000000..211ea800 --- /dev/null +++ b/StgSharp.C/x64/Debug/stb_image.cod @@ -0,0 +1,62266 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +msvcjmc SEGMENT +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__AC8FA393_stdarg@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__BB16330F_corecrt_math@h DB 01H +__3BF2A406_math@h DB 01H +__19139D6C_assert@h DB 01H +__7583A0D2_mmintrin@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__079B8C84_stb_image@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_to_target +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 __JustMyCode_Default +PUBLIC ??_C@_0BD@CBEDEJPH@unknown?5image?5type@ ; `string' +PUBLIC ??_C@_08NOGIMCHF@outofmem@ ; `string' +PUBLIC ??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ ; `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@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@ ; `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@_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@_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@_0O@MKGNGALN@invalid?5width@ ; `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@_1BG@FLOPDKAN@?$AAi?$AAm?$AAg?$AA_?$AAn?$AA?5?$AA?$DN?$AA?$DN?$AA?5?$AA3@ ; `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@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ ; `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 __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 __imp_free:PROC +EXTRN __imp_malloc:PROC +EXTRN __imp_realloc:PROC +EXTRN abs:PROC +EXTRN _lrotl:PROC +EXTRN __imp_strtol:PROC +EXTRN memcpy:PROC +EXTRN memset:PROC +EXTRN strcmp:PROC +EXTRN __imp_strncmp:PROC +EXTRN pow:PROC +EXTRN __imp_ldexp:PROC +EXTRN __imp__wassert: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_to_target DD imagerel $LN4 + DD imagerel $LN4+160 + DD imagerel $unwind$stbi_load_to_target +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+376 + 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+987 + 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+593 + 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+167 + 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+241 + 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+761 + 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+343 + 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+190 + DD imagerel $unwind$stbi__paeth +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+7148 + 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+3798 + 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 __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@_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@_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@_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@_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@_0O@MKGNGALN@invalid?5width@ +CONST SEGMENT +??_C@_0O@MKGNGALN@invalid?5width@ DB 'invalid width', 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@_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@_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@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@ +CONST SEGMENT +??_C@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@ DB 'can''t fop' + DB 'en, Unable to open file', 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@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ +CONST SEGMENT +??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ DB 'D' + DB 00H, ':', 00H, '\', 00H, 'N', 00H, 'i', 00H, 't', 00H, 'l', 00H + DB 'o', 00H, 'a', 00H, 'd', 00H, 'I', 00H, 'n', 00H, 'd', 00H, 'u' + DB 00H, 's', 00H, 't', 00H, 'r', 00H, 'y', 00H, '\', 00H, 014H, 'x' + DB 'vzy', 098H, 0eeH, 'v\', 00H, '1', 00H, '-', 00H, 'F', 00H, 'l' + DB 00H, 'a', 00H, 'g', 00H, 's', 00H, 'h', 00H, 'i', 00H, 'p', 00H + DB '\', 00H, 'T', 00H, 'H', 00H, '2', 00H, '0', 00H, '2', 00H, '0' + DB 00H, '\', 00H, 'P', 00H, 'r', 00H, 'o', 00H, 'j', 00H, 'e', 00H + DB 'c', 00H, 't', 00H, 'F', 00H, 'i', 00H, 'l', 00H, 'e', 00H, '\' + DB 00H, 085H, 'Q8h', 090H, 'n', 0e3H, 'N', 01H, 'x\', 00H, 'S', 00H + DB 't', 00H, 'g', 00H, 'S', 00H, 'h', 00H, 'a', 00H, 'r', 00H, 'p' + DB 00H, '.', 00H, 'C', 00H, '\', 00H, 's', 00H, 't', 00H, 'b', 00H + DB '_', 00H, 'i', 00H, 'm', 00H, 'a', 00H, 'g', 00H, 'e', 00H, '.' + DB 00H, 'c', 00H, 00H, 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 06H + 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$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 0ebdH +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 07016008dH + DD 05015H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$stbi__paeth DD 025051b01H + DD 0116231bH + DD 0700f002dH + 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 025051801H + DD 01132318H + DD 0700c001fH + DD 0500bH +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 0701502cbH + DD 05014H + DD imagerel __GSHandlerCheck + DD 01648H +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 01000H + 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 0701002cfH + DD 0500fH + DD imagerel __GSHandlerCheck + DD 01668H +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 01000H + 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 0701502cbH + DD 05014H + DD imagerel __GSHandlerCheck + DD 01648H +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 01000H + 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 0701502cfH + DD 05014H + DD imagerel __GSHandlerCheck + DD 01668H +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 01000H + 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 0701502cfH + DD 05014H + DD imagerel __GSHandlerCheck + DD 01668H +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 01000H + 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_to_target DD 035052201H + DD 011d3322H + DD 070160027H + DD 05015H +xdata 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__is_16_main +_TEXT SEGMENT +s$ = 224 +stbi__is_16_main PROC ; COMDAT + +; 8159 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 8160 : #ifndef STBI_NO_PNG +; 8161 : 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 + +; 8162 : return 1; + + 00030 b8 01 00 00 00 mov eax, 1 + 00035 eb 30 jmp SHORT $LN1@stbi__is_1 +$LN2@stbi__is_1: + +; 8163 : #endif +; 8164 : +; 8165 : #ifndef STBI_NO_PSD +; 8166 : 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 + +; 8167 : return 1; + + 00047 b8 01 00 00 00 mov eax, 1 + 0004c eb 19 jmp SHORT $LN1@stbi__is_1 +$LN3@stbi__is_1: + +; 8168 : #endif +; 8169 : +; 8170 : #ifndef STBI_NO_PNM +; 8171 : 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 + +; 8172 : return 1; + + 0005e b8 01 00 00 00 mov eax, 1 + 00063 eb 02 jmp SHORT $LN1@stbi__is_1 +$LN4@stbi__is_1: + +; 8173 : #endif +; 8174 : return 0; + + 00065 33 c0 xor eax, eax +$LN1@stbi__is_1: + +; 8175 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__info_main +_TEXT SEGMENT +s$ = 224 +x$ = 232 +y$ = 240 +comp$ = 248 +stbi__info_main PROC ; COMDAT + +; 8109 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 8110 : #ifndef STBI_NO_JPEG +; 8111 : 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 + +; 8112 : return 1; + + 00054 b8 01 00 00 00 mov eax, 1 + 00059 e9 7b 01 00 00 jmp $LN1@stbi__info +$LN2@stbi__info: + +; 8113 : #endif +; 8114 : +; 8115 : #ifndef STBI_NO_PNG +; 8116 : 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 + +; 8117 : return 1; + + 00083 b8 01 00 00 00 mov eax, 1 + 00088 e9 4c 01 00 00 jmp $LN1@stbi__info +$LN3@stbi__info: + +; 8118 : #endif +; 8119 : +; 8120 : #ifndef STBI_NO_GIF +; 8121 : 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 + +; 8122 : return 1; + + 000b2 b8 01 00 00 00 mov eax, 1 + 000b7 e9 1d 01 00 00 jmp $LN1@stbi__info +$LN4@stbi__info: + +; 8123 : #endif +; 8124 : +; 8125 : #ifndef STBI_NO_BMP +; 8126 : 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 + +; 8127 : return 1; + + 000e1 b8 01 00 00 00 mov eax, 1 + 000e6 e9 ee 00 00 00 jmp $LN1@stbi__info +$LN5@stbi__info: + +; 8128 : #endif +; 8129 : +; 8130 : #ifndef STBI_NO_PSD +; 8131 : 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 + +; 8132 : return 1; + + 00110 b8 01 00 00 00 mov eax, 1 + 00115 e9 bf 00 00 00 jmp $LN1@stbi__info +$LN6@stbi__info: + +; 8133 : #endif +; 8134 : +; 8135 : #ifndef STBI_NO_PIC +; 8136 : 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 + +; 8137 : return 1; + + 0013f b8 01 00 00 00 mov eax, 1 + 00144 e9 90 00 00 00 jmp $LN1@stbi__info +$LN7@stbi__info: + +; 8138 : #endif +; 8139 : +; 8140 : #ifndef STBI_NO_PNM +; 8141 : 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 + +; 8142 : return 1; + + 0016e b8 01 00 00 00 mov eax, 1 + 00173 eb 64 jmp SHORT $LN1@stbi__info +$LN8@stbi__info: + +; 8143 : #endif +; 8144 : +; 8145 : #ifndef STBI_NO_HDR +; 8146 : 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 + +; 8147 : return 1; + + 0019a b8 01 00 00 00 mov eax, 1 + 0019f eb 38 jmp SHORT $LN1@stbi__info +$LN9@stbi__info: + +; 8148 : #endif +; 8149 : +; 8150 : // test tga last because it's a crappy test! +; 8151 : #ifndef STBI_NO_TGA +; 8152 : 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 + +; 8153 : return 1; + + 001c6 b8 01 00 00 00 mov eax, 1 + 001cb eb 0c jmp SHORT $LN1@stbi__info +$LN10@stbi__info: + +; 8154 : #endif +; 8155 : 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: + +; 8156 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pnm_getinteger +_TEXT SEGMENT +value$ = 4 +s$ = 256 +c$ = 264 +stbi__pnm_getinteger PROC ; COMDAT + +; 8038 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 8039 : int value = 0; + + 00025 c7 45 04 00 00 + 00 00 mov DWORD PTR value$[rbp], 0 +$LN2@stbi__pnm_: + +; 8040 : +; 8041 : 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_ + +; 8042 : 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 + +; 8043 : *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 + +; 8044 : 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_: + +; 8045 : 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_: + +; 8046 : "integer parse overflow", +; 8047 : "Parsing an integer in the PPM header overflowed a 32-bit int"); +; 8048 : } + + 000a8 eb 82 jmp SHORT $LN2@stbi__pnm_ +$LN3@stbi__pnm_: + +; 8049 : +; 8050 : return value; + + 000aa 8b 45 04 mov eax, DWORD PTR value$[rbp] +$LN1@stbi__pnm_: + +; 8051 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pnm_isdigit +_TEXT SEGMENT +tv68 = 192 +c$ = 240 +stbi__pnm_isdigit PROC ; COMDAT + +; 8033 : { + + 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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 8034 : 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] + +; 8035 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pnm_skip_whitespace +_TEXT SEGMENT +s$ = 224 +c$ = 232 +stbi__pnm_skip_whitespace PROC ; COMDAT + +; 8019 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 +$LN2@stbi__pnm_: +$LN5@stbi__pnm_: + +; 8020 : for (;;) { +; 8021 : 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_ + +; 8022 : *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_: + +; 8023 : +; 8024 : 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_: + +; 8025 : break; + + 0007e eb 4a jmp SHORT $LN3@stbi__pnm_ +$LN9@stbi__pnm_: +$LN7@stbi__pnm_: + +; 8026 : +; 8027 : 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_ + +; 8028 : *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_: + +; 8029 : } + + 000c5 e9 5b ff ff ff jmp $LN2@stbi__pnm_ +$LN3@stbi__pnm_: + +; 8030 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pnm_isspace +_TEXT SEGMENT +tv76 = 192 +c$ = 240 +stbi__pnm_isspace PROC ; COMDAT + +; 8014 : { + + 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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 8015 : 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] + +; 8016 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__hdr_convert +_TEXT SEGMENT +f1$1 = 4 +tv152 = 212 +output$ = 256 +input$ = 264 +req_comp$ = 272 +stbi__hdr_convert PROC ; COMDAT + +; 7545 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 7546 : 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_ + +; 7547 : float f1; +; 7548 : // Exponent +; 7549 : 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 + +; 7550 : 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_ + +; 7551 : 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_: + +; 7552 : else { +; 7553 : 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 + +; 7554 : 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 + +; 7555 : 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_: + +; 7556 : } +; 7557 : 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_ + +; 7558 : 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_: + +; 7559 : 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_ + +; 7560 : 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_: + +; 7561 : } else { + + 001ce e9 d5 00 00 00 jmp $LN5@stbi__hdr_ +$LN4@stbi__hdr_: + +; 7562 : 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_: + +; 7563 : case 4: +; 7564 : 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_: + +; 7565 : case 3: +; 7566 : 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 + +; 7567 : break; + + 00271 eb 35 jmp SHORT $LN2@stbi__hdr_ +$LN12@stbi__hdr_: + +; 7568 : case 2: +; 7569 : 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_: + +; 7570 : case 1: +; 7571 : 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_: + +; 7572 : break; +; 7573 : } +; 7574 : } +; 7575 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__hdr_gettoken +_TEXT SEGMENT +len$ = 4 +c$ = 36 +z$ = 288 +buffer$ = 296 +stbi__hdr_gettoken PROC ; COMDAT + +; 7523 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 7524 : int len = 0; + + 00025 c7 45 04 00 00 + 00 00 mov DWORD PTR len$[rbp], 0 + +; 7525 : char c = '\0'; + + 0002c c6 45 24 00 mov BYTE PTR c$[rbp], 0 + +; 7526 : +; 7527 : 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_: + +; 7528 : +; 7529 : 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_ + +; 7530 : 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 + +; 7531 : 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_: + +; 7532 : // flush to end of line +; 7533 : 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_ + +; 7534 : ; + + 0009f eb da jmp SHORT $LN4@stbi__hdr_ +$LN5@stbi__hdr_: + +; 7535 : break; + + 000a1 eb 11 jmp SHORT $LN3@stbi__hdr_ +$LN6@stbi__hdr_: + +; 7536 : } +; 7537 : 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 + +; 7538 : } + + 000b2 eb 8b jmp SHORT $LN2@stbi__hdr_ +$LN3@stbi__hdr_: + +; 7539 : +; 7540 : 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 + +; 7541 : return buffer; + + 000c3 48 8b 85 28 01 + 00 00 mov rax, QWORD PTR buffer$[rbp] + +; 7542 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__hdr_test_core +_TEXT SEGMENT +i$ = 4 +s$ = 256 +signature$ = 264 +stbi__hdr_test_core PROC ; COMDAT + +; 7501 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 7502 : int i; +; 7503 : 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_ + +; 7504 : 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_ + +; 7505 : 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_: + +; 7506 : 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 + +; 7507 : return 1; + + 0007e b8 01 00 00 00 mov eax, 1 +$LN1@stbi__hdr_: + +; 7508 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__load_gif_main_outofmem +_TEXT SEGMENT +tv78 = 192 +g$ = 240 +out$ = 248 +delays$ = 256 +stbi__load_gif_main_outofmem PROC ; COMDAT + +; 7354 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 7355 : 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 + +; 7356 : 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 + +; 7357 : 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 + +; 7358 : +; 7359 : 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 + +; 7360 : 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: + +; 7361 : 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 + +; 7362 : 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: + +; 7363 : 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] + +; 7364 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7169 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 7170 : int dispose; +; 7171 : int first_frame; +; 7172 : int pi; +; 7173 : int pcount; +; 7174 : STBI_NOTUSED(req_comp); +; 7175 : +; 7176 : // on first frame, any non-written pixels get the background colour (non-transparent) +; 7177 : first_frame = 0; + + 0002f c7 45 24 00 00 + 00 00 mov DWORD PTR first_frame$[rbp], 0 + +; 7178 : 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_ + +; 7179 : 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_ + +; 7180 : 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_: + +; 7181 : 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_ + +; 7182 : 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_: + +; 7183 : 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 + +; 7184 : 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 + +; 7185 : 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 + +; 7186 : 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 + +; 7187 : 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_: + +; 7188 : 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_: + +; 7189 : +; 7190 : // image is treated as "transparent" at the start - ie, nothing overwrites the current background; +; 7191 : // background colour is only used for pixels that are not rendered first frame, after that "background" +; 7192 : // color refers to the color that was there the previous frame. +; 7193 : 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 + +; 7194 : 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 + +; 7195 : 4 * pcount); // state of the background (starts transparent) +; 7196 : memset(g->history, 0x00, + + 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 + +; 7197 : pcount); // pixels that were affected previous frame +; 7198 : first_frame = 1; + + 001e1 c7 45 24 01 00 + 00 00 mov DWORD PTR first_frame$[rbp], 1 + +; 7199 : } else { + + 001e8 e9 6b 01 00 00 jmp $LN19@stbi__gif_ +$LN18@stbi__gif_: + +; 7200 : // second frame - how do we dispose of the previous one? +; 7201 : 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 + +; 7202 : 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 + +; 7203 : +; 7204 : 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_ + +; 7205 : dispose = + + 00227 c7 45 04 02 00 + 00 00 mov DWORD PTR dispose$[rbp], 2 +$LN24@stbi__gif_: + +; 7206 : 2; // if I don't have an image to revert back to, default to the old background +; 7207 : } +; 7208 : +; 7209 : 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_ + +; 7210 : 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_ + +; 7211 : 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_ + +; 7212 : 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_: + +; 7213 : } +; 7214 : } + + 002a2 eb 99 jmp SHORT $LN2@stbi__gif_ +$LN3@stbi__gif_: + +; 7215 : } 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_ + +; 7216 : // restore what was changed last frame to background before that frame; +; 7217 : 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_ + +; 7218 : 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_ + +; 7219 : 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_: + +; 7220 : } +; 7221 : } + + 0031e eb 95 jmp SHORT $LN5@stbi__gif_ +$LN6@stbi__gif_: +$LN28@stbi__gif_: +$LN26@stbi__gif_: + +; 7222 : } else { +; 7223 : // This is a non-disposal case eithe way, so just +; 7224 : // leave the pixels as is, and they will become the new background +; 7225 : // 1: do not dispose +; 7226 : // 0: not specified. +; 7227 : } +; 7228 : +; 7229 : // background is what out is after the undoing of the previou frame; +; 7230 : 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_: + +; 7231 : } +; 7232 : +; 7233 : // clear my history; +; 7234 : memset(g->history, 0x00, + + 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_: + +; 7235 : g->w * g->h); // pixels that were affected previous frame +; 7236 : +; 7237 : for (;;) { +; 7238 : 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 + +; 7239 : 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_: + +; 7240 : case 0x2C: /* Image Descriptor */ +; 7241 : { +; 7242 : stbi__int32 x, y, w, h; +; 7243 : stbi_uc *o; +; 7244 : +; 7245 : 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 + +; 7246 : 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 + +; 7247 : 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 + +; 7248 : 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 + +; 7249 : 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_: + +; 7250 : 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_: + +; 7251 : +; 7252 : 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 + +; 7253 : 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 + +; 7254 : 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 + +; 7255 : 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 + +; 7256 : 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 + +; 7257 : 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 + +; 7258 : 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 + +; 7259 : +; 7260 : // if the width of the specified rectangle is 0, that means +; 7261 : // we may not see *any* pixels or the image is malformed; +; 7262 : // to make sure this is caught, move the current y down to +; 7263 : // max_y (which is what out_gif_code checks). +; 7264 : 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_ + +; 7265 : 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_: + +; 7266 : +; 7267 : 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 + +; 7268 : +; 7269 : 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_ + +; 7270 : 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 + +; 7271 : 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 + +; 7272 : } else { + + 005da eb 2b jmp SHORT $LN36@stbi__gif_ +$LN35@stbi__gif_: + +; 7273 : 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 + +; 7274 : 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_: + +; 7275 : } +; 7276 : +; 7277 : 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_ + +; 7278 : 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 + +; 7279 : g->eflags & 0x01 ? g->transparent : -1); +; 7280 : 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_: + +; 7281 : } 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_ + +; 7282 : 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 + +; 7283 : } else + + 006e5 eb 34 jmp SHORT $LN40@stbi__gif_ +$LN39@stbi__gif_: + +; 7284 : 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_: + +; 7285 : +; 7286 : 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 + +; 7287 : 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_ + +; 7288 : return NULL; + + 0073f 33 c0 xor eax, eax + 00741 e9 90 02 00 00 jmp $LN1@stbi__gif_ +$LN41@stbi__gif_: + +; 7289 : +; 7290 : // if this was the first frame, +; 7291 : 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 + +; 7292 : 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_ + +; 7293 : // if first frame, any pixel not drawn to gets the background color +; 7294 : 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_ + +; 7295 : 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_ + +; 7296 : 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 + +; 7297 : 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; +; 7298 : 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_: + +; 7299 : } +; 7300 : } + + 00810 e9 6c ff ff ff jmp $LN13@stbi__gif_ +$LN14@stbi__gif_: +$LN42@stbi__gif_: + +; 7301 : } +; 7302 : +; 7303 : 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_: + +; 7304 : } +; 7305 : +; 7306 : case 0x21: // Comment Extension. +; 7307 : { +; 7308 : int len; +; 7309 : 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 + +; 7310 : 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_ + +; 7311 : 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 + +; 7312 : 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_ + +; 7313 : 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 + +; 7314 : 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 + +; 7315 : 10 * +; 7316 : stbi__get16le( +; 7317 : s); // delay - 1/100th of a second, saving as 1/1000ths. +; 7318 : +; 7319 : // unset old transparent +; 7320 : 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_ + +; 7321 : 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_: + +; 7322 : } +; 7323 : 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_ + +; 7324 : 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 + +; 7325 : 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_ + +; 7326 : 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_: + +; 7327 : } +; 7328 : } else { + + 00929 eb 20 jmp SHORT $LN50@stbi__gif_ +$LN49@stbi__gif_: + +; 7329 : // don't need transparent +; 7330 : 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 + +; 7331 : 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_: + +; 7332 : } +; 7333 : } else { + + 0094b eb 15 jmp SHORT $LN47@stbi__gif_ +$LN46@stbi__gif_: + +; 7334 : 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 + +; 7335 : break; + + 00960 eb 6f jmp SHORT $LN11@stbi__gif_ +$LN47@stbi__gif_: +$LN45@stbi__gif_: +$LN16@stbi__gif_: + +; 7336 : } +; 7337 : } +; 7338 : 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_ + +; 7339 : 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 + +; 7340 : } + + 00993 eb cd jmp SHORT $LN16@stbi__gif_ +$LN17@stbi__gif_: + +; 7341 : break; + + 00995 eb 3a jmp SHORT $LN11@stbi__gif_ +$LN52@stbi__gif_: + +; 7342 : } +; 7343 : +; 7344 : case 0x3B: // gif stream termination code +; 7345 : 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_: + +; 7346 : +; 7347 : default: +; 7348 : 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_: + +; 7349 : } +; 7350 : } + + 009d1 e9 ae f9 ff ff jmp $LN8@stbi__gif_ +$LN1@stbi__gif_: + +; 7351 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7077 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 7078 : stbi_uc lzw_cs; +; 7079 : stbi__int32 len, init_code; +; 7080 : stbi__uint32 first; +; 7081 : stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; +; 7082 : stbi__gif_lzw *p; +; 7083 : +; 7084 : 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 + +; 7085 : 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 + +; 7086 : return NULL; + + 0003d 33 c0 xor eax, eax + 0003f e9 a2 04 00 00 jmp $LN1@stbi__proc +$LN10@stbi__proc: + +; 7087 : 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 + +; 7088 : first = 1; + + 00064 c7 45 64 01 00 + 00 00 mov DWORD PTR first$[rbp], 1 + +; 7089 : 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 + +; 7090 : 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 + +; 7091 : bits = 0; + + 0009b c7 85 04 01 00 + 00 00 00 00 00 mov DWORD PTR bits$[rbp], 0 + +; 7092 : valid_bits = 0; + + 000a5 c7 85 24 01 00 + 00 00 00 00 00 mov DWORD PTR valid_bits$[rbp], 0 + +; 7093 : 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 + +; 7094 : 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 + +; 7095 : 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 + +; 7096 : 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 + +; 7097 : } + + 0010f eb a7 jmp SHORT $LN2@stbi__proc +$LN3@stbi__proc: + +; 7098 : +; 7099 : // support no starting clear code +; 7100 : 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 + +; 7101 : oldcode = -1; + + 00120 c7 85 e4 00 00 + 00 ff ff ff ff mov DWORD PTR oldcode$[rbp], -1 + +; 7102 : +; 7103 : len = 0; + + 0012a c7 45 24 00 00 + 00 00 mov DWORD PTR len$[rbp], 0 +$LN5@stbi__proc: + +; 7104 : for (;;) { +; 7105 : 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 + +; 7106 : if (len == 0) { + + 0013f 83 7d 24 00 cmp DWORD PTR len$[rbp], 0 + 00143 75 28 jne SHORT $LN13@stbi__proc + +; 7107 : 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 + +; 7108 : if (len == 0) + + 00157 83 7d 24 00 cmp DWORD PTR len$[rbp], 0 + 0015b 75 10 jne SHORT $LN14@stbi__proc + +; 7109 : 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: + +; 7110 : } +; 7111 : --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 + +; 7112 : 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 + +; 7113 : 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 + +; 7114 : } else { + + 001ab e9 31 03 00 00 jmp $LN12@stbi__proc +$LN11@stbi__proc: + +; 7115 : 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 + +; 7116 : 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 + +; 7117 : 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 + +; 7118 : // @OPTIMIZE: is there some way we can accelerate the non-clear path? +; 7119 : 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 + +; 7120 : 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 + +; 7121 : 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 + +; 7122 : 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 + +; 7123 : oldcode = -1; + + 00240 c7 85 e4 00 00 + 00 ff ff ff ff mov DWORD PTR oldcode$[rbp], -1 + +; 7124 : 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: + +; 7125 : } 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 + +; 7126 : 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: + +; 7127 : 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 + +; 7128 : 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: + +; 7129 : 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: + +; 7130 : } 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 + +; 7131 : if (first) { + + 002c7 83 7d 64 00 cmp DWORD PTR first$[rbp], 0 + 002cb 74 34 je SHORT $LN21@stbi__proc + +; 7132 : 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: + +; 7133 : } +; 7134 : +; 7135 : 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 + +; 7136 : 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 + +; 7137 : 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 + +; 7138 : 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: + +; 7139 : "Corrupt GIF"); +; 7140 : } +; 7141 : +; 7142 : 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 + +; 7143 : 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 + +; 7144 : 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: + +; 7145 : g->codes[code].first; +; 7146 : } 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 + +; 7147 : 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: + +; 7148 : "Corrupt GIF"); +; 7149 : +; 7150 : 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 + +; 7151 : +; 7152 : 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 + +; 7153 : 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 + +; 7154 : 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: + +; 7155 : } +; 7156 : +; 7157 : 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 + +; 7158 : } else { + + 004ae eb 31 jmp SHORT $LN20@stbi__proc +$LN19@stbi__proc: + +; 7159 : 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: + +; 7160 : } +; 7161 : } +; 7162 : } + + 004e1 e9 4b fc ff ff jmp $LN5@stbi__proc +$LN1@stbi__proc: + +; 7163 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7039 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 7040 : stbi_uc *p, *c; +; 7041 : int idx; +; 7042 : +; 7043 : // recurse to decode the prefixes, since the linked-list is backwards, +; 7044 : // and working backwards through an interleaved image would be nasty +; 7045 : 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_ + +; 7046 : 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_: + +; 7047 : +; 7048 : 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_ + +; 7049 : return; + + 0007e e9 64 02 00 00 jmp $LN1@stbi__out_ +$LN5@stbi__out_: + +; 7050 : +; 7051 : 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 + +; 7052 : 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 + +; 7053 : 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 + +; 7054 : +; 7055 : 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 + +; 7056 : 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_ + +; 7057 : 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 + +; 7058 : 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 + +; 7059 : 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 + +; 7060 : 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_: + +; 7061 : } +; 7062 : 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 + +; 7063 : +; 7064 : 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_ + +; 7065 : 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 + +; 7066 : 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_: + +; 7067 : +; 7068 : 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_ + +; 7069 : 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 + +; 7070 : 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 + +; 7071 : --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 + +; 7072 : } + + 002e2 e9 44 ff ff ff jmp $LN2@stbi__out_ +$LN3@stbi__out_: +$LN7@stbi__out_: +$LN1@stbi__out_: + +; 7073 : } +; 7074 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__gif_info_raw +_TEXT SEGMENT +g$ = 8 +s$ = 256 +x$ = 264 +y$ = 272 +comp$ = 280 +stbi__gif_info_raw PROC ; COMDAT + +; 7021 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 7022 : 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 + +; 7023 : if (!g) + + 0003d 48 83 7d 08 00 cmp QWORD PTR g$[rbp], 0 + 00042 75 11 jne SHORT $LN2@stbi__gif_ + +; 7024 : 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_: + +; 7025 : 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_ + +; 7026 : 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 + +; 7027 : 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 + +; 7028 : return 0; + + 0008e 33 c0 xor eax, eax + 00090 eb 43 jmp SHORT $LN1@stbi__gif_ +$LN3@stbi__gif_: + +; 7029 : } +; 7030 : 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_ + +; 7031 : *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_: + +; 7032 : 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_ + +; 7033 : *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_: + +; 7034 : 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 + +; 7035 : return 1; + + 000d0 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__gif_: + +; 7036 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__gif_header +_TEXT SEGMENT +version$ = 4 +tv225 = 212 +s$ = 256 +g$ = 264 +comp$ = 272 +is_info$ = 280 +stbi__gif_header PROC ; COMDAT + +; 6983 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 6984 : stbi_uc version; +; 6985 : 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_: + +; 6986 : stbi__get8(s) != '8') +; 6987 : 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_: + +; 6988 : +; 6989 : 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 + +; 6990 : 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_ + +; 6991 : 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_: + +; 6992 : 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_ + +; 6993 : 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_: + +; 6994 : +; 6995 : 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 + +; 6996 : 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 + +; 6997 : 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 + +; 6998 : 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 + +; 6999 : 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 + +; 7000 : 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 + +; 7001 : 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 + +; 7002 : +; 7003 : 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_ + +; 7004 : 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_: + +; 7005 : 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_ + +; 7006 : 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_: + +; 7007 : +; 7008 : 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_ + +; 7009 : *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_: + +; 7010 : +; 7011 : 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_ + +; 7012 : return 1; + + 001f1 b8 01 00 00 00 mov eax, 1 + 001f6 eb 5f jmp SHORT $LN1@stbi__gif_ +$LN9@stbi__gif_: + +; 7013 : +; 7014 : 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_ + +; 7015 : 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_: + +; 7016 : +; 7017 : return 1; + + 00252 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__gif_: + +; 7018 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6972 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 6973 : int i; +; 6974 : 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_ + +; 6975 : 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 + +; 6976 : 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 + +; 6977 : 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 + +; 6978 : 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 + +; 6979 : } + + 00107 e9 2c ff ff ff jmp $LN2@stbi__gif_ +$LN3@stbi__gif_: + +; 6980 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__gif_test_raw +_TEXT SEGMENT +sz$ = 4 +s$ = 256 +stbi__gif_test_raw PROC ; COMDAT + +; 6950 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 6951 : int sz; +; 6952 : 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_: + +; 6953 : stbi__get8(s) != '8') +; 6954 : return 0; + + 00070 33 c0 xor eax, eax + 00072 eb 3f jmp SHORT $LN1@stbi__gif_ +$LN2@stbi__gif_: + +; 6955 : 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 + +; 6956 : 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_ + +; 6957 : return 0; + + 00092 33 c0 xor eax, eax + 00094 eb 1d jmp SHORT $LN1@stbi__gif_ +$LN4@stbi__gif_: + +; 6958 : 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_ + +; 6959 : return 0; + + 000aa 33 c0 xor eax, eax + 000ac eb 05 jmp SHORT $LN1@stbi__gif_ +$LN5@stbi__gif_: + +; 6960 : return 1; + + 000ae b8 01 00 00 00 mov eax, 1 +$LN1@stbi__gif_: + +; 6961 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6741 : { + + 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:__079B8C84_stb_image@c + 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00057 90 npad 1 + +; 6742 : 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_: + +; 6743 : stbi__pic_packet packets[10]; +; 6744 : +; 6745 : // this will (should...) cater for even some bizarre stuff like having data +; 6746 : // for the same channel in multiple packets. +; 6747 : do { +; 6748 : stbi__pic_packet *packet; +; 6749 : +; 6750 : 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_ + +; 6751 : 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_: + +; 6752 : +; 6753 : 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 + +; 6754 : +; 6755 : 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 + +; 6756 : 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 + +; 6757 : 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 + +; 6758 : 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 + +; 6759 : +; 6760 : 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 + +; 6761 : +; 6762 : 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_ + +; 6763 : 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_: + +; 6764 : 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_ + +; 6765 : 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_: + +; 6766 : } while (chained); + + 001b2 83 7d 64 00 cmp DWORD PTR chained$[rbp], 0 + 001b6 0f 85 aa fe ff + ff jne $LN4@stbi__pic_ + +; 6767 : +; 6768 : *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 + +; 6769 : +; 6770 : 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_ + +; 6771 : int packet_idx; +; 6772 : +; 6773 : 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_ + +; 6774 : 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 + +; 6775 : 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 + +; 6776 : +; 6777 : 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_ + +; 6778 : default: +; 6779 : 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_: + +; 6780 : "packet has bad compression type"); +; 6781 : +; 6782 : case 0: { //uncompressed +; 6783 : int x; +; 6784 : +; 6785 : 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_ + +; 6786 : 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_ + +; 6787 : 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_: + +; 6788 : break; + + 00341 e9 87 03 00 00 jmp $LN11@stbi__pic_ +$LN35@stbi__pic_: + +; 6789 : } +; 6790 : +; 6791 : case 1: //Pure RLE +; 6792 : { +; 6793 : 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_: + +; 6794 : +; 6795 : 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_ + +; 6796 : stbi_uc count, value[4]; +; 6797 : +; 6798 : 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 + +; 6799 : 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_ + +; 6800 : 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_: + +; 6801 : "bad file", +; 6802 : "file too short (pure read count)"); +; 6803 : +; 6804 : 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_ + +; 6805 : 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_: + +; 6806 : +; 6807 : 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_ + +; 6808 : return 0; + + 003f6 33 c0 xor eax, eax + 003f8 e9 e1 02 00 00 jmp $LN1@stbi__pic_ +$LN38@stbi__pic_: + +; 6809 : +; 6810 : 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_ + +; 6811 : 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_: + +; 6812 : 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 + +; 6813 : } + + 00472 e9 db fe ff ff jmp $LN16@stbi__pic_ +$LN17@stbi__pic_: + +; 6814 : } break; + + 00477 e9 51 02 00 00 jmp $LN11@stbi__pic_ +$LN39@stbi__pic_: + +; 6815 : +; 6816 : case 2: { //Mixed RLE +; 6817 : 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_: + +; 6818 : 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_ + +; 6819 : 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 + +; 6820 : 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_ + +; 6821 : 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_: + +; 6822 : "bad file", +; 6823 : "file too short (mixed read count)"); +; 6824 : +; 6825 : 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_ + +; 6826 : stbi_uc value[4]; +; 6827 : +; 6828 : 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_ + +; 6829 : 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_: + +; 6830 : else +; 6831 : 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_: + +; 6832 : 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_ + +; 6833 : 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_: + +; 6834 : "scanline overrun"); +; 6835 : +; 6836 : 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_ + +; 6837 : return 0; + + 00594 33 c0 xor eax, eax + 00596 e9 43 01 00 00 jmp $LN1@stbi__pic_ +$LN46@stbi__pic_: + +; 6838 : +; 6839 : 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_ + +; 6840 : 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_: + +; 6841 : } else { // Raw + + 005f8 e9 b5 00 00 00 jmp $LN42@stbi__pic_ +$LN41@stbi__pic_: + +; 6842 : ++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 + +; 6843 : 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_ + +; 6844 : 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_: + +; 6845 : "scanline overrun"); +; 6846 : +; 6847 : 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_ + +; 6848 : 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_ + +; 6849 : dest)) +; 6850 : 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_: + +; 6851 : } +; 6852 : 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 + +; 6853 : } + + 006c8 e9 bb fd ff ff jmp $LN21@stbi__pic_ +$LN22@stbi__pic_: +$LN11@stbi__pic_: + +; 6854 : break; +; 6855 : } +; 6856 : } +; 6857 : } + + 006cd e9 45 fb ff ff jmp $LN8@stbi__pic_ +$LN9@stbi__pic_: + +; 6858 : } + + 006d2 e9 1d fb ff ff jmp $LN5@stbi__pic_ +$LN6@stbi__pic_: + +; 6859 : +; 6860 : return result; + + 006d7 48 8b 85 30 04 + 00 00 mov rax, QWORD PTR result$[rbp] +$LN1@stbi__pic_: + +; 6861 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__copyval +_TEXT SEGMENT +mask$ = 4 +i$ = 36 +channel$ = 288 +dest$ = 296 +src$ = 304 +stbi__copyval PROC ; COMDAT + +; 6731 : { + + 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:__079B8C84_stb_image@c + 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00028 90 npad 1 + +; 6732 : int mask = 0x80, i; + + 00029 c7 45 04 80 00 + 00 00 mov DWORD PTR mask$[rbp], 128 ; 00000080H + +; 6733 : +; 6734 : 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 + +; 6735 : 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 + +; 6736 : 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: + +; 6737 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__readval +_TEXT SEGMENT +mask$ = 4 +i$ = 36 +tv75 = 248 +s$ = 288 +channel$ = 296 +dest$ = 304 +stbi__readval PROC ; COMDAT + +; 6716 : { + + 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:__079B8C84_stb_image@c + 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00028 90 npad 1 + +; 6717 : int mask = 0x80, i; + + 00029 c7 45 04 80 00 + 00 00 mov DWORD PTR mask$[rbp], 128 ; 00000080H + +; 6718 : +; 6719 : 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 + +; 6720 : 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 + +; 6721 : 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 + +; 6722 : 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: + +; 6723 : 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: + +; 6724 : } +; 6725 : } + + 000bb e9 79 ff ff ff jmp $LN2@stbi__read +$LN3@stbi__read: + +; 6726 : +; 6727 : return dest; + + 000c0 48 8b 85 30 01 + 00 00 mov rax, QWORD PTR dest$[rbp] +$LN1@stbi__read: + +; 6728 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pic_test_core +_TEXT SEGMENT +i$ = 4 +s$ = 256 +stbi__pic_test_core PROC ; COMDAT + +; 6696 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 6697 : int i; +; 6698 : +; 6699 : 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_ + +; 6700 : return 0; + + 00037 33 c0 xor eax, eax + 00039 eb 46 jmp SHORT $LN1@stbi__pic_ +$LN5@stbi__pic_: + +; 6701 : +; 6702 : 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_ + +; 6703 : 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_: + +; 6704 : +; 6705 : 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_ + +; 6706 : return 0; + + 00078 33 c0 xor eax, eax + 0007a eb 05 jmp SHORT $LN1@stbi__pic_ +$LN6@stbi__pic_: + +; 6707 : +; 6708 : return 1; + + 0007c b8 01 00 00 00 mov eax, 1 +$LN1@stbi__pic_: + +; 6709 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pic_is4 +_TEXT SEGMENT +i$ = 4 +s$ = 256 +str$ = 264 +stbi__pic_is4 PROC ; COMDAT + +; 6686 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 6687 : int i; +; 6688 : 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_ + +; 6689 : 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_ + +; 6690 : 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_: + +; 6691 : +; 6692 : return 1; + + 00064 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__pic_: + +; 6693 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6429 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 6430 : int count, nleft, len; +; 6431 : +; 6432 : count = 0; + + 0002a c7 45 04 00 00 + 00 00 mov DWORD PTR count$[rbp], 0 +$LN2@stbi__psd_: + +; 6433 : 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_ + +; 6434 : 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 + +; 6435 : 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_: + +; 6436 : // No-op. +; 6437 : } 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_ + +; 6438 : // Copy next len+1 bytes literally. +; 6439 : 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 + +; 6440 : 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_ + +; 6441 : return 0; // corrupt data + + 00084 33 c0 xor eax, eax + 00086 e9 bb 00 00 00 jmp $LN1@stbi__psd_ +$LN12@stbi__psd_: + +; 6442 : 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_: + +; 6443 : while (len) { + + 00098 83 7d 44 00 cmp DWORD PTR len$[rbp], 0 + 0009c 74 31 je SHORT $LN5@stbi__psd_ + +; 6444 : *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 + +; 6445 : 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 + +; 6446 : 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 + +; 6447 : } + + 000cd eb c9 jmp SHORT $LN4@stbi__psd_ +$LN5@stbi__psd_: + +; 6448 : } 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_ + +; 6449 : stbi_uc val; +; 6450 : // Next -len+1 bytes in the dest are replicated from next source byte. +; 6451 : // (Interpret len as a negative 8-bit int.) +; 6452 : 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 + +; 6453 : 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_ + +; 6454 : return 0; // corrupt data + + 000ed 33 c0 xor eax, eax + 000ef eb 55 jmp SHORT $LN1@stbi__psd_ +$LN14@stbi__psd_: + +; 6455 : 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 + +; 6456 : 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_: + +; 6457 : while (len) { + + 0010d 83 7d 44 00 cmp DWORD PTR len$[rbp], 0 + 00111 74 29 je SHORT $LN7@stbi__psd_ + +; 6458 : *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 + +; 6459 : 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 + +; 6460 : 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 + +; 6461 : } + + 0013a eb d1 jmp SHORT $LN6@stbi__psd_ +$LN7@stbi__psd_: +$LN13@stbi__psd_: +$LN11@stbi__psd_: +$LN9@stbi__psd_: + +; 6462 : } +; 6463 : } + + 0013c e9 f0 fe ff ff jmp $LN2@stbi__psd_ +$LN3@stbi__psd_: + +; 6464 : +; 6465 : return 1; + + 00141 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__psd_: + +; 6466 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6198 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 6199 : 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 + +; 6200 : stbi__uint16 fiveBitMask = 31; + + 00035 b8 1f 00 00 00 mov eax, 31 + 0003a 66 89 45 24 mov WORD PTR fiveBitMask$[rbp], ax + +; 6201 : // we have 3 channels with 5bits each +; 6202 : 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 + +; 6203 : 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 + +; 6204 : 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 + +; 6205 : // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later +; 6206 : 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 + +; 6207 : 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 + +; 6208 : 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 + +; 6209 : +; 6210 : // some people claim that the most significant bit might be used for alpha +; 6211 : // (possibly if an alpha-bit is set in the "image descriptor byte") +; 6212 : // but that only made 16bit test images completely translucent.. +; 6213 : // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +; 6214 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6060 : { + + 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:__079B8C84_stb_image@c + 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00027 90 npad 1 + +; 6061 : // only RGB or RGBA (incl. 16bit) or grey allowed +; 6062 : 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_ + +; 6063 : *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_: + +; 6064 : 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_: + +; 6065 : case 8: +; 6066 : return STBI_grey; + + 0007a b8 01 00 00 00 mov eax, 1 + 0007f eb 41 jmp SHORT $LN1@stbi__tga_ +$LN6@stbi__tga_: + +; 6067 : case 16: +; 6068 : 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_ + +; 6069 : 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_: + +; 6070 : // fallthrough +; 6071 : case 15: +; 6072 : 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_ + +; 6073 : *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_: + +; 6074 : 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_: + +; 6075 : case 24: // fallthrough +; 6076 : case 32: +; 6077 : 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_: + +; 6078 : default: +; 6079 : return 0; + + 000c0 33 c0 xor eax, eax +$LN1@stbi__tga_: + +; 6080 : } +; 6081 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5710 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 5711 : int hsz; +; 5712 : 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_: + +; 5713 : 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_: + +; 5714 : 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 + +; 5715 : 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 + +; 5716 : 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 + +; 5717 : 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 + +; 5718 : 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 + +; 5719 : 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 + +; 5720 : 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 + +; 5721 : +; 5722 : 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_ + +; 5723 : 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_: + +; 5724 : +; 5725 : 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_ + +; 5726 : 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_: + +; 5727 : if (hsz == 12) { + + 001b3 83 7d 04 0c cmp DWORD PTR hsz$[rbp], 12 + 001b7 75 2d jne SHORT $LN9@stbi__bmp_ + +; 5728 : 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 + +; 5729 : 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 + +; 5730 : } else { + + 001e4 eb 2b jmp SHORT $LN10@stbi__bmp_ +$LN9@stbi__bmp_: + +; 5731 : 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 + +; 5732 : 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_: + +; 5733 : } +; 5734 : 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_ + +; 5735 : 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_: + +; 5736 : 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 + +; 5737 : 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_ + +; 5738 : 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 + +; 5739 : 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_: + +; 5740 : 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_: + +; 5741 : if (compress >= 4) + + 002c4 83 7d 24 04 cmp DWORD PTR compress$1[rbp], 4 + 002c8 7c 34 jl SHORT $LN15@stbi__bmp_ + +; 5742 : 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_: + +; 5743 : "BMP JPEG/PNG", +; 5744 : "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes +; 5745 : 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_ + +; 5746 : 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_: + +; 5747 : "bad BMP"); // bitfields requires 16 or 32 bits/pixel +; 5748 : 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 + +; 5749 : 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 + +; 5750 : 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 + +; 5751 : 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 + +; 5752 : 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 + +; 5753 : 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_: + +; 5754 : if (hsz == 56) { + + 003a1 83 7d 04 38 cmp DWORD PTR hsz$[rbp], 56 ; 00000038H + 003a5 75 34 jne SHORT $LN20@stbi__bmp_ + +; 5755 : 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 + +; 5756 : 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 + +; 5757 : 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 + +; 5758 : 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_: + +; 5759 : } +; 5760 : 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_: + +; 5761 : if (compress == 0) { + + 003f7 83 7d 24 00 cmp DWORD PTR compress$1[rbp], 0 + 003fb 75 15 jne SHORT $LN23@stbi__bmp_ + +; 5762 : 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_: + +; 5763 : } 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_ + +; 5764 : 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 + +; 5765 : 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 + +; 5766 : 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 + +; 5767 : 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 + +; 5768 : // not documented, but generated by photoshop and handled by mspaint +; 5769 : 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_ + +; 5770 : // ?!?!? +; 5771 : 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_: + +; 5772 : } +; 5773 : } else + + 004d5 eb 34 jmp SHORT $LN26@stbi__bmp_ +$LN25@stbi__bmp_: + +; 5774 : 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_: + +; 5775 : } +; 5776 : } else { + + 0050b e9 1b 01 00 00 jmp $LN18@stbi__bmp_ +$LN17@stbi__bmp_: + +; 5777 : // V4/V5 header +; 5778 : int i; +; 5779 : 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_ + +; 5780 : 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_: + +; 5781 : 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 + +; 5782 : 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 + +; 5783 : 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 + +; 5784 : 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 + +; 5785 : if (compress != + + 005a8 83 7d 24 03 cmp DWORD PTR compress$1[rbp], 3 + 005ac 74 10 je SHORT $LN29@stbi__bmp_ + +; 5786 : 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs +; 5787 : 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_: + +; 5788 : 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 + +; 5789 : 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_ + +; 5790 : 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_: + +; 5791 : if (hsz == 124) { + + 005f1 83 7d 04 7c cmp DWORD PTR hsz$[rbp], 124 ; 0000007cH + 005f5 75 34 jne SHORT $LN30@stbi__bmp_ + +; 5792 : 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 + +; 5793 : 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 + +; 5794 : 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 + +; 5795 : 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_: + +; 5796 : } +; 5797 : } +; 5798 : } +; 5799 : return (void *)1; + + 0062b b8 01 00 00 00 mov eax, 1 +$LN1@stbi__bmp_: + +; 5800 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__bmp_set_mask_defaults +_TEXT SEGMENT +info$ = 224 +compress$ = 232 +stbi__bmp_set_mask_defaults PROC ; COMDAT + +; 5683 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 5684 : // BI_BITFIELDS specifies masks explicitly, don't override +; 5685 : 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_ + +; 5686 : return 1; + + 0002d b8 01 00 00 00 mov eax, 1 + 00032 e9 dd 00 00 00 jmp $LN1@stbi__bmp_ +$LN2@stbi__bmp_: + +; 5687 : +; 5688 : 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_ + +; 5689 : 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_ + +; 5690 : 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 + +; 5691 : 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 + +; 5692 : 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_: + +; 5693 : } 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_ + +; 5694 : 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 + +; 5695 : 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 + +; 5696 : 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 + +; 5697 : 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 + +; 5698 : 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 + +; 5699 : 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 +; 5700 : } else { + + 000d1 eb 38 jmp SHORT $LN7@stbi__bmp_ +$LN6@stbi__bmp_: + +; 5701 : // otherwise, use defaults, which is all-0 +; 5702 : 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_: + +; 5703 : } +; 5704 : return 1; + + 0010b b8 01 00 00 00 mov eax, 1 + 00110 eb 02 jmp SHORT $LN1@stbi__bmp_ +$LN3@stbi__bmp_: + +; 5705 : } +; 5706 : return 0; // error + + 00112 33 c0 xor eax, eax +$LN1@stbi__bmp_: + +; 5707 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__shiftsigned +_TEXT SEGMENT +v$ = 224 +shift$ = 232 +bits$ = 240 +stbi__shiftsigned PROC ; COMDAT + +; 5651 : { + + 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:__079B8C84_stb_image@c + 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00027 90 npad 1 + +; 5652 : static unsigned int mul_table[9] = { +; 5653 : 0, +; 5654 : 0xff /*0b11111111*/, +; 5655 : 0x55 /*0b01010101*/, +; 5656 : 0x49 /*0b01001001*/, +; 5657 : 0x11 /*0b00010001*/, +; 5658 : 0x21 /*0b00100001*/, +; 5659 : 0x41 /*0b01000001*/, +; 5660 : 0x81 /*0b10000001*/, +; 5661 : 0x01 /*0b00000001*/, +; 5662 : }; +; 5663 : static unsigned int shift_table[9] = { +; 5664 : 0, 0, 0, 1, 0, 2, 4, 6, 0, +; 5665 : }; +; 5666 : 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 + +; 5667 : 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: + +; 5668 : else +; 5669 : 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: + +; 5670 : 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 26 16 00 + 00 mov r8d, 5670 ; 00001626H + 00075 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 5671 : 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 + +; 5672 : 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 28 16 00 + 00 mov r8d, 5672 ; 00001628H + 000bf 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 5673 : 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 + +; 5674 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__bitcount +_TEXT SEGMENT +a$ = 224 +stbi__bitcount PROC ; COMDAT + +; 5638 : { + + 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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 5639 : 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 + +; 5640 : 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 + +; 5641 : 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 + +; 5642 : 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 + +; 5643 : 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 + +; 5644 : 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 + +; 5645 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__high_bit +_TEXT SEGMENT +n$ = 4 +z$ = 256 +stbi__high_bit PROC ; COMDAT + +; 5611 : { + + 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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 5612 : int n = 0; + + 0001f c7 45 04 00 00 + 00 00 mov DWORD PTR n$[rbp], 0 + +; 5613 : 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 + +; 5614 : return -1; + + 0002f b8 ff ff ff ff mov eax, -1 + 00034 e9 9e 00 00 00 jmp $LN1@stbi__high +$LN2@stbi__high: + +; 5615 : 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 + +; 5616 : 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 + +; 5617 : 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: + +; 5618 : } +; 5619 : 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 + +; 5620 : 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 + +; 5621 : 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: + +; 5622 : } +; 5623 : 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 + +; 5624 : 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 + +; 5625 : 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: + +; 5626 : } +; 5627 : 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 + +; 5628 : 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 + +; 5629 : 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: + +; 5630 : } +; 5631 : 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 + +; 5632 : 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: + +; 5633 : } +; 5634 : return n; + + 000d4 8b 45 04 mov eax, DWORD PTR n$[rbp] +$LN1@stbi__high: + +; 5635 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__bmp_test_raw +_TEXT SEGMENT +r$ = 4 +sz$ = 36 +tv83 = 244 +s$ = 288 +stbi__bmp_test_raw PROC ; COMDAT + +; 5586 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 5587 : int r; +; 5588 : int sz; +; 5589 : 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_ + +; 5590 : return 0; + + 00034 33 c0 xor eax, eax + 00036 e9 9e 00 00 00 jmp $LN1@stbi__bmp_ +$LN2@stbi__bmp_: + +; 5591 : 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_ + +; 5592 : return 0; + + 0004f 33 c0 xor eax, eax + 00051 e9 83 00 00 00 jmp $LN1@stbi__bmp_ +$LN3@stbi__bmp_: + +; 5593 : 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 + +; 5594 : 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 + +; 5595 : 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 + +; 5596 : 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 + +; 5597 : 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 + +; 5598 : 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 + +; 5599 : return r; + + 000d6 8b 45 04 mov eax, DWORD PTR r$[rbp] +$LN1@stbi__bmp_: + +; 5600 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__png_info_raw +_TEXT SEGMENT +p$ = 224 +x$ = 232 +y$ = 240 +comp$ = 248 +stbi__png_info_raw PROC ; COMDAT + +; 5547 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 5548 : 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_ + +; 5549 : 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 + +; 5550 : return 0; + + 00057 33 c0 xor eax, eax + 00059 eb 64 jmp SHORT $LN1@stbi__png_ +$LN2@stbi__png_: + +; 5551 : } +; 5552 : 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_ + +; 5553 : *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_: + +; 5554 : 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_ + +; 5555 : *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_: + +; 5556 : 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_ + +; 5557 : *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_: + +; 5558 : return 1; + + 000ba b8 01 00 00 00 mov eax, 1 +$LN1@stbi__png_: + +; 5559 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5488 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 5489 : void *result = NULL; + + 0002f 48 c7 45 08 00 + 00 00 00 mov QWORD PTR result$[rbp], 0 + +; 5490 : 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: + +; 5491 : 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: + +; 5492 : 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 + +; 5493 : 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 + +; 5494 : 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: + +; 5495 : 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 + +; 5496 : 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: + +; 5497 : else +; 5498 : 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: + +; 5499 : "PNG not supported: unsupported color depth"); +; 5500 : 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 + +; 5501 : 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 + +; 5502 : 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 + +; 5503 : 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 + +; 5504 : 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: + +; 5505 : p->s->img_out_n, req_comp, +; 5506 : p->s->img_x, p->s->img_y); +; 5507 : else +; 5508 : 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: + +; 5509 : p->s->img_out_n, req_comp, +; 5510 : p->s->img_x, p->s->img_y); +; 5511 : 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 + +; 5512 : if (result == NULL) + + 001e9 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0 + 001ee 75 09 jne SHORT $LN12@stbi__do_p + +; 5513 : 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: + +; 5514 : } +; 5515 : *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 + +; 5516 : *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 + +; 5517 : 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 + +; 5518 : *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: + +; 5519 : } +; 5520 : 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 + +; 5521 : 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 + +; 5522 : 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 + +; 5523 : 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 + +; 5524 : 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 + +; 5525 : 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 + +; 5526 : +; 5527 : return result; + + 002a7 48 8b 45 08 mov rax, QWORD PTR result$[rbp] +$LN1@stbi__do_p: + +; 5528 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 +tv345 = 2484 +tv394 = 2484 +tv461 = 2484 +tv197 = 2488 +__$ArrayPad$ = 2496 +z$ = 2544 +scan$ = 2552 +req_comp$ = 2560 +stbi__parse_png_file PROC ; COMDAT + +; 5235 : { + + 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:__079B8C84_stb_image@c + 0004d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00052 90 npad 1 + +; 5236 : stbi_uc palette[1024], pal_img_n = 0; + + 00053 c6 85 24 04 00 + 00 00 mov BYTE PTR pal_img_n$[rbp], 0 + +; 5237 : 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 + +; 5238 : stbi__uint16 tc16[3]; +; 5239 : 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 + +; 5240 : 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 + +; 5241 : 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 + +; 5242 : +; 5243 : 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 + +; 5244 : 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 + +; 5245 : 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 + +; 5246 : +; 5247 : 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 + +; 5248 : return 0; + + 00108 33 c0 xor eax, eax + 0010a e9 98 0d 00 00 jmp $LN1@stbi__pars +$LN21@stbi__pars: + +; 5249 : +; 5250 : 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 + +; 5251 : return 1; + + 00118 b8 01 00 00 00 mov eax, 1 + 0011d e9 85 0d 00 00 jmp $LN1@stbi__pars +$LN22@stbi__pars: +$LN2@stbi__pars: + +; 5252 : +; 5253 : for (;;) { +; 5254 : 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 + +; 5255 : 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 e0 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 a7 08 00 + 00 je $LN72@stbi__pars + 00185 e9 3c 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 17 0c 00 00 jmp $LN93@stbi__pars +$LN23@stbi__pars: + +; 5256 : case STBI__PNG_TYPE('C', 'g', 'B', 'I'): +; 5257 : is_iphone = 1; + + 001af c7 85 a4 05 00 + 00 01 00 00 00 mov DWORD PTR is_iphone$[rbp], 1 + +; 5258 : 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 + +; 5259 : break; + + 001cc e9 c4 0c 00 00 jmp $LN5@stbi__pars +$LN24@stbi__pars: + +; 5260 : case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { +; 5261 : int comp, filter; +; 5262 : if (!first) + + 001d1 83 bd 24 05 00 + 00 00 cmp DWORD PTR first$[rbp], 0 + 001d8 75 11 jne SHORT $LN25@stbi__pars + +; 5263 : 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 bc 0c 00 00 jmp $LN1@stbi__pars +$LN25@stbi__pars: + +; 5264 : first = 0; + + 001eb c7 85 24 05 00 + 00 00 00 00 00 mov DWORD PTR first$[rbp], 0 + +; 5265 : 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 + +; 5266 : 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 98 0c 00 00 jmp $LN1@stbi__pars +$LN26@stbi__pars: + +; 5267 : 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 + +; 5268 : 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 + +; 5269 : 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 + +; 5270 : 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 4c 0c 00 00 jmp $LN1@stbi__pars +$LN27@stbi__pars: + +; 5271 : 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 + +; 5272 : 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 2c 0c 00 00 jmp $LN1@stbi__pars +$LN28@stbi__pars: + +; 5273 : 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 + +; 5274 : 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 + +; 5275 : z->depth != 16) +; 5276 : 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 c1 0b 00 00 jmp $LN1@stbi__pars +$LN29@stbi__pars: + +; 5277 : "PNG not supported: 1/2/4/8/16-bit only"); +; 5278 : 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 + +; 5279 : 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 + +; 5280 : 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 92 0b 00 00 jmp $LN1@stbi__pars +$LN30@stbi__pars: + +; 5281 : 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 + +; 5282 : 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 6b 0b 00 00 jmp $LN1@stbi__pars +$LN31@stbi__pars: + +; 5283 : 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 + +; 5284 : 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: + +; 5285 : 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 + +; 5286 : 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 3b 0b 00 00 jmp $LN1@stbi__pars +$LN34@stbi__pars: +$LN33@stbi__pars: + +; 5287 : 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 + +; 5288 : 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 + +; 5289 : 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 0c 0b 00 00 jmp $LN1@stbi__pars +$LN35@stbi__pars: + +; 5290 : 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 + +; 5291 : 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 + +; 5292 : 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 dd 0a 00 00 jmp $LN1@stbi__pars +$LN36@stbi__pars: + +; 5293 : 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 + +; 5294 : 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 + +; 5295 : 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 ae 0a 00 00 jmp $LN1@stbi__pars +$LN37@stbi__pars: + +; 5296 : 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: + +; 5297 : 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 84 0a 00 00 jmp $LN1@stbi__pars +$LN38@stbi__pars: + +; 5298 : 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 + +; 5299 : 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 + +; 5300 : 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 + +; 5301 : 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 dc 09 00 00 jmp $LN1@stbi__pars +$LN42@stbi__pars: + +; 5302 : } else { + + 004cb eb 44 jmp SHORT $LN41@stbi__pars +$LN40@stbi__pars: + +; 5303 : // if paletted, then pal_n is our final components, and +; 5304 : // img_n is # components to decompress/filter. +; 5305 : 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 + +; 5306 : 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 + +; 5307 : 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 96 09 00 00 jmp $LN1@stbi__pars +$LN43@stbi__pars: +$LN41@stbi__pars: + +; 5308 : } +; 5309 : // even with SCAN_header, have to scan to see if we have a tRNS +; 5310 : break; + + 00511 e9 7f 09 00 00 jmp $LN5@stbi__pars +$LN44@stbi__pars: + +; 5311 : } +; 5312 : +; 5313 : case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { +; 5314 : if (first) + + 00516 83 bd 24 05 00 + 00 00 cmp DWORD PTR first$[rbp], 0 + 0051d 74 11 je SHORT $LN45@stbi__pars + +; 5315 : 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 77 09 00 00 jmp $LN1@stbi__pars +$LN45@stbi__pars: + +; 5316 : 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 + +; 5317 : 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 5a 09 00 00 jmp $LN1@stbi__pars +$LN46@stbi__pars: + +; 5318 : 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 + +; 5319 : 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 + +; 5320 : 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 25 09 00 00 jmp $LN1@stbi__pars +$LN47@stbi__pars: + +; 5321 : 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 + +; 5322 : 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 + +; 5323 : 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 + +; 5324 : 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 + +; 5325 : 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 + +; 5326 : } + + 00617 e9 72 ff ff ff jmp $LN7@stbi__pars +$LN8@stbi__pars: + +; 5327 : break; + + 0061c e9 74 08 00 00 jmp $LN5@stbi__pars +$LN48@stbi__pars: + +; 5328 : } +; 5329 : +; 5330 : case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { +; 5331 : if (first) + + 00621 83 bd 24 05 00 + 00 00 cmp DWORD PTR first$[rbp], 0 + 00628 74 11 je SHORT $LN49@stbi__pars + +; 5332 : 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 6c 08 00 00 jmp $LN1@stbi__pars +$LN49@stbi__pars: + +; 5333 : 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 + +; 5334 : 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 4d 08 00 00 jmp $LN1@stbi__pars +$LN50@stbi__pars: + +; 5335 : 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 + +; 5336 : 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 + +; 5337 : 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 + +; 5338 : return 1; + + 00680 b8 01 00 00 00 mov eax, 1 + 00685 e9 1d 08 00 00 jmp $LN1@stbi__pars +$LN53@stbi__pars: + +; 5339 : } +; 5340 : 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 + +; 5341 : 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 03 08 00 00 jmp $LN1@stbi__pars +$LN54@stbi__pars: + +; 5342 : 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 + +; 5343 : 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 e4 07 00 00 jmp $LN1@stbi__pars +$LN55@stbi__pars: + +; 5344 : pal_img_n = 4; + + 006c3 c6 85 24 04 00 + 00 04 mov BYTE PTR pal_img_n$[rbp], 4 + +; 5345 : 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 + +; 5346 : 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: + +; 5347 : } else { + + 00713 e9 38 01 00 00 jmp $LN52@stbi__pars +$LN51@stbi__pars: + +; 5348 : 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 + +; 5349 : 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 6d 07 00 00 jmp $LN1@stbi__pars +$LN56@stbi__pars: + +; 5350 : 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 + +; 5351 : 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 48 07 00 00 jmp $LN1@stbi__pars +$LN57@stbi__pars: + +; 5352 : has_trans = 1; + + 0075f c6 85 44 04 00 + 00 01 mov BYTE PTR has_trans$[rbp], 1 + +; 5353 : // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. +; 5354 : 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 + +; 5355 : ++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 + +; 5356 : return 1; + + 00785 b8 01 00 00 00 mov eax, 1 + 0078a e9 18 07 00 00 jmp $LN1@stbi__pars +$LN58@stbi__pars: + +; 5357 : } +; 5358 : 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 4b jne SHORT $LN59@stbi__pars + +; 5359 : for (k = 0; k < s->img_n; ++k) + + 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: + 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: + 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 1d jge SHORT $LN14@stbi__pars + +; 5360 : tc16[k] = (stbi__uint16)stbi__get16be( + + 007c8 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 007cf e8 00 00 00 00 call stbi__get16be + 007d4 48 63 8d 44 05 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 007db 66 89 84 4d 84 + 04 00 00 mov WORD PTR tc16$[rbp+rcx*2], ax + 007e3 eb c3 jmp SHORT $LN13@stbi__pars +$LN14@stbi__pars: + +; 5361 : s); // copy the values as-is +; 5362 : } else { + + 007e5 eb 69 jmp SHORT $LN60@stbi__pars +$LN59@stbi__pars: + +; 5363 : for (k = 0; k < s->img_n; ++k) + + 007e7 c7 85 44 05 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 007f1 eb 0e jmp SHORT $LN18@stbi__pars +$LN16@stbi__pars: + 007f3 8b 85 44 05 00 + 00 mov eax, DWORD PTR k$[rbp] + 007f9 ff c0 inc eax + 007fb 89 85 44 05 00 + 00 mov DWORD PTR k$[rbp], eax +$LN18@stbi__pars: + 00801 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00808 8b 40 08 mov eax, DWORD PTR [rax+8] + 0080b 39 85 44 05 00 + 00 cmp DWORD PTR k$[rbp], eax + 00811 7d 3d jge SHORT $LN17@stbi__pars + +; 5364 : tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * + + 00813 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 0081a e8 00 00 00 00 call stbi__get16be + 0081f 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00824 0f b6 c0 movzx eax, al + 00827 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 0082e 48 63 49 20 movsxd rcx, DWORD PTR [rcx+32] + 00832 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:stbi__depth_scale_table + 00839 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 0083d 0f af c1 imul eax, ecx + 00840 48 63 8d 44 05 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00847 88 84 0d 64 04 + 00 00 mov BYTE PTR tc$[rbp+rcx], al + 0084e eb a3 jmp SHORT $LN16@stbi__pars +$LN17@stbi__pars: +$LN60@stbi__pars: +$LN52@stbi__pars: + +; 5365 : stbi__depth_scale_table +; 5366 : [z->depth]; // non 8-bit images will be larger +; 5367 : } +; 5368 : } +; 5369 : break; + + 00850 e9 40 06 00 00 jmp $LN5@stbi__pars +$LN61@stbi__pars: + +; 5370 : } +; 5371 : +; 5372 : case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { +; 5373 : if (first) + + 00855 83 bd 24 05 00 + 00 00 cmp DWORD PTR first$[rbp], 0 + 0085c 74 11 je SHORT $LN62@stbi__pars + +; 5374 : return stbi__err("first not IHDR", "Corrupt PNG"); + + 0085e 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@ + 00865 e8 00 00 00 00 call stbi__err + 0086a e9 38 06 00 00 jmp $LN1@stbi__pars +$LN62@stbi__pars: + +; 5375 : if (pal_img_n && !pal_len) + + 0086f 0f b6 85 24 04 + 00 00 movzx eax, BYTE PTR pal_img_n$[rbp] + 00876 85 c0 test eax, eax + 00878 74 1a je SHORT $LN63@stbi__pars + 0087a 83 bd 04 05 00 + 00 00 cmp DWORD PTR pal_len$[rbp], 0 + 00881 75 11 jne SHORT $LN63@stbi__pars + +; 5376 : return stbi__err("no PLTE", "Corrupt PNG"); + + 00883 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_07CKIELOEH@no?5PLTE@ + 0088a e8 00 00 00 00 call stbi__err + 0088f e9 13 06 00 00 jmp $LN1@stbi__pars +$LN63@stbi__pars: + +; 5377 : if (scan == STBI__SCAN_header) { + + 00894 83 bd f8 09 00 + 00 02 cmp DWORD PTR scan$[rbp], 2 + 0089b 75 26 jne SHORT $LN64@stbi__pars + +; 5378 : // header scan definitely stops at first IDAT +; 5379 : if (pal_img_n) + + 0089d 0f b6 85 24 04 + 00 00 movzx eax, BYTE PTR pal_img_n$[rbp] + 008a4 85 c0 test eax, eax + 008a6 74 11 je SHORT $LN65@stbi__pars + +; 5380 : s->img_n = pal_img_n; + + 008a8 0f b6 85 24 04 + 00 00 movzx eax, BYTE PTR pal_img_n$[rbp] + 008af 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 008b6 89 41 08 mov DWORD PTR [rcx+8], eax +$LN65@stbi__pars: + +; 5381 : return 1; + + 008b9 b8 01 00 00 00 mov eax, 1 + 008be e9 e4 05 00 00 jmp $LN1@stbi__pars +$LN64@stbi__pars: + +; 5382 : } +; 5383 : if (c.length > (1u << 30)) + + 008c3 81 bd e8 05 00 + 00 00 00 00 40 cmp DWORD PTR c$8[rbp], 1073741824 ; 40000000H + 008cd 76 11 jbe SHORT $LN66@stbi__pars + +; 5384 : return stbi__err("IDAT size limit", + + 008cf 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ + 008d6 e8 00 00 00 00 call stbi__err + 008db e9 c7 05 00 00 jmp $LN1@stbi__pars +$LN66@stbi__pars: + +; 5385 : "IDAT section larger than 2^30 bytes"); +; 5386 : if ((int)(ioff + c.length) < (int)ioff) + + 008e0 8b 85 e8 05 00 + 00 mov eax, DWORD PTR c$8[rbp] + 008e6 8b 8d a4 04 00 + 00 mov ecx, DWORD PTR ioff$[rbp] + 008ec 03 c8 add ecx, eax + 008ee 8b c1 mov eax, ecx + 008f0 3b 85 a4 04 00 + 00 cmp eax, DWORD PTR ioff$[rbp] + 008f6 7d 07 jge SHORT $LN67@stbi__pars + +; 5387 : return 0; + + 008f8 33 c0 xor eax, eax + 008fa e9 a8 05 00 00 jmp $LN1@stbi__pars +$LN67@stbi__pars: + +; 5388 : if (ioff + c.length > idata_limit) { + + 008ff 8b 85 e8 05 00 + 00 mov eax, DWORD PTR c$8[rbp] + 00905 8b 8d a4 04 00 + 00 mov ecx, DWORD PTR ioff$[rbp] + 0090b 03 c8 add ecx, eax + 0090d 8b c1 mov eax, ecx + 0090f 3b 85 c4 04 00 + 00 cmp eax, DWORD PTR idata_limit$[rbp] + 00915 0f 86 ba 00 00 + 00 jbe $LN68@stbi__pars + +; 5389 : stbi__uint32 idata_limit_old = idata_limit; + + 0091b 8b 85 c4 04 00 + 00 mov eax, DWORD PTR idata_limit$[rbp] + 00921 89 85 44 06 00 + 00 mov DWORD PTR idata_limit_old$11[rbp], eax + +; 5390 : stbi_uc *p; +; 5391 : if (idata_limit == 0) + + 00927 83 bd c4 04 00 + 00 00 cmp DWORD PTR idata_limit$[rbp], 0 + 0092e 75 30 jne SHORT $LN69@stbi__pars + +; 5392 : idata_limit = c.length > 4096 ? c.length : 4096; + + 00930 81 bd e8 05 00 + 00 00 10 00 00 cmp DWORD PTR c$8[rbp], 4096 ; 00001000H + 0093a 76 0e jbe SHORT $LN101@stbi__pars + 0093c 8b 85 e8 05 00 + 00 mov eax, DWORD PTR c$8[rbp] + 00942 89 85 b4 09 00 + 00 mov DWORD PTR tv345[rbp], eax + 00948 eb 0a jmp SHORT $LN102@stbi__pars +$LN101@stbi__pars: + 0094a c7 85 b4 09 00 + 00 00 10 00 00 mov DWORD PTR tv345[rbp], 4096 ; 00001000H +$LN102@stbi__pars: + 00954 8b 85 b4 09 00 + 00 mov eax, DWORD PTR tv345[rbp] + 0095a 89 85 c4 04 00 + 00 mov DWORD PTR idata_limit$[rbp], eax +$LN69@stbi__pars: +$LN19@stbi__pars: + +; 5393 : while (ioff + c.length > idata_limit) + + 00960 8b 85 e8 05 00 + 00 mov eax, DWORD PTR c$8[rbp] + 00966 8b 8d a4 04 00 + 00 mov ecx, DWORD PTR ioff$[rbp] + 0096c 03 c8 add ecx, eax + 0096e 8b c1 mov eax, ecx + 00970 3b 85 c4 04 00 + 00 cmp eax, DWORD PTR idata_limit$[rbp] + 00976 76 10 jbe SHORT $LN20@stbi__pars + +; 5394 : idata_limit *= 2; + + 00978 8b 85 c4 04 00 + 00 mov eax, DWORD PTR idata_limit$[rbp] + 0097e d1 e0 shl eax, 1 + 00980 89 85 c4 04 00 + 00 mov DWORD PTR idata_limit$[rbp], eax + 00986 eb d8 jmp SHORT $LN19@stbi__pars +$LN20@stbi__pars: + +; 5395 : STBI_NOTUSED(idata_limit_old); +; 5396 : p = (stbi_uc *)STBI_REALLOC_SIZED(z->idata, idata_limit_old, + + 00988 8b 85 c4 04 00 + 00 mov eax, DWORD PTR idata_limit$[rbp] + 0098e 8b d0 mov edx, eax + 00990 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00997 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 0099b ff 15 00 00 00 + 00 call QWORD PTR __imp_realloc + 009a1 48 89 85 68 06 + 00 00 mov QWORD PTR p$12[rbp], rax + +; 5397 : idata_limit); +; 5398 : if (p == NULL) + + 009a8 48 83 bd 68 06 + 00 00 00 cmp QWORD PTR p$12[rbp], 0 + 009b0 75 11 jne SHORT $LN70@stbi__pars + +; 5399 : return stbi__err("outofmem", "Out of memory"); + + 009b2 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 009b9 e8 00 00 00 00 call stbi__err + 009be e9 e4 04 00 00 jmp $LN1@stbi__pars +$LN70@stbi__pars: + +; 5400 : z->idata = p; + + 009c3 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 009ca 48 8b 8d 68 06 + 00 00 mov rcx, QWORD PTR p$12[rbp] + 009d1 48 89 48 08 mov QWORD PTR [rax+8], rcx +$LN68@stbi__pars: + +; 5401 : } +; 5402 : if (!stbi__getn(s, z->idata + ioff, c.length)) + + 009d5 8b 85 a4 04 00 + 00 mov eax, DWORD PTR ioff$[rbp] + 009db 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 009e2 48 03 41 08 add rax, QWORD PTR [rcx+8] + 009e6 44 8b 85 e8 05 + 00 00 mov r8d, DWORD PTR c$8[rbp] + 009ed 48 8b d0 mov rdx, rax + 009f0 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 009f7 e8 00 00 00 00 call stbi__getn + 009fc 85 c0 test eax, eax + 009fe 75 11 jne SHORT $LN71@stbi__pars + +; 5403 : return stbi__err("outofdata", "Corrupt PNG"); + + 00a00 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_09MNNCNKEO@outofdata@ + 00a07 e8 00 00 00 00 call stbi__err + 00a0c e9 96 04 00 00 jmp $LN1@stbi__pars +$LN71@stbi__pars: + +; 5404 : ioff += c.length; + + 00a11 8b 85 e8 05 00 + 00 mov eax, DWORD PTR c$8[rbp] + 00a17 8b 8d a4 04 00 + 00 mov ecx, DWORD PTR ioff$[rbp] + 00a1d 03 c8 add ecx, eax + 00a1f 8b c1 mov eax, ecx + 00a21 89 85 a4 04 00 + 00 mov DWORD PTR ioff$[rbp], eax + +; 5405 : break; + + 00a27 e9 69 04 00 00 jmp $LN5@stbi__pars +$LN72@stbi__pars: + +; 5406 : } +; 5407 : +; 5408 : case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { +; 5409 : stbi__uint32 raw_len, bpl; +; 5410 : if (first) + + 00a2c 83 bd 24 05 00 + 00 00 cmp DWORD PTR first$[rbp], 0 + 00a33 74 11 je SHORT $LN73@stbi__pars + +; 5411 : return stbi__err("first not IHDR", "Corrupt PNG"); + + 00a35 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@ + 00a3c e8 00 00 00 00 call stbi__err + 00a41 e9 61 04 00 00 jmp $LN1@stbi__pars +$LN73@stbi__pars: + +; 5412 : if (scan != STBI__SCAN_load) + + 00a46 83 bd f8 09 00 + 00 00 cmp DWORD PTR scan$[rbp], 0 + 00a4d 74 0a je SHORT $LN74@stbi__pars + +; 5413 : return 1; + + 00a4f b8 01 00 00 00 mov eax, 1 + 00a54 e9 4e 04 00 00 jmp $LN1@stbi__pars +$LN74@stbi__pars: + +; 5414 : if (z->idata == NULL) + + 00a59 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00a60 48 83 78 08 00 cmp QWORD PTR [rax+8], 0 + 00a65 75 11 jne SHORT $LN75@stbi__pars + +; 5415 : return stbi__err("no IDAT", "Corrupt PNG"); + + 00a67 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_07MLPECBNA@no?5IDAT@ + 00a6e e8 00 00 00 00 call stbi__err + 00a73 e9 2f 04 00 00 jmp $LN1@stbi__pars +$LN75@stbi__pars: + +; 5416 : // initial guess for decoded data size to avoid unnecessary reallocs +; 5417 : bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + + 00a78 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00a7f 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00a86 8b 00 mov eax, DWORD PTR [rax] + 00a88 0f af 41 20 imul eax, DWORD PTR [rcx+32] + 00a8c 83 c0 07 add eax, 7 + 00a8f 33 d2 xor edx, edx + 00a91 b9 08 00 00 00 mov ecx, 8 + 00a96 f7 f1 div ecx + 00a98 89 85 a4 06 00 + 00 mov DWORD PTR bpl$14[rbp], eax + +; 5418 : raw_len = bpl * s->img_y * s->img_n /* pixels */ + + + 00a9e 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00aa5 8b 8d a4 06 00 + 00 mov ecx, DWORD PTR bpl$14[rbp] + 00aab 0f af 48 04 imul ecx, DWORD PTR [rax+4] + 00aaf 8b c1 mov eax, ecx + 00ab1 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00ab8 0f af 41 08 imul eax, DWORD PTR [rcx+8] + 00abc 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00ac3 03 41 04 add eax, DWORD PTR [rcx+4] + 00ac6 89 85 84 06 00 + 00 mov DWORD PTR raw_len$13[rbp], eax + +; 5419 : s->img_y /* filter mode per row */; +; 5420 : z->expanded = (stbi_uc *)stbi_zlib_decode_malloc_guesssize_headerflag( + + 00acc 83 bd a4 05 00 + 00 00 cmp DWORD PTR is_iphone$[rbp], 0 + 00ad3 75 0c jne SHORT $LN103@stbi__pars + 00ad5 c7 85 b4 09 00 + 00 01 00 00 00 mov DWORD PTR tv394[rbp], 1 + 00adf eb 0a jmp SHORT $LN104@stbi__pars +$LN103@stbi__pars: + 00ae1 c7 85 b4 09 00 + 00 00 00 00 00 mov DWORD PTR tv394[rbp], 0 +$LN104@stbi__pars: + 00aeb 8b 85 b4 09 00 + 00 mov eax, DWORD PTR tv394[rbp] + 00af1 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00af5 4c 8d 8d 84 06 + 00 00 lea r9, QWORD PTR raw_len$13[rbp] + 00afc 44 8b 85 84 06 + 00 00 mov r8d, DWORD PTR raw_len$13[rbp] + 00b03 8b 95 a4 04 00 + 00 mov edx, DWORD PTR ioff$[rbp] + 00b09 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00b10 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 00b14 e8 00 00 00 00 call stbi_zlib_decode_malloc_guesssize_headerflag + 00b19 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00b20 48 89 41 10 mov QWORD PTR [rcx+16], rax + +; 5421 : (char *)z->idata, ioff, raw_len, (int *)&raw_len, !is_iphone); +; 5422 : if (z->expanded == NULL) + + 00b24 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00b2b 48 83 78 10 00 cmp QWORD PTR [rax+16], 0 + 00b30 75 07 jne SHORT $LN76@stbi__pars + +; 5423 : return 0; // zlib should set error + + 00b32 33 c0 xor eax, eax + 00b34 e9 6e 03 00 00 jmp $LN1@stbi__pars +$LN76@stbi__pars: + +; 5424 : STBI_FREE(z->idata); + + 00b39 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00b40 48 8b 48 08 mov rcx, QWORD PTR [rax+8] + 00b44 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 00b4a 90 npad 1 + +; 5425 : z->idata = NULL; + + 00b4b 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00b52 48 c7 40 08 00 + 00 00 00 mov QWORD PTR [rax+8], 0 + +; 5426 : if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) + + 00b5a 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00b61 8b 40 08 mov eax, DWORD PTR [rax+8] + 00b64 ff c0 inc eax + 00b66 39 85 00 0a 00 + 00 cmp DWORD PTR req_comp$[rbp], eax + 00b6c 75 14 jne SHORT $LN80@stbi__pars + 00b6e 83 bd 00 0a 00 + 00 03 cmp DWORD PTR req_comp$[rbp], 3 + 00b75 74 0b je SHORT $LN80@stbi__pars + 00b77 0f b6 85 24 04 + 00 00 movzx eax, BYTE PTR pal_img_n$[rbp] + 00b7e 85 c0 test eax, eax + 00b80 74 0b je SHORT $LN79@stbi__pars +$LN80@stbi__pars: + 00b82 0f b6 85 44 04 + 00 00 movzx eax, BYTE PTR has_trans$[rbp] + 00b89 85 c0 test eax, eax + 00b8b 74 18 je SHORT $LN77@stbi__pars +$LN79@stbi__pars: + +; 5427 : s->img_out_n = s->img_n + 1; + + 00b8d 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00b94 8b 40 08 mov eax, DWORD PTR [rax+8] + 00b97 ff c0 inc eax + 00b99 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00ba0 89 41 0c mov DWORD PTR [rcx+12], eax + 00ba3 eb 14 jmp SHORT $LN78@stbi__pars +$LN77@stbi__pars: + +; 5428 : else +; 5429 : s->img_out_n = s->img_n; + + 00ba5 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00bac 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00bb3 8b 49 08 mov ecx, DWORD PTR [rcx+8] + 00bb6 89 48 0c mov DWORD PTR [rax+12], ecx +$LN78@stbi__pars: + +; 5430 : if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, + + 00bb9 8b 85 64 05 00 + 00 mov eax, DWORD PTR interlace$[rbp] + 00bbf 89 44 24 30 mov DWORD PTR [rsp+48], eax + 00bc3 8b 85 84 05 00 + 00 mov eax, DWORD PTR color$[rbp] + 00bc9 89 44 24 28 mov DWORD PTR [rsp+40], eax + 00bcd 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00bd4 8b 40 20 mov eax, DWORD PTR [rax+32] + 00bd7 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00bdb 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00be2 44 8b 48 0c mov r9d, DWORD PTR [rax+12] + 00be6 44 8b 85 84 06 + 00 00 mov r8d, DWORD PTR raw_len$13[rbp] + 00bed 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00bf4 48 8b 50 10 mov rdx, QWORD PTR [rax+16] + 00bf8 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00bff e8 00 00 00 00 call stbi__create_png_image + 00c04 85 c0 test eax, eax + 00c06 75 07 jne SHORT $LN81@stbi__pars + +; 5431 : color, interlace)) +; 5432 : return 0; + + 00c08 33 c0 xor eax, eax + 00c0a e9 98 02 00 00 jmp $LN1@stbi__pars +$LN81@stbi__pars: + +; 5433 : if (has_trans) { + + 00c0f 0f b6 85 44 04 + 00 00 movzx eax, BYTE PTR has_trans$[rbp] + 00c16 85 c0 test eax, eax + 00c18 74 61 je SHORT $LN82@stbi__pars + +; 5434 : if (z->depth == 16) { + + 00c1a 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00c21 83 78 20 10 cmp DWORD PTR [rax+32], 16 + 00c25 75 2b jne SHORT $LN83@stbi__pars + +; 5435 : if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) + + 00c27 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00c2e 44 8b 40 0c mov r8d, DWORD PTR [rax+12] + 00c32 48 8d 95 84 04 + 00 00 lea rdx, QWORD PTR tc16$[rbp] + 00c39 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00c40 e8 00 00 00 00 call stbi__compute_transparency16 + 00c45 85 c0 test eax, eax + 00c47 75 07 jne SHORT $LN85@stbi__pars + +; 5436 : return 0; + + 00c49 33 c0 xor eax, eax + 00c4b e9 57 02 00 00 jmp $LN1@stbi__pars +$LN85@stbi__pars: + +; 5437 : } else { + + 00c50 eb 29 jmp SHORT $LN84@stbi__pars +$LN83@stbi__pars: + +; 5438 : if (!stbi__compute_transparency(z, tc, s->img_out_n)) + + 00c52 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00c59 44 8b 40 0c mov r8d, DWORD PTR [rax+12] + 00c5d 48 8d 95 64 04 + 00 00 lea rdx, QWORD PTR tc$[rbp] + 00c64 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00c6b e8 00 00 00 00 call stbi__compute_transparency + 00c70 85 c0 test eax, eax + 00c72 75 07 jne SHORT $LN86@stbi__pars + +; 5439 : return 0; + + 00c74 33 c0 xor eax, eax + 00c76 e9 2c 02 00 00 jmp $LN1@stbi__pars +$LN86@stbi__pars: +$LN84@stbi__pars: +$LN82@stbi__pars: + +; 5440 : } +; 5441 : } +; 5442 : if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + + 00c7b 83 bd a4 05 00 + 00 00 cmp DWORD PTR is_iphone$[rbp], 0 + 00c82 74 74 je SHORT $LN87@stbi__pars + 00c84 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_set + 00c89 8b c0 mov eax, eax + 00c8b 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00c91 65 48 8b 14 25 + 58 00 00 00 mov rdx, QWORD PTR gs:88 + 00c9a 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8] + 00c9e 83 3c 08 00 cmp DWORD PTR [rax+rcx], 0 + 00ca2 74 25 je SHORT $LN105@stbi__pars + 00ca4 b8 00 00 00 00 mov eax, OFFSET FLAT:stbi__de_iphone_flag_local + 00ca9 8b c0 mov eax, eax + 00cab 8b 0d 00 00 00 + 00 mov ecx, DWORD PTR _tls_index + 00cb1 65 48 8b 14 25 + 58 00 00 00 mov rdx, QWORD PTR gs:88 + 00cba 48 8b 0c ca mov rcx, QWORD PTR [rdx+rcx*8] + 00cbe 8b 04 08 mov eax, DWORD PTR [rax+rcx] + 00cc1 89 85 b4 09 00 + 00 mov DWORD PTR tv461[rbp], eax + 00cc7 eb 0c jmp SHORT $LN106@stbi__pars +$LN105@stbi__pars: + 00cc9 8b 05 00 00 00 + 00 mov eax, DWORD PTR stbi__de_iphone_flag_global + 00ccf 89 85 b4 09 00 + 00 mov DWORD PTR tv461[rbp], eax +$LN106@stbi__pars: + 00cd5 83 bd b4 09 00 + 00 00 cmp DWORD PTR tv461[rbp], 0 + 00cdc 74 1a je SHORT $LN87@stbi__pars + 00cde 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00ce5 83 78 0c 02 cmp DWORD PTR [rax+12], 2 + 00ce9 7e 0d jle SHORT $LN87@stbi__pars + +; 5443 : stbi__de_iphone(z); + + 00ceb 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00cf2 e8 00 00 00 00 call stbi__de_iphone + 00cf7 90 npad 1 +$LN87@stbi__pars: + +; 5444 : if (pal_img_n) { + + 00cf8 0f b6 85 24 04 + 00 00 movzx eax, BYTE PTR pal_img_n$[rbp] + 00cff 85 c0 test eax, eax + 00d01 74 6a je SHORT $LN88@stbi__pars + +; 5445 : // pal_img_n == 3 or 4 +; 5446 : s->img_n = pal_img_n; // record the actual colors we had + + 00d03 0f b6 85 24 04 + 00 00 movzx eax, BYTE PTR pal_img_n$[rbp] + 00d0a 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00d11 89 41 08 mov DWORD PTR [rcx+8], eax + +; 5447 : s->img_out_n = pal_img_n; + + 00d14 0f b6 85 24 04 + 00 00 movzx eax, BYTE PTR pal_img_n$[rbp] + 00d1b 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00d22 89 41 0c mov DWORD PTR [rcx+12], eax + +; 5448 : if (req_comp >= 3) + + 00d25 83 bd 00 0a 00 + 00 03 cmp DWORD PTR req_comp$[rbp], 3 + 00d2c 7c 10 jl SHORT $LN90@stbi__pars + +; 5449 : s->img_out_n = req_comp; + + 00d2e 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00d35 8b 8d 00 0a 00 + 00 mov ecx, DWORD PTR req_comp$[rbp] + 00d3b 89 48 0c mov DWORD PTR [rax+12], ecx +$LN90@stbi__pars: + +; 5450 : if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + + 00d3e 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00d45 44 8b 48 0c mov r9d, DWORD PTR [rax+12] + 00d49 44 8b 85 04 05 + 00 00 mov r8d, DWORD PTR pal_len$[rbp] + 00d50 48 8d 55 10 lea rdx, QWORD PTR palette$[rbp] + 00d54 48 8b 8d f0 09 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00d5b e8 00 00 00 00 call stbi__expand_png_palette + 00d60 85 c0 test eax, eax + 00d62 75 07 jne SHORT $LN91@stbi__pars + +; 5451 : return 0; + + 00d64 33 c0 xor eax, eax + 00d66 e9 3c 01 00 00 jmp $LN1@stbi__pars +$LN91@stbi__pars: + +; 5452 : } else if (has_trans) { + + 00d6b eb 21 jmp SHORT $LN89@stbi__pars +$LN88@stbi__pars: + 00d6d 0f b6 85 44 04 + 00 00 movzx eax, BYTE PTR has_trans$[rbp] + 00d74 85 c0 test eax, eax + 00d76 74 16 je SHORT $LN92@stbi__pars + +; 5453 : // non-paletted image with tRNS -> source image has (constant) alpha +; 5454 : ++s->img_n; + + 00d78 48 8b 85 c8 05 + 00 00 mov rax, QWORD PTR s$[rbp] + 00d7f 8b 40 08 mov eax, DWORD PTR [rax+8] + 00d82 ff c0 inc eax + 00d84 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00d8b 89 41 08 mov DWORD PTR [rcx+8], eax +$LN92@stbi__pars: +$LN89@stbi__pars: + +; 5455 : } +; 5456 : STBI_FREE(z->expanded); + + 00d8e 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00d95 48 8b 48 10 mov rcx, QWORD PTR [rax+16] + 00d99 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 00d9f 90 npad 1 + +; 5457 : z->expanded = NULL; + + 00da0 48 8b 85 f0 09 + 00 00 mov rax, QWORD PTR z$[rbp] + 00da7 48 c7 40 10 00 + 00 00 00 mov QWORD PTR [rax+16], 0 + +; 5458 : // end of PNG chunk, read and skip CRC +; 5459 : stbi__get32be(s); + + 00daf 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00db6 e8 00 00 00 00 call stbi__get32be + 00dbb 90 npad 1 + +; 5460 : return 1; + + 00dbc b8 01 00 00 00 mov eax, 1 + 00dc1 e9 e1 00 00 00 jmp $LN1@stbi__pars +$LN93@stbi__pars: + +; 5461 : } +; 5462 : +; 5463 : default: +; 5464 : // if critical, fail +; 5465 : if (first) + + 00dc6 83 bd 24 05 00 + 00 00 cmp DWORD PTR first$[rbp], 0 + 00dcd 74 11 je SHORT $LN94@stbi__pars + +; 5466 : return stbi__err("first not IHDR", "Corrupt PNG"); + + 00dcf 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0P@JEAFOMAF@first?5not?5IHDR@ + 00dd6 e8 00 00 00 00 call stbi__err + 00ddb e9 c7 00 00 00 jmp $LN1@stbi__pars +$LN94@stbi__pars: + +; 5467 : if ((c.type & (1 << 29)) == 0) { + + 00de0 8b 85 ec 05 00 + 00 mov eax, DWORD PTR c$8[rbp+4] + 00de6 25 00 00 00 20 and eax, 536870912 ; 20000000H + 00deb 85 c0 test eax, eax + 00ded 0f 85 8f 00 00 + 00 jne $LN95@stbi__pars + +; 5468 : #ifndef STBI_NO_FAILURE_STRINGS +; 5469 : // not threadsafe +; 5470 : static char invalid_chunk[] = "XXXX PNG chunk not known"; +; 5471 : invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + + 00df3 8b 85 ec 05 00 + 00 mov eax, DWORD PTR c$8[rbp+4] + 00df9 c1 e8 18 shr eax, 24 + 00dfc 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00e01 b9 01 00 00 00 mov ecx, 1 + 00e06 48 6b c9 00 imul rcx, rcx, 0 + 00e0a 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 + 00e11 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 5472 : invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + + 00e14 8b 85 ec 05 00 + 00 mov eax, DWORD PTR c$8[rbp+4] + 00e1a c1 e8 10 shr eax, 16 + 00e1d 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00e22 b9 01 00 00 00 mov ecx, 1 + 00e27 48 6b c9 01 imul rcx, rcx, 1 + 00e2b 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 + 00e32 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 5473 : invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + + 00e35 8b 85 ec 05 00 + 00 mov eax, DWORD PTR c$8[rbp+4] + 00e3b c1 e8 08 shr eax, 8 + 00e3e 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00e43 b9 01 00 00 00 mov ecx, 1 + 00e48 48 6b c9 02 imul rcx, rcx, 2 + 00e4c 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 + 00e53 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 5474 : invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + + 00e56 8b 85 ec 05 00 + 00 mov eax, DWORD PTR c$8[rbp+4] + 00e5c 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00e61 b9 01 00 00 00 mov ecx, 1 + 00e66 48 6b c9 03 imul rcx, rcx, 3 + 00e6a 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 + 00e71 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 5475 : #endif +; 5476 : return stbi__err(invalid_chunk, + + 00e74 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:?invalid_chunk@?BP@??stbi__parse_png_file@@9@9 + 00e7b e8 00 00 00 00 call stbi__err + 00e80 eb 25 jmp SHORT $LN1@stbi__pars +$LN95@stbi__pars: + +; 5477 : "PNG not supported: unknown PNG chunk type"); +; 5478 : } +; 5479 : stbi__skip(s, c.length); + + 00e82 8b 95 e8 05 00 + 00 mov edx, DWORD PTR c$8[rbp] + 00e88 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00e8f e8 00 00 00 00 call stbi__skip + 00e94 90 npad 1 +$LN5@stbi__pars: + +; 5480 : break; +; 5481 : } +; 5482 : // end of PNG chunk, read and skip CRC +; 5483 : stbi__get32be(s); + + 00e95 48 8b 8d c8 05 + 00 00 mov rcx, QWORD PTR s$[rbp] + 00e9c e8 00 00 00 00 call stbi__get32be + 00ea1 90 npad 1 + +; 5484 : } + + 00ea2 e9 7b f2 ff ff jmp $LN2@stbi__pars +$LN1@stbi__pars: + +; 5485 : } + + 00ea7 48 8b f8 mov rdi, rax + 00eaa 48 8d 4d c0 lea rcx, QWORD PTR [rbp-64] + 00eae 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:stbi__parse_png_file$rtcFrameData + 00eb5 e8 00 00 00 00 call _RTC_CheckStackVars + 00eba 48 8b c7 mov rax, rdi + 00ebd 48 8b 8d c0 09 + 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] + 00ec4 48 33 cd xor rcx, rbp + 00ec7 e8 00 00 00 00 call __security_check_cookie + 00ecc 48 8d a5 d8 09 + 00 00 lea rsp, QWORD PTR [rbp+2520] + 00ed3 5f pop rdi + 00ed4 5d pop rbp + 00ed5 c3 ret 0 +stbi__parse_png_file ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5189 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 5190 : 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 + +; 5191 : 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 + +; 5192 : 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 + +; 5193 : +; 5194 : 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 + +; 5195 : 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 + +; 5196 : 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 + +; 5197 : 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 + +; 5198 : 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 + +; 5199 : 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 + +; 5200 : } + + 000cd eb 92 jmp SHORT $LN2@stbi__de_i +$LN3@stbi__de_i: + +; 5201 : } else { + + 000cf e9 59 02 00 00 jmp $LN12@stbi__de_i +$LN11@stbi__de_i: + +; 5202 : 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 52 14 00 + 00 mov r8d, 5202 ; 00001452H + 000e4 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 5203 : 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 + +; 5204 : // convert bgr to rgb and unpremultiply +; 5205 : 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 + +; 5206 : 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 + +; 5207 : 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 + +; 5208 : 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 + +; 5209 : 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 + +; 5210 : 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 + +; 5211 : 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 + +; 5212 : 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 + +; 5213 : } else { + + 00268 eb 39 jmp SHORT $LN16@stbi__de_i +$LN15@stbi__de_i: + +; 5214 : 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 + +; 5215 : 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: + +; 5216 : } +; 5217 : 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 + +; 5218 : } + + 002af e9 ad fe ff ff jmp $LN5@stbi__de_i +$LN6@stbi__de_i: + +; 5219 : } else { + + 002b4 eb 77 jmp SHORT $LN14@stbi__de_i +$LN13@stbi__de_i: + +; 5220 : // convert bgr to rgb +; 5221 : 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 + +; 5222 : 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 + +; 5223 : 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 + +; 5224 : 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 + +; 5225 : 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 + +; 5226 : } + + 0032b eb 92 jmp SHORT $LN8@stbi__de_i +$LN9@stbi__de_i: +$LN14@stbi__de_i: +$LN12@stbi__de_i: + +; 5227 : } +; 5228 : } +; 5229 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5112 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 5113 : 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 + +; 5114 : 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 + +; 5115 : +; 5116 : 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 + +; 5117 : if (p == NULL) + + 00073 48 83 7d 48 00 cmp QWORD PTR p$[rbp], 0 + 00078 75 11 jne SHORT $LN8@stbi__expa + +; 5118 : 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: + +; 5119 : +; 5120 : // between here and free(out) below, exitting would leak +; 5121 : 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 + +; 5122 : +; 5123 : 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 + +; 5124 : 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 + +; 5125 : 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 + +; 5126 : 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 + +; 5127 : 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 + +; 5128 : 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 + +; 5129 : 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 + +; 5130 : } + + 00150 e9 54 ff ff ff jmp $LN2@stbi__expa +$LN3@stbi__expa: + +; 5131 : } else { + + 00155 e9 dc 00 00 00 jmp $LN10@stbi__expa +$LN9@stbi__expa: + +; 5132 : 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 + +; 5133 : 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 + +; 5134 : 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 + +; 5135 : 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 + +; 5136 : 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 + +; 5137 : 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 + +; 5138 : 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 + +; 5139 : } + + 00231 e9 2d ff ff ff jmp $LN5@stbi__expa +$LN6@stbi__expa: +$LN10@stbi__expa: + +; 5140 : } +; 5141 : 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 + +; 5142 : 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 + +; 5143 : +; 5144 : STBI_NOTUSED(len); +; 5145 : +; 5146 : return 1; + + 00257 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__expa: + +; 5147 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5087 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 5088 : 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 + +; 5089 : 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 + +; 5090 : 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 + +; 5091 : +; 5092 : // compute color-based transparency, assuming we've +; 5093 : // already got 65535 as the alpha value in the output +; 5094 : 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 e6 13 00 + 00 mov r8d, 5094 ; 000013e6H + 00070 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 5095 : +; 5096 : 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 + +; 5097 : 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 + +; 5098 : 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 + +; 5099 : 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 + +; 5100 : } + + 0010f eb 8b jmp SHORT $LN2@stbi__comp +$LN3@stbi__comp: + +; 5101 : } else { + + 00111 e9 bc 00 00 00 jmp $LN9@stbi__comp +$LN8@stbi__comp: + +; 5102 : 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 + +; 5103 : 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 + +; 5104 : 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: + +; 5105 : 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 + +; 5106 : } + + 001cd e9 4d ff ff ff jmp $LN5@stbi__comp +$LN6@stbi__comp: +$LN9@stbi__comp: + +; 5107 : } +; 5108 : return 1; + + 001d2 b8 01 00 00 00 mov eax, 1 + +; 5109 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5062 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 5063 : 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 + +; 5064 : 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 + +; 5065 : 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 + +; 5066 : +; 5067 : // compute color-based transparency, assuming we've +; 5068 : // already got 255 as the alpha value in the output +; 5069 : 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 cd 13 00 + 00 mov r8d, 5069 ; 000013cdH + 00070 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 5070 : +; 5071 : 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 + +; 5072 : 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 + +; 5073 : 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 + +; 5074 : 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 + +; 5075 : } + + 0010e eb 8c jmp SHORT $LN2@stbi__comp +$LN3@stbi__comp: + +; 5076 : } else { + + 00110 e9 ba 00 00 00 jmp $LN9@stbi__comp +$LN8@stbi__comp: + +; 5077 : 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 + +; 5078 : 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 + +; 5079 : 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: + +; 5080 : 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 + +; 5081 : } + + 001ca e9 4f ff ff ff jmp $LN5@stbi__comp +$LN6@stbi__comp: +$LN9@stbi__comp: + +; 5082 : } +; 5083 : return 1; + + 001cf b8 01 00 00 00 mov eax, 1 + +; 5084 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5013 : { + + 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:__079B8C84_stb_image@c + 00042 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00047 90 npad 1 + +; 5014 : 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 + +; 5015 : 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 + +; 5016 : stbi_uc *final; +; 5017 : int p; +; 5018 : if (!interlaced) + + 0007d 83 bd 30 04 00 + 00 00 cmp DWORD PTR interlaced$[rbp], 0 + 00084 75 5b jne SHORT $LN11@stbi__crea + +; 5019 : 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: + +; 5020 : a->s->img_y, depth, color); +; 5021 : +; 5022 : // de-interlacing +; 5023 : 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 + +; 5024 : if (!final) + + 0010a 48 83 7d 48 00 cmp QWORD PTR final$[rbp], 0 + 0010f 75 11 jne SHORT $LN12@stbi__crea + +; 5025 : 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: + +; 5026 : 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 + +; 5027 : 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 + +; 5028 : 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 + +; 5029 : 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 + +; 5030 : 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 + +; 5031 : int i, j, x, y; +; 5032 : // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 +; 5033 : 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 + +; 5034 : 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 + +; 5035 : 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 + +; 5036 : 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 + +; 5037 : 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 + +; 5038 : depth, color)) { +; 5039 : 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 + +; 5040 : return 0; + + 0036e 33 c0 xor eax, eax + 00370 e9 87 01 00 00 jmp $LN1@stbi__crea +$LN14@stbi__crea: + +; 5041 : } +; 5042 : 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 + +; 5043 : 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 + +; 5044 : 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 + +; 5045 : 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 + +; 5046 : 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 + +; 5047 : out_x * out_bytes, +; 5048 : a->out + (j * x + i) * out_bytes, out_bytes); +; 5049 : } + + 00497 e9 11 ff ff ff jmp $LN8@stbi__crea +$LN9@stbi__crea: + +; 5050 : } + + 0049c e9 e0 fe ff ff jmp $LN5@stbi__crea +$LN6@stbi__crea: + +; 5051 : 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 + +; 5052 : 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 + +; 5053 : 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: + +; 5054 : } +; 5055 : } + + 004e3 e9 43 fc ff ff jmp $LN2@stbi__crea +$LN3@stbi__crea: + +; 5056 : 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 + +; 5057 : +; 5058 : return 1; + + 004f7 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__crea: + +; 5059 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 +k$ = 228 +img_n$ = 260 +output_bytes$ = 292 +filter_bytes$ = 324 +width$ = 356 +cur$1 = 392 +prior$2 = 424 +filter$3 = 452 +nk$4 = 484 +cur$5 = 520 +in$6 = 552 +scale$7 = 580 +q$8 = 612 +cur$9 = 648 +cur16$10 = 680 +tv391 = 1076 +tv65 = 1076 +tv168 = 1076 +tv216 = 1076 +tv274 = 1076 +tv343 = 1076 +tv413 = 1076 +tv546 = 1076 +tv618 = 1076 +tv666 = 1076 +tv360 = 1080 +tv563 = 1080 +a$ = 1120 +raw$ = 1128 +raw_len$ = 1136 +out_n$ = 1144 +x$ = 1152 +y$ = 1160 +depth$ = 1168 +color$ = 1176 +stbi__create_png_image_raw PROC ; COMDAT + +; 4698 : { + + 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 68 04 + 00 00 sub rsp, 1128 ; 00000468H + 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00022 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 4699 : int bytes = (depth == 16 ? 2 : 1); + + 0002f 83 bd 90 04 00 + 00 10 cmp DWORD PTR depth$[rbp], 16 + 00036 75 0c jne SHORT $LN159@stbi__crea + 00038 c7 85 34 04 00 + 00 02 00 00 00 mov DWORD PTR tv65[rbp], 2 + 00042 eb 0a jmp SHORT $LN160@stbi__crea +$LN159@stbi__crea: + 00044 c7 85 34 04 00 + 00 01 00 00 00 mov DWORD PTR tv65[rbp], 1 +$LN160@stbi__crea: + 0004e 8b 85 34 04 00 + 00 mov eax, DWORD PTR tv65[rbp] + 00054 89 45 04 mov DWORD PTR bytes$[rbp], eax + +; 4700 : stbi__context *s = a->s; + + 00057 48 8b 85 60 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 + +; 4701 : stbi__uint32 i, j, stride = x * out_n * bytes; + + 00065 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 0006b 0f af 85 78 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 + +; 4702 : stbi__uint32 img_len, img_width_bytes; +; 4703 : int k; +; 4704 : int img_n = s->img_n; // copy it into a local for later + + 0007c 48 8b 45 28 mov rax, QWORD PTR s$[rbp] + 00080 8b 40 08 mov eax, DWORD PTR [rax+8] + 00083 89 85 04 01 00 + 00 mov DWORD PTR img_n$[rbp], eax + +; 4705 : +; 4706 : int output_bytes = out_n * bytes; + + 00089 8b 85 78 04 00 + 00 mov eax, DWORD PTR out_n$[rbp] + 0008f 0f af 45 04 imul eax, DWORD PTR bytes$[rbp] + 00093 89 85 24 01 00 + 00 mov DWORD PTR output_bytes$[rbp], eax + +; 4707 : int filter_bytes = img_n * bytes; + + 00099 8b 85 04 01 00 + 00 mov eax, DWORD PTR img_n$[rbp] + 0009f 0f af 45 04 imul eax, DWORD PTR bytes$[rbp] + 000a3 89 85 44 01 00 + 00 mov DWORD PTR filter_bytes$[rbp], eax + +; 4708 : int width = x; + + 000a9 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 000af 89 85 64 01 00 + 00 mov DWORD PTR width$[rbp], eax + +; 4709 : +; 4710 : STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); + + 000b5 48 8b 45 28 mov rax, QWORD PTR s$[rbp] + 000b9 8b 40 08 mov eax, DWORD PTR [rax+8] + 000bc 39 85 78 04 00 + 00 cmp DWORD PTR out_n$[rbp], eax + 000c2 74 2d je SHORT $LN161@stbi__crea + 000c4 48 8b 45 28 mov rax, QWORD PTR s$[rbp] + 000c8 8b 40 08 mov eax, DWORD PTR [rax+8] + 000cb ff c0 inc eax + 000cd 39 85 78 04 00 + 00 cmp DWORD PTR out_n$[rbp], eax + 000d3 74 1c je SHORT $LN161@stbi__crea + 000d5 41 b8 66 12 00 + 00 mov r8d, 4710 ; 00001266H + 000db 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 000e2 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@ + 000e9 ff 15 00 00 00 + 00 call QWORD PTR __imp__wassert + 000ef 33 c0 xor eax, eax +$LN161@stbi__crea: + +; 4711 : a->out = (stbi_uc *)stbi__malloc_mad3(x, y, output_bytes, + + 000f1 45 33 c9 xor r9d, r9d + 000f4 44 8b 85 24 01 + 00 00 mov r8d, DWORD PTR output_bytes$[rbp] + 000fb 8b 95 88 04 00 + 00 mov edx, DWORD PTR y$[rbp] + 00101 8b 8d 80 04 00 + 00 mov ecx, DWORD PTR x$[rbp] + 00107 e8 00 00 00 00 call stbi__malloc_mad3 + 0010c 48 8b 8d 60 04 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00113 48 89 41 18 mov QWORD PTR [rcx+24], rax + +; 4712 : 0); // extra bytes to write off the end into +; 4713 : if (!a->out) + + 00117 48 8b 85 60 04 + 00 00 mov rax, QWORD PTR a$[rbp] + 0011e 48 83 78 18 00 cmp QWORD PTR [rax+24], 0 + 00123 75 11 jne SHORT $LN98@stbi__crea + +; 4714 : return stbi__err("outofmem", "Out of memory"); + + 00125 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_08NOGIMCHF@outofmem@ + 0012c e8 00 00 00 00 call stbi__err + 00131 e9 55 1a 00 00 jmp $LN1@stbi__crea +$LN98@stbi__crea: + +; 4715 : +; 4716 : if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) + + 00136 41 b9 07 00 00 + 00 mov r9d, 7 + 0013c 44 8b 85 90 04 + 00 00 mov r8d, DWORD PTR depth$[rbp] + 00143 8b 95 80 04 00 + 00 mov edx, DWORD PTR x$[rbp] + 00149 8b 8d 04 01 00 + 00 mov ecx, DWORD PTR img_n$[rbp] + 0014f e8 00 00 00 00 call stbi__mad3sizes_valid + 00154 85 c0 test eax, eax + 00156 75 11 jne SHORT $LN99@stbi__crea + +; 4717 : return stbi__err("too large", "Corrupt PNG"); + + 00158 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_09OJDLMMBJ@too?5large@ + 0015f e8 00 00 00 00 call stbi__err + 00164 e9 22 1a 00 00 jmp $LN1@stbi__crea +$LN99@stbi__crea: + +; 4718 : img_width_bytes = (((img_n * x * depth) + 7) >> 3); + + 00169 8b 85 04 01 00 + 00 mov eax, DWORD PTR img_n$[rbp] + 0016f 0f af 85 80 04 + 00 00 imul eax, DWORD PTR x$[rbp] + 00176 0f af 85 90 04 + 00 00 imul eax, DWORD PTR depth$[rbp] + 0017d 83 c0 07 add eax, 7 + 00180 c1 e8 03 shr eax, 3 + 00183 89 85 c4 00 00 + 00 mov DWORD PTR img_width_bytes$[rbp], eax + +; 4719 : img_len = (img_width_bytes + 1) * y; + + 00189 8b 85 c4 00 00 + 00 mov eax, DWORD PTR img_width_bytes$[rbp] + 0018f ff c0 inc eax + 00191 0f af 85 88 04 + 00 00 imul eax, DWORD PTR y$[rbp] + 00198 89 85 a4 00 00 + 00 mov DWORD PTR img_len$[rbp], eax + +; 4720 : +; 4721 : // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, +; 4722 : // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), +; 4723 : // so just check for raw_len < img_len always. +; 4724 : if (raw_len < img_len) + + 0019e 8b 85 a4 00 00 + 00 mov eax, DWORD PTR img_len$[rbp] + 001a4 39 85 70 04 00 + 00 cmp DWORD PTR raw_len$[rbp], eax + 001aa 73 11 jae SHORT $LN100@stbi__crea + +; 4725 : return stbi__err("not enough pixels", "Corrupt PNG"); + + 001ac 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ + 001b3 e8 00 00 00 00 call stbi__err + 001b8 e9 ce 19 00 00 jmp $LN1@stbi__crea +$LN100@stbi__crea: + +; 4726 : +; 4727 : for (j = 0; j < y; ++j) { + + 001bd c7 45 64 00 00 + 00 00 mov DWORD PTR j$[rbp], 0 + 001c4 eb 08 jmp SHORT $LN4@stbi__crea +$LN2@stbi__crea: + 001c6 8b 45 64 mov eax, DWORD PTR j$[rbp] + 001c9 ff c0 inc eax + 001cb 89 45 64 mov DWORD PTR j$[rbp], eax +$LN4@stbi__crea: + 001ce 8b 85 88 04 00 + 00 mov eax, DWORD PTR y$[rbp] + 001d4 39 45 64 cmp DWORD PTR j$[rbp], eax + 001d7 0f 83 28 10 00 + 00 jae $LN3@stbi__crea + +; 4728 : stbi_uc *cur = a->out + stride * j; + + 001dd 8b 85 84 00 00 + 00 mov eax, DWORD PTR stride$[rbp] + 001e3 0f af 45 64 imul eax, DWORD PTR j$[rbp] + 001e7 8b c0 mov eax, eax + 001e9 48 8b 8d 60 04 + 00 00 mov rcx, QWORD PTR a$[rbp] + 001f0 48 03 41 18 add rax, QWORD PTR [rcx+24] + 001f4 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + +; 4729 : stbi_uc *prior; +; 4730 : int filter = *raw++; + + 001fb 48 8b 85 68 04 + 00 00 mov rax, QWORD PTR raw$[rbp] + 00202 0f b6 00 movzx eax, BYTE PTR [rax] + 00205 89 85 c4 01 00 + 00 mov DWORD PTR filter$3[rbp], eax + 0020b 48 8b 85 68 04 + 00 00 mov rax, QWORD PTR raw$[rbp] + 00212 48 ff c0 inc rax + 00215 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + +; 4731 : +; 4732 : if (filter > 4) + + 0021c 83 bd c4 01 00 + 00 04 cmp DWORD PTR filter$3[rbp], 4 + 00223 7e 11 jle SHORT $LN101@stbi__crea + +; 4733 : return stbi__err("invalid filter", "Corrupt PNG"); + + 00225 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0P@FBBCPGMN@invalid?5filter@ + 0022c e8 00 00 00 00 call stbi__err + 00231 e9 55 19 00 00 jmp $LN1@stbi__crea +$LN101@stbi__crea: + +; 4734 : +; 4735 : if (depth < 8) { + + 00236 83 bd 90 04 00 + 00 08 cmp DWORD PTR depth$[rbp], 8 + 0023d 7d 5e jge SHORT $LN102@stbi__crea + +; 4736 : if (img_width_bytes > x) + + 0023f 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00245 39 85 c4 00 00 + 00 cmp DWORD PTR img_width_bytes$[rbp], eax + 0024b 76 11 jbe SHORT $LN103@stbi__crea + +; 4737 : return stbi__err("invalid width", "Corrupt PNG"); + + 0024d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0O@MKGNGALN@invalid?5width@ + 00254 e8 00 00 00 00 call stbi__err + 00259 e9 2d 19 00 00 jmp $LN1@stbi__crea +$LN103@stbi__crea: + +; 4738 : cur += x * out_n - + + 0025e 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00264 0f af 85 78 04 + 00 00 imul eax, DWORD PTR out_n$[rbp] + 0026b 2b 85 c4 00 00 + 00 sub eax, DWORD PTR img_width_bytes$[rbp] + 00271 8b c0 mov eax, eax + 00273 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 0027a 48 03 c8 add rcx, rax + 0027d 48 8b c1 mov rax, rcx + 00280 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + +; 4739 : img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place +; 4740 : filter_bytes = 1; + + 00287 c7 85 44 01 00 + 00 01 00 00 00 mov DWORD PTR filter_bytes$[rbp], 1 + +; 4741 : width = img_width_bytes; + + 00291 8b 85 c4 00 00 + 00 mov eax, DWORD PTR img_width_bytes$[rbp] + 00297 89 85 64 01 00 + 00 mov DWORD PTR width$[rbp], eax +$LN102@stbi__crea: + +; 4742 : } +; 4743 : prior = cur - + + 0029d 8b 85 84 00 00 + 00 mov eax, DWORD PTR stride$[rbp] + 002a3 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 002aa 48 2b c8 sub rcx, rax + 002ad 48 8b c1 mov rax, rcx + 002b0 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax + +; 4744 : stride; // bugfix: need to compute this after 'cur +=' computation above +; 4745 : +; 4746 : // if first row, use special filter that doesn't sample previous row +; 4747 : if (j == 0) + + 002b7 83 7d 64 00 cmp DWORD PTR j$[rbp], 0 + 002bb 75 18 jne SHORT $LN104@stbi__crea + +; 4748 : filter = first_row_filter[filter]; + + 002bd 48 63 85 c4 01 + 00 00 movsxd rax, DWORD PTR filter$3[rbp] + 002c4 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:first_row_filter + 002cb 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 002cf 89 85 c4 01 00 + 00 mov DWORD PTR filter$3[rbp], eax +$LN104@stbi__crea: + +; 4749 : +; 4750 : // handle first byte explicitly +; 4751 : for (k = 0; k < filter_bytes; ++k) { + + 002d5 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 002df eb 0e jmp SHORT $LN7@stbi__crea +$LN5@stbi__crea: + 002e1 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 002e7 ff c0 inc eax + 002e9 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN7@stbi__crea: + 002ef 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 002f5 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 002fb 0f 8d b0 01 00 + 00 jge $LN6@stbi__crea + +; 4752 : switch (filter) { + + 00301 8b 85 c4 01 00 + 00 mov eax, DWORD PTR filter$3[rbp] + 00307 89 85 34 04 00 + 00 mov DWORD PTR tv168[rbp], eax + 0030d 83 bd 34 04 00 + 00 06 cmp DWORD PTR tv168[rbp], 6 + 00314 0f 87 92 01 00 + 00 ja $LN8@stbi__crea + 0031a 48 63 85 34 04 + 00 00 movsxd rax, DWORD PTR tv168[rbp] + 00321 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__ImageBase + 00328 8b 84 81 00 00 + 00 00 mov eax, DWORD PTR $LN168@stbi__crea[rcx+rax*4] + 0032f 48 03 c1 add rax, rcx + 00332 ff e0 jmp rax +$LN105@stbi__crea: + +; 4753 : case STBI__F_none: +; 4754 : cur[k] = raw[k]; + + 00334 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 0033b 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00342 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00349 4c 8b 85 68 04 + 00 00 mov r8, QWORD PTR raw$[rbp] + 00350 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 00355 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4755 : break; + + 00358 e9 4f 01 00 00 jmp $LN8@stbi__crea +$LN106@stbi__crea: + +; 4756 : case STBI__F_sub: +; 4757 : cur[k] = raw[k]; + + 0035d 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00364 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 0036b 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00372 4c 8b 85 68 04 + 00 00 mov r8, QWORD PTR raw$[rbp] + 00379 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 0037e 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4758 : break; + + 00381 e9 26 01 00 00 jmp $LN8@stbi__crea +$LN107@stbi__crea: + +; 4759 : case STBI__F_up: +; 4760 : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + + 00386 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 0038d 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00394 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 00398 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 0039f 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 003a6 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 003aa 03 c1 add eax, ecx + 003ac 25 ff 00 00 00 and eax, 255 ; 000000ffH + 003b1 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 003b8 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 003bf 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4761 : break; + + 003c2 e9 e5 00 00 00 jmp $LN8@stbi__crea +$LN108@stbi__crea: + +; 4762 : case STBI__F_avg: +; 4763 : cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); + + 003c7 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 003ce 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 003d5 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 003d9 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 003e0 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 003e7 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 003eb d1 f9 sar ecx, 1 + 003ed 03 c1 add eax, ecx + 003ef 25 ff 00 00 00 and eax, 255 ; 000000ffH + 003f4 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 003fb 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00402 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4764 : break; + + 00405 e9 a2 00 00 00 jmp $LN8@stbi__crea +$LN109@stbi__crea: + +; 4765 : case STBI__F_paeth: +; 4766 : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); + + 0040a 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00411 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00418 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 0041c 89 85 34 04 00 + 00 mov DWORD PTR tv216[rbp], eax + 00422 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00429 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 00430 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00434 45 33 c0 xor r8d, r8d + 00437 8b d1 mov edx, ecx + 00439 33 c9 xor ecx, ecx + 0043b e8 00 00 00 00 call stbi__paeth + 00440 8b 8d 34 04 00 + 00 mov ecx, DWORD PTR tv216[rbp] + 00446 03 c8 add ecx, eax + 00448 8b c1 mov eax, ecx + 0044a 25 ff 00 00 00 and eax, 255 ; 000000ffH + 0044f 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00456 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 0045d 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4767 : break; + + 00460 eb 4a jmp SHORT $LN8@stbi__crea +$LN110@stbi__crea: + +; 4768 : case STBI__F_avg_first: +; 4769 : cur[k] = raw[k]; + + 00462 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00469 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00470 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00477 4c 8b 85 68 04 + 00 00 mov r8, QWORD PTR raw$[rbp] + 0047e 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 00483 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4770 : break; + + 00486 eb 24 jmp SHORT $LN8@stbi__crea +$LN111@stbi__crea: + +; 4771 : case STBI__F_paeth_first: +; 4772 : cur[k] = raw[k]; + + 00488 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 0048f 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00496 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 0049d 4c 8b 85 68 04 + 00 00 mov r8, QWORD PTR raw$[rbp] + 004a4 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 004a9 88 04 0a mov BYTE PTR [rdx+rcx], al +$LN8@stbi__crea: + +; 4773 : break; +; 4774 : } +; 4775 : } + + 004ac e9 30 fe ff ff jmp $LN5@stbi__crea +$LN6@stbi__crea: + +; 4776 : +; 4777 : if (depth == 8) { + + 004b1 83 bd 90 04 00 + 00 08 cmp DWORD PTR depth$[rbp], 8 + 004b8 75 76 jne SHORT $LN112@stbi__crea + +; 4778 : if (img_n != out_n) + + 004ba 8b 85 78 04 00 + 00 mov eax, DWORD PTR out_n$[rbp] + 004c0 39 85 04 01 00 + 00 cmp DWORD PTR img_n$[rbp], eax + 004c6 74 12 je SHORT $LN114@stbi__crea + +; 4779 : cur[img_n] = 255; // first pixel + + 004c8 48 63 85 04 01 + 00 00 movsxd rax, DWORD PTR img_n$[rbp] + 004cf 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 004d6 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH +$LN114@stbi__crea: + +; 4780 : raw += img_n; + + 004da 48 63 85 04 01 + 00 00 movsxd rax, DWORD PTR img_n$[rbp] + 004e1 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 004e8 48 03 c8 add rcx, rax + 004eb 48 8b c1 mov rax, rcx + 004ee 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + +; 4781 : cur += out_n; + + 004f5 48 63 85 78 04 + 00 00 movsxd rax, DWORD PTR out_n$[rbp] + 004fc 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00503 48 03 c8 add rcx, rax + 00506 48 8b c1 mov rax, rcx + 00509 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + +; 4782 : prior += out_n; + + 00510 48 63 85 78 04 + 00 00 movsxd rax, DWORD PTR out_n$[rbp] + 00517 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 0051e 48 03 c8 add rcx, rax + 00521 48 8b c1 mov rax, rcx + 00524 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax + 0052b e9 c8 00 00 00 jmp $LN113@stbi__crea +$LN112@stbi__crea: + +; 4783 : } else if (depth == 16) { + + 00530 83 bd 90 04 00 + 00 10 cmp DWORD PTR depth$[rbp], 16 + 00537 0f 85 88 00 00 + 00 jne $LN115@stbi__crea + +; 4784 : if (img_n != out_n) { + + 0053d 8b 85 78 04 00 + 00 mov eax, DWORD PTR out_n$[rbp] + 00543 39 85 04 01 00 + 00 cmp DWORD PTR img_n$[rbp], eax + 00549 74 27 je SHORT $LN117@stbi__crea + +; 4785 : cur[filter_bytes] = 255; // first pixel top byte + + 0054b 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00552 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00559 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + +; 4786 : cur[filter_bytes + 1] = 255; // first pixel bottom byte + + 0055d 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 00563 ff c0 inc eax + 00565 48 98 cdqe + 00567 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 0056e c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH +$LN117@stbi__crea: + +; 4787 : } +; 4788 : raw += filter_bytes; + + 00572 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00579 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00580 48 03 c8 add rcx, rax + 00583 48 8b c1 mov rax, rcx + 00586 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + +; 4789 : cur += output_bytes; + + 0058d 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00594 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 0059b 48 03 c8 add rcx, rax + 0059e 48 8b c1 mov rax, rcx + 005a1 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + +; 4790 : prior += output_bytes; + + 005a8 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 005af 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 005b6 48 03 c8 add rcx, rax + 005b9 48 8b c1 mov rax, rcx + 005bc 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax + +; 4791 : } else { + + 005c3 eb 33 jmp SHORT $LN116@stbi__crea +$LN115@stbi__crea: + +; 4792 : raw += 1; + + 005c5 48 8b 85 68 04 + 00 00 mov rax, QWORD PTR raw$[rbp] + 005cc 48 ff c0 inc rax + 005cf 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + +; 4793 : cur += 1; + + 005d6 48 8b 85 88 01 + 00 00 mov rax, QWORD PTR cur$1[rbp] + 005dd 48 ff c0 inc rax + 005e0 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + +; 4794 : prior += 1; + + 005e7 48 8b 85 a8 01 + 00 00 mov rax, QWORD PTR prior$2[rbp] + 005ee 48 ff c0 inc rax + 005f1 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN116@stbi__crea: +$LN113@stbi__crea: + +; 4795 : } +; 4796 : +; 4797 : // this is a little gross, so that we don't switch per-pixel or per-component +; 4798 : if (depth < 8 || img_n == out_n) { + + 005f8 83 bd 90 04 00 + 00 08 cmp DWORD PTR depth$[rbp], 8 + 005ff 7c 12 jl SHORT $LN120@stbi__crea + 00601 8b 85 78 04 00 + 00 mov eax, DWORD PTR out_n$[rbp] + 00607 39 85 04 01 00 + 00 cmp DWORD PTR img_n$[rbp], eax + 0060d 0f 85 d8 03 00 + 00 jne $LN118@stbi__crea +$LN120@stbi__crea: + +; 4799 : int nk = (width - 1) * filter_bytes; + + 00613 8b 85 64 01 00 + 00 mov eax, DWORD PTR width$[rbp] + 00619 ff c8 dec eax + 0061b 0f af 85 44 01 + 00 00 imul eax, DWORD PTR filter_bytes$[rbp] + 00622 89 85 e4 01 00 + 00 mov DWORD PTR nk$4[rbp], eax + +; 4800 : #define STBI__CASE(f) \ +; 4801 : case f: \ +; 4802 : for (k = 0; k < nk; ++k) +; 4803 : switch (filter) { + + 00628 8b 85 c4 01 00 + 00 mov eax, DWORD PTR filter$3[rbp] + 0062e 89 85 34 04 00 + 00 mov DWORD PTR tv274[rbp], eax + 00634 83 bd 34 04 00 + 00 06 cmp DWORD PTR tv274[rbp], 6 + 0063b 0f 87 8a 03 00 + 00 ja $LN10@stbi__crea + 00641 48 63 85 34 04 + 00 00 movsxd rax, DWORD PTR tv274[rbp] + 00648 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__ImageBase + 0064f 8b 84 81 00 00 + 00 00 mov eax, DWORD PTR $LN167@stbi__crea[rcx+rax*4] + 00656 48 03 c1 add rax, rcx + 00659 ff e0 jmp rax +$LN121@stbi__crea: + +; 4804 : // "none" filter turns into a memcpy here; make that explicit. +; 4805 : case STBI__F_none: +; 4806 : memcpy(cur, raw, nk); + + 0065b 48 63 85 e4 01 + 00 00 movsxd rax, DWORD PTR nk$4[rbp] + 00662 4c 8b c0 mov r8, rax + 00665 48 8b 95 68 04 + 00 00 mov rdx, QWORD PTR raw$[rbp] + 0066c 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00673 e8 00 00 00 00 call memcpy + 00678 90 npad 1 + +; 4807 : break; + + 00679 e9 4d 03 00 00 jmp $LN10@stbi__crea +$LN122@stbi__crea: + +; 4808 : STBI__CASE(STBI__F_sub) + + 0067e c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 00688 eb 0e jmp SHORT $LN14@stbi__crea +$LN12@stbi__crea: + 0068a 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00690 ff c0 inc eax + 00692 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN14@stbi__crea: + 00698 8b 85 e4 01 00 + 00 mov eax, DWORD PTR nk$4[rbp] + 0069e 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 006a4 7d 4a jge SHORT $LN13@stbi__crea + +; 4809 : { +; 4810 : cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); + + 006a6 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 006ad 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 006b4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 006b8 8b 8d 44 01 00 + 00 mov ecx, DWORD PTR filter_bytes$[rbp] + 006be 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 006c4 2b d1 sub edx, ecx + 006c6 8b ca mov ecx, edx + 006c8 48 63 c9 movsxd rcx, ecx + 006cb 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 006d2 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 006d6 03 c1 add eax, ecx + 006d8 25 ff 00 00 00 and eax, 255 ; 000000ffH + 006dd 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 006e4 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 006eb 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4811 : } + + 006ee eb 9a jmp SHORT $LN12@stbi__crea +$LN13@stbi__crea: + +; 4812 : break; + + 006f0 e9 d6 02 00 00 jmp $LN10@stbi__crea +$LN123@stbi__crea: + +; 4813 : STBI__CASE(STBI__F_up) + + 006f5 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 006ff eb 0e jmp SHORT $LN17@stbi__crea +$LN15@stbi__crea: + 00701 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00707 ff c0 inc eax + 00709 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN17@stbi__crea: + 0070f 8b 85 e4 01 00 + 00 mov eax, DWORD PTR nk$4[rbp] + 00715 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 0071b 7d 3e jge SHORT $LN16@stbi__crea + +; 4814 : { +; 4815 : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + + 0071d 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00724 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 0072b 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 0072f 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00736 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 0073d 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00741 03 c1 add eax, ecx + 00743 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00748 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 0074f 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00756 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4816 : } + + 00759 eb a6 jmp SHORT $LN15@stbi__crea +$LN16@stbi__crea: + +; 4817 : break; + + 0075b e9 6b 02 00 00 jmp $LN10@stbi__crea +$LN124@stbi__crea: + +; 4818 : STBI__CASE(STBI__F_avg) + + 00760 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 0076a eb 0e jmp SHORT $LN20@stbi__crea +$LN18@stbi__crea: + 0076c 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00772 ff c0 inc eax + 00774 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN20@stbi__crea: + 0077a 8b 85 e4 01 00 + 00 mov eax, DWORD PTR nk$4[rbp] + 00780 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00786 7d 64 jge SHORT $LN19@stbi__crea + +; 4819 : { +; 4820 : cur[k] = STBI__BYTECAST( + + 00788 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 0078f 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00796 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 0079a 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 007a1 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 007a8 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 007ac 8b 95 44 01 00 + 00 mov edx, DWORD PTR filter_bytes$[rbp] + 007b2 44 8b 85 e4 00 + 00 00 mov r8d, DWORD PTR k$[rbp] + 007b9 44 2b c2 sub r8d, edx + 007bc 41 8b d0 mov edx, r8d + 007bf 48 63 d2 movsxd rdx, edx + 007c2 4c 8b 85 88 01 + 00 00 mov r8, QWORD PTR cur$1[rbp] + 007c9 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx] + 007ce 03 ca add ecx, edx + 007d0 d1 f9 sar ecx, 1 + 007d2 03 c1 add eax, ecx + 007d4 25 ff 00 00 00 and eax, 255 ; 000000ffH + 007d9 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 007e0 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 007e7 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4821 : raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); +; 4822 : } + + 007ea eb 80 jmp SHORT $LN18@stbi__crea +$LN19@stbi__crea: + +; 4823 : break; + + 007ec e9 da 01 00 00 jmp $LN10@stbi__crea +$LN125@stbi__crea: + +; 4824 : STBI__CASE(STBI__F_paeth) + + 007f1 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 007fb eb 0e jmp SHORT $LN23@stbi__crea +$LN21@stbi__crea: + 007fd 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00803 ff c0 inc eax + 00805 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN23@stbi__crea: + 0080b 8b 85 e4 01 00 + 00 mov eax, DWORD PTR nk$4[rbp] + 00811 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00817 0f 8d a6 00 00 + 00 jge $LN22@stbi__crea + +; 4825 : { +; 4826 : cur[k] = STBI__BYTECAST( + + 0081d 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00824 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 0082b 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 0082f 89 85 34 04 00 + 00 mov DWORD PTR tv343[rbp], eax + 00835 8b 8d 44 01 00 + 00 mov ecx, DWORD PTR filter_bytes$[rbp] + 0083b 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 00841 2b d1 sub edx, ecx + 00843 8b ca mov ecx, edx + 00845 48 63 c9 movsxd rcx, ecx + 00848 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 0084f 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00853 48 63 95 e4 00 + 00 00 movsxd rdx, DWORD PTR k$[rbp] + 0085a 4c 8b 85 a8 01 + 00 00 mov r8, QWORD PTR prior$2[rbp] + 00861 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx] + 00866 44 8b 85 44 01 + 00 00 mov r8d, DWORD PTR filter_bytes$[rbp] + 0086d 44 8b 8d e4 00 + 00 00 mov r9d, DWORD PTR k$[rbp] + 00874 45 2b c8 sub r9d, r8d + 00877 45 8b c1 mov r8d, r9d + 0087a 4d 63 c0 movsxd r8, r8d + 0087d 4c 8b 8d 88 01 + 00 00 mov r9, QWORD PTR cur$1[rbp] + 00884 47 0f b6 04 01 movzx r8d, BYTE PTR [r9+r8] + 00889 44 89 85 38 04 + 00 00 mov DWORD PTR tv360[rbp], r8d + 00890 44 8b c1 mov r8d, ecx + 00893 8b 8d 38 04 00 + 00 mov ecx, DWORD PTR tv360[rbp] + 00899 e8 00 00 00 00 call stbi__paeth + 0089e 8b 8d 34 04 00 + 00 mov ecx, DWORD PTR tv343[rbp] + 008a4 03 c8 add ecx, eax + 008a6 8b c1 mov eax, ecx + 008a8 25 ff 00 00 00 and eax, 255 ; 000000ffH + 008ad 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 008b4 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 008bb 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4827 : raw[k] + stbi__paeth(cur[k - filter_bytes], +; 4828 : prior[k], +; 4829 : prior[k - filter_bytes])); +; 4830 : } + + 008be e9 3a ff ff ff jmp $LN21@stbi__crea +$LN22@stbi__crea: + +; 4831 : break; + + 008c3 e9 03 01 00 00 jmp $LN10@stbi__crea +$LN126@stbi__crea: + +; 4832 : STBI__CASE(STBI__F_avg_first) + + 008c8 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 008d2 eb 0e jmp SHORT $LN26@stbi__crea +$LN24@stbi__crea: + 008d4 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 008da ff c0 inc eax + 008dc 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN26@stbi__crea: + 008e2 8b 85 e4 01 00 + 00 mov eax, DWORD PTR nk$4[rbp] + 008e8 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 008ee 7d 4c jge SHORT $LN25@stbi__crea + +; 4833 : { +; 4834 : cur[k] = STBI__BYTECAST(raw[k] + + + 008f0 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 008f7 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 008fe 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 00902 8b 8d 44 01 00 + 00 mov ecx, DWORD PTR filter_bytes$[rbp] + 00908 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 0090e 2b d1 sub edx, ecx + 00910 8b ca mov ecx, edx + 00912 48 63 c9 movsxd rcx, ecx + 00915 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 0091c 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00920 d1 f9 sar ecx, 1 + 00922 03 c1 add eax, ecx + 00924 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00929 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00930 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00937 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4835 : (cur[k - filter_bytes] >> 1)); +; 4836 : } + + 0093a eb 98 jmp SHORT $LN24@stbi__crea +$LN25@stbi__crea: + +; 4837 : break; + + 0093c e9 8a 00 00 00 jmp $LN10@stbi__crea +$LN127@stbi__crea: + +; 4838 : STBI__CASE(STBI__F_paeth_first) + + 00941 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 0094b eb 0e jmp SHORT $LN29@stbi__crea +$LN27@stbi__crea: + 0094d 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00953 ff c0 inc eax + 00955 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN29@stbi__crea: + 0095b 8b 85 e4 01 00 + 00 mov eax, DWORD PTR nk$4[rbp] + 00961 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00967 7d 62 jge SHORT $LN28@stbi__crea + +; 4839 : { +; 4840 : cur[k] = STBI__BYTECAST( + + 00969 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00970 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00977 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 0097b 89 85 34 04 00 + 00 mov DWORD PTR tv391[rbp], eax + 00981 8b 8d 44 01 00 + 00 mov ecx, DWORD PTR filter_bytes$[rbp] + 00987 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 0098d 2b d1 sub edx, ecx + 0098f 8b ca mov ecx, edx + 00991 48 63 c9 movsxd rcx, ecx + 00994 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 0099b 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 0099f 45 33 c0 xor r8d, r8d + 009a2 33 d2 xor edx, edx + 009a4 e8 00 00 00 00 call stbi__paeth + 009a9 8b 8d 34 04 00 + 00 mov ecx, DWORD PTR tv391[rbp] + 009af 03 c8 add ecx, eax + 009b1 8b c1 mov eax, ecx + 009b3 25 ff 00 00 00 and eax, 255 ; 000000ffH + 009b8 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 009bf 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 009c6 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4841 : raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); +; 4842 : } + + 009c9 eb 82 jmp SHORT $LN27@stbi__crea +$LN28@stbi__crea: +$LN10@stbi__crea: + +; 4843 : break; +; 4844 : } +; 4845 : #undef STBI__CASE +; 4846 : raw += nk; + + 009cb 48 63 85 e4 01 + 00 00 movsxd rax, DWORD PTR nk$4[rbp] + 009d2 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 009d9 48 03 c8 add rcx, rax + 009dc 48 8b c1 mov rax, rcx + 009df 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + +; 4847 : } else { + + 009e6 e9 15 08 00 00 jmp $LN119@stbi__crea +$LN118@stbi__crea: + +; 4848 : STBI_ASSERT(img_n + 1 == out_n); + + 009eb 8b 85 04 01 00 + 00 mov eax, DWORD PTR img_n$[rbp] + 009f1 ff c0 inc eax + 009f3 3b 85 78 04 00 + 00 cmp eax, DWORD PTR out_n$[rbp] + 009f9 74 1c je SHORT $LN162@stbi__crea + 009fb 41 b8 f0 12 00 + 00 mov r8d, 4848 ; 000012f0H + 00a01 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 00a08 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@ + 00a0f ff 15 00 00 00 + 00 call QWORD PTR __imp__wassert + 00a15 33 c0 xor eax, eax +$LN162@stbi__crea: + +; 4849 : #define STBI__CASE(f) \ +; 4850 : case f: \ +; 4851 : for (i = x - 1; i >= 1; --i, cur[filter_bytes] = 255, raw += filter_bytes, \ +; 4852 : cur += output_bytes, prior += output_bytes) \ +; 4853 : for (k = 0; k < filter_bytes; ++k) +; 4854 : switch (filter) { + + 00a17 8b 85 c4 01 00 + 00 mov eax, DWORD PTR filter$3[rbp] + 00a1d 89 85 34 04 00 + 00 mov DWORD PTR tv413[rbp], eax + 00a23 83 bd 34 04 00 + 00 06 cmp DWORD PTR tv413[rbp], 6 + 00a2a 0f 87 5b 07 00 + 00 ja $LN30@stbi__crea + 00a30 48 63 85 34 04 + 00 00 movsxd rax, DWORD PTR tv413[rbp] + 00a37 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__ImageBase + 00a3e 8b 84 81 00 00 + 00 00 mov eax, DWORD PTR $LN166@stbi__crea[rcx+rax*4] + 00a45 48 03 c1 add rax, rcx + 00a48 ff e0 jmp rax +$LN128@stbi__crea: + +; 4855 : STBI__CASE(STBI__F_none) + + 00a4a 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00a50 ff c8 dec eax + 00a52 89 45 44 mov DWORD PTR i$[rbp], eax + 00a55 eb 6b jmp SHORT $LN34@stbi__crea +$LN32@stbi__crea: + 00a57 8b 45 44 mov eax, DWORD PTR i$[rbp] + 00a5a ff c8 dec eax + 00a5c 89 45 44 mov DWORD PTR i$[rbp], eax + 00a5f 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00a66 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00a6d c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + 00a71 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00a78 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00a7f 48 03 c8 add rcx, rax + 00a82 48 8b c1 mov rax, rcx + 00a85 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + 00a8c 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00a93 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00a9a 48 03 c8 add rcx, rax + 00a9d 48 8b c1 mov rax, rcx + 00aa0 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + 00aa7 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00aae 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 00ab5 48 03 c8 add rcx, rax + 00ab8 48 8b c1 mov rax, rcx + 00abb 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN34@stbi__crea: + 00ac2 83 7d 44 01 cmp DWORD PTR i$[rbp], 1 + 00ac6 72 53 jb SHORT $LN33@stbi__crea + 00ac8 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 00ad2 eb 0e jmp SHORT $LN37@stbi__crea +$LN35@stbi__crea: + 00ad4 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00ada ff c0 inc eax + 00adc 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN37@stbi__crea: + 00ae2 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 00ae8 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00aee 7d 26 jge SHORT $LN36@stbi__crea + +; 4856 : { +; 4857 : cur[k] = raw[k]; + + 00af0 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00af7 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00afe 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00b05 4c 8b 85 68 04 + 00 00 mov r8, QWORD PTR raw$[rbp] + 00b0c 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 00b11 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4858 : } + + 00b14 eb be jmp SHORT $LN35@stbi__crea +$LN36@stbi__crea: + 00b16 e9 3c ff ff ff jmp $LN32@stbi__crea +$LN33@stbi__crea: + +; 4859 : break; + + 00b1b e9 6b 06 00 00 jmp $LN30@stbi__crea +$LN129@stbi__crea: + +; 4860 : STBI__CASE(STBI__F_sub) + + 00b20 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00b26 ff c8 dec eax + 00b28 89 45 44 mov DWORD PTR i$[rbp], eax + 00b2b eb 6b jmp SHORT $LN40@stbi__crea +$LN38@stbi__crea: + 00b2d 8b 45 44 mov eax, DWORD PTR i$[rbp] + 00b30 ff c8 dec eax + 00b32 89 45 44 mov DWORD PTR i$[rbp], eax + 00b35 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00b3c 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00b43 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + 00b47 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00b4e 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00b55 48 03 c8 add rcx, rax + 00b58 48 8b c1 mov rax, rcx + 00b5b 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + 00b62 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00b69 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00b70 48 03 c8 add rcx, rax + 00b73 48 8b c1 mov rax, rcx + 00b76 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + 00b7d 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00b84 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 00b8b 48 03 c8 add rcx, rax + 00b8e 48 8b c1 mov rax, rcx + 00b91 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN40@stbi__crea: + 00b98 83 7d 44 01 cmp DWORD PTR i$[rbp], 1 + 00b9c 72 77 jb SHORT $LN39@stbi__crea + 00b9e c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 00ba8 eb 0e jmp SHORT $LN43@stbi__crea +$LN41@stbi__crea: + 00baa 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00bb0 ff c0 inc eax + 00bb2 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN43@stbi__crea: + 00bb8 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 00bbe 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00bc4 7d 4a jge SHORT $LN42@stbi__crea + +; 4861 : { +; 4862 : cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); + + 00bc6 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00bcd 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00bd4 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 00bd8 8b 8d 24 01 00 + 00 mov ecx, DWORD PTR output_bytes$[rbp] + 00bde 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 00be4 2b d1 sub edx, ecx + 00be6 8b ca mov ecx, edx + 00be8 48 63 c9 movsxd rcx, ecx + 00beb 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00bf2 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00bf6 03 c1 add eax, ecx + 00bf8 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00bfd 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00c04 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00c0b 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4863 : } + + 00c0e eb 9a jmp SHORT $LN41@stbi__crea +$LN42@stbi__crea: + 00c10 e9 18 ff ff ff jmp $LN38@stbi__crea +$LN39@stbi__crea: + +; 4864 : break; + + 00c15 e9 71 05 00 00 jmp $LN30@stbi__crea +$LN130@stbi__crea: + +; 4865 : STBI__CASE(STBI__F_up) + + 00c1a 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00c20 ff c8 dec eax + 00c22 89 45 44 mov DWORD PTR i$[rbp], eax + 00c25 eb 6b jmp SHORT $LN46@stbi__crea +$LN44@stbi__crea: + 00c27 8b 45 44 mov eax, DWORD PTR i$[rbp] + 00c2a ff c8 dec eax + 00c2c 89 45 44 mov DWORD PTR i$[rbp], eax + 00c2f 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00c36 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00c3d c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + 00c41 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00c48 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00c4f 48 03 c8 add rcx, rax + 00c52 48 8b c1 mov rax, rcx + 00c55 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + 00c5c 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00c63 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00c6a 48 03 c8 add rcx, rax + 00c6d 48 8b c1 mov rax, rcx + 00c70 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + 00c77 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00c7e 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 00c85 48 03 c8 add rcx, rax + 00c88 48 8b c1 mov rax, rcx + 00c8b 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN46@stbi__crea: + 00c92 83 7d 44 01 cmp DWORD PTR i$[rbp], 1 + 00c96 72 6b jb SHORT $LN45@stbi__crea + 00c98 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 00ca2 eb 0e jmp SHORT $LN49@stbi__crea +$LN47@stbi__crea: + 00ca4 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00caa ff c0 inc eax + 00cac 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN49@stbi__crea: + 00cb2 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 00cb8 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00cbe 7d 3e jge SHORT $LN48@stbi__crea + +; 4866 : { +; 4867 : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + + 00cc0 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00cc7 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00cce 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 00cd2 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00cd9 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 00ce0 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00ce4 03 c1 add eax, ecx + 00ce6 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00ceb 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00cf2 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00cf9 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4868 : } + + 00cfc eb a6 jmp SHORT $LN47@stbi__crea +$LN48@stbi__crea: + 00cfe e9 24 ff ff ff jmp $LN44@stbi__crea +$LN45@stbi__crea: + +; 4869 : break; + + 00d03 e9 83 04 00 00 jmp $LN30@stbi__crea +$LN131@stbi__crea: + +; 4870 : STBI__CASE(STBI__F_avg) + + 00d08 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00d0e ff c8 dec eax + 00d10 89 45 44 mov DWORD PTR i$[rbp], eax + 00d13 eb 6b jmp SHORT $LN52@stbi__crea +$LN50@stbi__crea: + 00d15 8b 45 44 mov eax, DWORD PTR i$[rbp] + 00d18 ff c8 dec eax + 00d1a 89 45 44 mov DWORD PTR i$[rbp], eax + 00d1d 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00d24 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00d2b c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + 00d2f 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00d36 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00d3d 48 03 c8 add rcx, rax + 00d40 48 8b c1 mov rax, rcx + 00d43 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + 00d4a 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00d51 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00d58 48 03 c8 add rcx, rax + 00d5b 48 8b c1 mov rax, rcx + 00d5e 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + 00d65 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00d6c 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 00d73 48 03 c8 add rcx, rax + 00d76 48 8b c1 mov rax, rcx + 00d79 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN52@stbi__crea: + 00d80 83 7d 44 01 cmp DWORD PTR i$[rbp], 1 + 00d84 0f 82 91 00 00 + 00 jb $LN51@stbi__crea + 00d8a c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 00d94 eb 0e jmp SHORT $LN55@stbi__crea +$LN53@stbi__crea: + 00d96 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00d9c ff c0 inc eax + 00d9e 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN55@stbi__crea: + 00da4 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 00daa 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00db0 7d 64 jge SHORT $LN54@stbi__crea + +; 4871 : { +; 4872 : cur[k] = STBI__BYTECAST( + + 00db2 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00db9 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00dc0 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 00dc4 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00dcb 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 00dd2 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00dd6 8b 95 24 01 00 + 00 mov edx, DWORD PTR output_bytes$[rbp] + 00ddc 44 8b 85 e4 00 + 00 00 mov r8d, DWORD PTR k$[rbp] + 00de3 44 2b c2 sub r8d, edx + 00de6 41 8b d0 mov edx, r8d + 00de9 48 63 d2 movsxd rdx, edx + 00dec 4c 8b 85 88 01 + 00 00 mov r8, QWORD PTR cur$1[rbp] + 00df3 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx] + 00df8 03 ca add ecx, edx + 00dfa d1 f9 sar ecx, 1 + 00dfc 03 c1 add eax, ecx + 00dfe 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00e03 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00e0a 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00e11 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4873 : raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); +; 4874 : } + + 00e14 eb 80 jmp SHORT $LN53@stbi__crea +$LN54@stbi__crea: + 00e16 e9 fa fe ff ff jmp $LN50@stbi__crea +$LN51@stbi__crea: + +; 4875 : break; + + 00e1b e9 6b 03 00 00 jmp $LN30@stbi__crea +$LN132@stbi__crea: + +; 4876 : STBI__CASE(STBI__F_paeth) + + 00e20 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00e26 ff c8 dec eax + 00e28 89 45 44 mov DWORD PTR i$[rbp], eax + 00e2b eb 6b jmp SHORT $LN58@stbi__crea +$LN56@stbi__crea: + 00e2d 8b 45 44 mov eax, DWORD PTR i$[rbp] + 00e30 ff c8 dec eax + 00e32 89 45 44 mov DWORD PTR i$[rbp], eax + 00e35 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00e3c 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00e43 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + 00e47 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00e4e 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00e55 48 03 c8 add rcx, rax + 00e58 48 8b c1 mov rax, rcx + 00e5b 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + 00e62 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00e69 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00e70 48 03 c8 add rcx, rax + 00e73 48 8b c1 mov rax, rcx + 00e76 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + 00e7d 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00e84 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 00e8b 48 03 c8 add rcx, rax + 00e8e 48 8b c1 mov rax, rcx + 00e91 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN58@stbi__crea: + 00e98 83 7d 44 01 cmp DWORD PTR i$[rbp], 1 + 00e9c 0f 82 d7 00 00 + 00 jb $LN57@stbi__crea + 00ea2 c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 00eac eb 0e jmp SHORT $LN61@stbi__crea +$LN59@stbi__crea: + 00eae 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 00eb4 ff c0 inc eax + 00eb6 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN61@stbi__crea: + 00ebc 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 00ec2 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 00ec8 0f 8d a6 00 00 + 00 jge $LN60@stbi__crea + +; 4877 : { +; 4878 : cur[k] = STBI__BYTECAST( + + 00ece 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 00ed5 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00edc 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 00ee0 89 85 34 04 00 + 00 mov DWORD PTR tv546[rbp], eax + 00ee6 8b 8d 24 01 00 + 00 mov ecx, DWORD PTR output_bytes$[rbp] + 00eec 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 00ef2 2b d1 sub edx, ecx + 00ef4 8b ca mov ecx, edx + 00ef6 48 63 c9 movsxd rcx, ecx + 00ef9 48 8b 95 a8 01 + 00 00 mov rdx, QWORD PTR prior$2[rbp] + 00f00 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 00f04 48 63 95 e4 00 + 00 00 movsxd rdx, DWORD PTR k$[rbp] + 00f0b 4c 8b 85 a8 01 + 00 00 mov r8, QWORD PTR prior$2[rbp] + 00f12 41 0f b6 14 10 movzx edx, BYTE PTR [r8+rdx] + 00f17 44 8b 85 24 01 + 00 00 mov r8d, DWORD PTR output_bytes$[rbp] + 00f1e 44 8b 8d e4 00 + 00 00 mov r9d, DWORD PTR k$[rbp] + 00f25 45 2b c8 sub r9d, r8d + 00f28 45 8b c1 mov r8d, r9d + 00f2b 4d 63 c0 movsxd r8, r8d + 00f2e 4c 8b 8d 88 01 + 00 00 mov r9, QWORD PTR cur$1[rbp] + 00f35 47 0f b6 04 01 movzx r8d, BYTE PTR [r9+r8] + 00f3a 44 89 85 38 04 + 00 00 mov DWORD PTR tv563[rbp], r8d + 00f41 44 8b c1 mov r8d, ecx + 00f44 8b 8d 38 04 00 + 00 mov ecx, DWORD PTR tv563[rbp] + 00f4a e8 00 00 00 00 call stbi__paeth + 00f4f 8b 8d 34 04 00 + 00 mov ecx, DWORD PTR tv546[rbp] + 00f55 03 c8 add ecx, eax + 00f57 8b c1 mov eax, ecx + 00f59 25 ff 00 00 00 and eax, 255 ; 000000ffH + 00f5e 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 00f65 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 00f6c 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4879 : raw[k] + stbi__paeth(cur[k - output_bytes], +; 4880 : prior[k], +; 4881 : prior[k - output_bytes])); +; 4882 : } + + 00f6f e9 3a ff ff ff jmp $LN59@stbi__crea +$LN60@stbi__crea: + 00f74 e9 b4 fe ff ff jmp $LN56@stbi__crea +$LN57@stbi__crea: + +; 4883 : break; + + 00f79 e9 0d 02 00 00 jmp $LN30@stbi__crea +$LN133@stbi__crea: + +; 4884 : STBI__CASE(STBI__F_avg_first) + + 00f7e 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 00f84 ff c8 dec eax + 00f86 89 45 44 mov DWORD PTR i$[rbp], eax + 00f89 eb 6b jmp SHORT $LN64@stbi__crea +$LN62@stbi__crea: + 00f8b 8b 45 44 mov eax, DWORD PTR i$[rbp] + 00f8e ff c8 dec eax + 00f90 89 45 44 mov DWORD PTR i$[rbp], eax + 00f93 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00f9a 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00fa1 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + 00fa5 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 00fac 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 00fb3 48 03 c8 add rcx, rax + 00fb6 48 8b c1 mov rax, rcx + 00fb9 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + 00fc0 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00fc7 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 00fce 48 03 c8 add rcx, rax + 00fd1 48 8b c1 mov rax, rcx + 00fd4 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + 00fdb 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 00fe2 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 00fe9 48 03 c8 add rcx, rax + 00fec 48 8b c1 mov rax, rcx + 00fef 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN64@stbi__crea: + 00ff6 83 7d 44 01 cmp DWORD PTR i$[rbp], 1 + 00ffa 72 79 jb SHORT $LN63@stbi__crea + 00ffc c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 01006 eb 0e jmp SHORT $LN67@stbi__crea +$LN65@stbi__crea: + 01008 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 0100e ff c0 inc eax + 01010 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN67@stbi__crea: + 01016 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 0101c 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 01022 7d 4c jge SHORT $LN66@stbi__crea + +; 4885 : { +; 4886 : cur[k] = STBI__BYTECAST(raw[k] + + + 01024 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 0102b 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 01032 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 01036 8b 8d 24 01 00 + 00 mov ecx, DWORD PTR output_bytes$[rbp] + 0103c 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 01042 2b d1 sub edx, ecx + 01044 8b ca mov ecx, edx + 01046 48 63 c9 movsxd rcx, ecx + 01049 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 01050 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 01054 d1 f9 sar ecx, 1 + 01056 03 c1 add eax, ecx + 01058 25 ff 00 00 00 and eax, 255 ; 000000ffH + 0105d 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 01064 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 0106b 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4887 : (cur[k - output_bytes] >> 1)); +; 4888 : } + + 0106e eb 98 jmp SHORT $LN65@stbi__crea +$LN66@stbi__crea: + 01070 e9 16 ff ff ff jmp $LN62@stbi__crea +$LN63@stbi__crea: + +; 4889 : break; + + 01075 e9 11 01 00 00 jmp $LN30@stbi__crea +$LN134@stbi__crea: + +; 4890 : STBI__CASE(STBI__F_paeth_first) + + 0107a 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 01080 ff c8 dec eax + 01082 89 45 44 mov DWORD PTR i$[rbp], eax + 01085 eb 6b jmp SHORT $LN70@stbi__crea +$LN68@stbi__crea: + 01087 8b 45 44 mov eax, DWORD PTR i$[rbp] + 0108a ff c8 dec eax + 0108c 89 45 44 mov DWORD PTR i$[rbp], eax + 0108f 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 01096 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 0109d c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + 010a1 48 63 85 44 01 + 00 00 movsxd rax, DWORD PTR filter_bytes$[rbp] + 010a8 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 010af 48 03 c8 add rcx, rax + 010b2 48 8b c1 mov rax, rcx + 010b5 48 89 85 68 04 + 00 00 mov QWORD PTR raw$[rbp], rax + 010bc 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 010c3 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 010ca 48 03 c8 add rcx, rax + 010cd 48 8b c1 mov rax, rcx + 010d0 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + 010d7 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 010de 48 8b 8d a8 01 + 00 00 mov rcx, QWORD PTR prior$2[rbp] + 010e5 48 03 c8 add rcx, rax + 010e8 48 8b c1 mov rax, rcx + 010eb 48 89 85 a8 01 + 00 00 mov QWORD PTR prior$2[rbp], rax +$LN70@stbi__crea: + 010f2 83 7d 44 01 cmp DWORD PTR i$[rbp], 1 + 010f6 0f 82 8f 00 00 + 00 jb $LN69@stbi__crea + 010fc c7 85 e4 00 00 + 00 00 00 00 00 mov DWORD PTR k$[rbp], 0 + 01106 eb 0e jmp SHORT $LN73@stbi__crea +$LN71@stbi__crea: + 01108 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 0110e ff c0 inc eax + 01110 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax +$LN73@stbi__crea: + 01116 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 0111c 39 85 e4 00 00 + 00 cmp DWORD PTR k$[rbp], eax + 01122 7d 62 jge SHORT $LN72@stbi__crea + +; 4891 : { +; 4892 : cur[k] = STBI__BYTECAST( + + 01124 48 63 85 e4 00 + 00 00 movsxd rax, DWORD PTR k$[rbp] + 0112b 48 8b 8d 68 04 + 00 00 mov rcx, QWORD PTR raw$[rbp] + 01132 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 01136 89 85 34 04 00 + 00 mov DWORD PTR tv618[rbp], eax + 0113c 8b 8d 24 01 00 + 00 mov ecx, DWORD PTR output_bytes$[rbp] + 01142 8b 95 e4 00 00 + 00 mov edx, DWORD PTR k$[rbp] + 01148 2b d1 sub edx, ecx + 0114a 8b ca mov ecx, edx + 0114c 48 63 c9 movsxd rcx, ecx + 0114f 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 01156 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 0115a 45 33 c0 xor r8d, r8d + 0115d 33 d2 xor edx, edx + 0115f e8 00 00 00 00 call stbi__paeth + 01164 8b 8d 34 04 00 + 00 mov ecx, DWORD PTR tv618[rbp] + 0116a 03 c8 add ecx, eax + 0116c 8b c1 mov eax, ecx + 0116e 25 ff 00 00 00 and eax, 255 ; 000000ffH + 01173 48 63 8d e4 00 + 00 00 movsxd rcx, DWORD PTR k$[rbp] + 0117a 48 8b 95 88 01 + 00 00 mov rdx, QWORD PTR cur$1[rbp] + 01181 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4893 : raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); +; 4894 : } + + 01184 eb 82 jmp SHORT $LN71@stbi__crea +$LN72@stbi__crea: + 01186 e9 fc fe ff ff jmp $LN68@stbi__crea +$LN69@stbi__crea: +$LN30@stbi__crea: + +; 4895 : break; +; 4896 : } +; 4897 : #undef STBI__CASE +; 4898 : +; 4899 : // the loop above sets the high byte of the pixels' alpha, but for +; 4900 : // 16 bit png files we also need the low byte set. we'll do that here. +; 4901 : if (depth == 16) { + + 0118b 83 bd 90 04 00 + 00 10 cmp DWORD PTR depth$[rbp], 16 + 01192 75 6c jne SHORT $LN135@stbi__crea + +; 4902 : cur = a->out + + + 01194 8b 85 84 00 00 + 00 mov eax, DWORD PTR stride$[rbp] + 0119a 0f af 45 64 imul eax, DWORD PTR j$[rbp] + 0119e 8b c0 mov eax, eax + 011a0 48 8b 8d 60 04 + 00 00 mov rcx, QWORD PTR a$[rbp] + 011a7 48 03 41 18 add rax, QWORD PTR [rcx+24] + 011ab 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax + +; 4903 : stride * j; // start at the beginning of the row again +; 4904 : for (i = 0; i < x; ++i, cur += output_bytes) { + + 011b2 c7 45 44 00 00 + 00 00 mov DWORD PTR i$[rbp], 0 + 011b9 eb 23 jmp SHORT $LN76@stbi__crea +$LN74@stbi__crea: + 011bb 8b 45 44 mov eax, DWORD PTR i$[rbp] + 011be ff c0 inc eax + 011c0 89 45 44 mov DWORD PTR i$[rbp], eax + 011c3 48 63 85 24 01 + 00 00 movsxd rax, DWORD PTR output_bytes$[rbp] + 011ca 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 011d1 48 03 c8 add rcx, rax + 011d4 48 8b c1 mov rax, rcx + 011d7 48 89 85 88 01 + 00 00 mov QWORD PTR cur$1[rbp], rax +$LN76@stbi__crea: + 011de 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 011e4 39 45 44 cmp DWORD PTR i$[rbp], eax + 011e7 73 17 jae SHORT $LN75@stbi__crea + +; 4905 : cur[filter_bytes + 1] = 255; + + 011e9 8b 85 44 01 00 + 00 mov eax, DWORD PTR filter_bytes$[rbp] + 011ef ff c0 inc eax + 011f1 48 98 cdqe + 011f3 48 8b 8d 88 01 + 00 00 mov rcx, QWORD PTR cur$1[rbp] + 011fa c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + +; 4906 : } + + 011fe eb bb jmp SHORT $LN74@stbi__crea +$LN75@stbi__crea: +$LN135@stbi__crea: +$LN119@stbi__crea: + +; 4907 : } +; 4908 : } +; 4909 : } + + 01200 e9 c1 ef ff ff jmp $LN2@stbi__crea +$LN3@stbi__crea: + +; 4910 : +; 4911 : // we make a separate pass to expand bits to pixels; for performance, +; 4912 : // this could run two scanlines behind the above code, so it won't +; 4913 : // intefere with filtering but will still be in the cache. +; 4914 : if (depth < 8) { + + 01205 83 bd 90 04 00 + 00 08 cmp DWORD PTR depth$[rbp], 8 + 0120c 0f 8d c0 08 00 + 00 jge $LN136@stbi__crea + +; 4915 : for (j = 0; j < y; ++j) { + + 01212 c7 45 64 00 00 + 00 00 mov DWORD PTR j$[rbp], 0 + 01219 eb 08 jmp SHORT $LN79@stbi__crea +$LN77@stbi__crea: + 0121b 8b 45 64 mov eax, DWORD PTR j$[rbp] + 0121e ff c0 inc eax + 01220 89 45 64 mov DWORD PTR j$[rbp], eax +$LN79@stbi__crea: + 01223 8b 85 88 04 00 + 00 mov eax, DWORD PTR y$[rbp] + 01229 39 45 64 cmp DWORD PTR j$[rbp], eax + 0122c 0f 83 9b 08 00 + 00 jae $LN78@stbi__crea + +; 4916 : stbi_uc *cur = a->out + stride * j; + + 01232 8b 85 84 00 00 + 00 mov eax, DWORD PTR stride$[rbp] + 01238 0f af 45 64 imul eax, DWORD PTR j$[rbp] + 0123c 8b c0 mov eax, eax + 0123e 48 8b 8d 60 04 + 00 00 mov rcx, QWORD PTR a$[rbp] + 01245 48 03 41 18 add rax, QWORD PTR [rcx+24] + 01249 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4917 : stbi_uc *in = a->out + stride * j + x * out_n - img_width_bytes; + + 01250 8b 85 84 00 00 + 00 mov eax, DWORD PTR stride$[rbp] + 01256 0f af 45 64 imul eax, DWORD PTR j$[rbp] + 0125a 8b c0 mov eax, eax + 0125c 48 8b 8d 60 04 + 00 00 mov rcx, QWORD PTR a$[rbp] + 01263 48 8b 49 18 mov rcx, QWORD PTR [rcx+24] + 01267 48 03 c8 add rcx, rax + 0126a 48 8b c1 mov rax, rcx + 0126d 8b 8d 80 04 00 + 00 mov ecx, DWORD PTR x$[rbp] + 01273 0f af 8d 78 04 + 00 00 imul ecx, DWORD PTR out_n$[rbp] + 0127a 8b c9 mov ecx, ecx + 0127c 48 03 c1 add rax, rcx + 0127f 8b 8d c4 00 00 + 00 mov ecx, DWORD PTR img_width_bytes$[rbp] + 01285 48 2b c1 sub rax, rcx + 01288 48 89 85 28 02 + 00 00 mov QWORD PTR in$6[rbp], rax + +; 4918 : // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit +; 4919 : // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop +; 4920 : stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : + + 0128f 83 bd 98 04 00 + 00 00 cmp DWORD PTR color$[rbp], 0 + 01296 75 1a jne SHORT $LN163@stbi__crea + 01298 48 63 85 90 04 + 00 00 movsxd rax, DWORD PTR depth$[rbp] + 0129f 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__depth_scale_table + 012a6 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 012aa 89 85 34 04 00 + 00 mov DWORD PTR tv666[rbp], eax + 012b0 eb 0a jmp SHORT $LN164@stbi__crea +$LN163@stbi__crea: + 012b2 c7 85 34 04 00 + 00 01 00 00 00 mov DWORD PTR tv666[rbp], 1 +$LN164@stbi__crea: + 012bc 0f b6 85 34 04 + 00 00 movzx eax, BYTE PTR tv666[rbp] + 012c3 88 85 44 02 00 + 00 mov BYTE PTR scale$7[rbp], al + +; 4921 : 1; // scale grayscale values to 0..255 range +; 4922 : +; 4923 : // note that the final byte might overshoot and write more data than desired. +; 4924 : // we can allocate enough data that this never writes out of memory, but it +; 4925 : // could also overwrite the next scanline. can it overwrite non-empty data +; 4926 : // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. +; 4927 : // so we need to explicitly clamp the final ones +; 4928 : +; 4929 : if (depth == 4) { + + 012c9 83 bd 90 04 00 + 00 04 cmp DWORD PTR depth$[rbp], 4 + 012d0 0f 85 e4 00 00 + 00 jne $LN138@stbi__crea + +; 4930 : for (k = x * img_n; k >= 2; k -= 2, ++in) { + + 012d6 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 012dc 0f af 85 04 01 + 00 00 imul eax, DWORD PTR img_n$[rbp] + 012e3 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax + 012e9 eb 20 jmp SHORT $LN82@stbi__crea +$LN80@stbi__crea: + 012eb 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 012f1 83 e8 02 sub eax, 2 + 012f4 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax + 012fa 48 8b 85 28 02 + 00 00 mov rax, QWORD PTR in$6[rbp] + 01301 48 ff c0 inc rax + 01304 48 89 85 28 02 + 00 00 mov QWORD PTR in$6[rbp], rax +$LN82@stbi__crea: + 0130b 83 bd e4 00 00 + 00 02 cmp DWORD PTR k$[rbp], 2 + 01312 7c 67 jl SHORT $LN81@stbi__crea + +; 4931 : *cur++ = scale * ((*in >> 4)); + + 01314 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0131b 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01322 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01325 c1 f9 04 sar ecx, 4 + 01328 0f af c1 imul eax, ecx + 0132b 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01332 88 01 mov BYTE PTR [rcx], al + 01334 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0133b 48 ff c0 inc rax + 0133e 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4932 : *cur++ = scale * ((*in) & 0x0f); + + 01345 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0134c 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01353 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01356 83 e1 0f and ecx, 15 + 01359 0f af c1 imul eax, ecx + 0135c 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01363 88 01 mov BYTE PTR [rcx], al + 01365 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0136c 48 ff c0 inc rax + 0136f 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4933 : } + + 01376 e9 70 ff ff ff jmp $LN80@stbi__crea +$LN81@stbi__crea: + +; 4934 : if (k > 0) + + 0137b 83 bd e4 00 00 + 00 00 cmp DWORD PTR k$[rbp], 0 + 01382 7e 31 jle SHORT $LN140@stbi__crea + +; 4935 : *cur++ = scale * ((*in >> 4)); + + 01384 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0138b 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01392 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01395 c1 f9 04 sar ecx, 4 + 01398 0f af c1 imul eax, ecx + 0139b 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 013a2 88 01 mov BYTE PTR [rcx], al + 013a4 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 013ab 48 ff c0 inc rax + 013ae 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN140@stbi__crea: + +; 4936 : } else if (depth == 2) { + + 013b5 e9 6b 05 00 00 jmp $LN139@stbi__crea +$LN138@stbi__crea: + 013ba 83 bd 90 04 00 + 00 02 cmp DWORD PTR depth$[rbp], 2 + 013c1 0f 85 ca 01 00 + 00 jne $LN141@stbi__crea + +; 4937 : for (k = x * img_n; k >= 4; k -= 4, ++in) { + + 013c7 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 013cd 0f af 85 04 01 + 00 00 imul eax, DWORD PTR img_n$[rbp] + 013d4 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax + 013da eb 20 jmp SHORT $LN85@stbi__crea +$LN83@stbi__crea: + 013dc 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 013e2 83 e8 04 sub eax, 4 + 013e5 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax + 013eb 48 8b 85 28 02 + 00 00 mov rax, QWORD PTR in$6[rbp] + 013f2 48 ff c0 inc rax + 013f5 48 89 85 28 02 + 00 00 mov QWORD PTR in$6[rbp], rax +$LN85@stbi__crea: + 013fc 83 bd e4 00 00 + 00 04 cmp DWORD PTR k$[rbp], 4 + 01403 0f 8c cf 00 00 + 00 jl $LN84@stbi__crea + +; 4938 : *cur++ = scale * ((*in >> 6)); + + 01409 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01410 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01417 0f b6 09 movzx ecx, BYTE PTR [rcx] + 0141a c1 f9 06 sar ecx, 6 + 0141d 0f af c1 imul eax, ecx + 01420 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01427 88 01 mov BYTE PTR [rcx], al + 01429 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01430 48 ff c0 inc rax + 01433 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4939 : *cur++ = scale * ((*in >> 4) & 0x03); + + 0143a 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01441 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01448 0f b6 09 movzx ecx, BYTE PTR [rcx] + 0144b c1 f9 04 sar ecx, 4 + 0144e 83 e1 03 and ecx, 3 + 01451 0f af c1 imul eax, ecx + 01454 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 0145b 88 01 mov BYTE PTR [rcx], al + 0145d 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01464 48 ff c0 inc rax + 01467 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4940 : *cur++ = scale * ((*in >> 2) & 0x03); + + 0146e 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01475 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 0147c 0f b6 09 movzx ecx, BYTE PTR [rcx] + 0147f c1 f9 02 sar ecx, 2 + 01482 83 e1 03 and ecx, 3 + 01485 0f af c1 imul eax, ecx + 01488 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 0148f 88 01 mov BYTE PTR [rcx], al + 01491 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01498 48 ff c0 inc rax + 0149b 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4941 : *cur++ = scale * ((*in) & 0x03); + + 014a2 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 014a9 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 014b0 0f b6 09 movzx ecx, BYTE PTR [rcx] + 014b3 83 e1 03 and ecx, 3 + 014b6 0f af c1 imul eax, ecx + 014b9 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 014c0 88 01 mov BYTE PTR [rcx], al + 014c2 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 014c9 48 ff c0 inc rax + 014cc 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4942 : } + + 014d3 e9 04 ff ff ff jmp $LN83@stbi__crea +$LN84@stbi__crea: + +; 4943 : if (k > 0) + + 014d8 83 bd e4 00 00 + 00 00 cmp DWORD PTR k$[rbp], 0 + 014df 7e 31 jle SHORT $LN143@stbi__crea + +; 4944 : *cur++ = scale * ((*in >> 6)); + + 014e1 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 014e8 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 014ef 0f b6 09 movzx ecx, BYTE PTR [rcx] + 014f2 c1 f9 06 sar ecx, 6 + 014f5 0f af c1 imul eax, ecx + 014f8 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 014ff 88 01 mov BYTE PTR [rcx], al + 01501 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01508 48 ff c0 inc rax + 0150b 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN143@stbi__crea: + +; 4945 : if (k > 1) + + 01512 83 bd e4 00 00 + 00 01 cmp DWORD PTR k$[rbp], 1 + 01519 7e 34 jle SHORT $LN144@stbi__crea + +; 4946 : *cur++ = scale * ((*in >> 4) & 0x03); + + 0151b 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01522 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01529 0f b6 09 movzx ecx, BYTE PTR [rcx] + 0152c c1 f9 04 sar ecx, 4 + 0152f 83 e1 03 and ecx, 3 + 01532 0f af c1 imul eax, ecx + 01535 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 0153c 88 01 mov BYTE PTR [rcx], al + 0153e 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01545 48 ff c0 inc rax + 01548 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN144@stbi__crea: + +; 4947 : if (k > 2) + + 0154f 83 bd e4 00 00 + 00 02 cmp DWORD PTR k$[rbp], 2 + 01556 7e 34 jle SHORT $LN145@stbi__crea + +; 4948 : *cur++ = scale * ((*in >> 2) & 0x03); + + 01558 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0155f 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01566 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01569 c1 f9 02 sar ecx, 2 + 0156c 83 e1 03 and ecx, 3 + 0156f 0f af c1 imul eax, ecx + 01572 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01579 88 01 mov BYTE PTR [rcx], al + 0157b 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01582 48 ff c0 inc rax + 01585 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN145@stbi__crea: + +; 4949 : } else if (depth == 1) { + + 0158c e9 94 03 00 00 jmp $LN142@stbi__crea +$LN141@stbi__crea: + 01591 83 bd 90 04 00 + 00 01 cmp DWORD PTR depth$[rbp], 1 + 01598 0f 85 87 03 00 + 00 jne $LN146@stbi__crea + +; 4950 : for (k = x * img_n; k >= 8; k -= 8, ++in) { + + 0159e 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 015a4 0f af 85 04 01 + 00 00 imul eax, DWORD PTR img_n$[rbp] + 015ab 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax + 015b1 eb 20 jmp SHORT $LN88@stbi__crea +$LN86@stbi__crea: + 015b3 8b 85 e4 00 00 + 00 mov eax, DWORD PTR k$[rbp] + 015b9 83 e8 08 sub eax, 8 + 015bc 89 85 e4 00 00 + 00 mov DWORD PTR k$[rbp], eax + 015c2 48 8b 85 28 02 + 00 00 mov rax, QWORD PTR in$6[rbp] + 015c9 48 ff c0 inc rax + 015cc 48 89 85 28 02 + 00 00 mov QWORD PTR in$6[rbp], rax +$LN88@stbi__crea: + 015d3 83 bd e4 00 00 + 00 08 cmp DWORD PTR k$[rbp], 8 + 015da 0f 8c 9e 01 00 + 00 jl $LN87@stbi__crea + +; 4951 : *cur++ = scale * ((*in >> 7)); + + 015e0 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 015e7 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 015ee 0f b6 09 movzx ecx, BYTE PTR [rcx] + 015f1 c1 f9 07 sar ecx, 7 + 015f4 0f af c1 imul eax, ecx + 015f7 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 015fe 88 01 mov BYTE PTR [rcx], al + 01600 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01607 48 ff c0 inc rax + 0160a 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4952 : *cur++ = scale * ((*in >> 6) & 0x01); + + 01611 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01618 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 0161f 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01622 c1 f9 06 sar ecx, 6 + 01625 83 e1 01 and ecx, 1 + 01628 0f af c1 imul eax, ecx + 0162b 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01632 88 01 mov BYTE PTR [rcx], al + 01634 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0163b 48 ff c0 inc rax + 0163e 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4953 : *cur++ = scale * ((*in >> 5) & 0x01); + + 01645 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0164c 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01653 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01656 c1 f9 05 sar ecx, 5 + 01659 83 e1 01 and ecx, 1 + 0165c 0f af c1 imul eax, ecx + 0165f 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01666 88 01 mov BYTE PTR [rcx], al + 01668 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0166f 48 ff c0 inc rax + 01672 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4954 : *cur++ = scale * ((*in >> 4) & 0x01); + + 01679 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01680 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01687 0f b6 09 movzx ecx, BYTE PTR [rcx] + 0168a c1 f9 04 sar ecx, 4 + 0168d 83 e1 01 and ecx, 1 + 01690 0f af c1 imul eax, ecx + 01693 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 0169a 88 01 mov BYTE PTR [rcx], al + 0169c 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 016a3 48 ff c0 inc rax + 016a6 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4955 : *cur++ = scale * ((*in >> 3) & 0x01); + + 016ad 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 016b4 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 016bb 0f b6 09 movzx ecx, BYTE PTR [rcx] + 016be c1 f9 03 sar ecx, 3 + 016c1 83 e1 01 and ecx, 1 + 016c4 0f af c1 imul eax, ecx + 016c7 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 016ce 88 01 mov BYTE PTR [rcx], al + 016d0 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 016d7 48 ff c0 inc rax + 016da 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4956 : *cur++ = scale * ((*in >> 2) & 0x01); + + 016e1 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 016e8 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 016ef 0f b6 09 movzx ecx, BYTE PTR [rcx] + 016f2 c1 f9 02 sar ecx, 2 + 016f5 83 e1 01 and ecx, 1 + 016f8 0f af c1 imul eax, ecx + 016fb 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01702 88 01 mov BYTE PTR [rcx], al + 01704 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0170b 48 ff c0 inc rax + 0170e 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4957 : *cur++ = scale * ((*in >> 1) & 0x01); + + 01715 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0171c 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01723 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01726 d1 f9 sar ecx, 1 + 01728 83 e1 01 and ecx, 1 + 0172b 0f af c1 imul eax, ecx + 0172e 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01735 88 01 mov BYTE PTR [rcx], al + 01737 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0173e 48 ff c0 inc rax + 01741 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4958 : *cur++ = scale * ((*in) & 0x01); + + 01748 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0174f 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01756 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01759 83 e1 01 and ecx, 1 + 0175c 0f af c1 imul eax, ecx + 0175f 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01766 88 01 mov BYTE PTR [rcx], al + 01768 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0176f 48 ff c0 inc rax + 01772 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4959 : } + + 01779 e9 35 fe ff ff jmp $LN86@stbi__crea +$LN87@stbi__crea: + +; 4960 : if (k > 0) + + 0177e 83 bd e4 00 00 + 00 00 cmp DWORD PTR k$[rbp], 0 + 01785 7e 31 jle SHORT $LN147@stbi__crea + +; 4961 : *cur++ = scale * ((*in >> 7)); + + 01787 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0178e 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01795 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01798 c1 f9 07 sar ecx, 7 + 0179b 0f af c1 imul eax, ecx + 0179e 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 017a5 88 01 mov BYTE PTR [rcx], al + 017a7 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 017ae 48 ff c0 inc rax + 017b1 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN147@stbi__crea: + +; 4962 : if (k > 1) + + 017b8 83 bd e4 00 00 + 00 01 cmp DWORD PTR k$[rbp], 1 + 017bf 7e 34 jle SHORT $LN148@stbi__crea + +; 4963 : *cur++ = scale * ((*in >> 6) & 0x01); + + 017c1 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 017c8 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 017cf 0f b6 09 movzx ecx, BYTE PTR [rcx] + 017d2 c1 f9 06 sar ecx, 6 + 017d5 83 e1 01 and ecx, 1 + 017d8 0f af c1 imul eax, ecx + 017db 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 017e2 88 01 mov BYTE PTR [rcx], al + 017e4 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 017eb 48 ff c0 inc rax + 017ee 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN148@stbi__crea: + +; 4964 : if (k > 2) + + 017f5 83 bd e4 00 00 + 00 02 cmp DWORD PTR k$[rbp], 2 + 017fc 7e 34 jle SHORT $LN149@stbi__crea + +; 4965 : *cur++ = scale * ((*in >> 5) & 0x01); + + 017fe 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01805 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 0180c 0f b6 09 movzx ecx, BYTE PTR [rcx] + 0180f c1 f9 05 sar ecx, 5 + 01812 83 e1 01 and ecx, 1 + 01815 0f af c1 imul eax, ecx + 01818 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 0181f 88 01 mov BYTE PTR [rcx], al + 01821 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01828 48 ff c0 inc rax + 0182b 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN149@stbi__crea: + +; 4966 : if (k > 3) + + 01832 83 bd e4 00 00 + 00 03 cmp DWORD PTR k$[rbp], 3 + 01839 7e 34 jle SHORT $LN150@stbi__crea + +; 4967 : *cur++ = scale * ((*in >> 4) & 0x01); + + 0183b 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 01842 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01849 0f b6 09 movzx ecx, BYTE PTR [rcx] + 0184c c1 f9 04 sar ecx, 4 + 0184f 83 e1 01 and ecx, 1 + 01852 0f af c1 imul eax, ecx + 01855 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 0185c 88 01 mov BYTE PTR [rcx], al + 0185e 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 01865 48 ff c0 inc rax + 01868 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN150@stbi__crea: + +; 4968 : if (k > 4) + + 0186f 83 bd e4 00 00 + 00 04 cmp DWORD PTR k$[rbp], 4 + 01876 7e 34 jle SHORT $LN151@stbi__crea + +; 4969 : *cur++ = scale * ((*in >> 3) & 0x01); + + 01878 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 0187f 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01886 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01889 c1 f9 03 sar ecx, 3 + 0188c 83 e1 01 and ecx, 1 + 0188f 0f af c1 imul eax, ecx + 01892 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01899 88 01 mov BYTE PTR [rcx], al + 0189b 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 018a2 48 ff c0 inc rax + 018a5 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN151@stbi__crea: + +; 4970 : if (k > 5) + + 018ac 83 bd e4 00 00 + 00 05 cmp DWORD PTR k$[rbp], 5 + 018b3 7e 34 jle SHORT $LN152@stbi__crea + +; 4971 : *cur++ = scale * ((*in >> 2) & 0x01); + + 018b5 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 018bc 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 018c3 0f b6 09 movzx ecx, BYTE PTR [rcx] + 018c6 c1 f9 02 sar ecx, 2 + 018c9 83 e1 01 and ecx, 1 + 018cc 0f af c1 imul eax, ecx + 018cf 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 018d6 88 01 mov BYTE PTR [rcx], al + 018d8 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 018df 48 ff c0 inc rax + 018e2 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN152@stbi__crea: + +; 4972 : if (k > 6) + + 018e9 83 bd e4 00 00 + 00 06 cmp DWORD PTR k$[rbp], 6 + 018f0 7e 33 jle SHORT $LN153@stbi__crea + +; 4973 : *cur++ = scale * ((*in >> 1) & 0x01); + + 018f2 0f b6 85 44 02 + 00 00 movzx eax, BYTE PTR scale$7[rbp] + 018f9 48 8b 8d 28 02 + 00 00 mov rcx, QWORD PTR in$6[rbp] + 01900 0f b6 09 movzx ecx, BYTE PTR [rcx] + 01903 d1 f9 sar ecx, 1 + 01905 83 e1 01 and ecx, 1 + 01908 0f af c1 imul eax, ecx + 0190b 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01912 88 01 mov BYTE PTR [rcx], al + 01914 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR cur$5[rbp] + 0191b 48 ff c0 inc rax + 0191e 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax +$LN153@stbi__crea: +$LN146@stbi__crea: +$LN142@stbi__crea: +$LN139@stbi__crea: + +; 4974 : } +; 4975 : if (img_n != out_n) { + + 01925 8b 85 78 04 00 + 00 mov eax, DWORD PTR out_n$[rbp] + 0192b 39 85 04 01 00 + 00 cmp DWORD PTR img_n$[rbp], eax + 01931 0f 84 91 01 00 + 00 je $LN154@stbi__crea + +; 4976 : int q; +; 4977 : // insert alpha = 255 +; 4978 : cur = a->out + stride * j; + + 01937 8b 85 84 00 00 + 00 mov eax, DWORD PTR stride$[rbp] + 0193d 0f af 45 64 imul eax, DWORD PTR j$[rbp] + 01941 8b c0 mov eax, eax + 01943 48 8b 8d 60 04 + 00 00 mov rcx, QWORD PTR a$[rbp] + 0194a 48 03 41 18 add rax, QWORD PTR [rcx+24] + 0194e 48 89 85 08 02 + 00 00 mov QWORD PTR cur$5[rbp], rax + +; 4979 : if (img_n == 1) { + + 01955 83 bd 04 01 00 + 00 01 cmp DWORD PTR img_n$[rbp], 1 + 0195c 75 6d jne SHORT $LN155@stbi__crea + +; 4980 : for (q = x - 1; q >= 0; --q) { + + 0195e 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 01964 ff c8 dec eax + 01966 89 85 64 02 00 + 00 mov DWORD PTR q$8[rbp], eax + 0196c eb 0e jmp SHORT $LN91@stbi__crea +$LN89@stbi__crea: + 0196e 8b 85 64 02 00 + 00 mov eax, DWORD PTR q$8[rbp] + 01974 ff c8 dec eax + 01976 89 85 64 02 00 + 00 mov DWORD PTR q$8[rbp], eax +$LN91@stbi__crea: + 0197c 83 bd 64 02 00 + 00 00 cmp DWORD PTR q$8[rbp], 0 + 01983 7c 41 jl SHORT $LN90@stbi__crea + +; 4981 : cur[q * 2 + 1] = 255; + + 01985 8b 85 64 02 00 + 00 mov eax, DWORD PTR q$8[rbp] + 0198b 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1] + 0198f 48 98 cdqe + 01991 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01998 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + +; 4982 : cur[q * 2 + 0] = cur[q]; + + 0199c 48 63 85 64 02 + 00 00 movsxd rax, DWORD PTR q$8[rbp] + 019a3 8b 8d 64 02 00 + 00 mov ecx, DWORD PTR q$8[rbp] + 019a9 03 c9 add ecx, ecx + 019ab 48 63 c9 movsxd rcx, ecx + 019ae 48 8b 95 08 02 + 00 00 mov rdx, QWORD PTR cur$5[rbp] + 019b5 4c 8b 85 08 02 + 00 00 mov r8, QWORD PTR cur$5[rbp] + 019bc 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 019c1 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4983 : } + + 019c4 eb a8 jmp SHORT $LN89@stbi__crea +$LN90@stbi__crea: + +; 4984 : } else { + + 019c6 e9 fd 00 00 00 jmp $LN156@stbi__crea +$LN155@stbi__crea: + +; 4985 : STBI_ASSERT(img_n == 3); + + 019cb 83 bd 04 01 00 + 00 03 cmp DWORD PTR img_n$[rbp], 3 + 019d2 74 1c je SHORT $LN165@stbi__crea + 019d4 41 b8 79 13 00 + 00 mov r8d, 4985 ; 00001379H + 019da 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 019e1 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@ + 019e8 ff 15 00 00 00 + 00 call QWORD PTR __imp__wassert + 019ee 33 c0 xor eax, eax +$LN165@stbi__crea: + +; 4986 : for (q = x - 1; q >= 0; --q) { + + 019f0 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 019f6 ff c8 dec eax + 019f8 89 85 64 02 00 + 00 mov DWORD PTR q$8[rbp], eax + 019fe eb 0e jmp SHORT $LN94@stbi__crea +$LN92@stbi__crea: + 01a00 8b 85 64 02 00 + 00 mov eax, DWORD PTR q$8[rbp] + 01a06 ff c8 dec eax + 01a08 89 85 64 02 00 + 00 mov DWORD PTR q$8[rbp], eax +$LN94@stbi__crea: + 01a0e 83 bd 64 02 00 + 00 00 cmp DWORD PTR q$8[rbp], 0 + 01a15 0f 8c ad 00 00 + 00 jl $LN93@stbi__crea + +; 4987 : cur[q * 4 + 3] = 255; + + 01a1b 8b 85 64 02 00 + 00 mov eax, DWORD PTR q$8[rbp] + 01a21 8d 04 85 03 00 + 00 00 lea eax, DWORD PTR [rax*4+3] + 01a28 48 98 cdqe + 01a2a 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR cur$5[rbp] + 01a31 c6 04 01 ff mov BYTE PTR [rcx+rax], 255 ; 000000ffH + +; 4988 : cur[q * 4 + 2] = cur[q * 3 + 2]; + + 01a35 6b 85 64 02 00 + 00 03 imul eax, DWORD PTR q$8[rbp], 3 + 01a3c 83 c0 02 add eax, 2 + 01a3f 48 98 cdqe + 01a41 8b 8d 64 02 00 + 00 mov ecx, DWORD PTR q$8[rbp] + 01a47 8d 0c 8d 02 00 + 00 00 lea ecx, DWORD PTR [rcx*4+2] + 01a4e 48 63 c9 movsxd rcx, ecx + 01a51 48 8b 95 08 02 + 00 00 mov rdx, QWORD PTR cur$5[rbp] + 01a58 4c 8b 85 08 02 + 00 00 mov r8, QWORD PTR cur$5[rbp] + 01a5f 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 01a64 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4989 : cur[q * 4 + 1] = cur[q * 3 + 1]; + + 01a67 6b 85 64 02 00 + 00 03 imul eax, DWORD PTR q$8[rbp], 3 + 01a6e ff c0 inc eax + 01a70 48 98 cdqe + 01a72 8b 8d 64 02 00 + 00 mov ecx, DWORD PTR q$8[rbp] + 01a78 8d 0c 8d 01 00 + 00 00 lea ecx, DWORD PTR [rcx*4+1] + 01a7f 48 63 c9 movsxd rcx, ecx + 01a82 48 8b 95 08 02 + 00 00 mov rdx, QWORD PTR cur$5[rbp] + 01a89 4c 8b 85 08 02 + 00 00 mov r8, QWORD PTR cur$5[rbp] + 01a90 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 01a95 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4990 : cur[q * 4 + 0] = cur[q * 3 + 0]; + + 01a98 6b 85 64 02 00 + 00 03 imul eax, DWORD PTR q$8[rbp], 3 + 01a9f 48 98 cdqe + 01aa1 8b 8d 64 02 00 + 00 mov ecx, DWORD PTR q$8[rbp] + 01aa7 c1 e1 02 shl ecx, 2 + 01aaa 48 63 c9 movsxd rcx, ecx + 01aad 48 8b 95 08 02 + 00 00 mov rdx, QWORD PTR cur$5[rbp] + 01ab4 4c 8b 85 08 02 + 00 00 mov r8, QWORD PTR cur$5[rbp] + 01abb 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax] + 01ac0 88 04 0a mov BYTE PTR [rdx+rcx], al + +; 4991 : } + + 01ac3 e9 38 ff ff ff jmp $LN92@stbi__crea +$LN93@stbi__crea: +$LN156@stbi__crea: +$LN154@stbi__crea: + +; 4992 : } +; 4993 : } +; 4994 : } + + 01ac8 e9 4e f7 ff ff jmp $LN77@stbi__crea +$LN78@stbi__crea: + +; 4995 : } else if (depth == 16) { + + 01acd e9 b4 00 00 00 jmp $LN137@stbi__crea +$LN136@stbi__crea: + 01ad2 83 bd 90 04 00 + 00 10 cmp DWORD PTR depth$[rbp], 16 + 01ad9 0f 85 a7 00 00 + 00 jne $LN157@stbi__crea + +; 4996 : // force the image data from big-endian to platform-native. +; 4997 : // this is done in a separate pass due to the decoding relying +; 4998 : // on the data being untouched, but could probably be done +; 4999 : // per-line during decode if care is taken. +; 5000 : stbi_uc *cur = a->out; + + 01adf 48 8b 85 60 04 + 00 00 mov rax, QWORD PTR a$[rbp] + 01ae6 48 8b 40 18 mov rax, QWORD PTR [rax+24] + 01aea 48 89 85 88 02 + 00 00 mov QWORD PTR cur$9[rbp], rax + +; 5001 : stbi__uint16 *cur16 = (stbi__uint16 *)cur; + + 01af1 48 8b 85 88 02 + 00 00 mov rax, QWORD PTR cur$9[rbp] + 01af8 48 89 85 a8 02 + 00 00 mov QWORD PTR cur16$10[rbp], rax + +; 5002 : +; 5003 : for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { + + 01aff c7 45 44 00 00 + 00 00 mov DWORD PTR i$[rbp], 0 + 01b06 eb 2c jmp SHORT $LN97@stbi__crea +$LN95@stbi__crea: + 01b08 8b 45 44 mov eax, DWORD PTR i$[rbp] + 01b0b ff c0 inc eax + 01b0d 89 45 44 mov DWORD PTR i$[rbp], eax + 01b10 48 8b 85 a8 02 + 00 00 mov rax, QWORD PTR cur16$10[rbp] + 01b17 48 83 c0 02 add rax, 2 + 01b1b 48 89 85 a8 02 + 00 00 mov QWORD PTR cur16$10[rbp], rax + 01b22 48 8b 85 88 02 + 00 00 mov rax, QWORD PTR cur$9[rbp] + 01b29 48 83 c0 02 add rax, 2 + 01b2d 48 89 85 88 02 + 00 00 mov QWORD PTR cur$9[rbp], rax +$LN97@stbi__crea: + 01b34 8b 85 80 04 00 + 00 mov eax, DWORD PTR x$[rbp] + 01b3a 0f af 85 88 04 + 00 00 imul eax, DWORD PTR y$[rbp] + 01b41 0f af 85 78 04 + 00 00 imul eax, DWORD PTR out_n$[rbp] + 01b48 39 45 44 cmp DWORD PTR i$[rbp], eax + 01b4b 73 39 jae SHORT $LN96@stbi__crea + +; 5004 : *cur16 = (cur[0] << 8) | cur[1]; + + 01b4d b8 01 00 00 00 mov eax, 1 + 01b52 48 6b c0 00 imul rax, rax, 0 + 01b56 48 8b 8d 88 02 + 00 00 mov rcx, QWORD PTR cur$9[rbp] + 01b5d 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 01b61 c1 e0 08 shl eax, 8 + 01b64 b9 01 00 00 00 mov ecx, 1 + 01b69 48 6b c9 01 imul rcx, rcx, 1 + 01b6d 48 8b 95 88 02 + 00 00 mov rdx, QWORD PTR cur$9[rbp] + 01b74 0f b6 0c 0a movzx ecx, BYTE PTR [rdx+rcx] + 01b78 0b c1 or eax, ecx + 01b7a 48 8b 8d a8 02 + 00 00 mov rcx, QWORD PTR cur16$10[rbp] + 01b81 66 89 01 mov WORD PTR [rcx], ax + +; 5005 : } + + 01b84 eb 82 jmp SHORT $LN95@stbi__crea +$LN96@stbi__crea: +$LN157@stbi__crea: +$LN137@stbi__crea: + +; 5006 : } +; 5007 : +; 5008 : return 1; + + 01b86 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__crea: + +; 5009 : } + + 01b8b 48 8d a5 48 04 + 00 00 lea rsp, QWORD PTR [rbp+1096] + 01b92 5f pop rdi + 01b93 5d pop rbp + 01b94 c3 ret 0 + 01b95 0f 1f 00 npad 3 +$LN168@stbi__crea: + 01b98 00 00 00 00 DD $LN105@stbi__crea + 01b9c 00 00 00 00 DD $LN106@stbi__crea + 01ba0 00 00 00 00 DD $LN107@stbi__crea + 01ba4 00 00 00 00 DD $LN108@stbi__crea + 01ba8 00 00 00 00 DD $LN109@stbi__crea + 01bac 00 00 00 00 DD $LN110@stbi__crea + 01bb0 00 00 00 00 DD $LN111@stbi__crea +$LN167@stbi__crea: + 01bb4 00 00 00 00 DD $LN121@stbi__crea + 01bb8 00 00 00 00 DD $LN122@stbi__crea + 01bbc 00 00 00 00 DD $LN123@stbi__crea + 01bc0 00 00 00 00 DD $LN124@stbi__crea + 01bc4 00 00 00 00 DD $LN125@stbi__crea + 01bc8 00 00 00 00 DD $LN126@stbi__crea + 01bcc 00 00 00 00 DD $LN127@stbi__crea +$LN166@stbi__crea: + 01bd0 00 00 00 00 DD $LN128@stbi__crea + 01bd4 00 00 00 00 DD $LN129@stbi__crea + 01bd8 00 00 00 00 DD $LN130@stbi__crea + 01bdc 00 00 00 00 DD $LN131@stbi__crea + 01be0 00 00 00 00 DD $LN132@stbi__crea + 01be4 00 00 00 00 DD $LN133@stbi__crea + 01be8 00 00 00 00 DD $LN134@stbi__crea +stbi__create_png_image_raw ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__paeth +_TEXT SEGMENT +p$ = 4 +pa$ = 36 +pb$ = 68 +pc$ = 100 +a$ = 352 +b$ = 360 +c$ = 368 +stbi__paeth PROC ; COMDAT + +; 4681 : { + + 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 68 01 + 00 00 sub rsp, 360 ; 00000168H + 00016 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 0001b 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00027 90 npad 1 + +; 4682 : int p = a + b - c; + + 00028 8b 85 68 01 00 + 00 mov eax, DWORD PTR b$[rbp] + 0002e 8b 8d 60 01 00 + 00 mov ecx, DWORD PTR a$[rbp] + 00034 03 c8 add ecx, eax + 00036 8b c1 mov eax, ecx + 00038 2b 85 70 01 00 + 00 sub eax, DWORD PTR c$[rbp] + 0003e 89 45 04 mov DWORD PTR p$[rbp], eax + +; 4683 : int pa = abs(p - a); + + 00041 8b 85 60 01 00 + 00 mov eax, DWORD PTR a$[rbp] + 00047 8b 4d 04 mov ecx, DWORD PTR p$[rbp] + 0004a 2b c8 sub ecx, eax + 0004c 8b c1 mov eax, ecx + 0004e 8b c8 mov ecx, eax + 00050 e8 00 00 00 00 call abs + 00055 89 45 24 mov DWORD PTR pa$[rbp], eax + +; 4684 : int pb = abs(p - b); + + 00058 8b 85 68 01 00 + 00 mov eax, DWORD PTR b$[rbp] + 0005e 8b 4d 04 mov ecx, DWORD PTR p$[rbp] + 00061 2b c8 sub ecx, eax + 00063 8b c1 mov eax, ecx + 00065 8b c8 mov ecx, eax + 00067 e8 00 00 00 00 call abs + 0006c 89 45 44 mov DWORD PTR pb$[rbp], eax + +; 4685 : int pc = abs(p - c); + + 0006f 8b 85 70 01 00 + 00 mov eax, DWORD PTR c$[rbp] + 00075 8b 4d 04 mov ecx, DWORD PTR p$[rbp] + 00078 2b c8 sub ecx, eax + 0007a 8b c1 mov eax, ecx + 0007c 8b c8 mov ecx, eax + 0007e e8 00 00 00 00 call abs + 00083 89 45 64 mov DWORD PTR pc$[rbp], eax + +; 4686 : if (pa <= pb && pa <= pc) + + 00086 8b 45 44 mov eax, DWORD PTR pb$[rbp] + 00089 39 45 24 cmp DWORD PTR pa$[rbp], eax + 0008c 7f 10 jg SHORT $LN2@stbi__paet + 0008e 8b 45 64 mov eax, DWORD PTR pc$[rbp] + 00091 39 45 24 cmp DWORD PTR pa$[rbp], eax + 00094 7f 08 jg SHORT $LN2@stbi__paet + +; 4687 : return a; + + 00096 8b 85 60 01 00 + 00 mov eax, DWORD PTR a$[rbp] + 0009c eb 16 jmp SHORT $LN1@stbi__paet +$LN2@stbi__paet: + +; 4688 : if (pb <= pc) + + 0009e 8b 45 64 mov eax, DWORD PTR pc$[rbp] + 000a1 39 45 44 cmp DWORD PTR pb$[rbp], eax + 000a4 7f 08 jg SHORT $LN3@stbi__paet + +; 4689 : return b; + + 000a6 8b 85 68 01 00 + 00 mov eax, DWORD PTR b$[rbp] + 000ac eb 06 jmp SHORT $LN1@stbi__paet +$LN3@stbi__paet: + +; 4690 : return c; + + 000ae 8b 85 70 01 00 + 00 mov eax, DWORD PTR c$[rbp] +$LN1@stbi__paet: + +; 4691 : } + + 000b4 48 8d a5 48 01 + 00 00 lea rsp, QWORD PTR [rbp+328] + 000bb 5f pop rdi + 000bc 5d pop rbp + 000bd c3 ret 0 +stbi__paeth ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__check_png_header +_TEXT SEGMENT +i$ = 4 +s$ = 256 +stbi__check_png_header PROC ; COMDAT + +; 4651 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 4652 : static const stbi_uc png_sig[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; +; 4653 : int i; +; 4654 : 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 + +; 4655 : 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 + +; 4656 : 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: + +; 4657 : return 1; + + 00069 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__chec: + +; 4658 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__get_chunk_header +_TEXT SEGMENT +c$ = 8 +s$ = 256 +stbi__get_chunk_header PROC ; COMDAT + +; 4643 : { + + 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:__079B8C84_stb_image@c + 00033 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00038 90 npad 1 + +; 4644 : stbi__pngchunk c; +; 4645 : 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 + +; 4646 : 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 + +; 4647 : return c; + + 00057 48 8b 45 08 mov rax, QWORD PTR c$[rbp] + +; 4648 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__do_zlib +_TEXT SEGMENT +a$ = 224 +obuf$ = 232 +olen$ = 240 +exp$ = 248 +parse_header$ = 256 +stbi__do_zlib PROC ; COMDAT + +; 4532 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 4533 : 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 20 mov QWORD PTR [rax+32], rcx + +; 4534 : 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 18 mov QWORD PTR [rax+24], rcx + +; 4535 : 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 28 mov QWORD PTR [rcx+40], rax + +; 4536 : 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 30 mov DWORD PTR [rax+48], ecx + +; 4537 : +; 4538 : 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 + +; 4539 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__parse_zlib +_TEXT SEGMENT +final$ = 4 +type$ = 36 +a$ = 288 +parse_header$ = 296 +stbi__parse_zlib PROC ; COMDAT + +; 4496 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 4497 : int final, type; +; 4498 : 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 + +; 4499 : 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 + +; 4500 : return 0; + + 0003d 33 c0 xor eax, eax + 0003f e9 09 01 00 00 jmp $LN1@stbi__pars +$LN6@stbi__pars: +$LN5@stbi__pars: + +; 4501 : 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 + +; 4502 : a->code_buffer = 0; + + 00052 48 8b 85 20 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 00059 c7 40 14 00 00 + 00 00 mov DWORD PTR [rax+20], 0 +$LN4@stbi__pars: + +; 4503 : do { +; 4504 : final = stbi__zreceive(a, 1); + + 00060 ba 01 00 00 00 mov edx, 1 + 00065 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 0006c e8 00 00 00 00 call stbi__zreceive + 00071 89 45 04 mov DWORD PTR final$[rbp], eax + +; 4505 : type = stbi__zreceive(a, 2); + + 00074 ba 02 00 00 00 mov edx, 2 + 00079 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00080 e8 00 00 00 00 call stbi__zreceive + 00085 89 45 24 mov DWORD PTR type$[rbp], eax + +; 4506 : if (type == 0) { + + 00088 83 7d 24 00 cmp DWORD PTR type$[rbp], 0 + 0008c 75 1c jne SHORT $LN7@stbi__pars + +; 4507 : if (!stbi__parse_uncompressed_block(a)) + + 0008e 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00095 e8 00 00 00 00 call stbi__parse_uncompressed_block + 0009a 85 c0 test eax, eax + 0009c 75 07 jne SHORT $LN9@stbi__pars + +; 4508 : return 0; + + 0009e 33 c0 xor eax, eax + 000a0 e9 a8 00 00 00 jmp $LN1@stbi__pars +$LN9@stbi__pars: + +; 4509 : } else if (type == 3) { + + 000a5 e9 94 00 00 00 jmp $LN8@stbi__pars +$LN7@stbi__pars: + 000aa 83 7d 24 03 cmp DWORD PTR type$[rbp], 3 + 000ae 75 0c jne SHORT $LN10@stbi__pars + +; 4510 : return 0; + + 000b0 33 c0 xor eax, eax + 000b2 e9 96 00 00 00 jmp $LN1@stbi__pars + +; 4511 : } else { + + 000b7 e9 82 00 00 00 jmp $LN11@stbi__pars +$LN10@stbi__pars: + +; 4512 : if (type == 1) { + + 000bc 83 7d 24 01 cmp DWORD PTR type$[rbp], 1 + 000c0 75 54 jne SHORT $LN12@stbi__pars + +; 4513 : // use fixed code lengths +; 4514 : if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, + + 000c2 48 8b 85 20 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 000c9 48 83 c0 34 add rax, 52 ; 00000034H + 000cd 41 b8 20 01 00 + 00 mov r8d, 288 ; 00000120H + 000d3 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:stbi__zdefault_length + 000da 48 8b c8 mov rcx, rax + 000dd e8 00 00 00 00 call stbi__zbuild_huffman + 000e2 85 c0 test eax, eax + 000e4 75 04 jne SHORT $LN14@stbi__pars + +; 4515 : STBI__ZNSYMS)) +; 4516 : return 0; + + 000e6 33 c0 xor eax, eax + 000e8 eb 63 jmp SHORT $LN1@stbi__pars +$LN14@stbi__pars: + +; 4517 : if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, + + 000ea 48 8b 85 20 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 000f1 48 05 18 08 00 + 00 add rax, 2072 ; 00000818H + 000f7 41 b8 20 00 00 + 00 mov r8d, 32 ; 00000020H + 000fd 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:stbi__zdefault_distance + 00104 48 8b c8 mov rcx, rax + 00107 e8 00 00 00 00 call stbi__zbuild_huffman + 0010c 85 c0 test eax, eax + 0010e 75 04 jne SHORT $LN15@stbi__pars + +; 4518 : 32)) +; 4519 : return 0; + + 00110 33 c0 xor eax, eax + 00112 eb 39 jmp SHORT $LN1@stbi__pars +$LN15@stbi__pars: + +; 4520 : } else { + + 00114 eb 14 jmp SHORT $LN13@stbi__pars +$LN12@stbi__pars: + +; 4521 : if (!stbi__compute_huffman_codes(a)) + + 00116 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 0011d e8 00 00 00 00 call stbi__compute_huffman_codes + 00122 85 c0 test eax, eax + 00124 75 04 jne SHORT $LN16@stbi__pars + +; 4522 : return 0; + + 00126 33 c0 xor eax, eax + 00128 eb 23 jmp SHORT $LN1@stbi__pars +$LN16@stbi__pars: +$LN13@stbi__pars: + +; 4523 : } +; 4524 : if (!stbi__parse_huffman_block(a)) + + 0012a 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00131 e8 00 00 00 00 call stbi__parse_huffman_block + 00136 85 c0 test eax, eax + 00138 75 04 jne SHORT $LN17@stbi__pars + +; 4525 : return 0; + + 0013a 33 c0 xor eax, eax + 0013c eb 0f jmp SHORT $LN1@stbi__pars +$LN17@stbi__pars: +$LN11@stbi__pars: +$LN8@stbi__pars: + +; 4526 : } +; 4527 : } while (!final); + + 0013e 83 7d 04 00 cmp DWORD PTR final$[rbp], 0 + 00142 0f 84 18 ff ff + ff je $LN4@stbi__pars + +; 4528 : return 1; + + 00148 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__pars: + +; 4529 : } + + 0014d 48 8d a5 08 01 + 00 00 lea rsp, QWORD PTR [rbp+264] + 00154 5f pop rdi + 00155 5d pop rbp + 00156 c3 ret 0 +stbi__parse_zlib ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__parse_zlib_header +_TEXT SEGMENT +cmf$ = 4 +cm$ = 36 +flg$ = 68 +a$ = 320 +stbi__parse_zlib_header PROC ; COMDAT + +; 4447 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 4448 : 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 + +; 4449 : 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 + +; 4450 : /* int cinfo = cmf >> 4; */ +; 4451 : 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 + +; 4452 : 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 + +; 4453 : 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: + +; 4454 : 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 + +; 4455 : 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: + +; 4456 : 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 + +; 4457 : 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: + +; 4458 : "Corrupt PNG"); // preset dictionary not allowed in png +; 4459 : if (cm != 8) + + 000a9 83 7d 24 08 cmp DWORD PTR cm$[rbp], 8 + 000ad 74 0e je SHORT $LN5@stbi__pars + +; 4460 : return stbi__err("bad compression", + + 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: + +; 4461 : "Corrupt PNG"); // DEFLATE required for png +; 4462 : // window = 1 << (8 + cinfo)... but who cares, we fully buffer output +; 4463 : return 1; + + 000bd b8 01 00 00 00 mov eax, 1 +$LN1@stbi__pars: + +; 4464 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__parse_uncompressed_block +_TEXT SEGMENT +header$ = 4 +len$ = 36 +nlen$ = 68 +k$ = 100 +a$ = 352 +stbi__parse_uncompressed_block PROC ; COMDAT + +; 4414 : { + + 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:__079B8C84_stb_image@c + 00033 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00038 90 npad 1 + +; 4415 : stbi_uc header[4]; +; 4416 : int len, nlen, k; +; 4417 : 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 + +; 4418 : 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: + +; 4419 : // drain the bit-packed data into header +; 4420 : k = 0; + + 00066 c7 45 64 00 00 + 00 00 mov DWORD PTR k$[rbp], 0 +$LN2@stbi__pars: + +; 4421 : 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 + +; 4422 : 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 14 mov eax, DWORD PTR [rax+20] + 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 + +; 4423 : a->code_buffer >>= 8; + + 00099 48 8b 85 60 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 000a0 8b 40 14 mov eax, DWORD PTR [rax+20] + 000a3 c1 e8 08 shr eax, 8 + 000a6 48 8b 8d 60 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 000ad 89 41 14 mov DWORD PTR [rcx+20], eax + +; 4424 : 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 + +; 4425 : } + + 000c7 eb a4 jmp SHORT $LN2@stbi__pars +$LN3@stbi__pars: + +; 4426 : 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 + +; 4427 : 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: + +; 4428 : // now fill header the normal way +; 4429 : while (k < 4) + + 000e7 83 7d 64 04 cmp DWORD PTR k$[rbp], 4 + 000eb 7d 1e jge SHORT $LN5@stbi__pars + +; 4430 : 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: + +; 4431 : 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 + +; 4432 : 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 + +; 4433 : 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 + +; 4434 : 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: + +; 4435 : 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 + +; 4436 : 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: + +; 4437 : 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 18 add rax, QWORD PTR [rcx+24] + 001b2 48 8b 8d 60 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 001b9 48 3b 41 28 cmp rax, QWORD PTR [rcx+40] + 001bd 76 23 jbe SHORT $LN10@stbi__pars + +; 4438 : 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 18 mov rdx, QWORD PTR [rax+24] + 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 + +; 4439 : return 0; + + 001de 33 c0 xor eax, eax + 001e0 eb 59 jmp SHORT $LN1@stbi__pars +$LN11@stbi__pars: +$LN10@stbi__pars: + +; 4440 : 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 18 mov rcx, QWORD PTR [rax+24] + 001fe e8 00 00 00 00 call memcpy + 00203 90 npad 1 + +; 4441 : 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 + +; 4442 : 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 18 add rax, QWORD PTR [rcx+24] + 0022b 48 8b 8d 60 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00232 48 89 41 18 mov QWORD PTR [rcx+24], rax + +; 4443 : return 1; + + 00236 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__pars: + +; 4444 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 4356 : { + + 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:__079B8C84_stb_image@c + 0004a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004f 90 npad 1 + +; 4357 : static const stbi_uc length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, +; 4358 : 11, 4, 12, 3, 13, 2, 14, 1, 15 }; +; 4359 : stbi__zhuffman z_codelength; +; 4360 : stbi_uc lencodes[286 + 32 + 137]; //padding for maximum single op +; 4361 : stbi_uc codelength_sizes[19]; +; 4362 : int i, n; +; 4363 : +; 4364 : 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 + +; 4365 : 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 + +; 4366 : 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 + +; 4367 : 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 + +; 4368 : +; 4369 : 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 + +; 4370 : 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 + +; 4371 : 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 + +; 4372 : 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 + +; 4373 : } + + 00129 eb ab jmp SHORT $LN2@stbi__comp +$LN3@stbi__comp: + +; 4374 : 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 + +; 4375 : return 0; + + 00145 33 c0 xor eax, eax + 00147 e9 3a 02 00 00 jmp $LN1@stbi__comp +$LN7@stbi__comp: + +; 4376 : +; 4377 : n = 0; + + 0014c c7 85 54 0a 00 + 00 00 00 00 00 mov DWORD PTR n$[rbp], 0 +$LN5@stbi__comp: + +; 4378 : 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 + +; 4379 : 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 + +; 4380 : 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: + +; 4381 : 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: + +; 4382 : 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 + +; 4383 : 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: + +; 4384 : else { +; 4385 : stbi_uc fill = 0; + + 001d2 c6 85 34 0b 00 + 00 00 mov BYTE PTR fill$8[rbp], 0 + +; 4386 : 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 + +; 4387 : 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 + +; 4388 : 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 + +; 4389 : 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: + +; 4390 : 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: + +; 4391 : } 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 + +; 4392 : 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: + +; 4393 : } 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 + +; 4394 : 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 + +; 4395 : } else { + + 00278 eb 11 jmp SHORT $LN18@stbi__comp +$LN17@stbi__comp: + +; 4396 : 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: + +; 4397 : } +; 4398 : 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 + +; 4399 : 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: + +; 4400 : 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 + +; 4401 : 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: + +; 4402 : } +; 4403 : } + + 00303 e9 4e fe ff ff jmp $LN5@stbi__comp +$LN6@stbi__comp: + +; 4404 : 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 + +; 4405 : 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: + +; 4406 : 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 34 add rax, 52 ; 00000034H + 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 + +; 4407 : return 0; + + 00349 33 c0 xor eax, eax + 0034b eb 39 jmp SHORT $LN1@stbi__comp +$LN21@stbi__comp: + +; 4408 : 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 18 08 + 00 00 add rcx, 2072 ; 00000818H + 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 + +; 4409 : return 0; + + 0037d 33 c0 xor eax, eax + 0037f eb 05 jmp SHORT $LN1@stbi__comp +$LN22@stbi__comp: + +; 4410 : return 1; + + 00381 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__comp: + +; 4411 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 4292 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 4293 : char *zout = a->zout; + + 00020 48 8b 85 a0 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 00027 48 8b 40 18 mov rax, QWORD PTR [rax+24] + 0002b 48 89 45 08 mov QWORD PTR zout$[rbp], rax +$LN2@stbi__pars: + +; 4294 : for (;;) { +; 4295 : 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 34 add rax, 52 ; 00000034H + 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 + +; 4296 : 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 + +; 4297 : if (z < 0) + + 00055 83 7d 24 00 cmp DWORD PTR z$1[rbp], 0 + 00059 7d 11 jge SHORT $LN13@stbi__pars + +; 4298 : 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 83 02 00 00 jmp $LN1@stbi__pars +$LN13@stbi__pars: + +; 4299 : "Corrupt PNG"); // error in huffman codes +; 4300 : if (zout >= a->zout_end) { + + 0006c 48 8b 85 a0 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 00073 48 8b 40 28 mov rax, QWORD PTR [rax+40] + 00077 48 39 45 08 cmp QWORD PTR zout$[rbp], rax + 0007b 72 30 jb SHORT $LN14@stbi__pars + +; 4301 : 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 + +; 4302 : return 0; + + 00097 33 c0 xor eax, eax + 00099 e9 51 02 00 00 jmp $LN1@stbi__pars +$LN15@stbi__pars: + +; 4303 : zout = a->zout; + + 0009e 48 8b 85 a0 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 000a5 48 8b 40 18 mov rax, QWORD PTR [rax+24] + 000a9 48 89 45 08 mov QWORD PTR zout$[rbp], rax +$LN14@stbi__pars: + +; 4304 : } +; 4305 : *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 + +; 4306 : } else { + + 000c2 e9 23 02 00 00 jmp $LN12@stbi__pars +$LN11@stbi__pars: + +; 4307 : stbi_uc *p; +; 4308 : int len, dist; +; 4309 : if (z == 256) { + + 000c7 81 7d 24 00 01 + 00 00 cmp DWORD PTR z$1[rbp], 256 ; 00000100H + 000ce 75 19 jne SHORT $LN16@stbi__pars + +; 4310 : 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 18 mov QWORD PTR [rax+24], rcx + +; 4311 : return 1; + + 000df b8 01 00 00 00 mov eax, 1 + 000e4 e9 06 02 00 00 jmp $LN1@stbi__pars +$LN16@stbi__pars: + +; 4312 : } +; 4313 : if (z >= 286) + + 000e9 81 7d 24 1e 01 + 00 00 cmp DWORD PTR z$1[rbp], 286 ; 0000011eH + 000f0 7c 11 jl SHORT $LN17@stbi__pars + +; 4314 : return stbi__err( + + 000f2 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 000f9 e8 00 00 00 00 call stbi__err + 000fe e9 ec 01 00 00 jmp $LN1@stbi__pars +$LN17@stbi__pars: + +; 4315 : "bad huffman code", +; 4316 : "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data +; 4317 : z -= 257; + + 00103 8b 45 24 mov eax, DWORD PTR z$1[rbp] + 00106 2d 01 01 00 00 sub eax, 257 ; 00000101H + 0010b 89 45 24 mov DWORD PTR z$1[rbp], eax + +; 4318 : len = stbi__zlength_base[z]; + + 0010e 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp] + 00112 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__zlength_base + 00119 8b 04 81 mov eax, DWORD PTR [rcx+rax*4] + 0011c 89 45 64 mov DWORD PTR len$3[rbp], eax + +; 4319 : if (stbi__zlength_extra[z]) + + 0011f 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp] + 00123 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__zlength_extra + 0012a 83 3c 81 00 cmp DWORD PTR [rcx+rax*4], 0 + 0012e 74 24 je SHORT $LN18@stbi__pars + +; 4320 : len += stbi__zreceive(a, stbi__zlength_extra[z]); + + 00130 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp] + 00134 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__zlength_extra + 0013b 8b 14 81 mov edx, DWORD PTR [rcx+rax*4] + 0013e 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00145 e8 00 00 00 00 call stbi__zreceive + 0014a 8b 4d 64 mov ecx, DWORD PTR len$3[rbp] + 0014d 03 c8 add ecx, eax + 0014f 8b c1 mov eax, ecx + 00151 89 45 64 mov DWORD PTR len$3[rbp], eax +$LN18@stbi__pars: + +; 4321 : z = stbi__zhuffman_decode(a, &a->z_distance); + + 00154 48 8b 85 a0 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 0015b 48 05 18 08 00 + 00 add rax, 2072 ; 00000818H + 00161 48 8b d0 mov rdx, rax + 00164 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 0016b e8 00 00 00 00 call stbi__zhuffman_decode + 00170 89 45 24 mov DWORD PTR z$1[rbp], eax + +; 4322 : if (z < 0 || z >= 30) + + 00173 83 7d 24 00 cmp DWORD PTR z$1[rbp], 0 + 00177 7c 06 jl SHORT $LN20@stbi__pars + 00179 83 7d 24 1e cmp DWORD PTR z$1[rbp], 30 + 0017d 7c 11 jl SHORT $LN19@stbi__pars +$LN20@stbi__pars: + +; 4323 : return stbi__err( + + 0017f 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 00186 e8 00 00 00 00 call stbi__err + 0018b e9 5f 01 00 00 jmp $LN1@stbi__pars +$LN19@stbi__pars: + +; 4324 : "bad huffman code", +; 4325 : "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data +; 4326 : dist = stbi__zdist_base[z]; + + 00190 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp] + 00194 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__zdist_base + 0019b 8b 04 81 mov eax, DWORD PTR [rcx+rax*4] + 0019e 89 85 84 00 00 + 00 mov DWORD PTR dist$4[rbp], eax + +; 4327 : if (stbi__zdist_extra[z]) + + 001a4 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp] + 001a8 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__zdist_extra + 001af 83 3c 81 00 cmp DWORD PTR [rcx+rax*4], 0 + 001b3 74 2a je SHORT $LN21@stbi__pars + +; 4328 : dist += stbi__zreceive(a, stbi__zdist_extra[z]); + + 001b5 48 63 45 24 movsxd rax, DWORD PTR z$1[rbp] + 001b9 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__zdist_extra + 001c0 8b 14 81 mov edx, DWORD PTR [rcx+rax*4] + 001c3 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 001ca e8 00 00 00 00 call stbi__zreceive + 001cf 8b 8d 84 00 00 + 00 mov ecx, DWORD PTR dist$4[rbp] + 001d5 03 c8 add ecx, eax + 001d7 8b c1 mov eax, ecx + 001d9 89 85 84 00 00 + 00 mov DWORD PTR dist$4[rbp], eax +$LN21@stbi__pars: + +; 4329 : if (zout - a->zout_start < dist) + + 001df 48 8b 85 a0 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 001e6 48 8b 40 20 mov rax, QWORD PTR [rax+32] + 001ea 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp] + 001ee 48 2b c8 sub rcx, rax + 001f1 48 8b c1 mov rax, rcx + 001f4 48 63 8d 84 00 + 00 00 movsxd rcx, DWORD PTR dist$4[rbp] + 001fb 48 3b c1 cmp rax, rcx + 001fe 7d 11 jge SHORT $LN22@stbi__pars + +; 4330 : return stbi__err("bad dist", "Corrupt PNG"); + + 00200 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_08DIAPIMGJ@bad?5dist@ + 00207 e8 00 00 00 00 call stbi__err + 0020c e9 de 00 00 00 jmp $LN1@stbi__pars +$LN22@stbi__pars: + +; 4331 : if (zout + len > a->zout_end) { + + 00211 48 63 45 64 movsxd rax, DWORD PTR len$3[rbp] + 00215 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp] + 00219 48 03 c8 add rcx, rax + 0021c 48 8b c1 mov rax, rcx + 0021f 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00226 48 3b 41 28 cmp rax, QWORD PTR [rcx+40] + 0022a 76 2e jbe SHORT $LN23@stbi__pars + +; 4332 : if (!stbi__zexpand(a, zout, len)) + + 0022c 44 8b 45 64 mov r8d, DWORD PTR len$3[rbp] + 00230 48 8b 55 08 mov rdx, QWORD PTR zout$[rbp] + 00234 48 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 0023b e8 00 00 00 00 call stbi__zexpand + 00240 85 c0 test eax, eax + 00242 75 07 jne SHORT $LN24@stbi__pars + +; 4333 : return 0; + + 00244 33 c0 xor eax, eax + 00246 e9 a4 00 00 00 jmp $LN1@stbi__pars +$LN24@stbi__pars: + +; 4334 : zout = a->zout; + + 0024b 48 8b 85 a0 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 00252 48 8b 40 18 mov rax, QWORD PTR [rax+24] + 00256 48 89 45 08 mov QWORD PTR zout$[rbp], rax +$LN23@stbi__pars: + +; 4335 : } +; 4336 : p = (stbi_uc *)(zout - dist); + + 0025a 48 63 85 84 00 + 00 00 movsxd rax, DWORD PTR dist$4[rbp] + 00261 48 8b 4d 08 mov rcx, QWORD PTR zout$[rbp] + 00265 48 2b c8 sub rcx, rax + 00268 48 8b c1 mov rax, rcx + 0026b 48 89 45 48 mov QWORD PTR p$2[rbp], rax + +; 4337 : if (dist == 1) { // run of one byte; common in images. + + 0026f 83 bd 84 00 00 + 00 01 cmp DWORD PTR dist$4[rbp], 1 + 00276 75 3b jne SHORT $LN25@stbi__pars + +; 4338 : stbi_uc v = *p; + + 00278 48 8b 45 48 mov rax, QWORD PTR p$2[rbp] + 0027c 0f b6 00 movzx eax, BYTE PTR [rax] + 0027f 88 85 a4 00 00 + 00 mov BYTE PTR v$5[rbp], al + +; 4339 : if (len) { + + 00285 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0 + 00289 74 26 je SHORT $LN27@stbi__pars +$LN7@stbi__pars: + +; 4340 : do +; 4341 : *zout++ = v; + + 0028b 48 8b 45 08 mov rax, QWORD PTR zout$[rbp] + 0028f 0f b6 8d a4 00 + 00 00 movzx ecx, BYTE PTR v$5[rbp] + 00296 88 08 mov BYTE PTR [rax], cl + 00298 48 8b 45 08 mov rax, QWORD PTR zout$[rbp] + 0029c 48 ff c0 inc rax + 0029f 48 89 45 08 mov QWORD PTR zout$[rbp], rax + +; 4342 : while (--len); + + 002a3 8b 45 64 mov eax, DWORD PTR len$3[rbp] + 002a6 ff c8 dec eax + 002a8 89 45 64 mov DWORD PTR len$3[rbp], eax + 002ab 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0 + 002af 75 da jne SHORT $LN7@stbi__pars +$LN27@stbi__pars: + +; 4343 : } +; 4344 : } else { + + 002b1 eb 37 jmp SHORT $LN26@stbi__pars +$LN25@stbi__pars: + +; 4345 : if (len) { + + 002b3 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0 + 002b7 74 31 je SHORT $LN28@stbi__pars +$LN10@stbi__pars: + +; 4346 : do +; 4347 : *zout++ = *p++; + + 002b9 48 8b 45 08 mov rax, QWORD PTR zout$[rbp] + 002bd 48 8b 4d 48 mov rcx, QWORD PTR p$2[rbp] + 002c1 0f b6 09 movzx ecx, BYTE PTR [rcx] + 002c4 88 08 mov BYTE PTR [rax], cl + 002c6 48 8b 45 08 mov rax, QWORD PTR zout$[rbp] + 002ca 48 ff c0 inc rax + 002cd 48 89 45 08 mov QWORD PTR zout$[rbp], rax + 002d1 48 8b 45 48 mov rax, QWORD PTR p$2[rbp] + 002d5 48 ff c0 inc rax + 002d8 48 89 45 48 mov QWORD PTR p$2[rbp], rax + +; 4348 : while (--len); + + 002dc 8b 45 64 mov eax, DWORD PTR len$3[rbp] + 002df ff c8 dec eax + 002e1 89 45 64 mov DWORD PTR len$3[rbp], eax + 002e4 83 7d 64 00 cmp DWORD PTR len$3[rbp], 0 + 002e8 75 cf jne SHORT $LN10@stbi__pars +$LN28@stbi__pars: +$LN26@stbi__pars: +$LN12@stbi__pars: + +; 4349 : } +; 4350 : } +; 4351 : } +; 4352 : } + + 002ea e9 40 fd ff ff jmp $LN2@stbi__pars +$LN1@stbi__pars: + +; 4353 : } + + 002ef 48 8d a5 88 01 + 00 00 lea rsp, QWORD PTR [rbp+392] + 002f6 5f pop rdi + 002f7 5d pop rbp + 002f8 c3 ret 0 +stbi__parse_huffman_block ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__zexpand +_TEXT SEGMENT +q$ = 8 +cur$ = 36 +limit$ = 68 +old_limit$ = 100 +z$ = 352 +zout$ = 360 +n$ = 368 +stbi__zexpand PROC ; COMDAT + +; 4251 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 4252 : char *q; +; 4253 : unsigned int cur, limit, old_limit; +; 4254 : 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 18 mov QWORD PTR [rax+24], rcx + +; 4255 : if (!z->z_expandable) + + 0003c 48 8b 85 60 01 + 00 00 mov rax, QWORD PTR z$[rbp] + 00043 83 78 30 00 cmp DWORD PTR [rax+48], 0 + 00047 75 11 jne SHORT $LN4@stbi__zexp + +; 4256 : 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: + +; 4257 : 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 20 mov rcx, QWORD PTR [rcx+32] + 0006c 48 8b 40 18 mov rax, QWORD PTR [rax+24] + 00070 48 2b c1 sub rax, rcx + 00073 89 45 24 mov DWORD PTR cur$[rbp], eax + +; 4258 : 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 20 mov rcx, QWORD PTR [rcx+32] + 00088 48 8b 40 28 mov rax, QWORD PTR [rax+40] + 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 + +; 4259 : 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 + +; 4260 : 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: + +; 4261 : 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 + +; 4262 : 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 + +; 4263 : 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: + +; 4264 : 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 + +; 4265 : } + + 000ea eb cd jmp SHORT $LN2@stbi__zexp +$LN3@stbi__zexp: + +; 4266 : 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 20 mov rcx, QWORD PTR [rax+32] + 000fc ff 15 00 00 00 + 00 call QWORD PTR __imp_realloc + 00102 48 89 45 08 mov QWORD PTR q$[rbp], rax + +; 4267 : STBI_NOTUSED(old_limit); +; 4268 : if (q == NULL) + + 00106 48 83 7d 08 00 cmp QWORD PTR q$[rbp], 0 + 0010b 75 0e jne SHORT $LN7@stbi__zexp + +; 4269 : 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: + +; 4270 : 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 20 mov QWORD PTR [rax+32], rcx + +; 4271 : 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 18 mov QWORD PTR [rcx+24], rax + +; 4272 : 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 28 mov QWORD PTR [rcx+40], rax + +; 4273 : return 1; + + 0015a b8 01 00 00 00 mov eax, 1 +$LN1@stbi__zexp: + +; 4274 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__zhuffman_decode +_TEXT SEGMENT +b$ = 4 +s$ = 36 +tv133 = 248 +a$ = 288 +z$ = 296 +stbi__zhuffman_decode PROC ; COMDAT + +; 4231 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 4232 : int b, s; +; 4233 : 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 27 jge SHORT $LN2@stbi__zhuf + +; 4234 : 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 0a je SHORT $LN3@stbi__zhuf + +; 4235 : return -1; /* report error for unexpected end of data. */ + + 00042 b8 ff ff ff ff mov eax, -1 + 00047 e9 9b 00 00 00 jmp $LN1@stbi__zhuf +$LN3@stbi__zhuf: + +; 4236 : } +; 4237 : stbi__fill_bits(a); + + 0004c 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00053 e8 00 00 00 00 call stbi__fill_bits + 00058 90 npad 1 +$LN2@stbi__zhuf: + +; 4238 : } +; 4239 : b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + + 00059 48 8b 85 20 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 00060 8b 40 14 mov eax, DWORD PTR [rax+20] + 00063 25 ff 01 00 00 and eax, 511 ; 000001ffH + 00068 8b c0 mov eax, eax + 0006a 48 8b 8d 28 01 + 00 00 mov rcx, QWORD PTR z$[rbp] + 00071 0f b7 04 41 movzx eax, WORD PTR [rcx+rax*2] + 00075 89 45 04 mov DWORD PTR b$[rbp], eax + +; 4240 : if (b) { + + 00078 83 7d 04 00 cmp DWORD PTR b$[rbp], 0 + 0007c 74 56 je SHORT $LN4@stbi__zhuf + +; 4241 : s = b >> 9; + + 0007e 8b 45 04 mov eax, DWORD PTR b$[rbp] + 00081 c1 f8 09 sar eax, 9 + 00084 89 45 24 mov DWORD PTR s$[rbp], eax + +; 4242 : a->code_buffer >>= s; + + 00087 8b 45 24 mov eax, DWORD PTR s$[rbp] + 0008a 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 00091 48 89 8d f8 00 + 00 00 mov QWORD PTR tv133[rbp], rcx + 00098 0f b6 c8 movzx ecx, al + 0009b 48 8b 85 f8 00 + 00 00 mov rax, QWORD PTR tv133[rbp] + 000a2 8b 40 14 mov eax, DWORD PTR [rax+20] + 000a5 d3 e8 shr eax, cl + 000a7 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 000ae 89 41 14 mov DWORD PTR [rcx+20], eax + +; 4243 : a->num_bits -= s; + + 000b1 48 8b 85 20 01 + 00 00 mov rax, QWORD PTR a$[rbp] + 000b8 8b 4d 24 mov ecx, DWORD PTR s$[rbp] + 000bb 8b 40 10 mov eax, DWORD PTR [rax+16] + 000be 2b c1 sub eax, ecx + 000c0 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 000c7 89 41 10 mov DWORD PTR [rcx+16], eax + +; 4244 : return b & 511; + + 000ca 8b 45 04 mov eax, DWORD PTR b$[rbp] + 000cd 25 ff 01 00 00 and eax, 511 ; 000001ffH + 000d2 eb 13 jmp SHORT $LN1@stbi__zhuf +$LN4@stbi__zhuf: + +; 4245 : } +; 4246 : return stbi__zhuffman_decode_slowpath(a, z); + + 000d4 48 8b 95 28 01 + 00 00 mov rdx, QWORD PTR z$[rbp] + 000db 48 8b 8d 20 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 000e2 e8 00 00 00 00 call stbi__zhuffman_decode_slowpath +$LN1@stbi__zhuf: + +; 4247 : } + + 000e7 48 8d a5 08 01 + 00 00 lea rsp, QWORD PTR [rbp+264] + 000ee 5f pop rdi + 000ef 5d pop rbp + 000f0 c3 ret 0 +stbi__zhuffman_decode ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 4209 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 4210 : int b, s, k; +; 4211 : // not resolved by fast table, so compute it the slow way +; 4212 : // use jpeg approach, which requires MSbits at top +; 4213 : 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 14 mov ecx, DWORD PTR [rax+20] + 00034 e8 00 00 00 00 call stbi__bit_reverse + 00039 89 45 44 mov DWORD PTR k$[rbp], eax + +; 4214 : 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: + +; 4215 : 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 + +; 4216 : break; + + 00064 eb 02 jmp SHORT $LN3@stbi__zhuf +$LN5@stbi__zhuf: + 00066 eb dd jmp SHORT $LN2@stbi__zhuf +$LN3@stbi__zhuf: + +; 4217 : if (s >= 16) + + 00068 83 7d 24 10 cmp DWORD PTR s$[rbp], 16 + 0006c 7c 0a jl SHORT $LN6@stbi__zhuf + +; 4218 : 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: + +; 4219 : // code size is s, so: +; 4220 : 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 + +; 4221 : 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 + +; 4222 : 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: + +; 4223 : 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 + +; 4224 : 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: + +; 4225 : 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 14 mov eax, DWORD PTR [rax+20] + 00102 d3 e8 shr eax, cl + 00104 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR a$[rbp] + 0010b 89 41 14 mov DWORD PTR [rcx+20], eax + +; 4226 : 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 + +; 4227 : 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: + +; 4228 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__zreceive +_TEXT SEGMENT +k$ = 4 +tv84 = 212 +tv90 = 216 +z$ = 256 +n$ = 264 +stbi__zreceive PROC ; COMDAT + +; 4198 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 4199 : unsigned int k; +; 4200 : 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 + +; 4201 : 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: + +; 4202 : 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 14 mov ecx, DWORD PTR [rcx+20] + 0006b 23 c8 and ecx, eax + 0006d 8b c1 mov eax, ecx + 0006f 89 45 04 mov DWORD PTR k$[rbp], eax + +; 4203 : 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 14 mov eax, DWORD PTR [rax+20] + 00093 d3 e8 shr eax, cl + 00095 48 8b 8d 00 01 + 00 00 mov rcx, QWORD PTR z$[rbp] + 0009c 89 41 14 mov DWORD PTR [rcx+20], eax + +; 4204 : 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 + +; 4205 : return k; + + 000bb 8b 45 04 mov eax, DWORD PTR k$[rbp] + +; 4206 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__fill_bits +_TEXT SEGMENT +tv92 = 192 +z$ = 240 +stbi__fill_bits PROC ; COMDAT + +; 4186 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 +$LN4@stbi__fill: + +; 4187 : do { +; 4188 : 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 14 cmp DWORD PTR [rcx+20], eax + 0004a 72 17 jb SHORT $LN5@stbi__fill + +; 4189 : 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 + +; 4190 : return; + + 00061 eb 5b jmp SHORT $LN1@stbi__fill +$LN5@stbi__fill: + +; 4191 : } +; 4192 : 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 14 mov ecx, DWORD PTR [rcx+20] + 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 14 mov DWORD PTR [rcx+20], eax + +; 4193 : 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 + +; 4194 : } 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: + +; 4195 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__zget8 +_TEXT SEGMENT +tv73 = 192 +z$ = 240 +stbi__zget8 PROC ; COMDAT + +; 4181 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 4182 : 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] + +; 4183 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__zeof +_TEXT SEGMENT +tv67 = 192 +z$ = 240 +stbi__zeof PROC ; COMDAT + +; 4176 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 4177 : 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] + +; 4178 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 4109 : { + + 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:__079B8C84_stb_image@c + 0004e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00053 90 npad 1 + +; 4110 : int i, k = 0; + + 00054 c7 45 24 00 00 + 00 00 mov DWORD PTR k$[rbp], 0 + +; 4111 : int code, next_code[16], sizes[17]; +; 4112 : +; 4113 : // DEFLATE spec for generating codes +; 4114 : 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 + +; 4115 : 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 + +; 4116 : 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 + +; 4117 : ++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: + +; 4118 : 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 + +; 4119 : 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 + +; 4120 : 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 + +; 4121 : 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: + +; 4122 : code = 0; + + 0012b c7 45 44 00 00 + 00 00 mov DWORD PTR code$[rbp], 0 + +; 4123 : 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 + +; 4124 : 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 + +; 4125 : 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 + +; 4126 : 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 + +; 4127 : 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 + +; 4128 : 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 + +; 4129 : 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 + +; 4130 : 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: + +; 4131 : 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 + +; 4132 : 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 + +; 4133 : 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 + +; 4134 : } + + 0020e e9 28 ff ff ff jmp $LN8@stbi__zbui +$LN9@stbi__zbui: + +; 4135 : 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 + +; 4136 : 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 + +; 4137 : 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 + +; 4138 : 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 + +; 4139 : 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 + +; 4140 : 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 + +; 4141 : 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 + +; 4142 : 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 + +; 4143 : 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 + +; 4144 : 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: + +; 4145 : 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 + +; 4146 : 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 + +; 4147 : 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 + +; 4148 : } + + 00370 eb ad jmp SHORT $LN14@stbi__zbui +$LN15@stbi__zbui: +$LN20@stbi__zbui: + +; 4149 : } +; 4150 : ++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: + +; 4151 : } +; 4152 : } + + 0038a e9 a8 fe ff ff jmp $LN11@stbi__zbui +$LN12@stbi__zbui: + +; 4153 : return 1; + + 0038f b8 01 00 00 00 mov eax, 1 +$LN1@stbi__zbui: + +; 4154 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__bit_reverse +_TEXT SEGMENT +v$ = 224 +bits$ = 232 +stbi__bit_reverse PROC ; COMDAT + +; 4101 : { + + 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:__079B8C84_stb_image@c + 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00022 90 npad 1 + +; 4102 : 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 06 10 00 + 00 mov r8d, 4102 ; 00001006H + 00032 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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_: + +; 4103 : // to bit reverse n bits, reverse 16 and shift +; 4104 : // e.g. 11 bits, bit reverse and shift away 5 +; 4105 : 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 + +; 4106 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__bitreverse16 +_TEXT SEGMENT +n$ = 224 +stbi__bitreverse16 PROC ; COMDAT + +; 4092 : { + + 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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 4093 : 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 + +; 4094 : 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 + +; 4095 : 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 + +; 4096 : 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 + +; 4097 : return n; + + 000b1 8b 85 e0 00 00 + 00 mov eax, DWORD PTR n$[rbp] + +; 4098 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_info_raw +_TEXT SEGMENT +tv80 = 192 +j$ = 240 +x$ = 248 +y$ = 256 +comp$ = 264 +stbi__jpeg_info_raw PROC ; COMDAT + +; 4038 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 4039 : 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 + +; 4040 : 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 + +; 4041 : return 0; + + 00054 33 c0 xor eax, eax + 00056 e9 83 00 00 00 jmp $LN1@stbi__jpeg +$LN2@stbi__jpeg: + +; 4042 : } +; 4043 : 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 + +; 4044 : *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: + +; 4045 : 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 + +; 4046 : *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: + +; 4047 : 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 + +; 4048 : *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: + +; 4049 : return 1; + + 000d9 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__jpeg: + +; 4050 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3813 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 3814 : int n, decode_n, is_rgb; +; 3815 : 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 + +; 3816 : +; 3817 : // validate req_comp +; 3818 : 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_: + +; 3819 : 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_: + +; 3820 : +; 3821 : // load a jpeg image from whichever source, but leave in YCbCr format +; 3822 : 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_ + +; 3823 : 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 + +; 3824 : return NULL; + + 000cd 33 c0 xor eax, eax + 000cf e9 d6 11 00 00 jmp $LN1@load_jpeg_ +$LN43@load_jpeg_: + +; 3825 : } +; 3826 : +; 3827 : // determine actual number of components to generate +; 3828 : 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 + +; 3829 : +; 3830 : 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 + +; 3831 : +; 3832 : 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_ + +; 3833 : 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_: + +; 3834 : else +; 3835 : 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_: + +; 3836 : +; 3837 : // nothing to do if no components requested; check this now to avoid +; 3838 : // accessing uninitialized coutput[0] later +; 3839 : if (decode_n <= 0) { + + 001ba 83 7d 24 00 cmp DWORD PTR decode_n$[rbp], 0 + 001be 7f 14 jg SHORT $LN46@load_jpeg_ + +; 3840 : 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 + +; 3841 : return NULL; + + 001cd 33 c0 xor eax, eax + 001cf e9 d6 10 00 00 jmp $LN1@load_jpeg_ +$LN46@load_jpeg_: + +; 3842 : } +; 3843 : +; 3844 : // resample and color-convert +; 3845 : { +; 3846 : int k; +; 3847 : unsigned int i, j; +; 3848 : stbi_uc *output; +; 3849 : 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 + +; 3850 : +; 3851 : stbi__resample res_comp[4]; +; 3852 : +; 3853 : 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_ + +; 3854 : 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 + +; 3855 : +; 3856 : // allocate line buffer big enough for upsampling off the edges +; 3857 : // with upsample factor of 4 +; 3858 : 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 + +; 3859 : 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_ + +; 3860 : 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 + +; 3861 : 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_: + +; 3862 : } +; 3863 : +; 3864 : 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 + +; 3865 : 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 + +; 3866 : 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 + +; 3867 : 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 + +; 3868 : 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 + +; 3869 : 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 + +; 3870 : +; 3871 : 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_ + +; 3872 : 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_: + +; 3873 : 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_ + +; 3874 : 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_: + +; 3875 : 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_ + +; 3876 : 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_: + +; 3877 : 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_ + +; 3878 : 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_: + +; 3879 : else +; 3880 : 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_: + +; 3881 : } + + 00493 e9 71 fd ff ff jmp $LN2@load_jpeg_ +$LN3@load_jpeg_: + +; 3882 : +; 3883 : // can't error after this so, this is safe +; 3884 : 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 + +; 3885 : 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_ + +; 3886 : 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 + +; 3887 : 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_: + +; 3888 : } +; 3889 : +; 3890 : // now go ahead and resample +; 3891 : 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_ + +; 3892 : 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 + +; 3893 : 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_ + +; 3894 : 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 + +; 3895 : 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 + +; 3896 : 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 + +; 3897 : y_bot ? r->line1 : r->line0, +; 3898 : y_bot ? r->line0 : r->line1, r->w_lores, +; 3899 : r->hs); +; 3900 : 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_ + +; 3901 : 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 + +; 3902 : 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 + +; 3903 : 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_ + +; 3904 : 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_: + +; 3905 : } +; 3906 : } + + 0075c e9 1c fe ff ff jmp $LN8@load_jpeg_ +$LN9@load_jpeg_: + +; 3907 : 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_ + +; 3908 : 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 + +; 3909 : 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_ + +; 3910 : 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_ + +; 3911 : 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_ + +; 3912 : 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 + +; 3913 : 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 + +; 3914 : 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 + +; 3915 : 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 + +; 3916 : 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 + +; 3917 : } + + 00882 e9 26 ff ff ff jmp $LN11@load_jpeg_ +$LN12@load_jpeg_: + +; 3918 : } else { + + 00887 eb 57 jmp SHORT $LN64@load_jpeg_ +$LN63@load_jpeg_: + +; 3919 : 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_: + +; 3920 : coutput[2], z->s->img_x, n); +; 3921 : } + + 008e0 e9 2d 04 00 00 jmp $LN62@load_jpeg_ +$LN61@load_jpeg_: + +; 3922 : } 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_ + +; 3923 : 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_ + +; 3924 : 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_ + +; 3925 : 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 + +; 3926 : 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 + +; 3927 : 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 + +; 3928 : 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 + +; 3929 : 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 + +; 3930 : 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 + +; 3931 : } + + 00a3a e9 da fe ff ff jmp $LN14@load_jpeg_ +$LN15@load_jpeg_: + +; 3932 : } 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_ + +; 3933 : 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 + +; 3934 : coutput[2], z->s->img_x, n); +; 3935 : 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_ + +; 3936 : 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 + +; 3937 : 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 + +; 3938 : 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 + +; 3939 : 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 + +; 3940 : 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 + +; 3941 : } + + 00bd7 e9 df fe ff ff jmp $LN17@load_jpeg_ +$LN18@load_jpeg_: + +; 3942 : } else { // YCbCr + alpha? Ignore the fourth channel for now + + 00bdc eb 57 jmp SHORT $LN70@load_jpeg_ +$LN69@load_jpeg_: + +; 3943 : 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_: + +; 3944 : coutput[2], z->s->img_x, n); +; 3945 : } +; 3946 : } else + + 00c35 e9 d8 00 00 00 jmp $LN66@load_jpeg_ +$LN65@load_jpeg_: + +; 3947 : 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_ + +; 3948 : 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 + +; 3949 : 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 + +; 3950 : 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 + +; 3951 : } + + 00d0d e9 34 ff ff ff jmp $LN20@load_jpeg_ +$LN21@load_jpeg_: +$LN66@load_jpeg_: +$LN62@load_jpeg_: + +; 3952 : } else { + + 00d12 e9 10 05 00 00 jmp $LN60@load_jpeg_ +$LN59@load_jpeg_: + +; 3953 : 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_ + +; 3954 : 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_ + +; 3955 : 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_ + +; 3956 : *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_: + +; 3957 : coutput[1][i], +; 3958 : coutput[2][i]); + + 00de7 e9 db 00 00 00 jmp $LN74@load_jpeg_ +$LN73@load_jpeg_: + +; 3959 : else { +; 3960 : 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_ + +; 3961 : 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 + +; 3962 : coutput[1][i], +; 3963 : coutput[2][i]); +; 3964 : 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 + +; 3965 : } + + 00ec2 e9 31 ff ff ff jmp $LN26@load_jpeg_ +$LN27@load_jpeg_: +$LN74@load_jpeg_: + +; 3966 : } + + 00ec7 e9 5b 03 00 00 jmp $LN72@load_jpeg_ +$LN71@load_jpeg_: + +; 3967 : } 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_ + +; 3968 : 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_ + +; 3969 : 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 + +; 3970 : 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 + +; 3971 : 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 + +; 3972 : 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 + +; 3973 : 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 + +; 3974 : 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 + +; 3975 : 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 + +; 3976 : } + + 0103a e9 c1 fe ff ff jmp $LN29@load_jpeg_ +$LN30@load_jpeg_: + +; 3977 : } 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_ + +; 3978 : 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_ + +; 3979 : 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 + +; 3980 : coutput[3][i]); +; 3981 : 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 + +; 3982 : 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 + +; 3983 : } + + 01135 e9 3e ff ff ff jmp $LN32@load_jpeg_ +$LN33@load_jpeg_: + +; 3984 : } else { + + 0113a e9 e8 00 00 00 jmp $LN78@load_jpeg_ +$LN77@load_jpeg_: + +; 3985 : 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 + +; 3986 : if (n == 1) + + 01157 83 7d 04 01 cmp DWORD PTR n$[rbp], 1 + 0115b 75 54 jne SHORT $LN79@load_jpeg_ + +; 3987 : 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_ + +; 3988 : 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_: + +; 3989 : else +; 3990 : 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_ + +; 3991 : *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 + +; 3992 : *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 + +; 3993 : } + + 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_: + +; 3994 : } +; 3995 : } +; 3996 : } + + 01227 e9 f2 f2 ff ff jmp $LN5@load_jpeg_ +$LN6@load_jpeg_: + +; 3997 : 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 + +; 3998 : *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 + +; 3999 : *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 + +; 4000 : 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_ + +; 4001 : *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_: + +; 4002 : return output; + + 012a3 48 8b 85 c8 00 + 00 00 mov rax, QWORD PTR output$8[rbp] +$LN1@load_jpeg_: + +; 4003 : } +; 4004 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__blinn_8x8 +_TEXT SEGMENT +t$ = 4 +x$ = 256 +y$ = 264 +stbi__blinn_8x8 PROC ; COMDAT + +; 3807 : { + + 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:__079B8C84_stb_image@c + 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00022 90 npad 1 + +; 3808 : 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 + +; 3809 : 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 + +; 3810 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__cleanup_jpeg +_TEXT SEGMENT +j$ = 224 +stbi__cleanup_jpeg PROC ; COMDAT + +; 3792 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 3793 : 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 + +; 3794 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__setup_jpeg +_TEXT SEGMENT +j$ = 224 +stbi__setup_jpeg PROC ; COMDAT + +; 3770 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 3771 : 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 + +; 3772 : 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 + +; 3773 : 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 + +; 3774 : +; 3775 : #ifdef STBI_SSE2 +; 3776 : 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 + +; 3777 : 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 + +; 3778 : 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 + +; 3779 : 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: + +; 3780 : } +; 3781 : #endif +; 3782 : +; 3783 : #ifdef STBI_NEON +; 3784 : j->idct_block_kernel = stbi__idct_simd; +; 3785 : j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; +; 3786 : j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +; 3787 : #endif +; 3788 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3619 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3620 : int i = 0; + + 0002f c7 45 04 00 00 + 00 00 mov DWORD PTR i$[rbp], 0 + +; 3621 : +; 3622 : #ifdef STBI_SSE2 +; 3623 : // step == 3 is pretty ugly on the final interleave, and i'm not convinced +; 3624 : // it's useful in practice (you wouldn't use it for textures, for example). +; 3625 : // so just accelerate step == 4 case. +; 3626 : 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 + +; 3627 : // this is a fairly straightforward implementation and not super-optimized. +; 3628 : __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 + +; 3629 : __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 + +; 3630 : __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 + +; 3631 : __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 + +; 3632 : __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 + +; 3633 : __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 + +; 3634 : __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 + +; 3635 : +; 3636 : 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 + +; 3637 : // load +; 3638 : __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 + +; 3639 : __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 + +; 3640 : __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 + +; 3641 : __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 + +; 3642 : __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 + +; 3643 : +; 3644 : // unpack to short (and left-shift cr, cb by 8) +; 3645 : __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 + +; 3646 : __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 + +; 3647 : __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 + +; 3648 : +; 3649 : // color transform +; 3650 : __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 + +; 3651 : __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 + +; 3652 : __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 + +; 3653 : __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 + +; 3654 : __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 + +; 3655 : __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 + +; 3656 : __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 + +; 3657 : __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 + +; 3658 : __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 + +; 3659 : +; 3660 : // descale +; 3661 : __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 + +; 3662 : __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 + +; 3663 : __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 + +; 3664 : +; 3665 : // back to byte, set up for transpose +; 3666 : __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 + +; 3667 : __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 + +; 3668 : +; 3669 : // transpose to interleave channels +; 3670 : __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 + +; 3671 : __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 + +; 3672 : __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 + +; 3673 : __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 + +; 3674 : +; 3675 : // store +; 3676 : _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 + +; 3677 : _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 + +; 3678 : 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 + +; 3679 : } + + 00366 e9 44 fd ff ff jmp $LN2@stbi__YCbC +$LN3@stbi__YCbC: +$LN8@stbi__YCbC: + +; 3680 : } +; 3681 : #endif +; 3682 : +; 3683 : #ifdef STBI_NEON +; 3684 : // in this version, step=3 support would be easy to add. but is there demand? +; 3685 : if (step == 4) { +; 3686 : // this is a fairly straightforward implementation and not super-optimized. +; 3687 : uint8x8_t signflip = vdup_n_u8(0x80); +; 3688 : int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); +; 3689 : int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); +; 3690 : int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); +; 3691 : int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); +; 3692 : +; 3693 : for (; i + 7 < count; i += 8) { +; 3694 : // load +; 3695 : uint8x8_t y_bytes = vld1_u8(y + i); +; 3696 : uint8x8_t cr_bytes = vld1_u8(pcr + i); +; 3697 : uint8x8_t cb_bytes = vld1_u8(pcb + i); +; 3698 : int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); +; 3699 : int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); +; 3700 : +; 3701 : // expand to s16 +; 3702 : int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); +; 3703 : int16x8_t crw = vshll_n_s8(cr_biased, 7); +; 3704 : int16x8_t cbw = vshll_n_s8(cb_biased, 7); +; 3705 : +; 3706 : // color transform +; 3707 : int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); +; 3708 : int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); +; 3709 : int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); +; 3710 : int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); +; 3711 : int16x8_t rws = vaddq_s16(yws, cr0); +; 3712 : int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); +; 3713 : int16x8_t bws = vaddq_s16(yws, cb1); +; 3714 : +; 3715 : // undo scaling, round, convert to byte +; 3716 : uint8x8x4_t o; +; 3717 : o.val[0] = vqrshrun_n_s16(rws, 4); +; 3718 : o.val[1] = vqrshrun_n_s16(gws, 4); +; 3719 : o.val[2] = vqrshrun_n_s16(bws, 4); +; 3720 : o.val[3] = vdup_n_u8(255); +; 3721 : +; 3722 : // store, interleaving r/g/b/a +; 3723 : vst4_u8(out, o); +; 3724 : out += 8 * 4; +; 3725 : } +; 3726 : } +; 3727 : #endif +; 3728 : +; 3729 : 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 + +; 3730 : 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 + +; 3731 : int r, g, b; +; 3732 : 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 + +; 3733 : 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 + +; 3734 : 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 + +; 3735 : 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 + +; 3736 : ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3737 : 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 + +; 3738 : 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 + +; 3739 : 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 + +; 3740 : 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 + +; 3741 : 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 + +; 3742 : 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 + +; 3743 : 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: + +; 3744 : else +; 3745 : 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: + +; 3746 : } +; 3747 : 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 + +; 3748 : 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 + +; 3749 : 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: + +; 3750 : else +; 3751 : 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: + +; 3752 : } +; 3753 : 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 + +; 3754 : 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 + +; 3755 : 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: + +; 3756 : else +; 3757 : 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: + +; 3758 : } +; 3759 : 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 + +; 3760 : 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 + +; 3761 : 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 + +; 3762 : 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 + +; 3763 : 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 + +; 3764 : } + + 00560 e9 08 fe ff ff jmp $LN5@stbi__YCbC +$LN6@stbi__YCbC: + +; 3765 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3576 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3577 : int i; +; 3578 : 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 + +; 3579 : 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 + +; 3580 : int r, g, b; +; 3581 : 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 + +; 3582 : 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 + +; 3583 : 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 + +; 3584 : 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 + +; 3585 : ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); +; 3586 : 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 + +; 3587 : 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 + +; 3588 : 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 + +; 3589 : 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 + +; 3590 : 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 + +; 3591 : if (r < 0) + + 00118 83 7d 44 00 cmp DWORD PTR r$2[rbp], 0 + 0011c 7d 09 jge SHORT $LN6@stbi__YCbC + +; 3592 : 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: + +; 3593 : else +; 3594 : r = 255; + + 00127 c7 45 44 ff 00 + 00 00 mov DWORD PTR r$2[rbp], 255 ; 000000ffH +$LN7@stbi__YCbC: +$LN5@stbi__YCbC: + +; 3595 : } +; 3596 : 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 + +; 3597 : if (g < 0) + + 00137 83 7d 64 00 cmp DWORD PTR g$3[rbp], 0 + 0013b 7d 09 jge SHORT $LN9@stbi__YCbC + +; 3598 : 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: + +; 3599 : else +; 3600 : g = 255; + + 00146 c7 45 64 ff 00 + 00 00 mov DWORD PTR g$3[rbp], 255 ; 000000ffH +$LN10@stbi__YCbC: +$LN8@stbi__YCbC: + +; 3601 : } +; 3602 : 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 + +; 3603 : 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 + +; 3604 : 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: + +; 3605 : else +; 3606 : 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: + +; 3607 : } +; 3608 : 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 + +; 3609 : 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 + +; 3610 : 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 + +; 3611 : 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 + +; 3612 : 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 + +; 3613 : } + + 001ef e9 44 fe ff ff jmp $LN2@stbi__YCbC +$LN3@stbi__YCbC: + +; 3614 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3561 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3562 : // resample with nearest-neighbor +; 3563 : int i, j; +; 3564 : STBI_NOTUSED(in_far); +; 3565 : 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 + +; 3566 : 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 + +; 3567 : 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: + +; 3568 : return out; + + 00095 48 8b 85 20 01 + 00 00 mov rax, QWORD PTR out$[rbp] + +; 3569 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3444 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3445 : // need to generate 2x2 samples for every one in input +; 3446 : int i = 0, t0, t1; + + 0002f c7 45 04 00 00 + 00 00 mov DWORD PTR i$[rbp], 0 + +; 3447 : +; 3448 : 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 + +; 3449 : 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 + +; 3450 : 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: + +; 3451 : } +; 3452 : +; 3453 : 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 + +; 3454 : // process groups of 8 pixels for as long as we can. +; 3455 : // note we can't handle the last pixel in a row in this loop +; 3456 : // because we need to handle the filter boundary conditions. +; 3457 : 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 + +; 3458 : #if defined(STBI_SSE2) +; 3459 : // load and perform the vertical filtering pass +; 3460 : // this uses 3*x + y = 4*x + (y - x) +; 3461 : __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 + +; 3462 : __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 + +; 3463 : __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 + +; 3464 : __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 + +; 3465 : __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 + +; 3466 : __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 + +; 3467 : __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 + +; 3468 : __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 + +; 3469 : +; 3470 : // horizontal filter works the same based on shifted vers of current +; 3471 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3472 : // insert the previous pixel value (from t1). +; 3473 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3474 : // of next block of 8 pixels added in. +; 3475 : __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 + +; 3476 : __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 + +; 3477 : __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 + +; 3478 : __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 + +; 3479 : +; 3480 : // horizontal filter, polyphase implementation since it's convenient: +; 3481 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3482 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3483 : // note the shared term. +; 3484 : __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 + +; 3485 : __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 + +; 3486 : __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 + +; 3487 : __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 + +; 3488 : __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 + +; 3489 : __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 + +; 3490 : __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 + +; 3491 : +; 3492 : // interleave even and odd pixels, then undo scaling. +; 3493 : __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 + +; 3494 : __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 + +; 3495 : __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 + +; 3496 : __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 + +; 3497 : +; 3498 : // pack and write output +; 3499 : __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 + +; 3500 : _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 + +; 3501 : #elif defined(STBI_NEON) +; 3502 : // load and perform the vertical filtering pass +; 3503 : // this uses 3*x + y = 4*x + (y - x) +; 3504 : uint8x8_t farb = vld1_u8(in_far + i); +; 3505 : uint8x8_t nearb = vld1_u8(in_near + i); +; 3506 : int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); +; 3507 : int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); +; 3508 : int16x8_t curr = vaddq_s16(nears, diff); // current row +; 3509 : +; 3510 : // horizontal filter works the same based on shifted vers of current +; 3511 : // row. "prev" is current row shifted right by 1 pixel; we need to +; 3512 : // insert the previous pixel value (from t1). +; 3513 : // "next" is current row shifted left by 1 pixel, with first pixel +; 3514 : // of next block of 8 pixels added in. +; 3515 : int16x8_t prv0 = vextq_s16(curr, curr, 7); +; 3516 : int16x8_t nxt0 = vextq_s16(curr, curr, 1); +; 3517 : int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); +; 3518 : int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); +; 3519 : +; 3520 : // horizontal filter, polyphase implementation since it's convenient: +; 3521 : // even pixels = 3*cur + prev = cur*4 + (prev - cur) +; 3522 : // odd pixels = 3*cur + next = cur*4 + (next - cur) +; 3523 : // note the shared term. +; 3524 : int16x8_t curs = vshlq_n_s16(curr, 2); +; 3525 : int16x8_t prvd = vsubq_s16(prev, curr); +; 3526 : int16x8_t nxtd = vsubq_s16(next, curr); +; 3527 : int16x8_t even = vaddq_s16(curs, prvd); +; 3528 : int16x8_t odd = vaddq_s16(curs, nxtd); +; 3529 : +; 3530 : // undo scaling and round, then store with even/odd phases interleaved +; 3531 : uint8x8x2_t o; +; 3532 : o.val[0] = vqrshrun_n_s16(even, 4); +; 3533 : o.val[1] = vqrshrun_n_s16(odd, 4); +; 3534 : vst2_u8(out + i * 2, o); +; 3535 : #endif +; 3536 : +; 3537 : // "previous" value for next iter +; 3538 : 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 + +; 3539 : } + + 00397 e9 4d fd ff ff jmp $LN2@stbi__resa +$LN3@stbi__resa: + +; 3540 : +; 3541 : t0 = t1; + + 0039c 8b 45 44 mov eax, DWORD PTR t1$[rbp] + 0039f 89 45 24 mov DWORD PTR t0$[rbp], eax + +; 3542 : 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 + +; 3543 : 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 + +; 3544 : +; 3545 : 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 + +; 3546 : t0 = t1; + + 00405 8b 45 44 mov eax, DWORD PTR t1$[rbp] + 00408 89 45 24 mov DWORD PTR t0$[rbp], eax + +; 3547 : 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 + +; 3548 : 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 + +; 3549 : 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 + +; 3550 : } + + 00473 e9 7a ff ff ff jmp $LN5@stbi__resa +$LN6@stbi__resa: + +; 3551 : 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 + +; 3552 : +; 3553 : STBI_NOTUSED(hs); +; 3554 : +; 3555 : return out; + + 00498 48 8b 85 40 07 + 00 00 mov rax, QWORD PTR out$[rbp] +$LN1@stbi__resa: + +; 3556 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3418 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3419 : // need to generate 2x2 samples for every one in input +; 3420 : int i, t0, t1; +; 3421 : 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 + +; 3422 : 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 + +; 3423 : 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: + +; 3424 : } +; 3425 : +; 3426 : 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 + +; 3427 : 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 + +; 3428 : 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 + +; 3429 : t0 = t1; + + 00118 8b 45 44 mov eax, DWORD PTR t1$[rbp] + 0011b 89 45 24 mov DWORD PTR t0$[rbp], eax + +; 3430 : 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 + +; 3431 : 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 + +; 3432 : 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 + +; 3433 : } + + 00186 e9 7a ff ff ff jmp $LN2@stbi__resa +$LN3@stbi__resa: + +; 3434 : 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 + +; 3435 : +; 3436 : STBI_NOTUSED(hs); +; 3437 : +; 3438 : return out; + + 001ab 48 8b 85 40 01 + 00 00 mov rax, QWORD PTR out$[rbp] +$LN1@stbi__resa: + +; 3439 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3387 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3388 : // need to generate two samples horizontally for every one in input +; 3389 : int i; +; 3390 : 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 + +; 3391 : +; 3392 : 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 + +; 3393 : // if only one sample, can't do any interpolation +; 3394 : 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 + +; 3395 : 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: + +; 3396 : } +; 3397 : +; 3398 : 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 + +; 3399 : 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 + +; 3400 : 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 + +; 3401 : 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 + +; 3402 : 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 + +; 3403 : 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 + +; 3404 : } + + 0018b e9 79 ff ff ff jmp $LN2@stbi__resa +$LN3@stbi__resa: + +; 3405 : 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 + +; 3406 : 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 + +; 3407 : +; 3408 : STBI_NOTUSED(in_far); +; 3409 : STBI_NOTUSED(hs); +; 3410 : +; 3411 : return out; + + 001f9 48 8b 85 40 01 + 00 00 mov rax, QWORD PTR out$[rbp] +$LN1@stbi__resa: + +; 3412 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3376 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3377 : // need to generate two samples vertically for every one in input +; 3378 : int i; +; 3379 : STBI_NOTUSED(hs); +; 3380 : 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 + +; 3381 : 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: + +; 3382 : return out; + + 00083 48 8b 85 00 01 + 00 00 mov rax, QWORD PTR out$[rbp] + +; 3383 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT resample_row_1 +_TEXT SEGMENT +out$ = 224 +in_near$ = 232 +in_far$ = 240 +w$ = 248 +hs$ = 256 +resample_row_1 PROC ; COMDAT + +; 3366 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 3367 : STBI_NOTUSED(out); +; 3368 : STBI_NOTUSED(in_far); +; 3369 : STBI_NOTUSED(w); +; 3370 : STBI_NOTUSED(hs); +; 3371 : return in_near; + + 0002f 48 8b 85 e8 00 + 00 00 mov rax, QWORD PTR in_near$[rbp] + +; 3372 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__decode_jpeg_image +_TEXT SEGMENT +m$ = 4 +Ld$1 = 36 +NL$2 = 68 +j$ = 320 +stbi__decode_jpeg_image PROC ; COMDAT + +; 3317 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 3318 : int m; +; 3319 : 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 + +; 3320 : 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 + +; 3321 : 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 + +; 3322 : } + + 0006d eb ba jmp SHORT $LN2@stbi__deco +$LN3@stbi__deco: + +; 3323 : 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 + +; 3324 : 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 + +; 3325 : return 0; + + 00092 33 c0 xor eax, eax + 00094 e9 8e 01 00 00 jmp $LN1@stbi__deco +$LN7@stbi__deco: + +; 3326 : 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: + +; 3327 : 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 + +; 3328 : 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 + +; 3329 : 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 + +; 3330 : return 0; + + 000d5 33 c0 xor eax, eax + 000d7 e9 4b 01 00 00 jmp $LN1@stbi__deco +$LN10@stbi__deco: + +; 3331 : 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 + +; 3332 : return 0; + + 000ec 33 c0 xor eax, eax + 000ee e9 34 01 00 00 jmp $LN1@stbi__deco +$LN11@stbi__deco: + +; 3333 : 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 + +; 3334 : 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: + +; 3335 : // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 +; 3336 : } +; 3337 : 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 + +; 3338 : 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 + +; 3339 : 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: + +; 3340 : } 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 + +; 3341 : 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 + +; 3342 : 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 + +; 3343 : if (Ld != 4) + + 00189 83 7d 24 04 cmp DWORD PTR Ld$1[rbp], 4 + 0018d 74 11 je SHORT $LN16@stbi__deco + +; 3344 : 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: + +; 3345 : 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 + +; 3346 : 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: + +; 3347 : 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 + +; 3348 : } else { + + 001d2 eb 2c jmp SHORT $LN15@stbi__deco +$LN14@stbi__deco: + +; 3349 : 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 + +; 3350 : return 1; + + 001e7 b8 01 00 00 00 mov eax, 1 + 001ec eb 39 jmp SHORT $LN1@stbi__deco +$LN18@stbi__deco: + +; 3351 : 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: + +; 3352 : } +; 3353 : } + + 00200 e9 a6 fe ff ff jmp $LN5@stbi__deco +$LN6@stbi__deco: + +; 3354 : 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 + +; 3355 : 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: + +; 3356 : return 1; + + 00222 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__deco: + +; 3357 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__skip_jpeg_junk_at_end +_TEXT SEGMENT +x$1 = 4 +j$ = 256 +stbi__skip_jpeg_junk_at_end PROC ; COMDAT + +; 3293 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 +$LN2@stbi__skip: + +; 3294 : // some JPEGs have junk at end, skip over it but if we find what looks +; 3295 : // like a valid marker, resume there +; 3296 : 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 65 jne SHORT $LN3@stbi__skip + +; 3297 : int 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 0f b6 c0 movzx eax, al + 00045 89 45 04 mov DWORD PTR x$1[rbp], eax +$LN4@stbi__skip: + +; 3298 : while (x == 255) { // might be a marker + + 00048 81 7d 04 ff 00 + 00 00 cmp DWORD PTR x$1[rbp], 255 ; 000000ffH + 0004f 75 45 jne SHORT $LN5@stbi__skip + +; 3299 : if (stbi__at_eof(j->s)) + + 00051 48 8b 85 00 01 + 00 00 mov rax, QWORD PTR j$[rbp] + 00058 48 8b 08 mov rcx, QWORD PTR [rax] + 0005b e8 00 00 00 00 call stbi__at_eof + 00060 85 c0 test eax, eax + 00062 74 07 je SHORT $LN6@stbi__skip + +; 3300 : return STBI__MARKER_none; + + 00064 b8 ff 00 00 00 mov eax, 255 ; 000000ffH + 00069 eb 32 jmp SHORT $LN1@stbi__skip +$LN6@stbi__skip: + +; 3301 : x = stbi__get8(j->s); + + 0006b 48 8b 85 00 01 + 00 00 mov rax, QWORD PTR j$[rbp] + 00072 48 8b 08 mov rcx, QWORD PTR [rax] + 00075 e8 00 00 00 00 call stbi__get8 + 0007a 0f b6 c0 movzx eax, al + 0007d 89 45 04 mov DWORD PTR x$1[rbp], eax + +; 3302 : if (x != 0x00 && x != 0xff) { + + 00080 83 7d 04 00 cmp DWORD PTR x$1[rbp], 0 + 00084 74 0e je SHORT $LN7@stbi__skip + 00086 81 7d 04 ff 00 + 00 00 cmp DWORD PTR x$1[rbp], 255 ; 000000ffH + 0008d 74 05 je SHORT $LN7@stbi__skip + +; 3303 : // not a stuffed zero or lead-in to another marker, looks +; 3304 : // like an actual marker, return it +; 3305 : return x; + + 0008f 8b 45 04 mov eax, DWORD PTR x$1[rbp] + 00092 eb 09 jmp SHORT $LN1@stbi__skip +$LN7@stbi__skip: + +; 3306 : } +; 3307 : // stuffed zero has x=0 now which ends the loop, meaning we go +; 3308 : // back to regular scan loop. +; 3309 : // repeated 0xff keeps trying to read the next byte of the marker. +; 3310 : } + + 00094 eb b2 jmp SHORT $LN4@stbi__skip +$LN5@stbi__skip: + +; 3311 : } + + 00096 eb 88 jmp SHORT $LN2@stbi__skip +$LN3@stbi__skip: + +; 3312 : return STBI__MARKER_none; + + 00098 b8 ff 00 00 00 mov eax, 255 ; 000000ffH +$LN1@stbi__skip: + +; 3313 : } + + 0009d 48 8d a5 e8 00 + 00 00 lea rsp, QWORD PTR [rbp+232] + 000a4 5f pop rdi + 000a5 5d pop rbp + 000a6 c3 ret 0 +stbi__skip_jpeg_junk_at_end ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__decode_jpeg_header +_TEXT SEGMENT +m$ = 4 +tv131 = 212 +z$ = 256 +scan$ = 264 +stbi__decode_jpeg_header PROC ; COMDAT + +; 3264 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 3265 : int m; +; 3266 : 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 + +; 3267 : 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 + +; 3268 : 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 + +; 3269 : 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 + +; 3270 : 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 + +; 3271 : 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: + +; 3272 : 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 + +; 3273 : return 1; + + 00089 b8 01 00 00 00 mov eax, 1 + 0008e e9 f1 00 00 00 jmp $LN1@stbi__deco +$LN7@stbi__deco: + +; 3274 : 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: + +; 3275 : 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 + +; 3276 : 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 + +; 3277 : return 0; + + 000d7 33 c0 xor eax, eax + 000d9 e9 a6 00 00 00 jmp $LN1@stbi__deco +$LN8@stbi__deco: + +; 3278 : 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: + +; 3279 : 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 + +; 3280 : // some files have extra padding after their blocks, so ok, we'll scan +; 3281 : 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 + +; 3282 : 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: + +; 3283 : 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 + +; 3284 : } + + 0012c eb c2 jmp SHORT $LN4@stbi__deco +$LN5@stbi__deco: + +; 3285 : } + + 0012e e9 72 ff ff ff jmp $LN2@stbi__deco +$LN3@stbi__deco: + +; 3286 : 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 + +; 3287 : 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 + +; 3288 : return 0; + + 0017b 33 c0 xor eax, eax + 0017d eb 05 jmp SHORT $LN1@stbi__deco +$LN10@stbi__deco: + +; 3289 : return 1; + + 0017f b8 01 00 00 00 mov eax, 1 +$LN1@stbi__deco: + +; 3290 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3131 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 3132 : 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 + +; 3133 : 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 + +; 3134 : 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 + +; 3135 : if (Lf < 11) + + 00052 83 7d 24 0b cmp DWORD PTR Lf$[rbp], 11 + 00056 7d 11 jge SHORT $LN17@stbi__proc + +; 3136 : 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: + +; 3137 : 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 + +; 3138 : if (p != 8) + + 00078 83 7d 44 08 cmp DWORD PTR p$[rbp], 8 + 0007c 74 11 je SHORT $LN18@stbi__proc + +; 3139 : 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: + +; 3140 : "JPEG format not supported: 8-bit only"); // JPEG baseline +; 3141 : 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 + +; 3142 : 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 + +; 3143 : 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: + +; 3144 : "no header height", +; 3145 : "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG +; 3146 : 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 + +; 3147 : 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 + +; 3148 : 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: + +; 3149 : 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 + +; 3150 : 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: + +; 3151 : 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 + +; 3152 : 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: + +; 3153 : 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 + +; 3154 : 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 + +; 3155 : 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: + +; 3156 : 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 + +; 3157 : 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 + +; 3158 : 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 + +; 3159 : 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 + +; 3160 : } + + 001bb eb b5 jmp SHORT $LN2@stbi__proc +$LN3@stbi__proc: + +; 3161 : +; 3162 : 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 + +; 3163 : 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: + +; 3164 : +; 3165 : 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 + +; 3166 : 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 + +; 3167 : static const unsigned char rgb[3] = { 'R', 'G', 'B' }; +; 3168 : 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 + +; 3169 : 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 + +; 3170 : ++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: + +; 3171 : 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 + +; 3172 : 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 + +; 3173 : 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: + +; 3174 : 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: + +; 3175 : 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 + +; 3176 : 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: + +; 3177 : 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: + +; 3178 : 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 + +; 3179 : 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 + +; 3180 : 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: + +; 3181 : } + + 003a1 e9 52 fe ff ff jmp $LN5@stbi__proc +$LN6@stbi__proc: + +; 3182 : +; 3183 : 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 + +; 3184 : return 1; + + 003af b8 01 00 00 00 mov eax, 1 + 003b4 e9 c1 05 00 00 jmp $LN1@stbi__proc +$LN31@stbi__proc: + +; 3185 : +; 3186 : 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 + +; 3187 : 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: + +; 3188 : +; 3189 : 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 + +; 3190 : 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 + +; 3191 : 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: + +; 3192 : 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 + +; 3193 : 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: + +; 3194 : } + + 0047c e9 73 ff ff ff jmp $LN8@stbi__proc +$LN9@stbi__proc: + +; 3195 : +; 3196 : // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios +; 3197 : // and I've never seen a non-corrupted JPEG file actually use them +; 3198 : 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 + +; 3199 : 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 + +; 3200 : 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: + +; 3201 : 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 + +; 3202 : 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: + +; 3203 : } + + 00528 e9 5d ff ff ff jmp $LN11@stbi__proc +$LN12@stbi__proc: + +; 3204 : +; 3205 : // compute interleaved mcu info +; 3206 : 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 + +; 3207 : 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 + +; 3208 : 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 + +; 3209 : 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 + +; 3210 : // these sizes can't be more than 17 bits +; 3211 : 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 + +; 3212 : 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 + +; 3213 : +; 3214 : 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 + +; 3215 : // number of effective pixels (e.g. for non-interleaved MCU) +; 3216 : 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 + +; 3217 : 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 + +; 3218 : // to simplify generation, we'll allocate enough memory to decode +; 3219 : // the bogus oversized data from using interleaved MCUs and their +; 3220 : // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't +; 3221 : // discard the extra data until colorspace conversion +; 3222 : // +; 3223 : // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) +; 3224 : // so these muls can't overflow with 32-bit ints (which we require) +; 3225 : 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 + +; 3226 : 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 + +; 3227 : 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 + +; 3228 : 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 + +; 3229 : 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 + +; 3230 : 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 + +; 3231 : stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); +; 3232 : 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 + +; 3233 : 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: + +; 3234 : stbi__err("outofmem", "Out of memory")); +; 3235 : // align blocks for idct using mmx/sse +; 3236 : 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 + +; 3237 : 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 + +; 3238 : // w2, h2 are multiples of 8 (see above) +; 3239 : 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 + +; 3240 : 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 + +; 3241 : 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 + +; 3242 : z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); +; 3243 : 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 + +; 3244 : 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: + +; 3245 : z, i + 1, stbi__err("outofmem", "Out of memory")); +; 3246 : 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: + +; 3247 : (short *)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); +; 3248 : } +; 3249 : } + + 00970 e9 7a fc ff ff jmp $LN14@stbi__proc +$LN15@stbi__proc: + +; 3250 : +; 3251 : return 1; + + 00975 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__proc: + +; 3252 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__free_jpeg_components +_TEXT SEGMENT +i$ = 4 +z$ = 256 +ncomp$ = 264 +why$ = 272 +stbi__free_jpeg_components PROC ; COMDAT + +; 3109 : { + + 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:__079B8C84_stb_image@c + 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00028 90 npad 1 + +; 3110 : int i; +; 3111 : 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 + +; 3112 : 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 + +; 3113 : 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 + +; 3114 : 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 + +; 3115 : 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: + +; 3116 : } +; 3117 : 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 + +; 3118 : 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 + +; 3119 : 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 + +; 3120 : 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: + +; 3121 : } +; 3122 : 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 + +; 3123 : 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 + +; 3124 : 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: + +; 3125 : } +; 3126 : } + + 00178 e9 b5 fe ff ff jmp $LN2@stbi__free +$LN3@stbi__free: + +; 3127 : return why; + + 0017d 8b 85 10 01 00 + 00 mov eax, DWORD PTR why$[rbp] + +; 3128 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 3060 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 3061 : int i; +; 3062 : 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 + +; 3063 : 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 + +; 3064 : 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: + +; 3065 : 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: + +; 3066 : 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 + +; 3067 : 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: + +; 3068 : 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 + +; 3069 : 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 + +; 3070 : 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 + +; 3071 : 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 + +; 3072 : 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 + +; 3073 : break; + + 00157 eb 02 jmp SHORT $LN6@stbi__proc +$LN11@stbi__proc: + 00159 eb c7 jmp SHORT $LN5@stbi__proc +$LN6@stbi__proc: + +; 3074 : 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 + +; 3075 : return 0; // no match + + 0016d 33 c0 xor eax, eax + 0016f e9 0c 02 00 00 jmp $LN1@stbi__proc +$LN12@stbi__proc: + +; 3076 : 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 + +; 3077 : 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 + +; 3078 : 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: + +; 3079 : 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 + +; 3080 : 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 + +; 3081 : 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: + +; 3082 : 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 + +; 3083 : } + + 0021b e9 ae fe ff ff jmp $LN2@stbi__proc +$LN3@stbi__proc: + +; 3084 : +; 3085 : { +; 3086 : int aa; +; 3087 : 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 + +; 3088 : 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 + +; 3089 : 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 + +; 3090 : 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 + +; 3091 : 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 + +; 3092 : 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 + +; 3093 : if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || +; 3094 : 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: + +; 3095 : 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: + +; 3096 : } else { + + 0031c eb 5d jmp SHORT $LN16@stbi__proc +$LN15@stbi__proc: + +; 3097 : 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 + +; 3098 : 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: + +; 3099 : 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: + +; 3100 : 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: + +; 3101 : 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: + +; 3102 : } +; 3103 : } +; 3104 : +; 3105 : return 1; + + 0037b b8 01 00 00 00 mov eax, 1 +$LN1@stbi__proc: + +; 3106 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 2945 : { + + 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:__079B8C84_stb_image@c + 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004d 90 npad 1 + +; 2946 : int L; +; 2947 : 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: + +; 2948 : case STBI__MARKER_none: // no marker found +; 2949 : 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: + +; 2950 : +; 2951 : case 0xDD: // DRI - specify restart interval +; 2952 : 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 + +; 2953 : 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: + +; 2954 : 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 + +; 2955 : return 1; + + 000e5 b8 01 00 00 00 mov eax, 1 + 000ea e9 56 06 00 00 jmp $LN1@stbi__proc +$LN26@stbi__proc: + +; 2956 : +; 2957 : case 0xDB: // DQT - define quantization table +; 2958 : 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: + +; 2959 : 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 + +; 2960 : 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 + +; 2961 : 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 + +; 2962 : 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 + +; 2963 : 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 + +; 2964 : 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: + +; 2965 : 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 + +; 2966 : 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: + +; 2967 : +; 2968 : 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 + +; 2969 : 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: + +; 2970 : (stbi__uint16)(sixteen ? stbi__get16be(z->s) : +; 2971 : stbi__get8(z->s)); +; 2972 : 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 + +; 2973 : } + + 00257 e9 a8 fe ff ff jmp $LN4@stbi__proc +$LN5@stbi__proc: + +; 2974 : 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: + +; 2975 : +; 2976 : case 0xC4: // DHT - define huffman table +; 2977 : 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: + +; 2978 : 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 + +; 2979 : stbi_uc *v; +; 2980 : int sizes[16], i, n = 0; + + 002a2 c7 85 64 01 00 + 00 00 00 00 00 mov DWORD PTR n$12[rbp], 0 + +; 2981 : 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 + +; 2982 : 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 + +; 2983 : 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 + +; 2984 : 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: + +; 2985 : 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: + +; 2986 : 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 + +; 2987 : 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 + +; 2988 : 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 + +; 2989 : } + + 00366 eb a9 jmp SHORT $LN11@stbi__proc +$LN12@stbi__proc: + +; 2990 : 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 + +; 2991 : 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: + +; 2992 : "bad DHT header", +; 2993 : "Corrupt JPEG"); // Loop over i < n would write past end of values! +; 2994 : 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 + +; 2995 : 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 + +; 2996 : 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 + +; 2997 : return 0; + + 003c4 33 c0 xor eax, eax + 003c6 e9 7a 03 00 00 jmp $LN1@stbi__proc +$LN35@stbi__proc: + +; 2998 : 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 + +; 2999 : } else { + + 003ef eb 5b jmp SHORT $LN34@stbi__proc +$LN33@stbi__proc: + +; 3000 : 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 + +; 3001 : return 0; + + 00421 33 c0 xor eax, eax + 00423 e9 1d 03 00 00 jmp $LN1@stbi__proc +$LN36@stbi__proc: + +; 3002 : 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: + +; 3003 : } +; 3004 : 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 + +; 3005 : 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: + +; 3006 : 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 + +; 3007 : 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: + +; 3008 : 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 + +; 3009 : } + + 004f2 e9 a1 fd ff ff jmp $LN9@stbi__proc +$LN10@stbi__proc: + +; 3010 : 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: + +; 3011 : } +; 3012 : +; 3013 : // check for comment block or APP blocks +; 3014 : 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: + +; 3015 : 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 + +; 3016 : if (L < 2) { + + 00558 83 7d 04 02 cmp DWORD PTR L$[rbp], 2 + 0055c 7d 30 jge SHORT $LN41@stbi__proc + +; 3017 : 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 + +; 3018 : 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: + +; 3019 : else +; 3020 : 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: + +; 3021 : } +; 3022 : 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 + +; 3023 : +; 3024 : 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 + +; 3025 : static const unsigned char tag[5] = { 'J', 'F', 'I', 'F', '\0' }; +; 3026 : int ok = 1; + + 005b1 c7 85 e4 01 00 + 00 01 00 00 00 mov DWORD PTR ok$16[rbp], 1 + +; 3027 : int i; +; 3028 : 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 + +; 3029 : 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 + +; 3030 : 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: + +; 3031 : 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 + +; 3032 : 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 + +; 3033 : 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: + +; 3034 : } 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 + +; 3035 : static const unsigned char tag[6] = { 'A', 'd', 'o', 'b', 'e', '\0' }; +; 3036 : int ok = 1; + + 00654 c7 85 24 02 00 + 00 01 00 00 00 mov DWORD PTR ok$18[rbp], 1 + +; 3037 : int i; +; 3038 : 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 + +; 3039 : 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 + +; 3040 : 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: + +; 3041 : 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 + +; 3042 : 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 + +; 3043 : 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 + +; 3044 : 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 + +; 3045 : 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 + +; 3046 : 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 + +; 3047 : 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: + +; 3048 : } +; 3049 : } +; 3050 : +; 3051 : 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 + +; 3052 : return 1; + + 00732 b8 01 00 00 00 mov eax, 1 + 00737 eb 0c jmp SHORT $LN1@stbi__proc +$LN38@stbi__proc: + +; 3053 : } +; 3054 : +; 3055 : 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: + +; 3056 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 2922 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 2923 : 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 + +; 2924 : // dequantize and idct the data +; 2925 : int i, j, n; +; 2926 : 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 + +; 2927 : 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 + +; 2928 : 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 + +; 2929 : 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 + +; 2930 : 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 + +; 2931 : 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 + +; 2932 : 64 * (i + j * z->img_comp[n].coeff_w); +; 2933 : 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 + +; 2934 : 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 + +; 2935 : z->img_comp[n].w2 * j * 8 + +; 2936 : i * 8, +; 2937 : z->img_comp[n].w2, data); +; 2938 : } + + 001d6 e9 ea fe ff ff jmp $LN8@stbi__jpeg +$LN9@stbi__jpeg: + +; 2939 : } + + 001db e9 c5 fe ff ff jmp $LN5@stbi__jpeg +$LN6@stbi__jpeg: + +; 2940 : } + + 001e0 e9 58 fe ff ff jmp $LN2@stbi__jpeg +$LN3@stbi__jpeg: +$LN11@stbi__jpeg: + +; 2941 : } +; 2942 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_dequantize +_TEXT SEGMENT +i$ = 4 +data$ = 256 +dequant$ = 264 +stbi__jpeg_dequantize PROC ; COMDAT + +; 2915 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 2916 : int i; +; 2917 : 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 + +; 2918 : 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: + +; 2919 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 2745 : { + + 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:__079B8C84_stb_image@c + 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00049 90 npad 1 + +; 2746 : 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 + +; 2747 : 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 + +; 2748 : 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 + +; 2749 : int i, j; +; 2750 : STBI_SIMD_ALIGN(short, data[64]); +; 2751 : 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 + +; 2752 : // non-interleaved data, we just need to process one block at a time, +; 2753 : // in trivial scanline order +; 2754 : // number of blocks to do just depends on how many actual "pixels" this +; 2755 : // component has, independent of interleaved MCU blocking and such +; 2756 : 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 + +; 2757 : 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 + +; 2758 : 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 + +; 2759 : 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 + +; 2760 : 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 + +; 2761 : 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 + +; 2762 : z, data, z->huff_dc + z->img_comp[n].hd, +; 2763 : z->huff_ac + ha, z->fast_ac[ha], n, +; 2764 : z->dequant[z->img_comp[n].tq])) +; 2765 : return 0; + + 00207 33 c0 xor eax, eax + 00209 e9 6f 0a 00 00 jmp $LN1@stbi__pars +$LN48@stbi__pars: + +; 2766 : 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 + +; 2767 : z->img_comp[n].w2 * j * 8 + +; 2768 : i * 8, +; 2769 : z->img_comp[n].w2, data); +; 2770 : // every data block is an MCU, so countdown the restart interval +; 2771 : 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 + +; 2772 : 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 + +; 2773 : 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: + +; 2774 : // if it's NOT a restart, then just bail, so we get corrupt data +; 2775 : // rather than no data +; 2776 : 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: + +; 2777 : return 1; + + 002fe b8 01 00 00 00 mov eax, 1 + 00303 e9 75 09 00 00 jmp $LN1@stbi__pars +$LN51@stbi__pars: + +; 2778 : 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: + +; 2779 : } +; 2780 : } + + 00315 e9 f5 fd ff ff jmp $LN5@stbi__pars +$LN6@stbi__pars: + +; 2781 : } + + 0031a e9 d0 fd ff ff jmp $LN2@stbi__pars +$LN3@stbi__pars: + +; 2782 : return 1; + + 0031f b8 01 00 00 00 mov eax, 1 + 00324 e9 54 09 00 00 jmp $LN1@stbi__pars + +; 2783 : } else { // interleaved + + 00329 e9 aa 03 00 00 jmp $LN47@stbi__pars +$LN46@stbi__pars: + +; 2784 : int i, j, k, x, y; +; 2785 : STBI_SIMD_ALIGN(short, data[64]); +; 2786 : 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 + +; 2787 : 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 + +; 2788 : // scan an interleaved mcu... process scan_n components in order +; 2789 : 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 + +; 2790 : 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 + +; 2791 : // scan out an mcu's worth of this component; that's just determined +; 2792 : // by the basic H and V specified for the component +; 2793 : 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 + +; 2794 : 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 + +; 2795 : 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 + +; 2796 : (i * z->img_comp[n].h + x) * +; 2797 : 8; +; 2798 : 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 + +; 2799 : (j * z->img_comp[n].v + y) * +; 2800 : 8; +; 2801 : 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 + +; 2802 : 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 + +; 2803 : z, data, +; 2804 : z->huff_dc + +; 2805 : z->img_comp[n] +; 2806 : .hd, +; 2807 : z->huff_ac + ha, +; 2808 : z->fast_ac[ha], n, +; 2809 : z->dequant[z->img_comp[n] +; 2810 : .tq])) +; 2811 : return 0; + + 005a6 33 c0 xor eax, eax + 005a8 e9 d0 06 00 00 jmp $LN1@stbi__pars +$LN53@stbi__pars: + +; 2812 : 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 + +; 2813 : z->img_comp[n].data + +; 2814 : z->img_comp[n].w2 * +; 2815 : y2 + +; 2816 : x2, +; 2817 : z->img_comp[n].w2, data); +; 2818 : } + + 00626 e9 02 fe ff ff jmp $LN20@stbi__pars +$LN21@stbi__pars: + +; 2819 : } + + 0062b e9 be fd ff ff jmp $LN17@stbi__pars +$LN18@stbi__pars: + +; 2820 : } + + 00630 e9 6b fd ff ff jmp $LN14@stbi__pars +$LN15@stbi__pars: + +; 2821 : // after all interleaved components, that's an interleaved MCU, +; 2822 : // so now count down the restart interval +; 2823 : 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 + +; 2824 : 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 + +; 2825 : 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: + +; 2826 : 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: + +; 2827 : return 1; + + 006ad b8 01 00 00 00 mov eax, 1 + 006b2 e9 c6 05 00 00 jmp $LN1@stbi__pars +$LN56@stbi__pars: + +; 2828 : 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: + +; 2829 : } +; 2830 : } + + 006c4 e9 a4 fc ff ff jmp $LN11@stbi__pars +$LN12@stbi__pars: + +; 2831 : } + + 006c9 e9 6c fc ff ff jmp $LN8@stbi__pars +$LN9@stbi__pars: + +; 2832 : return 1; + + 006ce b8 01 00 00 00 mov eax, 1 + 006d3 e9 a5 05 00 00 jmp $LN1@stbi__pars +$LN47@stbi__pars: + +; 2833 : } +; 2834 : } else { + + 006d8 e9 a0 05 00 00 jmp $LN45@stbi__pars +$LN44@stbi__pars: + +; 2835 : 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 + +; 2836 : int i, j; +; 2837 : 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 + +; 2838 : // non-interleaved data, we just need to process one block at a time, +; 2839 : // in trivial scanline order +; 2840 : // number of blocks to do just depends on how many actual "pixels" this +; 2841 : // component has, independent of interleaved MCU blocking and such +; 2842 : 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 + +; 2843 : 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 + +; 2844 : 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 + +; 2845 : 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 + +; 2846 : 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 + +; 2847 : 64 * (i + j * z->img_comp[n].coeff_w); +; 2848 : 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 + +; 2849 : 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 + +; 2850 : z, data, &z->huff_dc[z->img_comp[n].hd], +; 2851 : n)) +; 2852 : return 0; + + 00868 33 c0 xor eax, eax + 0086a e9 0e 04 00 00 jmp $LN1@stbi__pars +$LN62@stbi__pars: + +; 2853 : } else { + + 0086f eb 7d jmp SHORT $LN61@stbi__pars +$LN60@stbi__pars: + +; 2854 : 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 + +; 2855 : 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 + +; 2856 : z, data, &z->huff_ac[ha], +; 2857 : z->fast_ac[ha])) +; 2858 : return 0; + + 008e7 33 c0 xor eax, eax + 008e9 e9 8f 03 00 00 jmp $LN1@stbi__pars +$LN63@stbi__pars: +$LN61@stbi__pars: + +; 2859 : } +; 2860 : // every data block is an MCU, so countdown the restart interval +; 2861 : 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 + +; 2862 : 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 + +; 2863 : 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: + +; 2864 : 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: + +; 2865 : return 1; + + 00966 b8 01 00 00 00 mov eax, 1 + 0096b e9 0d 03 00 00 jmp $LN1@stbi__pars +$LN66@stbi__pars: + +; 2866 : 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: + +; 2867 : } +; 2868 : } + + 0097d e9 0e fe ff ff jmp $LN26@stbi__pars +$LN27@stbi__pars: + +; 2869 : } + + 00982 e9 dd fd ff ff jmp $LN23@stbi__pars +$LN24@stbi__pars: + +; 2870 : return 1; + + 00987 b8 01 00 00 00 mov eax, 1 + 0098c e9 ec 02 00 00 jmp $LN1@stbi__pars + +; 2871 : } else { // interleaved + + 00991 e9 e7 02 00 00 jmp $LN59@stbi__pars +$LN58@stbi__pars: + +; 2872 : int i, j, k, x, y; +; 2873 : 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 + +; 2874 : 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 + +; 2875 : // scan an interleaved mcu... process scan_n components in order +; 2876 : 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 + +; 2877 : 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 + +; 2878 : // scan out an mcu's worth of this component; that's just determined +; 2879 : // by the basic H and V specified for the component +; 2880 : 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 + +; 2881 : 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 + +; 2882 : 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 + +; 2883 : 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 + +; 2884 : 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 + +; 2885 : z->img_comp[n].coeff + +; 2886 : 64 * (x2 + +; 2887 : y2 * z->img_comp[n] +; 2888 : .coeff_w); +; 2889 : 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 + +; 2890 : z, data, +; 2891 : &z->huff_dc[z->img_comp[n] +; 2892 : .hd], +; 2893 : n)) +; 2894 : return 0; + + 00bcc 33 c0 xor eax, eax + 00bce e9 aa 00 00 00 jmp $LN1@stbi__pars +$LN68@stbi__pars: + +; 2895 : } + + 00bd3 e9 bd fe ff ff jmp $LN41@stbi__pars +$LN42@stbi__pars: + +; 2896 : } + + 00bd8 e9 79 fe ff ff jmp $LN38@stbi__pars +$LN39@stbi__pars: + +; 2897 : } + + 00bdd e9 26 fe ff ff jmp $LN35@stbi__pars +$LN36@stbi__pars: + +; 2898 : // after all interleaved components, that's an interleaved MCU, +; 2899 : // so now count down the restart interval +; 2900 : 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 + +; 2901 : 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 + +; 2902 : 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: + +; 2903 : 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: + +; 2904 : return 1; + + 00c5a b8 01 00 00 00 mov eax, 1 + 00c5f eb 1c jmp SHORT $LN1@stbi__pars +$LN71@stbi__pars: + +; 2905 : 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: + +; 2906 : } +; 2907 : } + + 00c6e e9 62 fd ff ff jmp $LN32@stbi__pars +$LN33@stbi__pars: + +; 2908 : } + + 00c73 e9 2a fd ff ff jmp $LN29@stbi__pars +$LN30@stbi__pars: + +; 2909 : return 1; + + 00c78 b8 01 00 00 00 mov eax, 1 +$LN59@stbi__pars: +$LN45@stbi__pars: +$LN1@stbi__pars: + +; 2910 : } +; 2911 : } +; 2912 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_reset +_TEXT SEGMENT +tv88 = 192 +j$ = 240 +stbi__jpeg_reset PROC ; COMDAT + +; 2731 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 2732 : 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 + +; 2733 : 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 + +; 2734 : 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 + +; 2735 : 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 + +; 2736 : j->img_comp[3].dc_pred = 0; +; 2737 : 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 + +; 2738 : 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 + +; 2739 : 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 + +; 2740 : // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, +; 2741 : // since we don't even allow 1<<30 pixels +; 2742 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__get_marker +_TEXT SEGMENT +x$ = 4 +j$ = 256 +stbi__get_marker PROC ; COMDAT + +; 2709 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 2710 : stbi_uc x; +; 2711 : 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_ + +; 2712 : 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 + +; 2713 : 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 + +; 2714 : return x; + + 00054 0f b6 45 04 movzx eax, BYTE PTR x$[rbp] + 00058 eb 44 jmp SHORT $LN1@stbi__get_ +$LN4@stbi__get_: + +; 2715 : } +; 2716 : 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 + +; 2717 : 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_ + +; 2718 : 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_: + +; 2719 : 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_ + +; 2720 : 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_: + +; 2721 : return x; + + 0009a 0f b6 45 04 movzx eax, BYTE PTR x$[rbp] +$LN1@stbi__get_: + +; 2722 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 2267 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 2268 : // This is constructed to match our regular (generic) integer IDCT exactly. +; 2269 : __m128i row0, row1, row2, row3, row4, row5, row6, row7; +; 2270 : __m128i tmp; +; 2271 : +; 2272 : // dot product constant: even elems=x, odd elems=y +; 2273 : #define dct_const(x, y) _mm_setr_epi16((x), (y), (x), (y), (x), (y), (x), (y)) +; 2274 : +; 2275 : // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) +; 2276 : // out(1) = c1[even]*x + c1[odd]*y +; 2277 : #define dct_rot(out0, out1, x, y, c0, c1) \ +; 2278 : __m128i c0##lo = _mm_unpacklo_epi16((x), (y)); \ +; 2279 : __m128i c0##hi = _mm_unpackhi_epi16((x), (y)); \ +; 2280 : __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ +; 2281 : __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ +; 2282 : __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ +; 2283 : __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +; 2284 : +; 2285 : // out = in << 12 (in 16-bit, out 32-bit) +; 2286 : #define dct_widen(out, in) \ +; 2287 : __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ +; 2288 : __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) +; 2289 : +; 2290 : // wide add +; 2291 : #define dct_wadd(out, a, b) \ +; 2292 : __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ +; 2293 : __m128i out##_h = _mm_add_epi32(a##_h, b##_h) +; 2294 : +; 2295 : // wide sub +; 2296 : #define dct_wsub(out, a, b) \ +; 2297 : __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ +; 2298 : __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) +; 2299 : +; 2300 : // butterfly a/b, add bias, then shift by "s" and pack +; 2301 : #define dct_bfly32o(out0, out1, a, b, bias, s) \ +; 2302 : { \ +; 2303 : __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ +; 2304 : __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ +; 2305 : dct_wadd(sum, abiased, b); \ +; 2306 : dct_wsub(dif, abiased, b); \ +; 2307 : out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ +; 2308 : out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ +; 2309 : } +; 2310 : +; 2311 : // 8-bit interleave step (for transposes) +; 2312 : #define dct_interleave8(a, b) \ +; 2313 : tmp = a; \ +; 2314 : a = _mm_unpacklo_epi8(a, b); \ +; 2315 : b = _mm_unpackhi_epi8(tmp, b) +; 2316 : +; 2317 : // 16-bit interleave step (for transposes) +; 2318 : #define dct_interleave16(a, b) \ +; 2319 : tmp = a; \ +; 2320 : a = _mm_unpacklo_epi16(a, b); \ +; 2321 : b = _mm_unpackhi_epi16(tmp, b) +; 2322 : +; 2323 : #define dct_pass(bias, shift) \ +; 2324 : { \ +; 2325 : /* even part */ \ +; 2326 : dct_rot(t2e, t3e, row2, row6, rot0_0, rot0_1); \ +; 2327 : __m128i sum04 = _mm_add_epi16(row0, row4); \ +; 2328 : __m128i dif04 = _mm_sub_epi16(row0, row4); \ +; 2329 : dct_widen(t0e, sum04); \ +; 2330 : dct_widen(t1e, dif04); \ +; 2331 : dct_wadd(x0, t0e, t3e); \ +; 2332 : dct_wsub(x3, t0e, t3e); \ +; 2333 : dct_wadd(x1, t1e, t2e); \ +; 2334 : dct_wsub(x2, t1e, t2e); \ +; 2335 : /* odd part */ \ +; 2336 : dct_rot(y0o, y2o, row7, row3, rot2_0, rot2_1); \ +; 2337 : dct_rot(y1o, y3o, row5, row1, rot3_0, rot3_1); \ +; 2338 : __m128i sum17 = _mm_add_epi16(row1, row7); \ +; 2339 : __m128i sum35 = _mm_add_epi16(row3, row5); \ +; 2340 : dct_rot(y4o, y5o, sum17, sum35, rot1_0, rot1_1); \ +; 2341 : dct_wadd(x4, y0o, y4o); \ +; 2342 : dct_wadd(x5, y1o, y5o); \ +; 2343 : dct_wadd(x6, y2o, y5o); \ +; 2344 : dct_wadd(x7, y3o, y4o); \ +; 2345 : dct_bfly32o(row0, row7, x0, x7, bias, shift); \ +; 2346 : dct_bfly32o(row1, row6, x1, x6, bias, shift); \ +; 2347 : dct_bfly32o(row2, row5, x2, x5, bias, shift); \ +; 2348 : dct_bfly32o(row3, row4, x3, x4, bias, shift); \ +; 2349 : } +; 2350 : +; 2351 : __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 + +; 2352 : dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); +; 2353 : __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 + +; 2354 : dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); +; 2355 : __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 + +; 2356 : stbi__f2f(1.175875602f)); +; 2357 : __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 + +; 2358 : stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); +; 2359 : __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 + +; 2360 : stbi__f2f(-1.961570560f)); +; 2361 : __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 + +; 2362 : stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); +; 2363 : __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 + +; 2364 : stbi__f2f(-0.390180644f)); +; 2365 : __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 + +; 2366 : stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); +; 2367 : +; 2368 : // rounding biases in column/row passes, see stbi__idct_block for explanation. +; 2369 : __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 + +; 2370 : __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 + +; 2371 : +; 2372 : // load +; 2373 : 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 + +; 2374 : 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 + +; 2375 : 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 + +; 2376 : 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 + +; 2377 : 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 + +; 2378 : 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 + +; 2379 : 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 + +; 2380 : 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 + +; 2381 : +; 2382 : // column pass +; 2383 : 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 + +; 2384 : +; 2385 : { +; 2386 : // 16bit 8x8 transpose pass 1 +; 2387 : 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 + +; 2388 : 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 + +; 2389 : 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 + +; 2390 : 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 + +; 2391 : +; 2392 : // transpose pass 2 +; 2393 : 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 + +; 2394 : 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 + +; 2395 : 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 + +; 2396 : 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 + +; 2397 : +; 2398 : // transpose pass 3 +; 2399 : 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 + +; 2400 : 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 + +; 2401 : 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 + +; 2402 : 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 + +; 2403 : } +; 2404 : +; 2405 : // row pass +; 2406 : 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 + +; 2407 : +; 2408 : { +; 2409 : // pack +; 2410 : __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 + +; 2411 : __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 + +; 2412 : __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 + +; 2413 : __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 + +; 2414 : +; 2415 : // 8bit 8x8 transpose pass 1 +; 2416 : 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 + +; 2417 : 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 + +; 2418 : +; 2419 : // transpose pass 2 +; 2420 : 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 + +; 2421 : 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 + +; 2422 : +; 2423 : // transpose pass 3 +; 2424 : 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 + +; 2425 : 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 + +; 2426 : +; 2427 : // store +; 2428 : _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 + +; 2429 : 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 + +; 2430 : _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 + +; 2431 : 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 + +; 2432 : _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 + +; 2433 : 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 + +; 2434 : _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 + +; 2435 : 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 + +; 2436 : _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 + +; 2437 : 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 + +; 2438 : _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 + +; 2439 : 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 + +; 2440 : _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 + +; 2441 : 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 + +; 2442 : _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 + +; 2443 : } +; 2444 : +; 2445 : #undef dct_const +; 2446 : #undef dct_rot +; 2447 : #undef dct_widen +; 2448 : #undef dct_wadd +; 2449 : #undef dct_wsub +; 2450 : #undef dct_bfly32o +; 2451 : #undef dct_interleave8 +; 2452 : #undef dct_interleave16 +; 2453 : #undef dct_pass +; 2454 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 2201 : { + + 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:__079B8C84_stb_image@c + 0004d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00052 90 npad 1 + +; 2202 : 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 + +; 2203 : stbi_uc *o; +; 2204 : 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 + +; 2205 : +; 2206 : // columns +; 2207 : 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 + +; 2208 : // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing +; 2209 : if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 && d[40] == 0 && +; 2210 : 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 + +; 2211 : // no shortcut 0 seconds +; 2212 : // (1|2|3|4|5|6|7)==0 0 seconds +; 2213 : // all separate -0.047 seconds +; 2214 : // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds +; 2215 : 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 + +; 2216 : 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 + +; 2217 : } else { + + 00254 e9 ac 04 00 00 jmp $LN9@stbi__idct +$LN8@stbi__idct: + +; 2218 : 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 + +; 2219 : // constants scaled things up by 1<<12; let's bring them back +; 2220 : // down, but keep 2 extra bits of precision +; 2221 : 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 + +; 2222 : 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 + +; 2223 : 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 + +; 2224 : 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 + +; 2225 : 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 + +; 2226 : 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 + +; 2227 : 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 + +; 2228 : 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 + +; 2229 : 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 + +; 2230 : 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 + +; 2231 : 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 + +; 2232 : 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: + +; 2233 : } +; 2234 : } + + 00705 e9 6b f9 ff ff jmp $LN2@stbi__idct +$LN3@stbi__idct: + +; 2235 : +; 2236 : 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 + +; 2237 : // no fast case since the first 1D IDCT spread components out +; 2238 : 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 + +; 2239 : // constants scaled things up by 1<<12, plus we had 1<<2 from first +; 2240 : // loop, plus horizontal and vertical each scale by sqrt(8) so together +; 2241 : // we've got an extra 1<<3, so 1<<17 total we need to remove. +; 2242 : // so we want to round that, which means adding 0.5 * 1<<17, +; 2243 : // aka 65536. Also, we'll end up with -128 to 127 that we want +; 2244 : // to encode as 0..255 by adding 128, so we'll add that before the shift +; 2245 : 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 + +; 2246 : 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 + +; 2247 : 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 + +; 2248 : 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 + +; 2249 : // tried computing the shifts into temps, or'ing the temps to see +; 2250 : // if any were out of range, but that was slower +; 2251 : 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 + +; 2252 : 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 + +; 2253 : 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 + +; 2254 : 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 + +; 2255 : 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 + +; 2256 : 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 + +; 2257 : 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 + +; 2258 : 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 + +; 2259 : } + + 00c47 e9 e0 fa ff ff jmp $LN5@stbi__idct +$LN6@stbi__idct: + +; 2260 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__clamp +_TEXT SEGMENT +x$ = 224 +stbi__clamp PROC ; COMDAT + +; 2148 : { + + 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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 2149 : // trick to use a single test to catch both cases +; 2150 : 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 + +; 2151 : 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 + +; 2152 : return 0; + + 00034 32 c0 xor al, al + 00036 eb 17 jmp SHORT $LN1@stbi__clam +$LN3@stbi__clam: + +; 2153 : 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 + +; 2154 : return 255; + + 00044 b0 ff mov al, 255 ; 000000ffH + 00046 eb 07 jmp SHORT $LN1@stbi__clam +$LN4@stbi__clam: +$LN2@stbi__clam: + +; 2155 : } +; 2156 : return (stbi_uc)x; + + 00048 0f b6 85 e0 00 + 00 00 movzx eax, BYTE PTR x$[rbp] +$LN1@stbi__clam: + +; 2157 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 2015 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 2016 : int k; +; 2017 : 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 + +; 2018 : 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: + +; 2019 : +; 2020 : 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 + +; 2021 : 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 + +; 2022 : +; 2023 : 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 + +; 2024 : --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 + +; 2025 : return 1; + + 000a0 b8 01 00 00 00 mov eax, 1 + 000a5 e9 1b 06 00 00 jmp $LN1@stbi__jpeg +$LN16@stbi__jpeg: + +; 2026 : } +; 2027 : +; 2028 : 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: + +; 2029 : do { +; 2030 : unsigned int zig; +; 2031 : int c, r, s; +; 2032 : 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 + +; 2033 : 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: + +; 2034 : 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 + +; 2035 : 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 + +; 2036 : 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 + +; 2037 : 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 + +; 2038 : 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 + +; 2039 : 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 + +; 2040 : 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: + +; 2041 : "bad huffman code", +; 2042 : "Combined length longer than code bits available"); +; 2043 : 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 + +; 2044 : 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 + +; 2045 : 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 + +; 2046 : 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 + +; 2047 : } else { + + 001f1 e9 47 01 00 00 jmp $LN19@stbi__jpeg +$LN18@stbi__jpeg: + +; 2048 : 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 + +; 2049 : 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 + +; 2050 : 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: + +; 2051 : 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 + +; 2052 : 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 + +; 2053 : 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 + +; 2054 : 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 + +; 2055 : 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 + +; 2056 : 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 + +; 2057 : 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: + +; 2058 : --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 + +; 2059 : break; + + 002d7 eb 7a jmp SHORT $LN3@stbi__jpeg +$LN24@stbi__jpeg: + +; 2060 : } +; 2061 : 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 + +; 2062 : } else { + + 002e2 eb 59 jmp SHORT $LN23@stbi__jpeg +$LN22@stbi__jpeg: + +; 2063 : 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 + +; 2064 : 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 + +; 2065 : 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: + +; 2066 : (short)(stbi__extend_receive(j, s) * (1 << shift)); +; 2067 : } +; 2068 : } +; 2069 : } 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: + +; 2070 : } else { + + 00353 e9 68 03 00 00 jmp $LN15@stbi__jpeg +$LN14@stbi__jpeg: + +; 2071 : // refinement scan for these AC coefficients +; 2072 : +; 2073 : 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 + +; 2074 : +; 2075 : 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 + +; 2076 : --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 + +; 2077 : 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 + +; 2078 : 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 + +; 2079 : 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 + +; 2080 : 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 + +; 2081 : 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 + +; 2082 : 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 + +; 2083 : *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: + +; 2084 : else +; 2085 : *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: + +; 2086 : } +; 2087 : } + + 00486 e9 39 ff ff ff jmp $LN5@stbi__jpeg +$LN6@stbi__jpeg: + +; 2088 : } else { + + 0048b e9 30 02 00 00 jmp $LN27@stbi__jpeg +$LN26@stbi__jpeg: + +; 2089 : 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: + +; 2090 : do { +; 2091 : int r, s; +; 2092 : 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 + +; 2093 : j, +; 2094 : hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh +; 2095 : 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 + +; 2096 : 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: + +; 2097 : 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 + +; 2098 : 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 + +; 2099 : 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 + +; 2100 : 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 + +; 2101 : 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 + +; 2102 : 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 + +; 2103 : 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: + +; 2104 : 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: + +; 2105 : } else { +; 2106 : // r=15 s=0 should write 16 0s, so we just do +; 2107 : // a run of 15 0s and then write s (which is 0), +; 2108 : // so we don't have to do anything special here +; 2109 : } +; 2110 : } else { + + 0056d eb 48 jmp SHORT $LN35@stbi__jpeg +$LN34@stbi__jpeg: + +; 2111 : 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 + +; 2112 : 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: + +; 2113 : "Corrupt JPEG"); +; 2114 : // sign bit +; 2115 : 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 + +; 2116 : 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: + +; 2117 : else +; 2118 : 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: + +; 2119 : } +; 2120 : +; 2121 : // advance by r +; 2122 : 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 + +; 2123 : 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 + +; 2124 : 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 + +; 2125 : 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 + +; 2126 : 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 + +; 2127 : 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 + +; 2128 : *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: + +; 2129 : else +; 2130 : *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: + +; 2131 : } +; 2132 : } else { + + 00679 eb 2a jmp SHORT $LN43@stbi__jpeg +$LN42@stbi__jpeg: + +; 2133 : 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 + +; 2134 : *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 + +; 2135 : break; + + 00695 eb 13 jmp SHORT $LN12@stbi__jpeg +$LN48@stbi__jpeg: + +; 2136 : } +; 2137 : --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: + +; 2138 : } +; 2139 : } + + 006a5 e9 0d ff ff ff jmp $LN11@stbi__jpeg +$LN12@stbi__jpeg: + +; 2140 : } 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: + +; 2141 : } +; 2142 : } +; 2143 : return 1; + + 006c0 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__jpeg: + +; 2144 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_decode_block_prog_dc +_TEXT SEGMENT +diff$ = 4 +dc$ = 36 +t$ = 68 +tv87 = 276 +tv207 = 276 +tv211 = 276 +j$ = 320 +data$ = 328 +hdc$ = 336 +b$ = 344 +stbi__jpeg_decode_block_prog_dc PROC ; COMDAT + +; 1978 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 1979 : int diff, dc; +; 1980 : int t; +; 1981 : 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 + +; 1982 : 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 f7 01 00 00 jmp $LN1@stbi__jpeg +$LN2@stbi__jpeg: + +; 1983 : +; 1984 : 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 + +; 1985 : 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: + +; 1986 : +; 1987 : 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 6e 01 00 + 00 jne $LN4@stbi__jpeg + +; 1988 : // first scan for DC coefficient, must be first +; 1989 : memset(data, 0, + + 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 + +; 1990 : 64 * sizeof(data[0])); // 0 all the ac values now +; 1991 : 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 + +; 1992 : 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: + +; 1993 : 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 7e 01 00 00 jmp $LN1@stbi__jpeg +$LN6@stbi__jpeg: + +; 1994 : 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 + +; 1995 : +; 1996 : 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 + +; 1997 : 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 18 01 00 00 jmp $LN1@stbi__jpeg +$LN8@stbi__jpeg: + +; 1998 : 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 + +; 1999 : 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 + +; 2000 : 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 tv207[rbp], ecx + 00182 0f b6 c8 movzx ecx, al + 00185 8b 85 14 01 00 + 00 mov eax, DWORD PTR tv207[rbp] + 0018b d3 e0 shl eax, cl + 0018d 0f b7 d0 movzx edx, ax + 00190 0f b7 4d 24 movzx ecx, WORD PTR dc$[rbp] + 00194 e8 00 00 00 00 call stbi__mul2shorts_valid + 00199 85 c0 test eax, eax + 0019b 75 11 jne SHORT $LN9@stbi__jpeg + +; 2001 : return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 0019d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ + 001a4 e8 00 00 00 00 call stbi__err + 001a9 e9 99 00 00 00 jmp $LN1@stbi__jpeg +$LN9@stbi__jpeg: + +; 2002 : data[0] = (short)(dc * (1 << j->succ_low)); + + 001ae 48 8b 85 40 01 + 00 00 mov rax, QWORD PTR j$[rbp] + 001b5 8b 80 40 48 00 + 00 mov eax, DWORD PTR [rax+18496] + 001bb b9 01 00 00 00 mov ecx, 1 + 001c0 89 8d 14 01 00 + 00 mov DWORD PTR tv211[rbp], ecx + 001c6 0f b6 c8 movzx ecx, al + 001c9 8b 85 14 01 00 + 00 mov eax, DWORD PTR tv211[rbp] + 001cf d3 e0 shl eax, cl + 001d1 8b 4d 24 mov ecx, DWORD PTR dc$[rbp] + 001d4 0f af c8 imul ecx, eax + 001d7 8b c1 mov eax, ecx + 001d9 b9 02 00 00 00 mov ecx, 2 + 001de 48 6b c9 00 imul rcx, rcx, 0 + 001e2 48 8b 95 48 01 + 00 00 mov rdx, QWORD PTR data$[rbp] + 001e9 66 89 04 0a mov WORD PTR [rdx+rcx], ax + +; 2003 : } else { + + 001ed eb 53 jmp SHORT $LN5@stbi__jpeg +$LN4@stbi__jpeg: + +; 2004 : // refinement scan for DC coefficient +; 2005 : if (stbi__jpeg_get_bit(j)) + + 001ef 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR j$[rbp] + 001f6 e8 00 00 00 00 call stbi__jpeg_get_bit + 001fb 85 c0 test eax, eax + 001fd 74 43 je SHORT $LN10@stbi__jpeg + +; 2006 : data[0] += (short)(1 << j->succ_low); + + 001ff b8 02 00 00 00 mov eax, 2 + 00204 48 6b c0 00 imul rax, rax, 0 + 00208 48 8b 8d 40 01 + 00 00 mov rcx, QWORD PTR j$[rbp] + 0020f 8b 89 40 48 00 + 00 mov ecx, DWORD PTR [rcx+18496] + 00215 ba 01 00 00 00 mov edx, 1 + 0021a d3 e2 shl edx, cl + 0021c 8b ca mov ecx, edx + 0021e 0f bf c9 movsx ecx, cx + 00221 48 8b 95 48 01 + 00 00 mov rdx, QWORD PTR data$[rbp] + 00228 0f bf 04 02 movsx eax, WORD PTR [rdx+rax] + 0022c 03 c1 add eax, ecx + 0022e b9 02 00 00 00 mov ecx, 2 + 00233 48 6b c9 00 imul rcx, rcx, 0 + 00237 48 8b 95 48 01 + 00 00 mov rdx, QWORD PTR data$[rbp] + 0023e 66 89 04 0a mov WORD PTR [rdx+rcx], ax +$LN10@stbi__jpeg: +$LN5@stbi__jpeg: + +; 2007 : } +; 2008 : return 1; + + 00242 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__jpeg: + +; 2009 : } + + 00247 48 8d a5 28 01 + 00 00 lea rsp, QWORD PTR [rbp+296] + 0024e 5f pop rdi + 0024f 5d pop rbp + 00250 c3 ret 0 +stbi__jpeg_decode_block_prog_dc ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 +tv275 = 472 +j$ = 512 +data$ = 520 +hdc$ = 528 +hac$ = 536 +fac$ = 544 +b$ = 552 +dequant$ = 560 +stbi__jpeg_decode_block PROC ; COMDAT + +; 1914 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 1915 : int diff, dc, k; +; 1916 : int t; +; 1917 : +; 1918 : 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 + +; 1919 : 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: + +; 1920 : 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 + +; 1921 : 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: + +; 1922 : 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 52 03 00 00 jmp $LN1@stbi__jpeg +$LN6@stbi__jpeg: + +; 1923 : +; 1924 : // 0 all the ac values now so we can do it 32-bits at a time +; 1925 : 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 + +; 1926 : +; 1927 : 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 + +; 1928 : 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 + +; 1929 : 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 d7 02 00 00 jmp $LN1@stbi__jpeg +$LN8@stbi__jpeg: + +; 1930 : 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 + +; 1931 : 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 + +; 1932 : 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 14 01 movzx edx, WORD PTR [rcx+rax] + 00149 0f b7 4d 24 movzx ecx, WORD PTR dc$[rbp] + 0014d e8 00 00 00 00 call stbi__mul2shorts_valid + 00152 85 c0 test eax, eax + 00154 75 11 jne SHORT $LN9@stbi__jpeg + +; 1933 : return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + 00156 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ + 0015d e8 00 00 00 00 call stbi__err + 00162 e9 6a 02 00 00 jmp $LN1@stbi__jpeg +$LN9@stbi__jpeg: + +; 1934 : data[0] = (short)(dc * dequant[0]); + + 00167 b8 02 00 00 00 mov eax, 2 + 0016c 48 6b c0 00 imul rax, rax, 0 + 00170 48 8b 8d 30 02 + 00 00 mov rcx, QWORD PTR dequant$[rbp] + 00177 0f b7 04 01 movzx eax, WORD PTR [rcx+rax] + 0017b 8b 4d 24 mov ecx, DWORD PTR dc$[rbp] + 0017e 0f af c8 imul ecx, eax + 00181 8b c1 mov eax, ecx + 00183 b9 02 00 00 00 mov ecx, 2 + 00188 48 6b c9 00 imul rcx, rcx, 0 + 0018c 48 8b 95 08 02 + 00 00 mov rdx, QWORD PTR data$[rbp] + 00193 66 89 04 0a mov WORD PTR [rdx+rcx], ax + +; 1935 : +; 1936 : // decode AC components, see JPEG spec +; 1937 : k = 1; + + 00197 c7 45 44 01 00 + 00 00 mov DWORD PTR k$[rbp], 1 +$LN4@stbi__jpeg: + +; 1938 : do { +; 1939 : unsigned int zig; +; 1940 : int c, r, s; +; 1941 : if (j->code_bits < 16) + + 0019e 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR j$[rbp] + 001a5 83 b8 24 48 00 + 00 10 cmp DWORD PTR [rax+18468], 16 + 001ac 7d 0d jge SHORT $LN10@stbi__jpeg + +; 1942 : stbi__grow_buffer_unsafe(j); + + 001ae 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR j$[rbp] + 001b5 e8 00 00 00 00 call stbi__grow_buffer_unsafe + 001ba 90 npad 1 +$LN10@stbi__jpeg: + +; 1943 : c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + + 001bb 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR j$[rbp] + 001c2 8b 80 20 48 00 + 00 mov eax, DWORD PTR [rax+18464] + 001c8 c1 e8 17 shr eax, 23 + 001cb 25 ff 01 00 00 and eax, 511 ; 000001ffH + 001d0 89 85 a4 00 00 + 00 mov DWORD PTR c$2[rbp], eax + +; 1944 : r = fac[c]; + + 001d6 48 63 85 a4 00 + 00 00 movsxd rax, DWORD PTR c$2[rbp] + 001dd 48 8b 8d 20 02 + 00 00 mov rcx, QWORD PTR fac$[rbp] + 001e4 0f bf 04 41 movsx eax, WORD PTR [rcx+rax*2] + 001e8 89 85 c4 00 00 + 00 mov DWORD PTR r$3[rbp], eax + +; 1945 : if (r) { // fast-AC path + + 001ee 83 bd c4 00 00 + 00 00 cmp DWORD PTR r$3[rbp], 0 + 001f5 0f 84 f0 00 00 + 00 je $LN11@stbi__jpeg + +; 1946 : k += (r >> 4) & 15; // run + + 001fb 8b 85 c4 00 00 + 00 mov eax, DWORD PTR r$3[rbp] + 00201 c1 f8 04 sar eax, 4 + 00204 83 e0 0f and eax, 15 + 00207 8b 4d 44 mov ecx, DWORD PTR k$[rbp] + 0020a 03 c8 add ecx, eax + 0020c 8b c1 mov eax, ecx + 0020e 89 45 44 mov DWORD PTR k$[rbp], eax + +; 1947 : s = r & 15; // combined length + + 00211 8b 85 c4 00 00 + 00 mov eax, DWORD PTR r$3[rbp] + 00217 83 e0 0f and eax, 15 + 0021a 89 85 e4 00 00 + 00 mov DWORD PTR s$4[rbp], eax + +; 1948 : if (s > j->code_bits) + + 00220 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR j$[rbp] + 00227 8b 80 24 48 00 + 00 mov eax, DWORD PTR [rax+18468] + 0022d 39 85 e4 00 00 + 00 cmp DWORD PTR s$4[rbp], eax + 00233 7e 11 jle SHORT $LN13@stbi__jpeg + +; 1949 : return stbi__err("bad huffman code", + + 00235 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 0023c e8 00 00 00 00 call stbi__err + 00241 e9 8b 01 00 00 jmp $LN1@stbi__jpeg +$LN13@stbi__jpeg: + +; 1950 : "Combined length longer than code bits available"); +; 1951 : j->code_buffer <<= s; + + 00246 8b 85 e4 00 00 + 00 mov eax, DWORD PTR s$4[rbp] + 0024c 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR j$[rbp] + 00253 48 89 8d d8 01 + 00 00 mov QWORD PTR tv275[rbp], rcx + 0025a 0f b6 c8 movzx ecx, al + 0025d 48 8b 85 d8 01 + 00 00 mov rax, QWORD PTR tv275[rbp] + 00264 8b 80 20 48 00 + 00 mov eax, DWORD PTR [rax+18464] + 0026a d3 e0 shl eax, cl + 0026c 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR j$[rbp] + 00273 89 81 20 48 00 + 00 mov DWORD PTR [rcx+18464], eax + +; 1952 : j->code_bits -= s; + + 00279 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR j$[rbp] + 00280 8b 8d e4 00 00 + 00 mov ecx, DWORD PTR s$4[rbp] + 00286 8b 80 24 48 00 + 00 mov eax, DWORD PTR [rax+18468] + 0028c 2b c1 sub eax, ecx + 0028e 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR j$[rbp] + 00295 89 81 24 48 00 + 00 mov DWORD PTR [rcx+18468], eax + +; 1953 : // decode into unzigzag'd location +; 1954 : zig = stbi__jpeg_dezigzag[k++]; + + 0029b 48 63 45 44 movsxd rax, DWORD PTR k$[rbp] + 0029f 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag + 002a6 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 002aa 89 85 84 00 00 + 00 mov DWORD PTR zig$1[rbp], eax + 002b0 8b 45 44 mov eax, DWORD PTR k$[rbp] + 002b3 ff c0 inc eax + 002b5 89 45 44 mov DWORD PTR k$[rbp], eax + +; 1955 : data[zig] = (short)((r >> 8) * dequant[zig]); + + 002b8 8b 85 c4 00 00 + 00 mov eax, DWORD PTR r$3[rbp] + 002be c1 f8 08 sar eax, 8 + 002c1 8b 8d 84 00 00 + 00 mov ecx, DWORD PTR zig$1[rbp] + 002c7 48 8b 95 30 02 + 00 00 mov rdx, QWORD PTR dequant$[rbp] + 002ce 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2] + 002d2 0f af c1 imul eax, ecx + 002d5 8b 8d 84 00 00 + 00 mov ecx, DWORD PTR zig$1[rbp] + 002db 48 8b 95 08 02 + 00 00 mov rdx, QWORD PTR data$[rbp] + 002e2 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax + +; 1956 : } else { + + 002e6 e9 d7 00 00 00 jmp $LN12@stbi__jpeg +$LN11@stbi__jpeg: + +; 1957 : int rs = stbi__jpeg_huff_decode(j, hac); + + 002eb 48 8b 95 18 02 + 00 00 mov rdx, QWORD PTR hac$[rbp] + 002f2 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR j$[rbp] + 002f9 e8 00 00 00 00 call stbi__jpeg_huff_decode + 002fe 89 85 04 01 00 + 00 mov DWORD PTR rs$5[rbp], eax + +; 1958 : if (rs < 0) + + 00304 83 bd 04 01 00 + 00 00 cmp DWORD PTR rs$5[rbp], 0 + 0030b 7d 11 jge SHORT $LN14@stbi__jpeg + +; 1959 : return stbi__err("bad huffman code", "Corrupt JPEG"); + + 0030d 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0BB@IIMLINA@bad?5huffman?5code@ + 00314 e8 00 00 00 00 call stbi__err + 00319 e9 b3 00 00 00 jmp $LN1@stbi__jpeg +$LN14@stbi__jpeg: + +; 1960 : s = rs & 15; + + 0031e 8b 85 04 01 00 + 00 mov eax, DWORD PTR rs$5[rbp] + 00324 83 e0 0f and eax, 15 + 00327 89 85 e4 00 00 + 00 mov DWORD PTR s$4[rbp], eax + +; 1961 : r = rs >> 4; + + 0032d 8b 85 04 01 00 + 00 mov eax, DWORD PTR rs$5[rbp] + 00333 c1 f8 04 sar eax, 4 + 00336 89 85 c4 00 00 + 00 mov DWORD PTR r$3[rbp], eax + +; 1962 : if (s == 0) { + + 0033c 83 bd e4 00 00 + 00 00 cmp DWORD PTR s$4[rbp], 0 + 00343 75 19 jne SHORT $LN15@stbi__jpeg + +; 1963 : if (rs != 0xf0) + + 00345 81 bd 04 01 00 + 00 f0 00 00 00 cmp DWORD PTR rs$5[rbp], 240 ; 000000f0H + 0034f 74 02 je SHORT $LN17@stbi__jpeg + +; 1964 : break; // end block + + 00351 eb 79 jmp SHORT $LN3@stbi__jpeg +$LN17@stbi__jpeg: + +; 1965 : k += 16; + + 00353 8b 45 44 mov eax, DWORD PTR k$[rbp] + 00356 83 c0 10 add eax, 16 + 00359 89 45 44 mov DWORD PTR k$[rbp], eax + +; 1966 : } else { + + 0035c eb 64 jmp SHORT $LN16@stbi__jpeg +$LN15@stbi__jpeg: + +; 1967 : k += r; + + 0035e 8b 85 c4 00 00 + 00 mov eax, DWORD PTR r$3[rbp] + 00364 8b 4d 44 mov ecx, DWORD PTR k$[rbp] + 00367 03 c8 add ecx, eax + 00369 8b c1 mov eax, ecx + 0036b 89 45 44 mov DWORD PTR k$[rbp], eax + +; 1968 : // decode into unzigzag'd location +; 1969 : zig = stbi__jpeg_dezigzag[k++]; + + 0036e 48 63 45 44 movsxd rax, DWORD PTR k$[rbp] + 00372 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:stbi__jpeg_dezigzag + 00379 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax] + 0037d 89 85 84 00 00 + 00 mov DWORD PTR zig$1[rbp], eax + 00383 8b 45 44 mov eax, DWORD PTR k$[rbp] + 00386 ff c0 inc eax + 00388 89 45 44 mov DWORD PTR k$[rbp], eax + +; 1970 : data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); + + 0038b 8b 95 e4 00 00 + 00 mov edx, DWORD PTR s$4[rbp] + 00391 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR j$[rbp] + 00398 e8 00 00 00 00 call stbi__extend_receive + 0039d 8b 8d 84 00 00 + 00 mov ecx, DWORD PTR zig$1[rbp] + 003a3 48 8b 95 30 02 + 00 00 mov rdx, QWORD PTR dequant$[rbp] + 003aa 0f b7 0c 4a movzx ecx, WORD PTR [rdx+rcx*2] + 003ae 0f af c1 imul eax, ecx + 003b1 8b 8d 84 00 00 + 00 mov ecx, DWORD PTR zig$1[rbp] + 003b7 48 8b 95 08 02 + 00 00 mov rdx, QWORD PTR data$[rbp] + 003be 66 89 04 4a mov WORD PTR [rdx+rcx*2], ax +$LN16@stbi__jpeg: +$LN12@stbi__jpeg: + +; 1971 : } +; 1972 : } +; 1973 : } while (k < 64); + + 003c2 83 7d 44 40 cmp DWORD PTR k$[rbp], 64 ; 00000040H + 003c6 0f 8c d2 fd ff + ff jl $LN4@stbi__jpeg +$LN3@stbi__jpeg: + +; 1974 : return 1; + + 003cc b8 01 00 00 00 mov eax, 1 +$LN1@stbi__jpeg: + +; 1975 : } + + 003d1 48 8d a5 e8 01 + 00 00 lea rsp, QWORD PTR [rbp+488] + 003d8 5f pop rdi + 003d9 5d pop rbp + 003da c3 ret 0 +stbi__jpeg_decode_block ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_get_bit +_TEXT SEGMENT +k$ = 4 +j$ = 256 +stbi__jpeg_get_bit PROC ; COMDAT + +; 1888 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1889 : unsigned int k; +; 1890 : 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 + +; 1891 : 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: + +; 1892 : 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 + +; 1893 : 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: + +; 1894 : 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 + +; 1895 : 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 + +; 1896 : --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 + +; 1897 : 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: + +; 1898 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_get_bits +_TEXT SEGMENT +k$ = 4 +j$ = 256 +n$ = 264 +stbi__jpeg_get_bits PROC ; COMDAT + +; 1874 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 1875 : unsigned int k; +; 1876 : 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 + +; 1877 : 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: + +; 1878 : 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 + +; 1879 : 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: + +; 1880 : 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 + +; 1881 : 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 + +; 1882 : 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 + +; 1883 : 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 + +; 1884 : return k; + + 000e1 8b 45 04 mov eax, DWORD PTR k$[rbp] +$LN1@stbi__jpeg: + +; 1885 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__extend_receive +_TEXT SEGMENT +k$ = 4 +sgn$ = 36 +j$ = 288 +n$ = 296 +stbi__extend_receive PROC ; COMDAT + +; 1855 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 1856 : unsigned int k; +; 1857 : int sgn; +; 1858 : 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 + +; 1859 : 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: + +; 1860 : 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 + +; 1861 : 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: + +; 1862 : +; 1863 : 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 + +; 1864 : 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) +; 1865 : 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 + +; 1866 : 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 + +; 1867 : 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 + +; 1868 : 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 + +; 1869 : 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: + +; 1870 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1796 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 1797 : unsigned int temp; +; 1798 : int c, k; +; 1799 : +; 1800 : 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 + +; 1801 : 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: + +; 1802 : +; 1803 : // look at the top FAST_BITS and determine what symbol ID it is, +; 1804 : // if the code is <= FAST_BITS +; 1805 : 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 + +; 1806 : 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 + +; 1807 : 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 + +; 1808 : 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 + +; 1809 : 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 + +; 1810 : return -1; + + 000a1 b8 ff ff ff ff mov eax, -1 + 000a6 e9 41 02 00 00 jmp $LN1@stbi__jpeg +$LN7@stbi__jpeg: + +; 1811 : 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 + +; 1812 : 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 + +; 1813 : 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: + +; 1814 : } +; 1815 : +; 1816 : // naive test is to shift the code_buffer down so k bits are +; 1817 : // valid, then test against maxcode. To speed this up, we've +; 1818 : // preshifted maxcode left so that it has (16-k) 0s at the +; 1819 : // end; in other words, regardless of the number of bits, it +; 1820 : // wants to be compared against something shifted to have 16; +; 1821 : // that way we don't need to shift inside the loop. +; 1822 : 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 + +; 1823 : 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: + +; 1824 : 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 + +; 1825 : break; + + 0014d eb 02 jmp SHORT $LN3@stbi__jpeg +$LN8@stbi__jpeg: + 0014f eb dd jmp SHORT $LN2@stbi__jpeg +$LN3@stbi__jpeg: + +; 1826 : if (k == 17) { + + 00151 83 7d 44 11 cmp DWORD PTR k$[rbp], 17 + 00155 75 27 jne SHORT $LN9@stbi__jpeg + +; 1827 : // error! code not found +; 1828 : 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 + +; 1829 : return -1; + + 00174 b8 ff ff ff ff mov eax, -1 + 00179 e9 6e 01 00 00 jmp $LN1@stbi__jpeg +$LN9@stbi__jpeg: + +; 1830 : } +; 1831 : +; 1832 : 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 + +; 1833 : return -1; + + 00190 b8 ff ff ff ff mov eax, -1 + 00195 e9 52 01 00 00 jmp $LN1@stbi__jpeg +$LN10@stbi__jpeg: + +; 1834 : +; 1835 : // convert the huffman code to the symbol id +; 1836 : 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 + +; 1837 : 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: + +; 1838 : return -1; + + 001f4 b8 ff ff ff ff mov eax, -1 + 001f9 e9 ee 00 00 00 jmp $LN1@stbi__jpeg +$LN11@stbi__jpeg: + +; 1839 : 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 30 07 00 + 00 mov r8d, 1840 ; 00000730H + 00274 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 1840 : h->code[c]); +; 1841 : +; 1842 : // convert the id to a symbol +; 1843 : 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 + +; 1844 : 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 + +; 1845 : 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: + +; 1846 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__grow_buffer_unsafe +_TEXT SEGMENT +b$1 = 4 +c$2 = 36 +tv70 = 244 +j$ = 288 +stbi__grow_buffer_unsafe PROC ; COMDAT + +; 1772 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 +$LN4@stbi__grow: + +; 1773 : do { +; 1774 : 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 + +; 1775 : 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 + +; 1776 : 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: + +; 1777 : 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 + +; 1778 : 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: + +; 1779 : if (c != 0) { + + 0009b 83 7d 24 00 cmp DWORD PTR c$2[rbp], 0 + 0009f 74 24 je SHORT $LN8@stbi__grow + +; 1780 : 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 + +; 1781 : 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 + +; 1782 : return; + + 000c3 eb 6b jmp SHORT $LN1@stbi__grow +$LN8@stbi__grow: +$LN7@stbi__grow: + +; 1783 : } +; 1784 : } +; 1785 : 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 + +; 1786 : 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 + +; 1787 : } 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: + +; 1788 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1744 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 1745 : int i; +; 1746 : 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 + +; 1747 : 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 + +; 1748 : 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 + +; 1749 : 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 + +; 1750 : 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 + +; 1751 : 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 + +; 1752 : 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 + +; 1753 : 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 + +; 1754 : +; 1755 : 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 + +; 1756 : // magnitude code followed by receive_extend code +; 1757 : 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 + +; 1758 : (FAST_BITS - magbits); +; 1759 : 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 + +; 1760 : 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 + +; 1761 : 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: + +; 1762 : // if the result is small enough, we can fit it in fast_ac table +; 1763 : 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 + +; 1764 : 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: + +; 1765 : (len + magbits)); +; 1766 : } +; 1767 : } +; 1768 : } + + 001a9 e9 80 fe ff ff jmp $LN2@stbi__buil +$LN3@stbi__buil: + +; 1769 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1695 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 1696 : int i, j, k = 0; + + 00025 c7 45 44 00 00 + 00 00 mov DWORD PTR k$[rbp], 0 + +; 1697 : unsigned int code; +; 1698 : // build size list for each symbol (from JPEG spec) +; 1699 : 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 + +; 1700 : 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 + +; 1701 : 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 + +; 1702 : 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 + +; 1703 : 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: + +; 1704 : } + + 000a0 eb aa jmp SHORT $LN5@stbi__buil +$LN6@stbi__buil: + +; 1705 : } + + 000a2 eb 91 jmp SHORT $LN2@stbi__buil +$LN3@stbi__buil: + +; 1706 : 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 + +; 1707 : +; 1708 : // compute actual symbols (from jpeg spec) +; 1709 : code = 0; + + 000b7 c7 45 64 00 00 + 00 00 mov DWORD PTR code$[rbp], 0 + +; 1710 : k = 0; + + 000be c7 45 44 00 00 + 00 00 mov DWORD PTR k$[rbp], 0 + +; 1711 : 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 + +; 1712 : // compute delta to add to code to compute symbol id +; 1713 : 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 + +; 1714 : 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: + +; 1715 : 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 + +; 1716 : 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: + +; 1717 : 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 + +; 1718 : 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: + +; 1719 : } +; 1720 : // compute largest code + 1 for this size, preshifted as needed later +; 1721 : 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 + +; 1722 : 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 + +; 1723 : } + + 001a5 e9 24 ff ff ff jmp $LN8@stbi__buil +$LN9@stbi__buil: + +; 1724 : 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 + +; 1725 : +; 1726 : // build non-spec acceleration table; 255 is flag for not-accelerated +; 1727 : 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 + +; 1728 : 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 + +; 1729 : 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 + +; 1730 : 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 + +; 1731 : 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 + +; 1732 : 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 + +; 1733 : 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 + +; 1734 : 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 + +; 1735 : } + + 002a4 eb ce jmp SHORT $LN16@stbi__buil +$LN17@stbi__buil: +$LN22@stbi__buil: + +; 1736 : } +; 1737 : } + + 002a6 e9 39 ff ff ff jmp $LN13@stbi__buil +$LN14@stbi__buil: + +; 1738 : return 1; + + 002ab b8 01 00 00 00 mov eax, 1 +$LN1@stbi__buil: + +; 1739 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1416 : { + + 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:__079B8C84_stb_image@c + 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002d 90 npad 1 + +; 1417 : int i, j; +; 1418 : stbi__uint16 *good; +; 1419 : +; 1420 : 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 + +; 1421 : 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: + +; 1422 : 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 8e 05 00 + 00 mov r8d, 1422 ; 0000058eH + 00060 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 1423 : +; 1424 : 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 + +; 1425 : if (good == NULL) { + + 00099 48 83 7d 48 00 cmp QWORD PTR good$[rbp], 0 + 0009e 75 42 jne SHORT $LN44@stbi__conv + +; 1426 : 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 + +; 1427 : 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: + +; 1428 : } +; 1429 : +; 1430 : 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 + +; 1431 : 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 + +; 1432 : 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 + +; 1433 : +; 1434 : #define STBI__COMBO(a, b) ((a) * 8 + (b)) +; 1435 : #define STBI__CASE(a, b) \ +; 1436 : case STBI__COMBO(a, b): \ +; 1437 : for (i = x - 1; i >= 0; --i, src += a, dest += b) +; 1438 : // convert source image with img_n components to one with req_comp components; +; 1439 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1440 : 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: + +; 1441 : 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 + +; 1442 : { +; 1443 : 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 + +; 1444 : 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 + +; 1445 : } + + 00209 eb 93 jmp SHORT $LN7@stbi__conv +$LN8@stbi__conv: + +; 1446 : break; + + 0020b e9 58 08 00 00 jmp $LN5@stbi__conv +$LN46@stbi__conv: + +; 1447 : 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 + +; 1448 : { +; 1449 : 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 + +; 1450 : } + + 002c1 e9 57 ff ff ff jmp $LN10@stbi__conv +$LN11@stbi__conv: + +; 1451 : break; + + 002c6 e9 9d 07 00 00 jmp $LN5@stbi__conv +$LN47@stbi__conv: + +; 1452 : 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 + +; 1453 : { +; 1454 : 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 + +; 1455 : 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 + +; 1456 : } + + 00399 e9 3a ff ff ff jmp $LN13@stbi__conv +$LN14@stbi__conv: + +; 1457 : break; + + 0039e e9 c5 06 00 00 jmp $LN5@stbi__conv +$LN48@stbi__conv: + +; 1458 : 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 + +; 1459 : { +; 1460 : 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 + +; 1461 : } + + 00402 eb ac jmp SHORT $LN16@stbi__conv +$LN17@stbi__conv: + +; 1462 : break; + + 00404 e9 5f 06 00 00 jmp $LN5@stbi__conv +$LN49@stbi__conv: + +; 1463 : 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 + +; 1464 : { +; 1465 : 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 + +; 1466 : } + + 004ba e9 57 ff ff ff jmp $LN19@stbi__conv +$LN20@stbi__conv: + +; 1467 : break; + + 004bf e9 a4 05 00 00 jmp $LN5@stbi__conv +$LN50@stbi__conv: + +; 1468 : 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 + +; 1469 : { +; 1470 : 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 + +; 1471 : 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 + +; 1472 : } + + 0059f e9 2d ff ff ff jmp $LN22@stbi__conv +$LN23@stbi__conv: + +; 1473 : break; + + 005a4 e9 bf 04 00 00 jmp $LN5@stbi__conv +$LN51@stbi__conv: + +; 1474 : 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 + +; 1475 : { +; 1476 : 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 + +; 1477 : 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 + +; 1478 : 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 + +; 1479 : 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 + +; 1480 : } + + 00671 e9 40 ff ff ff jmp $LN25@stbi__conv +$LN26@stbi__conv: + +; 1481 : break; + + 00676 e9 ed 03 00 00 jmp $LN5@stbi__conv +$LN52@stbi__conv: + +; 1482 : 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 + +; 1483 : { +; 1484 : 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 + +; 1485 : } + + 00714 e9 6f ff ff ff jmp $LN28@stbi__conv +$LN29@stbi__conv: + +; 1486 : break; + + 00719 e9 4a 03 00 00 jmp $LN5@stbi__conv +$LN53@stbi__conv: + +; 1487 : 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 + +; 1488 : { +; 1489 : 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 + +; 1490 : 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 + +; 1491 : } + + 007d0 e9 56 ff ff ff jmp $LN31@stbi__conv +$LN32@stbi__conv: + +; 1492 : break; + + 007d5 e9 8e 02 00 00 jmp $LN5@stbi__conv +$LN54@stbi__conv: + +; 1493 : 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 + +; 1494 : { +; 1495 : 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 + +; 1496 : } + + 00873 e9 6f ff ff ff jmp $LN34@stbi__conv +$LN35@stbi__conv: + +; 1497 : break; + + 00878 e9 eb 01 00 00 jmp $LN5@stbi__conv +$LN55@stbi__conv: + +; 1498 : 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 + +; 1499 : { +; 1500 : 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 + +; 1501 : 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 + +; 1502 : } + + 00940 e9 45 ff ff ff jmp $LN37@stbi__conv +$LN38@stbi__conv: + +; 1503 : break; + + 00945 e9 1e 01 00 00 jmp $LN5@stbi__conv +$LN56@stbi__conv: + +; 1504 : 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 + +; 1505 : { +; 1506 : 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 + +; 1507 : 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 + +; 1508 : 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 + +; 1509 : } + + 009f5 e9 5d ff ff ff jmp $LN40@stbi__conv +$LN41@stbi__conv: + +; 1510 : break; + + 009fa eb 6c jmp SHORT $LN5@stbi__conv +$LN57@stbi__conv: + +; 1511 : default: +; 1512 : 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 e8 05 00 + 00 mov r8d, 1512 ; 000005e8H + 00a08 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 1513 : 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 + +; 1514 : 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 + +; 1515 : 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: + +; 1516 : "Unsupported format conversion"); +; 1517 : } +; 1518 : #undef STBI__CASE +; 1519 : } + + 00a68 e9 7e f6 ff ff jmp $LN2@stbi__conv +$LN3@stbi__conv: + +; 1520 : +; 1521 : 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 + +; 1522 : return good; + + 00a7b 48 8b 45 48 mov rax, QWORD PTR good$[rbp] +$LN1@stbi__conv: + +; 1523 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__compute_y_16 +_TEXT SEGMENT +r$ = 224 +g$ = 232 +b$ = 240 +stbi__compute_y_16 PROC ; COMDAT + +; 1406 : { + + 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:__079B8C84_stb_image@c + 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00027 90 npad 1 + +; 1407 : 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 + +; 1408 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1293 : { + + 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:__079B8C84_stb_image@c + 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002d 90 npad 1 + +; 1294 : int i, j; +; 1295 : unsigned char *good; +; 1296 : +; 1297 : 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 + +; 1298 : 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: + +; 1299 : 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 13 05 00 + 00 mov r8d, 1299 ; 00000513H + 00060 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 1300 : +; 1301 : 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 + +; 1302 : if (good == NULL) { + + 00095 48 83 7d 48 00 cmp QWORD PTR good$[rbp], 0 + 0009a 75 42 jne SHORT $LN44@stbi__conv + +; 1303 : 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 + +; 1304 : 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: + +; 1305 : } +; 1306 : +; 1307 : 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 + +; 1308 : 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 + +; 1309 : 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 + +; 1310 : +; 1311 : #define STBI__COMBO(a, b) ((a) * 8 + (b)) +; 1312 : #define STBI__CASE(a, b) \ +; 1313 : case STBI__COMBO(a, b): \ +; 1314 : for (i = x - 1; i >= 0; --i, src += a, dest += b) +; 1315 : // convert source image with img_n components to one with req_comp components; +; 1316 : // avoid switch per pixel, so use switch per scanline and massive macros +; 1317 : 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: + +; 1318 : 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 + +; 1319 : { +; 1320 : 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 + +; 1321 : 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 + +; 1322 : } + + 00202 eb 9a jmp SHORT $LN7@stbi__conv +$LN8@stbi__conv: + +; 1323 : break; + + 00204 e9 2b 08 00 00 jmp $LN5@stbi__conv +$LN46@stbi__conv: + +; 1324 : 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 + +; 1325 : { +; 1326 : 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 + +; 1327 : } + + 002b6 e9 5b ff ff ff jmp $LN10@stbi__conv +$LN11@stbi__conv: + +; 1328 : break; + + 002bb e9 74 07 00 00 jmp $LN5@stbi__conv +$LN47@stbi__conv: + +; 1329 : 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 + +; 1330 : { +; 1331 : 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 + +; 1332 : 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 + +; 1333 : } + + 00385 e9 43 ff ff ff jmp $LN13@stbi__conv +$LN14@stbi__conv: + +; 1334 : break; + + 0038a e9 a5 06 00 00 jmp $LN5@stbi__conv +$LN48@stbi__conv: + +; 1335 : 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 + +; 1336 : { +; 1337 : 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 + +; 1338 : } + + 003ec eb ae jmp SHORT $LN16@stbi__conv +$LN17@stbi__conv: + +; 1339 : break; + + 003ee e9 41 06 00 00 jmp $LN5@stbi__conv +$LN49@stbi__conv: + +; 1340 : 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 + +; 1341 : { +; 1342 : 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 + +; 1343 : } + + 004a1 e9 5a ff ff ff jmp $LN19@stbi__conv +$LN20@stbi__conv: + +; 1344 : break; + + 004a6 e9 89 05 00 00 jmp $LN5@stbi__conv +$LN50@stbi__conv: + +; 1345 : 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 + +; 1346 : { +; 1347 : 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 + +; 1348 : 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 + +; 1349 : } + + 00582 e9 31 ff ff ff jmp $LN22@stbi__conv +$LN23@stbi__conv: + +; 1350 : break; + + 00587 e9 a8 04 00 00 jmp $LN5@stbi__conv +$LN51@stbi__conv: + +; 1351 : 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 + +; 1352 : { +; 1353 : 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 + +; 1354 : 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 + +; 1355 : 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 + +; 1356 : 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 + +; 1357 : } + + 0064c e9 48 ff ff ff jmp $LN25@stbi__conv +$LN26@stbi__conv: + +; 1358 : break; + + 00651 e9 de 03 00 00 jmp $LN5@stbi__conv +$LN52@stbi__conv: + +; 1359 : 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 + +; 1360 : { +; 1361 : 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 + +; 1362 : } + + 006ed e9 71 ff ff ff jmp $LN28@stbi__conv +$LN29@stbi__conv: + +; 1363 : break; + + 006f2 e9 3d 03 00 00 jmp $LN5@stbi__conv +$LN53@stbi__conv: + +; 1364 : 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 + +; 1365 : { +; 1366 : 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 + +; 1367 : 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 + +; 1368 : } + + 007a3 e9 5c ff ff ff jmp $LN31@stbi__conv +$LN32@stbi__conv: + +; 1369 : break; + + 007a8 e9 87 02 00 00 jmp $LN5@stbi__conv +$LN54@stbi__conv: + +; 1370 : 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 + +; 1371 : { +; 1372 : 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 + +; 1373 : } + + 00844 e9 71 ff ff ff jmp $LN34@stbi__conv +$LN35@stbi__conv: + +; 1374 : break; + + 00849 e9 e6 01 00 00 jmp $LN5@stbi__conv +$LN55@stbi__conv: + +; 1375 : 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 + +; 1376 : { +; 1377 : 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 + +; 1378 : 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 + +; 1379 : } + + 0090f e9 47 ff ff ff jmp $LN37@stbi__conv +$LN38@stbi__conv: + +; 1380 : break; + + 00914 e9 1b 01 00 00 jmp $LN5@stbi__conv +$LN56@stbi__conv: + +; 1381 : 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 + +; 1382 : { +; 1383 : 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 + +; 1384 : 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 + +; 1385 : 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 + +; 1386 : } + + 009c1 e9 60 ff ff ff jmp $LN40@stbi__conv +$LN41@stbi__conv: + +; 1387 : break; + + 009c6 eb 6c jmp SHORT $LN5@stbi__conv +$LN57@stbi__conv: + +; 1388 : default: +; 1389 : 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 6d 05 00 + 00 mov r8d, 1389 ; 0000056dH + 009d4 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 1390 : 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 + +; 1391 : 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 + +; 1392 : 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: + +; 1393 : } +; 1394 : #undef STBI__CASE +; 1395 : } + + 00a34 e9 ae f6 ff ff jmp $LN2@stbi__conv +$LN3@stbi__conv: + +; 1396 : +; 1397 : 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 + +; 1398 : return good; + + 00a47 48 8b 45 48 mov rax, QWORD PTR good$[rbp] +$LN1@stbi__conv: + +; 1399 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__compute_y +_TEXT SEGMENT +r$ = 224 +g$ = 232 +b$ = 240 +stbi__compute_y PROC ; COMDAT + +; 1281 : { + + 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:__079B8C84_stb_image@c + 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00027 90 npad 1 + +; 1282 : 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 + +; 1283 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__get32le +_TEXT SEGMENT +z$ = 4 +s$ = 256 +stbi__get32le PROC ; COMDAT + +; 1255 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1256 : 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 + +; 1257 : 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 + +; 1258 : return z; + + 00048 8b 45 04 mov eax, DWORD PTR z$[rbp] + +; 1259 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__get16le +_TEXT SEGMENT +z$ = 4 +s$ = 256 +stbi__get16le PROC ; COMDAT + +; 1247 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1248 : 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 + +; 1249 : 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 + +; 1250 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__get32be +_TEXT SEGMENT +z$ = 4 +tv66 = 212 +s$ = 256 +stbi__get32be PROC ; COMDAT + +; 1237 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1238 : 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 + +; 1239 : 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 + +; 1240 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__get16be +_TEXT SEGMENT +z$ = 4 +tv67 = 212 +s$ = 256 +stbi__get16be PROC ; COMDAT + +; 1227 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1228 : 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 + +; 1229 : 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 + +; 1230 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1199 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 1200 : 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 + +; 1201 : 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 + +; 1202 : 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 + +; 1203 : int res, count; +; 1204 : +; 1205 : 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 + +; 1206 : +; 1207 : 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 + +; 1208 : 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 + +; 1209 : 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 + +; 1210 : 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: + +; 1211 : } +; 1212 : } +; 1213 : +; 1214 : 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 + +; 1215 : 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 + +; 1216 : 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 + +; 1217 : return 1; + + 0018a b8 01 00 00 00 mov eax, 1 + 0018f eb 04 jmp SHORT $LN1@stbi__getn + +; 1218 : } else + + 00191 eb 02 jmp SHORT $LN5@stbi__getn +$LN4@stbi__getn: + +; 1219 : return 0; + + 00193 33 c0 xor eax, eax +$LN5@stbi__getn: +$LN1@stbi__getn: + +; 1220 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__skip +_TEXT SEGMENT +blen$1 = 4 +s$ = 256 +n$ = 264 +stbi__skip PROC ; COMDAT + +; 1176 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 1177 : 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 + +; 1178 : return; // already there! + + 0002d e9 cb 00 00 00 jmp $LN1@stbi__skip +$LN2@stbi__skip: + +; 1179 : 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 + +; 1180 : 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 + +; 1181 : return; + + 00057 e9 a1 00 00 00 jmp $LN1@stbi__skip +$LN3@stbi__skip: + +; 1182 : } +; 1183 : 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 + +; 1184 : 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 + +; 1185 : 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 + +; 1186 : 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 + +; 1187 : (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 + +; 1188 : return; + + 000d8 eb 23 jmp SHORT $LN1@stbi__skip +$LN5@stbi__skip: +$LN4@stbi__skip: + +; 1189 : } +; 1190 : } +; 1191 : 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: + +; 1192 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__at_eof +_TEXT SEGMENT +tv76 = 192 +s$ = 240 +stbi__at_eof PROC ; COMDAT + +; 1156 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1157 : 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 + +; 1158 : 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 + +; 1159 : return 0; + + 00047 33 c0 xor eax, eax + 00049 eb 4e jmp SHORT $LN1@stbi__at_e +$LN3@stbi__at_e: + +; 1160 : // if feof() is true, check if buffer = end +; 1161 : // special case: we've only got the special 0 character at the end +; 1162 : 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 + +; 1163 : 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: + +; 1164 : } +; 1165 : +; 1166 : 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: + +; 1167 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__get8 +_TEXT SEGMENT +tv72 = 192 +tv81 = 192 +s$ = 240 +stbi__get8 PROC ; COMDAT + +; 1142 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1143 : 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 + +; 1144 : 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: + +; 1145 : 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 + +; 1146 : 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 + +; 1147 : 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: + +; 1148 : } +; 1149 : return 0; + + 000d6 32 c0 xor al, al +$LN1@stbi__get8: + +; 1150 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 979 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 980 : unsigned char *data; +; 981 : #ifndef STBI_NO_HDR +; 982 : 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 + +; 983 : stbi__result_info ri; +; 984 : 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 + +; 985 : 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 + +; 986 : 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: + +; 987 : 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: + +; 988 : } +; 989 : #endif +; 990 : 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 + +; 991 : if (data) + + 00109 48 83 7d 08 00 cmp QWORD PTR data$[rbp], 0 + 0010e 74 4b je SHORT $LN4@stbi__load + +; 992 : 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: + +; 993 : 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: + +; 994 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__fopen +_TEXT SEGMENT +f$ = 8 +__$ArrayPad$ = 216 +filename$ = 256 +mode$ = 264 +stbi__fopen PROC ; COMDAT + +; 836 : { + + 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:__079B8C84_stb_image@c + 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004e 90 npad 1 + +; 837 : FILE *f; +; 838 : #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +; 839 : wchar_t wMode[64]; +; 840 : wchar_t wFilename[1024]; +; 841 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, +; 842 : sizeof(wFilename) / sizeof(*wFilename))) +; 843 : return 0; +; 844 : +; 845 : if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, +; 846 : sizeof(wMode) / sizeof(*wMode))) +; 847 : return 0; +; 848 : +; 849 : #if defined(_MSC_VER) && _MSC_VER >= 1400 +; 850 : if (0 != _wfopen_s(&f, wFilename, wMode)) +; 851 : f = 0; +; 852 : #else +; 853 : f = _wfopen(wFilename, wMode); +; 854 : #endif +; 855 : +; 856 : #elif defined(_MSC_VER) && _MSC_VER >= 1400 +; 857 : 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 + +; 858 : f = 0; + + 0006b 48 c7 45 08 00 + 00 00 00 mov QWORD PTR f$[rbp], 0 +$LN2@stbi__fope: + +; 859 : #else +; 860 : f = fopen(filename, mode); +; 861 : #endif +; 862 : return f; + + 00073 48 8b 45 08 mov rax, QWORD PTR f$[rbp] + +; 863 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 807 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 808 : 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 + +; 809 : 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 + +; 810 : 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: + +; 811 : } +; 812 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 778 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 779 : stbi__result_info ri; +; 780 : 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 + +; 781 : +; 782 : if (result == NULL) + + 00099 48 83 7d 38 00 cmp QWORD PTR result$[rbp], 0 + 0009e 75 07 jne SHORT $LN2@stbi__load + +; 783 : return NULL; + + 000a0 33 c0 xor eax, eax + 000a2 e9 36 01 00 00 jmp $LN1@stbi__load +$LN2@stbi__load: + +; 784 : +; 785 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. +; 786 : 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 12 03 00 + 00 mov r8d, 786 ; 00000312H + 000b9 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 787 : +; 788 : 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 + +; 789 : 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 + +; 790 : req_comp == 0 ? *comp : req_comp); +; 791 : ri.bits_per_channel = 16; + + 00122 c7 45 08 10 00 + 00 00 mov DWORD PTR ri$[rbp], 16 +$LN3@stbi__load: + +; 792 : } +; 793 : +; 794 : // @TODO: move stbi__convert_format16 to here +; 795 : // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision +; 796 : +; 797 : 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 + +; 798 : 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 + +; 799 : 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: + +; 800 : } +; 801 : +; 802 : return (stbi__uint16 *)result; + + 001d9 48 8b 45 38 mov rax, QWORD PTR result$[rbp] +$LN1@stbi__load: + +; 803 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 750 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 751 : stbi__result_info ri; +; 752 : 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 + +; 753 : +; 754 : if (result == NULL) + + 00099 48 83 7d 38 00 cmp QWORD PTR result$[rbp], 0 + 0009e 75 07 jne SHORT $LN2@stbi__load + +; 755 : return NULL; + + 000a0 33 c0 xor eax, eax + 000a2 e9 30 01 00 00 jmp $LN1@stbi__load +$LN2@stbi__load: + +; 756 : +; 757 : // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. +; 758 : 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 f6 02 00 + 00 mov r8d, 758 ; 000002f6H + 000b9 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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: + +; 759 : +; 760 : 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 + +; 761 : 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 + +; 762 : req_comp == 0 ? *comp : req_comp); +; 763 : ri.bits_per_channel = 8; + + 00122 c7 45 08 08 00 + 00 00 mov DWORD PTR ri$[rbp], 8 +$LN3@stbi__load: + +; 764 : } +; 765 : +; 766 : // @TODO: move stbi__convert_format to here +; 767 : +; 768 : 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 + +; 769 : 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 + +; 770 : 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: + +; 771 : } +; 772 : +; 773 : return (unsigned char *)result; + + 001d3 48 8b 45 38 mov rax, QWORD PTR result$[rbp] +$LN1@stbi__load: + +; 774 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 736 : { + + 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:__079B8C84_stb_image@c + 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002d 90 npad 1 + +; 737 : int slice; +; 738 : 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 + +; 739 : +; 740 : 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 + +; 741 : 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 + +; 742 : 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 + +; 743 : 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 + +; 744 : } + + 0009c eb bb jmp SHORT $LN2@stbi__vert +$LN3@stbi__vert: + +; 745 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 711 : { + + 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:__079B8C84_stb_image@c + 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00057 90 npad 1 + +; 712 : int row; +; 713 : 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 + +; 714 : stbi_uc temp[2048]; +; 715 : 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 + +; 716 : +; 717 : 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 + +; 718 : 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 + +; 719 : 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 + +; 720 : // swap row0 with row1 +; 721 : 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: + +; 722 : 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 + +; 723 : 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 + +; 724 : 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 + +; 725 : 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 + +; 726 : 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 + +; 727 : 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 + +; 728 : 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 + +; 729 : 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 + +; 730 : } + + 001d0 e9 1b ff ff ff jmp $LN5@stbi__vert +$LN6@stbi__vert: + +; 731 : } + + 001d5 e9 ab fe ff ff jmp $LN2@stbi__vert +$LN3@stbi__vert: + +; 732 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 692 : { + + 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:__079B8C84_stb_image@c + 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002d 90 npad 1 + +; 693 : int i; +; 694 : 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 + +; 695 : stbi__uint16 *enlarged; +; 696 : +; 697 : 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 + +; 698 : if (enlarged == NULL) + + 00058 48 83 7d 48 00 cmp QWORD PTR enlarged$[rbp], 0 + 0005d 75 31 jne SHORT $LN5@stbi__conv + +; 699 : 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: + +; 700 : +; 701 : 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 + +; 702 : 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: + +; 703 : (stbi__uint16)((orig[i] << 8) + +; 704 : orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff +; 705 : +; 706 : 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 + +; 707 : return enlarged; + + 000e8 48 8b 45 48 mov rax, QWORD PTR enlarged$[rbp] +$LN1@stbi__conv: + +; 708 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 673 : { + + 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:__079B8C84_stb_image@c + 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002d 90 npad 1 + +; 674 : int i; +; 675 : 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 + +; 676 : stbi_uc *reduced; +; 677 : +; 678 : 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 + +; 679 : if (reduced == NULL) + + 00055 48 83 7d 48 00 cmp QWORD PTR reduced$[rbp], 0 + 0005a 75 31 jne SHORT $LN5@stbi__conv + +; 680 : 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: + +; 681 : +; 682 : 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 + +; 683 : 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: + +; 684 : (stbi_uc)((orig[i] >> 8) & +; 685 : 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling +; 686 : +; 687 : 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 + +; 688 : return reduced; + + 000d8 48 8b 45 48 mov rax, QWORD PTR reduced$[rbp] +$LN1@stbi__conv: + +; 689 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 611 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 612 : memset(ri, 0, + + 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 + +; 613 : sizeof(*ri)); // make sure it's initialized if we add new fields +; 614 : 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 + +; 615 : 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 + +; 616 : STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order +; 617 : 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 + +; 618 : +; 619 : // test the formats with a very explicit header first (at least a FOURCC +; 620 : // or distinctive magic number first) +; 621 : #ifndef STBI_NO_PNG +; 622 : 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 + +; 623 : 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: + +; 624 : #endif +; 625 : #ifndef STBI_NO_BMP +; 626 : 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 + +; 627 : 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: + +; 628 : #endif +; 629 : #ifndef STBI_NO_GIF +; 630 : 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 + +; 631 : 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: + +; 632 : #endif +; 633 : #ifndef STBI_NO_PSD +; 634 : 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 + +; 635 : 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: + +; 636 : #else +; 637 : STBI_NOTUSED(bpc); +; 638 : #endif +; 639 : #ifndef STBI_NO_PIC +; 640 : 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 + +; 641 : 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: + +; 642 : #endif +; 643 : +; 644 : // then the formats that can end up attempting to load with just 1 or 2 +; 645 : // bytes matching expectations; these are prone to false positives, so +; 646 : // try them later +; 647 : #ifndef STBI_NO_JPEG +; 648 : 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 + +; 649 : 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: + +; 650 : #endif +; 651 : #ifndef STBI_NO_PNM +; 652 : 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 + +; 653 : 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: + +; 654 : #endif +; 655 : +; 656 : #ifndef STBI_NO_HDR +; 657 : 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 + +; 658 : 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 + +; 659 : 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: + +; 660 : } +; 661 : #endif +; 662 : +; 663 : #ifndef STBI_NO_TGA +; 664 : // test tga last because it's a crappy test! +; 665 : 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 + +; 666 : 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: + +; 667 : #endif +; 668 : +; 669 : 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: + +; 670 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1563 : { + + 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:__079B8C84_stb_image@c + 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002d 90 npad 1 + +; 1564 : int i, k, n; +; 1565 : stbi_uc *output; +; 1566 : 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_ + +; 1567 : return NULL; + + 00038 33 c0 xor eax, eax + 0003a e9 3e 02 00 00 jmp $LN1@stbi__hdr_ +$LN8@stbi__hdr_: + +; 1568 : 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 + +; 1569 : if (output == NULL) { + + 0005e 48 83 7d 68 00 cmp QWORD PTR output$[rbp], 0 + 00063 75 42 jne SHORT $LN9@stbi__hdr_ + +; 1570 : 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 + +; 1571 : 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_: + +; 1572 : } +; 1573 : // compute number of non-alpha components +; 1574 : 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_ + +; 1575 : 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_: + +; 1576 : else +; 1577 : 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_: + +; 1578 : 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_ + +; 1579 : 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_ + +; 1580 : 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 + +; 1581 : stbi__h2l_gamma_i) * +; 1582 : 255 + +; 1583 : 0.5f; +; 1584 : 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_ + +; 1585 : 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_: + +; 1586 : 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_ + +; 1587 : 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_: + +; 1588 : 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 + +; 1589 : } + + 001c8 e9 2d ff ff ff jmp $LN5@stbi__hdr_ +$LN6@stbi__hdr_: + +; 1590 : 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_ + +; 1591 : 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 + +; 1592 : 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_ + +; 1593 : 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_: + +; 1594 : 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_ + +; 1595 : 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_: + +; 1596 : 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_: + +; 1597 : } +; 1598 : } + + 00266 e9 68 fe ff ff jmp $LN2@stbi__hdr_ +$LN3@stbi__hdr_: + +; 1599 : 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 + +; 1600 : return output; + + 00279 48 8b 45 68 mov rax, QWORD PTR output$[rbp] +$LN1@stbi__hdr_: + +; 1601 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1528 : { + + 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:__079B8C84_stb_image@c + 00028 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002d 90 npad 1 + +; 1529 : int i, k, n; +; 1530 : float *output; +; 1531 : 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_ + +; 1532 : return NULL; + + 00038 33 c0 xor eax, eax + 0003a e9 d2 01 00 00 jmp $LN1@stbi__ldr_ +$LN11@stbi__ldr_: + +; 1533 : 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 + +; 1534 : if (output == NULL) { + + 00069 48 83 7d 68 00 cmp QWORD PTR output$[rbp], 0 + 0006e 75 42 jne SHORT $LN12@stbi__ldr_ + +; 1535 : 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 + +; 1536 : 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_: + +; 1537 : } +; 1538 : // compute number of non-alpha components +; 1539 : 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_ + +; 1540 : 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_: + +; 1541 : else +; 1542 : 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_: + +; 1543 : 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_ + +; 1544 : 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_ + +; 1545 : 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 + +; 1546 : (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * +; 1547 : stbi__l2h_scale); +; 1548 : } + + 00187 e9 79 ff ff ff jmp $LN5@stbi__ldr_ +$LN6@stbi__ldr_: + +; 1549 : } + + 0018c e9 4d ff ff ff jmp $LN2@stbi__ldr_ +$LN3@stbi__ldr_: + +; 1550 : 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_ + +; 1551 : 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_ + +; 1552 : 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 + +; 1553 : } + + 001fd eb a6 jmp SHORT $LN8@stbi__ldr_ +$LN9@stbi__ldr_: +$LN15@stbi__ldr_: + +; 1554 : } +; 1555 : 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 + +; 1556 : return output; + + 0020d 48 8b 45 68 mov rax, QWORD PTR output$[rbp] +$LN1@stbi__ldr_: + +; 1557 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__mul2shorts_valid +_TEXT SEGMENT +tv73 = 192 +tv75 = 192 +tv82 = 192 +tv87 = 192 +tv72 = 196 +tv79 = 196 +tv86 = 196 +tv91 = 196 +a$ = 240 +b$ = 248 +stbi__mul2shorts_valid PROC ; COMDAT + +; 548 : { + + 00000 66 89 54 24 10 mov WORD PTR [rsp+16], dx + 00005 66 89 4c 24 08 mov WORD PTR [rsp+8], cx + 0000a 55 push rbp + 0000b 57 push rdi + 0000c 48 81 ec f8 00 + 00 00 sub rsp, 248 ; 000000f8H + 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00018 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 549 : if (b == 0 || b == -1) + + 00025 0f bf 85 f8 00 + 00 00 movsx eax, WORD PTR b$[rbp] + 0002c 85 c0 test eax, eax + 0002e 74 0c je SHORT $LN3@stbi__mul2 + 00030 0f bf 85 f8 00 + 00 00 movsx eax, WORD PTR b$[rbp] + 00037 83 f8 ff cmp eax, -1 + 0003a 75 0a jne SHORT $LN2@stbi__mul2 +$LN3@stbi__mul2: + +; 550 : return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + + 0003c b8 01 00 00 00 mov eax, 1 + 00041 e9 28 01 00 00 jmp $LN1@stbi__mul2 +$LN2@stbi__mul2: + +; 551 : if ((a >= 0) == (b >= 0)) + + 00046 0f bf 85 f0 00 + 00 00 movsx eax, WORD PTR a$[rbp] + 0004d 85 c0 test eax, eax + 0004f 7c 0c jl SHORT $LN9@stbi__mul2 + 00051 c7 85 c0 00 00 + 00 01 00 00 00 mov DWORD PTR tv73[rbp], 1 + 0005b eb 0a jmp SHORT $LN10@stbi__mul2 +$LN9@stbi__mul2: + 0005d c7 85 c0 00 00 + 00 00 00 00 00 mov DWORD PTR tv73[rbp], 0 +$LN10@stbi__mul2: + 00067 0f bf 85 f8 00 + 00 00 movsx eax, WORD PTR b$[rbp] + 0006e 85 c0 test eax, eax + 00070 7c 0c jl SHORT $LN7@stbi__mul2 + 00072 c7 85 c4 00 00 + 00 01 00 00 00 mov DWORD PTR tv72[rbp], 1 + 0007c eb 0a jmp SHORT $LN8@stbi__mul2 +$LN7@stbi__mul2: + 0007e c7 85 c4 00 00 + 00 00 00 00 00 mov DWORD PTR tv72[rbp], 0 +$LN8@stbi__mul2: + 00088 8b 85 c4 00 00 + 00 mov eax, DWORD PTR tv72[rbp] + 0008e 39 85 c0 00 00 + 00 cmp DWORD PTR tv73[rbp], eax + 00094 75 47 jne SHORT $LN4@stbi__mul2 + +; 552 : return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid + + 00096 0f bf 85 f0 00 + 00 00 movsx eax, WORD PTR a$[rbp] + 0009d 89 85 c0 00 00 + 00 mov DWORD PTR tv75[rbp], eax + 000a3 0f bf 8d f8 00 + 00 00 movsx ecx, WORD PTR b$[rbp] + 000aa b8 ff 7f 00 00 mov eax, 32767 ; 00007fffH + 000af 99 cdq + 000b0 f7 f9 idiv ecx + 000b2 8b 8d c0 00 00 + 00 mov ecx, DWORD PTR tv75[rbp] + 000b8 3b c8 cmp ecx, eax + 000ba 7f 0c jg SHORT $LN11@stbi__mul2 + 000bc c7 85 c4 00 00 + 00 01 00 00 00 mov DWORD PTR tv79[rbp], 1 + 000c6 eb 0a jmp SHORT $LN12@stbi__mul2 +$LN11@stbi__mul2: + 000c8 c7 85 c4 00 00 + 00 00 00 00 00 mov DWORD PTR tv79[rbp], 0 +$LN12@stbi__mul2: + 000d2 8b 85 c4 00 00 + 00 mov eax, DWORD PTR tv79[rbp] + 000d8 e9 91 00 00 00 jmp $LN1@stbi__mul2 +$LN4@stbi__mul2: + +; 553 : if (b < 0) + + 000dd 0f bf 85 f8 00 + 00 00 movsx eax, WORD PTR b$[rbp] + 000e4 85 c0 test eax, eax + 000e6 7d 44 jge SHORT $LN5@stbi__mul2 + +; 554 : return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + + 000e8 0f bf 85 f0 00 + 00 00 movsx eax, WORD PTR a$[rbp] + 000ef 89 85 c0 00 00 + 00 mov DWORD PTR tv82[rbp], eax + 000f5 0f bf 8d f8 00 + 00 00 movsx ecx, WORD PTR b$[rbp] + 000fc b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H + 00101 99 cdq + 00102 f7 f9 idiv ecx + 00104 8b 8d c0 00 00 + 00 mov ecx, DWORD PTR tv82[rbp] + 0010a 3b c8 cmp ecx, eax + 0010c 7f 0c jg SHORT $LN13@stbi__mul2 + 0010e c7 85 c4 00 00 + 00 01 00 00 00 mov DWORD PTR tv86[rbp], 1 + 00118 eb 0a jmp SHORT $LN14@stbi__mul2 +$LN13@stbi__mul2: + 0011a c7 85 c4 00 00 + 00 00 00 00 00 mov DWORD PTR tv86[rbp], 0 +$LN14@stbi__mul2: + 00124 8b 85 c4 00 00 + 00 mov eax, DWORD PTR tv86[rbp] + 0012a eb 42 jmp SHORT $LN1@stbi__mul2 +$LN5@stbi__mul2: + +; 555 : return a >= SHRT_MIN / b; + + 0012c 0f bf 85 f0 00 + 00 00 movsx eax, WORD PTR a$[rbp] + 00133 89 85 c0 00 00 + 00 mov DWORD PTR tv87[rbp], eax + 00139 0f bf 8d f8 00 + 00 00 movsx ecx, WORD PTR b$[rbp] + 00140 b8 00 80 ff ff mov eax, -32768 ; ffffffffffff8000H + 00145 99 cdq + 00146 f7 f9 idiv ecx + 00148 8b 8d c0 00 00 + 00 mov ecx, DWORD PTR tv87[rbp] + 0014e 3b c8 cmp ecx, eax + 00150 7c 0c jl SHORT $LN15@stbi__mul2 + 00152 c7 85 c4 00 00 + 00 01 00 00 00 mov DWORD PTR tv91[rbp], 1 + 0015c eb 0a jmp SHORT $LN16@stbi__mul2 +$LN15@stbi__mul2: + 0015e c7 85 c4 00 00 + 00 00 00 00 00 mov DWORD PTR tv91[rbp], 0 +$LN16@stbi__mul2: + 00168 8b 85 c4 00 00 + 00 mov eax, DWORD PTR tv91[rbp] +$LN1@stbi__mul2: + +; 556 : } + + 0016e 48 8d a5 d8 00 + 00 00 lea rsp, QWORD PTR [rbp+216] + 00175 5f pop rdi + 00176 5d pop rbp + 00177 c3 ret 0 +stbi__mul2shorts_valid ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__addints_valid +_TEXT SEGMENT +tv67 = 192 +tv73 = 192 +tv76 = 192 +tv66 = 196 +a$ = 240 +b$ = 248 +stbi__addints_valid PROC ; COMDAT + +; 536 : { + + 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:__079B8C84_stb_image@c + 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00022 90 npad 1 + +; 537 : 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 + +; 538 : 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: + +; 539 : 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 + +; 540 : 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: + +; 541 : INT_MIN - +; 542 : b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. +; 543 : 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: + +; 544 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__malloc_mad4 +_TEXT SEGMENT +a$ = 224 +b$ = 232 +c$ = 240 +d$ = 248 +add$ = 256 +stbi__malloc_mad4 PROC ; COMDAT + +; 527 : { + + 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:__079B8C84_stb_image@c + 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002c 90 npad 1 + +; 528 : 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 + +; 529 : return NULL; + + 0005a 33 c0 xor eax, eax + 0005c eb 2b jmp SHORT $LN1@stbi__mall +$LN2@stbi__mall: + +; 530 : 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: + +; 531 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__malloc_mad3 +_TEXT SEGMENT +a$ = 224 +b$ = 232 +c$ = 240 +add$ = 248 +stbi__malloc_mad3 PROC ; COMDAT + +; 519 : { + + 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:__079B8C84_stb_image@c + 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002c 90 npad 1 + +; 520 : 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 + +; 521 : return NULL; + + 00050 33 c0 xor eax, eax + 00052 eb 24 jmp SHORT $LN1@stbi__mall +$LN2@stbi__mall: + +; 522 : 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: + +; 523 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__malloc_mad2 +_TEXT SEGMENT +a$ = 224 +b$ = 232 +add$ = 240 +stbi__malloc_mad2 PROC ; COMDAT + +; 511 : { + + 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:__079B8C84_stb_image@c + 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00027 90 npad 1 + +; 512 : 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 + +; 513 : return NULL; + + 00044 33 c0 xor eax, eax + 00046 eb 1d jmp SHORT $LN1@stbi__mall +$LN2@stbi__mall: + +; 514 : 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: + +; 515 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__mad4sizes_valid +_TEXT SEGMENT +tv86 = 192 +a$ = 240 +b$ = 248 +c$ = 256 +d$ = 264 +add$ = 272 +stbi__mad4sizes_valid PROC ; COMDAT + +; 501 : { + + 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:__079B8C84_stb_image@c + 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002c 90 npad 1 + +; 502 : 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] + +; 503 : stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add); +; 504 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__mad3sizes_valid +_TEXT SEGMENT +tv79 = 192 +a$ = 240 +b$ = 248 +c$ = 256 +add$ = 264 +stbi__mad3sizes_valid PROC ; COMDAT + +; 493 : { + + 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:__079B8C84_stb_image@c + 00027 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002c 90 npad 1 + +; 494 : 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] + +; 495 : stbi__addsizes_valid(a * b * c, add); +; 496 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__mad2sizes_valid +_TEXT SEGMENT +tv73 = 192 +a$ = 240 +b$ = 248 +add$ = 256 +stbi__mad2sizes_valid PROC ; COMDAT + +; 486 : { + + 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:__079B8C84_stb_image@c + 00022 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00027 90 npad 1 + +; 487 : 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] + +; 488 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__mul2sizes_valid +_TEXT SEGMENT +tv69 = 192 +a$ = 240 +b$ = 248 +stbi__mul2sizes_valid PROC ; COMDAT + +; 473 : { + + 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:__079B8C84_stb_image@c + 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00022 90 npad 1 + +; 474 : 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: + +; 475 : return 0; + + 00035 33 c0 xor eax, eax + 00037 eb 40 jmp SHORT $LN1@stbi__mul2 +$LN2@stbi__mul2: + +; 476 : 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 + +; 477 : 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: + +; 478 : // portable way to check for no overflows in a*b +; 479 : 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: + +; 480 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__addsizes_valid +_TEXT SEGMENT +tv67 = 192 +a$ = 240 +b$ = 248 +stbi__addsizes_valid PROC ; COMDAT + +; 460 : { + + 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:__079B8C84_stb_image@c + 0001d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00022 90 npad 1 + +; 461 : 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 + +; 462 : return 0; + + 0002c 33 c0 xor eax, eax + 0002e eb 2f jmp SHORT $LN1@stbi__adds +$LN2@stbi__adds: + +; 463 : // now 0 <= b <= INT_MAX, hence also +; 464 : // 0 <= INT_MAX - b <= INTMAX. +; 465 : // And "a + b <= INT_MAX" (which might overflow) is the +; 466 : // same as a <= INT_MAX - b (no overflow) +; 467 : 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: + +; 468 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__malloc +_TEXT SEGMENT +size$ = 224 +stbi__malloc PROC ; COMDAT + +; 443 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 444 : 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 + +; 445 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__err +_TEXT SEGMENT +str$ = 224 +stbi__err PROC ; COMDAT + +; 436 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 437 : 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 + +; 438 : return 0; + + 00045 33 c0 xor eax, eax + +; 439 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pnm_is16 +_TEXT SEGMENT +s$ = 224 +stbi__pnm_is16 PROC ; COMDAT + +; 8101 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 8102 : 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_ + +; 8103 : return 1; + + 00039 b8 01 00 00 00 mov eax, 1 + 0003e eb 02 jmp SHORT $LN1@stbi__pnm_ +$LN2@stbi__pnm_: + +; 8104 : return 0; + + 00040 33 c0 xor eax, eax +$LN1@stbi__pnm_: + +; 8105 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 8054 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 8055 : int maxv, dummy; +; 8056 : char c, p, t; +; 8057 : +; 8058 : 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_ + +; 8059 : 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_: + +; 8060 : 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_ + +; 8061 : 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_: + +; 8062 : 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_ + +; 8063 : 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_: + +; 8064 : +; 8065 : 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 + +; 8066 : +; 8067 : // Get identifier +; 8068 : 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 + +; 8069 : 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 + +; 8070 : 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_: + +; 8071 : 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 + +; 8072 : return 0; + + 000f4 33 c0 xor eax, eax + 000f6 e9 1f 01 00 00 jmp $LN1@stbi__pnm_ +$LN5@stbi__pnm_: + +; 8073 : } +; 8074 : +; 8075 : *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 + +; 8076 : +; 8077 : 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 + +; 8078 : 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 + +; 8079 : +; 8080 : *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 + +; 8081 : 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_ + +; 8082 : 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_: + +; 8083 : 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 + +; 8084 : +; 8085 : *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 + +; 8086 : 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_ + +; 8087 : 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_: + +; 8088 : 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 + +; 8089 : +; 8090 : 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 + +; 8091 : 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_ + +; 8092 : 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_: + +; 8093 : "PPM image supports only 8-bit and 16-bit images"); +; 8094 : 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_ + +; 8095 : 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_: + +; 8096 : else +; 8097 : return 8; + + 00215 b8 08 00 00 00 mov eax, 8 +$LN12@stbi__pnm_: +$LN10@stbi__pnm_: +$LN1@stbi__pnm_: + +; 8098 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7969 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 7970 : stbi_uc *out; +; 7971 : STBI_NOTUSED(ri); +; 7972 : +; 7973 : 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 + +; 7974 : stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); +; 7975 : 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_ + +; 7976 : return 0; + + 00073 33 c0 xor eax, eax + 00075 e9 06 03 00 00 jmp $LN1@stbi__pnm_ +$LN2@stbi__pnm_: + +; 7977 : +; 7978 : 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_ + +; 7979 : 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_: + +; 7980 : 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_ + +; 7981 : 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_: + +; 7982 : +; 7983 : *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 + +; 7984 : *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 + +; 7985 : 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_ + +; 7986 : *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_: + +; 7987 : +; 7988 : 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_ + +; 7989 : 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_: + +; 7990 : +; 7991 : 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 + +; 7992 : 0); +; 7993 : if (!out) + + 001ff 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0 + 00204 75 34 jne SHORT $LN7@stbi__pnm_ + +; 7994 : 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_: + +; 7995 : 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_ + +; 7996 : 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 + +; 7997 : 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_: + +; 7998 : } +; 7999 : +; 8000 : 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_ + +; 8001 : 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_ + +; 8002 : 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 + +; 8003 : req_comp, s->img_x, s->img_y); +; 8004 : } else { + + 00337 eb 36 jmp SHORT $LN11@stbi__pnm_ +$LN10@stbi__pnm_: + +; 8005 : 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_: + +; 8006 : } +; 8007 : if (out == NULL) + + 0036f 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0 + 00374 75 06 jne SHORT $LN12@stbi__pnm_ + +; 8008 : 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_: + +; 8009 : } +; 8010 : return out; + + 0037c 48 8b 45 08 mov rax, QWORD PTR out$[rbp] +$LN1@stbi__pnm_: + +; 8011 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pnm_test +_TEXT SEGMENT +p$ = 4 +t$ = 36 +s$ = 288 +stbi__pnm_test PROC ; COMDAT + +; 7956 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 7957 : char p, t; +; 7958 : 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 + +; 7959 : 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 + +; 7960 : 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_: + +; 7961 : 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 + +; 7962 : return 0; + + 00066 33 c0 xor eax, eax + 00068 eb 05 jmp SHORT $LN1@stbi__pnm_ +$LN2@stbi__pnm_: + +; 7963 : } +; 7964 : return 1; + + 0006a b8 01 00 00 00 mov eax, 1 +$LN1@stbi__pnm_: + +; 7965 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__gif_info +_TEXT SEGMENT +s$ = 224 +x$ = 232 +y$ = 240 +comp$ = 248 +stbi__gif_info PROC ; COMDAT + +; 7491 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 7492 : 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 + +; 7493 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7368 : { + + 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:__079B8C84_stb_image@c + 00059 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0005e 90 npad 1 + +; 7369 : 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 + +; 7370 : int layers = 0; + + 00073 c7 45 04 00 00 + 00 00 mov DWORD PTR layers$4[rbp], 0 + +; 7371 : stbi_uc *u = 0; + + 0007a 48 c7 45 28 00 + 00 00 00 mov QWORD PTR u$5[rbp], 0 + +; 7372 : stbi_uc *out = 0; + + 00082 48 c7 45 48 00 + 00 00 00 mov QWORD PTR out$6[rbp], 0 + +; 7373 : stbi_uc *two_back = 0; + + 0008a 48 c7 45 68 00 + 00 00 00 mov QWORD PTR two_back$7[rbp], 0 + +; 7374 : stbi__gif g; +; 7375 : int stride; +; 7376 : int out_size = 0; + + 00092 c7 85 34 89 00 + 00 00 00 00 00 mov DWORD PTR out_size$10[rbp], 0 + +; 7377 : int delays_size = 0; + + 0009c c7 85 54 89 00 + 00 00 00 00 00 mov DWORD PTR delays_size$11[rbp], 0 + +; 7378 : +; 7379 : STBI_NOTUSED(out_size); +; 7380 : STBI_NOTUSED(delays_size); +; 7381 : +; 7382 : 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 + +; 7383 : 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 + +; 7384 : *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: + +; 7385 : } +; 7386 : +; 7387 : do { +; 7388 : 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 + +; 7389 : 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 + +; 7390 : 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: + +; 7391 : +; 7392 : 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 + +; 7393 : *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 + +; 7394 : *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 + +; 7395 : ++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 + +; 7396 : 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 + +; 7397 : +; 7398 : 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 + +; 7399 : 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 + +; 7400 : layers * stride); +; 7401 : 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 + +; 7402 : 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: + +; 7403 : delays); +; 7404 : else { +; 7405 : 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 + +; 7406 : 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: + +; 7407 : } +; 7408 : +; 7409 : 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 + +; 7410 : 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 + +; 7411 : *delays, delays_size, sizeof(int) * layers); +; 7412 : 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 + +; 7413 : 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: + +; 7414 : delays); +; 7415 : *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 + +; 7416 : 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: + +; 7417 : } +; 7418 : } else { + + 00268 e9 a6 00 00 00 jmp $LN11@stbi__load +$LN10@stbi__load: + +; 7419 : 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 + +; 7420 : if (!out) + + 00285 48 83 7d 48 00 cmp QWORD PTR out$6[rbp], 0 + 0028a 75 1c jne SHORT $LN16@stbi__load + +; 7421 : 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: + +; 7422 : delays); +; 7423 : 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 + +; 7424 : 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 + +; 7425 : *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 + +; 7426 : 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 + +; 7427 : 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: + +; 7428 : delays); +; 7429 : 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: + +; 7430 : } +; 7431 : } +; 7432 : 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 + +; 7433 : if (layers >= 2) { + + 00340 83 7d 04 02 cmp DWORD PTR layers$4[rbp], 2 + 00344 7c 18 jl SHORT $LN19@stbi__load + +; 7434 : 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: + +; 7435 : } +; 7436 : +; 7437 : 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 + +; 7438 : (*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: + +; 7439 : } +; 7440 : } +; 7441 : } 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 + +; 7442 : +; 7443 : // free temp buffer; +; 7444 : 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 + +; 7445 : 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 + +; 7446 : 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 + +; 7447 : +; 7448 : // do the final conversion after loading everything; +; 7449 : 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 + +; 7450 : 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: + +; 7451 : +; 7452 : *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 + +; 7453 : return out; + + 00405 48 8b 45 48 mov rax, QWORD PTR out$6[rbp] + 00409 eb 31 jmp SHORT $LN1@stbi__load + +; 7454 : } else { + + 0040b eb 2f jmp SHORT $LN6@stbi__load +$LN5@stbi__load: + +; 7455 : 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: + +; 7456 : } +; 7457 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7461 : { + + 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:__079B8C84_stb_image@c + 00059 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0005e 90 npad 1 + +; 7462 : stbi_uc *u = 0; + + 0005f 48 c7 45 08 00 + 00 00 00 mov QWORD PTR u$[rbp], 0 + +; 7463 : stbi__gif g; +; 7464 : 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 + +; 7465 : STBI_NOTUSED(ri); +; 7466 : +; 7467 : 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 + +; 7468 : 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_ + +; 7469 : 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_: + +; 7470 : if (u) { + + 000b9 48 83 7d 08 00 cmp QWORD PTR u$[rbp], 0 + 000be 74 50 je SHORT $LN3@stbi__gif_ + +; 7471 : *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 + +; 7472 : *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 + +; 7473 : +; 7474 : // moved conversion to after successful load so that the same +; 7475 : // can be done for multiple frames. +; 7476 : 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_ + +; 7477 : 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_: + +; 7478 : } 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_ + +; 7479 : // if there was an error and we allocated an image buffer, free it! +; 7480 : 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_: + +; 7481 : } +; 7482 : +; 7483 : // free buffers needed for multiple frame loading; +; 7484 : 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 + +; 7485 : 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 + +; 7486 : +; 7487 : return u; + + 00138 48 8b 45 08 mov rax, QWORD PTR u$[rbp] + +; 7488 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__gif_test +_TEXT SEGMENT +r$ = 4 +s$ = 256 +stbi__gif_test PROC ; COMDAT + +; 6964 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 6965 : 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 + +; 6966 : 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 + +; 6967 : return r; + + 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 6968 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7882 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 7883 : 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 + +; 7884 : stbi__pic_packet packets[10]; +; 7885 : +; 7886 : 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_ + +; 7887 : 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_: + +; 7888 : 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_ + +; 7889 : 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_: + +; 7890 : 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_ + +; 7891 : 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_: + +; 7892 : +; 7893 : 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_ + +; 7894 : 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 + +; 7895 : return 0; + + 000ca 33 c0 xor eax, eax + 000cc e9 c3 01 00 00 jmp $LN1@stbi__pic_ +$LN8@stbi__pic_: + +; 7896 : } +; 7897 : +; 7898 : 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 + +; 7899 : +; 7900 : *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 + +; 7901 : *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 + +; 7902 : 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_ + +; 7903 : 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 + +; 7904 : return 0; + + 0012a 33 c0 xor eax, eax + 0012c e9 63 01 00 00 jmp $LN1@stbi__pic_ +$LN9@stbi__pic_: + +; 7905 : } +; 7906 : 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_ + +; 7907 : 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 + +; 7908 : return 0; + + 00164 33 c0 xor eax, eax + 00166 e9 29 01 00 00 jmp $LN1@stbi__pic_ +$LN10@stbi__pic_: + +; 7909 : } +; 7910 : +; 7911 : 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_: + +; 7912 : +; 7913 : do { +; 7914 : stbi__pic_packet *packet; +; 7915 : +; 7916 : 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_ + +; 7917 : return 0; + + 00187 33 c0 xor eax, eax + 00189 e9 06 01 00 00 jmp $LN1@stbi__pic_ +$LN11@stbi__pic_: + +; 7918 : +; 7919 : 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 + +; 7920 : 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 + +; 7921 : 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 + +; 7922 : 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 + +; 7923 : 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 + +; 7924 : 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 + +; 7925 : +; 7926 : 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_ + +; 7927 : 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 + +; 7928 : return 0; + + 00232 33 c0 xor eax, eax + 00234 eb 5e jmp SHORT $LN1@stbi__pic_ +$LN12@stbi__pic_: + +; 7929 : } +; 7930 : 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_ + +; 7931 : 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 + +; 7932 : return 0; + + 00252 33 c0 xor eax, eax + 00254 eb 3e jmp SHORT $LN1@stbi__pic_ +$LN13@stbi__pic_: + +; 7933 : } +; 7934 : } while (chained); + + 00256 83 7d 44 00 cmp DWORD PTR chained$[rbp], 0 + 0025a 0f 85 1d ff ff + ff jne $LN4@stbi__pic_ + +; 7935 : +; 7936 : *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 + +; 7937 : +; 7938 : return 1; + + 0028f b8 01 00 00 00 mov eax, 1 +$LN1@stbi__pic_: + +; 7939 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6865 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 6866 : stbi_uc *result; +; 6867 : int i, x, y, internal_comp; +; 6868 : STBI_NOTUSED(ri); +; 6869 : +; 6870 : 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_ + +; 6871 : 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_: + +; 6872 : +; 6873 : 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_ + +; 6874 : 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_: + +; 6875 : +; 6876 : 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 + +; 6877 : 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 + +; 6878 : +; 6879 : 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_ + +; 6880 : 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_: + +; 6881 : 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_ + +; 6882 : 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_: + +; 6883 : +; 6884 : 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_ + +; 6885 : 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_: + +; 6886 : 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_ + +; 6887 : 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_: + +; 6888 : +; 6889 : 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 + +; 6890 : 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 + +; 6891 : 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 + +; 6892 : +; 6893 : // intermediate buffer is RGBA +; 6894 : 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 + +; 6895 : if (!result) + + 001fe 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0 + 00203 75 34 jne SHORT $LN10@stbi__pic_ + +; 6896 : 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_: + +; 6897 : 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 + +; 6898 : +; 6899 : 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_ + +; 6900 : 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 + +; 6901 : result = 0; + + 0028a 48 c7 45 08 00 + 00 00 00 mov QWORD PTR result$[rbp], 0 +$LN11@stbi__pic_: + +; 6902 : } +; 6903 : *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 + +; 6904 : *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 + +; 6905 : 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_ + +; 6906 : 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_: + +; 6907 : 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 + +; 6908 : +; 6909 : return result; + + 002e6 48 8b 45 08 mov rax, QWORD PTR result$[rbp] +$LN1@stbi__pic_: + +; 6910 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__pic_test +_TEXT SEGMENT +r$ = 4 +s$ = 256 +stbi__pic_test PROC ; COMDAT + +; 6913 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 6914 : 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 + +; 6915 : 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 + +; 6916 : return r; + + 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 6917 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7737 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 7738 : char buffer[STBI__HDR_BUFLEN]; +; 7739 : char *token; +; 7740 : int valid = 0; + + 00059 c7 85 44 04 00 + 00 00 00 00 00 mov DWORD PTR valid$[rbp], 0 + +; 7741 : int dummy; +; 7742 : +; 7743 : 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_ + +; 7744 : 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_: + +; 7745 : 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_ + +; 7746 : 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_: + +; 7747 : 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_ + +; 7748 : 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_: + +; 7749 : +; 7750 : 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_ + +; 7751 : 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 + +; 7752 : return 0; + + 000c8 33 c0 xor eax, eax + 000ca e9 82 01 00 00 jmp $LN1@stbi__hdr_ +$LN10@stbi__hdr_: +$LN2@stbi__hdr_: + +; 7753 : } +; 7754 : +; 7755 : for (;;) { +; 7756 : 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 + +; 7757 : 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_ + +; 7758 : break; + + 000fe eb 23 jmp SHORT $LN3@stbi__hdr_ +$LN11@stbi__hdr_: + +; 7759 : 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_ + +; 7760 : valid = 1; + + 00117 c7 85 44 04 00 + 00 01 00 00 00 mov DWORD PTR valid$[rbp], 1 +$LN12@stbi__hdr_: + +; 7761 : } + + 00121 eb ac jmp SHORT $LN2@stbi__hdr_ +$LN3@stbi__hdr_: + +; 7762 : +; 7763 : if (!valid) { + + 00123 83 bd 44 04 00 + 00 00 cmp DWORD PTR valid$[rbp], 0 + 0012a 75 14 jne SHORT $LN13@stbi__hdr_ + +; 7764 : 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 + +; 7765 : return 0; + + 00139 33 c0 xor eax, eax + 0013b e9 11 01 00 00 jmp $LN1@stbi__hdr_ +$LN13@stbi__hdr_: + +; 7766 : } +; 7767 : 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 + +; 7768 : 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_ + +; 7769 : 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 + +; 7770 : return 0; + + 00182 33 c0 xor eax, eax + 00184 e9 c8 00 00 00 jmp $LN1@stbi__hdr_ +$LN14@stbi__hdr_: + +; 7771 : } +; 7772 : 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 + +; 7773 : *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_: + +; 7774 : 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_ + +; 7775 : ++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_: + +; 7776 : 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_ + +; 7777 : 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 + +; 7778 : return 0; + + 0020b 33 c0 xor eax, eax + 0020d eb 42 jmp SHORT $LN1@stbi__hdr_ +$LN15@stbi__hdr_: + +; 7779 : } +; 7780 : 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 + +; 7781 : *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 + +; 7782 : *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 + +; 7783 : return 1; + + 0024c b8 01 00 00 00 mov eax, 1 +$LN1@stbi__hdr_: + +; 7784 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7579 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 7580 : char buffer[STBI__HDR_BUFLEN]; +; 7581 : char *token; +; 7582 : int valid = 0; + + 00059 c7 85 44 04 00 + 00 00 00 00 00 mov DWORD PTR valid$[rbp], 0 + +; 7583 : int width, height; +; 7584 : stbi_uc *scanline; +; 7585 : float *hdr_data; +; 7586 : int len; +; 7587 : unsigned char count, value; +; 7588 : int i, j, k, c1, c2, z; +; 7589 : const char *headerToken; +; 7590 : STBI_NOTUSED(ri); +; 7591 : +; 7592 : // Check identifier +; 7593 : 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 + +; 7594 : 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_ + +; 7595 : 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_: + +; 7596 : +; 7597 : // Parse header +; 7598 : for (;;) { +; 7599 : 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 + +; 7600 : 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_ + +; 7601 : break; + + 0010b eb 23 jmp SHORT $LN3@stbi__hdr_ +$LN31@stbi__hdr_: + +; 7602 : 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_ + +; 7603 : valid = 1; + + 00124 c7 85 44 04 00 + 00 01 00 00 00 mov DWORD PTR valid$[rbp], 1 +$LN32@stbi__hdr_: + +; 7604 : } + + 0012e eb ac jmp SHORT $LN2@stbi__hdr_ +$LN3@stbi__hdr_: + +; 7605 : +; 7606 : if (!valid) + + 00130 83 bd 44 04 00 + 00 00 cmp DWORD PTR valid$[rbp], 0 + 00137 75 34 jne SHORT $LN33@stbi__hdr_ + +; 7607 : 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_: + +; 7608 : +; 7609 : // Parse width and height +; 7610 : // can't use sscanf() if we're not using stdio! +; 7611 : 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 + +; 7612 : 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_ + +; 7613 : 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_: + +; 7614 : 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 + +; 7615 : 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_: + +; 7616 : 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_ + +; 7617 : ++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_: + +; 7618 : 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_ + +; 7619 : 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_: + +; 7620 : 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 + +; 7621 : 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 + +; 7622 : +; 7623 : 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_ + +; 7624 : 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_: + +; 7625 : 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_ + +; 7626 : 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_: + +; 7627 : +; 7628 : *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 + +; 7629 : *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 + +; 7630 : +; 7631 : 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_ + +; 7632 : *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_: + +; 7633 : 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_ + +; 7634 : req_comp = 3; + + 00367 c7 85 d0 09 00 + 00 03 00 00 00 mov DWORD PTR req_comp$[rbp], 3 +$LN39@stbi__hdr_: + +; 7635 : +; 7636 : 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_ + +; 7637 : 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_: + +; 7638 : +; 7639 : // Read data +; 7640 : 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 + +; 7641 : 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_ + +; 7642 : 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_: + +; 7643 : +; 7644 : // Load image data +; 7645 : // image data is stored as some number of sca +; 7646 : 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_: + +; 7647 : // Read flat data +; 7648 : 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_ + +; 7649 : 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: + +; 7650 : stbi_uc rgbe[4]; +; 7651 : main_decode_loop: +; 7652 : 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 + +; 7653 : 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 + +; 7654 : rgbe, req_comp); +; 7655 : } + + 0050d e9 79 ff ff ff jmp $LN10@stbi__hdr_ +$LN11@stbi__hdr_: + +; 7656 : } + + 00512 e9 48 ff ff ff jmp $LN7@stbi__hdr_ +$LN8@stbi__hdr_: + +; 7657 : } else { + + 00517 e9 0c 05 00 00 jmp $LN43@stbi__hdr_ +$LN42@stbi__hdr_: + +; 7658 : // Read RLE-encoded data +; 7659 : scanline = NULL; + + 0051c 48 c7 85 a8 04 + 00 00 00 00 00 + 00 mov QWORD PTR scanline$[rbp], 0 + +; 7660 : +; 7661 : 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_ + +; 7662 : 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 + +; 7663 : 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 + +; 7664 : 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 + +; 7665 : 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_: + +; 7666 : // not run-length encoded, so we have to actually use THIS data as a decoded +; 7667 : // pixel (note this can't be a valid pixel--one of RGB must be >= 128) +; 7668 : stbi_uc rgbe[4]; +; 7669 : 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 + +; 7670 : 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 + +; 7671 : 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 + +; 7672 : 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 + +; 7673 : 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 + +; 7674 : i = 1; + + 00633 c7 85 44 05 00 + 00 01 00 00 00 mov DWORD PTR i$[rbp], 1 + +; 7675 : j = 0; + + 0063d c7 85 64 05 00 + 00 00 00 00 00 mov DWORD PTR j$[rbp], 0 + +; 7676 : 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 + +; 7677 : goto main_decode_loop; // yes, this makes no sense + + 00655 e9 4d fe ff ff jmp $main_decode_loop$82 +$LN45@stbi__hdr_: + +; 7678 : } +; 7679 : 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 + +; 7680 : 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 + +; 7681 : 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_ + +; 7682 : 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 + +; 7683 : 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 + +; 7684 : 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_: + +; 7685 : "corrupt HDR"); +; 7686 : } +; 7687 : 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_ + +; 7688 : 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 + +; 7689 : 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_ + +; 7690 : 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 + +; 7691 : 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_: + +; 7692 : } +; 7693 : } +; 7694 : +; 7695 : 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_ + +; 7696 : int nleft; +; 7697 : i = 0; + + 0077d c7 85 44 05 00 + 00 00 00 00 00 mov DWORD PTR i$[rbp], 0 +$LN19@stbi__hdr_: + +; 7698 : 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_ + +; 7699 : 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 + +; 7700 : 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_ + +; 7701 : // Run +; 7702 : 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 + +; 7703 : 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 + +; 7704 : 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_: + +; 7705 : 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 + +; 7706 : 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 + +; 7707 : 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_: + +; 7708 : "bad RLE data in HDR"); +; 7709 : } +; 7710 : 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_ + +; 7711 : 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_: + +; 7712 : } else { + + 008b7 e9 cb 00 00 00 jmp $LN51@stbi__hdr_ +$LN50@stbi__hdr_: + +; 7713 : // Dump +; 7714 : 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_: + +; 7715 : 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 + +; 7716 : 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 + +; 7717 : 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_: + +; 7718 : "bad RLE data in HDR"); +; 7719 : } +; 7720 : 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_ + +; 7721 : 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_: + +; 7722 : } +; 7723 : } + + 00987 e9 fb fd ff ff jmp $LN19@stbi__hdr_ +$LN20@stbi__hdr_: + +; 7724 : } + + 0098c e9 d1 fd ff ff jmp $LN16@stbi__hdr_ +$LN17@stbi__hdr_: + +; 7725 : 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_ + +; 7726 : 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_: + +; 7727 : scanline + i * 4, req_comp); +; 7728 : } + + 00a0b e9 23 fb ff ff jmp $LN13@stbi__hdr_ +$LN14@stbi__hdr_: + +; 7729 : 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_ + +; 7730 : 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_: + +; 7731 : } +; 7732 : +; 7733 : return hdr_data; + + 00a28 48 8b 85 c8 04 + 00 00 mov rax, QWORD PTR hdr_data$[rbp] +$LN1@stbi__hdr_: + +; 7734 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__hdr_test +_TEXT SEGMENT +r$ = 4 +s$ = 256 +stbi__hdr_test PROC ; COMDAT + +; 7511 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 7512 : 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 + +; 7513 : 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 + +; 7514 : if (!r) { + + 00043 83 7d 04 00 cmp DWORD PTR r$[rbp], 0 + 00047 75 23 jne SHORT $LN2@stbi__hdr_ + +; 7515 : 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 + +; 7516 : 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_: + +; 7517 : } +; 7518 : return r; + + 0006c 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 7519 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__psd_is16 +_TEXT SEGMENT +channelCount$ = 4 +depth$ = 36 +s$ = 288 +stbi__psd_is16 PROC ; COMDAT + +; 7853 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 7854 : int channelCount, depth; +; 7855 : 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_ + +; 7856 : 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 + +; 7857 : return 0; + + 00040 33 c0 xor eax, eax + 00042 e9 a8 00 00 00 jmp $LN1@stbi__psd_ +$LN2@stbi__psd_: + +; 7858 : } +; 7859 : 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_ + +; 7860 : 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 + +; 7861 : return 0; + + 00065 33 c0 xor eax, eax + 00067 e9 83 00 00 00 jmp $LN1@stbi__psd_ +$LN3@stbi__psd_: + +; 7862 : } +; 7863 : 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 + +; 7864 : 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 + +; 7865 : 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_: + +; 7866 : 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 + +; 7867 : return 0; + + 000a6 33 c0 xor eax, eax + 000a8 eb 45 jmp SHORT $LN1@stbi__psd_ +$LN4@stbi__psd_: + +; 7868 : } +; 7869 : 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 + +; 7870 : 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 + +; 7871 : 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 + +; 7872 : if (depth != 16) { + + 000d3 83 7d 24 10 cmp DWORD PTR depth$[rbp], 16 + 000d7 74 11 je SHORT $LN6@stbi__psd_ + +; 7873 : 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 + +; 7874 : return 0; + + 000e6 33 c0 xor eax, eax + 000e8 eb 05 jmp SHORT $LN1@stbi__psd_ +$LN6@stbi__psd_: + +; 7875 : } +; 7876 : return 1; + + 000ea b8 01 00 00 00 mov eax, 1 +$LN1@stbi__psd_: + +; 7877 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7815 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 7816 : int channelCount, dummy, depth; +; 7817 : 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_ + +; 7818 : 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_: + +; 7819 : 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_ + +; 7820 : 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_: + +; 7821 : 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_ + +; 7822 : 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_: + +; 7823 : 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_ + +; 7824 : 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 + +; 7825 : return 0; + + 000b8 33 c0 xor eax, eax + 000ba e9 f0 00 00 00 jmp $LN1@stbi__psd_ +$LN5@stbi__psd_: + +; 7826 : } +; 7827 : 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_ + +; 7828 : 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 + +; 7829 : return 0; + + 000dd 33 c0 xor eax, eax + 000df e9 cb 00 00 00 jmp $LN1@stbi__psd_ +$LN6@stbi__psd_: + +; 7830 : } +; 7831 : 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 + +; 7832 : 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 + +; 7833 : 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_: + +; 7834 : 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 + +; 7835 : return 0; + + 0011e 33 c0 xor eax, eax + 00120 e9 8a 00 00 00 jmp $LN1@stbi__psd_ +$LN7@stbi__psd_: + +; 7836 : } +; 7837 : *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 + +; 7838 : *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 + +; 7839 : 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 + +; 7840 : 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_ + +; 7841 : 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 + +; 7842 : return 0; + + 00177 33 c0 xor eax, eax + 00179 eb 34 jmp SHORT $LN1@stbi__psd_ +$LN9@stbi__psd_: + +; 7843 : } +; 7844 : 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_ + +; 7845 : 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 + +; 7846 : return 0; + + 00199 33 c0 xor eax, eax + 0019b eb 12 jmp SHORT $LN1@stbi__psd_ +$LN10@stbi__psd_: + +; 7847 : } +; 7848 : *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 + +; 7849 : return 1; + + 001aa b8 01 00 00 00 mov eax, 1 +$LN1@stbi__psd_: + +; 7850 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6470 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 6471 : int pixelCount; +; 6472 : int channelCount, compression; +; 6473 : int channel, i; +; 6474 : int bitdepth; +; 6475 : int w, h; +; 6476 : stbi_uc *out; +; 6477 : STBI_NOTUSED(ri); +; 6478 : +; 6479 : // Check identifier +; 6480 : 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_ + +; 6481 : 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_: + +; 6482 : +; 6483 : // Check file type version. +; 6484 : 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_ + +; 6485 : 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_: + +; 6486 : +; 6487 : // Skip 6 reserved bytes. +; 6488 : 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 + +; 6489 : +; 6490 : // Read the number of channels (R, G, B, A, etc). +; 6491 : 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 + +; 6492 : 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_: + +; 6493 : 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_: + +; 6494 : "Unsupported number of channels in PSD image"); +; 6495 : +; 6496 : // Read the rows and columns of the image. +; 6497 : 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 + +; 6498 : 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 + +; 6499 : +; 6500 : 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_ + +; 6501 : 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_: + +; 6502 : 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_ + +; 6503 : 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_: + +; 6504 : +; 6505 : // Make sure the depth is 8 bits. +; 6506 : 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 + +; 6507 : 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_ + +; 6508 : 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_: + +; 6509 : +; 6510 : // Make sure the color mode is RGB. +; 6511 : // Valid options are: +; 6512 : // 0: Bitmap +; 6513 : // 1: Grayscale +; 6514 : // 2: Indexed color +; 6515 : // 3: RGB color +; 6516 : // 4: CMYK color +; 6517 : // 7: Multichannel +; 6518 : // 8: Duotone +; 6519 : // 9: Lab color +; 6520 : 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_ + +; 6521 : 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_: + +; 6522 : +; 6523 : // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) +; 6524 : 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 + +; 6525 : +; 6526 : // Skip the image resources. (resolution, pen tool paths, etc) +; 6527 : 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 + +; 6528 : +; 6529 : // Skip the reserved data. +; 6530 : 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 + +; 6531 : +; 6532 : // Find out if the data is compressed. +; 6533 : // Known values: +; 6534 : // 0: no compression +; 6535 : // 1: RLE compressed +; 6536 : 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 + +; 6537 : if (compression > 1) + + 002bd 83 7d 44 01 cmp DWORD PTR compression$[rbp], 1 + 002c1 7e 34 jle SHORT $LN40@stbi__psd_ + +; 6538 : 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_: + +; 6539 : +; 6540 : // Check size +; 6541 : 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_ + +; 6542 : 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_: + +; 6543 : +; 6544 : // Create the destination image. +; 6545 : +; 6546 : 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_ + +; 6547 : 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 + +; 6548 : 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 + +; 6549 : } else + + 0038f eb 21 jmp SHORT $LN43@stbi__psd_ +$LN42@stbi__psd_: + +; 6550 : 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_: + +; 6551 : +; 6552 : 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_ + +; 6553 : 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_: + +; 6554 : 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 + +; 6555 : +; 6556 : // Initialize the data to zero. +; 6557 : //memset( out, 0, pixelCount * 4 ); +; 6558 : +; 6559 : // Finally, the image data. +; 6560 : if (compression) { + + 00400 83 7d 44 00 cmp DWORD PTR compression$[rbp], 0 + 00404 0f 84 24 01 00 + 00 je $LN45@stbi__psd_ + +; 6561 : // RLE as used by .PSD and .TIFF +; 6562 : // Loop until you get the number of unpacked bytes you are expecting: +; 6563 : // Read the next source byte into n. +; 6564 : // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. +; 6565 : // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. +; 6566 : // Else if n is 128, noop. +; 6567 : // Endloop +; 6568 : +; 6569 : // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, +; 6570 : // which we're going to just skip. +; 6571 : 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 + +; 6572 : +; 6573 : // Read the RLE data by channel. +; 6574 : 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_ + +; 6575 : stbi_uc *p; +; 6576 : +; 6577 : 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 + +; 6578 : 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_ + +; 6579 : // Fill this channel with default data. +; 6580 : 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_ + +; 6581 : *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_: + +; 6582 : } else { + + 004c5 eb 5d jmp SHORT $LN48@stbi__psd_ +$LN47@stbi__psd_: + +; 6583 : // Read the RLE data. +; 6584 : 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_ + +; 6585 : 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 + +; 6586 : 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_: + +; 6587 : } +; 6588 : } +; 6589 : } + + 00524 e9 05 ff ff ff jmp $LN2@stbi__psd_ +$LN3@stbi__psd_: + +; 6590 : } else { + + 00529 e9 9c 02 00 00 jmp $LN46@stbi__psd_ +$LN45@stbi__psd_: + +; 6591 : // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) +; 6592 : // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. +; 6593 : +; 6594 : // Read the data by channel. +; 6595 : 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_ + +; 6596 : 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_ + +; 6597 : // Fill this channel with default data. +; 6598 : 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_ + +; 6599 : 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 + +; 6600 : 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 + +; 6601 : 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_ + +; 6602 : *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_: + +; 6603 : } else { + + 005f9 e9 8a 00 00 00 jmp $LN53@stbi__psd_ +$LN52@stbi__psd_: + +; 6604 : 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 + +; 6605 : 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 + +; 6606 : 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_ + +; 6607 : *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_: + +; 6608 : } +; 6609 : } else { + + 00688 e9 38 01 00 00 jmp $LN51@stbi__psd_ +$LN50@stbi__psd_: + +; 6610 : 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_ + +; 6611 : 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 + +; 6612 : 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_ + +; 6613 : *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_: + +; 6614 : } else { + + 006fe e9 c2 00 00 00 jmp $LN55@stbi__psd_ +$LN54@stbi__psd_: + +; 6615 : 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 + +; 6616 : 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_ + +; 6617 : 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_ + +; 6618 : *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_: + +; 6619 : } else { + + 00775 eb 4e jmp SHORT $LN57@stbi__psd_ +$LN56@stbi__psd_: + +; 6620 : 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_ + +; 6621 : *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_: + +; 6622 : } +; 6623 : } +; 6624 : } +; 6625 : } + + 007c5 e9 6d fd ff ff jmp $LN8@stbi__psd_ +$LN9@stbi__psd_: +$LN46@stbi__psd_: + +; 6626 : } +; 6627 : +; 6628 : // remove weird white matte from PSD +; 6629 : 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_ + +; 6630 : 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_ + +; 6631 : 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_ + +; 6632 : 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 + +; 6633 : 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_ + +; 6634 : 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 + +; 6635 : 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 + +; 6636 : 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 + +; 6637 : 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 + +; 6638 : 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 + +; 6639 : 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_: + +; 6640 : } +; 6641 : } + + 00996 e9 55 fe ff ff jmp $LN26@stbi__psd_ +$LN27@stbi__psd_: + +; 6642 : } else { + + 0099b e9 b6 01 00 00 jmp $LN60@stbi__psd_ +$LN59@stbi__psd_: + +; 6643 : 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_ + +; 6644 : 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 + +; 6645 : 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_ + +; 6646 : 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 + +; 6647 : 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 + +; 6648 : 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 + +; 6649 : 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 + +; 6650 : 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 + +; 6651 : 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_: + +; 6652 : } +; 6653 : } + + 00b51 e9 56 fe ff ff jmp $LN29@stbi__psd_ +$LN30@stbi__psd_: +$LN60@stbi__psd_: +$LN58@stbi__psd_: + +; 6654 : } +; 6655 : } +; 6656 : +; 6657 : // convert to desired output format +; 6658 : 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_ + +; 6659 : 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_ + +; 6660 : 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_: + +; 6661 : h); +; 6662 : else +; 6663 : 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_: + +; 6664 : 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_ + +; 6665 : 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_: + +; 6666 : } +; 6667 : +; 6668 : 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_ + +; 6669 : *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_: + +; 6670 : *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 + +; 6671 : *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 + +; 6672 : +; 6673 : return out; + + 00c26 48 8b 85 08 01 + 00 00 mov rax, QWORD PTR out$[rbp] +$LN1@stbi__psd_: + +; 6674 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__psd_test +_TEXT SEGMENT +r$ = 4 +tv67 = 212 +s$ = 256 +stbi__psd_test PROC ; COMDAT + +; 6422 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 6423 : 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 + +; 6424 : 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 + +; 6425 : return r; + + 0005f 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 6426 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6084 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 6085 : int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; +; 6086 : int sz, tga_colormap_type; +; 6087 : 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 + +; 6088 : 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 + +; 6089 : 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_ + +; 6090 : 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 + +; 6091 : 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_: + +; 6092 : } +; 6093 : 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 + +; 6094 : 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_ + +; 6095 : 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_ + +; 6096 : 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 + +; 6097 : return 0; + + 000a6 33 c0 xor eax, eax + 000a8 e9 1f 02 00 00 jmp $LN1@stbi__tga_ +$LN5@stbi__tga_: + +; 6098 : } +; 6099 : stbi__skip(s, + + 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 + +; 6100 : 4); // skip index of first colormap entry and number of entries +; 6101 : 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 + +; 6102 : 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_ + +; 6103 : 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 + +; 6104 : return 0; + + 0010e 33 c0 xor eax, eax + 00110 e9 b7 01 00 00 jmp $LN1@stbi__tga_ +$LN6@stbi__tga_: + +; 6105 : } +; 6106 : 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 + +; 6107 : 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 + +; 6108 : } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + + 00133 eb 48 jmp SHORT $LN4@stbi__tga_ +$LN3@stbi__tga_: + +; 6109 : 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_ + +; 6110 : (tga_image_type != 11)) { +; 6111 : 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 + +; 6112 : 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_: + +; 6113 : } +; 6114 : stbi__skip(s, + + 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 + +; 6115 : 9); // skip colormap specification and image x/y origin +; 6116 : 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_: + +; 6117 : } +; 6118 : 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 + +; 6119 : if (tga_w < 1) { + + 0018c 83 7d 04 01 cmp DWORD PTR tga_w$[rbp], 1 + 00190 7d 14 jge SHORT $LN8@stbi__tga_ + +; 6120 : 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 + +; 6121 : return 0; // test width + + 0019f 33 c0 xor eax, eax + 001a1 e9 26 01 00 00 jmp $LN1@stbi__tga_ +$LN8@stbi__tga_: + +; 6122 : } +; 6123 : 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 + +; 6124 : if (tga_h < 1) { + + 001b5 83 7d 24 01 cmp DWORD PTR tga_h$[rbp], 1 + 001b9 7d 14 jge SHORT $LN9@stbi__tga_ + +; 6125 : 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 + +; 6126 : return 0; // test height + + 001c8 33 c0 xor eax, eax + 001ca e9 fd 00 00 00 jmp $LN1@stbi__tga_ +$LN9@stbi__tga_: + +; 6127 : } +; 6128 : 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 + +; 6129 : 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 + +; 6130 : 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_ + +; 6131 : 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_ + +; 6132 : // when using a colormap, tga_bits_per_pixel is the size of the indexes +; 6133 : // I don't think anything but 8 or 16bit indexes makes sense +; 6134 : 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 + +; 6135 : return 0; + + 00219 33 c0 xor eax, eax + 0021b e9 ac 00 00 00 jmp $LN1@stbi__tga_ +$LN12@stbi__tga_: + +; 6136 : } +; 6137 : 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 + +; 6138 : } else { + + 00233 eb 39 jmp SHORT $LN11@stbi__tga_ +$LN10@stbi__tga_: + +; 6139 : 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_: + +; 6140 : tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); +; 6141 : } +; 6142 : if (!tga_comp) { + + 0026e 83 7d 44 00 cmp DWORD PTR tga_comp$[rbp], 0 + 00272 75 11 jne SHORT $LN13@stbi__tga_ + +; 6143 : 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 + +; 6144 : return 0; + + 00281 33 c0 xor eax, eax + 00283 eb 47 jmp SHORT $LN1@stbi__tga_ +$LN13@stbi__tga_: + +; 6145 : } +; 6146 : 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_ + +; 6147 : *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_: + +; 6148 : 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_ + +; 6149 : *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_: + +; 6150 : 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_ + +; 6151 : *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_: + +; 6152 : return 1; // seems to have passed everything + + 002c7 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__tga_: + +; 6153 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 6218 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 6219 : // read in the TGA header stuff +; 6220 : 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 + +; 6221 : 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 + +; 6222 : 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 + +; 6223 : int tga_is_RLE = 0; + + 0008f c7 45 64 00 00 + 00 00 mov DWORD PTR tga_is_RLE$[rbp], 0 + +; 6224 : 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 + +; 6225 : 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 + +; 6226 : 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 + +; 6227 : 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 + +; 6228 : 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 + +; 6229 : 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 + +; 6230 : 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 + +; 6231 : 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 + +; 6232 : int tga_comp, tga_rgb16 = 0; + + 0012c c7 85 a4 01 00 + 00 00 00 00 00 mov DWORD PTR tga_rgb16$[rbp], 0 + +; 6233 : 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 + +; 6234 : // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) +; 6235 : // image data +; 6236 : unsigned char *tga_data; +; 6237 : unsigned char *tga_palette = NULL; + + 0014b 48 c7 85 08 02 + 00 00 00 00 00 + 00 mov QWORD PTR tga_palette$[rbp], 0 + +; 6238 : int i, j; +; 6239 : 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 + +; 6240 : int RLE_count = 0; + + 00169 c7 85 84 02 00 + 00 00 00 00 00 mov DWORD PTR RLE_count$[rbp], 0 + +; 6241 : int RLE_repeating = 0; + + 00173 c7 85 a4 02 00 + 00 00 00 00 00 mov DWORD PTR RLE_repeating$[rbp], 0 + +; 6242 : int read_next_pixel = 1; + + 0017d c7 85 c4 02 00 + 00 01 00 00 00 mov DWORD PTR read_next_pixel$[rbp], 1 + +; 6243 : STBI_NOTUSED(ri); +; 6244 : STBI_NOTUSED(tga_x_origin); // @TODO +; 6245 : STBI_NOTUSED(tga_y_origin); // @TODO +; 6246 : +; 6247 : 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_ + +; 6248 : 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_: + +; 6249 : 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_ + +; 6250 : 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_: + +; 6251 : +; 6252 : // do a tiny bit of precessing +; 6253 : 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_ + +; 6254 : 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 + +; 6255 : tga_is_RLE = 1; + + 00216 c7 45 64 01 00 + 00 00 mov DWORD PTR tga_is_RLE$[rbp], 1 +$LN31@stbi__tga_: + +; 6256 : } +; 6257 : 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 + +; 6258 : +; 6259 : // If I'm paletted, then I'll use the number of bits from the palette +; 6260 : if (tga_indexed) + + 00238 83 7d 24 00 cmp DWORD PTR tga_indexed$[rbp], 0 + 0023c 74 1c je SHORT $LN32@stbi__tga_ + +; 6261 : 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_: + +; 6262 : else +; 6263 : 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_: + +; 6264 : stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); +; 6265 : +; 6266 : 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_ + +; 6267 : 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_: + +; 6268 : +; 6269 : // tga info +; 6270 : *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 + +; 6271 : *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 + +; 6272 : 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_ + +; 6273 : *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_: + +; 6274 : +; 6275 : 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_ + +; 6276 : 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_: + +; 6277 : +; 6278 : 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 + +; 6279 : 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_ + +; 6280 : 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_: + +; 6281 : +; 6282 : // skip to the data's starting position (offset usually = 0) +; 6283 : 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 + +; 6284 : +; 6285 : 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_ + +; 6286 : 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_ + +; 6287 : 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 + +; 6288 : 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 + +; 6289 : 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 + +; 6290 : } + + 004a1 e9 52 ff ff ff jmp $LN2@stbi__tga_ +$LN3@stbi__tga_: + +; 6291 : } else { + + 004a6 e9 8f 05 00 00 jmp $LN39@stbi__tga_ +$LN38@stbi__tga_: + +; 6292 : // do I need to load a palette? +; 6293 : 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_ + +; 6294 : 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_ + +; 6295 : 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 + +; 6296 : 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_: + +; 6297 : } +; 6298 : +; 6299 : // any data to skip? (offset usually = 0) +; 6300 : 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 + +; 6301 : // load the palette +; 6302 : 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 + +; 6303 : (unsigned char *)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); +; 6304 : 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_ + +; 6305 : 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 + +; 6306 : 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_: + +; 6307 : } +; 6308 : 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_ + +; 6309 : 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 + +; 6310 : 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 a6 18 00 + 00 mov r8d, 6310 ; 000018a6H + 005a4 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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_: + +; 6311 : 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_ + +; 6312 : 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 + +; 6313 : 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 + +; 6314 : } + + 00611 eb b3 jmp SHORT $LN5@stbi__tga_ +$LN6@stbi__tga_: + +; 6315 : } 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_ + +; 6316 : 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 + +; 6317 : 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 + +; 6318 : 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_: + +; 6319 : } +; 6320 : } +; 6321 : // load the data +; 6322 : 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_ + +; 6323 : // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? +; 6324 : 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_ + +; 6325 : 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_ + +; 6326 : // yep, get the next byte as a RLE command +; 6327 : 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 + +; 6328 : 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 + +; 6329 : 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 + +; 6330 : 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_: + +; 6331 : } 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_ + +; 6332 : 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_: + +; 6333 : } +; 6334 : } else { + + 00722 eb 0a jmp SHORT $LN47@stbi__tga_ +$LN46@stbi__tga_: + +; 6335 : 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_: + +; 6336 : } +; 6337 : // OK, if I need to read a pixel, do it now +; 6338 : 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_ + +; 6339 : // load however much data we did have +; 6340 : 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_ + +; 6341 : // read in index, then perform the lookup +; 6342 : 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 + +; 6343 : stbi__get16le(s); +; 6344 : 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_ + +; 6345 : // invalid index +; 6346 : 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_: + +; 6347 : } +; 6348 : 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 + +; 6349 : 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_ + +; 6350 : 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 + +; 6351 : } + + 00801 eb b7 jmp SHORT $LN11@stbi__tga_ +$LN12@stbi__tga_: + +; 6352 : } 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_ + +; 6353 : 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 d1 18 00 + 00 mov r8d, 6353 ; 000018d1H + 00820 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:??_C@_1KG@HOANCCHA@?$AAD?$AA?3?$AA?2?$AAN?$AAi?$AAt?$AAl?$AAo?$AAa?$AAd?$AAI?$AAn?$AAd?$AAu?$AAs@ + 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_: + +; 6354 : 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 + +; 6355 : } else { + + 0084a eb 44 jmp SHORT $LN56@stbi__tga_ +$LN55@stbi__tga_: + +; 6356 : // read in the data raw +; 6357 : 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_ + +; 6358 : 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 + +; 6359 : } + + 0088e eb c8 jmp SHORT $LN14@stbi__tga_ +$LN15@stbi__tga_: +$LN56@stbi__tga_: +$LN53@stbi__tga_: + +; 6360 : } +; 6361 : // clear the reading flag for the next pixel +; 6362 : 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_: + +; 6363 : } // end of reading a pixel +; 6364 : +; 6365 : // copy data +; 6366 : 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_ + +; 6367 : 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_: + +; 6368 : +; 6369 : // in case we're in RLE mode, keep counting down +; 6370 : --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 + +; 6371 : } + + 00901 e9 92 fd ff ff jmp $LN8@stbi__tga_ +$LN9@stbi__tga_: + +; 6372 : // do I need to invert the image? +; 6373 : 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_ + +; 6374 : 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_ + +; 6375 : 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 + +; 6376 : 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 + +; 6377 : 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_ + +; 6378 : 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 + +; 6379 : 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 + +; 6380 : 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 + +; 6381 : ++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 + +; 6382 : ++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 + +; 6383 : } + + 00a18 e9 75 ff ff ff jmp $LN23@stbi__tga_ +$LN24@stbi__tga_: + +; 6384 : } + + 00a1d e9 fd fe ff ff jmp $LN20@stbi__tga_ +$LN21@stbi__tga_: +$LN57@stbi__tga_: + +; 6385 : } +; 6386 : // clear my palette, if I had one +; 6387 : 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_ + +; 6388 : 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_: + +; 6389 : } +; 6390 : } +; 6391 : +; 6392 : // swap RGB - if the source data was RGB16, it already is in the right order +; 6393 : 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_ + +; 6394 : 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 + +; 6395 : 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_ + +; 6396 : 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 + +; 6397 : 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 + +; 6398 : 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 + +; 6399 : 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 + +; 6400 : } + + 00b07 e9 62 ff ff ff jmp $LN26@stbi__tga_ +$LN27@stbi__tga_: +$LN59@stbi__tga_: + +; 6401 : } +; 6402 : +; 6403 : // convert to target component count +; 6404 : 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_ + +; 6405 : 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_: + +; 6406 : stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); +; 6407 : +; 6408 : // the things I do to get rid of an error message, and yet keep +; 6409 : // Microsoft's C compilers happy... [8^( +; 6410 : 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 + +; 6411 : STBI_NOTUSED(tga_palette_start); +; 6412 : // OK, done +; 6413 : return tga_data; + + 00b8e 48 8b 85 e8 01 + 00 00 mov rax, QWORD PTR tga_data$[rbp] +$LN1@stbi__tga_: + +; 6414 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__tga_test +_TEXT SEGMENT +res$ = 4 +sz$ = 36 +tga_color_type$ = 68 +s$ = 320 +stbi__tga_test PROC ; COMDAT + +; 6156 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 6157 : int res = 0; + + 00020 c7 45 04 00 00 + 00 00 mov DWORD PTR res$[rbp], 0 + +; 6158 : int sz, tga_color_type; +; 6159 : 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 + +; 6160 : 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 + +; 6161 : 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_ + +; 6162 : goto errorEnd; // only RGB or indexed allowed + + 0004c e9 26 01 00 00 jmp $errorEnd$13 +$LN2@stbi__tga_: + +; 6163 : 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 + +; 6164 : 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_ + +; 6165 : 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_ + +; 6166 : goto errorEnd; // colortype 1 demands image type 1 or 9 + + 00075 e9 fd 00 00 00 jmp $errorEnd$13 +$LN5@stbi__tga_: + +; 6167 : stbi__skip(s, + + 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 + +; 6168 : 4); // skip index of first colormap entry and number of entries +; 6169 : 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 + +; 6170 : 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_ + +; 6171 : goto errorEnd; + + 000bc e9 b6 00 00 00 jmp $errorEnd$13 +$LN6@stbi__tga_: + +; 6172 : 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 + +; 6173 : } else { // "normal" image w/o colormap + + 000d3 eb 2f jmp SHORT $LN4@stbi__tga_ +$LN3@stbi__tga_: + +; 6174 : 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_ + +; 6175 : goto errorEnd; // only RGB or grey allowed, +/- RLE + + 000ed e9 85 00 00 00 jmp $errorEnd$13 +$LN7@stbi__tga_: + +; 6176 : stbi__skip(s, + + 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_: + +; 6177 : 9); // skip colormap specification and image x/y origin +; 6178 : } +; 6179 : 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_ + +; 6180 : goto errorEnd; // test width + + 00115 eb 60 jmp SHORT $errorEnd$13 +$LN8@stbi__tga_: + +; 6181 : 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_ + +; 6182 : goto errorEnd; // test height + + 00128 eb 4d jmp SHORT $errorEnd$13 +$LN9@stbi__tga_: + +; 6183 : 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 + +; 6184 : 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_ + +; 6185 : goto errorEnd; // for colormapped images, bpp is size of an index + + 0014e eb 27 jmp SHORT $errorEnd$13 +$LN10@stbi__tga_: + +; 6186 : 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_ + +; 6187 : goto errorEnd; + + 0016e eb 07 jmp SHORT $errorEnd$13 +$LN11@stbi__tga_: + +; 6188 : +; 6189 : 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: + +; 6190 : +; 6191 : errorEnd: +; 6192 : 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 + +; 6193 : return res; + + 00184 8b 45 04 mov eax, DWORD PTR res$[rbp] + +; 6194 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 7789 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 7790 : void *p; +; 7791 : stbi__bmp_data info; +; 7792 : +; 7793 : info.all_a = 255; + + 00059 c7 45 44 ff 00 + 00 00 mov DWORD PTR info$[rbp+28], 255 ; 000000ffH + +; 7794 : 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 + +; 7795 : if (p == NULL) { + + 00074 48 83 7d 08 00 cmp QWORD PTR p$[rbp], 0 + 00079 75 14 jne SHORT $LN2@stbi__bmp_ + +; 7796 : 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 + +; 7797 : return 0; + + 00088 33 c0 xor eax, eax + 0008a e9 91 00 00 00 jmp $LN1@stbi__bmp_ +$LN2@stbi__bmp_: + +; 7798 : } +; 7799 : 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_ + +; 7800 : *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_: + +; 7801 : 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_ + +; 7802 : *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_: + +; 7803 : 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_ + +; 7804 : 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_ + +; 7805 : *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_: + +; 7806 : else +; 7807 : *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_: + +; 7808 : } +; 7809 : return 1; + + 0011b b8 01 00 00 00 mov eax, 1 +$LN1@stbi__bmp_: + +; 7810 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5804 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 5805 : stbi_uc *out; +; 5806 : 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 + +; 5807 : stbi_uc pal[256][4]; +; 5808 : int psize = 0, i, j, width; + + 00078 c7 85 e4 04 00 + 00 00 00 00 00 mov DWORD PTR psize$[rbp], 0 + +; 5809 : int flip_vertically, pad, target; +; 5810 : stbi__bmp_data info; +; 5811 : STBI_NOTUSED(ri); +; 5812 : +; 5813 : info.all_a = 255; + + 00082 c7 85 e4 05 00 + 00 ff 00 00 00 mov DWORD PTR info$[rbp+28], 255 ; 000000ffH + +; 5814 : 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_ + +; 5815 : 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_: + +; 5816 : +; 5817 : 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 + +; 5818 : 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 + +; 5819 : +; 5820 : 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_ + +; 5821 : 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_: + +; 5822 : 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_ + +; 5823 : 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_: + +; 5824 : +; 5825 : 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 + +; 5826 : 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 + +; 5827 : 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 + +; 5828 : 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 + +; 5829 : 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 + +; 5830 : +; 5831 : 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_ + +; 5832 : 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_ + +; 5833 : 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_: + +; 5834 : } else { + + 001e0 eb 28 jmp SHORT $LN39@stbi__bmp_ +$LN38@stbi__bmp_: + +; 5835 : 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_ + +; 5836 : 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_: + +; 5837 : } +; 5838 : 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_ + +; 5839 : // accept some number of extra bytes after the header, but if the offset points either to before +; 5840 : // the header ends or implies a large amount of extra data, reject the file as malformed +; 5841 : 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 + +; 5842 : s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); +; 5843 : 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 + +; 5844 : 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 + +; 5845 : 256 * +; 5846 : 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. +; 5847 : 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_: + +; 5848 : 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_: + +; 5849 : } +; 5850 : // we established that bytes_read_so_far is positive and sensible. +; 5851 : // the first half of this test rejects offsets that are either too small positives, or +; 5852 : // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn +; 5853 : // ensures the number computed in the second half of the test can't overflow. +; 5854 : 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_: + +; 5855 : info.offset - bytes_read_so_far > extra_data_limit) { +; 5856 : 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_ + +; 5857 : } else { + + 00302 eb 1f jmp SHORT $LN46@stbi__bmp_ +$LN45@stbi__bmp_: + +; 5858 : 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_: + +; 5859 : } +; 5860 : } +; 5861 : +; 5862 : 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_ + +; 5863 : 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_: + +; 5864 : else +; 5865 : 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_: + +; 5866 : 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_ + +; 5867 : 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_: + +; 5868 : else +; 5869 : 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_: + +; 5870 : +; 5871 : // sanity-check size +; 5872 : 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_ + +; 5873 : 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_: + +; 5874 : +; 5875 : 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 + +; 5876 : if (!out) + + 00427 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0 + 0042c 75 34 jne SHORT $LN53@stbi__bmp_ + +; 5877 : 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_: + +; 5878 : 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_ + +; 5879 : int z = 0; + + 0046f c7 85 64 06 00 + 00 00 00 00 00 mov DWORD PTR z$8[rbp], 0 + +; 5880 : 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_: + +; 5881 : 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 + +; 5882 : 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_: + +; 5883 : } +; 5884 : 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_ + +; 5885 : 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 + +; 5886 : 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 + +; 5887 : 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 + +; 5888 : 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_ + +; 5889 : 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_: + +; 5890 : 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 + +; 5891 : } + + 005a0 e9 34 ff ff ff jmp $LN2@stbi__bmp_ +$LN3@stbi__bmp_: + +; 5892 : 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 + +; 5893 : psize * (info.hsz == 12 ? 3 : 4)); +; 5894 : 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_ + +; 5895 : 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_: + +; 5896 : 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_ + +; 5897 : 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_: + +; 5898 : 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_ + +; 5899 : 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_: + +; 5900 : else { +; 5901 : 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 + +; 5902 : 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_: + +; 5903 : } +; 5904 : 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 + +; 5905 : 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_ + +; 5906 : 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_ + +; 5907 : 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 + +; 5908 : 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_ + +; 5909 : 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 + +; 5910 : 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 + +; 5911 : 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 + +; 5912 : 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 + +; 5913 : 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_ + +; 5914 : 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_: + +; 5915 : 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_ + +; 5916 : break; + + 00829 eb 3b jmp SHORT $LN9@stbi__bmp_ +$LN68@stbi__bmp_: + +; 5917 : 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_ + +; 5918 : bit_offset = 7; + + 00842 c7 85 84 06 00 + 00 07 00 00 00 mov DWORD PTR bit_offset$9[rbp], 7 + +; 5919 : 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_: + +; 5920 : } +; 5921 : } + + 00861 e9 a2 fe ff ff jmp $LN8@stbi__bmp_ +$LN9@stbi__bmp_: + +; 5922 : 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 + +; 5923 : } + + 00879 e9 3b fe ff ff jmp $LN5@stbi__bmp_ +$LN6@stbi__bmp_: + +; 5924 : } else { + + 0087e e9 b5 02 00 00 jmp $LN66@stbi__bmp_ +$LN65@stbi__bmp_: + +; 5925 : 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_ + +; 5926 : 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_ + +; 5927 : 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 + +; 5928 : 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_ + +; 5929 : 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 + +; 5930 : 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_: + +; 5931 : } +; 5932 : 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 + +; 5933 : 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 + +; 5934 : 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 + +; 5935 : 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_ + +; 5936 : 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_: + +; 5937 : 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_ + +; 5938 : break; + + 00a0d e9 0e 01 00 00 jmp $LN15@stbi__bmp_ +$LN72@stbi__bmp_: + +; 5939 : 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 + +; 5940 : 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 + +; 5941 : 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 + +; 5942 : 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 + +; 5943 : 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_ + +; 5944 : 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_: + +; 5945 : } + + 00b1b e9 9f fd ff ff jmp $LN14@stbi__bmp_ +$LN15@stbi__bmp_: + +; 5946 : 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 + +; 5947 : } + + 00b33 e9 57 fd ff ff jmp $LN11@stbi__bmp_ +$LN12@stbi__bmp_: +$LN66@stbi__bmp_: + +; 5948 : } +; 5949 : } else { + + 00b38 e9 af 05 00 00 jmp $LN55@stbi__bmp_ +$LN54@stbi__bmp_: + +; 5950 : 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 + +; 5951 : 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 + +; 5952 : int z = 0; + + 00b8d c7 85 24 08 00 + 00 00 00 00 00 mov DWORD PTR z$22[rbp], 0 + +; 5953 : int easy = 0; + + 00b97 c7 85 44 08 00 + 00 00 00 00 00 mov DWORD PTR easy$23[rbp], 0 + +; 5954 : 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 + +; 5955 : 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_ + +; 5956 : 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_: + +; 5957 : 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_ + +; 5958 : 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_: + +; 5959 : else /* bpp = 32 and pad = 0 */ +; 5960 : 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_: + +; 5961 : 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 + +; 5962 : 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_ + +; 5963 : 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_: + +; 5964 : } 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_ + +; 5965 : 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_ + +; 5966 : 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_: + +; 5967 : } +; 5968 : 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_ + +; 5969 : 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_: + +; 5970 : 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 + +; 5971 : 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_: + +; 5972 : } +; 5973 : // right shift amt to put high bit in position #7 +; 5974 : 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 + +; 5975 : 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 + +; 5976 : 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 + +; 5977 : 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 + +; 5978 : 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 + +; 5979 : 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 + +; 5980 : 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 + +; 5981 : 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 + +; 5982 : 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_: + +; 5983 : 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 + +; 5984 : 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_: + +; 5985 : } +; 5986 : } +; 5987 : 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_ + +; 5988 : 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_ + +; 5989 : 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_ + +; 5990 : unsigned char a; +; 5991 : 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 + +; 5992 : 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 + +; 5993 : 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 + +; 5994 : 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 + +; 5995 : 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 + +; 5996 : 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 + +; 5997 : 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_ + +; 5998 : 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_: + +; 5999 : } + + 00ef8 e9 f6 fe ff ff jmp $LN20@stbi__bmp_ +$LN21@stbi__bmp_: + +; 6000 : } else { + + 00efd e9 d2 01 00 00 jmp $LN88@stbi__bmp_ +$LN87@stbi__bmp_: + +; 6001 : 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 + +; 6002 : 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_ + +; 6003 : 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 + +; 6004 : (stbi__uint32)stbi__get16le(s) : +; 6005 : stbi__get32le(s)); +; 6006 : unsigned int a; +; 6007 : 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 + +; 6008 : stbi__shiftsigned(v & mr, rshift, rcount)); +; 6009 : 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 + +; 6010 : stbi__shiftsigned(v & mg, gshift, gcount)); +; 6011 : 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 + +; 6012 : stbi__shiftsigned(v & mb, bshift, bcount)); +; 6013 : 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 + +; 6014 : 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 + +; 6015 : 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_ + +; 6016 : 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_: + +; 6017 : } + + 010cf e9 46 fe ff ff jmp $LN23@stbi__bmp_ +$LN24@stbi__bmp_: +$LN88@stbi__bmp_: + +; 6018 : } +; 6019 : 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 + +; 6020 : } + + 010e7 e9 ca fc ff ff jmp $LN17@stbi__bmp_ +$LN18@stbi__bmp_: +$LN55@stbi__bmp_: + +; 6021 : } +; 6022 : +; 6023 : // if alpha channel is all 0s, replace with all 255s +; 6024 : 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_ + +; 6025 : 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_ + +; 6026 : 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_: + +; 6027 : +; 6028 : 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_ + +; 6029 : stbi_uc t; +; 6030 : 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_ + +; 6031 : 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 + +; 6032 : 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 + +; 6033 : 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_ + +; 6034 : 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 + +; 6035 : 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 + +; 6036 : 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 + +; 6037 : } + + 0126f eb 84 jmp SHORT $LN32@stbi__bmp_ +$LN33@stbi__bmp_: + +; 6038 : } + + 01271 e9 eb fe ff ff jmp $LN29@stbi__bmp_ +$LN30@stbi__bmp_: +$LN92@stbi__bmp_: + +; 6039 : } +; 6040 : +; 6041 : 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_ + +; 6042 : 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 + +; 6043 : if (out == NULL) + + 012bf 48 83 7d 08 00 cmp QWORD PTR out$[rbp], 0 + 012c4 75 06 jne SHORT $LN94@stbi__bmp_ + +; 6044 : 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_: + +; 6045 : } +; 6046 : +; 6047 : *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 + +; 6048 : *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 + +; 6049 : 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_ + +; 6050 : *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_: + +; 6051 : return out; + + 0130e 48 8b 45 08 mov rax, QWORD PTR out$[rbp] +$LN1@stbi__bmp_: + +; 6052 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__bmp_test +_TEXT SEGMENT +r$ = 4 +s$ = 256 +stbi__bmp_test PROC ; COMDAT + +; 5603 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 5604 : 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 + +; 5605 : 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 + +; 5606 : return r; + + 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 5607 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__png_is16 +_TEXT SEGMENT +p$ = 8 +__$ArrayPad$ = 248 +s$ = 288 +stbi__png_is16 PROC ; COMDAT + +; 5569 : { + + 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:__079B8C84_stb_image@c + 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00049 90 npad 1 + +; 5570 : stbi__png p; +; 5571 : 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 + +; 5572 : 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_ + +; 5573 : return 0; + + 0006a 33 c0 xor eax, eax + 0006c eb 19 jmp SHORT $LN1@stbi__png_ +$LN2@stbi__png_: + +; 5574 : if (p.depth != 16) { + + 0006e 83 7d 28 10 cmp DWORD PTR p$[rbp+32], 16 + 00072 74 0e je SHORT $LN3@stbi__png_ + +; 5575 : 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 + +; 5576 : return 0; + + 0007e 33 c0 xor eax, eax + 00080 eb 05 jmp SHORT $LN1@stbi__png_ +$LN3@stbi__png_: + +; 5577 : } +; 5578 : return 1; + + 00082 b8 01 00 00 00 mov eax, 1 +$LN1@stbi__png_: + +; 5579 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__png_info +_TEXT SEGMENT +p$ = 8 +__$ArrayPad$ = 248 +s$ = 288 +x$ = 296 +y$ = 304 +comp$ = 312 +stbi__png_info PROC ; COMDAT + +; 5562 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 5563 : stbi__png p; +; 5564 : 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 + +; 5565 : 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 + +; 5566 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5532 : { + + 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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 5533 : stbi__png p; +; 5534 : 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 + +; 5535 : 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 + +; 5536 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__png_test +_TEXT SEGMENT +r$ = 4 +s$ = 256 +stbi__png_test PROC ; COMDAT + +; 5539 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 5540 : int r; +; 5541 : 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 + +; 5542 : 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 + +; 5543 : return r; + + 0003c 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 5544 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_info +_TEXT SEGMENT +result$ = 4 +j$ = 40 +s$ = 288 +x$ = 296 +y$ = 304 +comp$ = 312 +stbi__jpeg_info PROC ; COMDAT + +; 4053 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 4054 : int result; +; 4055 : 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 + +; 4056 : if (!j) + + 0003d 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0 + 00042 75 0e jne SHORT $LN2@stbi__jpeg + +; 4057 : 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: + +; 4058 : 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 + +; 4059 : 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 + +; 4060 : 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 + +; 4061 : 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 + +; 4062 : return result; + + 0009e 8b 45 04 mov eax, DWORD PTR result$[rbp] +$LN1@stbi__jpeg: + +; 4063 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 4008 : { + + 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 4009 : unsigned char *result; +; 4010 : 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 + +; 4011 : if (!j) + + 0003d 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0 + 00042 75 31 jne SHORT $LN2@stbi__jpeg + +; 4012 : 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: + +; 4013 : 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 + +; 4014 : STBI_NOTUSED(ri); +; 4015 : 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 + +; 4016 : 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 + +; 4017 : 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 + +; 4018 : 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 + +; 4019 : return result; + + 000d6 48 8b 45 08 mov rax, QWORD PTR result$[rbp] +$LN1@stbi__jpeg: + +; 4020 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__jpeg_test +_TEXT SEGMENT +r$ = 4 +j$ = 40 +s$ = 288 +stbi__jpeg_test PROC ; COMDAT + +; 4023 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 4024 : int r; +; 4025 : 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 + +; 4026 : if (!j) + + 0002e 48 83 7d 28 00 cmp QWORD PTR j$[rbp], 0 + 00033 75 0e jne SHORT $LN2@stbi__jpeg + +; 4027 : 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: + +; 4028 : 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 + +; 4029 : 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 + +; 4030 : 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 + +; 4031 : 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 + +; 4032 : 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 + +; 4033 : 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 + +; 4034 : return r; + + 00096 8b 45 04 mov eax, DWORD PTR r$[rbp] +$LN1@stbi__jpeg: + +; 4035 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__rewind +_TEXT SEGMENT +s$ = 224 +stbi__rewind PROC ; COMDAT + +; 339 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 340 : // conceptually rewind SHOULD rewind to the beginning of the stream, +; 341 : // but we just rewind to the beginning of the initial buffer, because +; 342 : // we only use it after doing 'test', which only ever looks at at most 92 bytes +; 343 : 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 + +; 344 : 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 + +; 345 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__start_file +_TEXT SEGMENT +s$ = 224 +f$ = 232 +stbi__start_file PROC ; COMDAT + +; 330 : { + + 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:__079B8C84_stb_image@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 331 : 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 + +; 332 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__stdio_eof +_TEXT SEGMENT +tv70 = 192 +user$ = 240 +stbi__stdio_eof PROC ; COMDAT + +; 319 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 320 : 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] + +; 321 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__stdio_skip +_TEXT SEGMENT +ch$ = 4 +user$ = 256 +n$ = 264 +stbi__stdio_skip PROC ; COMDAT + +; 309 : { + + 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:__079B8C84_stb_image@c + 0001e e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00023 90 npad 1 + +; 310 : int ch; +; 311 : 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 + +; 312 : 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 + +; 313 : if (ch != EOF) { + + 0004e 83 7d 04 ff cmp DWORD PTR ch$[rbp], -1 + 00052 74 11 je SHORT $LN2@stbi__stdi + +; 314 : 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: + +; 315 : } +; 316 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__stdio_read +_TEXT SEGMENT +user$ = 224 +data$ = 232 +size$ = 240 +stbi__stdio_read PROC ; COMDAT + +; 304 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 305 : 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 + +; 306 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__start_callbacks +_TEXT SEGMENT +tv72 = 192 +s$ = 240 +c$ = 248 +user$ = 256 +stbi__start_callbacks PROC ; COMDAT + +; 290 : { + + 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:__079B8C84_stb_image@c + 00025 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002a 90 npad 1 + +; 291 : 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 + +; 292 : 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 + +; 293 : 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 + +; 294 : 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 + +; 295 : 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 + +; 296 : 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 + +; 297 : 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 + +; 298 : 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 + +; 299 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__start_mem +_TEXT SEGMENT +tv72 = 192 +s$ = 240 +buffer$ = 248 +len$ = 256 +stbi__start_mem PROC ; COMDAT + +; 280 : { + + 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:__079B8C84_stb_image@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 281 : 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 + +; 282 : 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 + +; 283 : 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 + +; 284 : 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 + +; 285 : 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 + +; 286 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__refill_buffer +_TEXT SEGMENT +n$ = 4 +s$ = 256 +stbi__refill_buffer PROC ; COMDAT + +; 1125 : { + + 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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1126 : 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 + +; 1127 : 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 + +; 1128 : if (n == 0) { + + 0008a 83 7d 04 00 cmp DWORD PTR n$[rbp], 0 + 0008e 75 53 jne SHORT $LN2@stbi__refi + +; 1129 : // at end of file, treat same as if from memory, but need to handle case +; 1130 : // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file +; 1131 : 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 + +; 1132 : 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 + +; 1133 : 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 + +; 1134 : *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 + +; 1135 : } else { + + 000e1 eb 37 jmp SHORT $LN3@stbi__refi +$LN2@stbi__refi: + +; 1136 : 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 + +; 1137 : 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: + +; 1138 : } +; 1139 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__sse2_available +_TEXT SEGMENT +info3$ = 4 +tv68 = 212 +stbi__sse2_available PROC ; COMDAT + +; 210 : { + + 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:__079B8C84_stb_image@c + 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001b 90 npad 1 + +; 211 : int info3 = stbi__cpuid3(); + + 0001c e8 00 00 00 00 call stbi__cpuid3 + 00021 89 45 04 mov DWORD PTR info3$[rbp], eax + +; 212 : 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] + +; 213 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi__cpuid3 +_TEXT SEGMENT +info$ = 8 +__$ArrayPad$ = 232 +stbi__cpuid3 PROC ; COMDAT + +; 188 : { + + 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:__079B8C84_stb_image@c + 00039 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0003e 90 npad 1 + +; 189 : int info[4]; +; 190 : __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 + +; 191 : 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] + +; 192 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_zlib_decode_noheader_buffer +_TEXT SEGMENT +a$ = 16 +__$ArrayPad$ = 5656 +obuffer$ = 5696 +olen$ = 5704 +ibuffer$ = 5712 +ilen$ = 5720 +stbi_zlib_decode_noheader_buffer PROC ; COMDAT + +; 4615 : { + +$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 58 16 00 00 mov eax, 5720 ; 00001658H + 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 0a 04 00 00 mov ecx, 1034 ; 0000040aH + 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00036 f3 ab rep stosd + 00038 48 8b 8c 24 78 + 16 00 00 mov rcx, QWORD PTR [rsp+5752] + 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 18 16 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 00051 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0005d 90 npad 1 + +; 4616 : stbi__zbuf a; +; 4617 : a.zbuffer = (stbi_uc *)ibuffer; + + 0005e 48 8b 85 50 16 + 00 00 mov rax, QWORD PTR ibuffer$[rbp] + 00065 48 89 45 10 mov QWORD PTR a$[rbp], rax + +; 4618 : a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + + 00069 48 63 85 58 16 + 00 00 movsxd rax, DWORD PTR ilen$[rbp] + 00070 48 8b 8d 50 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 + +; 4619 : 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 48 16 + 00 00 mov r8d, DWORD PTR olen$[rbp] + 00093 48 8b 95 40 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_ + +; 4620 : return (int)(a.zout - a.zout_start); + + 000a7 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000ab 48 8b 4d 28 mov rcx, QWORD PTR a$[rbp+24] + 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_: + +; 4621 : else +; 4622 : return -1; + + 000b9 b8 ff ff ff ff mov eax, -1 +$LN3@stbi_zlib_: +$LN1@stbi_zlib_: + +; 4623 : } + + 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 18 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 28 16 + 00 00 lea rsp, QWORD PTR [rbp+5672] + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_zlib_decode_noheader_malloc +_TEXT SEGMENT +a$ = 16 +p$ = 4136 +__$ArrayPad$ = 5688 +buffer$ = 5728 +len$ = 5736 +outlen$ = 5744 +stbi_zlib_decode_noheader_malloc PROC ; COMDAT + +; 4597 : { + +$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 78 16 00 00 mov eax, 5752 ; 00001678H + 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 12 04 00 00 mov ecx, 1042 ; 00000412H + 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00031 f3 ab rep stosd + 00033 48 8b 8c 24 98 + 16 00 00 mov rcx, QWORD PTR [rsp+5784] + 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 38 16 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 0004c 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 4598 : stbi__zbuf a; +; 4599 : 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 28 10 + 00 00 mov QWORD PTR p$[rbp], rax + +; 4600 : if (p == NULL) + + 0006a 48 83 bd 28 10 + 00 00 00 cmp QWORD PTR p$[rbp], 0 + 00072 75 07 jne SHORT $LN2@stbi_zlib_ + +; 4601 : return NULL; + + 00074 33 c0 xor eax, eax + 00076 e9 81 00 00 00 jmp $LN1@stbi_zlib_ +$LN2@stbi_zlib_: + +; 4602 : a.zbuffer = (stbi_uc *)buffer; + + 0007b 48 8b 85 60 16 + 00 00 mov rax, QWORD PTR buffer$[rbp] + 00082 48 89 45 10 mov QWORD PTR a$[rbp], rax + +; 4603 : a.zbuffer_end = (stbi_uc *)buffer + len; + + 00086 48 63 85 68 16 + 00 00 movsxd rax, DWORD PTR len$[rbp] + 0008d 48 8b 8d 60 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 + +; 4604 : 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 28 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_ + +; 4605 : if (outlen) + + 000c6 48 83 bd 70 16 + 00 00 00 cmp QWORD PTR outlen$[rbp], 0 + 000ce 74 17 je SHORT $LN5@stbi_zlib_ + +; 4606 : *outlen = (int)(a.zout - a.zout_start); + + 000d0 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000d4 48 8b 4d 28 mov rcx, QWORD PTR a$[rbp+24] + 000d8 48 2b c8 sub rcx, rax + 000db 48 8b c1 mov rax, rcx + 000de 48 8b 8d 70 16 + 00 00 mov rcx, QWORD PTR outlen$[rbp] + 000e5 89 01 mov DWORD PTR [rcx], eax +$LN5@stbi_zlib_: + +; 4607 : return a.zout_start; + + 000e7 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000eb eb 0f jmp SHORT $LN1@stbi_zlib_ + +; 4608 : } else { + + 000ed eb 0d jmp SHORT $LN4@stbi_zlib_ +$LN3@stbi_zlib_: + +; 4609 : STBI_FREE(a.zout_start); + + 000ef 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32] + 000f3 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 000f9 90 npad 1 + +; 4610 : return NULL; + + 000fa 33 c0 xor eax, eax +$LN4@stbi_zlib_: +$LN1@stbi_zlib_: + +; 4611 : } +; 4612 : } + + 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 38 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 48 16 + 00 00 lea rsp, QWORD PTR [rbp+5704] + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_zlib_decode_buffer +_TEXT SEGMENT +a$ = 16 +__$ArrayPad$ = 5656 +obuffer$ = 5696 +olen$ = 5704 +ibuffer$ = 5712 +ilen$ = 5720 +stbi_zlib_decode_buffer PROC ; COMDAT + +; 4586 : { + +$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 58 16 00 00 mov eax, 5720 ; 00001658H + 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 0a 04 00 00 mov ecx, 1034 ; 0000040aH + 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00036 f3 ab rep stosd + 00038 48 8b 8c 24 78 + 16 00 00 mov rcx, QWORD PTR [rsp+5752] + 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 18 16 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 00051 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0005d 90 npad 1 + +; 4587 : stbi__zbuf a; +; 4588 : a.zbuffer = (stbi_uc *)ibuffer; + + 0005e 48 8b 85 50 16 + 00 00 mov rax, QWORD PTR ibuffer$[rbp] + 00065 48 89 45 10 mov QWORD PTR a$[rbp], rax + +; 4589 : a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + + 00069 48 63 85 58 16 + 00 00 movsxd rax, DWORD PTR ilen$[rbp] + 00070 48 8b 8d 50 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 + +; 4590 : 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 48 16 + 00 00 mov r8d, DWORD PTR olen$[rbp] + 00093 48 8b 95 40 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_ + +; 4591 : return (int)(a.zout - a.zout_start); + + 000a7 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000ab 48 8b 4d 28 mov rcx, QWORD PTR a$[rbp+24] + 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_: + +; 4592 : else +; 4593 : return -1; + + 000b9 b8 ff ff ff ff mov eax, -1 +$LN3@stbi_zlib_: +$LN1@stbi_zlib_: + +; 4594 : } + + 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 18 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 28 16 + 00 00 lea rsp, QWORD PTR [rbp+5672] + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_zlib_decode_malloc +_TEXT SEGMENT +buffer$ = 224 +len$ = 232 +outlen$ = 240 +stbi_zlib_decode_malloc PROC ; COMDAT + +; 4561 : { + +$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:__079B8C84_stb_image@c + 00023 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00028 90 npad 1 + +; 4562 : 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 + +; 4563 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_zlib_decode_malloc_guesssize_headerflag +_TEXT SEGMENT +a$ = 16 +p$ = 4136 +__$ArrayPad$ = 5688 +buffer$ = 5728 +len$ = 5736 +initial_size$ = 5744 +outlen$ = 5752 +parse_header$ = 5760 +stbi_zlib_decode_malloc_guesssize_headerflag PROC ; COMDAT + +; 4568 : { + +$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 78 16 00 00 mov eax, 5752 ; 00001678H + 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 12 04 00 00 mov ecx, 1042 ; 00000412H + 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00036 f3 ab rep stosd + 00038 48 8b 8c 24 98 + 16 00 00 mov rcx, QWORD PTR [rsp+5784] + 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 38 16 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 00051 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0005d 90 npad 1 + +; 4569 : stbi__zbuf a; +; 4570 : char *p = (char *)stbi__malloc(initial_size); + + 0005e 48 63 85 70 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 28 10 + 00 00 mov QWORD PTR p$[rbp], rax + +; 4571 : if (p == NULL) + + 00074 48 83 bd 28 10 + 00 00 00 cmp QWORD PTR p$[rbp], 0 + 0007c 75 07 jne SHORT $LN2@stbi_zlib_ + +; 4572 : return NULL; + + 0007e 33 c0 xor eax, eax + 00080 e9 84 00 00 00 jmp $LN1@stbi_zlib_ +$LN2@stbi_zlib_: + +; 4573 : a.zbuffer = (stbi_uc *)buffer; + + 00085 48 8b 85 60 16 + 00 00 mov rax, QWORD PTR buffer$[rbp] + 0008c 48 89 45 10 mov QWORD PTR a$[rbp], rax + +; 4574 : a.zbuffer_end = (stbi_uc *)buffer + len; + + 00090 48 63 85 68 16 + 00 00 movsxd rax, DWORD PTR len$[rbp] + 00097 48 8b 8d 60 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 + +; 4575 : if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + + 000a8 8b 85 80 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 70 16 + 00 00 mov r8d, DWORD PTR initial_size$[rbp] + 000bf 48 8b 95 28 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_ + +; 4576 : if (outlen) + + 000d3 48 83 bd 78 16 + 00 00 00 cmp QWORD PTR outlen$[rbp], 0 + 000db 74 17 je SHORT $LN5@stbi_zlib_ + +; 4577 : *outlen = (int)(a.zout - a.zout_start); + + 000dd 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000e1 48 8b 4d 28 mov rcx, QWORD PTR a$[rbp+24] + 000e5 48 2b c8 sub rcx, rax + 000e8 48 8b c1 mov rax, rcx + 000eb 48 8b 8d 78 16 + 00 00 mov rcx, QWORD PTR outlen$[rbp] + 000f2 89 01 mov DWORD PTR [rcx], eax +$LN5@stbi_zlib_: + +; 4578 : return a.zout_start; + + 000f4 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000f8 eb 0f jmp SHORT $LN1@stbi_zlib_ + +; 4579 : } else { + + 000fa eb 0d jmp SHORT $LN4@stbi_zlib_ +$LN3@stbi_zlib_: + +; 4580 : STBI_FREE(a.zout_start); + + 000fc 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32] + 00100 ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 00106 90 npad 1 + +; 4581 : return NULL; + + 00107 33 c0 xor eax, eax +$LN4@stbi_zlib_: +$LN1@stbi_zlib_: + +; 4582 : } +; 4583 : } + + 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 38 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 48 16 + 00 00 lea rsp, QWORD PTR [rbp+5704] + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_zlib_decode_malloc_guesssize +_TEXT SEGMENT +a$ = 16 +p$ = 4136 +__$ArrayPad$ = 5688 +buffer$ = 5728 +len$ = 5736 +initial_size$ = 5744 +outlen$ = 5752 +stbi_zlib_decode_malloc_guesssize PROC ; COMDAT + +; 4543 : { + +$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 78 16 00 00 mov eax, 5752 ; 00001678H + 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 12 04 00 00 mov ecx, 1042 ; 00000412H + 00031 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 00036 f3 ab rep stosd + 00038 48 8b 8c 24 98 + 16 00 00 mov rcx, QWORD PTR [rsp+5784] + 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 38 16 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 00051 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__079B8C84_stb_image@c + 00058 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0005d 90 npad 1 + +; 4544 : stbi__zbuf a; +; 4545 : char *p = (char *)stbi__malloc(initial_size); + + 0005e 48 63 85 70 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 28 10 + 00 00 mov QWORD PTR p$[rbp], rax + +; 4546 : if (p == NULL) + + 00074 48 83 bd 28 10 + 00 00 00 cmp QWORD PTR p$[rbp], 0 + 0007c 75 07 jne SHORT $LN2@stbi_zlib_ + +; 4547 : return NULL; + + 0007e 33 c0 xor eax, eax + 00080 e9 82 00 00 00 jmp $LN1@stbi_zlib_ +$LN2@stbi_zlib_: + +; 4548 : a.zbuffer = (stbi_uc *)buffer; + + 00085 48 8b 85 60 16 + 00 00 mov rax, QWORD PTR buffer$[rbp] + 0008c 48 89 45 10 mov QWORD PTR a$[rbp], rax + +; 4549 : a.zbuffer_end = (stbi_uc *)buffer + len; + + 00090 48 63 85 68 16 + 00 00 movsxd rax, DWORD PTR len$[rbp] + 00097 48 8b 8d 60 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 + +; 4550 : 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 70 16 + 00 00 mov r8d, DWORD PTR initial_size$[rbp] + 000bd 48 8b 95 28 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_ + +; 4551 : if (outlen) + + 000d1 48 83 bd 78 16 + 00 00 00 cmp QWORD PTR outlen$[rbp], 0 + 000d9 74 17 je SHORT $LN5@stbi_zlib_ + +; 4552 : *outlen = (int)(a.zout - a.zout_start); + + 000db 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000df 48 8b 4d 28 mov rcx, QWORD PTR a$[rbp+24] + 000e3 48 2b c8 sub rcx, rax + 000e6 48 8b c1 mov rax, rcx + 000e9 48 8b 8d 78 16 + 00 00 mov rcx, QWORD PTR outlen$[rbp] + 000f0 89 01 mov DWORD PTR [rcx], eax +$LN5@stbi_zlib_: + +; 4553 : return a.zout_start; + + 000f2 48 8b 45 30 mov rax, QWORD PTR a$[rbp+32] + 000f6 eb 0f jmp SHORT $LN1@stbi_zlib_ + +; 4554 : } else { + + 000f8 eb 0d jmp SHORT $LN4@stbi_zlib_ +$LN3@stbi_zlib_: + +; 4555 : STBI_FREE(a.zout_start); + + 000fa 48 8b 4d 30 mov rcx, QWORD PTR a$[rbp+32] + 000fe ff 15 00 00 00 + 00 call QWORD PTR __imp_free + 00104 90 npad 1 + +; 4556 : return NULL; + + 00105 33 c0 xor eax, eax +$LN4@stbi_zlib_: +$LN1@stbi_zlib_: + +; 4557 : } +; 4558 : } + + 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 38 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 48 16 + 00 00 lea rsp, QWORD PTR [rbp+5704] + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 599 : { + +$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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 600 : 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 + +; 601 : 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 + +; 602 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 5176 : { + +$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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 5177 : 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 + +; 5178 : 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 + +; 5179 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_set_unpremultiply_on_load_thread +_TEXT SEGMENT +flag_true_if_should_unpremultiply$ = 224 +stbi_set_unpremultiply_on_load_thread PROC ; COMDAT + +; 5170 : { + +$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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 5171 : 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 + +; 5172 : 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 + +; 5173 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_set_flip_vertically_on_load +_TEXT SEGMENT +flag_true_if_should_flip$ = 224 +stbi_set_flip_vertically_on_load PROC ; COMDAT + +; 589 : { + +$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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 590 : 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 + +; 591 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_convert_iphone_png_to_rgb +_TEXT SEGMENT +flag_true_if_should_convert$ = 224 +stbi_convert_iphone_png_to_rgb PROC ; COMDAT + +; 5158 : { + +$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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 5159 : 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 + +; 5160 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_set_unpremultiply_on_load +_TEXT SEGMENT +flag_true_if_should_unpremultiply$ = 224 +stbi_set_unpremultiply_on_load PROC ; COMDAT + +; 5153 : { + +$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:__079B8C84_stb_image@c + 00019 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001e 90 npad 1 + +; 5154 : 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 + +; 5155 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 8212 : { + +$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:__079B8C84_stb_image@c + 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00049 90 npad 1 + +; 8213 : int r; +; 8214 : stbi__context s; +; 8215 : 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 + +; 8216 : 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 + +; 8217 : 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 + +; 8218 : 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 + +; 8219 : return r; + + 00091 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 8220 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_is_16_bit +_TEXT SEGMENT +f$ = 8 +result$ = 36 +filename$ = 288 +stbi_is_16_bit PROC ; COMDAT + +; 8201 : { + +$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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 8202 : 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 + +; 8203 : int result; +; 8204 : if (!f) + + 00037 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0 + 0003c 75 0e jne SHORT $LN2@stbi_is_16 + +; 8205 : 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: + +; 8206 : 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 + +; 8207 : 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 + +; 8208 : return result; + + 00063 8b 45 24 mov eax, DWORD PTR result$[rbp] +$LN1@stbi_is_16: + +; 8209 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 8190 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 8191 : int r; +; 8192 : stbi__context s; +; 8193 : 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 + +; 8194 : 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 + +; 8195 : 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 + +; 8196 : 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 + +; 8197 : return r; + + 000b5 8b 45 04 mov eax, DWORD PTR r$[rbp] + +; 8198 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_info +_TEXT SEGMENT +f$ = 8 +result$ = 36 +filename$ = 288 +x$ = 296 +y$ = 304 +comp$ = 312 +stbi_info PROC ; COMDAT + +; 8179 : { + +$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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 8180 : 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 + +; 8181 : int result; +; 8182 : if (!f) + + 00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0 + 0004b 75 0e jne SHORT $LN2@stbi_info + +; 8183 : 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: + +; 8184 : 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 + +; 8185 : 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 + +; 8186 : return result; + + 00087 8b 45 24 mov eax, DWORD PTR result$[rbp] +$LN1@stbi_info: + +; 8187 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 8246 : { + +$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:__079B8C84_stb_image@c + 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004e 90 npad 1 + +; 8247 : stbi__context s; +; 8248 : 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 + +; 8249 : 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 + +; 8250 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 8239 : { + +$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:__079B8C84_stb_image@c + 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004d 90 npad 1 + +; 8240 : stbi__context s; +; 8241 : 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 + +; 8242 : 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 + +; 8243 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 8232 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 8233 : stbi__context s; +; 8234 : 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 + +; 8235 : 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 + +; 8236 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 8224 : { + +$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:__079B8C84_stb_image@c + 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00057 90 npad 1 + +; 8225 : stbi__context s; +; 8226 : 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 + +; 8227 : 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 + +; 8228 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_image_free +_TEXT SEGMENT +retval_from_stbi_load$ = 224 +stbi_image_free PROC ; COMDAT + +; 574 : { + +$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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 575 : 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 + +; 576 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_failure_reason +_TEXT SEGMENT +stbi_failure_reason PROC ; COMDAT + +; 430 : { + +$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:__079B8C84_stb_image@c + 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001b 90 npad 1 + +; 431 : 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] + +; 432 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1064 : { + +$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:__079B8C84_stb_image@c + 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00049 90 npad 1 + +; 1065 : #ifndef STBI_NO_HDR +; 1066 : 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 + +; 1067 : int res; +; 1068 : stbi__context s; +; 1069 : 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 + +; 1070 : 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 + +; 1071 : 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 + +; 1072 : return res; + + 0008b 8b 45 24 mov eax, DWORD PTR res$[rbp] + +; 1073 : #else +; 1074 : STBI_NOTUSED(f); +; 1075 : return 0; +; 1076 : #endif +; 1077 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_is_hdr +_TEXT SEGMENT +f$ = 8 +result$ = 36 +filename$ = 288 +stbi_is_hdr PROC ; COMDAT + +; 1053 : { + +$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:__079B8C84_stb_image@c + 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0001f 90 npad 1 + +; 1054 : 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 + +; 1055 : int result = 0; + + 00037 c7 45 24 00 00 + 00 00 mov DWORD PTR result$[rbp], 0 + +; 1056 : if (f) { + + 0003e 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0 + 00043 74 17 je SHORT $LN2@stbi_is_hd + +; 1057 : 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 + +; 1058 : 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: + +; 1059 : } +; 1060 : return result; + + 0005c 8b 45 24 mov eax, DWORD PTR result$[rbp] + +; 1061 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_is_hdr_from_memory +_TEXT SEGMENT +s$ = 16 +__$ArrayPad$ = 440 +buffer$ = 480 +len$ = 488 +stbi_is_hdr_from_memory PROC ; COMDAT + +; 1039 : { + +$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:__079B8C84_stb_image@c + 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004d 90 npad 1 + +; 1040 : #ifndef STBI_NO_HDR +; 1041 : stbi__context s; +; 1042 : 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 + +; 1043 : 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 + +; 1044 : #else +; 1045 : STBI_NOTUSED(buffer); +; 1046 : STBI_NOTUSED(len); +; 1047 : return 0; +; 1048 : #endif +; 1049 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_is_hdr_from_callbacks +_TEXT SEGMENT +s$ = 16 +__$ArrayPad$ = 440 +clbk$ = 480 +user$ = 488 +stbi_is_hdr_from_callbacks PROC ; COMDAT + +; 1081 : { + +$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:__079B8C84_stb_image@c + 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0004e 90 npad 1 + +; 1082 : #ifndef STBI_NO_HDR +; 1083 : stbi__context s; +; 1084 : 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 + +; 1085 : 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 + +; 1086 : #else +; 1087 : STBI_NOTUSED(clbk); +; 1088 : STBI_NOTUSED(user); +; 1089 : return 0; +; 1090 : #endif +; 1091 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_ldr_to_hdr_scale +_TEXT SEGMENT +scale$ = 224 +stbi_ldr_to_hdr_scale PROC ; COMDAT + +; 1101 : { + +$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:__079B8C84_stb_image@c + 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00020 90 npad 1 + +; 1102 : 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 + +; 1103 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_ldr_to_hdr_gamma +_TEXT SEGMENT +gamma$ = 224 +stbi_ldr_to_hdr_gamma PROC ; COMDAT + +; 1097 : { + +$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:__079B8C84_stb_image@c + 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00020 90 npad 1 + +; 1098 : 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 + +; 1099 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_hdr_to_ldr_scale +_TEXT SEGMENT +scale$ = 224 +stbi_hdr_to_ldr_scale PROC ; COMDAT + +; 1113 : { + +$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:__079B8C84_stb_image@c + 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00020 90 npad 1 + +; 1114 : 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 + +; 1115 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_hdr_to_ldr_gamma +_TEXT SEGMENT +gamma$ = 224 +stbi_hdr_to_ldr_gamma PROC ; COMDAT + +; 1109 : { + +$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:__079B8C84_stb_image@c + 0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00020 90 npad 1 + +; 1110 : 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 + +; 1111 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1025 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 1026 : stbi__context s; +; 1027 : 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 + +; 1028 : 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 + +; 1029 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1014 : { + +$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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 1015 : float *result; +; 1016 : 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 + +; 1017 : if (!f) + + 00046 48 83 7d 28 00 cmp QWORD PTR f$[rbp], 0 + 0004b 75 31 jne SHORT $LN2@stbi_loadf + +; 1018 : 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: + +; 1019 : 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 + +; 1020 : 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 + +; 1021 : return result; + + 000b5 48 8b 45 08 mov rax, QWORD PTR result$[rbp] +$LN1@stbi_loadf: + +; 1022 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 1006 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 1007 : stbi__context s; +; 1008 : 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 + +; 1009 : 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 + +; 1010 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 998 : { + +$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:__079B8C84_stb_image@c + 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00057 90 npad 1 + +; 999 : stbi__context s; +; 1000 : 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 + +; 1001 : 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 + +; 1002 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 903 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 904 : stbi__uint16 *result; +; 905 : stbi__context s; +; 906 : 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 + +; 907 : 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 + +; 908 : if (result) { + + 00096 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0 + 0009b 74 2c je SHORT $LN2@stbi_load_ + +; 909 : // need to 'unget' all the characters in the IO buffer +; 910 : 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_: + +; 911 : } +; 912 : return result; + + 000c9 48 8b 45 08 mov rax, QWORD PTR result$[rbp] + +; 913 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 916 : { + +$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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 917 : 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 + +; 918 : stbi__uint16 *result; +; 919 : if (!f) + + 00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0 + 0004b 75 31 jne SHORT $LN2@stbi_load_ + +; 920 : 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_: + +; 921 : 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 + +; 922 : 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 + +; 923 : return result; + + 000b5 48 8b 45 28 mov rax, QWORD PTR result$[rbp] +$LN1@stbi_load_: + +; 924 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 938 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 939 : stbi__context s; +; 940 : 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 + +; 941 : 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 + +; 942 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 930 : { + +$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:__079B8C84_stb_image@c + 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00057 90 npad 1 + +; 931 : stbi__context s; +; 932 : 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 + +; 933 : 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 + +; 934 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 963 : { + +$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:__079B8C84_stb_image@c + 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00057 90 npad 1 + +; 964 : unsigned char *result; +; 965 : stbi__context s; +; 966 : 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 + +; 967 : +; 968 : 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 + +; 969 : 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_ + +; 970 : 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_: + +; 971 : } +; 972 : +; 973 : return result; + + 00142 48 8b 45 08 mov rax, QWORD PTR result$[rbp] + +; 974 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 890 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 891 : unsigned char *result; +; 892 : stbi__context s; +; 893 : 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 + +; 894 : 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 + +; 895 : if (result) { + + 00096 48 83 7d 08 00 cmp QWORD PTR result$[rbp], 0 + 0009b 74 2c je SHORT $LN2@stbi_load_ + +; 896 : // need to 'unget' all the characters in the IO buffer +; 897 : 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_: + +; 898 : } +; 899 : return result; + + 000c9 48 8b 45 08 mov rax, QWORD PTR result$[rbp] + +; 900 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; COMDAT stbi_load_to_target +_TEXT SEGMENT +f$ = 8 +result$ = 40 +filename$ = 288 +x$ = 296 +y$ = 304 +target$ = 312 +comp$ = 320 +req_comp$ = 328 +stbi_load_to_target PROC ; COMDAT + +; 878 : { + +$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 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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 879 : 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 + +; 880 : unsigned char *result; +; 881 : if (!f) { + + 00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0 + 0004b 75 12 jne SHORT $LN2@stbi_load_ + +; 882 : *target = "can't fopen, Unable to open file"; + + 0004d 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR target$[rbp] + 00054 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:??_C@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@ + 0005b 88 08 mov BYTE PTR [rax], cl + +; 883 : return; + + 0005d eb 37 jmp SHORT $LN1@stbi_load_ +$LN2@stbi_load_: + +; 884 : } +; 885 : result = stbi_load_from_file(f, x, y, comp, req_comp); + + 0005f 8b 85 48 01 00 + 00 mov eax, DWORD PTR req_comp$[rbp] + 00065 89 44 24 20 mov DWORD PTR [rsp+32], eax + 00069 4c 8b 8d 40 01 + 00 00 mov r9, QWORD PTR comp$[rbp] + 00070 4c 8b 85 30 01 + 00 00 mov r8, QWORD PTR y$[rbp] + 00077 48 8b 95 28 01 + 00 00 mov rdx, QWORD PTR x$[rbp] + 0007e 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp] + 00082 e8 00 00 00 00 call stbi_load_from_file + 00087 48 89 45 28 mov QWORD PTR result$[rbp], rax + +; 886 : fclose(f); + + 0008b 48 8b 4d 08 mov rcx, QWORD PTR f$[rbp] + 0008f ff 15 00 00 00 + 00 call QWORD PTR __imp_fclose + 00095 90 npad 1 +$LN1@stbi_load_: + +; 887 : } + + 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 +stbi_load_to_target ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 866 : { + +$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:__079B8C84_stb_image@c + 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 0002e 90 npad 1 + +; 867 : 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 + +; 868 : unsigned char *result; +; 869 : if (!f) + + 00046 48 83 7d 08 00 cmp QWORD PTR f$[rbp], 0 + 0004b 75 31 jne SHORT $LN2@stbi_load + +; 870 : 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: + +; 871 : 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 + +; 872 : 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 + +; 873 : return result; + + 000b5 48 8b 45 28 mov rax, QWORD PTR result$[rbp] +$LN1@stbi_load: + +; 874 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 954 : { + +$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:__079B8C84_stb_image@c + 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00058 90 npad 1 + +; 955 : stbi__context s; +; 956 : 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 + +; 957 : 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 + +; 958 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\stb_image.c +; 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 + +; 946 : { + +$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:__079B8C84_stb_image@c + 00052 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00057 90 npad 1 + +; 947 : stbi__context s; +; 948 : 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 + +; 949 : 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 + +; 950 : } + + 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/StgSharp.C/x64/Debug/stb_image.obj b/StgSharp.C/x64/Debug/stb_image.obj new file mode 100644 index 00000000..6c6e9b70 Binary files /dev/null and b/StgSharp.C/x64/Debug/stb_image.obj differ diff --git a/StgSharp.C/x64/Debug/stb_image.sbr b/StgSharp.C/x64/Debug/stb_image.sbr new file mode 100644 index 00000000..c2fa9542 Binary files /dev/null and b/StgSharp.C/x64/Debug/stb_image.sbr differ diff --git a/StgSharp.C/x64/Debug/string.cod b/StgSharp.C/x64/Debug/string.cod new file mode 100644 index 00000000..e667e465 --- /dev/null +++ b/StgSharp.C/x64/Debug/string.cod @@ -0,0 +1,570 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__5A8332CE_isa_availability@h DB 01H +__EB6C2FE1_ssc_intrinsic@h DB 01H +__A2A5DCB5_string@c DB 01H +msvcjmc ENDS +PUBLIC index_pair_sse +PUBLIC __JustMyCode_Default +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$index_pair_sse DD imagerel $LN23 + DD imagerel $LN23+681 + 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 voltbl +voltbl SEGMENT +_volmd DW 03fH + DW 0290H +voltbl ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$index_pair_sse DD 025054619H + DD 0117231cH + DD 070100047H + DD 0500fH + DD imagerel __GSHandlerCheck + DD 0228H +xdata ENDS +; COMDAT CONST +CONST SEGMENT +index_pair_sse$rtcName$0 DB 073H + DB 00H + ORG $+14 +index_pair_sse$rtcVarDesc DD 0b0H + DD 010H + DQ FLAT:index_pair_sse$rtcName$0 + ORG $+48 +index_pair_sse$rtcFrameData DD 01H + DD 00H + DQ FLAT:index_pair_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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\string.c +; COMDAT index_pair_sse +_TEXT SEGMENT +index$ = 4 +result$ = 36 +size$ = 68 +end$ = 100 +s$ = 144 +vec$ = 192 +com$ = 240 +i$4 = 280 +i$5 = 312 +tv152 = 516 +__$ArrayPad$ = 520 +str$ = 560 +target$ = 568 +length$ = 576 +index_pair_sse PROC ; COMDAT + +; 4 : { + +$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 7c 24 20 lea rdi, QWORD PTR [rsp+32] + 00021 b9 56 00 00 00 mov ecx, 86 ; 00000056H + 00026 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH + 0002b f3 ab rep stosd + 0002d 48 8b 8c 24 58 + 02 00 00 mov rcx, QWORD PTR [rsp+600] + 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 08 02 + 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax + 00046 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__A2A5DCB5_string@c + 0004d e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00052 90 npad 1 + +; 5 : int index = 0, result = 0, size = length, end = size - 8; + + 00053 c7 45 04 00 00 + 00 00 mov DWORD PTR index$[rbp], 0 + 0005a c7 45 24 00 00 + 00 00 mov DWORD PTR result$[rbp], 0 + 00061 8b 85 40 02 00 + 00 mov eax, DWORD PTR length$[rbp] + 00067 89 45 44 mov DWORD PTR size$[rbp], eax + 0006a 8b 45 44 mov eax, DWORD PTR size$[rbp] + 0006d 83 e8 08 sub eax, 8 + 00070 89 45 64 mov DWORD PTR end$[rbp], eax + +; 6 : __m128i s = { + + 00073 0f b6 85 38 02 + 00 00 movzx eax, BYTE PTR target$[rbp] + 0007a 88 85 90 00 00 + 00 mov BYTE PTR s$[rbp], al + 00080 0f b6 85 38 02 + 00 00 movzx eax, BYTE PTR target$[rbp] + 00087 88 85 91 00 00 + 00 mov BYTE PTR s$[rbp+1], al + 0008d 0f b6 85 38 02 + 00 00 movzx eax, BYTE PTR target$[rbp] + 00094 88 85 92 00 00 + 00 mov BYTE PTR s$[rbp+2], al + 0009a 0f b6 85 38 02 + 00 00 movzx eax, BYTE PTR target$[rbp] + 000a1 88 85 93 00 00 + 00 mov BYTE PTR s$[rbp+3], al + 000a7 48 8d 85 94 00 + 00 00 lea rax, QWORD PTR s$[rbp+4] + 000ae 48 8b f8 mov rdi, rax + 000b1 33 c0 xor eax, eax + 000b3 b9 0c 00 00 00 mov ecx, 12 + 000b8 f3 aa rep stosb +$LN2@index_pair: + +; 7 : target, +; 8 : target, +; 9 : target, +; 10 : target, +; 11 : }; +; 12 : __m128i vec, com; +; 13 : +; 14 : while (index < end) { + + 000ba 8b 45 64 mov eax, DWORD PTR end$[rbp] + 000bd 39 45 04 cmp DWORD PTR index$[rbp], eax + 000c0 0f 8d 52 01 00 + 00 jge $LN3@index_pair + +; 15 : vec = _mm_loadu_epi32(str + index); + + 000c6 48 63 45 04 movsxd rax, DWORD PTR index$[rbp] + 000ca 48 8b 8d 30 02 + 00 00 mov rcx, QWORD PTR str$[rbp] + 000d1 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2] + 000d5 c5 fa 6f 00 vmovdqu xmm0, XMMWORD PTR [rax] + 000d9 66 0f 7f 85 c0 + 00 00 00 movdqa XMMWORD PTR vec$[rbp], xmm0 + +; 16 : com = _mm_cmpeq_epi16(vec, s); + + 000e1 66 0f 6f 85 c0 + 00 00 00 movdqa xmm0, XMMWORD PTR vec$[rbp] + 000e9 66 0f 75 85 90 + 00 00 00 pcmpeqw xmm0, XMMWORD PTR s$[rbp] + 000f1 66 0f 7f 85 f0 + 00 00 00 movdqa XMMWORD PTR com$[rbp], xmm0 + +; 17 : result = _mm_movemask_epi8(com); + + 000f9 66 0f 6f 85 f0 + 00 00 00 movdqa xmm0, XMMWORD PTR com$[rbp] + 00101 66 0f d7 c0 pmovmskb eax, xmm0 + 00105 89 45 24 mov DWORD PTR result$[rbp], eax + +; 18 : if (result) { + + 00108 83 7d 24 00 cmp DWORD PTR result$[rbp], 0 + 0010c 74 56 je SHORT $LN13@index_pair + +; 19 : for (size_t i = 0; i < 7; i++) { + + 0010e 48 c7 85 18 01 + 00 00 00 00 00 + 00 mov QWORD PTR i$4[rbp], 0 + 00119 eb 11 jmp SHORT $LN6@index_pair +$LN4@index_pair: + 0011b 48 8b 85 18 01 + 00 00 mov rax, QWORD PTR i$4[rbp] + 00122 48 ff c0 inc rax + 00125 48 89 85 18 01 + 00 00 mov QWORD PTR i$4[rbp], rax +$LN6@index_pair: + 0012c 48 83 bd 18 01 + 00 00 07 cmp QWORD PTR i$4[rbp], 7 + 00134 73 2e jae SHORT $LN5@index_pair + +; 20 : if (((result & 0xF) == 0xF)) { + + 00136 8b 45 24 mov eax, DWORD PTR result$[rbp] + 00139 83 e0 0f and eax, 15 + 0013c 83 f8 0f cmp eax, 15 + 0013f 75 10 jne SHORT $LN14@index_pair + +; 21 : return index + i; + + 00141 48 63 45 04 movsxd rax, DWORD PTR index$[rbp] + 00145 48 03 85 18 01 + 00 00 add rax, QWORD PTR i$4[rbp] + 0014c e9 29 01 00 00 jmp $LN1@index_pair +$LN14@index_pair: + +; 22 : } +; 23 : if (result == 0) { + + 00151 83 7d 24 00 cmp DWORD PTR result$[rbp], 0 + 00155 75 02 jne SHORT $LN15@index_pair + +; 24 : break; + + 00157 eb 0b jmp SHORT $LN5@index_pair +$LN15@index_pair: + +; 25 : } +; 26 : result >>= 2; + + 00159 8b 45 24 mov eax, DWORD PTR result$[rbp] + 0015c c1 f8 02 sar eax, 2 + 0015f 89 45 24 mov DWORD PTR result$[rbp], eax + +; 27 : } + + 00162 eb b7 jmp SHORT $LN4@index_pair +$LN5@index_pair: +$LN13@index_pair: + +; 28 : } +; 29 : index += 1; + + 00164 8b 45 04 mov eax, DWORD PTR index$[rbp] + 00167 ff c0 inc eax + 00169 89 45 04 mov DWORD PTR index$[rbp], eax + +; 30 : vec = _mm_loadu_epi32(str + index); + + 0016c 48 63 45 04 movsxd rax, DWORD PTR index$[rbp] + 00170 48 8b 8d 30 02 + 00 00 mov rcx, QWORD PTR str$[rbp] + 00177 48 8d 04 41 lea rax, QWORD PTR [rcx+rax*2] + 0017b c5 fa 6f 00 vmovdqu xmm0, XMMWORD PTR [rax] + 0017f 66 0f 7f 85 c0 + 00 00 00 movdqa XMMWORD PTR vec$[rbp], xmm0 + +; 31 : com = _mm_cmpeq_epi16(vec, s); + + 00187 66 0f 6f 85 c0 + 00 00 00 movdqa xmm0, XMMWORD PTR vec$[rbp] + 0018f 66 0f 75 85 90 + 00 00 00 pcmpeqw xmm0, XMMWORD PTR s$[rbp] + 00197 66 0f 7f 85 f0 + 00 00 00 movdqa XMMWORD PTR com$[rbp], xmm0 + +; 32 : result = _mm_movemask_epi8(com); + + 0019f 66 0f 6f 85 f0 + 00 00 00 movdqa xmm0, XMMWORD PTR com$[rbp] + 001a7 66 0f d7 c0 pmovmskb eax, xmm0 + 001ab 89 45 24 mov DWORD PTR result$[rbp], eax + +; 33 : if (result) { + + 001ae 83 7d 24 00 cmp DWORD PTR result$[rbp], 0 + 001b2 74 56 je SHORT $LN16@index_pair + +; 34 : for (size_t i = 0; i < 7; i++) { + + 001b4 48 c7 85 38 01 + 00 00 00 00 00 + 00 mov QWORD PTR i$5[rbp], 0 + 001bf eb 11 jmp SHORT $LN9@index_pair +$LN7@index_pair: + 001c1 48 8b 85 38 01 + 00 00 mov rax, QWORD PTR i$5[rbp] + 001c8 48 ff c0 inc rax + 001cb 48 89 85 38 01 + 00 00 mov QWORD PTR i$5[rbp], rax +$LN9@index_pair: + 001d2 48 83 bd 38 01 + 00 00 07 cmp QWORD PTR i$5[rbp], 7 + 001da 73 2e jae SHORT $LN8@index_pair + +; 35 : if (((result & 0xF) == 0xF)) { + + 001dc 8b 45 24 mov eax, DWORD PTR result$[rbp] + 001df 83 e0 0f and eax, 15 + 001e2 83 f8 0f cmp eax, 15 + 001e5 75 10 jne SHORT $LN17@index_pair + +; 36 : return index + i; + + 001e7 48 63 45 04 movsxd rax, DWORD PTR index$[rbp] + 001eb 48 03 85 38 01 + 00 00 add rax, QWORD PTR i$5[rbp] + 001f2 e9 83 00 00 00 jmp $LN1@index_pair +$LN17@index_pair: + +; 37 : } +; 38 : if (result == 0) { + + 001f7 83 7d 24 00 cmp DWORD PTR result$[rbp], 0 + 001fb 75 02 jne SHORT $LN18@index_pair + +; 39 : break; + + 001fd eb 0b jmp SHORT $LN8@index_pair +$LN18@index_pair: + +; 40 : } +; 41 : result >>= 2; + + 001ff 8b 45 24 mov eax, DWORD PTR result$[rbp] + 00202 c1 f8 02 sar eax, 2 + 00205 89 45 24 mov DWORD PTR result$[rbp], eax + +; 42 : } + + 00208 eb b7 jmp SHORT $LN7@index_pair +$LN8@index_pair: +$LN16@index_pair: + +; 43 : } +; 44 : index += 7; + + 0020a 8b 45 04 mov eax, DWORD PTR index$[rbp] + 0020d 83 c0 07 add eax, 7 + 00210 89 45 04 mov DWORD PTR index$[rbp], eax + +; 45 : } + + 00213 e9 a2 fe ff ff jmp $LN2@index_pair +$LN3@index_pair: + +; 46 : for (; (index < size - 1) && (!result); index += 2) { + + 00218 eb 09 jmp SHORT $LN12@index_pair +$LN10@index_pair: + 0021a 8b 45 04 mov eax, DWORD PTR index$[rbp] + 0021d 83 c0 02 add eax, 2 + 00220 89 45 04 mov DWORD PTR index$[rbp], eax +$LN12@index_pair: + 00223 8b 45 44 mov eax, DWORD PTR size$[rbp] + 00226 ff c8 dec eax + 00228 39 45 04 cmp DWORD PTR index$[rbp], eax + 0022b 7d 3d jge SHORT $LN11@index_pair + 0022d 83 7d 24 00 cmp DWORD PTR result$[rbp], 0 + 00231 75 37 jne SHORT $LN11@index_pair + +; 47 : result = *(int *)(str + index) == target; + + 00233 48 63 45 04 movsxd rax, DWORD PTR index$[rbp] + 00237 48 8b 8d 30 02 + 00 00 mov rcx, QWORD PTR str$[rbp] + 0023e 8b 95 38 02 00 + 00 mov edx, DWORD PTR target$[rbp] + 00244 39 14 41 cmp DWORD PTR [rcx+rax*2], edx + 00247 75 0c jne SHORT $LN21@index_pair + 00249 c7 85 04 02 00 + 00 01 00 00 00 mov DWORD PTR tv152[rbp], 1 + 00253 eb 0a jmp SHORT $LN22@index_pair +$LN21@index_pair: + 00255 c7 85 04 02 00 + 00 00 00 00 00 mov DWORD PTR tv152[rbp], 0 +$LN22@index_pair: + 0025f 8b 85 04 02 00 + 00 mov eax, DWORD PTR tv152[rbp] + 00265 89 45 24 mov DWORD PTR result$[rbp], eax + +; 48 : } + + 00268 eb b0 jmp SHORT $LN10@index_pair +$LN11@index_pair: + +; 49 : if (result) { + + 0026a 83 7d 24 00 cmp DWORD PTR result$[rbp], 0 + 0026e 74 05 je SHORT $LN19@index_pair + +; 50 : return index; + + 00270 8b 45 04 mov eax, DWORD PTR index$[rbp] + 00273 eb 05 jmp SHORT $LN1@index_pair +$LN19@index_pair: + +; 51 : } +; 52 : return -1; + + 00275 b8 ff ff ff ff mov eax, -1 +$LN1@index_pair: + +; 53 : } + + 0027a 48 8b f8 mov rdi, rax + 0027d 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] + 00281 48 8d 15 00 00 + 00 00 lea rdx, OFFSET FLAT:index_pair_sse$rtcFrameData + 00288 e8 00 00 00 00 call _RTC_CheckStackVars + 0028d 48 8b c7 mov rax, rdi + 00290 48 8b 8d 08 02 + 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] + 00297 48 33 cd xor rcx, rbp + 0029a e8 00 00 00 00 call __security_check_cookie + 0029f 48 8d a5 18 02 + 00 00 lea rsp, QWORD PTR [rbp+536] + 002a6 5f pop rdi + 002a7 5d pop rbp + 002a8 c3 ret 0 +index_pair_sse ENDP +_TEXT ENDS +END diff --git a/StgSharp.C/x64/Debug/string.obj b/StgSharp.C/x64/Debug/string.obj new file mode 100644 index 00000000..e234fb65 Binary files /dev/null and b/StgSharp.C/x64/Debug/string.obj differ diff --git a/StgSharp.C/x64/Debug/string.sbr b/StgSharp.C/x64/Debug/string.sbr new file mode 100644 index 00000000..5e86d9ad Binary files /dev/null and b/StgSharp.C/x64/Debug/string.sbr differ diff --git a/StgSharp.C/x64/Debug/vc143.idb b/StgSharp.C/x64/Debug/vc143.idb new file mode 100644 index 00000000..69427a33 Binary files /dev/null and b/StgSharp.C/x64/Debug/vc143.idb differ diff --git a/StgSharp.C/x64/Debug/vc143.pdb b/StgSharp.C/x64/Debug/vc143.pdb new file mode 100644 index 00000000..f6a7c48f Binary files /dev/null and b/StgSharp.C/x64/Debug/vc143.pdb differ diff --git a/StgSharp.C/x64/Debug/vector.cod b/StgSharp.C/x64/Debug/vector.cod new file mode 100644 index 00000000..a77ca65c --- /dev/null +++ b/StgSharp.C/x64/Debug/vector.cod @@ -0,0 +1,354 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__D947C158_vector@c DB 01H +msvcjmc ENDS +PUBLIC normalize +PUBLIC __JustMyCode_Default +EXTRN _RTC_InitBase:PROC +EXTRN _RTC_Shutdown:PROC +EXTRN __CheckForDebuggerJustMyCode:PROC +; COMDAT pdata +pdata SEGMENT +$pdata$normalize DD imagerel $LN3 + DD imagerel $LN3+379 + DD imagerel $unwind$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$normalize DD 025051801H + DD 01132318H + DD 0700c0041H + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector.c +; COMDAT normalize +_TEXT SEGMENT +a_length_sq$ = 16 +a_inv_length$ = 64 +dot_product$ = 112 +b_orthogonal$ = 160 +b_length_sq$ = 208 +b_inv_length$ = 256 +source$ = 512 +target$ = 520 +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 08 02 + 00 00 sub rsp, 520 ; 00000208H + 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] + 00018 48 8d 0d 00 00 + 00 00 lea rcx, OFFSET FLAT:__D947C158_vector@c + 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00024 90 npad 1 + +; 6 : __m128 a_length_sq = _mm_mul_ps(*source, *source); + + 00025 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR source$[rbp] + 0002c 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00033 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00036 0f 59 01 mulps xmm0, XMMWORD PTR [rcx] + 00039 0f 29 45 10 movaps XMMWORD PTR a_length_sq$[rbp], xmm0 + +; 7 : a_length_sq = _mm_add_ps(a_length_sq, + + 0003d 0f 28 45 10 movaps xmm0, XMMWORD PTR a_length_sq$[rbp] + 00041 0f c6 45 10 b1 shufps xmm0, XMMWORD PTR a_length_sq$[rbp], 177 ; 000000b1H + 00046 0f 28 4d 10 movaps xmm1, XMMWORD PTR a_length_sq$[rbp] + 0004a 0f 58 c8 addps xmm1, xmm0 + 0004d 0f 28 c1 movaps xmm0, xmm1 + 00050 0f 29 45 10 movaps XMMWORD PTR a_length_sq$[rbp], xmm0 + +; 8 : _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); +; 9 : a_length_sq = _mm_add_ss(a_length_sq, + + 00054 0f 28 45 10 movaps xmm0, XMMWORD PTR a_length_sq$[rbp] + 00058 0f c6 45 10 0e shufps xmm0, XMMWORD PTR a_length_sq$[rbp], 14 + 0005d 0f 28 4d 10 movaps xmm1, XMMWORD PTR a_length_sq$[rbp] + 00061 f3 0f 58 c8 addss xmm1, xmm0 + 00065 0f 29 4d 10 movaps XMMWORD PTR a_length_sq$[rbp], xmm1 + +; 10 : _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); +; 11 : +; 12 : __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq); + + 00069 0f 52 45 10 rsqrtps xmm0, XMMWORD PTR a_length_sq$[rbp] + 0006d 0f 29 45 40 movaps XMMWORD PTR a_inv_length$[rbp], xmm0 + +; 13 : *source = _mm_mul_ps(*source, a_inv_length); + + 00071 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR source$[rbp] + 00078 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0007b 0f 59 45 40 mulps xmm0, XMMWORD PTR a_inv_length$[rbp] + 0007f 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR source$[rbp] + 00086 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 14 : +; 15 : __m128 dot_product = _mm_mul_ps(*target, *source); + + 00089 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR target$[rbp] + 00090 48 8b 8d 00 02 + 00 00 mov rcx, QWORD PTR source$[rbp] + 00097 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0009a 0f 59 01 mulps xmm0, XMMWORD PTR [rcx] + 0009d 0f 29 45 70 movaps XMMWORD PTR dot_product$[rbp], xmm0 + +; 16 : dot_product = _mm_add_ps(dot_product, + + 000a1 0f 28 45 70 movaps xmm0, XMMWORD PTR dot_product$[rbp] + 000a5 0f c6 45 70 b1 shufps xmm0, XMMWORD PTR dot_product$[rbp], 177 ; 000000b1H + 000aa 0f 28 4d 70 movaps xmm1, XMMWORD PTR dot_product$[rbp] + 000ae 0f 58 c8 addps xmm1, xmm0 + 000b1 0f 28 c1 movaps xmm0, xmm1 + 000b4 0f 29 45 70 movaps XMMWORD PTR dot_product$[rbp], xmm0 + +; 17 : _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(2, 3, 0, 1))); +; 18 : dot_product = _mm_add_ss(dot_product, + + 000b8 0f 28 45 70 movaps xmm0, XMMWORD PTR dot_product$[rbp] + 000bc 0f c6 45 70 0e shufps xmm0, XMMWORD PTR dot_product$[rbp], 14 + 000c1 0f 28 4d 70 movaps xmm1, XMMWORD PTR dot_product$[rbp] + 000c5 f3 0f 58 c8 addss xmm1, xmm0 + 000c9 0f 29 4d 70 movaps XMMWORD PTR dot_product$[rbp], xmm1 + +; 19 : _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(0, 0, 3, 2))); +; 20 : +; 21 : __m128 b_orthogonal = _mm_sub_ps(*target, _mm_mul_ps(*source, dot_product)); + + 000cd 48 8b 85 00 02 + 00 00 mov rax, QWORD PTR source$[rbp] + 000d4 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 000d7 0f 59 45 70 mulps xmm0, XMMWORD PTR dot_product$[rbp] + 000db 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR target$[rbp] + 000e2 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000e5 0f 5c c8 subps xmm1, xmm0 + 000e8 0f 28 c1 movaps xmm0, xmm1 + 000eb 0f 29 85 a0 00 + 00 00 movaps XMMWORD PTR b_orthogonal$[rbp], xmm0 + +; 22 : +; 23 : __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal); + + 000f2 0f 28 85 a0 00 + 00 00 movaps xmm0, XMMWORD PTR b_orthogonal$[rbp] + 000f9 0f 59 85 a0 00 + 00 00 mulps xmm0, XMMWORD PTR b_orthogonal$[rbp] + 00100 0f 29 85 d0 00 + 00 00 movaps XMMWORD PTR b_length_sq$[rbp], xmm0 + +; 24 : b_length_sq = _mm_add_ps(b_length_sq, + + 00107 0f 28 85 d0 00 + 00 00 movaps xmm0, XMMWORD PTR b_length_sq$[rbp] + 0010e 0f c6 85 d0 00 + 00 00 b1 shufps xmm0, XMMWORD PTR b_length_sq$[rbp], 177 ; 000000b1H + 00116 0f 28 8d d0 00 + 00 00 movaps xmm1, XMMWORD PTR b_length_sq$[rbp] + 0011d 0f 58 c8 addps xmm1, xmm0 + 00120 0f 28 c1 movaps xmm0, xmm1 + 00123 0f 29 85 d0 00 + 00 00 movaps XMMWORD PTR b_length_sq$[rbp], xmm0 + +; 25 : _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); +; 26 : b_length_sq = _mm_add_ss(b_length_sq, + + 0012a 0f 28 85 d0 00 + 00 00 movaps xmm0, XMMWORD PTR b_length_sq$[rbp] + 00131 0f c6 85 d0 00 + 00 00 0e shufps xmm0, XMMWORD PTR b_length_sq$[rbp], 14 + 00139 0f 28 8d d0 00 + 00 00 movaps xmm1, XMMWORD PTR b_length_sq$[rbp] + 00140 f3 0f 58 c8 addss xmm1, xmm0 + 00144 0f 29 8d d0 00 + 00 00 movaps XMMWORD PTR b_length_sq$[rbp], xmm1 + +; 27 : _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); +; 28 : +; 29 : __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq); + + 0014b 0f 52 85 d0 00 + 00 00 rsqrtps xmm0, XMMWORD PTR b_length_sq$[rbp] + 00152 0f 29 85 00 01 + 00 00 movaps XMMWORD PTR b_inv_length$[rbp], xmm0 + +; 30 : *target = _mm_mul_ps(b_orthogonal, b_inv_length); + + 00159 0f 28 85 a0 00 + 00 00 movaps xmm0, XMMWORD PTR b_orthogonal$[rbp] + 00160 0f 59 85 00 01 + 00 00 mulps xmm0, XMMWORD PTR b_inv_length$[rbp] + 00167 48 8b 85 08 02 + 00 00 mov rax, QWORD PTR target$[rbp] + 0016e 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 31 : } + + 00171 48 8d a5 e8 01 + 00 00 lea rsp, QWORD PTR [rbp+488] + 00178 5f pop rdi + 00179 5d pop rbp + 0017a c3 ret 0 +normalize ENDP +_TEXT ENDS +END diff --git a/StgSharp.C/x64/Debug/vector.obj b/StgSharp.C/x64/Debug/vector.obj new file mode 100644 index 00000000..033505ef Binary files /dev/null and b/StgSharp.C/x64/Debug/vector.obj differ diff --git a/StgSharp.C/x64/Debug/vector.sbr b/StgSharp.C/x64/Debug/vector.sbr new file mode 100644 index 00000000..eaa7896e Binary files /dev/null and b/StgSharp.C/x64/Debug/vector.sbr differ diff --git a/StgSharp.C/x64/Debug/vector_dot.cod b/StgSharp.C/x64/Debug/vector_dot.cod new file mode 100644 index 00000000..f39c1b31 --- /dev/null +++ b/StgSharp.C/x64/Debug/vector_dot.cod @@ -0,0 +1,1711 @@ +; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 + +include listing.inc + +INCLUDELIB MSVCRTD +INCLUDELIB OLDNAMES + +_DATA SEGMENT +COMM infolog:BYTE:0200H +_DATA ENDS +msvcjmc SEGMENT +__7583A0D2_mmintrin@h DB 01H +__DDA0A690_concurrencysal@h DB 01H +__9ECC08BE_sal@h DB 01H +__E05D733A_vadefs@h DB 01H +__6A355E0E_vcruntime@h DB 01H +__1B0272D9_corecrt@h DB 01H +__45DED006_corecrt_malloc@h DB 01H +__FA77ED4C_malloc@h DB 01H +__EAE0325A_xmmintrin@h DB 01H +__0ED14FEE_winpackagefamily@h DB 01H +__F92EF742_winapifamily@h DB 01H +__22E515EB_sdkddkver@h DB 01H +__A09A3A7D_excpt@h DB 01H +__AC8FA393_stdarg@h DB 01H +__29F49F40_specstrings_undef@h DB 01H +__D0F42932_specstrings_strict@h DB 01H +__F00405FD_sdv_driverspecs@h DB 01H +__173E09CA_driverspecs@h DB 01H +__9A452361_specstrings@h DB 01H +__74484FB3_corecrt_wctype@h DB 01H +__1EC467ED_ctype@h DB 01H +__98517906_kernelspecs@h DB 01H +__D3497022_basetsd@h DB 01H +__61CC25A1_errno@h DB 01H +__890838BD_vcruntime_string@h DB 01H +__E4C945B4_corecrt_memcpy_s@h DB 01H +__8EAFF484_corecrt_memory@h DB 01H +__6490AEC5_corecrt_wstring@h DB 01H +__E8295E1E_string@h DB 01H +__7FCB5136_guiddef@h DB 01H +__FF8A9E11_pshpack4@h DB 01H +__D5438902_poppack@h DB 01H +__FB07E2A3_pshpack2@h DB 01H +__F6906775_pshpack8@h DB 01H +__F9415CFA_pshpack1@h DB 01H +__E58C6F1C_apiset@h DB 01H +__A5C52262_ktmtypes@h DB 01H +__FBBA8F9D_winnt@h DB 01H +__A32D3D2C_minwindef@h DB 01H +__7D798299_windef@h DB 01H +__9AE108E9_apisetcconv@h DB 01H +__9CE53D2C_minwinbase@h DB 01H +__5D0AA210_apiquery2@h DB 01H +__4DD4E726_processenv@h DB 01H +__3575CC96_fileapi@h DB 01H +__8EA220E6_fileapifromapp@h DB 01H +__BF9B31FE_debugapi@h DB 01H +__C3AFE134_utilapiset@h DB 01H +__76F69E51_handleapi@h DB 01H +__7E63D784_errhandlingapi@h DB 01H +__FFA7003C_fibersapi@h DB 01H +__8971CECF_namedpipeapi@h DB 01H +__46C9D8A6_profileapi@h DB 01H +__98D4F0A3_heapapi@h DB 01H +__50EF2A88_ioapiset@h DB 01H +__92EA1464_synchapi@h DB 01H +__A53D8AED_interlockedapi@h DB 01H +__B506CAAF_processthreadsapi@h DB 01H +__FF735694_sysinfoapi@h DB 01H +__29589789_memoryapi@h DB 01H +__E9C7A663_enclaveapi@h DB 01H +__D035F9F7_threadpoollegacyapiset@h DB 01H +__C899130C_threadpoolapiset@h DB 01H +__E0441EE7_jobapi@h DB 01H +__CEF86838_jobapi2@h DB 01H +__35AC6B9A_wow64apiset@h DB 01H +__C8AE41A5_libloaderapi@h DB 01H +__CC9E232D_securitybaseapi@h DB 01H +__C9D0C9B8_namespaceapi@h DB 01H +__30FF9CAD_systemtopologyapi@h DB 01H +__4D358795_processtopologyapi@h DB 01H +__40446D10_securityappcontainer@h DB 01H +__3A952EDF_realtimeapiset@h DB 01H +__F4865F4B_winerror@h DB 01H +__53C1BD93_timezoneapi@h DB 01H +__1FFBEDBF_winbase@h DB 01H +__43D3FA34_wingdi@h DB 01H +__D24A7391_tvout@h DB 01H +__7713A6C8_winuser@h DB 01H +__0B345F71_datetimeapi@h DB 01H +__9AC6960C_winnls@h DB 01H +__973A40A8_stringapiset@h DB 01H +__CC46FEE2_wincontypes@h DB 01H +__97D70BE1_consoleapi@h DB 01H +__27EC5E18_consoleapi2@h DB 01H +__262E342F_consoleapi3@h DB 01H +__641DCD70_wincon@h DB 01H +__5A96C7A7_verrsrc@h DB 01H +__B69C6FF2_winver@h DB 01H +__7AEB8C37_reason@h DB 01H +__59F1A8A9_winreg@h DB 01H +__EE0E2B7F_wnnc@h DB 01H +__DCDB7054_winnetwk@h DB 01H +__81DDEDE3_stralign@h DB 01H +__2134D1B4_winsvc@h DB 01H +__11C07376_mcx@h DB 01H +__577CE3E7_ime_cmodes@h DB 01H +__1E72C31E_imm@h DB 01H +__E15BF856_windows@h DB 01H +__8FC206A7_ssc_internal@h DB 01H +__44420885_corecrt_stdio_config@h DB 01H +__AB601D8D_corecrt_wstdio@h DB 01H +__C1EC35D3_stdio@h DB 01H +__13F5961F_stddef@h DB 01H +__FD6DBD68_corecrt_search@h DB 01H +__E2E33A61_corecrt_wstdlib@h DB 01H +__26263363_limits@h DB 01H +__6E5ACABA_stdlib@h DB 01H +__9049550C_stb_image@h DB 01H +__98501D5C_stdint@h DB 01H +__264E89B8_khrplatform@h DB 01H +__799FCA13_gl@h DB 01H +__A57296D0_wgl@h DB 01H +__417F438F_glfw3@h DB 01H +__8F82BB96_emmintrin@h DB 01H +__5023D31F_pmmintrin@h DB 01H +__E0FAA09D_tmmintrin@h DB 01H +__C9C1B51E_smmintrin@h DB 01H +__ACA33CD2_nmmintrin@h DB 01H +__7918C69C_wmmintrin@h DB 01H +__B28C8B9B_zmmintrin@h DB 01H +__85982951_immintrin@h DB 01H +__19139D6C_assert@h DB 01H +__0C16F932_StgSharpC@h DB 01H +__B2F9F159_intrin0@inl@h DB 01H +__0833F55F_setjmp@h DB 01H +__3F5BC814_ammintrin@h DB 01H +__2E054928_intrin@h DB 01H +__5A8332CE_isa_availability@h DB 01H +__EB6C2FE1_ssc_intrinsic@h DB 01H +__43BC74EB_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_31_sse +PUBLIC dot_41_avx +PUBLIC dot_31_avx +PUBLIC dot_32_sse +PUBLIC dot_32_avx +PUBLIC dot_42_sse +PUBLIC dot_42_avx +PUBLIC dot_43_sse +PUBLIC dot_43_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_31_sse DD imagerel $LN3 + DD imagerel $LN3+219 + DD imagerel $unwind$dot_31_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_31_avx DD imagerel $LN3 + DD imagerel $LN3+223 + DD imagerel $unwind$dot_31_avx +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$dot_32_sse DD imagerel $LN3 + DD imagerel $LN3+512 + DD imagerel $unwind$dot_32_sse +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$dot_32_avx DD imagerel $LN3 + DD imagerel $LN3+343 + DD imagerel $unwind$dot_32_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+394 + DD imagerel $unwind$dot_42_avx +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$dot_43_sse DD imagerel $LN3 + DD imagerel $LN3+161 + DD imagerel $unwind$dot_43_sse +pdata ENDS +; COMDAT pdata +pdata SEGMENT +$pdata$dot_43_avx DD imagerel $LN3 + DD imagerel $LN3+537 + DD imagerel $unwind$dot_43_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_43_avx DD 02d062801H + DD 011a231fH + DD 070130042H + DD 0d0115012H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$dot_43_sse DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$dot_42_avx DD 02d062801H + DD 011a231fH + DD 070130032H + 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_32_avx DD 02d062801H + DD 011a231fH + DD 070130032H + DD 0d0115012H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$dot_32_sse DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +xdata ENDS +; COMDAT xdata +xdata SEGMENT +$unwind$dot_31_avx DD 02d062801H + DD 011a231fH + DD 070130032H + DD 0d0115012H +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_31_sse DD 025051d01H + DD 0118231dH + DD 07011001dH + DD 05010H +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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_43_avx +_TEXT SEGMENT +ans_ptr$ = 8 +right_ptr$ = 40 +temp$ = 96 +third$ = 160 +ans_third$ = 224 +transpose$ = 528 +vector$ = 536 +ans$ = 544 +dot_43_avx PROC ; COMDAT + +; 125 : { + +$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 02 + 00 00 sub rsp, 528 ; 00000210H + 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:__43BC74EB_vector_dot@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 126 : __3_columnset *ans_ptr = (__3_columnset *)ans, *right_ptr = (__3_columnset *)vector; + + 00035 49 8b 85 20 02 + 00 00 mov rax, QWORD PTR ans$[r13] + 0003c 48 89 45 08 mov QWORD PTR ans_ptr$[rbp], rax + 00040 49 8b 85 18 02 + 00 00 mov rax, QWORD PTR vector$[r13] + 00047 48 89 45 28 mov QWORD PTR right_ptr$[rbp], rax + +; 127 : __m256 temp = ALIGN256(transpose->half[0]); + + 0004b b8 20 00 00 00 mov eax, 32 ; 00000020H + 00050 48 6b c0 00 imul rax, rax, 0 + 00054 49 8b 8d 10 02 + 00 00 mov rcx, QWORD PTR transpose$[r13] + 0005b 48 03 c8 add rcx, rax + 0005e 48 8b c1 mov rax, rcx + 00061 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00065 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 128 : __m256 third = _mm256_set_m128(right_ptr->column[2], right_ptr->column[2]); + + 0006a b8 10 00 00 00 mov eax, 16 + 0006f 48 6b c0 02 imul rax, rax, 2 + 00073 b9 10 00 00 00 mov ecx, 16 + 00078 48 6b c9 02 imul rcx, rcx, 2 + 0007c 48 8b 55 28 mov rdx, QWORD PTR right_ptr$[rbp] + 00080 c5 f8 10 04 0a vmovups xmm0, XMMWORD PTR [rdx+rcx] + 00085 48 8b 4d 28 mov rcx, QWORD PTR right_ptr$[rbp] + 00089 c4 e3 7d 18 04 + 01 01 vinsertf128 ymm0, ymm0, XMMWORD PTR [rcx+rax], 1 + 00090 c5 fc 11 85 a0 + 00 00 00 vmovups YMMWORD PTR third$[rbp], ymm0 + +; 129 : +; 130 : ans_ptr->part = _mm256_dp_ps(temp, right_ptr->part, 0B11110001); + + 00098 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 0009c c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 000a1 c4 e3 7d 40 00 + f1 vdpps ymm0, ymm0, YMMWORD PTR [rax], 241 ; 000000f1H + 000a7 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000ab c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 131 : __m256 ans_third = _mm256_dp_ps(temp, third, 0B11110001); + + 000af c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 000b4 c4 e3 7d 40 85 + a0 00 00 00 f1 vdpps ymm0, ymm0, YMMWORD PTR third$[rbp], 241 ; 000000f1H + 000be c5 fc 11 85 e0 + 00 00 00 vmovups YMMWORD PTR ans_third$[rbp], ymm0 + +; 132 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + + 000c6 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 000cb c4 e3 7d 06 45 + 60 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1 + 000d2 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 133 : ans_ptr->part = _mm256_blend_ps( + + 000d7 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 000db c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 000e0 c4 e3 7d 40 00 + f2 vdpps ymm0, ymm0, YMMWORD PTR [rax], 242 ; 000000f2H + 000e6 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000ea c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 000ee c4 e3 75 0c c0 + 22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H + 000f4 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000f8 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 134 : ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11110010), 0B00100010); +; 135 : +; 136 : temp = ALIGN256(transpose->half[1]); + + 000fc b8 20 00 00 00 mov eax, 32 ; 00000020H + 00101 48 6b c0 01 imul rax, rax, 1 + 00105 49 8b 8d 10 02 + 00 00 mov rcx, QWORD PTR transpose$[r13] + 0010c 48 03 c8 add rcx, rax + 0010f 48 8b c1 mov rax, rcx + 00112 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00116 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 137 : ans_ptr->part = _mm256_blend_ps( + + 0011b 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 0011f c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00124 c4 e3 7d 40 00 + f4 vdpps ymm0, ymm0, YMMWORD PTR [rax], 244 ; 000000f4H + 0012a 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 0012e c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 00132 c4 e3 75 0c c0 + 44 vblendps ymm0, ymm1, ymm0, 68 ; 00000044H + 00138 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 0013c c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 138 : ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11110100), 0B01000100); +; 139 : ans_third = _mm256_blend_ps(ans_third, _mm256_dp_ps(temp, third, 0B11110010), 0B00100010); + + 00140 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00145 c4 e3 7d 40 85 + a0 00 00 00 f2 vdpps ymm0, ymm0, YMMWORD PTR third$[rbp], 242 ; 000000f2H + 0014f c5 fc 10 8d e0 + 00 00 00 vmovups ymm1, YMMWORD PTR ans_third$[rbp] + 00157 c4 e3 75 0c c0 + 22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H + 0015d c5 fc 11 85 e0 + 00 00 00 vmovups YMMWORD PTR ans_third$[rbp], ymm0 + +; 140 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + + 00165 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 0016a c4 e3 7d 06 45 + 60 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1 + 00171 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 141 : ans_ptr->part = _mm256_blend_ps( + + 00176 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 0017a c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 0017f c4 e3 7d 40 00 + f8 vdpps ymm0, ymm0, YMMWORD PTR [rax], 248 ; 000000f8H + 00185 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 00189 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 0018d c4 e3 75 0c c0 + 88 vblendps ymm0, ymm1, ymm0, 136 ; 00000088H + 00193 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 00197 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 142 : ans_ptr->part, _mm256_dp_ps(temp, right_ptr->part, 0B11111000), 0B10001000); +; 143 : +; 144 : ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 3, 0, 1)); + + 0019b b8 10 00 00 00 mov eax, 16 + 001a0 48 6b c0 01 imul rax, rax, 1 + 001a4 49 8b 8d 20 02 + 00 00 mov rcx, QWORD PTR ans$[r13] + 001ab 48 03 c8 add rcx, rax + 001ae 48 8b c1 mov rax, rcx + 001b1 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 001b4 b8 10 00 00 00 mov eax, 16 + 001b9 48 6b c0 01 imul rax, rax, 1 + 001bd 49 8b 8d 20 02 + 00 00 mov rcx, QWORD PTR ans$[r13] + 001c4 48 03 c8 add rcx, rax + 001c7 48 8b c1 mov rax, rcx + 001ca 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 001cd 0f c6 c8 b1 shufps xmm1, xmm0, 177 ; 000000b1H + 001d1 0f 28 c1 movaps xmm0, xmm1 + 001d4 b8 10 00 00 00 mov eax, 16 + 001d9 48 6b c0 01 imul rax, rax, 1 + 001dd 49 8b 8d 20 02 + 00 00 mov rcx, QWORD PTR ans$[r13] + 001e4 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 145 : ans[2] = _mm256_castps256_ps128( + + 001e8 c5 fe 6f 05 00 + 00 00 00 vmovdqu ymm0, YMMWORD PTR avxdot_indices + 001f0 c4 e2 7d 16 85 + e0 00 00 00 vpermps ymm0, ymm0, YMMWORD PTR ans_third$[rbp] + 001f9 b8 10 00 00 00 mov eax, 16 + 001fe 48 6b c0 02 imul rax, rax, 2 + 00202 49 8b 8d 20 02 + 00 00 mov rcx, QWORD PTR ans$[r13] + 00209 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 146 : _mm256_permutevar8x32_ps(ans_third, _mm256_loadu_epi32(avxdot_indices))); +; 147 : } + + 0020d 49 8d a5 f0 01 + 00 00 lea rsp, QWORD PTR [r13+496] + 00214 5f pop rdi + 00215 5d pop rbp + 00216 41 5d pop r13 + 00218 c3 ret 0 +dot_43_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_43_sse +_TEXT SEGMENT +transpose$ = 224 +vector$ = 232 +ans$ = 240 +dot_43_sse PROC ; COMDAT + +; 118 : { + +$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:__43BC74EB_vector_dot@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 119 : dot_41_sse(transpose, vector, ans); + + 0002a 4c 8b 85 f0 00 + 00 00 mov r8, QWORD PTR ans$[rbp] + 00031 48 8b 95 e8 00 + 00 00 mov rdx, QWORD PTR vector$[rbp] + 00038 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR transpose$[rbp] + 0003f e8 00 00 00 00 call dot_41_sse + 00044 90 npad 1 + +; 120 : dot_41_sse(transpose, vector + 1, ans + 1); + + 00045 48 8b 85 f0 00 + 00 00 mov rax, QWORD PTR ans$[rbp] + 0004c 48 83 c0 10 add rax, 16 + 00050 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR vector$[rbp] + 00057 48 83 c1 10 add rcx, 16 + 0005b 4c 8b c0 mov r8, rax + 0005e 48 8b d1 mov rdx, rcx + 00061 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR transpose$[rbp] + 00068 e8 00 00 00 00 call dot_41_sse + 0006d 90 npad 1 + +; 121 : dot_41_sse(transpose, vector + 2, ans + 2); + + 0006e 48 8b 85 f0 00 + 00 00 mov rax, QWORD PTR ans$[rbp] + 00075 48 83 c0 20 add rax, 32 ; 00000020H + 00079 48 8b 8d e8 00 + 00 00 mov rcx, QWORD PTR vector$[rbp] + 00080 48 83 c1 20 add rcx, 32 ; 00000020H + 00084 4c 8b c0 mov r8, rax + 00087 48 8b d1 mov rdx, rcx + 0008a 48 8b 8d e0 00 + 00 00 mov rcx, QWORD PTR transpose$[rbp] + 00091 e8 00 00 00 00 call dot_41_sse + 00096 90 npad 1 + +; 122 : } + + 00097 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 0009e 5f pop rdi + 0009f 5d pop rbp + 000a0 c3 ret 0 +dot_43_sse ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_42_avx +_TEXT SEGMENT +ans_ptr$ = 8 +right_ptr$ = 40 +temp$ = 96 +transpose$ = 400 +vector$ = 408 +ans$ = 416 +dot_42_avx PROC ; COMDAT + +; 81 : { + +$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:__43BC74EB_vector_dot@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 82 : __2_columnset *ans_ptr = (__2_columnset *)ans, *right_ptr = (__2_columnset *)vector; + + 00035 49 8b 85 a0 01 + 00 00 mov rax, QWORD PTR ans$[r13] + 0003c 48 89 45 08 mov QWORD PTR ans_ptr$[rbp], rax + 00040 49 8b 85 98 01 + 00 00 mov rax, QWORD PTR vector$[r13] + 00047 48 89 45 28 mov QWORD PTR right_ptr$[rbp], rax + +; 83 : __m256 temp = ALIGN256(transpose->half[0]); + + 0004b b8 20 00 00 00 mov eax, 32 ; 00000020H + 00050 48 6b c0 00 imul rax, rax, 0 + 00054 49 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR transpose$[r13] + 0005b 48 03 c8 add rcx, rax + 0005e 48 8b c1 mov rax, rcx + 00061 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00065 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 84 : +; 85 : ans_ptr->stream = _mm256_dp_ps(temp, right_ptr->stream, 0B11110001); + + 0006a 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 0006e c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00073 c4 e3 7d 40 00 + f1 vdpps ymm0, ymm0, YMMWORD PTR [rax], 241 ; 000000f1H + 00079 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 0007d c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 86 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + + 00081 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00086 c4 e3 7d 06 45 + 60 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1 + 0008d c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 87 : ans_ptr->stream = _mm256_blend_ps( + + 00092 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 00096 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 0009b c4 e3 7d 40 00 + f2 vdpps ymm0, ymm0, YMMWORD PTR [rax], 242 ; 000000f2H + 000a1 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000a5 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 000a9 c4 e3 75 0c c0 + 22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H + 000af 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000b3 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 88 : ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110010), 0B00100010); +; 89 : +; 90 : temp = ALIGN256(transpose->half[1]); + + 000b7 b8 20 00 00 00 mov eax, 32 ; 00000020H + 000bc 48 6b c0 01 imul rax, rax, 1 + 000c0 49 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR transpose$[r13] + 000c7 48 03 c8 add rcx, rax + 000ca 48 8b c1 mov rax, rcx + 000cd c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 000d1 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 91 : ans_ptr->stream = _mm256_blend_ps( + + 000d6 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 000da c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 000df c4 e3 7d 40 00 + f4 vdpps ymm0, ymm0, YMMWORD PTR [rax], 244 ; 000000f4H + 000e5 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000e9 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 000ed c4 e3 75 0c c0 + 44 vblendps ymm0, ymm1, ymm0, 68 ; 00000044H + 000f3 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000f7 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 92 : ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110100), 0B01000100); +; 93 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + + 000fb c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00100 c4 e3 7d 06 45 + 60 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1 + 00107 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 94 : ans_ptr->stream = _mm256_blend_ps( + + 0010c 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 00110 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00115 c4 e3 7d 40 00 + f8 vdpps ymm0, ymm0, YMMWORD PTR [rax], 248 ; 000000f8H + 0011b 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 0011f c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 00123 c4 e3 75 0c c0 + 88 vblendps ymm0, ymm1, ymm0, 136 ; 00000088H + 00129 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 0012d c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 95 : ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11111000), 0B10001000); +; 96 : +; 97 : ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 3, 0, 1)); + + 00131 b8 10 00 00 00 mov eax, 16 + 00136 48 6b c0 01 imul rax, rax, 1 + 0013a 49 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 00141 48 03 c8 add rcx, rax + 00144 48 8b c1 mov rax, rcx + 00147 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 0014a b8 10 00 00 00 mov eax, 16 + 0014f 48 6b c0 01 imul rax, rax, 1 + 00153 49 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 0015a 48 03 c8 add rcx, rax + 0015d 48 8b c1 mov rax, rcx + 00160 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00163 0f c6 c8 b1 shufps xmm1, xmm0, 177 ; 000000b1H + 00167 0f 28 c1 movaps xmm0, xmm1 + 0016a b8 10 00 00 00 mov eax, 16 + 0016f 48 6b c0 01 imul rax, rax, 1 + 00173 49 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 0017a 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 98 : } + + 0017e 49 8d a5 70 01 + 00 00 lea rsp, QWORD PTR [r13+368] + 00185 5f pop rdi + 00186 5d pop rbp + 00187 41 5d pop r13 + 00189 c3 ret 0 +dot_42_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_42_sse +_TEXT SEGMENT +transpose$ = 224 +vector$ = 232 +ans$ = 240 +dot_42_sse PROC ; COMDAT + +; 47 : { + +$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:__43BC74EB_vector_dot@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 48 : ans[0] = _mm_dp_ps(transpose->column[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 + +; 49 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 50 : SSE_INSERT_SIMPLE(1, 2)); +; 51 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 52 : SSE_INSERT_SIMPLE(1, 3)); +; 53 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 54 : SSE_INSERT_SIMPLE(1, 4)); +; 55 : +; 56 : ans[1] = _mm_dp_ps(transpose->column[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 + +; 57 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 58 : SSE_INSERT_SIMPLE(1, 2)); +; 59 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 60 : SSE_INSERT_SIMPLE(1, 3)); +; 61 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 62 : SSE_INSERT_SIMPLE(1, 4)); +; 63 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_32_avx +_TEXT SEGMENT +ans_ptr$ = 8 +right_ptr$ = 40 +temp$ = 96 +transpose$ = 400 +vector$ = 408 +ans$ = 416 +dot_32_avx PROC ; COMDAT + +; 101 : { + +$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:__43BC74EB_vector_dot@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 102 : __2_columnset *ans_ptr = (__2_columnset *)ans, *right_ptr = (__2_columnset *)vector; + + 00035 49 8b 85 a0 01 + 00 00 mov rax, QWORD PTR ans$[r13] + 0003c 48 89 45 08 mov QWORD PTR ans_ptr$[rbp], rax + 00040 49 8b 85 98 01 + 00 00 mov rax, QWORD PTR vector$[r13] + 00047 48 89 45 28 mov QWORD PTR right_ptr$[rbp], rax + +; 103 : __m256 temp = transpose->part; + + 0004b 49 8b 85 90 01 + 00 00 mov rax, QWORD PTR transpose$[r13] + 00052 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00056 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 104 : +; 105 : ans_ptr->stream = _mm256_dp_ps(temp, right_ptr->stream, 0B11110001); + + 0005b 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 0005f c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00064 c4 e3 7d 40 00 + f1 vdpps ymm0, ymm0, YMMWORD PTR [rax], 241 ; 000000f1H + 0006a 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 0006e c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 106 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001); + + 00072 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 00077 c4 e3 7d 06 45 + 60 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1 + 0007e c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 107 : ans_ptr->stream = _mm256_blend_ps( + + 00083 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 00087 c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 0008c c4 e3 7d 40 00 + f2 vdpps ymm0, ymm0, YMMWORD PTR [rax], 242 ; 000000f2H + 00092 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 00096 c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 0009a c4 e3 75 0c c0 + 22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H + 000a0 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000a4 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 108 : ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110010), 0B00100010); +; 109 : +; 110 : temp = _mm256_set_m128(transpose->column[2], transpose->column[2]); + + 000a8 b8 10 00 00 00 mov eax, 16 + 000ad 48 6b c0 02 imul rax, rax, 2 + 000b1 b9 10 00 00 00 mov ecx, 16 + 000b6 48 6b c9 02 imul rcx, rcx, 2 + 000ba 49 8b 95 90 01 + 00 00 mov rdx, QWORD PTR transpose$[r13] + 000c1 c5 f8 10 04 0a vmovups xmm0, XMMWORD PTR [rdx+rcx] + 000c6 49 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR transpose$[r13] + 000cd c4 e3 7d 18 04 + 01 01 vinsertf128 ymm0, ymm0, XMMWORD PTR [rcx+rax], 1 + 000d4 c5 fc 11 45 60 vmovups YMMWORD PTR temp$[rbp], ymm0 + +; 111 : ans_ptr->stream = _mm256_blend_ps( + + 000d9 48 8b 45 28 mov rax, QWORD PTR right_ptr$[rbp] + 000dd c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR temp$[rbp] + 000e2 c4 e3 7d 40 00 + f4 vdpps ymm0, ymm0, YMMWORD PTR [rax], 244 ; 000000f4H + 000e8 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000ec c5 fc 10 08 vmovups ymm1, YMMWORD PTR [rax] + 000f0 c4 e3 75 0c c0 + 44 vblendps ymm0, ymm1, ymm0, 68 ; 00000044H + 000f6 48 8b 45 08 mov rax, QWORD PTR ans_ptr$[rbp] + 000fa c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0 + +; 112 : ans_ptr->stream, _mm256_dp_ps(temp, right_ptr->stream, 0B11110100), 0B01000100); +; 113 : +; 114 : ans[1] = _mm_shuffle_ps(ALIGN(ans[1]), ALIGN(ans[1]), _MM_SHUFFLE(2, 2, 0, 1)); + + 000fe b8 10 00 00 00 mov eax, 16 + 00103 48 6b c0 01 imul rax, rax, 1 + 00107 49 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 0010e 48 03 c8 add rcx, rax + 00111 48 8b c1 mov rax, rcx + 00114 0f 10 00 movups xmm0, XMMWORD PTR [rax] + 00117 b8 10 00 00 00 mov eax, 16 + 0011c 48 6b c0 01 imul rax, rax, 1 + 00120 49 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 00127 48 03 c8 add rcx, rax + 0012a 48 8b c1 mov rax, rcx + 0012d 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00130 0f c6 c8 a1 shufps xmm1, xmm0, 161 ; 000000a1H + 00134 0f 28 c1 movaps xmm0, xmm1 + 00137 b8 10 00 00 00 mov eax, 16 + 0013c 48 6b c0 01 imul rax, rax, 1 + 00140 49 8b 8d a0 01 + 00 00 mov rcx, QWORD PTR ans$[r13] + 00147 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 115 : } + + 0014b 49 8d a5 70 01 + 00 00 lea rsp, QWORD PTR [r13+368] + 00152 5f pop rdi + 00153 5d pop rbp + 00154 41 5d pop r13 + 00156 c3 ret 0 +dot_32_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_32_sse +_TEXT SEGMENT +transpose$ = 224 +vector$ = 232 +ans$ = 240 +dot_32_sse PROC ; COMDAT + +; 66 : { + +$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:__43BC74EB_vector_dot@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 67 : ans[0] = _mm_dp_ps(transpose->column[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 + +; 68 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 69 : SSE_INSERT_SIMPLE(1, 2)); +; 70 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 71 : SSE_INSERT_SIMPLE(1, 3)); +; 72 : +; 73 : ans[1] = _mm_dp_ps(transpose->column[0], vector[1], 0B11110001); + + 00110 b8 10 00 00 00 mov eax, 16 + 00115 48 6b c0 01 imul rax, rax, 1 + 00119 b9 10 00 00 00 mov ecx, 16 + 0011e 48 6b c9 00 imul rcx, rcx, 0 + 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 b8 10 00 00 00 mov eax, 16 + 00141 48 6b c0 01 imul rax, rax, 1 + 00145 48 8b 8d f0 00 + 00 00 mov rcx, QWORD PTR ans$[rbp] + 0014c 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0 + +; 74 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[1], vector[1], 0B11110001), + + 00150 b8 10 00 00 00 mov eax, 16 + 00155 48 6b c0 01 imul rax, rax, 1 + 00159 b9 10 00 00 00 mov ecx, 16 + 0015e 48 6b c9 01 imul rcx, rcx, 1 + 00162 48 8b 95 e0 00 + 00 00 mov rdx, QWORD PTR transpose$[rbp] + 00169 4c 8b 85 e8 00 + 00 00 mov r8, QWORD PTR vector$[rbp] + 00170 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx] + 00174 66 41 0f 3a 40 + 04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H + 0017c 48 8b 85 f0 00 + 00 00 mov rax, QWORD PTR ans$[rbp] + 00183 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 00186 66 0f 3a 21 c8 + 10 insertps xmm1, xmm0, 16 + 0018c 0f 28 c1 movaps xmm0, xmm1 + 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 + +; 75 : SSE_INSERT_SIMPLE(1, 2)); +; 76 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], 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 02 imul rcx, rcx, 2 + 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 + 20 insertps xmm1, xmm0, 32 ; 00000020H + 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 + +; 77 : SSE_INSERT_SIMPLE(1, 3)); +; 78 : } + + 001f6 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 001fd 5f pop rdi + 001fe 5d pop rbp + 001ff c3 ret 0 +dot_32_sse ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_31_avx +_TEXT SEGMENT +_double$ = 32 +tmp$ = 96 +transpose$ = 400 +vector$ = 408 +ans$ = 416 +dot_31_avx PROC ; COMDAT + +; 37 : { + +$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:__43BC74EB_vector_dot@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 38 : __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 + +; 39 : __m256 tmp = _mm256_dp_ps(transpose->part, _double, 0B11110001); + + 00066 49 8b 85 90 01 + 00 00 mov rax, QWORD PTR transpose$[r13] + 0006d c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax] + 00071 c4 e3 7d 40 45 + 20 f1 vdpps ymm0, ymm0, YMMWORD PTR _double$[rbp], 241 ; 000000f1H + 00078 c5 fc 11 45 60 vmovups YMMWORD PTR tmp$[rbp], ymm0 + +; 40 : *ans = _mm256_castps256_ps128( + + 0007d c5 fe 6f 05 00 + 00 00 00 vmovdqu ymm0, YMMWORD PTR avxdot_indices + 00085 c4 e2 7d 16 45 + 60 vpermps ymm0, ymm0, YMMWORD PTR tmp$[rbp] + 0008b 49 8b 85 a0 01 + 00 00 mov rax, QWORD PTR ans$[r13] + 00092 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 41 : _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices))); +; 42 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[2], *vector, 0B11110001), + + 00095 b8 10 00 00 00 mov eax, 16 + 0009a 48 6b c0 02 imul rax, rax, 2 + 0009e 49 8b 8d 90 01 + 00 00 mov rcx, QWORD PTR transpose$[r13] + 000a5 49 8b 95 98 01 + 00 00 mov rdx, QWORD PTR vector$[r13] + 000ac 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax] + 000b0 66 0f 3a 40 02 + f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H + 000b6 49 8b 85 a0 01 + 00 00 mov rax, QWORD PTR ans$[r13] + 000bd 0f 10 08 movups xmm1, XMMWORD PTR [rax] + 000c0 66 0f 3a 21 c8 + 20 insertps xmm1, xmm0, 32 ; 00000020H + 000c6 0f 28 c1 movaps xmm0, xmm1 + 000c9 49 8b 85 a0 01 + 00 00 mov rax, QWORD PTR ans$[r13] + 000d0 0f 11 00 movups XMMWORD PTR [rax], xmm0 + +; 43 : SSE_INSERT_SIMPLE(1, 3)); +; 44 : } + + 000d3 49 8d a5 70 01 + 00 00 lea rsp, QWORD PTR [r13+368] + 000da 5f pop rdi + 000db 5d pop rbp + 000dc 41 5d pop r13 + 000de c3 ret 0 +dot_31_avx ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_41_avx +_TEXT SEGMENT +_double$ = 32 +tmp$ = 96 +transpose$ = 400 +vector$ = 408 +ans$ = 416 +dot_41_avx PROC ; COMDAT + +; 18 : { + +$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:__43BC74EB_vector_dot@c + 0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00034 90 npad 1 + +; 19 : __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 + +; 20 : __m256 tmp = _mm256_dp_ps(transpose->half[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 + +; 21 : tmp = _mm256_blend_ps(tmp, _mm256_dp_ps(transpose->half[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 + +; 22 : 0B00100010); +; 23 : *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 + +; 24 : _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices))); +; 25 : } + + 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:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_31_sse +_TEXT SEGMENT +transpose$ = 224 +vector$ = 232 +ans$ = 240 +dot_31_sse PROC ; COMDAT + +; 28 : { + +$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:__43BC74EB_vector_dot@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 29 : *ans = _mm_dp_ps(transpose->column[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 + +; 30 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + 10 insertps xmm1, xmm0, 16 + 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 + +; 31 : SSE_INSERT_SIMPLE(1, 2)); +; 32 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 33 : SSE_INSERT_SIMPLE(1, 3)); +; 34 : } + + 000d1 48 8d a5 c8 00 + 00 00 lea rsp, QWORD PTR [rbp+200] + 000d8 5f pop rdi + 000d9 5d pop rbp + 000da c3 ret 0 +dot_31_sse ENDP +_TEXT ENDS +; Function compile flags: /Odtp /RTCsu /ZI +; File D:\NitloadIndustry\Ñо¿ÏîĿ\1-Flagship\TH2020\ProjectFile\ÄںËԴ´úÂë\StgSharp.C\vector_dot.c +; COMDAT dot_41_sse +_TEXT SEGMENT +transpose$ = 224 +vector$ = 232 +ans$ = 240 +dot_41_sse PROC ; COMDAT + +; 7 : { + +$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:__43BC74EB_vector_dot@c + 00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode + 00029 90 npad 1 + +; 8 : *ans = _mm_dp_ps(transpose->column[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 + +; 9 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 10 : SSE_INSERT_SIMPLE(1, 1)); +; 11 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 12 : SSE_INSERT_SIMPLE(1, 3)); +; 13 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->column[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 + +; 14 : SSE_INSERT_SIMPLE(1, 4)); +; 15 : } + + 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/StgSharp.C/x64/Debug/vector_dot.obj b/StgSharp.C/x64/Debug/vector_dot.obj new file mode 100644 index 00000000..e2bb6b52 Binary files /dev/null and b/StgSharp.C/x64/Debug/vector_dot.obj differ diff --git a/StgSharp.C/x64/Debug/vector_dot.sbr b/StgSharp.C/x64/Debug/vector_dot.sbr new file mode 100644 index 00000000..bc6142b4 Binary files /dev/null and b/StgSharp.C/x64/Debug/vector_dot.sbr differ diff --git a/StgSharp.Common/.nuspec b/StgSharp.Common/.nuspec new file mode 100644 index 00000000..fbb445e9 --- /dev/null +++ b/StgSharp.Common/.nuspec @@ -0,0 +1,17 @@ + + + + StgSharp + 1.0.0 + Nitload + Nitload + false + + + + + + + + + diff --git a/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin b/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin new file mode 100644 index 00000000..a6c8b397 Binary files /dev/null and b/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.metadata.v9.bin differ diff --git a/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.projects.v9.bin b/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.projects.v9.bin new file mode 100644 index 00000000..aa31d652 Binary files /dev/null and b/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.projects.v9.bin differ diff --git a/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.strings.v9.bin b/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.strings.v9.bin new file mode 100644 index 00000000..3d6ca935 Binary files /dev/null and b/StgSharp.Common/.vs/ProjectEvaluation/stgsharp.strings.v9.bin differ diff --git a/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db new file mode 100644 index 00000000..c1bb6030 Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/CodeChunks.db differ diff --git a/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db new file mode 100644 index 00000000..e5d4c7bd Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db differ diff --git a/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm new file mode 100644 index 00000000..be0ea137 Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-shm differ diff --git a/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal new file mode 100644 index 00000000..fabd6f58 Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/CopilotIndices/0.2.1634.3922/SemanticSymbols.db-wal differ diff --git a/StgSharp.Common/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 b/StgSharp.Common/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 00000000..584637d9 Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/DesignTimeBuild/.dtbcache.v2 differ diff --git a/StgSharp.Common/.vs/StgSharp/FileContentIndex/92be5d18-8537-44c7-935e-adcc6dd8469c.vsidx b/StgSharp.Common/.vs/StgSharp/FileContentIndex/92be5d18-8537-44c7-935e-adcc6dd8469c.vsidx new file mode 100644 index 00000000..2a8d9877 Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/FileContentIndex/92be5d18-8537-44c7-935e-adcc6dd8469c.vsidx differ diff --git a/StgSharp.Common/.vs/StgSharp/v17/.futdcache.v2 b/StgSharp.Common/.vs/StgSharp/v17/.futdcache.v2 new file mode 100644 index 00000000..86aed3d4 Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/v17/.futdcache.v2 differ diff --git a/StgSharp.Common/.vs/StgSharp/v17/.suo b/StgSharp.Common/.vs/StgSharp/v17/.suo new file mode 100644 index 00000000..016d83df Binary files /dev/null and b/StgSharp.Common/.vs/StgSharp/v17/.suo differ diff --git a/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.backup.json b/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.backup.json new file mode 100644 index 00000000..9d96a1d9 --- /dev/null +++ b/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.backup.json @@ -0,0 +1,12 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [] + } + ] +} \ No newline at end of file diff --git a/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.json b/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.json new file mode 100644 index 00000000..9d96a1d9 --- /dev/null +++ b/StgSharp.Common/.vs/StgSharp/v17/DocumentLayout.json @@ -0,0 +1,12 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u5185\u6838\u6E90\u4EE3\u7801\\StgSharp\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [] + } + ] +} \ No newline at end of file diff --git a/StgSharp.Common/Collections/BidirectionalDictionary.cs b/StgSharp.Common/Collections/BidirectionalDictionary.cs new file mode 100644 index 00000000..afc4e508 --- /dev/null +++ b/StgSharp.Common/Collections/BidirectionalDictionary.cs @@ -0,0 +1,207 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BidirectionalDictionary.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; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; + +namespace StgSharp.Commom.Collections +{ + public sealed class BidirectionalDictionary : IBidirectionalDictionary + { + + private readonly Dictionary _forward; + private readonly Dictionary _reverse; + + public BidirectionalDictionary() + { + _forward = new Dictionary(); + _reverse = new Dictionary(); + } + + public TFirst this[ TSecond key ] + { + get + { + if( _reverse.TryGetValue( key, out TFirst value ) ) { + return value; + } + throw new ArgumentException( + $"Cannot find key {key!.ToString()} in dictionary." ); + } + set + { + if( _reverse.TryGetValue( key, out TFirst origin ) ) { + _reverse[ key ] = value; + _forward.Remove( origin ); + } else { + _reverse.Add( key, value ); + } + _forward.Add( value, key ); + } + } + + public TSecond this[ TFirst key ] + { + get + { + if( _forward.TryGetValue( key, out TSecond value ) ) { + return value; + } + throw new ArgumentException( + $"Cannot find key {key!.ToString()} in dictionary." ); + } + set + { + if( _forward.TryGetValue( key, out TSecond origin ) ) { + _forward[ key ] = value; + _reverse.Remove( origin ); + } else { + _forward.Add( key, value ); + } + _reverse.Add( value, key ); + } + } + + public bool IsReadOnly => false; + + public ICollection FirstIndex => _forward.Keys; + + public ICollection SecondIndex => _reverse.Keys; + + public int Count => _forward.Count; + + public IReadOnlyDictionary Forward => new ReadOnlyDictionary( + _forward ); + + public IReadOnlyDictionary Reverse => new ReadOnlyDictionary( + _reverse ); + + public void Add( KeyValuePair item ) + { + if( _forward.ContainsKey( item.Key ) || _reverse.ContainsKey( + item.Value ) ) { + throw new ArgumentException( "Duplicate key or value." ); + } + _forward.Add( item.Key, item.Value ); + _reverse.Add( item.Value, item.Key ); + } + + public void Add( TFirst key, TSecond value ) + { + if( _forward.ContainsKey( key ) || _reverse.ContainsKey( value ) ) { + throw new ArgumentException( "Duplicate key or value." ); + } + _forward.Add( key, value ); + _reverse.Add( value, key ); + } + + public void Clear() + { + _forward.Clear(); + _reverse.Clear(); + } + + public bool Contains( KeyValuePair item ) + { + return _forward.Contains( item ) && _reverse.TryGetValue( + item.Value, out TFirst var ) && var!.Equals( item.Key ); + } + + public bool Contains( TSecond key ) + { + return _reverse.ContainsKey( key ); + } + + public bool Contains( TFirst key ) + { + return _forward.ContainsKey( key ); + } + + public void CopyTo( + KeyValuePair[] array, + int arrayIndex ) + { + if( array == null ) { + throw new ArgumentNullException( nameof( array ) ); + } + if( arrayIndex < 0 || arrayIndex > array.Length ) { + throw new ArgumentOutOfRangeException( nameof( arrayIndex ) ); + } + if( array.Length - arrayIndex < _forward.Count ) { + throw new ArgumentException( + "The array is too small to copy the elements." ); + } + + foreach( KeyValuePair pair in _forward ) { + array[ arrayIndex++ ] = pair; + } + } + + public IEnumerator> GetEnumerator() + { + foreach( KeyValuePair pair in _forward ) { + yield return pair; + } + } + + public bool Remove( TFirst key ) + { + throw new NotImplementedException(); + } + + public bool Remove( KeyValuePair item ) + { + if( _forward.Remove( item.Key ) ) { + return _reverse.Remove( item.Value ); + } + return false; + } + + public bool TryGetValue( TFirst key, out TSecond value ) + { + return _forward.TryGetValue( key, out value ); + } + + public bool TryGetValue( TSecond key, out TFirst value ) + { + return _reverse.TryGetValue( key, out value ); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Collections/CachePool.cs b/StgSharp.Common/Collections/CachePool.cs new file mode 100644 index 00000000..ce2d4d23 --- /dev/null +++ b/StgSharp.Common/Collections/CachePool.cs @@ -0,0 +1,63 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CachePool.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.Graphics.OpenGL; + +using System; +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Commom.Collections +{ + /* + public interface IPoolItem + { + + public int ID + { + get; + init; + } + + } + + public class CacheIndexPool : IEnumerable + where TItem: IPoolItem + { + + public CacheIndexPool( + Func + ) { } + + } + /**/ +} diff --git a/StgSharp.Common/Collections/CapacityFixedList.cs b/StgSharp.Common/Collections/CapacityFixedList.cs new file mode 100644 index 00000000..3fe2e3fa --- /dev/null +++ b/StgSharp.Common/Collections/CapacityFixedList.cs @@ -0,0 +1,178 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CapacityFixedList.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; +using System.Collections.Generic; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Commom.Collections +{ + public static class CapacityFixedListBuilder + { + internal static CapacityFixedList Create(ReadOnlySpan values) + { + return new CapacityFixedList(values); + } + } + + [CollectionBuilder(typeof(CapacityFixedListBuilder),nameof(CapacityFixedListBuilder.Create))] + public class CapacityFixedList : IList + { + + private T[] _values; + private int capacity, _index; + + public CapacityFixedList( int size ) + { + _values = new T[size]; + } + + public CapacityFixedList(ReadOnlySpan values) + { + _values = values.ToArray(); + } + + public T this[ int index ] + { + get => index < _index ? + _values[ index ] : throw new ArgumentOutOfRangeException( + nameof( index ) ); + set + { + if( index < _index ) { + _values[ index ] = value; + } else { + throw new ArgumentOutOfRangeException( nameof( index ) ); + } + } + } + + public bool IsReadOnly => false; + + public int Count => _index + 1; + + public void Add( T item ) + { + if( _index < capacity - 1 ) { + _index++; + this[ _index ] = item; + } + } + + public void Clear() + { + _values = new T[capacity]; + _index = 0; + } + + public bool Contains( T item ) + { + for( int i = 0; i <= _index; i++ ) { + if( item.Equals( _values[ i ] ) ) { + return true; + } + } + return false; + } + + public void CopyTo( T[] array, int arrayIndex ) + { + _values.CopyTo( array, arrayIndex ); + } + + public IEnumerator GetEnumerator() + { + for( int i = 0; i <= _index; i++ ) { + yield return _values[ i ]; + } + } + + public int IndexOf( T item ) + { + T v; + for( int i = 0; i <= _index; i++ ) { + if( ( v = _values[ i ] ) != null && v.Equals( item ) ) { + return i; + } + } + return -1; + } + + public bool Remove( T item ) + { + T v; + for( int i = 0; i <= _index; i++ ) { + if( ( v = _values[ i ] ) != null && v.Equals( item ) ) { + _values[ i ] = _values[ _index ]; + _index--; + return true; + } + } + return false; + } + + public void RemoveAll( Predicate predicate ) + { + for( int i = _index; i > 0; i-- ) { + if( predicate( _values[ i ] ) ) { + _values[ i ] = _values[ _index ]; + _index--; + } + } + } + + public void RemoveAt( int index ) + { + if( index <= _index ) { + _values[ index ] = _values[ _index ]; + _index--; + } + } + + public void Resize( int newSize ) + { + Array.Resize( ref _values, newSize ); + } + + IEnumerator IEnumerable.GetEnumerator() + { + yield return GetEnumerator(); + } + + void IList.Insert( int index, T item ) + { + throw new NotSupportedException(); + } + + }//------------------------------------- End of Class ------------------------------------------ +} diff --git a/StgSharp.Common/Collections/IBidrirectionalDictionary.cs b/StgSharp.Common/Collections/IBidrirectionalDictionary.cs new file mode 100644 index 00000000..fcacda8b --- /dev/null +++ b/StgSharp.Common/Collections/IBidrirectionalDictionary.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IBidrirectionalDictionary.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; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace StgSharp.Commom.Collections +{ + public interface IBidirectionalDictionary : IDictionary + { + + public TFirst this[ TSecond key ] + { + get; + set; + } + + public ICollection FirstIndex + { + get; + } + + public ICollection SecondIndex + { + get; + } + + public IReadOnlyDictionary Forward + { + get; + } + + public IReadOnlyDictionary Reverse + { + get; + } + + /// + /// Determines whether the contains + /// the specified key. + /// + /// The value to locate in the . + /// + /// true if the contains an element + /// with the specified key; otherwise, false. + /// + public bool Contains( TSecond key ); + + /// + /// Determines whether the contains + /// the specified key. + /// + /// The value to locate in the . + /// + /// true if the contains an element + /// with the specified key; otherwise, false. + /// + public bool Contains( TFirst key ); + + public bool TryGetValue( TSecond key, out TFirst value ); + + #pragma warning disable CA1033 + ICollection IDictionary.Keys => FirstIndex; + + ICollection IDictionary.Values => SecondIndex; + + bool IDictionary.ContainsKey( TFirst key ) => Contains( + key ); +#pragma warning restore CA1033 + } +} \ No newline at end of file diff --git a/StgSharp.Common/Collections/IHashMultiplexer.cs b/StgSharp.Common/Collections/IHashMultiplexer.cs new file mode 100644 index 00000000..bfc871f5 --- /dev/null +++ b/StgSharp.Common/Collections/IHashMultiplexer.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IHashMultiplexer.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.Collections.Generic; +using System.Diagnostics.CodeAnalysis; + +namespace StgSharp.Collections +{ + public interface IHashMultiplexer : IEqualityComparer + { + + int RemainedMultiplexCount + { + get; + set; + } + + void CacheHash( T obj, int count ); + + void ExtendCache( int count ); + + int ForceComputeHash( T count ); + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Collections/ListSegment.cs b/StgSharp.Common/Collections/ListSegment.cs new file mode 100644 index 00000000..54fb0c39 --- /dev/null +++ b/StgSharp.Common/Collections/ListSegment.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Serialization; + +namespace StgSharp.Collections +{ + /// + /// Part of a collection. This contains a direct reference to origin collection, + /// so all change to origin collection will be reflected in this object. + /// + /// + public struct ListSegment : ICollection + { + private List _collection; + private int _begin; + private int _length; + + + public ListSegment(List collection, int begin, int length) + { + ArgumentNullException.ThrowIfNull(collection); + ArgumentOutOfRangeException.ThrowIfLessThan(begin, 0); + ArgumentOutOfRangeException.ThrowIfLessThan(length, 0); + ArgumentOutOfRangeException.ThrowIfLessThan(begin + length, collection.Count); + _collection = collection; + _begin = begin; + _length = length; + } + + public int Count => _length; + + public bool IsReadOnly => true; + + public T this[int indexValue] + { + get { + ArgumentOutOfRangeException.ThrowIfLessThan(indexValue, 0); + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual(indexValue, _length); + return _collection[indexValue + _begin]; + } + } + + void ICollection.Add(T item) + { + throw new NotSupportedException(); + } + + void ICollection.Clear() + { + throw new NotSupportedException(); + } + + public bool Contains(T item) + { + var index= _collection.IndexOf(item); + return index >= _begin && index < _length + index; + } + + public void CopyTo(T[] array, int arrayIndex) + { + ArgumentNullException.ThrowIfNull(array); + var span = CollectionsMarshal.AsSpan(_collection).Slice(_begin, _length); + var target = new Span(array, arrayIndex,_length); + span.CopyTo(target); + } + + public IEnumerator GetEnumerator() + { + for (int i = _begin; i < _length; i++) + { + yield return this[i]; + } + } + + bool ICollection.Remove(T item) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} diff --git a/StgSharp.Common/Collections/PartialDictionary.cs b/StgSharp.Common/Collections/PartialDictionary.cs new file mode 100644 index 00000000..71bd9a39 --- /dev/null +++ b/StgSharp.Common/Collections/PartialDictionary.cs @@ -0,0 +1,184 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionary.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; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Net.Http.Headers; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary : IDictionary + { + private readonly Dictionary _source; + private readonly HashSet _keys; + private readonly PartialDictionaryValues _values; + + public PartialDictionary( + Dictionary source, + TKey[] index ) + { + _source = source; + _keys = new HashSet( index ); + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public PartialDictionary( + Dictionary source, + HashSet keys ) + { + _source = source; + _keys = keys; + foreach( TKey item in _keys ) { + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); + } + } + _values = new PartialDictionaryValues( this ); + } + + public PartialDictionary( + Dictionary source, + TKey[] index, IHashMultiplexer multiplexer + ) + { + _source = source; + _keys = new HashSet(index); + foreach (TKey item in _keys) + { + if (!_source.ContainsKey(item)) + { + _source.Add(item, default!); + } + } + _values = new PartialDictionaryValues(this); + } + + public TValue this[ TKey key ] + { + get + { + if( _keys.Contains( key ) ) { + return _source[ key ]; + } + throw new KeyNotFoundException(); + } + set + { + if( _keys.Contains( key ) ) { + _source[ key ] = value; + } + throw new KeyNotFoundException(); + } + } + + public ICollection Keys => _keys; + + public ICollection Values => _values; + + public int Count => _keys.Count; + + public bool Contains( KeyValuePair item ) + { + return _keys.Contains( item.Key ) && _source.Contains( item ); + } + + public bool ContainsKey( TKey key ) + { + return _keys.Contains( key ); + } + + public void CopyTo( KeyValuePair[] array, int arrayIndex ) + { + throw new NotImplementedException(); + } + + public IEnumerator> GetEnumerator() + { + foreach( TKey item in _keys ) { + yield return new KeyValuePair( + item, _source[ item ] ); + } + } + + public bool TryGetValue( TKey key, out TValue value ) + { + if( _keys.Contains( key ) ) { + value = _source[ key ]; + return true; + } + value = default!; + return false; + } + + void ICollection>.Add( + KeyValuePair item ) + { + return; + } + + void ICollection>.Clear() + { + throw new NotSupportedException(); + } + + bool ICollection>.Remove( + KeyValuePair item ) + { + throw new NotSupportedException(); + } + + bool ICollection>.IsReadOnly => true; + + void IDictionary.Add( TKey key, TValue value ) + { + return; + } + + bool IDictionary.Remove( TKey key ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } +} diff --git a/StgSharp.Common/Collections/PartialDictionaryValues.cs b/StgSharp.Common/Collections/PartialDictionaryValues.cs new file mode 100644 index 00000000..b70ced59 --- /dev/null +++ b/StgSharp.Common/Collections/PartialDictionaryValues.cs @@ -0,0 +1,104 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PartialDictionaryValues.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; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Collections +{ + public partial class PartialDictionary + { + + internal sealed class PartialDictionaryValues : ICollection + { + + private readonly PartialDictionary _values; + + public PartialDictionaryValues( + PartialDictionary value ) + { + _values = value; + } + + public bool IsReadOnly => true; + + public int Count => _values.Count; + + public bool Contains( TValue item ) + { + foreach( KeyValuePair kvp in _values ) { + if( kvp.Value != null && kvp.Value.Equals( item ) ) { + return true; + } + } + return false; + } + + public void CopyTo( TValue[] array, int arrayIndex ) + { + foreach( KeyValuePair kvp in _values ) { + array[ arrayIndex ] = kvp.Value; + arrayIndex++; + } + } + + public IEnumerator GetEnumerator() + { + foreach( TKey key in _values._keys ) { + yield return _values._source[ key ]; + } + } + + void ICollection.Add( TValue item ) + { + return; + } + + void ICollection.Clear() + { + return; + } + + bool ICollection.Remove( TValue item ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } + + } +} diff --git a/StgSharp.Common/Collections/StringHashMultiplexer.cs b/StgSharp.Common/Collections/StringHashMultiplexer.cs new file mode 100644 index 00000000..38bea082 --- /dev/null +++ b/StgSharp.Common/Collections/StringHashMultiplexer.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyMultiplexer.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.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; + +namespace StgSharp.Collections +{ + public sealed class StringHashMultiplexer : IHashMultiplexer + { + + private int _initCount, _remainedCount, _hashCache, _hashLast; + private string _source, _sourceLast; + + public int RemainedMultiplexCount + { + get => _remainedCount; + set => _initCount = value; + } + + public void CacheHash( string obj, int count ) + { + _hashCache = ForceComputeHash( obj ); + _initCount = count; + _remainedCount = _initCount; + _source = obj; + } + + public bool Equals( string x, string y ) + { + return x == y; + } + + public void ExtendCache( int count ) + { + _initCount += count; + _remainedCount += count; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe int ForceComputeHash( [NotNull] string obj ) + { + int hash; + fixed( char* cPtr = obj.AsSpan() ) { + hash = InternalIO.Intrinsic + .city_hash_simplify( cPtr, obj.Length ); + } + return hash; + } + + public int GetHashCode( string obj ) + { + if( _remainedCount > 0 && ReferenceEquals( _source, obj ) ) { + _remainedCount--; + return _hashCache; + } + if( ReferenceEquals( _sourceLast, obj ) ) { + return _hashLast; + } + _sourceLast = obj; + _hashLast = ForceComputeHash( obj ); + return _hashLast; + } + + } + + public sealed class ConcurrentStringHashMultiplexer : IHashMultiplexer, IDisposable + { + + private bool disposedValue; + private readonly ThreadLocal _multiplexers = + new( () => new StringHashMultiplexer() ); + + public int RemainedMultiplexCount + { + get => _multiplexers.Value.RemainedMultiplexCount; + set => _multiplexers.Value.RemainedMultiplexCount = value; + } + + public void CacheHash( string obj, int count ) + { + throw new NotImplementedException(); + } + + // ~ConcurrentStringHashMultiplexer() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + public bool Equals( string x, string y ) + { + return x == y; + } + + public void ExtendCache( int count ) + { + _multiplexers.Value.ExtendCache( count ); + } + + public unsafe int ForceComputeHash( [NotNull] string obj ) + { + int hash; + fixed( char* cPtr = obj.AsSpan() ) { + hash = InternalIO.Intrinsic + .city_hash_simplify( cPtr, obj.Length ); + } + return hash; + } + + public int GetHashCode( string obj ) + { + return _multiplexers.Value.GetHashCode( obj ); + } + + private void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + _multiplexers.Dispose(); + } + + disposedValue = true; + } + } + + } +} diff --git a/StgSharp.Common/Controlling/Controls/BattleField.cs b/StgSharp.Common/Controlling/Controls/BattleField.cs new file mode 100644 index 00000000..3f0d2d59 --- /dev/null +++ b/StgSharp.Common/Controlling/Controls/BattleField.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BattleField.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.Math; + +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 new file mode 100644 index 00000000..a02a98d8 --- /dev/null +++ b/StgSharp.Common/Controlling/Controls/ButtonGroup.cs @@ -0,0 +1,159 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ButtonGroup.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.Math; + +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 new file mode 100644 index 00000000..326b01b0 --- /dev/null +++ b/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CharacterIndexImage.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.Math; + +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 new file mode 100644 index 00000000..32c7b151 --- /dev/null +++ b/StgSharp.Common/Controlling/Controls/ControllingIntem.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ControllingIntem.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.Math; + +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 new file mode 100644 index 00000000..b9c906d2 --- /dev/null +++ b/StgSharp.Common/Controlling/Controls/DecorationBox.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// 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.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Text; + +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 + { + 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 new file mode 100644 index 00000000..b334e9e3 --- /dev/null +++ b/StgSharp.Common/Controlling/Controls/MarkingLable.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MarkingLable.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.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Math; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; + +namespace StgSharp.Controls +{ + public class MarkingLabel : ControllingItem + { + + private PlainGeometryMesh marker; + + private TimeFunction _movement; + + private Vec2 _currentPosition, _movementVec; + + public MarkingLabel( PlainGeometryMesh marker, TimeFunction movement ) + { + this.marker = marker; + _movement = movement; + } + + public bool IsEntity => true; + + public ReadOnlySpan TextureBox + { + get => marker.TextureCoord; + } + + public Rectangle BoundingBox + { + get; + set; + } + + public Vec2 Position + { + get; + set; + } + + public IEnumerator GetEnumerator() + { + yield return marker; + } + + public void Move( Vec2 movement ) + { + if( !_movement.IsComplete ) { + Position = _currentPosition + ( _movement.Calculate() * _movementVec ); + } + } + + public void MoveTo( Vec2 target ) + { + Move( target - Position ); + } + + } +} diff --git a/StgSharp.Common/Controlling/Controls/TriggerButton.cs b/StgSharp.Common/Controlling/Controls/TriggerButton.cs new file mode 100644 index 00000000..b135005f --- /dev/null +++ b/StgSharp.Common/Controlling/Controls/TriggerButton.cs @@ -0,0 +1,248 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TriggerButton.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.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Math; + +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 new file mode 100644 index 00000000..24f75d92 --- /dev/null +++ b/StgSharp.Common/Controlling/KeyEnum.cs @@ -0,0 +1,238 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyEnum.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.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Internal.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 = glConst.GLFW_JOYSTICK_1, + Joystick_2 = glConst.GLFW_JOYSTICK_2, + Joystick_3 = glConst.GLFW_JOYSTICK_3, + Joystick_4 = glConst.GLFW_JOYSTICK_4, + Joystick_5 = glConst.GLFW_JOYSTICK_5, + Joystick_6 = glConst.GLFW_JOYSTICK_6, + Joystick_7 = glConst.GLFW_JOYSTICK_7, + Joystick_8 = glConst.GLFW_JOYSTICK_8, + Joystick_9 = glConst.GLFW_JOYSTICK_9, + Joystick_10 = glConst.GLFW_JOYSTICK_10, + Joystick_11 = glConst.GLFW_JOYSTICK_11, + Joystick_12 = glConst.GLFW_JOYSTICK_12, + Joystick_13 = glConst.GLFW_JOYSTICK_13, + Joystick_14 = glConst.GLFW_JOYSTICK_14, + Joystick_15 = glConst.GLFW_JOYSTICK_15, + Joystick_16 = glConst.GLFW_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 new file mode 100644 index 00000000..d56ee7b1 --- /dev/null +++ b/StgSharp.Common/Controlling/KeyEventAttribute.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyEventAttribute.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 +{ + [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 new file mode 100644 index 00000000..327b8a32 --- /dev/null +++ b/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IClickTrigger.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.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 new file mode 100644 index 00000000..a8d76f10 --- /dev/null +++ b/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="JoystickTrigger.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.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 new file mode 100644 index 00000000..3988d883 --- /dev/null +++ b/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs @@ -0,0 +1,85 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyTrigger.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.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 new file mode 100644 index 00000000..9e9adbb3 --- /dev/null +++ b/StgSharp.Common/Controlling/UsrActivity/MouseTrigger.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MouseTrigger.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.Math; + +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 new file mode 100644 index 00000000..fc377378 --- /dev/null +++ b/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TriggetFactory.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.Math; + +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/Data/GlobalData/root.cs b/StgSharp.Common/Data/GlobalData/root.cs new file mode 100644 index 00000000..1b2b9795 --- /dev/null +++ b/StgSharp.Common/Data/GlobalData/root.cs @@ -0,0 +1,56 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="root.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.Internal; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static unsafe partial class StgSharp + { + + private static byte leastUnusedArea; + private static List root = new List(); + private static SSD defaultIdProvider = new SSD(); + + public static byte NewArea() + { + byte ret = leastUnusedArea; + leastUnusedArea++; + return ret; + } + + }//------------------ end of class --------------------- +} diff --git a/StgSharp.Common/Data/RandomGenerator.cs b/StgSharp.Common/Data/RandomGenerator.cs new file mode 100644 index 00000000..4be8ca1d --- /dev/null +++ b/StgSharp.Common/Data/RandomGenerator.cs @@ -0,0 +1,169 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RandomGenerator.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.HighPerformance; + +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using System.Xml.Serialization; + +namespace StgSharp.Data +{ + public class RandomGenerator + { + + private byte[] currentKey; + + private readonly byte[] originKey; + private int cycleCount; + private SHA512 hash; + + public RandomGenerator() : this( DateTime.UtcNow.ToBinary() ) { } + + public RandomGenerator( object source ) + { + try { + if( source == null ) { + throw new ArgumentNullException( nameof( source ) ); + } + XmlSerializer s = new XmlSerializer( source.GetType() ); + using( StringWriter sw = new StringWriter() ) { + s.Serialize( sw, source ); + string data = sw.ToString(); + originKey = Encoding.UTF8.GetBytes( data ); + } + } + catch( Exception ) { + throw; + } + hash = SHA512.Create(); + originKey = hash.ComputeHash( originKey ); + currentKey = originKey; + cycleCount = 0; + } + + public int TotalGeneratedRandom + { + get => cycleCount; + } + + public unsafe int GenRandomInt() + { + M128 source = PrivateRand(); + cycleCount++; + + /* + float d0 = MathF.Sin(1 / source.Read(0)); + float d1 = MathF.Sin(1 / source.Read(1)); + float d2 = MathF.Sin(1 / source.Read(2)); + float d3 = MathF.Sin(1 / source.Read(3)); + + source.Write(0, *( short*)&d3); + source.Write(2, *((short*)&d2+1)); + source.Write(4, *( short*)&d1); + source.Write(6, *((short*)&d0+1)); + + /**/ + + return source.Read( cycleCount % 4 ); + } + + public byte GenRandomInt8() + { + cycleCount++; + if( cycleCount % 64 == 0 ) { + PrivateRand(); + } + return currentKey[ cycleCount % 64 ]; + } + + public float GenRandomSingle() + { + cycleCount++; + + while( true ) { + M128 source = PrivateRand(); + + uint + temp0 = source.Read( 0 ), + temp1 = source.Read( 2 ); + + if( temp0 * temp1 != 0 ) { + float ret = ( ( temp0 % temp1 ) * 1.0f ) / temp1; + if( ret < 0.335f ) { + ret = ret * ( ( ret * ( -0.7811934f ) ) + 1.4489113f ); + } else { + ret = ( ret * ( ( ret * ( -0.1158368f ) ) + 1.0580600f ) ) + 0.0590584f; + } + if( ret > 1 ) { + continue; + } + return ret; + } + } + } + + public void Reset() + { + currentKey = originKey; + cycleCount = 0; + } + + private unsafe M128 PrivateRand() + { + currentKey = hash.ComputeHash( currentKey ); + M128 ret; + fixed( byte* bptr = currentKey ) { + switch( ( cycleCount % 16 ) / 4 ) { + case 0: + ret = *( ( ( M128* )bptr ) + 0 ); + break; + case 1: + ret = *( ( ( M128* )bptr ) + 1 ); + break; + case 2: + ret = *( ( ( M128* )bptr ) + 2 ); + break; + case 3: + ret = *( ( ( M128* )bptr ) + 3 ); + break; + default: + throw new InvalidOperationException(); + } + } + + //Console.WriteLine(ret.ToString(16)); + return ret; + } + + } +} diff --git a/StgSharp.Common/Data/SSD/Area.cs b/StgSharp.Common/Data/SSD/Area.cs new file mode 100644 index 00000000..0a3a8a36 --- /dev/null +++ b/StgSharp.Common/Data/SSD/Area.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Area.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.Internal.FileIO; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + /// + /// An independent storage area, used as the only folder type in root folder. Contains several + /// files reference as virtual disc. Data is actually stored in s in certain RAID mode. + /// + public partial class Area { } +} diff --git a/StgSharp.Common/Data/SSD/DataHead.cs b/StgSharp.Common/Data/SSD/DataHead.cs new file mode 100644 index 00000000..07dd56a3 --- /dev/null +++ b/StgSharp.Common/Data/SSD/DataHead.cs @@ -0,0 +1,79 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DataHead.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.HighPerformance; + +using System; +using System.Numerics; +using System.Runtime.InteropServices; + +namespace StgSharp.Internal +{ + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct SSDSegmentHead + { + + [FieldOffset( 12 )] internal byte size; + + [FieldOffset( 0 )] internal M128 data; + [FieldOffset( 13 )] public byte selfDefine_1; + [FieldOffset( 14 )] public byte selfDefine_2; + [FieldOffset( 15 )] public byte selfDefine_3; + + [FieldOffset( 0 )] public int globalID; + [FieldOffset( 4 )] public int nextID; + [FieldOffset( 8 )] public int previousHash; + + public int Size + { + get => ( ( int )size ) + 1; + set + { + if( ( value > 256 ) || ( value < 0 ) ) { + throw new ArgumentOutOfRangeException(); + } + size = ( byte )( value - 1 ); + } + } + + public unsafe byte[] GetBytes() + { + byte[] ret = new byte[16]; + fixed( Vector4* vptr = &data.Vec ) { + byte* bptr = ( byte* )vptr; + for( int i = 0; i < 15; i++ ) { + ret[ i ] = *bptr; + } + } + return ret; + } + + } +} diff --git a/StgSharp.Common/Data/SSD/DataSegment.cs b/StgSharp.Common/Data/SSD/DataSegment.cs new file mode 100644 index 00000000..52d62561 --- /dev/null +++ b/StgSharp.Common/Data/SSD/DataSegment.cs @@ -0,0 +1,184 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DataSegment.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.HighPerformance; +using StgSharp.HighPerformance; +using StgSharp.Internal.Intrinsic; + +using StgSharp.Math; + +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.Internal +{ + [StructLayout( LayoutKind.Explicit, Size = StgSharp.ssdSegmentLength * 16 )] + public unsafe struct SSDSegment : IComparable, IComparable + { + + [FieldOffset( 16 )] public fixed byte Data[ + 16 * ( StgSharp.ssdSegmentLength - 1 ) ]; + [FieldOffset( 12 )] public int DataHash; + [FieldOffset( 8 )] public int PreviousHash; + [FieldOffset( 0 * 16 )] public SSDSegmentHead Head; + + public SSDSegment( int previousHash ) + { + this.PreviousHash = previousHash; + } + + public byte this[ int index ] + { + get + { + if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + throw new IndexOutOfRangeException(); + } + return Data[ index ]; + } + + set + { + if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + throw new IndexOutOfRangeException(); + } + Data[ index ] = value; + } + } + + public int ID + { + get { return Head.globalID; } + set { Head.globalID = value; } + } + + public short Size => Head.size; + + public void FillRandomBytes( int begin ) + { + if( begin > 255 ) { + return; + } + for( int i = begin; i < 255; i++ ) { + Data[ i ] = Scaler.Random(); + } + } + + public static SSDSegment FromStream( byte[] stream ) + { + if( stream.Length != 16 * StgSharp.ssdSegmentLength ) { + throw new ArgumentException(); + } + SSDSegment ret = new SSDSegment(); + fixed( byte* bptr = stream ) { + ret.Head.data = *( M128* )bptr; + for( int i = 1; i < StgSharp.ssdSegmentLength; i++ ) { + ret.WriteData( + i - 1, *( M128* )( bptr + ( 16 * i ) ) ); + } + } + return ret; + } + + public byte[] GetBytes() + { + byte[] ret = new byte[16 * StgSharp.ssdSegmentLength]; + fixed( M128* mptr = &Head.data ) { + fixed( byte* aptr = ret ) { + Vector4* vsptr = ( Vector4* )mptr; + Vector4* vtptr = ( Vector4* )aptr; + for( int i = 0; i < 18; i++ ) { + *( vtptr + i ) = *( vsptr + i ); + } + } + } + + return ret; + } + + public int GetDataHash() + { + Vector4 v = Vector4.One; + fixed( M128* mptr = &Head.data ) { + Vector4* vptr = ( Vector4* )mptr; + for( int i = 0; i < StgSharp.ssdSegmentLength - 1; i += 1 ) { + v += ( *vptr ) * 31; + } + } + M128 m = new M128( v ); + DataHash = m.Vec.GetHashCode(); + return DataHash; + } + + public override int GetHashCode() + { + int ret = 17; + fixed( M128* mptr = &Head.data ) { + Vector4* vptr = ( Vector4* )mptr; + for( int i = 0; i < StgSharp.ssdSegmentLength; i++ ) { + ret = ( ret + ( *vptr ).GetHashCode() ) * 31; + } + } + return ret; + } + + public unsafe T ReadData( int index ) where T: struct + { + fixed( byte* bptr = Data ) { + T* tptr = ( T* )bptr; + return *( tptr + index ); + } + } + + public unsafe void WriteData( int index, T value ) where T: struct + { + fixed( byte* bptr = Data ) { + T* tptr = ( T* )bptr; + *( tptr + index ) = value; + } + } + + int IComparable.CompareTo( int other ) + { + return ID.CompareTo( other ); + } + + int IComparable.CompareTo( SSDSegment other ) + { + return ID.CompareTo( other.ID ); + } + + } +} diff --git a/StgSharp.Common/Data/SSD/SSD.cs b/StgSharp.Common/Data/SSD/SSD.cs new file mode 100644 index 00000000..ce6a5ca4 --- /dev/null +++ b/StgSharp.Common/Data/SSD/SSD.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SSD.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.Internal.FileIO; + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; + +namespace StgSharp.Internal +{ + public partial class SSD + { + + private Dictionary fileList; + + private FileStream file; + private SSDrawHead head; + + public SSD() + { + fileList = new Dictionary(); + } + + public SSD( FileStream fileStream ) + { + fileList = new Dictionary(); + file = fileStream; + } + + public static SSD FromFile( string fileRoute ) + { + return new SSD( + new FileStream( fileRoute, FileMode.Open, FileAccess.Read ) ) + { + }; + } + + } +} diff --git a/StgSharp.Common/Data/SSD/SSDVirtualFolder.cs b/StgSharp.Common/Data/SSD/SSDVirtualFolder.cs new file mode 100644 index 00000000..68dbb1d6 --- /dev/null +++ b/StgSharp.Common/Data/SSD/SSDVirtualFolder.cs @@ -0,0 +1,80 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SSDVirtualFolder.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.Internal.FileIO; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Internal +{ + public class SSDFolder : ISSDSerializable + { + + internal Dictionary folders; + internal int _folderID; + internal string _name; + + internal SSDFolder() + { + folders = new Dictionary(); + } + + internal SSDFolder( string name ) + { + if( name == "root" ) { + throw new ArgumentException( + "Name cannot be root," + "it is preserved for root file indexer." ); + } + if( name == "default" ) { + throw new ArgumentException( + "Name cannot be default," + "it is preserved for default file id provider." ); + } + _name = name; + folders = new Dictionary(); + } + + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.VirtualFolder; + + public void FromBytes( byte[] stream ) + { + throw new NotImplementedException(); + } + + //TODO 虚拟文件夹的GetBytes好难写 + public byte[] GetBytes() + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Common/Data/SSD/SSDraw.cs b/StgSharp.Common/Data/SSD/SSDraw.cs new file mode 100644 index 00000000..409d9b05 --- /dev/null +++ b/StgSharp.Common/Data/SSD/SSDraw.cs @@ -0,0 +1,79 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SSDraw.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.Graphics.ShaderEdit; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; +using System.Xml.Serialization; + +namespace StgSharp.Internal.FileIO +{ + public class SSDraw + { + + private byte[] data; + + public SSDraw( string name, Stream streamSource ) + { + if( ( streamSource == null ) || ( streamSource.Length == 0 ) ) { + throw new ArgumentNullException( nameof( streamSource ) ); + } + Name = name; + data = new byte[streamSource.Length]; + streamSource.Read( data.AsSpan() ); + } + + public SSDrawHead Head + { + get; + set; + } + + public string Name + { + get; + set; + } + + } + + [StructLayout( LayoutKind.Explicit, Size = 32 * 16 )] + public unsafe struct SSDrawHead { } +} diff --git a/StgSharp.Common/Data/Serialize/Define.cs b/StgSharp.Common/Data/Serialize/Define.cs new file mode 100644 index 00000000..dce0b6d3 --- /dev/null +++ b/StgSharp.Common/Data/Serialize/Define.cs @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Define.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.Text; + +namespace StgSharp.Internal +{ + /// + /// A class contains a sets of methods to serialize several types + /// + public static partial class Serializer { } +} diff --git a/StgSharp.Common/Data/Serialize/ISSDSerializable.cs b/StgSharp.Common/Data/Serialize/ISSDSerializable.cs new file mode 100644 index 00000000..1067586e --- /dev/null +++ b/StgSharp.Common/Data/Serialize/ISSDSerializable.cs @@ -0,0 +1,109 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ISSDSerializable.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.Internal +{ + public interface ISSDSerializable + { + + public SerializableTypeCode SSDTypeCode + { + get; + } + + public byte[] GetBytes(); + + internal void FromBytes( byte[] stream ); + + } + + public enum SerializableTypeCode + { + + Unknown = 0, + IndexTable = 1, + PixelImage = 2, + VectorImage = 3, + Audio = 4, + Shader = 5, + Text = 6, + RawData = 7, + VirtualFolder = int.MaxValue, + + } + + public static partial class Serializer + { + + public static T Deserialize( byte[] stream ) + where T: ISSDSerializable + { + T serializableObject = Activator.CreateInstance(); + serializableObject.FromBytes( stream ); + return serializableObject; + } + + public static string GetNameTail( SerializableTypeCode typeCode ) + { + switch( typeCode ) { + case SerializableTypeCode.IndexTable: + return "_idt"; + case SerializableTypeCode.PixelImage: + return "_pim"; + case SerializableTypeCode.VectorImage: + return "_vim"; + case SerializableTypeCode.Audio: + return "_wav"; + case SerializableTypeCode.Shader: + return "_gls"; + case SerializableTypeCode.Text: + return "_txt"; + case SerializableTypeCode.RawData: + return "_raw"; + case SerializableTypeCode.VirtualFolder: + return "_fod"; + default: + throw new ArgumentException( "Unknown file type" ); + } + } + + public static byte[] Serialize( ISSDSerializable serializableObject ) + { + return serializableObject.GetBytes(); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Data/ValueBox.cs b/StgSharp.Common/Data/ValueBox.cs new file mode 100644 index 00000000..31a8111c --- /dev/null +++ b/StgSharp.Common/Data/ValueBox.cs @@ -0,0 +1,101 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ValueBox.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.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Data +{ + public interface IValueBox + { + + ref object ValueReference + { + get; + } + + static virtual IValueBox AsGeneric( IValueBox box ) + where T: struct + { + if( box is not IValueBox genericBox ) { + return null; + } + return genericBox; + } + + static virtual bool IsGeneric( IValueBox box ) where T: struct + { + return box is IValueBox; + } + + } + + public interface IValueBox where T: struct + { + + T Value + { + get; + set; + } + + } + + /// + /// A class attempt to reduce cost of boxing, though still a bit slower than direct access to + /// origin value type instance. + /// + /// Type of instance to be boxed. + public class ValueBox : IValueBox, IValueBox where T: struct + { + + private T _value; + + public ValueBox( T value ) + { + _value = value; + } + + public ref object ValueReference => ref Unsafe.As( + ref _value ); + + public T Value + { + get => _value; + set => _value = value; + } + + } +} diff --git a/StgSharp.Common/Entities/BehaviorArgs.cs b/StgSharp.Common/Entities/BehaviorArgs.cs new file mode 100644 index 00000000..01cc4e09 --- /dev/null +++ b/StgSharp.Common/Entities/BehaviorArgs.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BehaviorArgs.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Entities +{ + public abstract class BehaviorArgs { } +} diff --git a/StgSharp.Common/Entities/Enemy.cs b/StgSharp.Common/Entities/Enemy.cs new file mode 100644 index 00000000..6b5a48cc --- /dev/null +++ b/StgSharp.Common/Entities/Enemy.cs @@ -0,0 +1,66 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Enemy.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +namespace StgSharp.Entities +{ + public class Enemy : IEntity + { + + internal Launcher _awardLauncher; + internal Launcher _commonBulletLauncher; + internal Launcher _dieBulletLauncher; + public bool _selectalbe; + + public Launcher AwardLauncher + { + get; + set; + } + + public Launcher CommonBulletLauncher + { + get; + set; + } + + public Launcher DieBulletLauncher + { + get; + set; + } + + public override void OnRenderFrame() + { + CommonBulletLauncher.Launch(); + } + + } +} diff --git a/StgSharp.Common/Entities/EntityPartical.cs b/StgSharp.Common/Entities/EntityPartical.cs new file mode 100644 index 00000000..9b654c1a --- /dev/null +++ b/StgSharp.Common/Entities/EntityPartical.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="EntityPartical.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Entities +{ + public abstract class EntityPartical : IEntity { } +} diff --git a/StgSharp.Common/Entities/IEntity.cs b/StgSharp.Common/Entities/IEntity.cs new file mode 100644 index 00000000..9ed41485 --- /dev/null +++ b/StgSharp.Common/Entities/IEntity.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IEntity.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.Math; + +using System; +using System.Collections.Generic; + +namespace StgSharp +{ + public abstract class IEntity + { + + protected uint _bornTick; + internal Func _movHandler; + internal LinkedList _collisionBox; + internal Point _basePoint; + internal Point _pos; + internal Point _position; + internal PlainGeometryCollisionSensor _collisionSensor; + internal string _texture; + + /// + /// X position of an enenmy entity + /// + public float X + { + get; + set; + } + + /// + /// Y position of an enemy entity + /// + public float Y + { + get; + set; + } + + public LinkedList CollisionBox + { + get => _collisionBox; + set => _collisionBox = value; + } + + /// + /// A sensor used for checking out if a bullet hit a player or something else + /// + public PlainGeometryCollisionSensor CollisionSensor + { + get => _collisionSensor; + set => _collisionSensor = value; + } + + public string TextureGL + { + get; + set; + } + + /// + /// A 2D vector presenting the position of an enemy entity, position can also be visited by + /// X, Y + /// + public Vec2 Location + { + get; + } + + public abstract void OnRenderFrame(); + + public void SetLocation( Point p ) + { + _pos = p; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Entities/Launcher.cs b/StgSharp.Common/Entities/Launcher.cs new file mode 100644 index 00000000..1a1073ee --- /dev/null +++ b/StgSharp.Common/Entities/Launcher.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Launcher.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.Entities; +using StgSharp.Math; + +namespace StgSharp +{ + public class Launcher where T: IEntity + { + + internal uint[] launchtick; //发射子弹的内部计时 + internal Counter _internalParameter; //发射器的内部计时器 + + internal EntityPartical _bulletSample; //发射的子弹类型 + /* + *用于发射其他的实体,主要是子弹 和 掉落物 + */ + + internal Vec2 _center; //发射器的参考位置,运动轨迹的方程应当基于这个参考点构建 + + public EntityPartical Bullet + { + get => _bulletSample; + set => _bulletSample = value; + } + + internal virtual void Launch() { } + + } +} diff --git a/StgSharp.Common/Entities/Partical.cs b/StgSharp.Common/Entities/Partical.cs new file mode 100644 index 00000000..b4609948 --- /dev/null +++ b/StgSharp.Common/Entities/Partical.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Partical.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; + +namespace StgSharp +{ + public class Partical : IEntity + { + + public override void OnRenderFrame() + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Common/Entities/Player.cs b/StgSharp.Common/Entities/Player.cs new file mode 100644 index 00000000..1fed616b --- /dev/null +++ b/StgSharp.Common/Entities/Player.cs @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Player.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp +{ + public abstract class Player : IEntity + { + + internal float _velocity; + + public float Velocity => _velocity; + + } +} diff --git a/StgSharp.Common/Environment/Dialogue.cs b/StgSharp.Common/Environment/Dialogue.cs new file mode 100644 index 00000000..172060cd --- /dev/null +++ b/StgSharp.Common/Environment/Dialogue.cs @@ -0,0 +1,185 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Dialogue.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.IO.Pipes; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; + +namespace StgSharp +{ + public static class Dialogue + { + + private static Process? _dialogueProcess; + private static AnonymousPipeServerStream _dialogueClientPipe,_dialogueServerPipe; + private static ConcurrentBag msgCache = new ConcurrentBag( + ); + private static int _readAndWriteThreadId; + private static ProcessStartInfo _dialogueProcessInfo; + private static StreamReader _dr; + private static StreamWriter _dw; + + public static bool NeedShowWhenStartup + { + get; + set; + } + + public static void SetReadAndWriteThread(Thread thread) + { + _readAndWriteThreadId = thread.ManagedThreadId; + } + + private static void AssertThread() + { + if (_readAndWriteThreadId != Environment.CurrentManagedThreadId) + { + throw new InvalidOperationException("Communication with dialogue can only call from certain thread."); + } + } + + internal static void CreateDialogueProcessIfNotExist() + { + if( _dialogueProcess != null ) { + return; + } + if (!File.Exists(_dialogueProcessInfo.FileName)) + { + + } + _dialogueProcess = Process.Start( _dialogueProcessInfo ); + + _dr = new StreamReader(_dialogueClientPipe); + _dw = new StreamWriter(_dialogueServerPipe); + + _dialogueProcess!.Exited += DialogueProcessExitCallback; + + _dialogueServerPipe.DisposeLocalCopyOfClientHandle(); + _dialogueClientPipe.DisposeLocalCopyOfClientHandle(); + } + + private static void DialogueProcessExitCallback(object? sender, EventArgs e) + { + _dialogueProcess = null; + _dr.Close(); + _dw.Close(); + } + + internal static void LoadDialogue() + { + _dialogueServerPipe = new AnonymousPipeServerStream( + PipeDirection.Out, HandleInheritability.Inheritable ); + _dialogueClientPipe = new AnonymousPipeServerStream( + PipeDirection.In, HandleInheritability.Inheritable ); + + string route = Assembly.GetAssembly( typeof( StgSharp ) ).Location; + string path = Path.GetDirectoryName( route ); + + string exeName; + + if( RuntimeInformation.IsOSPlatform( OSPlatform.Windows ) ) { + exeName = ".exe"; + } else if( RuntimeInformation.IsOSPlatform( OSPlatform.Linux ) || RuntimeInformation.IsOSPlatform( + OSPlatform.OSX ) ) { + exeName = string.Empty; + } else { + throw new PlatformNotSupportedException( "Unknown OS platform" ); + } + + string consoleRoute = Path.Combine(path, @"StgSharpTerminalDialogue", $@"StgSharpTerminalDialogue{exeName}"); + + _dialogueProcessInfo = new ProcessStartInfo + { + FileName = consoleRoute, + Arguments = $"{_dialogueServerPipe.GetClientHandleAsString()} {_dialogueClientPipe.GetClientHandleAsString()}", + UseShellExecute = true, + RedirectStandardOutput = false, + }; + + } + + internal static void PostMessage( + string instruction, + params string[] operands) + { + CreateDialogueProcessIfNotExist(); + + _dw.WriteLine($"{instruction} {operands}"); + + } + + public static void PostError(Exception ex) + { + CreateDialogueProcessIfNotExist(); + + _dw.WriteLine($"posterror {ex.Message}"); + + _dialogueProcess!.Exited -= DialogueProcessExitCallback; + } + + internal static void UnloadDialogue() + { + if( _dialogueProcess != null ) { + _dialogueProcess.Kill(); + } + _dialogueProcess = null; + + _dialogueServerPipe.Dispose(); + _dialogueClientPipe.Dispose(); + } + + internal static string WaitCertainReturn( string target ) + { + if( _dialogueProcess == null ) { + return string.Empty; + } + + string temp = string .Empty; + do { + temp = _dr.ReadLine(); + temp = temp ?? string.Empty; + if( !temp!.StartsWith( target ) ) { + break; + } + } while (true); + + int index = temp.IndexOf( ' ' ); + return index != -1 ? temp.Substring( index + 1 ) : string.Empty; + } + + } +} diff --git a/StgSharp.Common/Environment/ErrorDefine.cs b/StgSharp.Common/Environment/ErrorDefine.cs new file mode 100644 index 00000000..05123fb7 --- /dev/null +++ b/StgSharp.Common/Environment/ErrorDefine.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ErrorDefine.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 +{ + public class UniformEmptyReferenceException : Exception + { + + public UniformEmptyReferenceException( string program, string name ) + : base( + $"Location -1 returned when trying to find uniform {name} in shader program {program}" ) { } + + } +} diff --git a/StgSharp.Common/Environment/GlobalSetting.cs b/StgSharp.Common/Environment/GlobalSetting.cs new file mode 100644 index 00000000..205e9638 --- /dev/null +++ b/StgSharp.Common/Environment/GlobalSetting.cs @@ -0,0 +1,108 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GlobalSetting.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.Reflection; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static unsafe partial class StgSharp + { + + internal const int ssdSegmentLength = 16; + + private static byte[] _currentHash; + + private static bool _inited; + private static int _mainThreadID = -1; + + public static byte[] CurrentAssemblyHash + { + get + { + if( _currentHash == null ) { + string route = Assembly.GetExecutingAssembly().Location; + string time = DateTime.UtcNow.ToString(); + using( SHA256 sh = SHA256.Create() ) { + byte[] bytes = Encoding.UTF8.GetBytes( route ); + _currentHash = sh.ComputeHash( bytes ); + } + } + return _currentHash; + } + } + + public static int MainThreadID + { + get => ( _mainThreadID == -1 ) ? + throw new InvalidOperationException( + "StgSharp environment is not inited. " + "Main thread id is not available" ) : _mainThreadID; + } + + /// + /// CustomizeInit an instance of OpenGL program, This method should be called before any + /// other StgSharp api. + /// + public static void InitGL( int majorVersion, int minorVersion ) + { + if( API == default ) { + API = GraphicAPI.GL; + } + if( API != GraphicAPI.GL ) { + return; + } + InternalIO.InternalInitGL( majorVersion, minorVersion ); + } + + public static class GlobalSetting + { + + private static bool vSyncActivated; + + public static bool VSyncActivated + { + get => vsyncActivated; + set + { + InternalIO.glfwSwapInterval( value ? 1 : 0 ); + vsyncActivated = value; + } + } + + } + + }//-------------------------------------- End of Class ---------------------------------------// +} \ No newline at end of file diff --git a/StgSharp.Common/Environment/Monitors.cs b/StgSharp.Common/Environment/Monitors.cs new file mode 100644 index 00000000..753ed36b --- /dev/null +++ b/StgSharp.Common/Environment/Monitors.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Monitors.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.Graphics; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static partial class StgSharp + { + + private static unsafe IntPtr[] monitorsArray; + + public static unsafe IntPtr[] MonitorsHandleArray + { + get + { + if( monitorsArray == null ) { + int count = 0; + IntPtr* arrayhandle = InternalIO.glfwGetMonitors( &count ); + monitorsArray = new IntPtr[count]; + Marshal.Copy( + ( IntPtr )arrayhandle, monitorsArray, 0, count ); + Marshal.FreeHGlobal( ( IntPtr )arrayhandle ); + } + return monitorsArray; + } + } + + public static IntPtr DefaultMonitor + { + get { return MonitorsHandleArray[ 0 ]; } + } + + } +} diff --git a/StgSharp.Common/Environment/Platform.cs b/StgSharp.Common/Environment/Platform.cs new file mode 100644 index 00000000..1aba30a3 --- /dev/null +++ b/StgSharp.Common/Environment/Platform.cs @@ -0,0 +1,209 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Platform.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.Envitronment; +// using StgSharp.Envitronment.Win32; +// using StgSharp.Graphics; +// using StgSharp.Math; + +using StgSharp.Internal; +using StgSharp.Internal.Intrinsic; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +#if Windows + +// using Windows.Win32.UI.WindowsAndMessaging; +// using Windows.Win32; +// using Windows.Win32.Foundation; +// using Windows.Win32.Graphics.OpenGL; +// using Windows.Win32.Graphics.Gdi; +// using Windows.Win32.UI; + +#endif + +namespace StgSharp +{ + internal enum GraphicAPI : byte + { + + GL, + DX, + VK + + } + + public static partial class StgSharp + { + + /// + /// Version of current StgSharp platform. Main version represent in hundred's digit, and sub + /// version represent in ten's digit. + /// + public const long version = 430; + + private static bool vsyncActivated; + + private static uint markCount = 0; + internal static GraphicAPI API = default; + + public static unsafe void Init() + { + mainTimeProvider = new StgSharpTime(); + MainTimeProvider.StartProvidingTime(); + InternalIO.glfwInit(); + InternalIO.InternalAppendLog( "\n\n\n" ); + InternalIO.InternalWriteLog( + $"Program {Assembly.GetEntryAssembly()!.FullName} Started.", + LogType.Info ); + _mainThreadID = Environment.CurrentManagedThreadId; + + + Dialogue.LoadDialogue(); + if (Dialogue.NeedShowWhenStartup) + { + Dialogue.CreateDialogueProcessIfNotExist(); + } + + InternalIO.InitIntrinsicContext(); + } + + public static void LogError( Exception ex ) + { + InternalIO.InternalWriteLog( ex.Message, LogType.Error ); + } + + public static void LogInfo( string log ) + { + InternalIO.InternalWriteLog( log, LogType.Info ); + } + + public static void LogWarning( string log ) + { + InternalIO.InternalWriteLog( log, LogType.Warning ); + } + + public static void LogWarning( Exception notVerySeriesException ) + { + InternalIO.InternalWriteLog( + notVerySeriesException.Message, LogType.Warning ); + } + + public static void Mark( bool needConsole ) + { + markCount++; + if( needConsole ) { + Console.WriteLine( markCount ); + } + } + + public static void Terminate() + { + MainTimeProvider.StopProvidingTime(); + InternalIO.glfwTerminate(); + } + + public static void Track( + object target, + string message, + bool isConsole, + [CallerFilePath] string filePath = "", + [CallerMemberName] string callerName = "", + [CallerLineNumber] int lineNumber = 0 ) + { + Type t = target.GetType(); + string log = $"Tracked object: {nameof(target)}\t\tType:{t.Name}\n"; + FieldInfo[] fieldInfo = t.GetFields( + BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance ); + log += "|\tFieldName\t|\tFieldType\t|\tFieldValue\t|\n"; + foreach( FieldInfo field in fieldInfo ) { + log += $"|{field.Name}\t\t|{field.FieldType}\t\t|{field.GetValue(target)}\t\t|\n"; + } + log += $"Tracking at:\n{filePath}\t{callerName}\tline {lineNumber}\n"; + log += $"Additional information:\n{message}\n"; + if( isConsole ) { + Console.WriteLine( log ); + } else { + InternalIO.InternalWriteLog( log, LogType.Info ); + } + } + + /// + /// Write a log message to log file, and mark the _level of this message. + /// + /// A string contains information of how current evironment runs. + /// The severity of current message. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static void WriteLog( string message, LogType logType ) + { + InternalIO.InternalWriteLog( message, logType ); + } + + internal static TDele ConvertAPI( IntPtr funcPtr ) + { + if( funcPtr == IntPtr.Zero ) { + throw new InvalidCastException( + "Failed to convert api, the function pointer is zero." ); + } + try { + return Marshal.GetDelegateForFunctionPointer( funcPtr ); + } + catch( Exception ) { + throw; + } + } + + internal static Delegate ConvertAPI( IntPtr funcPtr, Type T ) + { + if( funcPtr == IntPtr.Zero ) { + throw new InvalidCastException( + "Failed to convert api, the function pointer is zero." ); + } + try { + return Marshal.GetDelegateForFunctionPointer( funcPtr, T ); + } + catch( Exception ) { + throw; + } + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Environment/globalKeyStat.cs b/StgSharp.Common/Environment/globalKeyStat.cs new file mode 100644 index 00000000..afddb8ab --- /dev/null +++ b/StgSharp.Common/Environment/globalKeyStat.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="globalKeyStat.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.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public static partial class StgSharp + { + + private static ConcurrentDictionary keyListener + = new ConcurrentDictionary(); + + public static KeyStatus CheckKey( KeyboardKey key ) + { + return keyListener.GetOrAdd( ( int )key, KeyStatus.RELEASE ); + } + + } +} diff --git a/StgSharp.Common/Geometries/Coordination/CoordinationBase.cs b/StgSharp.Common/Geometries/Coordination/CoordinationBase.cs new file mode 100644 index 00000000..e86c9be5 --- /dev/null +++ b/StgSharp.Common/Geometries/Coordination/CoordinationBase.cs @@ -0,0 +1,84 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CoordinationBase.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.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public abstract class CoordinationBase + { + + private bool globalCoordAvailable; + private CoordinationBase localCoordination; + private Matrix44 coordMat; + + public CoordinationBase( CoordinationBase localCoordination ) + { + this.localCoordination = localCoordination; + coordMat = new Matrix44(); + } + + public virtual Point LocalOrigin + { + get => new Point( coordMat.colum3.XYZ ); + internal set => coordMat.colum3.XYZ = value.Coord; + } + + public virtual Vec3 LocalX + { + get => coordMat.colum0.XYZ; + internal set => coordMat.colum0.XYZ = value; + } + + public virtual Vec3 LocalY + { + get => coordMat.colum1.XYZ; + internal set => coordMat.colum1.XYZ = value; + } + + public virtual Vec3 LocalZ + { + get => coordMat.colum2.XYZ; + set => coordMat.colum2.XYZ = value; + } + + protected ref Matrix44 CoordMat + { + get => ref coordMat; + } + + } +} diff --git a/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs b/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs new file mode 100644 index 00000000..e8624a1e --- /dev/null +++ b/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainCoordinate.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.Math; + +using System; +using System.Collections.Generic; +using System.Net.Http.Headers; +using System.Text; + +namespace StgSharp.Geometries +{ + public class PlainCoordinate : CoordinationBase + { + + private static PlainCoordinate statndardPlainCoordination = new PlainCoordinate( + null, new Point( 0, 0, 0 ), new Vec3( 1, 0, 0 ), + new Vec3( 0, 1, 0 ) ); + + public PlainCoordinate( + CoordinationBase local, + Point origin, + Vec3 xAxis, + Vec3 yAxis ) + : base( local ) + { + CoordMat = Matrix44.Unit; + + CoordMat.colum0 = new Vec4( xAxis, 0 ); + CoordMat.colum1 = new Vec4( yAxis, 0 ); + CoordMat.colum2 = new Vec4( + Linear.Normalize( Vec3.Cross( xAxis, yAxis ) ), 0 ); + + LocalOrigin = origin; + } + + public static PlainCoordinate StandardPlainCoordination => statndardPlainCoordination; + + } +} diff --git a/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs b/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs new file mode 100644 index 00000000..4e83172d --- /dev/null +++ b/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SpaceCoordinate.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.Math; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Geometries +{ + public class SpaceCoordinate : CoordinationBase + { + + public SpaceCoordinate( + CoordinationBase localCoordination, + Point origin, + Vec3 xAxis, + Vec3 yAxis, + Vec3 zAxis ) + : base( localCoordination ) { } + + } +} diff --git a/StgSharp.Common/Geometries/Coordination/StreamLocalCoordinate.cs b/StgSharp.Common/Geometries/Coordination/StreamLocalCoordinate.cs new file mode 100644 index 00000000..2f311de4 --- /dev/null +++ b/StgSharp.Common/Geometries/Coordination/StreamLocalCoordinate.cs @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StreamLocalCoordinate.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.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + /* + public class StreamLocalCoordinate : CoordinationBase + { + } + /**/ +} diff --git a/StgSharp.Common/Geometries/GemoryException.cs b/StgSharp.Common/Geometries/GemoryException.cs new file mode 100644 index 00000000..1189a134 --- /dev/null +++ b/StgSharp.Common/Geometries/GemoryException.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GemoryException.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.Runtime.Serialization; + +namespace StgSharp.Geometries +{ + public unsafe class ToUpperDimensionException : Exception + { + + protected ToUpperDimensionException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } + + public ToUpperDimensionException() { } + + public ToUpperDimensionException( string message ) : base( message ) { } + + public ToUpperDimensionException( + string message, + Exception innerException ) + : base( message, innerException ) { } + + } + + /// + /// 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + /// + public class UnusedVertexException : Exception + { + + protected UnusedVertexException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } + + public UnusedVertexException() { } + + public UnusedVertexException( string message ) : base( message ) { } + + public UnusedVertexException( string message, Exception innerException ) + : base( message, innerException ) { } + + } +} diff --git a/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs b/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs new file mode 100644 index 00000000..c8833636 --- /dev/null +++ b/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GeometryOperation.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.Math; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Geometries +{ +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate Vec3 GeometryMotionDelegate( + TimeSpanProvider timeSource, + out float rotation ); + + public class GeometryMotion + { + + private bool isIncrementMode; + private bool sourceIsStatic; + private GeometryMotionDelegate movement; + private IntPtr handle; + private TimeSpanProvider time; + + public unsafe GeometryMotion( + bool isIncreament, + TimeSpanProvider timeSource, + GeometryMotionDelegate motionDelegate ) + { + isIncrementMode = isIncreament; + time = timeSource; + if( motionDelegate == null ) { + handle = ( IntPtr )( delegate* )&defaultMotion; + movement = defaultMotion; + } else if( motionDelegate.Method.IsStatic ) { + sourceIsStatic = true; + handle = Marshal.GetFunctionPointerForDelegate( motionDelegate ); + movement = motionDelegate; + } else { + movement = motionDelegate; + } + + //sourceIsStatic = false; + } + + public bool IsIncrement + { + get => isIncrementMode; + } + + public static GeometryMotion DefaultMotion + { + get => new GeometryMotion( true, null, null ); + } + + public unsafe void RunMotion( ref Vec3 coord, ref float rotation ) + { + float rot; + Vec3 vec; + if( sourceIsStatic ) { + vec = ( ( delegate* unmanaged[Cdecl] )handle )( + time, out rot ); + } else { + vec = movement( time, out rot ); + } + + if( isIncrementMode ) { + coord += vec; + rotation += rot; + } else { + coord = vec; + rotation = rot; + } + } + + private static Vec3 defaultMotion( + TimeSpanProvider provider, + out float rotation ) + { + rotation = 0; + return Vec3.Zero; + } + + }//------------------------------- End of Class ------------------------------- +} diff --git a/StgSharp.Common/Geometries/GeometryScaler/Angle.cs b/StgSharp.Common/Geometries/GeometryScaler/Angle.cs new file mode 100644 index 00000000..2b7d1dec --- /dev/null +++ b/StgSharp.Common/Geometries/GeometryScaler/Angle.cs @@ -0,0 +1,178 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Angle.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.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math +{ + public static partial class GeometryScaler + { + + internal const float DegToRad = 180 / Scaler.Pi; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( Radius r ) + { + return MathF.Cos( r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( Degree r ) + { + return MathF.Cos( r._degree / DegToRad ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sin( Radius r ) + { + return MathF.Sin( r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sin( Degree r ) + { + return MathF.Sin( r._degree / DegToRad ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Tan( Radius r ) + { + return MathF.Tan( r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Tan( Degree r ) + { + return MathF.Tan( r._degree / DegToRad ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Degree ToDegree( float value ) + { + return new Degree( value ); + } + + } + + public struct Degree + { + + internal float _degree; + + public Degree( float dgree ) + { + _degree = dgree; + } + + public static implicit operator Radius( Degree d ) + { + return new Radius( d._degree / GeometryScaler.DegToRad ); + } + + } + + public struct Radius + { + + internal float _radius; + + [Obsolete( "Unsafe, you may forget this is radius.", true )] + public Radius() { } + + public Radius( float radius ) + { + _radius = radius; + } + + public static Radius Zero + { + get => new Radius( 0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator -( Radius r ) + { + return new Radius( -r._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator -( Radius left, Radius Right ) + { + return new Radius( left._radius - Right._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( Radius left, Radius right ) + { + return left._radius != right._radius; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator *( Radius left, float right ) + { + return new Radius( left._radius * right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator /( Radius left, float right ) + { + return new Radius( left._radius / right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float operator /( Radius left, Radius right ) + { + return left._radius / right._radius; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator +( Radius left, Radius Right ) + { + return new Radius( left._radius + Right._radius ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Radius left, Radius right ) + { + return left._radius == right._radius; + } + + public static implicit operator Degree( Radius r ) + { + return new Degree( ( r._radius * 180 ) / Scaler.Pi ); + } + + } +} diff --git a/StgSharp.Common/Geometries/IGeometry.cs b/StgSharp.Common/Geometries/IGeometry.cs new file mode 100644 index 00000000..22fda049 --- /dev/null +++ b/StgSharp.Common/Geometries/IGeometry.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IGeometry.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.Math; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public interface IGeometry + { + + public Point this[ int index ] + { + get; + set; + } + + #pragma warning disable CA1819 + public Vec4[] VertexStream + #pragma warning restore CA1819 + { + get; + } + + public CoordinationBase Coordination + { + get; + } + + public int VertexCount + { + get; + } + + public ReadOnlySpan VertexIndices + { + get; + } + + } +} diff --git a/StgSharp.Common/Geometries/IGeomtryBuffer.cs b/StgSharp.Common/Geometries/IGeomtryBuffer.cs new file mode 100644 index 00000000..3dc01ff7 --- /dev/null +++ b/StgSharp.Common/Geometries/IGeomtryBuffer.cs @@ -0,0 +1,40 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IGeomtryBuffer.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.Geometries +{ + public interface IGeomtryBuffer { } +} diff --git a/StgSharp.Common/Geometries/IInstancing.cs b/StgSharp.Common/Geometries/IInstancing.cs new file mode 100644 index 00000000..33e26535 --- /dev/null +++ b/StgSharp.Common/Geometries/IInstancing.cs @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IInstancing.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.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public interface IInstancing + { + + public float Rotation + { + get { return GlobalBuffer.CoordAndRotationList[ BufferId ].W; } + set + { + Vec4 temp = GlobalBuffer.CoordAndRotationList[ BufferId ]; + temp.W = value; + GlobalBuffer.CoordAndRotationList[ BufferId ] = temp; + } + } + + public float Scale + { + get { return GlobalBuffer.ScalingList[ BufferId ]; } + set { GlobalBuffer.ScalingList[ BufferId ] = value; } + } + + public GeometryMotion Motion + { + get; + set; + } + + public IInstancingBuffer GlobalBuffer + { + get; + internal set; + } + + public int BufferId + { + get; + internal set; + } + + public Vec3 CenterPositionGlobal + { + get; + internal set; + } + + public Vec3 Coord + { + get { return GlobalBuffer.CoordAndRotationList[ BufferId ].XYZ; } + set { GlobalBuffer.CoordAndRotationList[ BufferId ] = new Vec4( + value.vec ); } + } + + public void Move() + { + (Vec3 coord, float rotation) = (Coord, Rotation); + Motion.RunMotion( ref coord, ref rotation ); + (Coord, Rotation) = (coord, rotation); + } + + } +} diff --git a/StgSharp.Common/Geometries/IInstancingBuffer.cs b/StgSharp.Common/Geometries/IInstancingBuffer.cs new file mode 100644 index 00000000..85e0841b --- /dev/null +++ b/StgSharp.Common/Geometries/IInstancingBuffer.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IInstancingBuffer.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.Math; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Geometries +{ + public interface IInstancingBuffer + { + + public Span CoordAndRotationSpan + { + get; + } + + public Span ScalingSpan + { + get; + } + + internal IGeometry TypicalShape + { + get; + } + + internal List InstanceList + { + get; + } + + internal List CoordAndRotationList + { + get; + } + + internal List ScalingList + { + get; + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs b/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs new file mode 100644 index 00000000..b90df786 --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs @@ -0,0 +1,85 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Cordinate.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.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + [StructLayout( LayoutKind.Sequential )] + public struct PartialPlainCoordinate + { + + internal Matrix32 axis; + + /// + /// The origin of this coordinate. + /// + public Vec3 origin; + + public PartialPlainCoordinate( + Vec3 origin, + Vec3 horiziontial, + Vec3 vertical ) + { + this.origin = origin; + axis = new Matrix32(); + #if NET5_0_OR_GREATER + Unsafe.SkipInit( out axis.mat ); + #endif + axis.colum0 = horiziontial; + axis.colum1 = vertical; + } + + /// + /// The horizontial axis of the coordinate. Point to the right direction. + /// + public Vec3 axis_H => axis.colum0; + + /// + /// The vertical axis of the coordinate. Point to the top direction. + /// + public Vec3 axis_V => axis.colum1; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public Vec3 GetRealLocate( Vec2 raletiveLocation ) + { + return origin + axis.VerticalVecMultiply( raletiveLocation ); + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/GeometryOperation.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/GeometryOperation.cs new file mode 100644 index 00000000..dbd0206c --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/GeometryOperation.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GeometryOperation.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.Math; + +using System.Runtime.CompilerServices; + +namespace StgSharp.Geometries +{ + public static unsafe class GeometryOperation + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 DefaultMotion( int tick ) + { + return default( Vec3 ); + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs new file mode 100644 index 00000000..a6773c55 --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IPlainEntity.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.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public interface IPlainEntity + { + + public Vec2 CenterPosition + { + get; + set; + } + + public bool CollideWith( IPlainEntity entity ); + + } + + public class PlainEntity : IPlainEntity + { + + private PlainGeometry _shape; + + public PlainEntity( PlainGeometry shape ) + { + _shape = shape; + } + + bool IPlainEntity.CollideWith( IPlainEntity entity ) + { + throw new NotImplementedException(); + } + + Vec2 IPlainEntity.CenterPosition + { + get => _shape.Coordination.LocalOrigin.Coord.XY; + set => throw new InvalidOperationException(); + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs new file mode 100644 index 00000000..d9581574 --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ParticleOnPlain.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.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public class ParticleOnPlain : IInstancing, IPlainEntity + { + + public ParticleOnPlain( PlainInstancingBuffer buffer ) + { + if( buffer == null ) { + throw new ArgumentNullException( paramName: nameof( buffer ) ); + } + GlobalBuffer = buffer; + BufferId = buffer.CreateInstanceID(); + ( ( IInstancingBuffer )buffer ).InstanceList.Add( this ); + } + + public GeometryMotion Motion + { + get; + set; + } + + public IInstancingBuffer GlobalBuffer + { + get; + set; + } + + public int BufferId + { + get; + set; + } + + Vec3 IInstancing.CenterPositionGlobal + { + get; + set; + } + + bool IPlainEntity.CollideWith( IPlainEntity entity ) + { + throw new NotImplementedException(); + } + + Vec2 IPlainEntity.CenterPosition + { + get => GlobalBuffer.CoordAndRotationList[ BufferId ].XY; + set => throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs new file mode 100644 index 00000000..dd5466bf --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainGeometry.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.Graphics; +using StgSharp.Math; + +using System; +using System.ComponentModel; + +namespace StgSharp.Geometries +{ + /// + /// Plain geometry only contains straight sides. + /// + public abstract class PlainGeometry : IGeometry + { + + protected Vec4[] vertexMat; + internal CoordinationBase coordinate; + + internal PlainGeometry( CoordinationBase coordination ) + { + coordinate = coordination; + } + + public Point this[ int index ] + { + get => new Point( vertexMat[ index ] ); + set => vertexMat[ index ].vec = value.coordVec; + } + + public int VertexCount => this.vertexMat.Length; + + public abstract ReadOnlySpan VertexIndices + { + get; + } + + #pragma warning disable CA1819 + public Vec4[] VertexStream => vertexMat; + + public CoordinationBase Coordination => this.coordinate; +#pragma warning restore CA1819 + } +} \ No newline at end of file diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs new file mode 100644 index 00000000..86e54b61 --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs @@ -0,0 +1,217 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainInstancingBuffer.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.Math; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Numerics; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Geometries +{ + public class PlainInstancingBuffer : IDisposable, IEnumerable, IInstancingBuffer + where T: IInstancing + { + + private bool disposedValue; + + private CoordinatePlain globalCorrdinnate; + private List coordList; + private List instanceList; + private List scalingList; + private Mutex mutex; + + public PlainInstancingBuffer() + { + coordList = new List( capacity: 100 ); + instanceList = new List( capacity: 100 ); + scalingList = new List( capacity: 100 ); + coordArray = Array.Empty(); + scaleArray = Array.Empty(); + mutex = new Mutex(); + } + + public List InstanceList + { + get => instanceList; + } + + public List CoordAndRotationList + { + get => coordList; + } + + public List ScalingList + { + get => scalingList; + } + + public Span CoordAndRotationSpan + { + get + { + if( coordArray.Length != coordList.Capacity ) { + FieldInfo fieldInfo = typeof( List ). + GetField( + "_items", + BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) { + #pragma warning disable CA1065 + #pragma warning disable CA2201 + throw new NullReferenceException(); + #pragma warning restore CA2201 + #pragma warning restore CA1065 + } + coordArray = ( Vec4[] )fieldInfo.GetValue( coordList ); + } + return new Span( coordArray, 0, coordList.Count ); + } + } + + public Span ScalingSpan + { + get + { + if( scaleArray.Length != coordList.Capacity ) { + FieldInfo fieldInfo = typeof( List ). + GetField( + "_items", + BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) { + #pragma warning disable CA1065 + #pragma warning disable CA2201 + throw new NullReferenceException(); + #pragma warning restore CA2201 + #pragma warning restore CA1065 + } + scaleArray = ( float[] )fieldInfo.GetValue( scalingList ); + } + return new Span( scaleArray, 0, coordList.Count ); + } + } + + public int CreateInstanceID() + { + mutex.WaitOne(); + int ret = instanceList.Count; + coordList.Add( new Vec4() ); + scalingList.Add( 0 ); + mutex.ReleaseMutex(); + return ret; + } + + // ~PlainInstancingBuffer() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + public IEnumerator GetEnumerator() + { + foreach( IInstancing item in instanceList ) { + yield return ( T )item; + } + } + + public void Remove( T instance ) + { + mutex.WaitOne(); + if( instance.GlobalBuffer != this ) { + throw new ArgumentException( + message: "instance does not belong to current Particle Buffer", + paramName: nameof( instance ) ); + } + int index = instance.BufferId; + IInstancing temp = instanceList[ instanceList.Count - 1 ]; + instanceList[ instance.BufferId ] = temp; + temp.BufferId = instance.BufferId; + + coordList[ instance.BufferId ] = coordList[ coordList.Count - 1 ]; + scalingList[ instance.BufferId ] = scalingList[ + scalingList.Count - 1 ]; + + instanceList.RemoveAt( instanceList.Count - 1 ); + coordList.RemoveAt( coordList.Count - 1 ); + scalingList.RemoveAt( scalingList.Count - 1 ); + mutex.ReleaseMutex(); + } + + public void UpdateAllParticles() + { + foreach( IInstancing particle in instanceList ) { + particle.Move(); + } + } + + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + mutex.Dispose(); + } + + coordList.Clear(); + instanceList.Clear(); + scalingList.Clear(); + disposedValue = true; + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + foreach( IInstancing item in instanceList ) { + yield return ( T )item; + } + } + + IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException( + ); + + #region field of mem opt + + private Vec4[] coordArray; + private float[] scaleArray; + + #endregion + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs b/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs new file mode 100644 index 00000000..98b877de --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs @@ -0,0 +1,88 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Parallelogram.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.Math; + +using System; + +namespace StgSharp.Geometries +{ + public class Parallelogram : Polygon4 + { + + internal readonly Func movCenterOperation = + new Func( GeometryOperation.DefaultMotion ); + + internal Point center; + + public Parallelogram( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + if( this[ 0 ].Coord + this[ 2 ].Coord != this[ 1 ].Coord + this[ 3 ].Coord ) { + InternalIO.InternalWriteLog( + "Init of geometry item failed, because four vertices cannot form a rectangle.", + LogType.Warning ); + } + #endif + } + + public Parallelogram( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination, v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + if( this[ 0 ].Coord + this[ 2 ].Coord != this[ 1 ].Coord + this[ 3 ].Coord ) { + InternalIO.InternalWriteLog( + "Init of geometry item failed, because four vertices cannot form a rectangle.", + LogType.Warning ); + } + #endif + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Plain.cs b/StgSharp.Common/Geometries/PlainGeometry/Plain.cs new file mode 100644 index 00000000..2338a379 --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Plain.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Plain.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.Math; + +using System.Numerics; + +namespace StgSharp.Geometries +{ + public unsafe class Plain + { + + internal readonly float d = -1; + internal Vec3 origin; + + internal Vec3 plainParameter; + internal Vec3 vec1; + internal Vec3 vec2; + + internal Plain( Vector4 origin, Vector4 p1, Vector4 p2 ) + { + this.origin = new Vec3( origin ); + + vec1 = new Vec3( p1 - origin ); + vec2 = new Vec3( p2 - origin ); + } + + public Plain( Vec3 o, Vec3 v1, Vec3 v2 ) + { + this.origin = o; + this.vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影 + this.vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影 + + //|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z; + plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) ); + + //根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y + plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z ); + plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z ); + + plainParameter.X = 1 / plainParameter.X; + plainParameter.Y = 1 / plainParameter.Y; + plainParameter.Z = 1 / plainParameter.Z; + } + + public Plain( Point p1, Point p2, Point p3 ) + { + Vec3 origin = p1.Coord; + Vec3 v1 = p2.Coord - origin; + Vec3 v2 = p3.Coord - origin; + + + vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影 + vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影 + + //|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z; + plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) ); + + //根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y + plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z ); + plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z ); + + plainParameter.X = 1 / plainParameter.X; + plainParameter.Y = 1 / plainParameter.Y; + plainParameter.Z = 1 / plainParameter.Z; + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs new file mode 100644 index 00000000..7af184cc --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs @@ -0,0 +1,129 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Polygon4.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.Math; + +using System; +using System.Numerics; + +namespace StgSharp.Geometries +{ + public class Polygon4 : PlainGeometry + { + + protected static int[] Indices = [0, 1, 2, 0, 2, 3]; + + internal Polygon4() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[4]; + } + + internal Polygon4( Vec4[] rawCoord ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + if( rawCoord.Length != 4 ) { + throw new ArgumentOutOfRangeException( nameof( rawCoord ) ); + } + vertexMat = rawCoord; + } + + public Polygon4( + Point topLeft, + Point topRight, + Point bottomRight, + Point bottomLeft ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + this[ 0 ] = topLeft; + this[ 1 ] = topRight; + this[ 2 ] = bottomRight; + this[ 3 ] = bottomLeft; + } + + public Polygon4( + CoordinationBase coordinate, + PlainCoordinate coordination, + Point topLeft, + Point topRight, + Point bottomRight, + Point bottomLeft ) + : base( coordinate ) + { + this[ 0 ] = topLeft; + this[ 1 ] = topRight; + this[ 2 ] = bottomRight; + this[ 3 ] = bottomLeft; + } + + public Polygon4( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[4]; + + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + } + + public Polygon4( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination ) + { + vertexMat = new Vec4[4]; + + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs new file mode 100644 index 00000000..3ddbc743 --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Polygon5.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.Math; + +using System; +using System.Numerics; + +namespace StgSharp.Geometries +{ + public unsafe class Polygon5 : PlainGeometry + { + + internal static int[] Indices = [0, 1, 2, 0, 2, 3, 0, 3, 4]; + + public unsafe Polygon5() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[5]; + } + + public Polygon5( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y, + float v4x, + float v4y ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[5]; + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + this[ 4 ] = new Point( v4x, v4y, 0 ); + } + + public Polygon5( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y, + float v4x, + float v4y ) + : base( coordination ) + { + vertexMat = new Vec4[5]; + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + this[ 4 ] = new Point( v4x, v4y, 0 ); + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs new file mode 100644 index 00000000..be3813b0 --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Polygon6.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.Math; + +using System; +using System.Numerics; + +namespace StgSharp.Geometries +{ + public class Polygon6 : PlainGeometry + { + + internal static int[] Indices = [0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5]; + + public Polygon6() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[6]; + } + + public Polygon6( + PlainCoordinate coordination, + Vec2 vert0, + Vec2 vert1, + Vec2 vert2, + Vec2 vert3, + Vec2 vert4, + Vec2 vert5, + Vec2 vert6 ) + : base( coordination ) + { + vertexMat = new Vec4[6]; + vertexMat[ 0 ].vec = vert0.vec; + vertexMat[ 1 ].vec = vert1.vec; + vertexMat[ 2 ].vec = vert2.vec; + vertexMat[ 3 ].vec = vert3.vec; + vertexMat[ 4 ].vec = vert4.vec; + vertexMat[ 5 ].vec = vert5.vec; + vertexMat[ 6 ].vec = vert6.vec; + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs b/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs new file mode 100644 index 00000000..6d79fb5d --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Rectangle.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.Math; + +using System; +using System.Numerics; + +namespace StgSharp.Geometries +{ + public class Rectangle : Parallelogram + { + + public Rectangle( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + Vec2 side0 = ( this[ 0 ].Coord - this[ 1 ].Coord ).XY; + Vec2 side1 = ( this[ 2 ].Coord - this[ 1 ].Coord ).XY; + if( side0.Cross( side1 ) == 0 ) { + throw new ArgumentException(); + } + #endif + } + + public Rectangle( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination, v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + #if DEBUG + Vec2 side0 = ( this[ 0 ].Coord - this[ 1 ].Coord ).XY; + Vec2 side1 = ( this[ 2 ].Coord - this[ 1 ].Coord ).XY; + if( side0.Cross( side1 ) == 0 ) { + throw new ArgumentException(); + } + #endif + } + + /// + /// Calculate movement to center + /// + /// CurrentBlueprint time tick + /// + public virtual Vec3 MovCenter( uint tick ) + { + return default( Vec3 ); + } + + } +} diff --git a/StgSharp.Common/Geometries/PlainGeometry/Square.cs b/StgSharp.Common/Geometries/PlainGeometry/Square.cs new file mode 100644 index 00000000..c4a5ce8a --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Square.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Square.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.Math; + +using System.Numerics; + +namespace StgSharp.Geometries +{ + /// + /// A square + /// + public class Square : Rectangle + { + + public Square( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) + { + if( true ) { } + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs b/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs new file mode 100644 index 00000000..04933c7f --- /dev/null +++ b/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs @@ -0,0 +1,103 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Triangle.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.Graphics; +using StgSharp.Math; + +using System; +using System.Numerics; + +namespace StgSharp.Geometries +{ + public unsafe class Triangle : PlainGeometry + { + + internal static int[] Indices = [0, 1, 2]; + + public Triangle() + : base( PlainCoordinate.StandardPlainCoordination ) + { + vertexMat = new Vec4[3]; + } + + public Triangle( Point vertex01, Point vertex02, Point vertex03 ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + this[ 0 ] = vertex01; + this[ 1 ] = vertex02; + this[ 2 ] = vertex03; + } + + public Triangle( + PlainCoordinate coordination, + Point vertex01, + Point vertex02, + Point vertex03 ) + : base( coordination ) + { + this[ 0 ] = vertex01; + this[ 1 ] = vertex02; + this[ 2 ] = vertex03; + } + + public Triangle( + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + } + + public Triangle( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) + : base( coordination ) + { + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + } + + public override ReadOnlySpan VertexIndices => Indices; + + } +} diff --git a/StgSharp.Common/Geometries/Point.cs b/StgSharp.Common/Geometries/Point.cs new file mode 100644 index 00000000..9731a2cc --- /dev/null +++ b/StgSharp.Common/Geometries/Point.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Point.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.Math; + +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Geometries +{ + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct Point + { + + [FieldOffset( 0 )] private Vec3 coord; + [FieldOffset( 0 )] internal Vector4 coordVec; + + internal Point( Vec4 vector ) + { + coordVec = vector.vec; + coordVec.W = 1; + } + + public Point( Vec3 coord ) + { + Coord = coord; + coordVec.W = 1; + } + + public Point( float x, float y, float z ) + { + coordVec = new Vector4( x, y, z, 1 ); + } + + public Vec3 Coord + { + get => coord; + set + { + coord = value; + coordVec.W = 1; + } + } + + } +} diff --git a/StgSharp.Common/Geometries/SpaceGeometry/Class1.cs b/StgSharp.Common/Geometries/SpaceGeometry/Class1.cs new file mode 100644 index 00000000..1a2d98c1 --- /dev/null +++ b/StgSharp.Common/Geometries/SpaceGeometry/Class1.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Class1.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.Text; + +namespace StgSharp.Geometries.SpaceGeometry +{ + internal class Class1 { } +} diff --git a/StgSharp.Common/Global.cs b/StgSharp.Common/Global.cs new file mode 100644 index 00000000..e08b119f --- /dev/null +++ b/StgSharp.Common/Global.cs @@ -0,0 +1,21 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +global using StgSharp.Internal; +global using StgSharp.Internal.Intrinsic; +global using StgSharp.Internal.OpenGL; + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Design", "CA1008:枚举应具有零值", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.ShaderStatus")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``2(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1}")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``3(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2}")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``4(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2,``3}")] +[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.Uniform`4")] +[assembly: SuppressMessage("Design", "CA1043:将整型或字符串参数用于索引器", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.IViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)")] +[assembly: SuppressMessage("Design", "CA1043:将整型或字符串参数用于索引器", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.ViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)")] +[assembly: SuppressMessage("Performance", "CA1864:首选 \"IDictionary.TryAdd(TKey, TValue)\" 方法", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.ViewRender`1.Item(System.String)")] +[assembly: SuppressMessage("Design", "CA1033:接口方法应可由子类型调用", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Keys")] +[assembly: SuppressMessage("Design", "CA1033:接口方法应可由子类型调用", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Values")] diff --git a/StgSharp.Common/Graphics/CPUanimation/IImageProvider.cs b/StgSharp.Common/Graphics/CPUanimation/IImageProvider.cs new file mode 100644 index 00000000..1741e253 --- /dev/null +++ b/StgSharp.Common/Graphics/CPUanimation/IImageProvider.cs @@ -0,0 +1,43 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IImageProvider.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.Text; + +namespace StgSharp.Graphics +{ + public interface IImageProvider + { + + Image ProvideImage(); + + } +} diff --git a/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs b/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs new file mode 100644 index 00000000..e41a960a --- /dev/null +++ b/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ImageHelper.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.ComponentModel; +using System.Text; + +namespace StgSharp.Graphics +{ + public static class ImageHelper + { + + public static void Resize( + Image i, + int width, + int height, + ImageMovement move ) + { + if( i == null ) { + throw new ArgumentNullException( nameof( i ) ); + } + if( i.Size == (width, height) ) { + return; + } + if( !Enum.IsDefined( typeof( ImageMovement ), move ) ) { + throw new InvalidEnumArgumentException( nameof( move ) ); + } + byte[] oldData = i.Data; + i.Data = new byte[width * height * i.PixelSize]; + i.Height = height; + i.Width = width; + i.PixelUpdateCount++; + switch( move ) { + case ImageMovement.Discard: + break; + case ImageMovement.Top: + break; + default: + throw new NotImplementedException(); + } + } + + } + + [Flags] + public enum ImageMovement + { +#pragma warning disable CA1008 + Discard = 0, + #pragma warning restore CA1008 + Top = 1, + Bottom = 2, + Left = 4, + Right = 8, + TopLeft = Top | Left, + BottomLeft = Bottom | Left, + TopRight = Top | Right, + BottomRight = Bottom | Right, + + } +} diff --git a/StgSharp.Common/Graphics/Define/BufferObjectBase.cs b/StgSharp.Common/Graphics/Define/BufferObjectBase.cs new file mode 100644 index 00000000..1ea96a71 --- /dev/null +++ b/StgSharp.Common/Graphics/Define/BufferObjectBase.cs @@ -0,0 +1,83 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BufferObjectBase.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + /// + /// Interface of all kinds OpenGL Buffer objects + /// + public abstract class BufferObjectBase : IDisposable + { + + protected GlHandle[] _bufferHandle; + protected RenderStream binding; + + /// + /// Get the only handle to one of the Object instance + /// + /// + /// + public GlHandle this[ int index ] => _bufferHandle[ index ]; + + /// + /// Bind a Buffer instance to OpenGL + /// + /// Index of handle of the object in this instance to be bind + public abstract void Bind( int index ); + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + /// + public override string ToString() + { + return $"This is a {GetType().FullName}, containing {_bufferHandle.Length} buffer handles: {_bufferHandle.ToString()}."; + } + + protected abstract void Dispose( bool disposing ); + + ~BufferObjectBase() + { + Dispose( disposing: false ); + } + + } +} diff --git a/StgSharp.Common/Graphics/IGraphicAPIs.cs b/StgSharp.Common/Graphics/IGraphicAPIs.cs new file mode 100644 index 00000000..70646eac --- /dev/null +++ b/StgSharp.Common/Graphics/IGraphicAPIs.cs @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IGraphicAPIs.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.Text; + +namespace StgSharp.Graphics +{ + public interface IGraphicAPIs + { + + public IntPtr GraphicApiPackageHandle + { + get; + } + + } +} diff --git a/StgSharp.Common/Graphics/Image.cs b/StgSharp.Common/Graphics/Image.cs new file mode 100644 index 00000000..40aca0e1 --- /dev/null +++ b/StgSharp.Common/Graphics/Image.cs @@ -0,0 +1,218 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Image.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.Internal; +using StgSharp.Graphics.OpenGL; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public class Image : ISSDSerializable, IImageProvider + { + + private byte[] _data; + private ImageInfo _rawInfo; + private int _pixelUpdateCount = 0; + + internal unsafe Image() + { + _rawInfo = new ImageInfo(); + } + + internal Image( ImageInfo information ) + { + _rawInfo = information; + _data = Array.Empty(); + + //int length = _rawInfo.width * _rawInfo.height * _rawInfo.channel; + } + + public (int width, int height) Size + { + get => (_rawInfo.Width, _rawInfo.Height); + } + + public byte[] PixelBuffer + { + get + { + if( ( _data.Length == 0 ) || ( _data == null ) ) { + GetBytes(); + return _data!; + } + return _data; + } + } + + public ImageChannel Channel => _rawInfo.Channel; + + /// + /// Hash code of time pixels updated last time. + /// + public int PixelUpdateCount + { + get => _pixelUpdateCount; + internal set => _pixelUpdateCount = value; + } + + public int ChannelCount => _rawInfo.ChannelCount; + + public int Height + { + get => _rawInfo.Height; + internal set => _rawInfo.Height = value; + } + + public int Width + { + get => _rawInfo.Width; + internal set => _rawInfo.Width = value; + } + + public int PixelSize => ImageInfo.GetPixelSize( + _rawInfo.pixelLayout, _rawInfo.Channel ); + + public PixelChannelLayout PixelLayout + { + get => _rawInfo.pixelLayout; + private set => _rawInfo.pixelLayout = value; + } + + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.PixelImage; + + internal ref byte[] Data + { + get => ref _data; + } + + public void FromBytes( byte[] stream ) { } + + public static unsafe Image FromFile( string route, ImageLoader loader ) + { + Image ret = new Image(); + fixed( ImageInfo* iptr = &ret._rawInfo ) { + InternalIO.InternalLoadImage( route, iptr, loader ); + } + return ret; + } + + public static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + byte[] stream ) + { + ImageInfo _info = new ImageInfo + { + Height = size.height, + Width = size.width, + Channel = channel, + StreamPtr = IntPtr.Zero + }; + Image ret = new Image( _info ); + ret.PixelLayout = PixelChannelLayout.Byte; + ret._data = stream; + return ret; + } + + public static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + PixelChannelLayout layout, + byte[] stream ) + { + ImageInfo _info = new ImageInfo + { + Height = size.height, + Width = size.width, + Channel = channel, + StreamPtr = IntPtr.Zero + }; + Image ret = new Image( _info ); + ret.PixelLayout = layout; + ret._data = stream; + return ret; + } + + public unsafe byte[] GetBytes() + { + if( _data.Length == 0 ) { + int size = Width * Height * ImageInfo.GetPixelSize( + PixelLayout, Channel ); + _data = new Span( ( byte* )_rawInfo.StreamPtr, + size ).ToArray(); + fixed( ImageInfo* pptr = &_rawInfo ) { + InternalIO.InternalUnloadImage( pptr ); + } + _rawInfo.StreamPtr = IntPtr.Zero; + } + return _data; + } + + public Image ProvideImage() => this; + + internal static Image FromMemory( + ImageInfo info, + byte[] data, + int operationCount ) + { + return new Image + { + _rawInfo = info, + _data = data, + _pixelUpdateCount = operationCount + }; + } + + byte[] ISSDSerializable.GetBytes() + { + throw new NotImplementedException(); + } + + } + +} + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class GlHelper + { + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/ImageInfo.cs b/StgSharp.Common/Graphics/ImageInfo.cs new file mode 100644 index 00000000..ccb46ce5 --- /dev/null +++ b/StgSharp.Common/Graphics/ImageInfo.cs @@ -0,0 +1,141 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Runtime.CompilerServices; +using StgSharp.Graphics.OpenGL; +using System.Runtime.InteropServices; + + +namespace StgSharp.Graphics +{ + [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)] + public delegate IntPtr ImageLoader( + string name, + ref int width, + ref int height, + ref int definedChannel, + int desiredChannel); + + + [StructLayout(LayoutKind.Sequential)] + internal struct ImageInfo + { + + private ImageChannel channel; + private int height; + private int width; + private IntPtr pixelPtr; + internal PixelChannelLayout pixelLayout; + + public ImageChannel Channel + { + get => channel; + set { channel = value; } + } + + public int ChannelCount + { + get => GetChannelCount(channel); + } + + public int Height + { + get => height; + set => height = value; + } + + public int StreamSize + { + get => width * height * GetPixelSize( + pixelLayout, channel); + } + + public int Width + { + get => width; + set => width = value; + } + + public IntPtr StreamPtr + { + get => pixelPtr; + internal set => pixelPtr = value; + } + + public override int GetHashCode() + { + int hash = 17; + hash = hash * 17 + width; + hash = hash * 17 + height; + hash = hash * 17 + (int)channel; + return hash; + } + + public override string ToString() + { + return $"{channel}\t{width}\t{height}\t{(ulong)StreamPtr}"; + } + + + internal static int GetChannelCount(ImageChannel channel) + { + return channel switch + { + ImageChannel.SingleColor => 1, + ImageChannel.DoubleColor => 2, + ImageChannel.TripleColor => 3, + ImageChannel.WithAlphaChannel => 4, + _ => throw new InvalidCastException( + "Unknown color channel decoding setting.") + }; + } + + internal static int GetPixelSize( + PixelChannelLayout layout, + ImageChannel channel) + { + return layout switch + { + PixelChannelLayout.UByte => sizeof(byte) * GetChannelCount( + channel), + PixelChannelLayout.Byte => sizeof(byte) * GetChannelCount( + channel), + PixelChannelLayout.UShort => sizeof(short) * GetChannelCount( + channel), + PixelChannelLayout.Short => sizeof(short) * GetChannelCount( + channel), + PixelChannelLayout.UInt => sizeof(int) * GetChannelCount( + channel), + PixelChannelLayout.Int => sizeof(int) * GetChannelCount( + channel), + PixelChannelLayout.Float => sizeof(float) * GetChannelCount( + channel), + PixelChannelLayout.UByte332 => sizeof(byte), + PixelChannelLayout.UByte233Rev => sizeof(byte), + PixelChannelLayout.UShort565 => sizeof(short), + PixelChannelLayout.UShort565Rev => sizeof(short), + PixelChannelLayout.UShort4444 => sizeof(short), + PixelChannelLayout.UShort4444Rev => sizeof(short), + PixelChannelLayout.UShort5551 => sizeof(short), + PixelChannelLayout.UShort1555Rev => sizeof(short), + PixelChannelLayout.UInt8888 => sizeof(int), + PixelChannelLayout.UInt8888Rev => sizeof(int), + PixelChannelLayout.UInt1010102 => sizeof(int), + PixelChannelLayout.UInt2101010Rev => sizeof(int), + _ => throw new ArgumentException("Unknown layout type"), + }; + } + + } + + public enum ImageChannel : uint + { + + SingleColor = glConst.RED, + DoubleColor = glConst.RG, + TripleColor = glConst.RGB, + WithAlphaChannel = glConst.RGBA, + + } + +} diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs new file mode 100644 index 00000000..61b3aee1 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs @@ -0,0 +1,161 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="AutoTexture.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.Commom.Collections; +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; + +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + /// + /// A collection of a sets of OpenGL textures. The collection can automatically select one of + /// the texture with minimum costs to upgrade pixels to Buffer. Usually is used for loading, but not for + /// target of . + /// + public sealed class AutoTextureGL + { + + private TextureProperty[] propertyCache; + private BidirectionalDictionary imageIndexMap = new BidirectionalDictionary( + ); + private Dictionary imageUpdateIndex = new Dictionary( + ); + + private int _size, _currentIndex; + private LinkedList usedTextureIndex; + private Queue unusedTextureUnitIndex; + private TextureGL texturePackage; + + private TextureProperty _textureProperty; + + private AutoTextureGL( TextureGL texture ) + { + texturePackage = texture; + _size = texture.Count; + imageIndexMap = new BidirectionalDictionary(); + unusedTextureUnitIndex = new Queue( + Enumerable.Range( 0, _size ) ); + usedTextureIndex = new LinkedList(); + propertyCache = new TextureProperty[_size]; + } + + public AutoTextureGL( int textureObjectSize, [NotNull]glRender binding ) + { + this._size = textureObjectSize; + imageIndexMap = new BidirectionalDictionary(); + texturePackage = new TextureGL( textureObjectSize, binding ); + unusedTextureUnitIndex = new Queue( + Enumerable.Range( 0, _size ) ); + usedTextureIndex = new LinkedList(); + propertyCache = new TextureProperty[_size]; + } + + public TextureProperty DefaultTextureProperty + { + get => _textureProperty; + set => _textureProperty = value; + } + + private OpenGLFunction GL + { + get => texturePackage.GL; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SelectTextureAndBind( Image i ) + { + TextureProperty property = _textureProperty; + + SelectTextureAndBind( i, property ); + } + + public void SelectTextureAndBind( + [NotNull]Image i, + TextureProperty property ) + { + //usable texture with image match + if( imageIndexMap.TryGetValue( i, out int index ) ) { + //prop setting match + if( propertyCache[ index ] == property ) { + _currentIndex = index; //GL.Assert(true); + texturePackage.Bind2D( index ); //GL.Assert(true); + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + texturePackage.LoadTexture( index, i ); //GL.Assert(true); + } + } else { + _currentIndex = index; //GL.Assert(true); + texturePackage.Bind2D( index ); //GL.Assert(true); + texturePackage.Set2dProperty( index, property ); //GL.Assert(true); + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + texturePackage.LoadTexture( index, i ); //GL.Assert(true); + } + } + } else { + if( unusedTextureUnitIndex.TryDequeue( out int newIndex ) ) { + //has extra unused texture object + imageIndexMap.Add( i, index ); + texturePackage.Bind2D( index ); + texturePackage.Set2dProperty( index, property ); + texturePackage.LoadTexture( index, i ); + usedTextureIndex.AddLast( newIndex ); + propertyCache[ newIndex ] = property; + imageUpdateIndex[ i ] = i.PixelUpdateCount; + } else { + //recycle from current + int reusedIndex = usedTextureIndex.First!.Value; + usedTextureIndex.RemoveFirst(); + usedTextureIndex.AddLast( reusedIndex ); + imageIndexMap[ i ] = reusedIndex; + propertyCache[ newIndex ] = property; + imageUpdateIndex[ i ] = i.PixelUpdateCount; + } + } + } + + public static AutoTextureGL ToAuto( [NotNull]TextureGL texture ) + { + if( texture.IndexOfCurrentTexture != -1 ) { + throw new InvalidOperationException( + "Texture to be converted has been editted." ); + } + return new AutoTextureGL( texture ); + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs new file mode 100644 index 00000000..c624fe01 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs @@ -0,0 +1,94 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="EBO.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.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Internal.OpenGL; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + /// + /// A collection of handle to Element Buffer Object in OpenglFunc. Each + /// value indexed from instance of this class this is the only handle to one Element Buffer + /// Object. + /// + public sealed unsafe class ElementBuffer : GlBufferObjectBase + { + + internal ElementBuffer( int n, glRender binding ) + : base( binding ) + { + _bufferHandle = GL.GenBuffers( n ); + } + + public override sealed void Bind( int index ) + { + GL.BindBuffer( + BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + } + + public void SetValue( int index, T[] bufferArray, BufferUsage usage ) + where T: struct, INumber + { + GL.BindBuffer( + BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( + BufferType.ElementArrayBuffer, bufferArray, usage ); + } + + public void SetValue( + int index, + ReadOnlySpan bufferSpan, + BufferUsage usage ) + where T: struct, INumber + { + GL.BindBuffer( + BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ElementArrayBuffer, bufferSpan, + usage ); + } + + protected override sealed void Dispose( bool disposing ) + { + if( disposing ) { + GL.DeleteBuffers( _bufferHandle ); + } + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs new file mode 100644 index 00000000..169f6fce --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs @@ -0,0 +1,101 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="FBO.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + #pragma warning disable CA1008 + #pragma warning disable CA1028 + public enum FrameBufferTarget : uint + #pragma warning restore CA1028 + #pragma warning restore CA1008 + { + + Read = glConst.READ_FRAMEBUFFER, + All = glConst.FRAMEBUFFER, + Draw = glConst.DRAW_FRAMEBUFFER, + + } + + public sealed class FrameBuffer : GlBufferObjectBase + { + + internal unsafe FrameBuffer( int count, glRender binding ) + : base( binding ) + { + _bufferHandle = GL.GenFrameBuffers( count ); + } + + /// + /// Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + /// by target. will be set as default target. + /// + /// Index of object to be binded in handle set + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override unsafe void Bind( int index ) + { + GL.BindFrameBuffer( FrameBufferTarget.All, _bufferHandle[ index ] ); + } + + /// + /// Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + /// by target. Target of this frame Buffer should be set manually. + /// + /// The frame Buffer target of the binding operation. + /// Index of object to be binded in handle set + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void Bind( FrameBufferTarget target, int index ) + { + GL.BindFrameBuffer( target, _bufferHandle[ index ] ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static void BindNull() + { + OpenGLFunction.CurrentGL + .BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); + } + + protected override void Dispose( bool disposing ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs new file mode 100644 index 00000000..675cb155 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs @@ -0,0 +1,53 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GLBufferObjectBase.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public abstract class GlBufferObjectBase : BufferObjectBase + { + + private readonly glRender _contextBinding; + + protected GlBufferObjectBase( glRender contextBinding ) + { + binding = contextBinding; + _contextBinding = contextBinding; + } + + protected OpenGLFunction GL => _contextBinding.GL; + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs new file mode 100644 index 00000000..56d16466 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RBO.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Security.Principal; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed class RenderBuffer : GlBufferObjectBase + { + + public RenderBuffer( int count, glRender binding ) + : base( binding ) + { + _bufferHandle = GL.GenRenderBuffer( count ); + } + + public override void Bind( int index ) + { + GL.BindRenderBuffer( this[ index ] ); + } + + public void Store( + RenderBufferInternalFormat format, + (int width, int height) size ) + { + if( ( size.width > binding.Width ) || ( size.height > binding.Height ) ) { + StgSharp.LogWarning( + "FrameBuffer is larger than current canvas binding" ); + } + } + + protected override void Dispose( bool disposing ) + { + foreach( GlHandle item in _bufferHandle ) { + Console.WriteLine( "removing a render buffer" ); + GL.DeleteRenderBuffer( item ); + } + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs new file mode 100644 index 00000000..033cefe7 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs @@ -0,0 +1,294 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TextureGL.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.HighPerformance; + +using System; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed unsafe class TextureGL + { + + private int currentEditingTextureIndex; + + private OpenGLFunction _gl; + internal GlHandle[] _textureHandle; + + internal TextureGL( int count, glRender binding ) + { + //sourceList = new Image[count]; + this._gl = binding.GL; + _textureHandle = _gl.GenTextures( count ); + } + + public GlHandle this[ int index ] + { + get => _textureHandle[ index ]; + } + + public int Count + { + get => _textureHandle.Length; + } + + //internal Image[] sourceList; + + public int IndexOfCurrentTexture + { + get => currentEditingTextureIndex; + } + + internal OpenGLFunction GL => _gl; + + public void ActivateAs( TextureUnit unit ) + { + _gl.ActiveTextureUnit( ( uint )unit ); + } + + public void Bind2D( int index ) + { + currentEditingTextureIndex = index; + _gl.BindTexture( glConst.TEXTURE_2D, _textureHandle[ index ] ); + } + + /// + /// Load an to certain texture. + /// + /// + /// + public unsafe void LoadTexture( int index, Image i ) + { + byte[] handle = i.PixelBuffer; + _gl.TextureImage2d( + Texture2DTarget.Texture2D, 0, i.Channel, ( uint )i.Width, + ( uint )i.Height, i.Channel, i.PixelLayout, pixels: handle ); + _gl.GenerateMipmap( Texture2DTarget.Texture2D ); + } + + #region texture setting + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Set2dFilterProperty( + int index, + TextureFilter onMinify, + TextureFilter onMagnify ) + { + #if DEBUG + if( index != currentEditingTextureIndex ) { + throw new InvalidOperationException( + "Texture to be editted is not the one being activated." ); + } + #endif + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_MIN_FILTER, + ( int )onMinify ); + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_MAG_FILTER, + ( int )onMagnify ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Set2dWrapProperty( + int index, + TextureWrap onHorizontial, + TextureWrap onVertical ) + { + #if DEBUG + if( index != currentEditingTextureIndex ) { + throw new InvalidOperationException( + "Texture to be editted is not the one being activated." ); + } + #endif + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_S, + ( int )onHorizontial ); + _gl.TextureParameter( + glConst.TEXTURE_2D, glConst.TEXTURE_WRAP_T, ( int )onVertical ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Set2dProperty( int index, TextureProperty property ) + { + Set2dFilterProperty( + index, property.FilterOnMinify, property.FilterOnMagnify ); + Set2dWrapProperty( + index, property.WrapOnHorizontial, property.WrapOnVertical ); + } + + #endregion texture setting + } + + [StructLayout( LayoutKind.Explicit )] + public struct TextureProperty + { + + [FieldOffset( 0 )] private M128 mask; + [FieldOffset( 0 )] private TextureFilter mag; + [FieldOffset( 4 )] private TextureFilter min; + + [FieldOffset( 8 )] private TextureWrap hori; + [FieldOffset( 12 )] private TextureWrap vert; + + public TextureProperty( + TextureFilter onMagnify, + TextureFilter onMinify, + TextureWrap onHorizontial, + TextureWrap onVertical ) + { + FilterOnMagnify = onMagnify; + FilterOnMinify = onMinify; + WrapOnHorizontial = onHorizontial; + WrapOnVertical = onVertical; + } + + public TextureFilter FilterOnMagnify + { + get => mag; + set => mag = value; + } + + public TextureFilter FilterOnMinify + { + get => min; + set => min = value; + } + + public TextureWrap WrapOnHorizontial + { + get => hori; + set => hori = value; + } + + public TextureWrap WrapOnVertical + { + get => vert; + set => vert = value; + } + + public override bool Equals( [NotNullWhen( true )] object obj ) + { + return base.Equals( obj ); + } + + public override int GetHashCode() + { + return HashCode.Combine( + FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, + WrapOnVertical ); + } + + public override string ToString() + { + return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}"; + } + + public static bool operator !=( + TextureProperty left, + TextureProperty right ) + { + return left.mask != right.mask; + } + + public static bool operator ==( + TextureProperty left, + TextureProperty right ) + { + return left.mask == right.mask; + } + + public static implicit operator TextureProperty( + ( + TextureFilter onMagnify, TextureFilter onMinify, + TextureWrap onHorizontial, TextureWrap onVertical + ) propertyValueTuple ) + { + return new TextureProperty( + propertyValueTuple.onMagnify, propertyValueTuple.onMinify, + propertyValueTuple.onHorizontial, + propertyValueTuple.onVertical ); + } + + } + + #pragma warning disable CA1008 + public enum TextureFilter + #pragma warning restore CA1008 + { + + Nearest = glConst.NEAREST, + Linear = glConst.LINEAR, + NearestLinearMipmap = glConst.NEAREST_MIPMAP_LINEAR, + LinearLinearMipmap = glConst.LINEAR_MIPMAP_LINEAR, + NearestNearestMipmap = glConst.NEAREST_MIPMAP_NEAREST, + LinearNearestMipmap = glConst.LINEAR_MIPMAP_NEAREST, + + } + + #pragma warning disable CA1008 + public enum TextureUnit + #pragma warning restore CA1008 + { + + Unit0 = glConst.TEXTURE0, + Unit1 = glConst.TEXTURE1, + Unit2 = glConst.TEXTURE2, + Unit3 = glConst.TEXTURE3, + Unit4 = glConst.TEXTURE4, + Unit5 = glConst.TEXTURE5, + Unit6 = glConst.TEXTURE6, + Unit7 = glConst.TEXTURE7, + Unit8 = glConst.TEXTURE8, + Unit9 = glConst.TEXTURE9, + Unit10 = glConst.TEXTURE10, + Unit11 = glConst.TEXTURE11, + Unit12 = glConst.TEXTURE12, + Unit13 = glConst.TEXTURE13, + Unit14 = glConst.TEXTURE14, + Unit15 = glConst.TEXTURE15, + + } + + #pragma warning disable CA1008 + public enum TextureWrap + #pragma warning restore CA1008 + { + + Repeat = glConst.REPEAT, + MirroredRepeat = glConst.MIRRORED_REPEAT, + ClampToEdge = glConst.CLAMP_TO_EDGE, + ClampToBorder = glConst.CLAMP_TO_BORDER, + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs new file mode 100644 index 00000000..28ecd5a2 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="VAO.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.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed unsafe class VertexArray : GlBufferObjectBase + { + + internal VertexArray( int n, glRender binding ) + : base( binding ) + { + _bufferHandle = GL.GenVertexArrays( n ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override sealed void Bind( int index ) + { + GL.BindVertexArray( _bufferHandle[ index ] ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static void BindNull() + { + OpenGLFunction.CurrentGL.BindVertexArray( GlHandle.Zero ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetVertexAttribute( + uint index, + int vertexLength, + TypeCode dataType, + bool isNomalized, + uint stride, + int pointer ) + { + GL.SetVertexAttribute( + index, vertexLength, dataType, isNomalized, stride, pointer ); + } + + protected override sealed void Dispose( bool disposing ) + { + if( disposing ) { + GL.DeleteVertexArrays( _bufferHandle ); + } + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs new file mode 100644 index 00000000..fe72ae61 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs @@ -0,0 +1,161 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="VBO.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.Math; + +using System; +using System.Collections.Generic; +using System.Net.Security; +using System.Numerics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed unsafe class VertexBuffer : GlBufferObjectBase + { + + internal VertexBuffer( int n, glRender binding ) + : base( binding ) + { + _bufferHandle = GL.GenBuffers( n ); + } + + public override sealed void Bind( int index ) + { + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + } + + /// + /// + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Unbind() + { + GL.BindBuffer( BufferType.ArrayBuffer, GlHandle.Zero ); + } + + /// + /// Set _data to current vertex Buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// Data to write in + /// How OpenGL use these _data, defined by + public void WriteMatrixData( + int index, + T bufferData, + BufferUsage usage ) + where T: struct, IMat + { + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ArrayBuffer, bufferData, usage ); + } + + /// + /// Set _data to current vertex Buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// Data to write in + /// How OpenGL use these _data, defined by + public void WriteScalerData( + int index, + T[] bufferArray, + BufferUsage usage ) + where T: struct, INumber + { + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ArrayBuffer, bufferArray, usage ); + } + + /// + /// Set _data to current vertex Buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A of _data to write in + /// How OpenGL use these _data, defined by + public void WriteScalerData( + int index, + ReadOnlySpan scalerSpan, + BufferUsage usage ) + where T: struct,INumber + { + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ArrayBuffer, scalerSpan, usage ); + } + + /// + /// Set _data to current vertex Buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A of _data to write in + /// How OpenGL use these _data, defined by + public void WriteVectorData( + int index, + ReadOnlySpan vectorSpan, + BufferUsage usage ) + where T: struct, IVector + { + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferVectorData( BufferType.ArrayBuffer, vectorSpan, usage ); + } + + /// + /// Set _data to current vertex Buffer object + /// + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A array of _data to write in + /// How OpenGL use these _data, defined by + public void WriteVectorData( + int index, + T[] vectorArray, + BufferUsage usage ) + where T: struct, IVector + { + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferVectorData( BufferType.ArrayBuffer, vectorArray, + usage ); + } + + protected override sealed void Dispose( bool disposing ) + { + if( disposing ) { + GL.DeleteBuffers( _bufferHandle ); + } + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/GLfixed.cs b/StgSharp.Common/Graphics/OpenGL/GLfixed.cs new file mode 100644 index 00000000..9ccba942 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/GLfixed.cs @@ -0,0 +1,49 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GLfixed.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.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + [StructLayout( LayoutKind.Explicit, Size = 8 )] + public struct GLfixed + { + + [FieldOffset( 0 )] public int All; + [FieldOffset( 0 )] public short Decimals; + [FieldOffset( 4 )] public short Inertger; + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs new file mode 100644 index 00000000..9f37e056 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IglConvertable.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.ShaderEdit +{ + public interface IglConvertable + { + + /// + /// + /// + public void DisplayGLtypeDefinition(); + + /// + /// + /// + public void GainAllUniforms( + ShaderProgram source, + params string[] uniformName ); + + /// + /// + /// + /// + public ShaderStruct GetConvertedGLtype(); + + /// + /// + /// + public void SetAllUniforms(); + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs new file mode 100644 index 00000000..0794d5c1 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs @@ -0,0 +1,271 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Shader.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; +using StgSharp.Internal; + +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Xml.Linq; + +namespace StgSharp.Graphics.OpenGL +{ + public abstract partial class glRender : RenderStream + { + + /// + /// Create an instance of program + /// + /// New instance of instance. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected override sealed ShaderProgram CreateShaderProgram() + { + return new ShaderProgram( this ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected override sealed Shader CreateShaderSegment( + ShaderType type, + int count ) + { + return new Shader( GL.CreateShaderSet( count, type ), type, this ); + } + + } + + public class Shader : ISSDSerializable + { + + private readonly OpenGLFunction GL; + internal readonly GlHandle[] handle; + public readonly ShaderType type; + + internal unsafe Shader( + GlHandle[] handle, + ShaderType usage, + glRender stream ) + { + this.handle = handle; + GL = stream.GL; + type = usage; + } + + public SerializableTypeCode SSDTypeCode => SerializableTypeCode.Shader; + + /// + /// Attach one shader code to a shader program. + /// + /// Shader program to attach + /// Index of shader code in current shader code set. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void AttachTo( int index, ShaderProgram target ) + { + GL.AttachShader( target.handle, handle[ index ] ); + } + + public void CheckStatus( int index, ShaderStatus status ) + { + string log = GL.GetShaderStatus( this, index, ( int )status ); + if( !string.IsNullOrEmpty( log ) ) { + throw new Exception( $"{$"Shader Error \t{status}\n"}{log}" ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void Compile( int index, byte[] codeStream ) + { + if( codeStream == null ) { + throw new ArgumentNullException( nameof( codeStream ) ); + } + GL.LoadShaderSource( handle[ index ], codeStream ); + GL.CompileShader( handle[ index ] ); + CheckStatus( index, ShaderStatus.CompileStatus ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void Compile( int index, string codeStream ) + { + if( codeStream == null ) { + throw new ArgumentNullException( nameof( codeStream ) ); + } + GL.LoadShaderSource( + handle[ index ], codeStream.AsSpan() ); + GL.CompileShader( handle[ index ] ); + CheckStatus( index, ShaderStatus.CompileStatus ); + } + + public void FromBytes( byte[] stream ) + { + throw new NotImplementedException(); + } + + public static byte[] FromCodeFile( string fileRoute ) + { + string str = File.ReadAllText( fileRoute ); + if( string.IsNullOrEmpty( str ) ) { + throw new InvalidOperationException( + $"Cannot load and GLSL code from {fileRoute}" ); + } + return Encoding.UTF8.GetBytes( str ); + } + + public byte[] GetBytes() + { + return Array.Empty(); + } + + public byte[] GetBytes( out int length ) + { + throw new NotImplementedException(); + } + + public override string ToString() + { + return $"This is a {type} shader, its shader handles are {handle.ToString()}."; + } + + } + + public enum ShaderStatus : int + { + + CompileStatus = glConst.COMPILE_STATUS, + + } + + public class ShaderProgram + { + + private readonly OpenGLFunction GL; + internal readonly GlHandle handle; + + /// + /// CustomizeInit a program with no shader attached. + /// + internal unsafe ShaderProgram( glRender binding ) + { + GL = binding.GL; + handle = GL.CreateProgram(); + } + + /// + /// Get a uniform form current shader, the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe Uniform GetUniform( string name ) where T: struct + { + return new Uniform( GL.GetUniformLocation( this.handle, name ) ); + } + + /// + /// Get a uniform form current shader, the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + public unsafe Uniform GetUniform( string name ) + where T: struct + where U: struct + { + return new Uniform( + GL.GetUniformLocation( this.handle, name ) ); + } + + /// + /// Get a uniform form current shader, the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + public unsafe Uniform GetUniform( string name ) + where T: struct + where U: struct + where V: struct + { + return new Uniform( + GL.GetUniformLocation( this.handle, name ) ); + } + + /// + /// Get a uniform form current shader, the value type of the uniform should be provided. + /// + /// ContextName of the Uniform in shader code + /// + public unsafe Uniform GetUniform( string name ) + where T: struct + where U: struct + where V: struct + where W: struct + { + return new Uniform( + GL.GetUniformLocation( this.handle, name ) ); + } + + /// + /// Link the shader to current viewPortDisplay. + /// + public unsafe void Link() + { + if( InternalIO.InternalLinkShaderProgram( + ( OpenglContext* )this.GL.ContextHandle, handle.Value ) == 0 ) { + IntPtr logPtr = InternalIO.InternalReadSSCLog(); + try { + byte[] logByte = new byte[512]; + Marshal.Copy( logPtr, logByte, 0, 512 ); + string log = Encoding.UTF8.GetString( logByte ); + log = log.Replace( "\0", string.Empty ); + InternalIO.InternalWriteLog( log, LogType.Error ); + } + catch( Exception ex ) { + InternalIO.InternalWriteLog( ex.Message, LogType.Error ); + } + } + } + + /// + /// Let the current viewPortDisplay use this shader. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void Use() + { + GL.UseProgram( handle ); + } + + ~ShaderProgram() + { + //handle.Dispose(); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs new file mode 100644 index 00000000..70349a10 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -0,0 +1,199 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Uniform.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.Graphics; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public class Uniform + { + + internal GlHandle id; + + public GlHandle Handle + { + get => id; + } + + } + + public sealed class Uniform : Uniform where T: struct + { + + internal Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + internal static Uniform FromHandle( GlHandle handle ) + { + return new Uniform { id = handle }; + } + + } + + public sealed class Uniform : Uniform where T: struct where U: struct + { + + internal Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + internal static Uniform FromHandle( GlHandle handle ) + { + return new Uniform { id = handle }; + } + + } + + public sealed class Uniform : Uniform where T: struct + where U: struct + where V: struct + { + + internal Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + internal static Uniform FromHandle( GlHandle handle ) + { + return new Uniform { id = handle }; + } + + } + + public sealed class Uniform : Uniform where T: struct + where U: struct + where V: struct + where W: struct + { + + internal Uniform() { } + + internal unsafe Uniform( GlHandle id ) + { + this.id = id; + } + + internal static Uniform FromHandle( GlHandle handle ) + { + return new Uniform { id = handle }; + } + + } + + public unsafe partial class OpenGLFunction + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull] Uniform uniform, Matrix44 mat ) + { + Matrix44 temp = mat; + Context.glUniformMatrix4fv( + uniform.id.SignedValue, 1, false, ( float* )&temp ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull]Uniform uniform, + Vec4 vec ) + { + Vec4 temp = vec; + Context.glUniform1fv( uniform.id.SignedValue, 4, &temp.reg ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull]Uniform uniform, Vec4 vec ) + { + Vec4 temp = vec; + Context.glUniform1fv( uniform.id.SignedValue, 4, &temp.reg ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull]Uniform uniform, float v0 ) + { + Context.glUniform1f( uniform.id.SignedValue, v0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( [NotNull]Uniform uniform, int i0 ) + { + Context.glUniform1i( uniform.id.SignedValue, i0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull] Uniform uniform, + float v0, + float v1 ) + { + Context.glUniform2f( uniform.id.SignedValue, v0, v1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull] Uniform uniform, + float v0, + float v1, + float v2 ) + { + Context.glUniform3f( uniform.id.SignedValue, v0, v1, v2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + [NotNull] Uniform uniform, + float v0, + float v1, + float v2, + float v3 ) + { + Context.glUniform4f( uniform.id.SignedValue, v0, v1, v2, v3 ); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/glAPICalling.cs b/StgSharp.Common/Graphics/OpenGL/glAPICalling.cs new file mode 100644 index 00000000..05af95e9 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glAPICalling.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glAPICalling.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.Text; + +namespace StgSharp.Graphics.OpenGL +{ + [AttributeUsage( AttributeTargets.Method )] + public sealed class OpenGLAPICallingAttribute : Attribute + { + + public OpenGLAPICallingAttribute() { } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glApiManager.cs b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs new file mode 100644 index 00000000..d06f7648 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs @@ -0,0 +1,4502 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glApiManager.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.HighPerformance; +using StgSharp.Math; +using StgSharp.MVVM; +using StgSharp.MVVM.View; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class glManager + { + + private const int glExtension = 0x1f03; + private const int glVersion = 0x1f02; + + private static readonly string[] glBranch = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + "OpenGL SC " + }; + + private static string glExtensionList; + + //-------------------------------------------------------------------------------- + + /// + /// Get the function pointer of given OpenGL api _name + /// + /// ContextName of the OpenGL api + /// The funtion pointer of the api in stream of + public static IntPtr LoadGLfunc( string name ) + { + IntPtr ret = InternalIO.glfwGetProcAddress( name ); + if( ret == default ) { + InternalIO.InternalAppendLog( + $"Cannot load OpenGL api called {name}, this api may not exist or supported." ); + return ret; + } + return ret; + } + + /// + /// Load all supported OpenGL APIs and bind them to given . + /// + /// The handle to current OpenGL viewPortDisplay + public static unsafe void LoadOpenGLApiTo( IntPtr contextHandle ) + { + OpenglContext* context = ( OpenglContext* )contextHandle; + delegate* loader = &InternalIO.glfwGetProcAddress; + if( ( IntPtr )context->glGetString != IntPtr.Zero ) { + return; + } + IntPtr proc = loader( "glGetString" ); + if( proc == IntPtr.Zero ) { + #if DEBUG + Console.WriteLine( "Cannot load GL." ); + #endif + throw new Exception( "Cannot load gl" ); + } + context->glGetString = ( delegate* )proc; + + string coreVersion; + if( context->glGetString( glVersion ) == IntPtr.Zero ) { + InternalIO.InternalWriteLog( + "Failed to call glGetString", LogType.Error ); + } + coreVersion = Marshal.PtrToStringAnsi( + context->glGetString( glVersion ) ) ?? + string.Empty; + + foreach( string branch in glBranch ) { + if( coreVersion.Contains( branch ) ) { + coreVersion.Replace( branch, string.Empty ); + } + } + string[] versionSep = coreVersion!.Split( '.' ); + int majorVersion = int.Parse( versionSep[ 0 ] ); + int minorVersion = int.Parse( versionSep[ 1 ] ); + CheckCoreVersion( majorVersion, minorVersion ); + + try { + #region load_core_gl + + LoadGLcore10( context, loader ); + LoadGLcore11( context, loader ); + LoadGLcore12( context, loader ); + LoadGLcore13( context, loader ); + LoadGLcore14( context, loader ); + LoadGLcore15( context, loader ); + LoadGLcore20( context, loader ); + LoadGLcore21( context, loader ); + LoadGLcore30( context, loader ); + LoadGLcore31( context, loader ); + LoadGLcore32( context, loader ); + LoadGLcore33( context, loader ); + LoadGLcore40( context, loader ); + LoadGLcore41( context, loader ); + LoadGLcore42( context, loader ); + LoadGLcore43( context, loader ); + LoadGLcore44( context, loader ); + LoadGLcore45( context, loader ); + LoadGLcore46( context, loader ); + + #endregion load_core_gl + } + catch( Exception ex ) { + if( ex.Message != "Final Version" ) { + throw; + } + } + + uint code = context->glGetError(); + Console.WriteLine( code ); + if( code != 0 ) { + throw new GlExecutionException( code ); + } + + int extensionCount; + context->glGetIntegerv( glConst.NUM_EXTENSIONS, &extensionCount ); + if( extensionCount == 0 ) { + InternalIO.InternalWriteLog( + "No supported OpenGL extensions are found.", LogType.Info ); + return; + } + + List extensions = new List(); + + for( uint i = 0; i < extensionCount; i++ ) { + byte* strPtr = context->glGetStringi( glConst.EXTENSIONS, i ); + extensions.Add( Marshal.PtrToStringAnsi( ( IntPtr )strPtr ) ); + } + + InternalIO.InternalWriteLog( + $"{$"Find OpenGL extensions:"}{Environment.NewLine}{($"{string.Join(';', extensions)}")}", + LogType.Info ); + + #region checkGLextensions + + if( extensions.Contains( "gl_4DFX_multisample" ) ) { + _4DFX_multisample = true; + extensions.Remove( "gl_4DFX_multisample" ); + } + if( extensions.Contains( "gl_3DFX_tbuffer" ) ) { + _3DFX_tbuffer = true; + extensions.Remove( "gl_3DFX_tbuffer" ); + } + if( extensions.Contains( "gl_3DFX_texture_compression_FXT1" ) ) { + _3DFX_texture_compression_FXT1 = true; + extensions.Remove( "gl_3DFX_texture_compression_FXT1" ); + } + if( extensions.Contains( "gl_AMD_blend_minmax_factor" ) ) { + AMD_blend_minmax_factor = true; + extensions.Remove( "glAMD_blend_minmax_factor" ); + } + if( extensions.Contains( "gl_AMD_conservative_depth" ) ) { + AMD_conservative_depth = true; + extensions.Remove( "glAMD_conservative_depth" ); + } + if( extensions.Contains( "gl_AMD_debug_output" ) ) { + AMD_debug_output = true; + extensions.Remove( "glAMD_debug_output" ); + } + if( extensions.Contains( "gl_AMD_depth_clamp_separate" ) ) { + AMD_depth_clamp_separate = true; + extensions.Remove( "glAMD_depth_clamp_separate" ); + } + if( extensions.Contains( "gl_AMD_draw_buffers_blend" ) ) { + AMD_draw_buffers_blend = true; + extensions.Remove( "glAMD_draw_buffers_blend" ); + } + if( extensions.Contains( "gl_AMD_framebuffer_multisample_advanced" ) ) { + AMD_framebuffer_multisample_advanced = true; + extensions.Remove( "glAMD_framebuffer_multisample_advanced" ); + } + if( extensions.Contains( "gl_AMD_framebuffer_sample_positions" ) ) { + AMD_framebuffer_sample_positions = true; + extensions.Remove( "glAMD_framebuffer_sample_positions" ); + } + if( extensions.Contains( "gl_AMD_gcn_shader" ) ) { + AMD_gcn_shader = true; + extensions.Remove( "glAMD_gcn_shader" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_half_float" ) ) { + AMD_gpu_shader_half_float = true; + extensions.Remove( "glAMD_gpu_shader_half_float" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_int16" ) ) { + AMD_gpu_shader_int16 = true; + extensions.Remove( "glAMD_gpu_shader_int16" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_int64" ) ) { + AMD_gpu_shader_int64 = true; + extensions.Remove( "glAMD_gpu_shader_int64" ); + } + if( extensions.Contains( "gl_AMD_interleaved_elements" ) ) { + AMD_interleaved_elements = true; + extensions.Remove( "glAMD_interleaved_elements" ); + } + if( extensions.Contains( "gl_AMD_multi_draw_indirect" ) ) { + AMD_multi_draw_indirect = true; + extensions.Remove( "glAMD_multi_draw_indirect" ); + } + if( extensions.Contains( "gl_AMD_name_gen_delete" ) ) { + AMD_name_gen_delete = true; + extensions.Remove( "glAMD_name_gen_delete" ); + } + if( extensions.Contains( "gl_AMD_occlusion_query_event" ) ) { + AMD_occlusion_query_event = true; + extensions.Remove( "glAMD_occlusion_query_event" ); + } + if( extensions.Contains( "gl_AMD_performance_monitor" ) ) { + AMD_performance_monitor = true; + extensions.Remove( "glAMD_performance_monitor" ); + } + if( extensions.Contains( "gl_AMD_pinned_memory" ) ) { + AMD_pinned_memory = true; + extensions.Remove( "glAMD_pinned_memory" ); + } + if( extensions.Contains( "gl_AMD_query_buffer_object" ) ) { + AMD_query_buffer_object = true; + extensions.Remove( "glAMD_query_buffer_object" ); + } + if( extensions.Contains( "gl_AMD_sample_positions" ) ) { + AMD_sample_positions = true; + extensions.Remove( "glAMD_sample_positions" ); + } + if( extensions.Contains( "gl_AMD_seamless_cubemap_per_texture" ) ) { + AMD_seamless_cubemap_per_texture = true; + extensions.Remove( "glAMD_seamless_cubemap_per_texture" ); + } + if( extensions.Contains( "gl_AMD_shader_atomic_counter_ops" ) ) { + AMD_shader_atomic_counter_ops = true; + extensions.Remove( "glAMD_shader_atomic_counter_ops" ); + } + if( extensions.Contains( "gl_AMD_shader_ballot" ) ) { + AMD_shader_ballot = true; + extensions.Remove( "glAMD_shader_ballot" ); + } + if( extensions.Contains( "gl_AMD_shader_explicit_vertex_parameter" ) ) { + AMD_shader_explicit_vertex_parameter = true; + extensions.Remove( "glAMD_shader_explicit_vertex_parameter" ); + } + if( extensions.Contains( + "gl_AMD_shader_gpu_shader_half_float_fetch" ) ) { + AMD_shader_gpu_shader_half_float_fetch = true; + extensions.Remove( "glAMD_shader_gpu_shader_half_float_fetch" ); + } + if( extensions.Contains( "gl_AMD_shader_image_load_store_lod" ) ) { + AMD_shader_image_load_store_lod = true; + extensions.Remove( "glAMD_shader_image_load_store_lod" ); + } + if( extensions.Contains( "gl_AMD_shader_stencil_export" ) ) { + AMD_shader_stencil_export = true; + extensions.Remove( "glAMD_shader_stencil_export" ); + } + if( extensions.Contains( "gl_AMD_shader_trinary_minmax" ) ) { + AMD_shader_trinary_minmax = true; + extensions.Remove( "glAMD_shader_trinary_minmax" ); + } + if( extensions.Contains( "gl_AMD_sparse_texture" ) ) { + AMD_sparse_texture = true; + extensions.Remove( "glAMD_sparse_texture" ); + } + if( extensions.Contains( "gl_AMD_stencil_operation_extended" ) ) { + AMD_stencil_operation_extended = true; + extensions.Remove( "glAMD_stencil_operation_extended" ); + } + if( extensions.Contains( "gl_AMD_texture_gather_bias_lod" ) ) { + AMD_texture_gather_bias_lod = true; + extensions.Remove( "glAMD_texture_gather_bias_lod" ); + } + if( extensions.Contains( "gl_AMD_texture_texture4" ) ) { + AMD_texture_texture4 = true; + extensions.Remove( "glAMD_texture_texture4" ); + } + if( extensions.Contains( + "gl_AMD_transform_feedback3_lines_triangles" ) ) { + AMD_transform_feedback3_lines_triangles = true; + extensions.Remove( "glAMD_transform_feedback3_lines_triangles" ); + } + if( extensions.Contains( "gl_AMD_transform_feedback4" ) ) { + AMD_transform_feedback4 = true; + extensions.Remove( "glAMD_transform_feedback4" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_layer" ) ) { + AMD_vertex_shader_layer = true; + extensions.Remove( "glAMD_vertex_shader_layer" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_tessellator" ) ) { + AMD_vertex_shader_tessellator = true; + extensions.Remove( "glAMD_vertex_shader_tessellator" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_viewport_index" ) ) { + AMD_vertex_shader_viewport_index = true; + extensions.Remove( "glAMD_vertex_shader_viewport_index" ); + } + if( extensions.Contains( "gl_APPLE_aux_depth_stencil" ) ) { + APPLE_aux_depth_stencil = true; + extensions.Remove( "glAPPLE_aux_depth_stencil" ); + } + if( extensions.Contains( "gl_APPLE_client_storage" ) ) { + APPLE_client_storage = true; + extensions.Remove( "glAPPLE_client_storage" ); + } + if( extensions.Contains( "gl_APPLE_element_array" ) ) { + APPLE_element_array = true; + extensions.Remove( "glAPPLE_element_array" ); + } + if( extensions.Contains( "gl_APPLE_fence" ) ) { + APPLE_fence = true; + extensions.Remove( "glAPPLE_fence" ); + } + if( extensions.Contains( "gl_APPLE_float_pixels" ) ) { + APPLE_float_pixels = true; + extensions.Remove( "glAPPLE_float_pixels" ); + } + if( extensions.Contains( "gl_APPLE_flush_buffer_range" ) ) { + APPLE_flush_buffer_range = true; + extensions.Remove( "glAPPLE_flush_buffer_range" ); + } + if( extensions.Contains( "gl_APPLE_object_purgeable" ) ) { + APPLE_object_purgeable = true; + extensions.Remove( "glAPPLE_object_purgeable" ); + } + if( extensions.Contains( "gl_APPLE_rgb_422" ) ) { + APPLE_rgb_422 = true; + extensions.Remove( "glAPPLE_rgb_422" ); + } + if( extensions.Contains( "gl_APPLE_row_bytes" ) ) { + APPLE_row_bytes = true; + extensions.Remove( "glAPPLE_row_bytes" ); + } + if( extensions.Contains( "gl_APPLE_specular_vector" ) ) { + APPLE_specular_vector = true; + extensions.Remove( "glAPPLE_specular_vector" ); + } + if( extensions.Contains( "gl_APPLE_texture_range" ) ) { + APPLE_texture_range = true; + extensions.Remove( "glAPPLE_texture_range" ); + } + if( extensions.Contains( "gl_APPLE_transform_hint" ) ) { + APPLE_transform_hint = true; + extensions.Remove( "glAPPLE_transform_hint" ); + } + if( extensions.Contains( "gl_APPLE_vertex_array_object" ) ) { + APPLE_vertex_array_object = true; + extensions.Remove( "glAPPLE_vertex_array_object" ); + } + if( extensions.Contains( "gl_APPLE_vertex_array_range" ) ) { + APPLE_vertex_array_range = true; + extensions.Remove( "glAPPLE_vertex_array_range" ); + } + if( extensions.Contains( "gl_APPLE_vertex_program_evaluators" ) ) { + APPLE_vertex_program_evaluators = true; + extensions.Remove( "glAPPLE_vertex_program_evaluators" ); + } + if( extensions.Contains( "gl_APPLE_ycbcr_422" ) ) { + APPLE_ycbcr_422 = true; + extensions.Remove( "glAPPLE_ycbcr_422" ); + } + if( extensions.Contains( "gl_ARB_ES2_compatibility" ) ) { + ARB_ES2_compatibility = true; + extensions.Remove( "glARB_ES2_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_1_compatibility" ) ) { + ARB_ES3_1_compatibility = true; + extensions.Remove( "glARB_ES3_1_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_2_compatibility" ) ) { + ARB_ES3_2_compatibility = true; + extensions.Remove( "glARB_ES3_2_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_compatibility" ) ) { + ARB_ES3_compatibility = true; + extensions.Remove( "glARB_ES3_compatibility" ); + } + if( extensions.Contains( "gl_ARB_arrays_of_arrays" ) ) { + ARB_arrays_of_arrays = true; + extensions.Remove( "glARB_arrays_of_arrays" ); + } + if( extensions.Contains( "gl_ARB_base_instance" ) ) { + ARB_base_instance = true; + extensions.Remove( "glARB_base_instance" ); + } + if( extensions.Contains( "gl_ARB_bindless_texture" ) ) { + ARB_bindless_texture = true; + extensions.Remove( "glARB_bindless_texture" ); + } + if( extensions.Contains( "gl_ARB_blend_func_extended" ) ) { + ARB_blend_func_extended = true; + extensions.Remove( "glARB_blend_func_extended" ); + } + if( extensions.Contains( "gl_ARB_buffer_storage" ) ) { + ARB_buffer_storage = true; + extensions.Remove( "glARB_buffer_storage" ); + } + if( extensions.Contains( "gl_ARB_cl_event" ) ) { + ARB_cl_event = true; + extensions.Remove( "glARB_cl_event" ); + } + if( extensions.Contains( "gl_ARB_clear_buffer_object" ) ) { + ARB_clear_buffer_object = true; + extensions.Remove( "glARB_clear_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_clear_texture" ) ) { + ARB_clear_texture = true; + extensions.Remove( "glARB_clear_texture" ); + } + if( extensions.Contains( "gl_ARB_clip_control" ) ) { + ARB_clip_control = true; + extensions.Remove( "glARB_clip_control" ); + } + if( extensions.Contains( "gl_ARB_color_buffer_float" ) ) { + ARB_color_buffer_float = true; + extensions.Remove( "glARB_color_buffer_float" ); + } + if( extensions.Contains( "gl_ARB_compatibility" ) ) { + ARB_compatibility = true; + extensions.Remove( "glARB_compatibility" ); + } + if( extensions.Contains( "gl_ARB_compressed_texture_pixel_storage" ) ) { + ARB_compressed_texture_pixel_storage = true; + extensions.Remove( "glARB_compressed_texture_pixel_storage" ); + } + if( extensions.Contains( "gl_ARB_compute_shader" ) ) { + ARB_compute_shader = true; + extensions.Remove( "glARB_compute_shader" ); + } + if( extensions.Contains( "gl_ARB_compute_variable_group_size" ) ) { + ARB_compute_variable_group_size = true; + extensions.Remove( "glARB_compute_variable_group_size" ); + } + if( extensions.Contains( "gl_ARB_conditional_render_inverted" ) ) { + ARB_conditional_render_inverted = true; + extensions.Remove( "glARB_conditional_render_inverted" ); + } + if( extensions.Contains( "gl_ARB_conservative_depth" ) ) { + ARB_conservative_depth = true; + extensions.Remove( "glARB_conservative_depth" ); + } + if( extensions.Contains( "gl_ARB_copy_buffer" ) ) { + ARB_copy_buffer = true; + extensions.Remove( "glARB_copy_buffer" ); + } + if( extensions.Contains( "gl_ARB_copy_image" ) ) { + ARB_copy_image = true; + extensions.Remove( "glARB_copy_image" ); + } + if( extensions.Contains( "gl_ARB_cull_distance" ) ) { + ARB_cull_distance = true; + extensions.Remove( "glARB_cull_distance" ); + } + if( extensions.Contains( "gl_ARB_debug_output" ) ) { + ARB_debug_output = true; + extensions.Remove( "glARB_debug_output" ); + } + if( extensions.Contains( "gl_ARB_depth_buffer_float" ) ) { + ARB_depth_buffer_float = true; + extensions.Remove( "glARB_depth_buffer_float" ); + } + if( extensions.Contains( "gl_ARB_depth_clamp" ) ) { + ARB_depth_clamp = true; + extensions.Remove( "glARB_depth_clamp" ); + } + if( extensions.Contains( "gl_ARB_depth_texture" ) ) { + ARB_depth_texture = true; + extensions.Remove( "glARB_depth_texture" ); + } + if( extensions.Contains( "gl_ARB_derivative_control" ) ) { + ARB_derivative_control = true; + extensions.Remove( "glARB_derivative_control" ); + } + if( extensions.Contains( "gl_ARB_direct_state_access" ) ) { + ARB_direct_state_access = true; + extensions.Remove( "glARB_direct_state_access" ); + } + if( extensions.Contains( "gl_ARB_draw_buffers" ) ) { + ARB_draw_buffers = true; + extensions.Remove( "glARB_draw_buffers" ); + } + if( extensions.Contains( "gl_ARB_draw_buffers_blend" ) ) { + ARB_draw_buffers_blend = true; + extensions.Remove( "glARB_draw_buffers_blend" ); + } + if( extensions.Contains( "gl_ARB_draw_elements_base_vertex" ) ) { + ARB_draw_elements_base_vertex = true; + extensions.Remove( "glARB_draw_elements_base_vertex" ); + } + if( extensions.Contains( "gl_ARB_draw_indirect" ) ) { + ARB_draw_indirect = true; + extensions.Remove( "glARB_draw_indirect" ); + } + if( extensions.Contains( "gl_ARB_draw_instanced" ) ) { + ARB_draw_instanced = true; + extensions.Remove( "glARB_draw_instanced" ); + } + if( extensions.Contains( "gl_ARB_enhanced_layouts" ) ) { + ARB_enhanced_layouts = true; + extensions.Remove( "glARB_enhanced_layouts" ); + } + if( extensions.Contains( "gl_ARB_explicit_attrib_location" ) ) { + ARB_explicit_attrib_location = true; + extensions.Remove( "glARB_explicit_attrib_location" ); + } + if( extensions.Contains( "gl_ARB_explicit_uniform_location" ) ) { + ARB_explicit_uniform_location = true; + extensions.Remove( "glARB_explicit_uniform_location" ); + } + if( extensions.Contains( "gl_ARB_fragment_coord_conventions" ) ) { + ARB_fragment_coord_conventions = true; + extensions.Remove( "glARB_fragment_coord_conventions" ); + } + if( extensions.Contains( "gl_ARB_fragment_layer_viewport" ) ) { + ARB_fragment_layer_viewport = true; + extensions.Remove( "glARB_fragment_layer_viewport" ); + } + if( extensions.Contains( "gl_ARB_fragment_program" ) ) { + ARB_fragment_program = true; + extensions.Remove( "glARB_fragment_program" ); + } + if( extensions.Contains( "gl_ARB_fragment_program_shadow" ) ) { + ARB_fragment_program_shadow = true; + extensions.Remove( "glARB_fragment_program_shadow" ); + } + if( extensions.Contains( "gl_ARB_fragment_shader" ) ) { + ARB_fragment_shader = true; + extensions.Remove( "glARB_fragment_shader" ); + } + if( extensions.Contains( "gl_ARB_fragment_shader_interlock" ) ) { + ARB_fragment_shader_interlock = true; + extensions.Remove( "glARB_fragment_shader_interlock" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_no_attachments" ) ) { + ARB_framebuffer_no_attachments = true; + extensions.Remove( "glARB_framebuffer_no_attachments" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_object" ) ) { + ARB_framebuffer_object = true; + extensions.Remove( "glARB_framebuffer_object" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_sRGB" ) ) { + ARB_framebuffer_sRGB = true; + extensions.Remove( "glARB_framebuffer_sRGB" ); + } + if( extensions.Contains( "gl_ARB_geometry_shader4" ) ) { + ARB_geometry_shader4 = true; + extensions.Remove( "glARB_geometry_shader4" ); + } + if( extensions.Contains( "gl_ARB_get_program_binary" ) ) { + ARB_get_program_binary = true; + extensions.Remove( "glARB_get_program_binary" ); + } + if( extensions.Contains( "gl_ARB_get_texture_sub_image" ) ) { + ARB_get_texture_sub_image = true; + extensions.Remove( "glARB_get_texture_sub_image" ); + } + if( extensions.Contains( "gl_ARB_gl_spirv" ) ) { + ARB_gl_spirv = true; + extensions.Remove( "glARB_gl_spirv" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader5" ) ) { + ARB_gpu_shader5 = true; + extensions.Remove( "glARB_gpu_shader5" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader_fp64" ) ) { + ARB_gpu_shader_fp64 = true; + extensions.Remove( "glARB_gpu_shader_fp64" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader_int64" ) ) { + ARB_gpu_shader_int64 = true; + extensions.Remove( "glARB_gpu_shader_int64" ); + } + if( extensions.Contains( "gl_ARB_half_float_pixel" ) ) { + ARB_half_float_pixel = true; + extensions.Remove( "glARB_half_float_pixel" ); + } + if( extensions.Contains( "gl_ARB_half_float_vertex" ) ) { + ARB_half_float_vertex = true; + extensions.Remove( "glARB_half_float_vertex" ); + } + if( extensions.Contains( "gl_ARB_imaging" ) ) { + ARB_imaging = true; + extensions.Remove( "glARB_imaging" ); + } + if( extensions.Contains( "gl_ARB_indirect_parameters" ) ) { + ARB_indirect_parameters = true; + extensions.Remove( "glARB_indirect_parameters" ); + } + if( extensions.Contains( "gl_ARB_instanced_arrays" ) ) { + ARB_instanced_arrays = true; + extensions.Remove( "glARB_instanced_arrays" ); + } + if( extensions.Contains( "gl_ARB_internalformat_query" ) ) { + ARB_internalformat_query = true; + extensions.Remove( "glARB_internalformat_query" ); + } + if( extensions.Contains( "gl_ARB_internalformat_query2" ) ) { + ARB_internalformat_query2 = true; + extensions.Remove( "glARB_internalformat_query2" ); + } + if( extensions.Contains( "gl_ARB_invalidate_subdata" ) ) { + ARB_invalidate_subdata = true; + extensions.Remove( "glARB_invalidate_subdata" ); + } + if( extensions.Contains( "gl_ARB_map_buffer_alignment" ) ) { + ARB_map_buffer_alignment = true; + extensions.Remove( "glARB_map_buffer_alignment" ); + } + if( extensions.Contains( "gl_ARB_map_buffer_range" ) ) { + ARB_map_buffer_range = true; + extensions.Remove( "glARB_map_buffer_range" ); + } + if( extensions.Contains( "gl_ARB_matrix_palette" ) ) { + ARB_matrix_palette = true; + extensions.Remove( "glARB_matrix_palette" ); + } + if( extensions.Contains( "gl_ARB_multi_bind" ) ) { + ARB_multi_bind = true; + extensions.Remove( "glARB_multi_bind" ); + } + if( extensions.Contains( "gl_ARB_multi_draw_indirect" ) ) { + ARB_multi_draw_indirect = true; + extensions.Remove( "glARB_multi_draw_indirect" ); + } + if( extensions.Contains( "gl_ARB_multisample" ) ) { + ARB_multisample = true; + extensions.Remove( "glARB_multisample" ); + } + if( extensions.Contains( "gl_ARB_multitexture" ) ) { + ARB_multitexture = true; + extensions.Remove( "glARB_multitexture" ); + } + if( extensions.Contains( "gl_ARB_occlusion_query" ) ) { + ARB_occlusion_query = true; + extensions.Remove( "glARB_occlusion_query" ); + } + if( extensions.Contains( "gl_ARB_occlusion_query2" ) ) { + ARB_occlusion_query2 = true; + extensions.Remove( "glARB_occlusion_query2" ); + } + if( extensions.Contains( "gl_ARB_parallel_shader_compile" ) ) { + ARB_parallel_shader_compile = true; + extensions.Remove( "glARB_parallel_shader_compile" ); + } + if( extensions.Contains( "gl_ARB_pipeline_statistics_query" ) ) { + ARB_pipeline_statistics_query = true; + extensions.Remove( "glARB_pipeline_statistics_query" ); + } + if( extensions.Contains( "gl_ARB_pixel_buffer_object" ) ) { + ARB_pixel_buffer_object = true; + extensions.Remove( "glARB_pixel_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_point_parameters" ) ) { + ARB_point_parameters = true; + extensions.Remove( "glARB_point_parameters" ); + } + if( extensions.Contains( "gl_ARB_point_sprite" ) ) { + ARB_point_sprite = true; + extensions.Remove( "glARB_point_sprite" ); + } + if( extensions.Contains( "gl_ARB_polygon_offset_clamp" ) ) { + ARB_polygon_offset_clamp = true; + extensions.Remove( "glARB_polygon_offset_clamp" ); + } + if( extensions.Contains( "gl_ARB_post_depth_coverage" ) ) { + ARB_post_depth_coverage = true; + extensions.Remove( "glARB_post_depth_coverage" ); + } + if( extensions.Contains( "gl_ARB_program_interface_query" ) ) { + ARB_program_interface_query = true; + extensions.Remove( "glARB_program_interface_query" ); + } + if( extensions.Contains( "gl_ARB_provoking_vertex" ) ) { + ARB_provoking_vertex = true; + extensions.Remove( "glARB_provoking_vertex" ); + } + if( extensions.Contains( "gl_ARB_query_buffer_object" ) ) { + ARB_query_buffer_object = true; + extensions.Remove( "glARB_query_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_robust_buffer_access_behavior" ) ) { + ARB_robust_buffer_access_behavior = true; + extensions.Remove( "glARB_robust_buffer_access_behavior" ); + } + if( extensions.Contains( "gl_ARB_robustness" ) ) { + ARB_robustness = true; + extensions.Remove( "glARB_robustness" ); + } + if( extensions.Contains( "gl_ARB_robustness_isolation" ) ) { + ARB_robustness_isolation = true; + extensions.Remove( "glARB_robustness_isolation" ); + } + if( extensions.Contains( "gl_ARB_sample_locations" ) ) { + ARB_sample_locations = true; + extensions.Remove( "glARB_sample_locations" ); + } + if( extensions.Contains( "gl_ARB_sample_shading" ) ) { + ARB_sample_shading = true; + extensions.Remove( "glARB_sample_shading" ); + } + if( extensions.Contains( "gl_ARB_sampler_objects" ) ) { + ARB_sampler_objects = true; + extensions.Remove( "glARB_sampler_objects" ); + } + if( extensions.Contains( "gl_ARB_seamless_cube_map" ) ) { + ARB_seamless_cube_map = true; + extensions.Remove( "glARB_seamless_cube_map" ); + } + if( extensions.Contains( "gl_ARB_seamless_cubemap_per_texture" ) ) { + ARB_seamless_cubemap_per_texture = true; + extensions.Remove( "glARB_seamless_cubemap_per_texture" ); + } + if( extensions.Contains( "gl_ARB_separate_shader_objects" ) ) { + ARB_separate_shader_objects = true; + extensions.Remove( "glARB_separate_shader_objects" ); + } + if( extensions.Contains( "gl_ARB_shader_atomic_counter_ops" ) ) { + ARB_shader_atomic_counter_ops = true; + extensions.Remove( "glARB_shader_atomic_counter_ops" ); + } + if( extensions.Contains( "gl_ARB_shader_atomic_counters" ) ) { + ARB_shader_atomic_counters = true; + extensions.Remove( "glARB_shader_atomic_counters" ); + } + if( extensions.Contains( "gl_ARB_shader_ballot" ) ) { + ARB_shader_ballot = true; + extensions.Remove( "glARB_shader_ballot" ); + } + if( extensions.Contains( "gl_ARB_shader_bit_encoding" ) ) { + ARB_shader_bit_encoding = true; + extensions.Remove( "glARB_shader_bit_encoding" ); + } + if( extensions.Contains( "gl_ARB_shader_clock" ) ) { + ARB_shader_clock = true; + extensions.Remove( "glARB_shader_clock" ); + } + if( extensions.Contains( "gl_ARB_shader_draw_parameters" ) ) { + ARB_shader_draw_parameters = true; + extensions.Remove( "glARB_shader_draw_parameters" ); + } + if( extensions.Contains( "gl_ARB_shader_group_vote" ) ) { + ARB_shader_group_vote = true; + extensions.Remove( "glARB_shader_group_vote" ); + } + if( extensions.Contains( "gl_ARB_shader_image_load_store" ) ) { + ARB_shader_image_load_store = true; + extensions.Remove( "glARB_shader_image_load_store" ); + } + if( extensions.Contains( "gl_ARB_shader_image_size" ) ) { + ARB_shader_image_size = true; + extensions.Remove( "glARB_shader_image_size" ); + } + if( extensions.Contains( "gl_ARB_shader_objects" ) ) { + ARB_shader_objects = true; + extensions.Remove( "glARB_shader_objects" ); + } + if( extensions.Contains( "gl_ARB_shader_precision" ) ) { + ARB_shader_precision = true; + extensions.Remove( "glARB_shader_precision" ); + } + if( extensions.Contains( "gl_ARB_shader_stencil_export" ) ) { + ARB_shader_stencil_export = true; + extensions.Remove( "glARB_shader_stencil_export" ); + } + if( extensions.Contains( "gl_ARB_shader_storage_buffer_object" ) ) { + ARB_shader_storage_buffer_object = true; + extensions.Remove( "glARB_shader_storage_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_shader_subroutine" ) ) { + ARB_shader_subroutine = true; + extensions.Remove( "glARB_shader_subroutine" ); + } + if( extensions.Contains( "gl_ARB_shader_texture_image_samples" ) ) { + ARB_shader_texture_image_samples = true; + extensions.Remove( "glARB_shader_texture_image_samples" ); + } + if( extensions.Contains( "gl_ARB_shader_texture_lod" ) ) { + ARB_shader_texture_lod = true; + extensions.Remove( "glARB_shader_texture_lod" ); + } + if( extensions.Contains( "gl_ARB_shader_viewport_layer_array" ) ) { + ARB_shader_viewport_layer_array = true; + extensions.Remove( "glARB_shader_viewport_layer_array" ); + } + if( extensions.Contains( "gl_ARB_shading_language_100" ) ) { + ARB_shading_language_100 = true; + extensions.Remove( "glARB_shading_language_100" ); + } + if( extensions.Contains( "gl_ARB_shading_language_420pack" ) ) { + ARB_shading_language_420pack = true; + extensions.Remove( "glARB_shading_language_420pack" ); + } + if( extensions.Contains( "gl_ARB_shading_language_include" ) ) { + ARB_shading_language_include = true; + extensions.Remove( "glARB_shading_language_include" ); + } + if( extensions.Contains( "gl_ARB_shading_language_packing" ) ) { + ARB_shading_language_packing = true; + extensions.Remove( "glARB_shading_language_packing" ); + } + if( extensions.Contains( "gl_ARB_shadow" ) ) { + ARB_shadow = true; + extensions.Remove( "glARB_shadow" ); + } + if( extensions.Contains( "gl_ARB_shadow_ambient" ) ) { + ARB_shadow_ambient = true; + extensions.Remove( "glARB_shadow_ambient" ); + } + if( extensions.Contains( "gl_ARB_sparse_buffer" ) ) { + ARB_sparse_buffer = true; + extensions.Remove( "glARB_sparse_buffer" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture" ) ) { + ARB_sparse_texture = true; + extensions.Remove( "glARB_sparse_texture" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture2" ) ) { + ARB_sparse_texture2 = true; + extensions.Remove( "glARB_sparse_texture2" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture_clamp" ) ) { + ARB_sparse_texture_clamp = true; + extensions.Remove( "glARB_sparse_texture_clamp" ); + } + if( extensions.Contains( "gl_ARB_spirv_extensions" ) ) { + ARB_spirv_extensions = true; + extensions.Remove( "glARB_spirv_extensions" ); + } + if( extensions.Contains( "gl_ARB_stencil_texturing" ) ) { + ARB_stencil_texturing = true; + extensions.Remove( "glARB_stencil_texturing" ); + } + if( extensions.Contains( "gl_ARB_sync" ) ) { + ARB_sync = true; + extensions.Remove( "glARB_sync" ); + } + if( extensions.Contains( "gl_ARB_tessellation_shader" ) ) { + ARB_tessellation_shader = true; + extensions.Remove( "glARB_tessellation_shader" ); + } + if( extensions.Contains( "gl_ARB_texture_barrier" ) ) { + ARB_texture_barrier = true; + extensions.Remove( "glARB_texture_barrier" ); + } + if( extensions.Contains( "gl_ARB_texture_border_clamp" ) ) { + ARB_texture_border_clamp = true; + extensions.Remove( "glARB_texture_border_clamp" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_object" ) ) { + ARB_texture_buffer_object = true; + extensions.Remove( "glARB_texture_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_object_rgb32" ) ) { + ARB_texture_buffer_object_rgb32 = true; + extensions.Remove( "glARB_texture_buffer_object_rgb32" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_range" ) ) { + ARB_texture_buffer_range = true; + extensions.Remove( "glARB_texture_buffer_range" ); + } + if( extensions.Contains( "gl_ARB_texture_compression" ) ) { + ARB_texture_compression = true; + extensions.Remove( "glARB_texture_compression" ); + } + if( extensions.Contains( "gl_ARB_texture_compression_bptc" ) ) { + ARB_texture_compression_bptc = true; + extensions.Remove( "glARB_texture_compression_bptc" ); + } + if( extensions.Contains( "gl_ARB_texture_compression_rgtc" ) ) { + ARB_texture_compression_rgtc = true; + extensions.Remove( "glARB_texture_compression_rgtc" ); + } + if( extensions.Contains( "gl_ARB_texture_cube_map" ) ) { + ARB_texture_cube_map = true; + extensions.Remove( "glARB_texture_cube_map" ); + } + if( extensions.Contains( "gl_ARB_texture_cube_map_array" ) ) { + ARB_texture_cube_map_array = true; + extensions.Remove( "glARB_texture_cube_map_array" ); + } + if( extensions.Contains( "gl_ARB_texture_env_add" ) ) { + ARB_texture_env_add = true; + extensions.Remove( "glARB_texture_env_add" ); + } + if( extensions.Contains( "gl_ARB_texture_env_combine" ) ) { + ARB_texture_env_combine = true; + extensions.Remove( "glARB_texture_env_combine" ); + } + if( extensions.Contains( "gl_ARB_texture_env_crossbar" ) ) { + ARB_texture_env_crossbar = true; + extensions.Remove( "glARB_texture_env_crossbar" ); + } + if( extensions.Contains( "gl_ARB_texture_env_dot3" ) ) { + ARB_texture_env_dot3 = true; + extensions.Remove( "glARB_texture_env_dot3" ); + } + if( extensions.Contains( "gl_ARB_texture_filter_anisotropic" ) ) { + ARB_texture_filter_anisotropic = true; + extensions.Remove( "glARB_texture_filter_anisotropic" ); + } + if( extensions.Contains( "gl_ARB_texture_filter_minmax" ) ) { + ARB_texture_filter_minmax = true; + extensions.Remove( "glARB_texture_filter_minmax" ); + } + if( extensions.Contains( "gl_ARB_texture_float" ) ) { + ARB_texture_float = true; + extensions.Remove( "glARB_texture_float" ); + } + if( extensions.Contains( "gl_ARB_texture_gather" ) ) { + ARB_texture_gather = true; + extensions.Remove( "glARB_texture_gather" ); + } + if( extensions.Contains( "gl_ARB_texture_mirror_clamp_to_edge" ) ) { + ARB_texture_mirror_clamp_to_edge = true; + extensions.Remove( "glARB_texture_mirror_clamp_to_edge" ); + } + if( extensions.Contains( "gl_ARB_texture_mirrored_repeat" ) ) { + ARB_texture_mirrored_repeat = true; + extensions.Remove( "glARB_texture_mirrored_repeat" ); + } + if( extensions.Contains( "gl_ARB_texture_multisample" ) ) { + ARB_texture_multisample = true; + extensions.Remove( "glARB_texture_multisample" ); + } + if( extensions.Contains( "gl_ARB_texture_non_power_of_two" ) ) { + ARB_texture_non_power_of_two = true; + extensions.Remove( "glARB_texture_non_power_of_two" ); + } + if( extensions.Contains( "gl_ARB_texture_query_levels" ) ) { + ARB_texture_query_levels = true; + extensions.Remove( "glARB_texture_query_levels" ); + } + if( extensions.Contains( "gl_ARB_texture_query_lod" ) ) { + ARB_texture_query_lod = true; + extensions.Remove( "glARB_texture_query_lod" ); + } + if( extensions.Contains( "gl_ARB_texture_rectangle" ) ) { + ARB_texture_rectangle = true; + extensions.Remove( "glARB_texture_rectangle" ); + } + if( extensions.Contains( "gl_ARB_texture_rg" ) ) { + ARB_texture_rg = true; + extensions.Remove( "glARB_texture_rg" ); + } + if( extensions.Contains( "gl_ARB_texture_rgb10_a2ui" ) ) { + ARB_texture_rgb10_a2ui = true; + extensions.Remove( "glARB_texture_rgb10_a2ui" ); + } + if( extensions.Contains( "gl_ARB_texture_stencil8" ) ) { + ARB_texture_stencil8 = true; + extensions.Remove( "glARB_texture_stencil8" ); + } + if( extensions.Contains( "gl_ARB_texture_storage" ) ) { + ARB_texture_storage = true; + extensions.Remove( "glARB_texture_storage" ); + } + if( extensions.Contains( "gl_ARB_texture_storage_multisample" ) ) { + ARB_texture_storage_multisample = true; + extensions.Remove( "glARB_texture_storage_multisample" ); + } + if( extensions.Contains( "gl_ARB_texture_swizzle" ) ) { + ARB_texture_swizzle = true; + extensions.Remove( "glARB_texture_swizzle" ); + } + if( extensions.Contains( "gl_ARB_texture_view" ) ) { + ARB_texture_view = true; + extensions.Remove( "glARB_texture_view" ); + } + if( extensions.Contains( "gl_ARB_timer_query" ) ) { + ARB_timer_query = true; + extensions.Remove( "glARB_timer_query" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback2" ) ) { + ARB_transform_feedback2 = true; + extensions.Remove( "glARB_transform_feedback2" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback3" ) ) { + ARB_transform_feedback3 = true; + extensions.Remove( "glARB_transform_feedback3" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback_instanced" ) ) { + ARB_transform_feedback_instanced = true; + extensions.Remove( "glARB_transform_feedback_instanced" ); + } + if( extensions.Contains( + "gl_ARB_transform_feedback_overflow_query" ) ) { + ARB_transform_feedback_overflow_query = true; + extensions.Remove( "glARB_transform_feedback_overflow_query" ); + } + if( extensions.Contains( "gl_ARB_transpose_matrix" ) ) { + ARB_transpose_matrix = true; + extensions.Remove( "glARB_transpose_matrix" ); + } + if( extensions.Contains( "gl_ARB_uniform_buffer_object" ) ) { + ARB_uniform_buffer_object = true; + extensions.Remove( "glARB_uniform_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_array_bgra" ) ) { + ARB_vertex_array_bgra = true; + extensions.Remove( "glARB_vertex_array_bgra" ); + } + if( extensions.Contains( "gl_ARB_vertex_array_object" ) ) { + ARB_vertex_array_object = true; + extensions.Remove( "glARB_vertex_array_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_attrib_64bit" ) ) { + ARB_vertex_attrib_64bit = true; + extensions.Remove( "glARB_vertex_attrib_64bit" ); + } + if( extensions.Contains( "gl_ARB_vertex_attrib_binding" ) ) { + ARB_vertex_attrib_binding = true; + extensions.Remove( "glARB_vertex_attrib_binding" ); + } + if( extensions.Contains( "gl_ARB_vertex_blend" ) ) { + ARB_vertex_blend = true; + extensions.Remove( "glARB_vertex_blend" ); + } + if( extensions.Contains( "gl_ARB_vertex_buffer_object" ) ) { + ARB_vertex_buffer_object = true; + extensions.Remove( "glARB_vertex_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_program" ) ) { + ARB_vertex_program = true; + extensions.Remove( "glARB_vertex_program" ); + } + if( extensions.Contains( "gl_ARB_vertex_shader" ) ) { + ARB_vertex_shader = true; + extensions.Remove( "glARB_vertex_shader" ); + } + if( extensions.Contains( "gl_ARB_vertex_type_10f_11f_11f_rev" ) ) { + ARB_vertex_type_10f_11f_11f_rev = true; + extensions.Remove( "glARB_vertex_type_10f_11f_11f_rev" ); + } + if( extensions.Contains( "gl_ARB_vertex_type_2_10_10_10_rev" ) ) { + ARB_vertex_type_2_10_10_10_rev = true; + extensions.Remove( "glARB_vertex_type_2_10_10_10_rev" ); + } + if( extensions.Contains( "gl_ARB_viewport_array" ) ) { + ARB_viewport_array = true; + extensions.Remove( "glARB_viewport_array" ); + } + if( extensions.Contains( "gl_ARB_window_pos" ) ) { + ARB_window_pos = true; + extensions.Remove( "glARB_window_pos" ); + } + if( extensions.Contains( "gl_ATI_draw_buffers" ) ) { + ATI_draw_buffers = true; + extensions.Remove( "glATI_draw_buffers" ); + } + if( extensions.Contains( "gl_ATI_element_array" ) ) { + ATI_element_array = true; + extensions.Remove( "glATI_element_array" ); + } + if( extensions.Contains( "gl_ATI_envmap_bumpmap" ) ) { + ATI_envmap_bumpmap = true; + extensions.Remove( "glATI_envmap_bumpmap" ); + } + if( extensions.Contains( "gl_ATI_fragment_shader" ) ) { + ATI_fragment_shader = true; + extensions.Remove( "glATI_fragment_shader" ); + } + if( extensions.Contains( "gl_ATI_map_object_buffer" ) ) { + ATI_map_object_buffer = true; + extensions.Remove( "glATI_map_object_buffer" ); + } + if( extensions.Contains( "gl_ATI_meminfo" ) ) { + ATI_meminfo = true; + extensions.Remove( "glATI_meminfo" ); + } + if( extensions.Contains( "gl_ATI_pixel_format_float" ) ) { + ATI_pixel_format_float = true; + extensions.Remove( "glATI_pixel_format_float" ); + } + if( extensions.Contains( "gl_ATI_pn_triangles" ) ) { + ATI_pn_triangles = true; + extensions.Remove( "glATI_pn_triangles" ); + } + if( extensions.Contains( "gl_ATI_separate_stencil" ) ) { + ATI_separate_stencil = true; + extensions.Remove( "glATI_separate_stencil" ); + } + if( extensions.Contains( "gl_ATI_text_fragment_shader" ) ) { + ATI_text_fragment_shader = true; + extensions.Remove( "glATI_text_fragment_shader" ); + } + if( extensions.Contains( "gl_ATI_texture_env_combine3" ) ) { + ATI_texture_env_combine3 = true; + extensions.Remove( "glATI_texture_env_combine3" ); + } + if( extensions.Contains( "gl_ATI_texture_float" ) ) { + ATI_texture_float = true; + extensions.Remove( "glATI_texture_float" ); + } + if( extensions.Contains( "gl_ATI_texture_mirror_once" ) ) { + ATI_texture_mirror_once = true; + extensions.Remove( "glATI_texture_mirror_once" ); + } + if( extensions.Contains( "gl_ATI_vertex_array_object" ) ) { + ATI_vertex_array_object = true; + extensions.Remove( "glATI_vertex_array_object" ); + } + if( extensions.Contains( "gl_ATI_vertex_attrib_array_object" ) ) { + ATI_vertex_attrib_array_object = true; + extensions.Remove( "glATI_vertex_attrib_array_object" ); + } + if( extensions.Contains( "gl_ATI_vertex_streams" ) ) { + ATI_vertex_streams = true; + extensions.Remove( "glATI_vertex_streams" ); + } + if( extensions.Contains( "gl_EXT_422_pixels" ) ) { + EXT_422_pixels = true; + extensions.Remove( "glEXT_422_pixels" ); + } + if( extensions.Contains( "gl_EXT_EGL_image_storage" ) ) { + EXT_EGL_image_storage = true; + extensions.Remove( "glEXT_EGL_image_storage" ); + } + if( extensions.Contains( "gl_EXT_EGL_sync" ) ) { + EXT_EGL_sync = true; + extensions.Remove( "glEXT_EGL_sync" ); + } + if( extensions.Contains( "gl_EXT_abgr" ) ) { + EXT_abgr = true; + extensions.Remove( "glEXT_abgr" ); + } + if( extensions.Contains( "gl_EXT_bgra" ) ) { + EXT_bgra = true; + extensions.Remove( "glEXT_bgra" ); + } + if( extensions.Contains( "gl_EXT_bindable_uniform" ) ) { + EXT_bindable_uniform = true; + extensions.Remove( "glEXT_bindable_uniform" ); + } + if( extensions.Contains( "gl_EXT_blend_color" ) ) { + EXT_blend_color = true; + extensions.Remove( "glEXT_blend_color" ); + } + if( extensions.Contains( "gl_EXT_blend_equation_separate" ) ) { + EXT_blend_equation_separate = true; + extensions.Remove( "glEXT_blend_equation_separate" ); + } + if( extensions.Contains( "gl_EXT_blend_func_separate" ) ) { + EXT_blend_func_separate = true; + extensions.Remove( "glEXT_blend_func_separate" ); + } + if( extensions.Contains( "gl_EXT_blend_logic_op" ) ) { + EXT_blend_logic_op = true; + extensions.Remove( "glEXT_blend_logic_op" ); + } + if( extensions.Contains( "gl_EXT_blend_minmax" ) ) { + EXT_blend_minmax = true; + extensions.Remove( "glEXT_blend_minmax" ); + } + if( extensions.Contains( "gl_EXT_blend_subtract" ) ) { + EXT_blend_subtract = true; + extensions.Remove( "glEXT_blend_subtract" ); + } + if( extensions.Contains( "gl_EXT_clip_volume_hint" ) ) { + EXT_clip_volume_hint = true; + extensions.Remove( "glEXT_clip_volume_hint" ); + } + if( extensions.Contains( "gl_EXT_cmyka" ) ) { + EXT_cmyka = true; + extensions.Remove( "glEXT_cmyka" ); + } + if( extensions.Contains( "gl_EXT_color_subtable" ) ) { + EXT_color_subtable = true; + extensions.Remove( "glEXT_color_subtable" ); + } + if( extensions.Contains( "gl_EXT_compiled_vertex_array" ) ) { + EXT_compiled_vertex_array = true; + extensions.Remove( "glEXT_compiled_vertex_array" ); + } + if( extensions.Contains( "gl_EXT_convolution" ) ) { + EXT_convolution = true; + extensions.Remove( "glEXT_convolution" ); + } + if( extensions.Contains( "gl_EXT_coordinate_frame" ) ) { + EXT_coordinate_frame = true; + extensions.Remove( "glEXT_coordinate_frame" ); + } + if( extensions.Contains( "gl_EXT_copy_texture" ) ) { + EXT_copy_texture = true; + extensions.Remove( "glEXT_copy_texture" ); + } + if( extensions.Contains( "gl_EXT_cull_vertex" ) ) { + EXT_cull_vertex = true; + extensions.Remove( "glEXT_cull_vertex" ); + } + if( extensions.Contains( "gl_EXT_debug_label" ) ) { + EXT_debug_label = true; + extensions.Remove( "glEXT_debug_label" ); + } + if( extensions.Contains( "gl_EXT_debug_marker" ) ) { + EXT_debug_marker = true; + extensions.Remove( "glEXT_debug_marker" ); + } + if( extensions.Contains( "gl_EXT_depth_bounds_test" ) ) { + EXT_depth_bounds_test = true; + extensions.Remove( "glEXT_depth_bounds_test" ); + } + if( extensions.Contains( "gl_EXT_direct_state_access" ) ) { + EXT_direct_state_access = true; + extensions.Remove( "glEXT_direct_state_access" ); + } + if( extensions.Contains( "gl_EXT_draw_buffers2" ) ) { + EXT_draw_buffers2 = true; + extensions.Remove( "glEXT_draw_buffers2" ); + } + if( extensions.Contains( "gl_EXT_draw_instanced" ) ) { + EXT_draw_instanced = true; + extensions.Remove( "glEXT_draw_instanced" ); + } + if( extensions.Contains( "gl_EXT_draw_range_elements" ) ) { + EXT_draw_range_elements = true; + extensions.Remove( "glEXT_draw_range_elements" ); + } + if( extensions.Contains( "gl_EXT_external_buffer" ) ) { + EXT_external_buffer = true; + extensions.Remove( "glEXT_external_buffer" ); + } + if( extensions.Contains( "gl_EXT_fog_coord" ) ) { + EXT_fog_coord = true; + extensions.Remove( "glEXT_fog_coord" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_blit" ) ) { + EXT_framebuffer_blit = true; + extensions.Remove( "glEXT_framebuffer_blit" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_blit_layers" ) ) { + EXT_framebuffer_blit_layers = true; + extensions.Remove( "glEXT_framebuffer_blit_layers" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_multisample" ) ) { + EXT_framebuffer_multisample = true; + extensions.Remove( "glEXT_framebuffer_multisample" ); + } + if( extensions.Contains( + "gl_EXT_framebuffer_multisample_blit_scaled" ) ) { + EXT_framebuffer_multisample_blit_scaled = true; + extensions.Remove( "glEXT_framebuffer_multisample_blit_scaled" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_object" ) ) { + EXT_framebuffer_object = true; + extensions.Remove( "glEXT_framebuffer_object" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_sRGB" ) ) { + EXT_framebuffer_sRGB = true; + extensions.Remove( "glEXT_framebuffer_sRGB" ); + } + if( extensions.Contains( "gl_EXT_geometry_shader4" ) ) { + EXT_geometry_shader4 = true; + extensions.Remove( "glEXT_geometry_shader4" ); + } + if( extensions.Contains( "gl_EXT_gpu_program_parameters" ) ) { + EXT_gpu_program_parameters = true; + extensions.Remove( "glEXT_gpu_program_parameters" ); + } + if( extensions.Contains( "gl_EXT_gpu_shader4" ) ) { + EXT_gpu_shader4 = true; + extensions.Remove( "glEXT_gpu_shader4" ); + } + if( extensions.Contains( "gl_EXT_histogram" ) ) { + EXT_histogram = true; + extensions.Remove( "glEXT_histogram" ); + } + if( extensions.Contains( "gl_EXT_index_array_formats" ) ) { + EXT_index_array_formats = true; + extensions.Remove( "glEXT_index_array_formats" ); + } + if( extensions.Contains( "gl_EXT_index_func" ) ) { + EXT_index_func = true; + extensions.Remove( "glEXT_index_func" ); + } + if( extensions.Contains( "gl_EXT_index_material" ) ) { + EXT_index_material = true; + extensions.Remove( "glEXT_index_material" ); + } + if( extensions.Contains( "gl_EXT_index_texture" ) ) { + EXT_index_texture = true; + extensions.Remove( "glEXT_index_texture" ); + } + if( extensions.Contains( "gl_EXT_light_texture" ) ) { + EXT_light_texture = true; + extensions.Remove( "glEXT_light_texture" ); + } + if( extensions.Contains( "gl_EXT_memory_object" ) ) { + EXT_memory_object = true; + extensions.Remove( "glEXT_memory_object" ); + } + if( extensions.Contains( "gl_EXT_memory_object_fd" ) ) { + EXT_memory_object_fd = true; + extensions.Remove( "glEXT_memory_object_fd" ); + } + if( extensions.Contains( "gl_EXT_memory_object_win32" ) ) { + EXT_memory_object_win32 = true; + extensions.Remove( "glEXT_memory_object_win32" ); + } + if( extensions.Contains( "gl_EXT_misc_attribute" ) ) { + EXT_misc_attribute = true; + extensions.Remove( "glEXT_misc_attribute" ); + } + if( extensions.Contains( "gl_EXT_multi_draw_arrays" ) ) { + EXT_multi_draw_arrays = true; + extensions.Remove( "glEXT_multi_draw_arrays" ); + } + if( extensions.Contains( "gl_EXT_multisample" ) ) { + EXT_multisample = true; + extensions.Remove( "glEXT_multisample" ); + } + if( extensions.Contains( + "gl_EXT_multiview_tessellation_geometry_shader" ) ) { + EXT_multiview_tessellation_geometry_shader = true; + extensions.Remove( + "glEXT_multiview_tessellation_geometry_shader" ); + } + if( extensions.Contains( "gl_EXT_multiview_texture_multisample" ) ) { + EXT_multiview_texture_multisample = true; + extensions.Remove( "glEXT_multiview_texture_multisample" ); + } + if( extensions.Contains( "gl_EXT_multiview_timer_query" ) ) { + EXT_multiview_timer_query = true; + extensions.Remove( "glEXT_multiview_timer_query" ); + } + if( extensions.Contains( "gl_EXT_packed_depth_stencil" ) ) { + EXT_packed_depth_stencil = true; + extensions.Remove( "glEXT_packed_depth_stencil" ); + } + if( extensions.Contains( "gl_EXT_packed_float" ) ) { + EXT_packed_float = true; + extensions.Remove( "glEXT_packed_float" ); + } + if( extensions.Contains( "gl_EXT_packed_pixels" ) ) { + EXT_packed_pixels = true; + extensions.Remove( "glEXT_packed_pixels" ); + } + if( extensions.Contains( "gl_EXT_paletted_texture" ) ) { + EXT_paletted_texture = true; + extensions.Remove( "glEXT_paletted_texture" ); + } + if( extensions.Contains( "gl_EXT_pixel_buffer_object" ) ) { + EXT_pixel_buffer_object = true; + extensions.Remove( "glEXT_pixel_buffer_object" ); + } + if( extensions.Contains( "gl_EXT_pixel_transform" ) ) { + EXT_pixel_transform = true; + extensions.Remove( "glEXT_pixel_transform" ); + } + if( extensions.Contains( "gl_EXT_pixel_transform_color_table" ) ) { + EXT_pixel_transform_color_table = true; + extensions.Remove( "glEXT_pixel_transform_color_table" ); + } + if( extensions.Contains( "gl_EXT_point_parameters" ) ) { + EXT_point_parameters = true; + extensions.Remove( "glEXT_point_parameters" ); + } + if( extensions.Contains( "gl_EXT_polygon_offset" ) ) { + EXT_polygon_offset = true; + extensions.Remove( "glEXT_polygon_offset" ); + } + if( extensions.Contains( "gl_EXT_polygon_offset_clamp" ) ) { + EXT_polygon_offset_clamp = true; + extensions.Remove( "glEXT_polygon_offset_clamp" ); + } + if( extensions.Contains( "gl_EXT_post_depth_coverage" ) ) { + EXT_post_depth_coverage = true; + extensions.Remove( "glEXT_post_depth_coverage" ); + } + if( extensions.Contains( "gl_EXT_provoking_vertex" ) ) { + EXT_provoking_vertex = true; + extensions.Remove( "glEXT_provoking_vertex" ); + } + if( extensions.Contains( "gl_EXT_raster_multisample" ) ) { + EXT_raster_multisample = true; + extensions.Remove( "glEXT_raster_multisample" ); + } + if( extensions.Contains( "gl_EXT_rescale_normal" ) ) { + EXT_rescale_normal = true; + extensions.Remove( "glEXT_rescale_normal" ); + } + if( extensions.Contains( "gl_EXT_secondary_color" ) ) { + EXT_secondary_color = true; + extensions.Remove( "glEXT_secondary_color" ); + } + if( extensions.Contains( "gl_EXT_semaphore" ) ) { + EXT_semaphore = true; + extensions.Remove( "glEXT_semaphore" ); + } + if( extensions.Contains( "gl_EXT_semaphore_fd" ) ) { + EXT_semaphore_fd = true; + extensions.Remove( "glEXT_semaphore_fd" ); + } + if( extensions.Contains( "gl_EXT_semaphore_win32" ) ) { + EXT_semaphore_win32 = true; + extensions.Remove( "glEXT_semaphore_win32" ); + } + if( extensions.Contains( "gl_EXT_separate_shader_objects" ) ) { + EXT_separate_shader_objects = true; + extensions.Remove( "glEXT_separate_shader_objects" ); + } + if( extensions.Contains( "gl_EXT_separate_specular_color" ) ) { + EXT_separate_specular_color = true; + extensions.Remove( "glEXT_separate_specular_color" ); + } + if( extensions.Contains( "gl_EXT_shader_framebuffer_fetch" ) ) { + EXT_shader_framebuffer_fetch = true; + extensions.Remove( "glEXT_shader_framebuffer_fetch" ); + } + if( extensions.Contains( + "gl_EXT_shader_framebuffer_fetch_non_coherent" ) ) { + EXT_shader_framebuffer_fetch_non_coherent = true; + extensions.Remove( + "glEXT_shader_framebuffer_fetch_non_coherent" ); + } + if( extensions.Contains( "gl_EXT_shader_image_load_formatted" ) ) { + EXT_shader_image_load_formatted = true; + extensions.Remove( "glEXT_shader_image_load_formatted" ); + } + if( extensions.Contains( "gl_EXT_shader_image_load_store" ) ) { + EXT_shader_image_load_store = true; + extensions.Remove( "glEXT_shader_image_load_store" ); + } + if( extensions.Contains( "gl_EXT_shader_integer_mix" ) ) { + EXT_shader_integer_mix = true; + extensions.Remove( "glEXT_shader_integer_mix" ); + } + if( extensions.Contains( "gl_EXT_shader_samples_identical" ) ) { + EXT_shader_samples_identical = true; + extensions.Remove( "glEXT_shader_samples_identical" ); + } + if( extensions.Contains( "gl_EXT_shadow_funcs" ) ) { + EXT_shadow_funcs = true; + extensions.Remove( "glEXT_shadow_funcs" ); + } + if( extensions.Contains( "gl_EXT_shared_texture_palette" ) ) { + EXT_shared_texture_palette = true; + extensions.Remove( "glEXT_shared_texture_palette" ); + } + if( extensions.Contains( "gl_EXT_sparse_texture2" ) ) { + EXT_sparse_texture2 = true; + extensions.Remove( "glEXT_sparse_texture2" ); + } + if( extensions.Contains( "gl_EXT_stencil_clear_tag" ) ) { + EXT_stencil_clear_tag = true; + extensions.Remove( "glEXT_stencil_clear_tag" ); + } + if( extensions.Contains( "gl_EXT_stencil_two_side" ) ) { + EXT_stencil_two_side = true; + extensions.Remove( "glEXT_stencil_two_side" ); + } + if( extensions.Contains( "gl_EXT_stencil_wrap" ) ) { + EXT_stencil_wrap = true; + extensions.Remove( "glEXT_stencil_wrap" ); + } + if( extensions.Contains( "gl_EXT_subtexture" ) ) { + EXT_subtexture = true; + extensions.Remove( "glEXT_subtexture" ); + } + if( extensions.Contains( "gl_EXT_texture" ) ) { + EXT_texture = true; + extensions.Remove( "glEXT_texture" ); + } + if( extensions.Contains( "gl_EXT_texture3D" ) ) { + EXT_texture3D = true; + extensions.Remove( "glEXT_texture3D" ); + } + if( extensions.Contains( "gl_EXT_texture_array" ) ) { + EXT_texture_array = true; + extensions.Remove( "glEXT_texture_array" ); + } + if( extensions.Contains( "gl_EXT_texture_buffer_object" ) ) { + EXT_texture_buffer_object = true; + extensions.Remove( "glEXT_texture_buffer_object" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_latc" ) ) { + EXT_texture_compression_latc = true; + extensions.Remove( "glEXT_texture_compression_latc" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_rgtc" ) ) { + EXT_texture_compression_rgtc = true; + extensions.Remove( "glEXT_texture_compression_rgtc" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_s3tc" ) ) { + EXT_texture_compression_s3tc = true; + extensions.Remove( "glEXT_texture_compression_s3tc" ); + } + if( extensions.Contains( "gl_EXT_texture_cube_map" ) ) { + EXT_texture_cube_map = true; + extensions.Remove( "glEXT_texture_cube_map" ); + } + if( extensions.Contains( "gl_EXT_texture_env_add" ) ) { + EXT_texture_env_add = true; + extensions.Remove( "glEXT_texture_env_add" ); + } + if( extensions.Contains( "gl_EXT_texture_env_combine" ) ) { + EXT_texture_env_combine = true; + extensions.Remove( "glEXT_texture_env_combine" ); + } + if( extensions.Contains( "gl_EXT_texture_env_dot3" ) ) { + EXT_texture_env_dot3 = true; + extensions.Remove( "glEXT_texture_env_dot3" ); + } + if( extensions.Contains( "gl_EXT_texture_filter_anisotropic" ) ) { + EXT_texture_filter_anisotropic = true; + extensions.Remove( "glEXT_texture_filter_anisotropic" ); + } + if( extensions.Contains( "gl_EXT_texture_filter_minmax" ) ) { + EXT_texture_filter_minmax = true; + extensions.Remove( "glEXT_texture_filter_minmax" ); + } + if( extensions.Contains( "gl_EXT_texture_integer" ) ) { + EXT_texture_integer = true; + extensions.Remove( "glEXT_texture_integer" ); + } + if( extensions.Contains( "gl_EXT_texture_lod_bias" ) ) { + EXT_texture_lod_bias = true; + extensions.Remove( "glEXT_texture_lod_bias" ); + } + if( extensions.Contains( "gl_EXT_texture_mirror_clamp" ) ) { + EXT_texture_mirror_clamp = true; + extensions.Remove( "glEXT_texture_mirror_clamp" ); + } + if( extensions.Contains( "gl_EXT_texture_object" ) ) { + EXT_texture_object = true; + extensions.Remove( "glEXT_texture_object" ); + } + if( extensions.Contains( "gl_EXT_texture_perturb_normal" ) ) { + EXT_texture_perturb_normal = true; + extensions.Remove( "glEXT_texture_perturb_normal" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB" ) ) { + EXT_texture_sRGB = true; + extensions.Remove( "glEXT_texture_sRGB" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_R8" ) ) { + EXT_texture_sRGB_R8 = true; + extensions.Remove( "glEXT_texture_sRGB_R8" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_RG8" ) ) { + EXT_texture_sRGB_RG8 = true; + extensions.Remove( "glEXT_texture_sRGB_RG8" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_decode" ) ) { + EXT_texture_sRGB_decode = true; + extensions.Remove( "glEXT_texture_sRGB_decode" ); + } + if( extensions.Contains( "gl_EXT_texture_shadow_lod" ) ) { + EXT_texture_shadow_lod = true; + extensions.Remove( "glEXT_texture_shadow_lod" ); + } + if( extensions.Contains( "gl_EXT_texture_shared_exponent" ) ) { + EXT_texture_shared_exponent = true; + extensions.Remove( "glEXT_texture_shared_exponent" ); + } + if( extensions.Contains( "gl_EXT_texture_snorm" ) ) { + EXT_texture_snorm = true; + extensions.Remove( "glEXT_texture_snorm" ); + } + if( extensions.Contains( "gl_EXT_texture_storage" ) ) { + EXT_texture_storage = true; + extensions.Remove( "glEXT_texture_storage" ); + } + if( extensions.Contains( "gl_EXT_texture_swizzle" ) ) { + EXT_texture_swizzle = true; + extensions.Remove( "glEXT_texture_swizzle" ); + } + if( extensions.Contains( "gl_EXT_timer_query" ) ) { + EXT_timer_query = true; + extensions.Remove( "glEXT_timer_query" ); + } + if( extensions.Contains( "gl_EXT_transform_feedback" ) ) { + EXT_transform_feedback = true; + extensions.Remove( "glEXT_transform_feedback" ); + } + if( extensions.Contains( "gl_EXT_vertex_array" ) ) { + EXT_vertex_array = true; + extensions.Remove( "glEXT_vertex_array" ); + } + if( extensions.Contains( "gl_EXT_vertex_array_bgra" ) ) { + EXT_vertex_array_bgra = true; + extensions.Remove( "glEXT_vertex_array_bgra" ); + } + if( extensions.Contains( "gl_EXT_vertex_attrib_64bit" ) ) { + EXT_vertex_attrib_64bit = true; + extensions.Remove( "glEXT_vertex_attrib_64bit" ); + } + if( extensions.Contains( "gl_EXT_vertex_shader" ) ) { + EXT_vertex_shader = true; + extensions.Remove( "glEXT_vertex_shader" ); + } + if( extensions.Contains( "gl_EXT_vertex_weighting" ) ) { + EXT_vertex_weighting = true; + extensions.Remove( "glEXT_vertex_weighting" ); + } + if( extensions.Contains( "gl_EXT_win32_keyed_mutex" ) ) { + EXT_win32_keyed_mutex = true; + extensions.Remove( "glEXT_win32_keyed_mutex" ); + } + if( extensions.Contains( "gl_EXT_window_rectangles" ) ) { + EXT_window_rectangles = true; + extensions.Remove( "glEXT_window_rectangles" ); + } + if( extensions.Contains( "gl_EXT_x11_sync_object" ) ) { + EXT_x11_sync_object = true; + extensions.Remove( "glEXT_x11_sync_object" ); + } + if( extensions.Contains( "gl_GREMEDY_frame_terminator" ) ) { + GREMEDY_frame_terminator = true; + extensions.Remove( "glGREMEDY_frame_terminator" ); + } + if( extensions.Contains( "gl_GREMEDY_string_marker" ) ) { + GREMEDY_string_marker = true; + extensions.Remove( "glGREMEDY_string_marker" ); + } + if( extensions.Contains( "gl_HP_convolution_border_modes" ) ) { + HP_convolution_border_modes = true; + extensions.Remove( "glHP_convolution_border_modes" ); + } + if( extensions.Contains( "gl_HP_image_transform" ) ) { + HP_image_transform = true; + extensions.Remove( "glHP_image_transform" ); + } + if( extensions.Contains( "gl_HP_occlusion_test" ) ) { + HP_occlusion_test = true; + extensions.Remove( "glHP_occlusion_test" ); + } + if( extensions.Contains( "gl_HP_texture_lighting" ) ) { + HP_texture_lighting = true; + extensions.Remove( "glHP_texture_lighting" ); + } + if( extensions.Contains( "gl_IBM_cull_vertex" ) ) { + IBM_cull_vertex = true; + extensions.Remove( "glIBM_cull_vertex" ); + } + if( extensions.Contains( "gl_IBM_multimode_draw_arrays" ) ) { + IBM_multimode_draw_arrays = true; + extensions.Remove( "glIBM_multimode_draw_arrays" ); + } + if( extensions.Contains( "gl_IBM_rasterpos_clip" ) ) { + IBM_rasterpos_clip = true; + extensions.Remove( "glIBM_rasterpos_clip" ); + } + if( extensions.Contains( "gl_IBM_static_data" ) ) { + IBM_static_data = true; + extensions.Remove( "glIBM_static_data" ); + } + if( extensions.Contains( "gl_IBM_texture_mirrored_repeat" ) ) { + IBM_texture_mirrored_repeat = true; + extensions.Remove( "glIBM_texture_mirrored_repeat" ); + } + if( extensions.Contains( "gl_IBM_vertex_array_lists" ) ) { + IBM_vertex_array_lists = true; + extensions.Remove( "glIBM_vertex_array_lists" ); + } + if( extensions.Contains( "gl_INGR_blend_func_separate" ) ) { + INGR_blend_func_separate = true; + extensions.Remove( "glINGR_blend_func_separate" ); + } + if( extensions.Contains( "gl_INGR_color_clamp" ) ) { + INGR_color_clamp = true; + extensions.Remove( "glINGR_color_clamp" ); + } + if( extensions.Contains( "gl_INGR_interlace_read" ) ) { + INGR_interlace_read = true; + extensions.Remove( "glINGR_interlace_read" ); + } + if( extensions.Contains( "gl_INTEL_blackhole_render" ) ) { + INTEL_blackhole_render = true; + extensions.Remove( "glINTEL_blackhole_render" ); + } + if( extensions.Contains( "gl_INTEL_conservative_rasterization" ) ) { + INTEL_conservative_rasterization = true; + extensions.Remove( "glINTEL_conservative_rasterization" ); + } + if( extensions.Contains( "gl_INTEL_fragment_shader_ordering" ) ) { + INTEL_fragment_shader_ordering = true; + extensions.Remove( "glINTEL_fragment_shader_ordering" ); + } + if( extensions.Contains( "gl_INTEL_framebuffer_CMAA" ) ) { + INTEL_framebuffer_CMAA = true; + extensions.Remove( "glINTEL_framebuffer_CMAA" ); + } + if( extensions.Contains( "gl_INTEL_map_texture" ) ) { + INTEL_map_texture = true; + extensions.Remove( "glINTEL_map_texture" ); + } + if( extensions.Contains( "gl_INTEL_parallel_arrays" ) ) { + INTEL_parallel_arrays = true; + extensions.Remove( "glINTEL_parallel_arrays" ); + } + if( extensions.Contains( "gl_INTEL_performance_query" ) ) { + INTEL_performance_query = true; + extensions.Remove( "glINTEL_performance_query" ); + } + if( extensions.Contains( "gl_KHR_blend_equation_advanced" ) ) { + KHR_blend_equation_advanced = true; + extensions.Remove( "glKHR_blend_equation_advanced" ); + } + if( extensions.Contains( "gl_KHR_blend_equation_advanced_coherent" ) ) { + KHR_blend_equation_advanced_coherent = true; + extensions.Remove( "glKHR_blend_equation_advanced_coherent" ); + } + if( extensions.Contains( "gl_KHR_context_flush_control" ) ) { + KHR_context_flush_control = true; + extensions.Remove( "glKHR_context_flush_control" ); + } + if( extensions.Contains( "gl_KHR_debug" ) ) { + KHR_debug = true; + extensions.Remove( "glKHR_debug" ); + } + if( extensions.Contains( "gl_KHR_no_error" ) ) { + KHR_no_error = true; + extensions.Remove( "glKHR_no_error" ); + } + if( extensions.Contains( "gl_KHR_parallel_shader_compile" ) ) { + KHR_parallel_shader_compile = true; + extensions.Remove( "glKHR_parallel_shader_compile" ); + } + if( extensions.Contains( "gl_KHR_robust_buffer_access_behavior" ) ) { + KHR_robust_buffer_access_behavior = true; + extensions.Remove( "glKHR_robust_buffer_access_behavior" ); + } + if( extensions.Contains( "gl_KHR_robustness" ) ) { + KHR_robustness = true; + extensions.Remove( "glKHR_robustness" ); + } + if( extensions.Contains( "gl_KHR_shader_subgroup" ) ) { + KHR_shader_subgroup = true; + extensions.Remove( "glKHR_shader_subgroup" ); + } + if( extensions.Contains( "gl_KHR_texture_compression_astc_hdr" ) ) { + KHR_texture_compression_astc_hdr = true; + extensions.Remove( "glKHR_texture_compression_astc_hdr" ); + } + if( extensions.Contains( "gl_KHR_texture_compression_astc_ldr" ) ) { + KHR_texture_compression_astc_ldr = true; + extensions.Remove( "glKHR_texture_compression_astc_ldr" ); + } + if( extensions.Contains( + "gl_KHR_texture_compression_astc_sliced_3d" ) ) { + KHR_texture_compression_astc_sliced_3d = true; + extensions.Remove( "glKHR_texture_compression_astc_sliced_3d" ); + } + if( extensions.Contains( "gl_MESAX_texture_stack" ) ) { + MESAX_texture_stack = true; + extensions.Remove( "glMESAX_texture_stack" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_flip_x" ) ) { + MESA_framebuffer_flip_x = true; + extensions.Remove( "glMESA_framebuffer_flip_x" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_flip_y" ) ) { + MESA_framebuffer_flip_y = true; + extensions.Remove( "glMESA_framebuffer_flip_y" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_swap_xy" ) ) { + MESA_framebuffer_swap_xy = true; + extensions.Remove( "glMESA_framebuffer_swap_xy" ); + } + if( extensions.Contains( "gl_MESA_pack_invert" ) ) { + MESA_pack_invert = true; + extensions.Remove( "glMESA_pack_invert" ); + } + if( extensions.Contains( "gl_MESA_program_binary_formats" ) ) { + MESA_program_binary_formats = true; + extensions.Remove( "glMESA_program_binary_formats" ); + } + if( extensions.Contains( "gl_MESA_resize_buffers" ) ) { + MESA_resize_buffers = true; + extensions.Remove( "glMESA_resize_buffers" ); + } + if( extensions.Contains( "gl_MESA_shader_integer_functions" ) ) { + MESA_shader_integer_functions = true; + extensions.Remove( "glMESA_shader_integer_functions" ); + } + if( extensions.Contains( "gl_MESA_tile_raster_order" ) ) { + MESA_tile_raster_order = true; + extensions.Remove( "glMESA_tile_raster_order" ); + } + if( extensions.Contains( "gl_MESA_window_pos" ) ) { + MESA_window_pos = true; + extensions.Remove( "glMESA_window_pos" ); + } + if( extensions.Contains( "gl_MESA_ycbcr_texture" ) ) { + MESA_ycbcr_texture = true; + extensions.Remove( "glMESA_ycbcr_texture" ); + } + if( extensions.Contains( + "gl_NVX_blend_equation_advanced_multi_draw_buffers" ) ) { + NVX_blend_equation_advanced_multi_draw_buffers = true; + extensions.Remove( + "glNVX_blend_equation_advanced_multi_draw_buffers" ); + } + if( extensions.Contains( "gl_NVX_conditional_render" ) ) { + NVX_conditional_render = true; + extensions.Remove( "glNVX_conditional_render" ); + } + if( extensions.Contains( "gl_NVX_gpu_memory_info" ) ) { + NVX_gpu_memory_info = true; + extensions.Remove( "glNVX_gpu_memory_info" ); + } + if( extensions.Contains( "gl_NVX_gpu_multicast2" ) ) { + NVX_gpu_multicast2 = true; + extensions.Remove( "glNVX_gpu_multicast2" ); + } + if( extensions.Contains( "gl_NVX_linked_gpu_multicast" ) ) { + NVX_linked_gpu_multicast = true; + extensions.Remove( "glNVX_linked_gpu_multicast" ); + } + if( extensions.Contains( "gl_NVX_progress_fence" ) ) { + NVX_progress_fence = true; + extensions.Remove( "glNVX_progress_fence" ); + } + if( extensions.Contains( "gl_NV_alpha_to_coverage_dither_control" ) ) { + NV_alpha_to_coverage_dither_control = true; + extensions.Remove( "glNV_alpha_to_coverage_dither_control" ); + } + if( extensions.Contains( "gl_NV_bindless_multi_draw_indirect" ) ) { + NV_bindless_multi_draw_indirect = true; + extensions.Remove( "glNV_bindless_multi_draw_indirect" ); + } + if( extensions.Contains( + "gl_NV_bindless_multi_draw_indirect_count" ) ) { + NV_bindless_multi_draw_indirect_count = true; + extensions.Remove( "glNV_bindless_multi_draw_indirect_count" ); + } + if( extensions.Contains( "gl_NV_bindless_texture" ) ) { + NV_bindless_texture = true; + extensions.Remove( "glNV_bindless_texture" ); + } + if( extensions.Contains( "gl_NV_blend_equation_advanced" ) ) { + NV_blend_equation_advanced = true; + extensions.Remove( "glNV_blend_equation_advanced" ); + } + if( extensions.Contains( "gl_NV_blend_equation_advanced_coherent" ) ) { + NV_blend_equation_advanced_coherent = true; + extensions.Remove( "glNV_blend_equation_advanced_coherent" ); + } + if( extensions.Contains( "gl_NV_blend_minmax_factor" ) ) { + NV_blend_minmax_factor = true; + extensions.Remove( "glNV_blend_minmax_factor" ); + } + if( extensions.Contains( "gl_NV_blend_square" ) ) { + NV_blend_square = true; + extensions.Remove( "glNV_blend_square" ); + } + if( extensions.Contains( "gl_NV_clip_space_w_scaling" ) ) { + NV_clip_space_w_scaling = true; + extensions.Remove( "glNV_clip_space_w_scaling" ); + } + if( extensions.Contains( "gl_NV_command_list" ) ) { + NV_command_list = true; + extensions.Remove( "glNV_command_list" ); + } + if( extensions.Contains( "gl_NV_compute_program5" ) ) { + NV_compute_program5 = true; + extensions.Remove( "glNV_compute_program5" ); + } + if( extensions.Contains( "gl_NV_compute_shader_derivatives" ) ) { + NV_compute_shader_derivatives = true; + extensions.Remove( "glNV_compute_shader_derivatives" ); + } + if( extensions.Contains( "gl_NV_conditional_render" ) ) { + NV_conditional_render = true; + extensions.Remove( "glNV_conditional_render" ); + } + if( extensions.Contains( "gl_NV_conservative_raster" ) ) { + NV_conservative_raster = true; + extensions.Remove( "glNV_conservative_raster" ); + } + if( extensions.Contains( "gl_NV_conservative_raster_dilate" ) ) { + NV_conservative_raster_dilate = true; + extensions.Remove( "glNV_conservative_raster_dilate" ); + } + if( extensions.Contains( "gl_NV_conservative_raster_pre_snap" ) ) { + NV_conservative_raster_pre_snap = true; + extensions.Remove( "glNV_conservative_raster_pre_snap" ); + } + if( extensions.Contains( + "gl_NV_conservative_raster_pre_snap_triangles" ) ) { + NV_conservative_raster_pre_snap_triangles = true; + extensions.Remove( + "glNV_conservative_raster_pre_snap_triangles" ); + } + if( extensions.Contains( + "gl_NV_conservative_raster_underestimation" ) ) { + NV_conservative_raster_underestimation = true; + extensions.Remove( "glNV_conservative_raster_underestimation" ); + } + if( extensions.Contains( "gl_NV_copy_depth_to_color" ) ) { + NV_copy_depth_to_color = true; + extensions.Remove( "glNV_copy_depth_to_color" ); + } + if( extensions.Contains( "gl_NV_copy_image" ) ) { + NV_copy_image = true; + extensions.Remove( "glNV_copy_image" ); + } + if( extensions.Contains( "gl_NV_deep_texture3D" ) ) { + NV_deep_texture3D = true; + extensions.Remove( "glNV_deep_texture3D" ); + } + if( extensions.Contains( "gl_NV_depth_buffer_float" ) ) { + NV_depth_buffer_float = true; + extensions.Remove( "glNV_depth_buffer_float" ); + } + if( extensions.Contains( "gl_NV_depth_clamp" ) ) { + NV_depth_clamp = true; + extensions.Remove( "glNV_depth_clamp" ); + } + if( extensions.Contains( "gl_NV_draw_texture" ) ) { + NV_draw_texture = true; + extensions.Remove( "glNV_draw_texture" ); + } + if( extensions.Contains( "gl_NV_draw_vulkan_image" ) ) { + NV_draw_vulkan_image = true; + extensions.Remove( "glNV_draw_vulkan_image" ); + } + if( extensions.Contains( "gl_NV_evaluators" ) ) { + NV_evaluators = true; + extensions.Remove( "glNV_evaluators" ); + } + if( extensions.Contains( "gl_NV_explicit_multisample" ) ) { + NV_explicit_multisample = true; + extensions.Remove( "glNV_explicit_multisample" ); + } + if( extensions.Contains( "gl_NV_fence" ) ) { + NV_fence = true; + extensions.Remove( "glNV_fence" ); + } + if( extensions.Contains( "gl_NV_fill_rectangle" ) ) { + NV_fill_rectangle = true; + extensions.Remove( "glNV_fill_rectangle" ); + } + if( extensions.Contains( "gl_NV_float_buffer" ) ) { + NV_float_buffer = true; + extensions.Remove( "glNV_float_buffer" ); + } + if( extensions.Contains( "gl_NV_fog_distance" ) ) { + NV_fog_distance = true; + extensions.Remove( "glNV_fog_distance" ); + } + if( extensions.Contains( "gl_NV_fragment_coverage_to_color" ) ) { + NV_fragment_coverage_to_color = true; + extensions.Remove( "glNV_fragment_coverage_to_color" ); + } + if( extensions.Contains( "gl_NV_fragment_program" ) ) { + NV_fragment_program = true; + extensions.Remove( "glNV_fragment_program" ); + } + if( extensions.Contains( "gl_NV_fragment_program2" ) ) { + NV_fragment_program2 = true; + extensions.Remove( "glNV_fragment_program2" ); + } + if( extensions.Contains( "gl_NV_fragment_program4" ) ) { + NV_fragment_program4 = true; + extensions.Remove( "glNV_fragment_program4" ); + } + if( extensions.Contains( "gl_NV_fragment_program_option" ) ) { + NV_fragment_program_option = true; + extensions.Remove( "glNV_fragment_program_option" ); + } + if( extensions.Contains( "gl_NV_fragment_shader_barycentric" ) ) { + NV_fragment_shader_barycentric = true; + extensions.Remove( "glNV_fragment_shader_barycentric" ); + } + if( extensions.Contains( "gl_NV_fragment_shader_interlock" ) ) { + NV_fragment_shader_interlock = true; + extensions.Remove( "glNV_fragment_shader_interlock" ); + } + if( extensions.Contains( "gl_NV_framebuffer_mixed_samples" ) ) { + NV_framebuffer_mixed_samples = true; + extensions.Remove( "glNV_framebuffer_mixed_samples" ); + } + if( extensions.Contains( "gl_NV_framebuffer_multisample_coverage" ) ) { + NV_framebuffer_multisample_coverage = true; + extensions.Remove( "glNV_framebuffer_multisample_coverage" ); + } + if( extensions.Contains( "gl_NV_geometry_program4" ) ) { + NV_geometry_program4 = true; + extensions.Remove( "glNV_geometry_program4" ); + } + if( extensions.Contains( "gl_NV_geometry_shader4" ) ) { + NV_geometry_shader4 = true; + extensions.Remove( "glNV_geometry_shader4" ); + } + if( extensions.Contains( "gl_NV_geometry_shader_passthrough" ) ) { + NV_geometry_shader_passthrough = true; + extensions.Remove( "glNV_geometry_shader_passthrough" ); + } + if( extensions.Contains( "gl_NV_gpu_multicast" ) ) { + NV_gpu_multicast = true; + extensions.Remove( "glNV_gpu_multicast" ); + } + if( extensions.Contains( "gl_NV_gpu_program4" ) ) { + NV_gpu_program4 = true; + extensions.Remove( "glNV_gpu_program4" ); + } + if( extensions.Contains( "gl_NV_gpu_program5" ) ) { + NV_gpu_program5 = true; + extensions.Remove( "glNV_gpu_program5" ); + } + if( extensions.Contains( "gl_NV_gpu_program5_mem_extended" ) ) { + NV_gpu_program5_mem_extended = true; + extensions.Remove( "glNV_gpu_program5_mem_extended" ); + } + if( extensions.Contains( "gl_NV_gpu_shader5" ) ) { + NV_gpu_shader5 = true; + extensions.Remove( "glNV_gpu_shader5" ); + } + if( extensions.Contains( "gl_NV_half_float" ) ) { + NV_half_float = true; + extensions.Remove( "glNV_half_float" ); + } + if( extensions.Contains( "gl_NV_internalformat_sample_query" ) ) { + NV_internalformat_sample_query = true; + extensions.Remove( "glNV_internalformat_sample_query" ); + } + if( extensions.Contains( "gl_NV_light_max_exponent" ) ) { + NV_light_max_exponent = true; + extensions.Remove( "glNV_light_max_exponent" ); + } + if( extensions.Contains( "gl_NV_memory_attachment" ) ) { + NV_memory_attachment = true; + extensions.Remove( "glNV_memory_attachment" ); + } + if( extensions.Contains( "gl_NV_memory_object_sparse" ) ) { + NV_memory_object_sparse = true; + extensions.Remove( "glNV_memory_object_sparse" ); + } + if( extensions.Contains( "gl_NV_mesh_shader" ) ) { + NV_mesh_shader = true; + extensions.Remove( "glNV_mesh_shader" ); + } + if( extensions.Contains( "gl_NV_multisample_coverage" ) ) { + NV_multisample_coverage = true; + extensions.Remove( "glNV_multisample_coverage" ); + } + if( extensions.Contains( "gl_NV_multisample_filter_hint" ) ) { + NV_multisample_filter_hint = true; + extensions.Remove( "glNV_multisample_filter_hint" ); + } + if( extensions.Contains( "gl_NV_occlusion_query" ) ) { + NV_occlusion_query = true; + extensions.Remove( "glNV_occlusion_query" ); + } + if( extensions.Contains( "gl_NV_packed_depth_stencil" ) ) { + NV_packed_depth_stencil = true; + extensions.Remove( "glNV_packed_depth_stencil" ); + } + if( extensions.Contains( "gl_NV_parameter_buffer_object" ) ) { + NV_parameter_buffer_object = true; + extensions.Remove( "glNV_parameter_buffer_object" ); + } + if( extensions.Contains( "gl_NV_parameter_buffer_object2" ) ) { + NV_parameter_buffer_object2 = true; + extensions.Remove( "glNV_parameter_buffer_object2" ); + } + if( extensions.Contains( "gl_NV_path_rendering" ) ) { + NV_path_rendering = true; + extensions.Remove( "glNV_path_rendering" ); + } + if( extensions.Contains( "gl_NV_path_rendering_shared_edge" ) ) { + NV_path_rendering_shared_edge = true; + extensions.Remove( "glNV_path_rendering_shared_edge" ); + } + if( extensions.Contains( "gl_NV_pixel_data_range" ) ) { + NV_pixel_data_range = true; + extensions.Remove( "glNV_pixel_data_range" ); + } + if( extensions.Contains( "gl_NV_point_sprite" ) ) { + NV_point_sprite = true; + extensions.Remove( "glNV_point_sprite" ); + } + if( extensions.Contains( "gl_NV_present_video" ) ) { + NV_present_video = true; + extensions.Remove( "glNV_present_video" ); + } + if( extensions.Contains( "gl_NV_primitive_restart" ) ) { + NV_primitive_restart = true; + extensions.Remove( "glNV_primitive_restart" ); + } + if( extensions.Contains( "gl_NV_primitive_shading_rate" ) ) { + NV_primitive_shading_rate = true; + extensions.Remove( "glNV_primitive_shading_rate" ); + } + if( extensions.Contains( "gl_NV_query_resource" ) ) { + NV_query_resource = true; + extensions.Remove( "glNV_query_resource" ); + } + if( extensions.Contains( "gl_NV_query_resource_tag" ) ) { + NV_query_resource_tag = true; + extensions.Remove( "glNV_query_resource_tag" ); + } + if( extensions.Contains( "gl_NV_register_combiners" ) ) { + NV_register_combiners = true; + extensions.Remove( "glNV_register_combiners" ); + } + if( extensions.Contains( "gl_NV_register_combiners2" ) ) { + NV_register_combiners2 = true; + extensions.Remove( "glNV_register_combiners2" ); + } + if( extensions.Contains( "gl_NV_representative_fragment_test" ) ) { + NV_representative_fragment_test = true; + extensions.Remove( "glNV_representative_fragment_test" ); + } + if( extensions.Contains( "gl_NV_robustness_video_memory_purge" ) ) { + NV_robustness_video_memory_purge = true; + extensions.Remove( "glNV_robustness_video_memory_purge" ); + } + if( extensions.Contains( "gl_NV_sample_locations" ) ) { + NV_sample_locations = true; + extensions.Remove( "glNV_sample_locations" ); + } + if( extensions.Contains( "gl_NV_sample_mask_override_coverage" ) ) { + NV_sample_mask_override_coverage = true; + extensions.Remove( "glNV_sample_mask_override_coverage" ); + } + if( extensions.Contains( "gl_NV_scissor_exclusive" ) ) { + NV_scissor_exclusive = true; + extensions.Remove( "glNV_scissor_exclusive" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_counters" ) ) { + NV_shader_atomic_counters = true; + extensions.Remove( "glNV_shader_atomic_counters" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_float" ) ) { + NV_shader_atomic_float = true; + extensions.Remove( "glNV_shader_atomic_float" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_float64" ) ) { + NV_shader_atomic_float64 = true; + extensions.Remove( "glNV_shader_atomic_float64" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_fp16_vector" ) ) { + NV_shader_atomic_fp16_vector = true; + extensions.Remove( "glNV_shader_atomic_fp16_vector" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_int64" ) ) { + NV_shader_atomic_int64 = true; + extensions.Remove( "glNV_shader_atomic_int64" ); + } + if( extensions.Contains( "gl_NV_shader_buffer_load" ) ) { + NV_shader_buffer_load = true; + extensions.Remove( "glNV_shader_buffer_load" ); + } + if( extensions.Contains( "gl_NV_shader_buffer_store" ) ) { + NV_shader_buffer_store = true; + extensions.Remove( "glNV_shader_buffer_store" ); + } + if( extensions.Contains( "gl_NV_shader_storage_buffer_object" ) ) { + NV_shader_storage_buffer_object = true; + extensions.Remove( "glNV_shader_storage_buffer_object" ); + } + if( extensions.Contains( "gl_NV_shader_subgroup_partitioned" ) ) { + NV_shader_subgroup_partitioned = true; + extensions.Remove( "glNV_shader_subgroup_partitioned" ); + } + if( extensions.Contains( "gl_NV_shader_texture_footprint" ) ) { + NV_shader_texture_footprint = true; + extensions.Remove( "glNV_shader_texture_footprint" ); + } + if( extensions.Contains( "gl_NV_shader_thread_group" ) ) { + NV_shader_thread_group = true; + extensions.Remove( "glNV_shader_thread_group" ); + } + if( extensions.Contains( "gl_NV_shader_thread_shuffle" ) ) { + NV_shader_thread_shuffle = true; + extensions.Remove( "glNV_shader_thread_shuffle" ); + } + if( extensions.Contains( "gl_NV_shading_rate_image" ) ) { + NV_shading_rate_image = true; + extensions.Remove( "glNV_shading_rate_image" ); + } + if( extensions.Contains( "gl_NV_stereo_view_rendering" ) ) { + NV_stereo_view_rendering = true; + extensions.Remove( "glNV_stereo_view_rendering" ); + } + if( extensions.Contains( "gl_NV_tessellation_program5" ) ) { + NV_tessellation_program5 = true; + extensions.Remove( "glNV_tessellation_program5" ); + } + if( extensions.Contains( "gl_NV_texgen_emboss" ) ) { + NV_texgen_emboss = true; + extensions.Remove( "glNV_texgen_emboss" ); + } + if( extensions.Contains( "gl_NV_texgen_reflection" ) ) { + NV_texgen_reflection = true; + extensions.Remove( "glNV_texgen_reflection" ); + } + if( extensions.Contains( "gl_NV_texture_barrier" ) ) { + NV_texture_barrier = true; + extensions.Remove( "glNV_texture_barrier" ); + } + if( extensions.Contains( "gl_NV_texture_compression_vtc" ) ) { + NV_texture_compression_vtc = true; + extensions.Remove( "glNV_texture_compression_vtc" ); + } + if( extensions.Contains( "gl_NV_texture_env_combine4" ) ) { + NV_texture_env_combine4 = true; + extensions.Remove( "glNV_texture_env_combine4" ); + } + if( extensions.Contains( "gl_NV_texture_expand_normal" ) ) { + NV_texture_expand_normal = true; + extensions.Remove( "glNV_texture_expand_normal" ); + } + if( extensions.Contains( "gl_NV_texture_multisample" ) ) { + NV_texture_multisample = true; + extensions.Remove( "glNV_texture_multisample" ); + } + if( extensions.Contains( "gl_NV_texture_rectangle" ) ) { + NV_texture_rectangle = true; + extensions.Remove( "glNV_texture_rectangle" ); + } + if( extensions.Contains( "gl_NV_texture_rectangle_compressed" ) ) { + NV_texture_rectangle_compressed = true; + extensions.Remove( "glNV_texture_rectangle_compressed" ); + } + if( extensions.Contains( "gl_NV_texture_shader" ) ) { + NV_texture_shader = true; + extensions.Remove( "glNV_texture_shader" ); + } + if( extensions.Contains( "gl_NV_texture_shader2" ) ) { + NV_texture_shader2 = true; + extensions.Remove( "glNV_texture_shader2" ); + } + if( extensions.Contains( "gl_NV_texture_shader3" ) ) { + NV_texture_shader3 = true; + extensions.Remove( "glNV_texture_shader3" ); + } + if( extensions.Contains( "gl_NV_timeline_semaphore" ) ) { + NV_timeline_semaphore = true; + extensions.Remove( "glNV_timeline_semaphore" ); + } + if( extensions.Contains( "gl_NV_transform_feedback" ) ) { + NV_transform_feedback = true; + extensions.Remove( "glNV_transform_feedback" ); + } + if( extensions.Contains( "gl_NV_transform_feedback2" ) ) { + NV_transform_feedback2 = true; + extensions.Remove( "glNV_transform_feedback2" ); + } + if( extensions.Contains( "gl_NV_uniform_buffer_std430_layout" ) ) { + NV_uniform_buffer_std430_layout = true; + extensions.Remove( "glNV_uniform_buffer_std430_layout" ); + } + if( extensions.Contains( "gl_NV_uniform_buffer_unified_memory" ) ) { + NV_uniform_buffer_unified_memory = true; + extensions.Remove( "glNV_uniform_buffer_unified_memory" ); + } + if( extensions.Contains( "gl_NV_vdpau_interop" ) ) { + NV_vdpau_interop = true; + extensions.Remove( "glNV_vdpau_interop" ); + } + if( extensions.Contains( "gl_NV_vdpau_interop2" ) ) { + NV_vdpau_interop2 = true; + extensions.Remove( "glNV_vdpau_interop2" ); + } + if( extensions.Contains( "gl_NV_vertex_array_range" ) ) { + NV_vertex_array_range = true; + extensions.Remove( "glNV_vertex_array_range" ); + } + if( extensions.Contains( "gl_NV_vertex_array_range2" ) ) { + NV_vertex_array_range2 = true; + extensions.Remove( "glNV_vertex_array_range2" ); + } + if( extensions.Contains( "gl_NV_vertex_attrib_integer_64bit" ) ) { + NV_vertex_attrib_integer_64bit = true; + extensions.Remove( "glNV_vertex_attrib_integer_64bit" ); + } + if( extensions.Contains( "gl_NV_vertex_buffer_unified_memory" ) ) { + NV_vertex_buffer_unified_memory = true; + extensions.Remove( "glNV_vertex_buffer_unified_memory" ); + } + if( extensions.Contains( "gl_NV_vertex_program" ) ) { + NV_vertex_program = true; + extensions.Remove( "glNV_vertex_program" ); + } + if( extensions.Contains( "gl_NV_vertex_program1_1" ) ) { + NV_vertex_program1_1 = true; + extensions.Remove( "glNV_vertex_program1_1" ); + } + if( extensions.Contains( "gl_NV_vertex_program2" ) ) { + NV_vertex_program2 = true; + extensions.Remove( "glNV_vertex_program2" ); + } + if( extensions.Contains( "gl_NV_vertex_program2_option" ) ) { + NV_vertex_program2_option = true; + extensions.Remove( "glNV_vertex_program2_option" ); + } + if( extensions.Contains( "gl_NV_vertex_program3" ) ) { + NV_vertex_program3 = true; + extensions.Remove( "glNV_vertex_program3" ); + } + if( extensions.Contains( "gl_NV_vertex_program4" ) ) { + NV_vertex_program4 = true; + extensions.Remove( "glNV_vertex_program4" ); + } + if( extensions.Contains( "gl_NV_video_capture" ) ) { + NV_video_capture = true; + extensions.Remove( "glNV_video_capture" ); + } + if( extensions.Contains( "gl_NV_viewport_array2" ) ) { + NV_viewport_array2 = true; + extensions.Remove( "glNV_viewport_array2" ); + } + if( extensions.Contains( "gl_NV_viewport_swizzle" ) ) { + NV_viewport_swizzle = true; + extensions.Remove( "glNV_viewport_swizzle" ); + } + if( extensions.Contains( "gl_OES_byte_coordinates" ) ) { + OES_byte_coordinates = true; + extensions.Remove( "glOES_byte_coordinates" ); + } + if( extensions.Contains( "gl_OES_compressed_paletted_texture" ) ) { + OES_compressed_paletted_texture = true; + extensions.Remove( "glOES_compressed_paletted_texture" ); + } + if( extensions.Contains( "gl_OES_fixed_point" ) ) { + OES_fixed_point = true; + extensions.Remove( "glOES_fixed_point" ); + } + if( extensions.Contains( "gl_OES_query_matrix" ) ) { + OES_query_matrix = true; + extensions.Remove( "glOES_query_matrix" ); + } + if( extensions.Contains( "gl_OES_read_format" ) ) { + OES_read_format = true; + extensions.Remove( "glOES_read_format" ); + } + if( extensions.Contains( "gl_OES_single_precision" ) ) { + OES_single_precision = true; + extensions.Remove( "glOES_single_precision" ); + } + if( extensions.Contains( "gl_OML_interlace" ) ) { + OML_interlace = true; + extensions.Remove( "glOML_interlace" ); + } + if( extensions.Contains( "gl_OML_resample" ) ) { + OML_resample = true; + extensions.Remove( "glOML_resample" ); + } + if( extensions.Contains( "gl_OML_subsample" ) ) { + OML_subsample = true; + extensions.Remove( "glOML_subsample" ); + } + if( extensions.Contains( "gl_OVR_multiview" ) ) { + OVR_multiview = true; + extensions.Remove( "glOVR_multiview" ); + } + if( extensions.Contains( "gl_OVR_multiview2" ) ) { + OVR_multiview2 = true; + extensions.Remove( "glOVR_multiview2" ); + } + if( extensions.Contains( "gl_PGI_misc_hints" ) ) { + PGI_misc_hints = true; + extensions.Remove( "glPGI_misc_hints" ); + } + if( extensions.Contains( "gl_PGI_vertex_hints" ) ) { + PGI_vertex_hints = true; + extensions.Remove( "glPGI_vertex_hints" ); + } + if( extensions.Contains( "gl_REND_screen_coordinates" ) ) { + REND_screen_coordinates = true; + extensions.Remove( "glREND_screen_coordinates" ); + } + if( extensions.Contains( "gl_S3_s3tc" ) ) { + S3_s3tc = true; + extensions.Remove( "glS3_s3tc" ); + } + if( extensions.Contains( "gl_SGIS_detail_texture" ) ) { + SGIS_detail_texture = true; + extensions.Remove( "glSGIS_detail_texture" ); + } + if( extensions.Contains( "gl_SGIS_fog_function" ) ) { + SGIS_fog_function = true; + extensions.Remove( "glSGIS_fog_function" ); + } + if( extensions.Contains( "gl_SGIS_generate_mipmap" ) ) { + SGIS_generate_mipmap = true; + extensions.Remove( "glSGIS_generate_mipmap" ); + } + if( extensions.Contains( "gl_SGIS_multisample" ) ) { + SGIS_multisample = true; + extensions.Remove( "glSGIS_multisample" ); + } + if( extensions.Contains( "gl_SGIS_pixel_texture" ) ) { + SGIS_pixel_texture = true; + extensions.Remove( "glSGIS_pixel_texture" ); + } + if( extensions.Contains( "gl_SGIS_point_line_texgen" ) ) { + SGIS_point_line_texgen = true; + extensions.Remove( "glSGIS_point_line_texgen" ); + } + if( extensions.Contains( "gl_SGIS_point_parameters" ) ) { + SGIS_point_parameters = true; + extensions.Remove( "glSGIS_point_parameters" ); + } + if( extensions.Contains( "gl_SGIS_sharpen_texture" ) ) { + SGIS_sharpen_texture = true; + extensions.Remove( "glSGIS_sharpen_texture" ); + } + if( extensions.Contains( "gl_SGIS_texture4D" ) ) { + SGIS_texture4D = true; + extensions.Remove( "glSGIS_texture4D" ); + } + if( extensions.Contains( "gl_SGIS_texture_border_clamp" ) ) { + SGIS_texture_border_clamp = true; + extensions.Remove( "glSGIS_texture_border_clamp" ); + } + if( extensions.Contains( "gl_SGIS_texture_color_mask" ) ) { + SGIS_texture_color_mask = true; + extensions.Remove( "glSGIS_texture_color_mask" ); + } + if( extensions.Contains( "gl_SGIS_texture_edge_clamp" ) ) { + SGIS_texture_edge_clamp = true; + extensions.Remove( "glSGIS_texture_edge_clamp" ); + } + if( extensions.Contains( "gl_SGIS_texture_filter4" ) ) { + SGIS_texture_filter4 = true; + extensions.Remove( "glSGIS_texture_filter4" ); + } + if( extensions.Contains( "gl_SGIS_texture_lod" ) ) { + SGIS_texture_lod = true; + extensions.Remove( "glSGIS_texture_lod" ); + } + if( extensions.Contains( "gl_SGIS_texture_select" ) ) { + SGIS_texture_select = true; + extensions.Remove( "glSGIS_texture_select" ); + } + if( extensions.Contains( "gl_SGIX_async" ) ) { + SGIX_async = true; + extensions.Remove( "glSGIX_async" ); + } + if( extensions.Contains( "gl_SGIX_async_histogram" ) ) { + SGIX_async_histogram = true; + extensions.Remove( "glSGIX_async_histogram" ); + } + if( extensions.Contains( "gl_SGIX_async_pixel" ) ) { + SGIX_async_pixel = true; + extensions.Remove( "glSGIX_async_pixel" ); + } + if( extensions.Contains( "gl_SGIX_blend_alpha_minmax" ) ) { + SGIX_blend_alpha_minmax = true; + extensions.Remove( "glSGIX_blend_alpha_minmax" ); + } + if( extensions.Contains( "gl_SGIX_calligraphic_fragment" ) ) { + SGIX_calligraphic_fragment = true; + extensions.Remove( "glSGIX_calligraphic_fragment" ); + } + if( extensions.Contains( "gl_SGIX_clipmap" ) ) { + SGIX_clipmap = true; + extensions.Remove( "glSGIX_clipmap" ); + } + if( extensions.Contains( "gl_SGIX_convolution_accuracy" ) ) { + SGIX_convolution_accuracy = true; + extensions.Remove( "glSGIX_convolution_accuracy" ); + } + if( extensions.Contains( "gl_SGIX_depth_pass_instrument" ) ) { + SGIX_depth_pass_instrument = true; + extensions.Remove( "glSGIX_depth_pass_instrument" ); + } + if( extensions.Contains( "gl_SGIX_depth_texture" ) ) { + SGIX_depth_texture = true; + extensions.Remove( "glSGIX_depth_texture" ); + } + if( extensions.Contains( "gl_SGIX_flush_raster" ) ) { + SGIX_flush_raster = true; + extensions.Remove( "glSGIX_flush_raster" ); + } + if( extensions.Contains( "gl_SGIX_fog_offset" ) ) { + SGIX_fog_offset = true; + extensions.Remove( "glSGIX_fog_offset" ); + } + if( extensions.Contains( "gl_SGIX_fragment_lighting" ) ) { + SGIX_fragment_lighting = true; + extensions.Remove( "glSGIX_fragment_lighting" ); + } + if( extensions.Contains( "gl_SGIX_framezoom" ) ) { + SGIX_framezoom = true; + extensions.Remove( "glSGIX_framezoom" ); + } + if( extensions.Contains( "gl_SGIX_igloo_interface" ) ) { + SGIX_igloo_interface = true; + extensions.Remove( "glSGIX_igloo_interface" ); + } + if( extensions.Contains( "gl_SGIX_instruments" ) ) { + SGIX_instruments = true; + extensions.Remove( "glSGIX_instruments" ); + } + if( extensions.Contains( "gl_SGIX_interlace" ) ) { + SGIX_interlace = true; + extensions.Remove( "glSGIX_interlace" ); + } + if( extensions.Contains( "gl_SGIX_ir_instrument1" ) ) { + SGIX_ir_instrument1 = true; + extensions.Remove( "glSGIX_ir_instrument1" ); + } + if( extensions.Contains( "gl_SGIX_list_priority" ) ) { + SGIX_list_priority = true; + extensions.Remove( "glSGIX_list_priority" ); + } + if( extensions.Contains( "gl_SGIX_pixel_texture" ) ) { + SGIX_pixel_texture = true; + extensions.Remove( "glSGIX_pixel_texture" ); + } + if( extensions.Contains( "gl_SGIX_pixel_tiles" ) ) { + SGIX_pixel_tiles = true; + extensions.Remove( "glSGIX_pixel_tiles" ); + } + if( extensions.Contains( "gl_SGIX_polynomial_ffd" ) ) { + SGIX_polynomial_ffd = true; + extensions.Remove( "glSGIX_polynomial_ffd" ); + } + if( extensions.Contains( "gl_SGIX_reference_plane" ) ) { + SGIX_reference_plane = true; + extensions.Remove( "glSGIX_reference_plane" ); + } + if( extensions.Contains( "gl_SGIX_resample" ) ) { + SGIX_resample = true; + extensions.Remove( "glSGIX_resample" ); + } + if( extensions.Contains( "gl_SGIX_scalebias_hint" ) ) { + SGIX_scalebias_hint = true; + extensions.Remove( "glSGIX_scalebias_hint" ); + } + if( extensions.Contains( "gl_SGIX_shadow" ) ) { + SGIX_shadow = true; + extensions.Remove( "glSGIX_shadow" ); + } + if( extensions.Contains( "gl_SGIX_shadow_ambient" ) ) { + SGIX_shadow_ambient = true; + extensions.Remove( "glSGIX_shadow_ambient" ); + } + if( extensions.Contains( "gl_SGIX_sprite" ) ) { + SGIX_sprite = true; + extensions.Remove( "glSGIX_sprite" ); + } + if( extensions.Contains( "gl_SGIX_subsample" ) ) { + SGIX_subsample = true; + extensions.Remove( "glSGIX_subsample" ); + } + if( extensions.Contains( "gl_SGIX_tag_sample_buffer" ) ) { + SGIX_tag_sample_buffer = true; + extensions.Remove( "glSGIX_tag_sample_buffer" ); + } + if( extensions.Contains( "gl_SGIX_texture_add_env" ) ) { + SGIX_texture_add_env = true; + extensions.Remove( "glSGIX_texture_add_env" ); + } + if( extensions.Contains( "gl_SGIX_texture_coordinate_clamp" ) ) { + SGIX_texture_coordinate_clamp = true; + extensions.Remove( "glSGIX_texture_coordinate_clamp" ); + } + if( extensions.Contains( "gl_SGIX_texture_lod_bias" ) ) { + SGIX_texture_lod_bias = true; + extensions.Remove( "glSGIX_texture_lod_bias" ); + } + if( extensions.Contains( "gl_SGIX_texture_multi_buffer" ) ) { + SGIX_texture_multi_buffer = true; + extensions.Remove( "glSGIX_texture_multi_buffer" ); + } + if( extensions.Contains( "gl_SGIX_texture_scale_bias" ) ) { + SGIX_texture_scale_bias = true; + extensions.Remove( "glSGIX_texture_scale_bias" ); + } + if( extensions.Contains( "gl_SGIX_vertex_preclip" ) ) { + SGIX_vertex_preclip = true; + extensions.Remove( "glSGIX_vertex_preclip" ); + } + if( extensions.Contains( "gl_SGIX_ycrcb" ) ) { + SGIX_ycrcb = true; + extensions.Remove( "glSGIX_ycrcb" ); + } + if( extensions.Contains( "gl_SGIX_ycrcb_subsample" ) ) { + SGIX_ycrcb_subsample = true; + extensions.Remove( "glSGIX_ycrcb_subsample" ); + } + if( extensions.Contains( "gl_SGIX_ycrcba" ) ) { + SGIX_ycrcba = true; + extensions.Remove( "glSGIX_ycrcba" ); + } + if( extensions.Contains( "gl_SGI_color_matrix" ) ) { + SGI_color_matrix = true; + extensions.Remove( "glSGI_color_matrix" ); + } + if( extensions.Contains( "gl_SGI_color_table" ) ) { + SGI_color_table = true; + extensions.Remove( "glSGI_color_table" ); + } + if( extensions.Contains( "gl_SGI_texture_color_table" ) ) { + SGI_texture_color_table = true; + extensions.Remove( "glSGI_texture_color_table" ); + } + if( extensions.Contains( "gl_SUNX_constant_data" ) ) { + SUNX_constant_data = true; + extensions.Remove( "glSUNX_constant_data" ); + } + if( extensions.Contains( "gl_SUN_convolution_border_modes" ) ) { + SUN_convolution_border_modes = true; + extensions.Remove( "glSUN_convolution_border_modes" ); + } + if( extensions.Contains( "gl_SUN_global_alpha" ) ) { + SUN_global_alpha = true; + extensions.Remove( "glSUN_global_alpha" ); + } + if( extensions.Contains( "gl_SUN_mesh_array" ) ) { + SUN_mesh_array = true; + extensions.Remove( "glSUN_mesh_array" ); + } + if( extensions.Contains( "gl_SUN_slice_accum" ) ) { + SUN_slice_accum = true; + extensions.Remove( "glSUN_slice_accum" ); + } + if( extensions.Contains( "gl_SUN_triangle_list" ) ) { + SUN_triangle_list = true; + extensions.Remove( "glSUN_triangle_list" ); + } + if( extensions.Contains( "gl_SUN_vertex" ) ) { + SUN_vertex = true; + extensions.Remove( "glSUN_vertex" ); + } + if( extensions.Contains( "gl_WIN_phong_shading" ) ) { + WIN_phong_shading = true; + extensions.Remove( "glWIN_phong_shading" ); + } + if( extensions.Contains( "gl_WIN_specular_fog" ) ) { + WIN_specular_fog = true; + extensions.Remove( "glWIN_specular_fog" ); + } + + #endregion checkGLextensions + } + + internal static void CheckCoreVersion( + int majorVersion, + int minorVersion ) + { + if( majorVersion < 3 ) { + throw new InvalidOperationException( + "StgSharp does not support OpenGL immediate mode." ); + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 0 ) ) ) { + core10 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 1 ) ) ) { + core11 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 2 ) ) ) { + core12 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 3 ) ) ) { + core13 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 4 ) ) ) { + core14 = true; + } else { + goto log; + } + + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 5 ) ) ) { + core15 = true; + } else { + goto log; + } + + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 0 ) ) ) { + core20 = true; + } else { + goto log; + } + + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 1 ) ) ) { + core21 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 0 ) ) ) { + core30 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 1 ) ) ) { + core31 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 2 ) ) ) { + core32 = true; + } else { + goto log; + } + + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 3 ) ) ) { + core33 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 0 ) ) ) { + core40 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 1 ) ) ) { + core41 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 2 ) ) ) { + core42 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 3 ) ) ) { + core43 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 4 ) ) ) { + core44 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 5 ) ) ) { + core45 = true; + } else { + goto log; + } + + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 6 ) ) ) { + core46 = true; + } else { + goto log; + } + + log: + { + InternalIO.InternalWriteLog( + "Find core OpenGL version.", LogType.Info ); + return; + } + } + + internal static unsafe string GetExtensions( + this OpenglContext context ) + { + if( context.glGetString == null ) { + return string.Empty; + } + return Marshal.PtrToStringAnsi( context.glGetString( glExtension ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal static T internalLoadAPI( IntPtr ptr ) where T: Delegate + { + try { + if( ptr == IntPtr.Zero ) { + return null; + } + T func = Marshal.GetDelegateForFunctionPointer( ptr ); + return func; + } + catch( Exception ex ) { + InternalIO.InternalWriteLog( + $"{$"Failed to convert the api {typeof(T).Name}.\n"}{ex.Message}", + LogType.Warning ); + return default; + } + } + + internal static unsafe void LoadGLcore10( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core10 ) { + InternalIO.InternalAppendLog( + "The core version 1.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBlendFunc = ( delegate* )load( + "glBlendFunc" ); + contextPtr->glClear = ( delegate* )load( "glClear" ); + contextPtr->glClearColor = ( delegate* )load( + "glClearColor" ); + contextPtr->glClearDepth = ( delegate* )load( + "glClearDepth" ); + contextPtr->glClearStencil = ( delegate* )load( + "glClearStencil" ); + contextPtr->glColorMask = ( delegate* )load( + "glColorMask" ); + contextPtr->glCullFace = ( delegate* )load( + "glCullFace" ); + contextPtr->glDepthFunc = ( delegate* )load( + "glDepthFunc" ); + contextPtr->glDepthMask = ( delegate* )load( + "glDepthMask" ); + contextPtr->glDepthRange = ( delegate* )load( + "glDepthRange" ); + contextPtr->glDisable = ( delegate* )load( "glDisable" ); + contextPtr->glDrawBuffer = ( delegate* )load( + "glDrawBuffer" ); + contextPtr->glEnable = ( delegate* )load( "glEnable" ); + contextPtr->glFinish = ( delegate* )load( "glFinish" ); + contextPtr->glFlush = ( delegate* )load( "glFlush" ); + contextPtr->glFrontFace = ( delegate* )load( + "glFrontFace" ); + contextPtr->glGetBooleanv = ( delegate* )load( + "glGetBooleanv" ); + contextPtr->glGetDoublev = ( delegate* )load( + "glGetDoublev" ); + contextPtr->glGetError = ( delegate* )load( "glGetError" ); + contextPtr->glGetFloatv = ( delegate* )load( + "glGetFloatv" ); + contextPtr->glGetIntegerv = ( delegate* )load( + "glGetIntegerv" ); + contextPtr->glGetString = ( delegate* )load( + "glGetString" ); + contextPtr->glGetTexImage = ( delegate* )load( + "glGetTexImage" ); + contextPtr->glGetTexLevelParameterfv = ( delegate* )load( + "glGetTexLevelParameterfv" ); + contextPtr->glGetTexLevelParameteriv = ( delegate* )load( + "glGetTexLevelParameteriv" ); + contextPtr->glGetTexParameterfv = ( delegate* )load( + "glGetTexParameterfv" ); + contextPtr->glGetTexParameteriv = ( delegate* )load( + "glGetTexParameteriv" ); + contextPtr->glHint = ( delegate* )load( "glHint" ); + contextPtr->glIsEnabled = ( delegate* )load( + "glIsEnabled" ); + contextPtr->glLineWidth = ( delegate* )load( + "glLineWidth" ); + contextPtr->glLogicOp = ( delegate* )load( "glLogicOp" ); + contextPtr->glPixelStoref = ( delegate* )load( + "glPixelStoref" ); + contextPtr->glPixelStorei = ( delegate* )load( + "glPixelStorei" ); + contextPtr->glPointSize = ( delegate* )load( + "glPointSize" ); + contextPtr->glPolygonMode = ( delegate* )load( + "glPolygonMode" ); + contextPtr->glReadBuffer = ( delegate* )load( + "glReadBuffer" ); + contextPtr->glReadPixels = ( delegate* )load( + "glReadPixels" ); + contextPtr->glScissor = ( delegate* )load( + "glScissor" ); + contextPtr->glStencilFunc = ( delegate* )load( + "glStencilFunc" ); + contextPtr->glStencilMask = ( delegate* )load( + "glStencilMask" ); + contextPtr->glStencilOp = ( delegate* )load( + "glStencilOp" ); + contextPtr->glTexImage1D = ( delegate* )load( + "glTexImage1D" ); + contextPtr->glTexImage2D = ( delegate* )load( + "glTexImage2D" ); + contextPtr->glTexParameterf = ( delegate* )load( + "glTexParameterf" ); + contextPtr->glTexParameterfv = ( delegate* )load( + "glTexParameterfv" ); + contextPtr->glTexParameteri = ( delegate* )load( + "glTexParameteri" ); + contextPtr->glTexParameteriv = ( delegate* )load( + "glTexParameteriv" ); + contextPtr->glViewport = ( delegate* )load( + "glViewport" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.0 APIs" ); + } + + internal static unsafe void LoadGLcore11( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core11 ) { + InternalIO.InternalAppendLog( + "The core version 1.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindTexture = ( delegate* )load( + "glBindTexture" ); + contextPtr->glCopyTexImage1D = ( delegate* )load( + "glCopyTexImage1D" ); + contextPtr->glCopyTexImage2D = ( delegate* )load( + "glCopyTexImage2D" ); + contextPtr->glCopyTexSubImage1D = ( delegate* )load( + "glCopyTexSubImage1D" ); + contextPtr->glCopyTexSubImage2D = ( delegate* )load( + "glCopyTexSubImage2D" ); + contextPtr->glDeleteTextures = ( delegate* )load( + "glDeleteTextures" ); + contextPtr->glDrawArrays = ( delegate* )load( + "glDrawArrays" ); + contextPtr->glDrawElements = ( delegate* )load( + "glDrawElements" ); + contextPtr->glGenTextures = ( delegate* )load( + "glGenTextures" ); + contextPtr->glGetPointerv = ( delegate* )load( + "glGetPointerv" ); + contextPtr->glIsTexture = ( delegate* )load( + "glIsTexture" ); + contextPtr->glPolygonOffset = ( delegate* )load( + "glPolygonOffset" ); + contextPtr->glTexSubImage1D = ( delegate* )load( + "glTexSubImage1D" ); + contextPtr->glTexSubImage2D = ( delegate* )load( + "glTexSubImage2D" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.1 APIs" ); + } + + internal static unsafe void LoadGLcore12( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core12 ) { + InternalIO.InternalAppendLog( + "The core version 1.2 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glCopyTexSubImage3D = ( delegate* )load( + "glCopyTexSubImage3D" ); + contextPtr->glDrawRangeElements = ( delegate* )load( + "glDrawRangeElements" ); + contextPtr->glTexImage3D = ( delegate* )load( + "glTexImage3D" ); + contextPtr->glTexSubImage3D = ( delegate* )load( + "glTexSubImage3D" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.2 APIs" ); + } + + internal static unsafe void LoadGLcore13( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core13 ) { + InternalIO.InternalAppendLog( + "The core version 1.3 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glActiveTexture = ( delegate* )load( + "glActiveTexture" ); + contextPtr->glCompressedTexImage1D = ( delegate* )load( + "glCompressedTexImage1D" ); + contextPtr->glCompressedTexImage2D = ( delegate* )load( + "glCompressedTexImage2D" ); + contextPtr->glCompressedTexImage3D = ( delegate* )load( + "glCompressedTexImage3D" ); + contextPtr->glCompressedTexSubImage1D = ( delegate* )load( + "glCompressedTexSubImage1D" ); + contextPtr->glCompressedTexSubImage2D = ( delegate* )load( + "glCompressedTexSubImage2D" ); + contextPtr->glCompressedTexSubImage3D = ( delegate* )load( + "glCompressedTexSubImage3D" ); + contextPtr->glGetCompressedTexImage = ( delegate* )load( + "glGetCompressedTexImage" ); + contextPtr->glSampleCoverage = ( delegate* )load( + "glSampleCoverage" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.3 APIs" ); + } + + internal static unsafe void LoadGLcore14( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core14 ) { + InternalIO.InternalAppendLog( + "The core version 1.4 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBlendColor = ( delegate* )load( + "glBlendColor" ); + contextPtr->glBlendEquation = ( delegate* )load( + "glBlendEquation" ); + contextPtr->glBlendFuncSeparate = ( delegate* )load( + "glBlendFuncSeparate" ); + contextPtr->glMultiDrawArrays = ( delegate* )load( + "glMultiDrawArrays" ); + contextPtr->glMultiDrawElements = ( delegate* )load( + "glMultiDrawElements" ); + contextPtr->glPointParameterf = ( delegate* )load( + "glPointParameterf" ); + contextPtr->glPointParameterfv = ( delegate* )load( + "glPointParameterfv" ); + contextPtr->glPointParameteri = ( delegate* )load( + "glPointParameteri" ); + contextPtr->glPointParameteriv = ( delegate* )load( + "glPointParameteriv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.4 APIs" ); + } + + internal static unsafe void LoadGLcore15( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core15 ) { + InternalIO.InternalAppendLog( + "The core version 1.5 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBeginQuery = ( delegate* )load( + "glBeginQuery" ); + contextPtr->glBindBuffer = ( delegate* )load( + "glBindBuffer" ); + contextPtr->glBufferData = ( delegate* )load( + "glBufferData" ); + contextPtr->glBufferSubData = ( delegate* )load( + "glBufferSubData" ); + contextPtr->glDeleteBuffers = ( delegate* )load( + "glDeleteBuffers" ); + contextPtr->glDeleteQueries = ( delegate* )load( + "glDeleteQueries" ); + contextPtr->glEndQuery = ( delegate* )load( + "glEndQuery" ); + contextPtr->glGenBuffers = ( delegate* )load( + "glGenBuffers" ); + contextPtr->glGenQueries = ( delegate* )load( + "glGenQueries" ); + contextPtr->glGetBufferParameteriv = ( delegate* )load( + "glGetBufferParameteriv" ); + contextPtr->glGetBufferPointerv = ( delegate* )load( + "glGetBufferPointerv" ); + contextPtr->glGetBufferSubData = ( delegate* )load( + "glGetBufferSubData" ); + contextPtr->glGetQueryObjectiv = ( delegate* )load( + "glGetQueryObjectiv" ); + contextPtr->glGetQueryObjectuiv = ( delegate* )load( + "glGetQueryObjectuiv" ); + contextPtr->glGetQueryiv = ( delegate* )load( + "glGetQueryiv" ); + contextPtr->glIsBuffer = ( delegate* )load( + "glIsBuffer" ); + contextPtr->glIsQuery = ( delegate* )load( "glIsQuery" ); + contextPtr->glMapBuffer = ( delegate* )load( + "glMapBuffer" ); + contextPtr->glUnmapBuffer = ( delegate* )load( + "glUnmapBuffer" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.5 APIs" ); + } + + internal static unsafe void LoadGLcore20( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core20 ) { + InternalIO.InternalAppendLog( + "The core version 2.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glAttachShader = ( delegate* )load( + "glAttachShader" ); + contextPtr->glBindAttribLocation = ( delegate* )load( + "glBindAttribLocation" ); + contextPtr->glBlendEquationSeparate = ( delegate* )load( + "glBlendEquationSeparate" ); + contextPtr->glCompileShader = ( delegate* )load( + "glCompileShader" ); + contextPtr->glCreateProgram = ( delegate* )load( + "glCreateProgram" ); + contextPtr->glCreateShader = ( delegate* )load( + "glCreateShader" ); + contextPtr->glDeleteProgram = ( delegate* )load( + "glDeleteProgram" ); + contextPtr->glDeleteShader = ( delegate* )load( + "glDeleteShader" ); + contextPtr->glDetachShader = ( delegate* )load( + "glDetachShader" ); + contextPtr->glDisableVertexAttribArray = ( delegate* )load( + "glDisableVertexAttribArray" ); + contextPtr->glDrawBuffers = ( delegate* )load( + "glDrawBuffers" ); + contextPtr->glEnableVertexAttribArray = ( delegate* )load( + "glEnableVertexAttribArray" ); + contextPtr->glGetActiveAttrib = ( delegate* )load( + "glGetActiveAttrib" ); + contextPtr->glGetActiveUniform = ( delegate* )load( + "glGetActiveUniform" ); + contextPtr->glGetAttachedShaders = ( delegate* )load( + "glGetAttachedShaders" ); + contextPtr->glGetAttribLocation = ( delegate* )load( + "glGetAttribLocation" ); + contextPtr->glGetProgramInfoLog = ( delegate* )load( + "glGetProgramInfoLog" ); + contextPtr->glGetProgramiv = ( delegate* )load( + "glGetProgramiv" ); + contextPtr->glGetShaderInfoLog = ( delegate* )load( + "glGetShaderInfoLog" ); + contextPtr->glGetShaderSource = ( delegate* )load( + "glGetShaderSource" ); + contextPtr->glGetShaderiv = ( delegate* )load( + "glGetShaderiv" ); + contextPtr->glGetUniformLocation = ( delegate* )load( + "glGetUniformLocation" ); + contextPtr->glGetUniformfv = ( delegate* )load( + "glGetUniformfv" ); + contextPtr->glGetUniformiv = ( delegate* )load( + "glGetUniformiv" ); + contextPtr->glGetVertexAttribPointerv = ( delegate* )load( + "glGetVertexAttribPointerv" ); + contextPtr->glGetVertexAttribdv = ( delegate* )load( + "glGetVertexAttribdv" ); + contextPtr->glGetVertexAttribfv = ( delegate* )load( + "glGetVertexAttribfv" ); + contextPtr->glGetVertexAttribiv = ( delegate* )load( + "glGetVertexAttribiv" ); + contextPtr->glIsProgram = ( delegate* )load( + "glIsProgram" ); + contextPtr->glIsShader = ( delegate* )load( + "glIsShader" ); + contextPtr->glLinkProgram = ( delegate* )load( + "glLinkProgram" ); + contextPtr->glShaderSource = ( delegate* unmanaged[Stdcall] )load( + "glShaderSource" ); + contextPtr->glStencilFuncSeparate = ( delegate* )load( + "glStencilFuncSeparate" ); + contextPtr->glStencilMaskSeparate = ( delegate* )load( + "glStencilMaskSeparate" ); + contextPtr->glStencilOpSeparate = ( delegate* )load( + "glStencilOpSeparate" ); + contextPtr->glUniform1f = ( delegate* )load( + "glUniform1f" ); + contextPtr->glUniform1fv = ( delegate* )load( + "glUniform1fv" ); + contextPtr->glUniform1i = ( delegate* )load( + "glUniform1i" ); + contextPtr->glUniform1iv = ( delegate* )load( + "glUniform1iv" ); + contextPtr->glUniform2f = ( delegate* )load( + "glUniform2f" ); + contextPtr->glUniform2fv = ( delegate* )load( + "glUniform2fv" ); + contextPtr->glUniform2i = ( delegate* )load( + "glUniform2i" ); + contextPtr->glUniform2iv = ( delegate* )load( + "glUniform2iv" ); + contextPtr->glUniform3f = ( delegate* )load( + "glUniform3f" ); + contextPtr->glUniform3fv = ( delegate* )load( + "glUniform3fv" ); + contextPtr->glUniform3i = ( delegate* )load( + "glUniform3i" ); + contextPtr->glUniform3iv = ( delegate* )load( + "glUniform3iv" ); + contextPtr->glUniform4f = ( delegate* )load( + "glUniform4f" ); + contextPtr->glUniform4fv = ( delegate* )load( + "glUniform4fv" ); + contextPtr->glUniform4i = ( delegate* )load( + "glUniform4i" ); + contextPtr->glUniform4iv = ( delegate* )load( + "glUniform4iv" ); + contextPtr->glUniformMatrix2fv = ( delegate* )load( + "glUniformMatrix2fv" ); + contextPtr->glUniformMatrix3fv = ( delegate* )load( + "glUniformMatrix3fv" ); + contextPtr->glUniformMatrix4fv = ( delegate* )load( + "glUniformMatrix4fv" ); + contextPtr->glUseProgram = ( delegate* )load( + "glUseProgram" ); + contextPtr->glValidateProgram = ( delegate* )load( + "glValidateProgram" ); + contextPtr->glVertexAttrib1d = ( delegate* )load( + "glVertexAttrib1d" ); + contextPtr->glVertexAttrib1dv = ( delegate* )load( + "glVertexAttrib1dv" ); + contextPtr->glVertexAttrib1f = ( delegate* )load( + "glVertexAttrib1f" ); + contextPtr->glVertexAttrib1fv = ( delegate* )load( + "glVertexAttrib1fv" ); + contextPtr->glVertexAttrib1s = ( delegate* )load( + "glVertexAttrib1s" ); + contextPtr->glVertexAttrib1sv = ( delegate* )load( + "glVertexAttrib1sv" ); + contextPtr->glVertexAttrib2d = ( delegate* )load( + "glVertexAttrib2d" ); + contextPtr->glVertexAttrib2dv = ( delegate* )load( + "glVertexAttrib2dv" ); + contextPtr->glVertexAttrib2f = ( delegate* )load( + "glVertexAttrib2f" ); + contextPtr->glVertexAttrib2fv = ( delegate* )load( + "glVertexAttrib2fv" ); + contextPtr->glVertexAttrib2s = ( delegate* )load( + "glVertexAttrib2s" ); + contextPtr->glVertexAttrib2sv = ( delegate* )load( + "glVertexAttrib2sv" ); + contextPtr->glVertexAttrib3d = ( delegate* )load( + "glVertexAttrib3d" ); + contextPtr->glVertexAttrib3dv = ( delegate* )load( + "glVertexAttrib3dv" ); + contextPtr->glVertexAttrib3f = ( delegate* )load( + "glVertexAttrib3f" ); + contextPtr->glVertexAttrib3fv = ( delegate* )load( + "glVertexAttrib3fv" ); + contextPtr->glVertexAttrib3s = ( delegate* )load( + "glVertexAttrib3s" ); + contextPtr->glVertexAttrib3sv = ( delegate* )load( + "glVertexAttrib3sv" ); + contextPtr->glVertexAttrib4Nbv = ( delegate* )load( + "glVertexAttrib4Nbv" ); + contextPtr->glVertexAttrib4Niv = ( delegate* )load( + "glVertexAttrib4Niv" ); + contextPtr->glVertexAttrib4Nsv = ( delegate* )load( + "glVertexAttrib4Nsv" ); + contextPtr->glVertexAttrib4Nub = ( delegate* )load( + "glVertexAttrib4Nub" ); + contextPtr->glVertexAttrib4Nubv = ( delegate* )load( + "glVertexAttrib4Nubv" ); + contextPtr->glVertexAttrib4Nuiv = ( delegate* )load( + "glVertexAttrib4Nuiv" ); + contextPtr->glVertexAttrib4Nusv = ( delegate* )load( + "glVertexAttrib4Nusv" ); + contextPtr->glVertexAttrib4bv = ( delegate* )load( + "glVertexAttrib4bv" ); + contextPtr->glVertexAttrib4d = ( delegate* )load( + "glVertexAttrib4d" ); + contextPtr->glVertexAttrib4dv = ( delegate* )load( + "glVertexAttrib4dv" ); + contextPtr->glVertexAttrib4f = ( delegate* )load( + "glVertexAttrib4f" ); + contextPtr->glVertexAttrib4fv = ( delegate* )load( + "glVertexAttrib4fv" ); + contextPtr->glVertexAttrib4iv = ( delegate* )load( + "glVertexAttrib4iv" ); + contextPtr->glVertexAttrib4s = ( delegate* )load( + "glVertexAttrib4s" ); + contextPtr->glVertexAttrib4sv = ( delegate* )load( + "glVertexAttrib4sv" ); + contextPtr->glVertexAttrib4ubv = ( delegate* )load( + "glVertexAttrib4ubv" ); + contextPtr->glVertexAttrib4uiv = ( delegate* )load( + "glVertexAttrib4uiv" ); + contextPtr->glVertexAttrib4usv = ( delegate* )load( + "glVertexAttrib4usv" ); + contextPtr->glVertexAttribPointer = ( delegate* )load( + "glVertexAttribPointer" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 2.0 APIs" ); + } + + internal static unsafe void LoadGLcore21( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core21 ) { + InternalIO.InternalAppendLog( + "The core version 2.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glUniformMatrix2x3fv = ( delegate* )load( + "glUniformMatrix2x3fv" ); + contextPtr->glUniformMatrix2x4fv = ( delegate* )load( + "glUniformMatrix2x4fv" ); + contextPtr->glUniformMatrix3x2fv = ( delegate* )load( + "glUniformMatrix3x2fv" ); + contextPtr->glUniformMatrix3x4fv = ( delegate* )load( + "glUniformMatrix3x4fv" ); + contextPtr->glUniformMatrix4x2fv = ( delegate* )load( + "glUniformMatrix4x2fv" ); + contextPtr->glUniformMatrix4x3fv = ( delegate* )load( + "glUniformMatrix4x3fv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 2.1 APIs" ); + } + + internal static unsafe void LoadGLcore30( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core30 ) { + InternalIO.InternalAppendLog( + "The core version 3.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBeginConditionalRender = ( delegate* )load( + "glBeginConditionalRender" ); + contextPtr->glBeginTransformFeedback = ( delegate* )load( + "glBeginTransformFeedback" ); + contextPtr->glBindBufferBase = ( delegate* )load( + "glBindBufferBase" ); + contextPtr->glBindBufferRange = ( delegate* )load( + "glBindBufferRange" ); + contextPtr->glBindFragDataLocation = ( delegate* )load( + "glBindFragDataLocation" ); + contextPtr->glBindFramebuffer = ( delegate* )load( + "glBindFramebuffer" ); + contextPtr->glBindRenderbuffer = ( delegate* )load( + "glBindRenderbuffer" ); + contextPtr->glBindVertexArray = ( delegate* )load( + "glBindVertexArray" ); + contextPtr->glBlitFramebuffer = ( delegate* )load( + "glBlitFramebuffer" ); + contextPtr->glCheckFramebufferStatus = ( delegate* )load( + "glCheckFramebufferStatus" ); + contextPtr->glClampColor = ( delegate* )load( + "glClampColor" ); + contextPtr->glClearBufferfi = ( delegate* )load( + "glClearBufferfi" ); + contextPtr->glClearBufferfv = ( delegate* )load( + "glClearBufferfv" ); + contextPtr->glClearBufferiv = ( delegate* )load( + "glClearBufferiv" ); + contextPtr->glClearBufferuiv = ( delegate* )load( + "glClearBufferuiv" ); + contextPtr->glColorMaski = ( delegate* )load( + "glColorMaski" ); + contextPtr->glDeleteFramebuffers = ( delegate* )load( + "glDeleteFramebuffers" ); + contextPtr->glDeleteRenderbuffers = ( delegate* )load( + "glDeleteRenderbuffers" ); + contextPtr->glDeleteVertexArrays = ( delegate* )load( + "glDeleteVertexArrays" ); + contextPtr->glDisablei = ( delegate* )load( + "glDisablei" ); + contextPtr->glEnablei = ( delegate* )load( + "glEnablei" ); + contextPtr->glEndConditionalRender = ( delegate* )load( + "glEndConditionalRender" ); + contextPtr->glEndTransformFeedback = ( delegate* )load( + "glEndTransformFeedback" ); + contextPtr->glFlushMappedBufferRange = ( delegate* )load( + "glFlushMappedBufferRange" ); + contextPtr->glFramebufferRenderbuffer = ( delegate* )load( + "glFramebufferRenderbuffer" ); + contextPtr->glFramebufferTexture1D = ( delegate* )load( + "glFramebufferTexture1D" ); + contextPtr->glFramebufferTexture2D = ( delegate* )load( + "glFramebufferTexture2D" ); + contextPtr->glFramebufferTexture3D = ( delegate* )load( + "glFramebufferTexture3D" ); + contextPtr->glFramebufferTextureLayer = ( delegate* )load( + "glFramebufferTextureLayer" ); + contextPtr->glGenFramebuffers = ( delegate* )load( + "glGenFramebuffers" ); + contextPtr->glGenRenderbuffers = ( delegate* )load( + "glGenRenderbuffers" ); + contextPtr->glGenVertexArrays = ( delegate* )load( + "glGenVertexArrays" ); + contextPtr->glGenerateMipmap = ( delegate* )load( + "glGenerateMipmap" ); + contextPtr->glGetBooleani_v = ( delegate* )load( + "glGetBooleani_v" ); + contextPtr->glGetFragDataLocation = ( delegate* )load( + "glGetFragDataLocation" ); + contextPtr->glGetFramebufferAttachmentParameteriv = ( delegate* )load( + "glGetFramebufferAttachmentParameteriv" ); + contextPtr->glGetIntegeri_v = ( delegate* )load( + "glGetIntegeri_v" ); + contextPtr->glGetRenderbufferParameteriv = ( delegate* )load( + "glGetRenderbufferParameteriv" ); + contextPtr->glGetStringi = ( delegate* )load( + "glGetStringi" ); + contextPtr->glGetTexParameterIiv = ( delegate* )load( + "glGetTexParameterIiv" ); + contextPtr->glGetTexParameterIuiv = ( delegate* )load( + "glGetTexParameterIuiv" ); + contextPtr->glGetTransformFeedbackVarying = ( delegate* )load( + "glGetTransformFeedbackVarying" ); + contextPtr->glGetUniformuiv = ( delegate* )load( + "glGetUniformuiv" ); + contextPtr->glGetVertexAttribIiv = ( delegate* )load( + "glGetVertexAttribIiv" ); + contextPtr->glGetVertexAttribIuiv = ( delegate* )load( + "glGetVertexAttribIuiv" ); + contextPtr->glIsEnabledi = ( delegate* )load( + "glIsEnabledi" ); + contextPtr->glIsFramebuffer = ( delegate* )load( + "glIsFramebuffer" ); + contextPtr->glIsRenderbuffer = ( delegate* )load( + "glIsRenderbuffer" ); + contextPtr->glIsVertexArray = ( delegate* )load( + "glIsVertexArray" ); + contextPtr->glMapBufferRange = ( delegate* )load( + "glMapBufferRange" ); + contextPtr->glRenderbufferStorage = ( delegate* )load( + "glRenderbufferStorage" ); + contextPtr->glRenderbufferStorageMultisample = ( delegate* )load( + "glRenderbufferStorageMultisample" ); + contextPtr->glTexParameterIiv = ( delegate* )load( + "glTexParameterIiv" ); + contextPtr->glTexParameterIuiv = ( delegate* )load( + "glTexParameterIuiv" ); + contextPtr->glTransformFeedbackVaryings = ( delegate* )load( + "glTransformFeedbackVaryings" ); + contextPtr->glUniform1ui = ( delegate* )load( + "glUniform1ui" ); + contextPtr->glUniform1uiv = ( delegate* )load( + "glUniform1uiv" ); + contextPtr->glUniform2ui = ( delegate* )load( + "glUniform2ui" ); + contextPtr->glUniform2uiv = ( delegate* )load( + "glUniform2uiv" ); + contextPtr->glUniform3ui = ( delegate* )load( + "glUniform3ui" ); + contextPtr->glUniform3uiv = ( delegate* )load( + "glUniform3uiv" ); + contextPtr->glUniform4ui = ( delegate* )load( + "glUniform4ui" ); + contextPtr->glUniform4uiv = ( delegate* )load( + "glUniform4uiv" ); + contextPtr->glVertexAttribI1i = ( delegate* )load( + "glVertexAttribI1i" ); + contextPtr->glVertexAttribI1iv = ( delegate* )load( + "glVertexAttribI1iv" ); + contextPtr->glVertexAttribI1ui = ( delegate* )load( + "glVertexAttribI1ui" ); + contextPtr->glVertexAttribI1uiv = ( delegate* )load( + "glVertexAttribI1uiv" ); + contextPtr->glVertexAttribI2i = ( delegate* )load( + "glVertexAttribI2i" ); + contextPtr->glVertexAttribI2iv = ( delegate* )load( + "glVertexAttribI2iv" ); + contextPtr->glVertexAttribI2ui = ( delegate* )load( + "glVertexAttribI2ui" ); + contextPtr->glVertexAttribI2uiv = ( delegate* )load( + "glVertexAttribI2uiv" ); + contextPtr->glVertexAttribI3i = ( delegate* )load( + "glVertexAttribI3i" ); + contextPtr->glVertexAttribI3iv = ( delegate* )load( + "glVertexAttribI3iv" ); + contextPtr->glVertexAttribI3ui = ( delegate* )load( + "glVertexAttribI3ui" ); + contextPtr->glVertexAttribI3uiv = ( delegate* )load( + "glVertexAttribI3uiv" ); + contextPtr->glVertexAttribI4bv = ( delegate* )load( + "glVertexAttribI4bv" ); + contextPtr->glVertexAttribI4i = ( delegate* )load( + "glVertexAttribI4i" ); + contextPtr->glVertexAttribI4iv = ( delegate* )load( + "glVertexAttribI4iv" ); + contextPtr->glVertexAttribI4sv = ( delegate* )load( + "glVertexAttribI4sv" ); + contextPtr->glVertexAttribI4ubv = ( delegate* )load( + "glVertexAttribI4ubv" ); + contextPtr->glVertexAttribI4ui = ( delegate* )load( + "glVertexAttribI4ui" ); + contextPtr->glVertexAttribI4uiv = ( delegate* )load( + "glVertexAttribI4uiv" ); + contextPtr->glVertexAttribI4usv = ( delegate* )load( + "glVertexAttribI4usv" ); + contextPtr->glVertexAttribIPointer = ( delegate* )load( + "glVertexAttribIPointer" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.0 APIs" ); + } + + internal static unsafe void LoadGLcore31( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core31 ) { + InternalIO.InternalAppendLog( + "The core version 3.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindBufferBase = ( delegate* )load( + "glBindBufferBase" ); + contextPtr->glBindBufferRange = ( delegate* )load( + "glBindBufferRange" ); + contextPtr->glCopyBufferSubData = ( delegate* )load( + "glCopyBufferSubData" ); + contextPtr->glDrawArraysInstanced = ( delegate* )load( + "glDrawArraysInstanced" ); + contextPtr->glDrawElementsInstanced = ( delegate* )load( + "glDrawElementsInstanced" ); + contextPtr->glGetActiveUniformBlockName = ( delegate* )load( + "glGetActiveUniformBlockName" ); + contextPtr->glGetActiveUniformBlockiv = ( delegate* )load( + "glGetActiveUniformBlockiv" ); + contextPtr->glGetActiveUniformName = ( delegate* )load( + "glGetActiveUniformName" ); + contextPtr->glGetActiveUniformsiv = ( delegate* )load( + "glGetActiveUniformsiv" ); + contextPtr->glGetIntegeri_v = ( delegate* )load( + "glGetIntegeri_v" ); + contextPtr->glGetUniformBlockIndex = ( delegate* )load( + "glGetUniformBlockIndex" ); + contextPtr->glGetUniformIndices = ( delegate* )load( + "glGetUniformIndices" ); + contextPtr->glPrimitiveRestartIndex = ( delegate* )load( + "glPrimitiveRestartIndex" ); + contextPtr->glTexBuffer = ( delegate* )load( + "glTexBuffer" ); + contextPtr->glUniformBlockBinding = ( delegate* )load( + "glUniformBlockBinding" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.1 APIs" ); + } + + internal static unsafe void LoadGLcore32( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core32 ) { + InternalIO.InternalAppendLog( + "The core version 3.2 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glClientWaitSync = ( delegate* )load( + "glClientWaitSync" ); + contextPtr->glDeleteSync = ( delegate* )load( + "glDeleteSync" ); + contextPtr->glDrawElementsBaseVertex = ( delegate* )load( + "glDrawElementsBaseVertex" ); + contextPtr->glDrawElementsInstancedBaseVertex = ( delegate* )load( + "glDrawElementsInstancedBaseVertex" ); + contextPtr->glDrawRangeElementsBaseVertex = ( delegate* )load( + "glDrawRangeElementsBaseVertex" ); + contextPtr->glFenceSync = ( delegate* )load( + "glFenceSync" ); + contextPtr->glFramebufferTexture = ( delegate* )load( + "glFramebufferTexture" ); + contextPtr->glGetBufferParameteri64v = ( delegate* )load( + "glGetBufferParameteri64v" ); + contextPtr->glGetInteger64i_v = ( delegate* )load( + "glGetInteger64i_v" ); + contextPtr->glGetInteger64v = ( delegate* )load( + "glGetInteger64v" ); + contextPtr->glGetMultisamplefv = ( delegate* )load( + "glGetMultisamplefv" ); + contextPtr->glGetSynciv = ( delegate* )load( + "glGetSynciv" ); + contextPtr->glIsSync = ( delegate* )load( "glIsSync" ); + contextPtr->glMultiDrawElementsBaseVertex = ( delegate* )load( + "glMultiDrawElementsBaseVertex" ); + contextPtr->glProvokingVertex = ( delegate* )load( + "glProvokingVertex" ); + contextPtr->glSampleMaski = ( delegate* )load( + "glSampleMaski" ); + contextPtr->glTexImage2DMultisample = ( delegate* )load( + "glTexImage2DMultisample" ); + contextPtr->glTexImage3DMultisample = ( delegate* )load( + "glTexImage3DMultisample" ); + contextPtr->glWaitSync = ( delegate* )load( + "glWaitSync" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.2 APIs" ); + } + + internal static unsafe void LoadGLcore33( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core33 ) { + InternalIO.InternalAppendLog( + "The core version 3.3 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindFragDataLocationIndexed = ( delegate* )load( + "glBindFragDataLocationIndexed" ); + contextPtr->glBindSampler = ( delegate* )load( + "glBindSampler" ); + contextPtr->glDeleteSamplers = ( delegate* )load( + "glDeleteSamplers" ); + contextPtr->glGenSamplers = ( delegate* )load( + "glGenSamplers" ); + contextPtr->glGetFragDataIndex = ( delegate* )load( + "glGetFragDataIndex" ); + contextPtr->glGetQueryObjecti64v = ( delegate* )load( + "glGetQueryObjecti64v" ); + contextPtr->glGetQueryObjectui64v = ( delegate* )load( + "glGetQueryObjectui64v" ); + contextPtr->glGetSamplerParameterIiv = ( delegate* )load( + "glGetSamplerParameterIiv" ); + contextPtr->glGetSamplerParameterIuiv = ( delegate* )load( + "glGetSamplerParameterIuiv" ); + contextPtr->glGetSamplerParameterfv = ( delegate* )load( + "glGetSamplerParameterfv" ); + contextPtr->glGetSamplerParameteriv = ( delegate* )load( + "glGetSamplerParameteriv" ); + contextPtr->glIsSampler = ( delegate* )load( + "glIsSampler" ); + contextPtr->glQueryCounter = ( delegate* )load( + "glQueryCounter" ); + contextPtr->glSamplerParameterIiv = ( delegate* )load( + "glSamplerParameterIiv" ); + contextPtr->glSamplerParameterIuiv = ( delegate* )load( + "glSamplerParameterIuiv" ); + contextPtr->glSamplerParameterf = ( delegate* )load( + "glSamplerParameterf" ); + contextPtr->glSamplerParameterfv = ( delegate* )load( + "glSamplerParameterfv" ); + contextPtr->glSamplerParameteri = ( delegate* )load( + "glSamplerParameteri" ); + contextPtr->glSamplerParameteriv = ( delegate* )load( + "glSamplerParameteriv" ); + contextPtr->glVertexAttribDivisor = ( delegate* )load( + "glVertexAttribDivisor" ); + contextPtr->glVertexAttribP1ui = ( delegate* )load( + "glVertexAttribP1ui" ); + contextPtr->glVertexAttribP1uiv = ( delegate* )load( + "glVertexAttribP1uiv" ); + contextPtr->glVertexAttribP2ui = ( delegate* )load( + "glVertexAttribP2ui" ); + contextPtr->glVertexAttribP2uiv = ( delegate* )load( + "glVertexAttribP2uiv" ); + contextPtr->glVertexAttribP3ui = ( delegate* )load( + "glVertexAttribP3ui" ); + contextPtr->glVertexAttribP3uiv = ( delegate* )load( + "glVertexAttribP3uiv" ); + contextPtr->glVertexAttribP4ui = ( delegate* )load( + "glVertexAttribP4ui" ); + contextPtr->glVertexAttribP4uiv = ( delegate* )load( + "glVertexAttribP4uiv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.3 APIs" ); + } + + internal static unsafe void LoadGLcore40( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core40 ) { + InternalIO.InternalAppendLog( + "The core version 4.0 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBeginQueryIndexed = ( delegate* )load( + "glBeginQueryIndexed" ); + contextPtr->glBindTransformFeedback = ( delegate* )load( + "glBindTransformFeedback" ); + contextPtr->glBlendEquationSeparatei = ( delegate* )load( + "glBlendEquationSeparatei" ); + contextPtr->glBlendEquationi = ( delegate* )load( + "glBlendEquationi" ); + contextPtr->glBlendFuncSeparatei = ( delegate* )load( + "glBlendFuncSeparatei" ); + contextPtr->glBlendFunci = ( delegate* )load( + "glBlendFunci" ); + contextPtr->glDeleteTransformFeedbacks = ( delegate* )load( + "glDeleteTransformFeedbacks" ); + contextPtr->glDrawArraysIndirect = ( delegate* )load( + "glDrawArraysIndirect" ); + contextPtr->glDrawElementsIndirect = ( delegate* )load( + "glDrawElementsIndirect" ); + contextPtr->glDrawTransformFeedback = ( delegate* )load( + "glDrawTransformFeedback" ); + contextPtr->glDrawTransformFeedbackStream = ( delegate* )load( + "glDrawTransformFeedbackStream" ); + contextPtr->glEndQueryIndexed = ( delegate* )load( + "glEndQueryIndexed" ); + contextPtr->glGenTransformFeedbacks = ( delegate* )load( + "glGenTransformFeedbacks" ); + contextPtr->glGetActiveSubroutineName = ( delegate* )load( + "glGetActiveSubroutineName" ); + contextPtr->glGetActiveSubroutineUniformName = ( delegate* )load( + "glGetActiveSubroutineUniformName" ); + contextPtr->glGetActiveSubroutineUniformiv = ( delegate* )load( + "glGetActiveSubroutineUniformiv" ); + contextPtr->glGetProgramStageiv = ( delegate* )load( + "glGetProgramStageiv" ); + contextPtr->glGetQueryIndexediv = ( delegate* )load( + "glGetQueryIndexediv" ); + contextPtr->glGetSubroutineIndex = ( delegate* )load( + "glGetSubroutineIndex" ); + contextPtr->glGetSubroutineUniformLocation = ( delegate* )load( + "glGetSubroutineUniformLocation" ); + contextPtr->glGetUniformSubroutineuiv = ( delegate* )load( + "glGetUniformSubroutineuiv" ); + contextPtr->glGetUniformdv = ( delegate* )load( + "glGetUniformdv" ); + contextPtr->glIsTransformFeedback = ( delegate* )load( + "glIsTransformFeedback" ); + contextPtr->glMinSampleShading = ( delegate* )load( + "glMinSampleShading" ); + contextPtr->glPatchParameterfv = ( delegate* )load( + "glPatchParameterfv" ); + contextPtr->glPatchParameteri = ( delegate* )load( + "glPatchParameteri" ); + contextPtr->glPauseTransformFeedback = ( delegate* )load( + "glPauseTransformFeedback" ); + contextPtr->glResumeTransformFeedback = ( delegate* )load( + "glResumeTransformFeedback" ); + contextPtr->glUniform1d = ( delegate* )load( + "glUniform1d" ); + contextPtr->glUniform1dv = ( delegate* )load( + "glUniform1dv" ); + contextPtr->glUniform2d = ( delegate* )load( + "glUniform2d" ); + contextPtr->glUniform2dv = ( delegate* )load( + "glUniform2dv" ); + contextPtr->glUniform3d = ( delegate* )load( + "glUniform3d" ); + contextPtr->glUniform3dv = ( delegate* )load( + "glUniform3dv" ); + contextPtr->glUniform4d = ( delegate* )load( + "glUniform4d" ); + contextPtr->glUniform4dv = ( delegate* )load( + "glUniform4dv" ); + contextPtr->glUniformMatrix2dv = ( delegate* )load( + "glUniformMatrix2dv" ); + contextPtr->glUniformMatrix2x3dv = ( delegate* )load( + "glUniformMatrix2x3dv" ); + contextPtr->glUniformMatrix2x4dv = ( delegate* )load( + "glUniformMatrix2x4dv" ); + contextPtr->glUniformMatrix3dv = ( delegate* )load( + "glUniformMatrix3dv" ); + contextPtr->glUniformMatrix3x2dv = ( delegate* )load( + "glUniformMatrix3x2dv" ); + contextPtr->glUniformMatrix3x4dv = ( delegate* )load( + "glUniformMatrix3x4dv" ); + contextPtr->glUniformMatrix4dv = ( delegate* )load( + "glUniformMatrix4dv" ); + contextPtr->glUniformMatrix4x2dv = ( delegate* )load( + "glUniformMatrix4x2dv" ); + contextPtr->glUniformMatrix4x3dv = ( delegate* )load( + "glUniformMatrix4x3dv" ); + contextPtr->glUniformSubroutinesuiv = ( delegate* )load( + "glUniformSubroutinesuiv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.0 APIs" ); + } + + internal static unsafe void LoadGLcore41( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core41 ) { + InternalIO.InternalAppendLog( + "The core version 4.1 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glActiveShaderProgram = ( delegate* )load( + "glActiveShaderProgram" ); + contextPtr->glBindProgramPipeline = ( delegate* )load( + "glBindProgramPipeline" ); + contextPtr->glClearDepthf = ( delegate* )load( + "glClearDepthf" ); + contextPtr->glCreateShaderProgramv = ( delegate* )load( + "glCreateShaderProgramv" ); + contextPtr->glDeleteProgramPipelines = ( delegate* )load( + "glDeleteProgramPipelines" ); + contextPtr->glDepthRangeArrayv = ( delegate* )load( + "glDepthRangeArrayv" ); + contextPtr->glDepthRangeIndexed = ( delegate* )load( + "glDepthRangeIndexed" ); + contextPtr->glDepthRangef = ( delegate* )load( + "glDepthRangef" ); + contextPtr->glGenProgramPipelines = ( delegate* )load( + "glGenProgramPipelines" ); + contextPtr->glGetDoublei_v = ( delegate* )load( + "glGetDoublei_v" ); + contextPtr->glGetFloati_v = ( delegate* )load( + "glGetFloati_v" ); + contextPtr->glGetProgramBinary = ( delegate* )load( + "glGetProgramBinary" ); + contextPtr->glGetProgramPipelineInfoLog = ( delegate* )load( + "glGetProgramPipelineInfoLog" ); + contextPtr->glGetProgramPipelineiv = ( delegate* )load( + "glGetProgramPipelineiv" ); + contextPtr->glGetShaderPrecisionFormat = ( delegate* )load( + "glGetShaderPrecisionFormat" ); + contextPtr->glGetVertexAttribLdv = ( delegate* )load( + "glGetVertexAttribLdv" ); + contextPtr->glIsProgramPipeline = ( delegate* )load( + "glIsProgramPipeline" ); + contextPtr->glProgramBinary = ( delegate* )load( + "glProgramBinary" ); + contextPtr->glProgramParameteri = ( delegate* )load( + "glProgramParameteri" ); + contextPtr->glProgramUniform1d = ( delegate* )load( + "glProgramUniform1d" ); + contextPtr->glProgramUniform1dv = ( delegate* )load( + "glProgramUniform1dv" ); + contextPtr->glProgramUniform1f = ( delegate* )load( + "glProgramUniform1f" ); + contextPtr->glProgramUniform1fv = ( delegate* )load( + "glProgramUniform1fv" ); + contextPtr->glProgramUniform1i = ( delegate* )load( + "glProgramUniform1i" ); + contextPtr->glProgramUniform1iv = ( delegate* )load( + "glProgramUniform1iv" ); + contextPtr->glProgramUniform1ui = ( delegate* )load( + "glProgramUniform1ui" ); + contextPtr->glProgramUniform1uiv = ( delegate* )load( + "glProgramUniform1uiv" ); + contextPtr->glProgramUniform2d = ( delegate* )load( + "glProgramUniform2d" ); + contextPtr->glProgramUniform2dv = ( delegate* )load( + "glProgramUniform2dv" ); + contextPtr->glProgramUniform2f = ( delegate* )load( + "glProgramUniform2f" ); + contextPtr->glProgramUniform2fv = ( delegate* )load( + "glProgramUniform2fv" ); + contextPtr->glProgramUniform2i = ( delegate* )load( + "glProgramUniform2i" ); + contextPtr->glProgramUniform2iv = ( delegate* )load( + "glProgramUniform2iv" ); + contextPtr->glProgramUniform2ui = ( delegate* )load( + "glProgramUniform2ui" ); + contextPtr->glProgramUniform2uiv = ( delegate* )load( + "glProgramUniform2uiv" ); + contextPtr->glProgramUniform3d = ( delegate* )load( + "glProgramUniform3d" ); + contextPtr->glProgramUniform3dv = ( delegate* )load( + "glProgramUniform3dv" ); + contextPtr->glProgramUniform3f = ( delegate* )load( + "glProgramUniform3f" ); + contextPtr->glProgramUniform3fv = ( delegate* )load( + "glProgramUniform3fv" ); + contextPtr->glProgramUniform3i = ( delegate* )load( + "glProgramUniform3i" ); + contextPtr->glProgramUniform3iv = ( delegate* )load( + "glProgramUniform3iv" ); + contextPtr->glProgramUniform3ui = ( delegate* )load( + "glProgramUniform3ui" ); + contextPtr->glProgramUniform3uiv = ( delegate* )load( + "glProgramUniform3uiv" ); + contextPtr->glProgramUniform4d = ( delegate* )load( + "glProgramUniform4d" ); + contextPtr->glProgramUniform4dv = ( delegate* )load( + "glProgramUniform4dv" ); + contextPtr->glProgramUniform4f = ( delegate* )load( + "glProgramUniform4f" ); + contextPtr->glProgramUniform4fv = ( delegate* )load( + "glProgramUniform4fv" ); + contextPtr->glProgramUniform4i = ( delegate* )load( + "glProgramUniform4i" ); + contextPtr->glProgramUniform4iv = ( delegate* )load( + "glProgramUniform4iv" ); + contextPtr->glProgramUniform4ui = ( delegate* )load( + "glProgramUniform4ui" ); + contextPtr->glProgramUniform4uiv = ( delegate* )load( + "glProgramUniform4uiv" ); + contextPtr->glProgramUniformMatrix2dv = ( delegate* )load( + "glProgramUniformMatrix2dv" ); + contextPtr->glProgramUniformMatrix2fv = ( delegate* )load( + "glProgramUniformMatrix2fv" ); + contextPtr->glProgramUniformMatrix2x3dv = ( delegate* )load( + "glProgramUniformMatrix2x3dv" ); + contextPtr->glProgramUniformMatrix2x3fv = ( delegate* )load( + "glProgramUniformMatrix2x3fv" ); + contextPtr->glProgramUniformMatrix2x4dv = ( delegate* )load( + "glProgramUniformMatrix2x4dv" ); + contextPtr->glProgramUniformMatrix2x4fv = ( delegate* )load( + "glProgramUniformMatrix2x4fv" ); + contextPtr->glProgramUniformMatrix3dv = ( delegate* )load( + "glProgramUniformMatrix3dv" ); + contextPtr->glProgramUniformMatrix3fv = ( delegate* )load( + "glProgramUniformMatrix3fv" ); + contextPtr->glProgramUniformMatrix3x2dv = ( delegate* )load( + "glProgramUniformMatrix3x2dv" ); + contextPtr->glProgramUniformMatrix3x2fv = ( delegate* )load( + "glProgramUniformMatrix3x2fv" ); + contextPtr->glProgramUniformMatrix3x4dv = ( delegate* )load( + "glProgramUniformMatrix3x4dv" ); + contextPtr->glProgramUniformMatrix3x4fv = ( delegate* )load( + "glProgramUniformMatrix3x4fv" ); + contextPtr->glProgramUniformMatrix4dv = ( delegate* )load( + "glProgramUniformMatrix4dv" ); + contextPtr->glProgramUniformMatrix4fv = ( delegate* )load( + "glProgramUniformMatrix4fv" ); + contextPtr->glProgramUniformMatrix4x2dv = ( delegate* )load( + "glProgramUniformMatrix4x2dv" ); + contextPtr->glProgramUniformMatrix4x2fv = ( delegate* )load( + "glProgramUniformMatrix4x2fv" ); + contextPtr->glProgramUniformMatrix4x3dv = ( delegate* )load( + "glProgramUniformMatrix4x3dv" ); + contextPtr->glProgramUniformMatrix4x3fv = ( delegate* )load( + "glProgramUniformMatrix4x3fv" ); + contextPtr->glReleaseShaderCompiler = ( delegate* )load( + "glReleaseShaderCompiler" ); + contextPtr->glScissorArrayv = ( delegate* )load( + "glScissorArrayv" ); + contextPtr->glScissorIndexed = ( delegate* )load( + "glScissorIndexed" ); + contextPtr->glScissorIndexedv = ( delegate* )load( + "glScissorIndexedv" ); + contextPtr->glShaderBinary = ( delegate* )load( + "glShaderBinary" ); + contextPtr->glUseProgramStages = ( delegate* )load( + "glUseProgramStages" ); + contextPtr->glValidateProgramPipeline = ( delegate* )load( + "glValidateProgramPipeline" ); + contextPtr->glVertexAttribL1d = ( delegate* )load( + "glVertexAttribL1d" ); + contextPtr->glVertexAttribL1dv = ( delegate* )load( + "glVertexAttribL1dv" ); + contextPtr->glVertexAttribL2d = ( delegate* )load( + "glVertexAttribL2d" ); + contextPtr->glVertexAttribL2dv = ( delegate* )load( + "glVertexAttribL2dv" ); + contextPtr->glVertexAttribL3d = ( delegate* )load( + "glVertexAttribL3d" ); + contextPtr->glVertexAttribL3dv = ( delegate* )load( + "glVertexAttribL3dv" ); + contextPtr->glVertexAttribL4d = ( delegate* )load( + "glVertexAttribL4d" ); + contextPtr->glVertexAttribL4dv = ( delegate* )load( + "glVertexAttribL4dv" ); + contextPtr->glVertexAttribLPointer = ( delegate* )load( + "glVertexAttribLPointer" ); + contextPtr->glViewportArrayv = ( delegate* )load( + "glViewportArrayv" ); + contextPtr->glViewportIndexedf = ( delegate* )load( + "glViewportIndexedf" ); + contextPtr->glViewportIndexedfv = ( delegate* )load( + "glViewportIndexedfv" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.1 APIs" ); + } + + internal static unsafe void LoadGLcore42( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core42 ) { + InternalIO.InternalAppendLog( + "The core version 4.2 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindImageTexture = ( delegate* )load( + "glBindImageTexture" ); + contextPtr->glDrawArraysInstancedBaseInstance = ( delegate* )load( + "glDrawArraysInstancedBaseInstance" ); + contextPtr->glDrawElementsInstancedBaseInstance = ( delegate* )load( + "glDrawElementsInstancedBaseInstance" ); + contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = ( delegate* )load( + "glDrawElementsInstancedBaseVertexBaseInstance" ); + contextPtr->glDrawTransformFeedbackInstanced = ( delegate* )load( + "glDrawTransformFeedbackInstanced" ); + contextPtr->glDrawTransformFeedbackStreamInstanced = ( delegate* )load( + "glDrawTransformFeedbackStreamInstanced" ); + contextPtr->glGetActiveAtomicCounterBufferiv = ( delegate* )load( + "glGetActiveAtomicCounterBufferiv" ); + contextPtr->glGetInternalformativ = ( delegate* )load( + "glGetInternalformativ" ); + contextPtr->glMemoryBarrier = ( delegate* )load( + "glMemoryBarrier" ); + contextPtr->glTexStorage1D = ( delegate* )load( + "glTexStorage1D" ); + contextPtr->glTexStorage2D = ( delegate* )load( + "glTexStorage2D" ); + contextPtr->glTexStorage3D = ( delegate* )load( + "glTexStorage3D" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.2 APIs" ); + } + + internal static unsafe void LoadGLcore43( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core43 ) { + InternalIO.InternalAppendLog( + "The core version 4.3 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindVertexBuffer = ( delegate* )load( + "glBindVertexBuffer" ); + contextPtr->glClearBufferData = ( delegate* )load( + "glClearBufferData" ); + contextPtr->glClearBufferSubData = ( delegate* )load( + "glClearBufferSubData" ); + contextPtr->glCopyImageSubData = ( delegate* )load( + "glCopyImageSubData" ); + contextPtr->glDebugMessageCallback = ( delegate* )load( + "glDebugMessageCallback" ); + contextPtr->glDebugMessageControl = ( delegate* )load( + "glDebugMessageControl" ); + contextPtr->glDebugMessageInsert = ( delegate* )load( + "glDebugMessageInsert" ); + contextPtr->glDispatchCompute = ( delegate* )load( + "glDispatchCompute" ); + contextPtr->glDispatchComputeIndirect = ( delegate* )load( + "glDispatchComputeIndirect" ); + contextPtr->glFramebufferParameteri = ( delegate* )load( + "glFramebufferParameteri" ); + contextPtr->glGetDebugMessageLog = ( delegate* )load( + "glGetDebugMessageLog" ); + contextPtr->glGetFramebufferParameteriv = ( delegate* )load( + "glGetFramebufferParameteriv" ); + contextPtr->glGetInternalformati64v = ( delegate* )load( + "glGetInternalformati64v" ); + contextPtr->glGetObjectLabel = ( delegate* )load( + "glGetObjectLabel" ); + contextPtr->glGetObjectPtrLabel = ( delegate* )load( + "glGetObjectPtrLabel" ); + contextPtr->glGetPointerv = ( delegate* )load( + "glGetPointerv" ); + contextPtr->glGetProgramInterfaceiv = ( delegate* )load( + "glGetProgramInterfaceiv" ); + contextPtr->glGetProgramResourceIndex = ( delegate* )load( + "glGetProgramResourceIndex" ); + contextPtr->glGetProgramResourceLocation = ( delegate* )load( + "glGetProgramResourceLocation" ); + contextPtr->glGetProgramResourceLocationIndex = ( delegate* )load( + "glGetProgramResourceLocationIndex" ); + contextPtr->glGetProgramResourceName = ( delegate* )load( + "glGetProgramResourceName" ); + contextPtr->glGetProgramResourceiv = ( delegate* )load( + "glGetProgramResourceiv" ); + contextPtr->glInvalidateBufferData = ( delegate* )load( + "glInvalidateBufferData" ); + contextPtr->glInvalidateBufferSubData = ( delegate* )load( + "glInvalidateBufferSubData" ); + contextPtr->glInvalidateFramebuffer = ( delegate* )load( + "glInvalidateFramebuffer" ); + contextPtr->glInvalidateSubFramebuffer = ( delegate* )load( + "glInvalidateSubFramebuffer" ); + contextPtr->glInvalidateTexImage = ( delegate* )load( + "glInvalidateTexImage" ); + contextPtr->glInvalidateTexSubImage = ( delegate* )load( + "glInvalidateTexSubImage" ); + contextPtr->glMultiDrawArraysIndirect = ( delegate* )load( + "glMultiDrawArraysIndirect" ); + contextPtr->glMultiDrawElementsIndirect = ( delegate* )load( + "glMultiDrawElementsIndirect" ); + contextPtr->glObjectLabel = ( delegate* )load( + "glObjectLabel" ); + contextPtr->glObjectPtrLabel = ( delegate* )load( + "glObjectPtrLabel" ); + contextPtr->glPopDebugGroup = ( delegate* )load( + "glPopDebugGroup" ); + contextPtr->glPushDebugGroup = ( delegate* )load( + "glPushDebugGroup" ); + contextPtr->glShaderStorageBlockBinding = ( delegate* )load( + "glShaderStorageBlockBinding" ); + contextPtr->glTexBufferRange = ( delegate* )load( + "glTexBufferRange" ); + contextPtr->glTexStorage2DMultisample = ( delegate* )load( + "glTexStorage2DMultisample" ); + contextPtr->glTexStorage3DMultisample = ( delegate* )load( + "glTexStorage3DMultisample" ); + contextPtr->glTextureView = ( delegate* )load( + "glTextureView" ); + contextPtr->glVertexAttribBinding = ( delegate* )load( + "glVertexAttribBinding" ); + contextPtr->glVertexAttribFormat = ( delegate* )load( + "glVertexAttribFormat" ); + contextPtr->glVertexAttribIFormat = ( delegate* )load( + "glVertexAttribIFormat" ); + contextPtr->glClearBufferData = ( delegate* )load( + "glClearBufferData" ); + contextPtr->glVertexBindingDivisor = ( delegate* )load( + "glVertexBindingDivisor" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.3 APIs" ); + } + + internal static unsafe void LoadGLcore44( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core44 ) { + InternalIO.InternalAppendLog( + "The core version 4.4 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindBuffersBase = ( delegate* )load( + "glBindBuffersBase" ); + contextPtr->glBindBuffersRange = ( delegate* )load( + "glBindBuffersRange" ); + contextPtr->glBindImageTextures = ( delegate* )load( + "glBindImageTextures" ); + contextPtr->glBindSamplers = ( delegate* )load( + "glBindSamplers" ); + contextPtr->glBindTextures = ( delegate* )load( + "glBindTextures" ); + contextPtr->glBindVertexBuffers = ( delegate* )load( + "glBindVertexBuffers" ); + contextPtr->glBufferStorage = ( delegate* )load( + "glBufferStorage" ); + contextPtr->glClearTexImage = ( delegate* )load( + "glClearTexImage" ); + contextPtr->glClearTexSubImage = ( delegate* )load( + "glClearTexSubImage" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.4 APIs" ); + } + + internal static unsafe void LoadGLcore45( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core45 ) { + InternalIO.InternalAppendLog( + "The core version 4.5 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glBindTextureUnit = ( delegate* )load( + "glBindTextureUnit" ); + contextPtr->glBlitNamedFramebuffer = ( delegate* )load( + "glBlitNamedFramebuffer" ); + contextPtr->glCheckNamedFramebufferStatus = ( delegate* )load( + "glCheckNamedFramebufferStatus" ); + contextPtr->glClearNamedBufferData = ( delegate* )load( + "glClearNamedBufferData" ); + contextPtr->glClearNamedBufferSubData = ( delegate* )load( + "glClearNamedBufferSubData" ); + contextPtr->glClearNamedFramebufferfi = ( delegate* )load( + "glClearNamedFramebufferfi" ); + contextPtr->glClearNamedFramebufferfv = ( delegate* )load( + "glClearNamedFramebufferfv" ); + contextPtr->glClearNamedFramebufferiv = ( delegate* )load( + "glClearNamedFramebufferiv" ); + contextPtr->glClearNamedFramebufferuiv = ( delegate* )load( + "glClearNamedFramebufferuiv" ); + contextPtr->glClipControl = ( delegate* )load( + "glClipControl" ); + contextPtr->glCompressedTextureSubImage1D = ( delegate* )load( + "glCompressedTextureSubImage1D" ); + contextPtr->glCompressedTextureSubImage2D = ( delegate* )load( + "glCompressedTextureSubImage2D" ); + contextPtr->glCompressedTextureSubImage3D = ( delegate* )load( + "glCompressedTextureSubImage3D" ); + contextPtr->glCopyNamedBufferSubData = ( delegate* )load( + "glCopyNamedBufferSubData" ); + contextPtr->glCopyTextureSubImage1D = ( delegate* )load( + "glCopyTextureSubImage1D" ); + contextPtr->glCopyTextureSubImage2D = ( delegate* )load( + "glCopyTextureSubImage2D" ); + contextPtr->glCopyTextureSubImage3D = ( delegate* )load( + "glCopyTextureSubImage3D" ); + contextPtr->glCreateBuffers = ( delegate* )load( + "glCreateBuffers" ); + contextPtr->glCreateFramebuffers = ( delegate* )load( + "glCreateFramebuffers" ); + contextPtr->glCreateProgramPipelines = ( delegate* )load( + "glCreateProgramPipelines" ); + contextPtr->glCreateQueries = ( delegate* )load( + "glCreateQueries" ); + contextPtr->glCreateRenderbuffers = ( delegate* )load( + "glCreateRenderbuffers" ); + contextPtr->glCreateSamplers = ( delegate* )load( + "glCreateSamplers" ); + contextPtr->glCreateTextures = ( delegate* )load( + "glCreateTextures" ); + contextPtr->glCreateTransformFeedbacks = ( delegate* )load( + "glCreateTransformFeedbacks" ); + contextPtr->glCreateVertexArrays = ( delegate* )load( + "glCreateVertexArrays" ); + contextPtr->glDisableVertexArrayAttrib = ( delegate* )load( + "glDisableVertexArrayAttrib" ); + contextPtr->glEnableVertexArrayAttrib = ( delegate* )load( + "glEnableVertexArrayAttrib" ); + contextPtr->glFlushMappedNamedBufferRange = ( delegate* )load( + "glFlushMappedNamedBufferRange" ); + contextPtr->glGenerateTextureMipmap = ( delegate* )load( + "glGenerateTextureMipmap" ); + contextPtr->glGetCompressedTextureImage = ( delegate* )load( + "glGetCompressedTextureImage" ); + contextPtr->glGetCompressedTextureSubImage = ( delegate* )load( + "glGetCompressedTextureSubImage" ); + contextPtr->glGetGraphicsResetStatus = ( delegate* )load( + "glGetGraphicsResetStatus" ); + contextPtr->glGetNamedBufferParameteri64v = ( delegate* )load( + "glGetNamedBufferParameteri64v" ); + contextPtr->glGetNamedBufferParameteriv = ( delegate* )load( + "glGetNamedBufferParameteriv" ); + contextPtr->glGetNamedBufferPointerv = ( delegate* )load( + "glGetNamedBufferPointerv" ); + contextPtr->glGetNamedBufferSubData = ( delegate* )load( + "glGetNamedBufferSubData" ); + contextPtr->glGetNamedFramebufferAttachmentParameteriv = ( delegate* )load( + "glGetNamedFramebufferAttachmentParameteriv" ); + contextPtr->glGetNamedFramebufferParameteriv = ( delegate* )load( + "glGetNamedFramebufferParameteriv" ); + contextPtr->glGetNamedRenderbufferParameteriv = ( delegate* )load( + "glGetNamedRenderbufferParameteriv" ); + contextPtr->glGetQueryBufferObjecti64v = ( delegate* )load( + "glGetQueryBufferObjecti64v" ); + contextPtr->glGetQueryBufferObjectiv = ( delegate* )load( + "glGetQueryBufferObjectiv" ); + contextPtr->glGetQueryBufferObjectui64v = ( delegate* )load( + "glGetQueryBufferObjectui64v" ); + contextPtr->glGetQueryBufferObjectuiv = ( delegate* )load( + "glGetQueryBufferObjectuiv" ); + contextPtr->glGetTextureImage = ( delegate* )load( + "glGetTextureImage" ); + contextPtr->glGetTextureLevelParameterfv = ( delegate* )load( + "glGetTextureLevelParameterfv" ); + contextPtr->glGetTextureLevelParameteriv = ( delegate* )load( + "glGetTextureLevelParameteriv" ); + contextPtr->glGetTextureParameterIiv = ( delegate* )load( + "glGetTextureParameterIiv" ); + contextPtr->glGetTextureParameterIuiv = ( delegate* )load( + "glGetTextureParameterIuiv" ); + contextPtr->glGetTextureParameterfv = ( delegate* )load( + "glGetTextureParameterfv" ); + contextPtr->glGetTextureParameteriv = ( delegate* )load( + "glGetTextureParameteriv" ); + contextPtr->glGetTextureSubImage = ( delegate* )load( + "glGetTextureSubImage" ); + contextPtr->glGetTransformFeedbacki64_v = ( delegate* )load( + "glGetTransformFeedbacki64_v" ); + contextPtr->glGetTransformFeedbacki_v = ( delegate* )load( + "glGetTransformFeedbacki_v" ); + contextPtr->glGetTransformFeedbackiv = ( delegate* )load( + "glGetTransformFeedbackiv" ); + contextPtr->glGetVertexArrayIndexed64iv = ( delegate* )load( + "glGetVertexArrayIndexed64iv" ); + contextPtr->glGetVertexArrayIndexediv = ( delegate* )load( + "glGetVertexArrayIndexediv" ); + contextPtr->glGetVertexArrayiv = ( delegate* )load( + "glGetVertexArrayiv" ); + contextPtr->glGetnCompressedTexImage = ( delegate* )load( + "glGetnCompressedTexImage" ); + contextPtr->glGetnTexImage = ( delegate* )load( + "glGetnTexImage" ); + contextPtr->glGetnUniformdv = ( delegate* )load( + "glGetnUniformdv" ); + contextPtr->glGetnUniformfv = ( delegate* )load( + "glGetnUniformfv" ); + contextPtr->glGetnUniformiv = ( delegate* )load( + "glGetnUniformiv" ); + contextPtr->glGetnUniformuiv = ( delegate* )load( + "glGetnUniformuiv" ); + contextPtr->glInvalidateNamedFramebufferData = ( delegate* )load( + "glInvalidateNamedFramebufferData" ); + contextPtr->glInvalidateNamedFramebufferSubData = ( delegate* )load( + "glInvalidateNamedFramebufferSubData" ); + contextPtr->glMapNamedBuffer = ( delegate* )load( + "glMapNamedBuffer" ); + contextPtr->glMapNamedBufferRange = ( delegate* )load( + "glMapNamedBufferRange" ); + contextPtr->glMemoryBarrierByRegion = ( delegate* )load( + "glMemoryBarrierByRegion" ); + contextPtr->glNamedBufferData = ( delegate* )load( + "glNamedBufferData" ); + contextPtr->glNamedBufferStorage = ( delegate* )load( + "glNamedBufferStorage" ); + contextPtr->glNamedBufferSubData = ( delegate* )load( + "glNamedBufferSubData" ); + contextPtr->glNamedFramebufferDrawBuffer = ( delegate* )load( + "glNamedFramebufferDrawBuffer" ); + contextPtr->glNamedFramebufferDrawBuffers = ( delegate* )load( + "glNamedFramebufferDrawBuffers" ); + contextPtr->glNamedFramebufferParameteri = ( delegate* )load( + "glNamedFramebufferParameteri" ); + contextPtr->glNamedFramebufferReadBuffer = ( delegate* )load( + "glNamedFramebufferReadBuffer" ); + contextPtr->glNamedFramebufferRenderbuffer = ( delegate* )load( + "glNamedFramebufferRenderbuffer" ); + contextPtr->glNamedFramebufferTexture = ( delegate* )load( + "glNamedFramebufferTexture" ); + contextPtr->glNamedFramebufferTextureLayer = ( delegate* )load( + "glNamedFramebufferTextureLayer" ); + contextPtr->glNamedRenderbufferStorage = ( delegate* )load( + "glNamedRenderbufferStorage" ); + contextPtr->glNamedRenderbufferStorageMultisample = ( delegate* )load( + "glNamedRenderbufferStorageMultisample" ); + contextPtr->glReadnPixels = ( delegate* )load( + "glReadnPixels" ); + contextPtr->glTextureBarrier = ( delegate* )load( + "glTextureBarrier" ); + contextPtr->glTextureBuffer = ( delegate* )load( + "glTextureBuffer" ); + contextPtr->glTextureBufferRange = ( delegate* )load( + "glTextureBufferRange" ); + contextPtr->glTextureParameterIiv = ( delegate* )load( + "glTextureParameterIiv" ); + contextPtr->glTextureParameterIuiv = ( delegate* )load( + "glTextureParameterIuiv" ); + contextPtr->glTextureParameterf = ( delegate* )load( + "glTextureParameterf" ); + contextPtr->glTextureParameterfv = ( delegate* )load( + "glTextureParameterfv" ); + contextPtr->glTextureParameteri = ( delegate* )load( + "glTextureParameteri" ); + contextPtr->glTextureParameteriv = ( delegate* )load( + "glTextureParameteriv" ); + contextPtr->glTextureStorage1D = ( delegate* )load( + "glTextureStorage1D" ); + contextPtr->glTextureStorage2D = ( delegate* )load( + "glTextureStorage2D" ); + contextPtr->glTextureStorage2DMultisample = ( delegate* )load( + "glTextureStorage2DMultisample" ); + contextPtr->glTextureStorage3D = ( delegate* )load( + "glTextureStorage3D" ); + contextPtr->glTextureStorage3DMultisample = ( delegate* )load( + "glTextureStorage3DMultisample" ); + contextPtr->glTextureSubImage1D = ( delegate* )load( + "glTextureSubImage1D" ); + contextPtr->glTextureSubImage2D = ( delegate* )load( + "glTextureSubImage2D" ); + contextPtr->glTextureSubImage3D = ( delegate* )load( + "glTextureSubImage3D" ); + contextPtr->glTransformFeedbackBufferBase = ( delegate* )load( + "glTransformFeedbackBufferBase" ); + contextPtr->glTransformFeedbackBufferRange = ( delegate* )load( + "glTransformFeedbackBufferRange" ); + contextPtr->glUnmapNamedBuffer = ( delegate* )load( + "glUnmapNamedBuffer" ); + contextPtr->glVertexArrayAttribBinding = ( delegate* )load( + "glVertexArrayAttribBinding" ); + contextPtr->glVertexArrayAttribFormat = ( delegate* )load( + "glVertexArrayAttribFormat" ); + contextPtr->glVertexArrayAttribIFormat = ( delegate* )load( + "glVertexArrayAttribIFormat" ); + contextPtr->glVertexArrayAttribLFormat = ( delegate* )load( + "glVertexArrayAttribLFormat" ); + contextPtr->glVertexArrayBindingDivisor = ( delegate* )load( + "glVertexArrayBindingDivisor" ); + contextPtr->glVertexArrayElementBuffer = ( delegate* )load( + "glVertexArrayElementBuffer" ); + contextPtr->glVertexArrayVertexBuffer = ( delegate* )load( + "glVertexArrayVertexBuffer" ); + contextPtr->glVertexArrayVertexBuffers = ( delegate* )load( + "glVertexArrayVertexBuffers" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.5 APIs" ); + } + + internal static unsafe void LoadGLcore46( + OpenglContext* contextPtr, + delegate* load ) + { + if( !core46 ) { + InternalIO.InternalAppendLog( + "The core version 4.6 is not supported." ); + throw new Exception( "Final Version" ); + } + + #region load + + contextPtr->glMultiDrawArraysIndirectCount = ( delegate* )load( + "glMultiDrawArraysIndirectCount" ); + contextPtr->glMultiDrawElementsIndirectCount = ( delegate* )load( + "glMultiDrawElementsIndirectCount" ); + contextPtr->glPolygonOffsetClamp = ( delegate* )load( + "glPolygonOffsetClamp" ); + contextPtr->glSpecializeShader = ( delegate* )load( + "glSpecializeShader" ); + + #endregion load + + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.6 APIs" ); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/glApiManagerConst.cs b/StgSharp.Common/Graphics/OpenGL/glApiManagerConst.cs new file mode 100644 index 00000000..f3ccd5c3 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glApiManagerConst.cs @@ -0,0 +1,688 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glApiManagerConst.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.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public static partial class glManager + { + + #region coreVersion + + private static bool core10 = false; + private static bool core11 = false; + private static bool core12 = false; + private static bool core13 = false; + private static bool core14 = false; + private static bool core15 = false; + private static bool core20 = false; + private static bool core21 = false; + private static bool core30 = false; + private static bool core31 = false; + private static bool core32 = false; + private static bool core33 = false; + private static bool core40 = false; + private static bool core41 = false; + private static bool core42 = false; + private static bool core43 = false; + private static bool core44 = false; + private static bool core45 = false; + private static bool core46 = false; + + #endregion + + #region extension + + private static bool _3DFX_tbuffer; + private static bool _3DFX_texture_compression_FXT1; + private static bool _4DFX_multisample; + private static bool AMD_blend_minmax_factor; + private static bool AMD_conservative_depth; + private static bool AMD_debug_output; + private static bool AMD_depth_clamp_separate; + private static bool AMD_draw_buffers_blend; + private static bool AMD_framebuffer_multisample_advanced; + private static bool AMD_framebuffer_sample_positions; + private static bool AMD_gcn_shader; + private static bool AMD_gpu_shader_half_float; + private static bool AMD_gpu_shader_int16; + private static bool AMD_gpu_shader_int64; + private static bool AMD_interleaved_elements; + private static bool AMD_multi_draw_indirect; + private static bool AMD_name_gen_delete; + private static bool AMD_occlusion_query_event; + private static bool AMD_performance_monitor; + private static bool AMD_pinned_memory; + private static bool AMD_query_buffer_object; + private static bool AMD_sample_positions; + private static bool AMD_seamless_cubemap_per_texture; + private static bool AMD_shader_atomic_counter_ops; + private static bool AMD_shader_ballot; + private static bool AMD_shader_explicit_vertex_parameter; + private static bool AMD_shader_gpu_shader_half_float_fetch; + private static bool AMD_shader_image_load_store_lod; + private static bool AMD_shader_stencil_export; + private static bool AMD_shader_trinary_minmax; + private static bool AMD_sparse_texture; + private static bool AMD_stencil_operation_extended; + private static bool AMD_texture_gather_bias_lod; + private static bool AMD_texture_texture4; + private static bool AMD_transform_feedback3_lines_triangles; + private static bool AMD_transform_feedback4; + private static bool AMD_vertex_shader_layer; + private static bool AMD_vertex_shader_tessellator; + private static bool AMD_vertex_shader_viewport_index; + private static bool APPLE_aux_depth_stencil; + private static bool APPLE_client_storage; + private static bool APPLE_element_array; + private static bool APPLE_fence; + private static bool APPLE_float_pixels; + private static bool APPLE_flush_buffer_range; + private static bool APPLE_object_purgeable; + private static bool APPLE_rgb_422; + private static bool APPLE_row_bytes; + private static bool APPLE_specular_vector; + private static bool APPLE_texture_range; + private static bool APPLE_transform_hint; + private static bool APPLE_vertex_array_object; + private static bool APPLE_vertex_array_range; + private static bool APPLE_vertex_program_evaluators; + private static bool APPLE_ycbcr_422; + private static bool ARB_arrays_of_arrays; + private static bool ARB_base_instance; + private static bool ARB_bindless_texture; + private static bool ARB_blend_func_extended; + private static bool ARB_buffer_storage; + private static bool ARB_cl_event; + private static bool ARB_clear_buffer_object; + private static bool ARB_clear_texture; + private static bool ARB_clip_control; + private static bool ARB_color_buffer_float; + private static bool ARB_compatibility; + private static bool ARB_compressed_texture_pixel_storage; + private static bool ARB_compute_shader; + private static bool ARB_compute_variable_group_size; + private static bool ARB_conditional_render_inverted; + private static bool ARB_conservative_depth; + private static bool ARB_copy_buffer; + private static bool ARB_copy_image; + private static bool ARB_cull_distance; + private static bool ARB_debug_output; + private static bool ARB_depth_buffer_float; + private static bool ARB_depth_clamp; + private static bool ARB_depth_texture; + private static bool ARB_derivative_control; + private static bool ARB_direct_state_access; + private static bool ARB_draw_buffers; + private static bool ARB_draw_buffers_blend; + private static bool ARB_draw_elements_base_vertex; + private static bool ARB_draw_indirect; + private static bool ARB_draw_instanced; + private static bool ARB_enhanced_layouts; + private static bool ARB_ES2_compatibility; + private static bool ARB_ES3_1_compatibility; + private static bool ARB_ES3_2_compatibility; + private static bool ARB_ES3_compatibility; + private static bool ARB_explicit_attrib_location; + private static bool ARB_explicit_uniform_location; + private static bool ARB_fragment_coord_conventions; + private static bool ARB_fragment_layer_viewport; + private static bool ARB_fragment_program; + private static bool ARB_fragment_program_shadow; + private static bool ARB_fragment_shader; + private static bool ARB_fragment_shader_interlock; + private static bool ARB_framebuffer_no_attachments; + private static bool ARB_framebuffer_object; + private static bool ARB_framebuffer_sRGB; + private static bool ARB_geometry_shader4; + private static bool ARB_get_program_binary; + private static bool ARB_get_texture_sub_image; + private static bool ARB_gl_spirv; + private static bool ARB_gpu_shader_fp64; + private static bool ARB_gpu_shader_int64; + private static bool ARB_gpu_shader5; + private static bool ARB_half_float_pixel; + private static bool ARB_half_float_vertex; + private static bool ARB_imaging; + private static bool ARB_indirect_parameters; + private static bool ARB_instanced_arrays; + private static bool ARB_internalformat_query; + private static bool ARB_internalformat_query2; + private static bool ARB_invalidate_subdata; + private static bool ARB_map_buffer_alignment; + private static bool ARB_map_buffer_range; + private static bool ARB_matrix_palette; + private static bool ARB_multi_bind; + private static bool ARB_multi_draw_indirect; + private static bool ARB_multisample; + private static bool ARB_multitexture; + private static bool ARB_occlusion_query; + private static bool ARB_occlusion_query2; + private static bool ARB_parallel_shader_compile; + private static bool ARB_pipeline_statistics_query; + private static bool ARB_pixel_buffer_object; + private static bool ARB_point_parameters; + private static bool ARB_point_sprite; + private static bool ARB_polygon_offset_clamp; + private static bool ARB_post_depth_coverage; + private static bool ARB_program_interface_query; + private static bool ARB_provoking_vertex; + private static bool ARB_query_buffer_object; + private static bool ARB_robust_buffer_access_behavior; + private static bool ARB_robustness; + private static bool ARB_robustness_isolation; + private static bool ARB_sample_locations; + private static bool ARB_sample_shading; + private static bool ARB_sampler_objects; + private static bool ARB_seamless_cube_map; + private static bool ARB_seamless_cubemap_per_texture; + private static bool ARB_separate_shader_objects; + private static bool ARB_shader_atomic_counter_ops; + private static bool ARB_shader_atomic_counters; + private static bool ARB_shader_ballot; + private static bool ARB_shader_bit_encoding; + private static bool ARB_shader_clock; + private static bool ARB_shader_draw_parameters; + private static bool ARB_shader_group_vote; + private static bool ARB_shader_image_load_store; + private static bool ARB_shader_image_size; + private static bool ARB_shader_objects; + private static bool ARB_shader_precision; + private static bool ARB_shader_stencil_export; + private static bool ARB_shader_storage_buffer_object; + private static bool ARB_shader_subroutine; + private static bool ARB_shader_texture_image_samples; + private static bool ARB_shader_texture_lod; + private static bool ARB_shader_viewport_layer_array; + private static bool ARB_shading_language_100; + private static bool ARB_shading_language_420pack; + private static bool ARB_shading_language_include; + private static bool ARB_shading_language_packing; + private static bool ARB_shadow; + private static bool ARB_shadow_ambient; + private static bool ARB_sparse_buffer; + private static bool ARB_sparse_texture; + private static bool ARB_sparse_texture_clamp; + private static bool ARB_sparse_texture2; + private static bool ARB_spirv_extensions; + private static bool ARB_stencil_texturing; + private static bool ARB_sync; + private static bool ARB_tessellation_shader; + private static bool ARB_texture_barrier; + private static bool ARB_texture_border_clamp; + private static bool ARB_texture_buffer_object; + private static bool ARB_texture_buffer_object_rgb32; + private static bool ARB_texture_buffer_range; + private static bool ARB_texture_compression; + private static bool ARB_texture_compression_bptc; + private static bool ARB_texture_compression_rgtc; + private static bool ARB_texture_cube_map; + private static bool ARB_texture_cube_map_array; + private static bool ARB_texture_env_add; + private static bool ARB_texture_env_combine; + private static bool ARB_texture_env_crossbar; + private static bool ARB_texture_env_dot3; + private static bool ARB_texture_filter_anisotropic; + private static bool ARB_texture_filter_minmax; + private static bool ARB_texture_float; + private static bool ARB_texture_gather; + private static bool ARB_texture_mirror_clamp_to_edge; + private static bool ARB_texture_mirrored_repeat; + private static bool ARB_texture_multisample; + private static bool ARB_texture_non_power_of_two; + private static bool ARB_texture_query_levels; + private static bool ARB_texture_query_lod; + private static bool ARB_texture_rectangle; + private static bool ARB_texture_rg; + private static bool ARB_texture_rgb10_a2ui; + private static bool ARB_texture_stencil8; + private static bool ARB_texture_storage; + private static bool ARB_texture_storage_multisample; + private static bool ARB_texture_swizzle; + private static bool ARB_texture_view; + private static bool ARB_timer_query; + private static bool ARB_transform_feedback_instanced; + private static bool ARB_transform_feedback_overflow_query; + private static bool ARB_transform_feedback2; + private static bool ARB_transform_feedback3; + private static bool ARB_transpose_matrix; + private static bool ARB_uniform_buffer_object; + private static bool ARB_vertex_array_bgra; + private static bool ARB_vertex_array_object; + private static bool ARB_vertex_attrib_64bit; + private static bool ARB_vertex_attrib_binding; + private static bool ARB_vertex_blend; + private static bool ARB_vertex_buffer_object; + private static bool ARB_vertex_program; + private static bool ARB_vertex_shader; + private static bool ARB_vertex_type_10f_11f_11f_rev; + private static bool ARB_vertex_type_2_10_10_10_rev; + private static bool ARB_viewport_array; + private static bool ARB_window_pos; + private static bool ATI_draw_buffers; + private static bool ATI_element_array; + private static bool ATI_envmap_bumpmap; + private static bool ATI_fragment_shader; + private static bool ATI_map_object_buffer; + private static bool ATI_meminfo; + private static bool ATI_pixel_format_float; + private static bool ATI_pn_triangles; + private static bool ATI_separate_stencil; + private static bool ATI_text_fragment_shader; + private static bool ATI_texture_env_combine3; + private static bool ATI_texture_float; + private static bool ATI_texture_mirror_once; + private static bool ATI_vertex_array_object; + private static bool ATI_vertex_attrib_array_object; + private static bool ATI_vertex_streams; + private static bool EXT_422_pixels; + private static bool EXT_abgr; + private static bool EXT_bgra; + private static bool EXT_bindable_uniform; + private static bool EXT_blend_color; + private static bool EXT_blend_equation_separate; + private static bool EXT_blend_func_separate; + private static bool EXT_blend_logic_op; + private static bool EXT_blend_minmax; + private static bool EXT_blend_subtract; + private static bool EXT_clip_volume_hint; + private static bool EXT_cmyka; + private static bool EXT_color_subtable; + private static bool EXT_compiled_vertex_array; + private static bool EXT_convolution; + private static bool EXT_coordinate_frame; + private static bool EXT_copy_texture; + private static bool EXT_cull_vertex; + private static bool EXT_debug_label; + private static bool EXT_debug_marker; + private static bool EXT_depth_bounds_test; + private static bool EXT_direct_state_access; + private static bool EXT_draw_buffers2; + private static bool EXT_draw_instanced; + private static bool EXT_draw_range_elements; + private static bool EXT_EGL_image_storage; + private static bool EXT_EGL_sync; + private static bool EXT_external_buffer; + private static bool EXT_fog_coord; + private static bool EXT_framebuffer_blit; + private static bool EXT_framebuffer_blit_layers; + private static bool EXT_framebuffer_multisample; + private static bool EXT_framebuffer_multisample_blit_scaled; + private static bool EXT_framebuffer_object; + private static bool EXT_framebuffer_sRGB; + private static bool EXT_geometry_shader4; + private static bool EXT_gpu_program_parameters; + private static bool EXT_gpu_shader4; + private static bool EXT_histogram; + private static bool EXT_index_array_formats; + private static bool EXT_index_func; + private static bool EXT_index_material; + private static bool EXT_index_texture; + private static bool EXT_light_texture; + private static bool EXT_memory_object; + private static bool EXT_memory_object_fd; + private static bool EXT_memory_object_win32; + private static bool EXT_misc_attribute; + private static bool EXT_multi_draw_arrays; + private static bool EXT_multisample; + private static bool EXT_multiview_tessellation_geometry_shader; + private static bool EXT_multiview_texture_multisample; + private static bool EXT_multiview_timer_query; + private static bool EXT_packed_depth_stencil; + private static bool EXT_packed_float; + private static bool EXT_packed_pixels; + private static bool EXT_paletted_texture; + private static bool EXT_pixel_buffer_object; + private static bool EXT_pixel_transform; + private static bool EXT_pixel_transform_color_table; + private static bool EXT_point_parameters; + private static bool EXT_polygon_offset; + private static bool EXT_polygon_offset_clamp; + private static bool EXT_post_depth_coverage; + private static bool EXT_provoking_vertex; + private static bool EXT_raster_multisample; + private static bool EXT_rescale_normal; + private static bool EXT_secondary_color; + private static bool EXT_semaphore; + private static bool EXT_semaphore_fd; + private static bool EXT_semaphore_win32; + private static bool EXT_separate_shader_objects; + private static bool EXT_separate_specular_color; + private static bool EXT_shader_framebuffer_fetch; + private static bool EXT_shader_framebuffer_fetch_non_coherent; + private static bool EXT_shader_image_load_formatted; + private static bool EXT_shader_image_load_store; + private static bool EXT_shader_integer_mix; + private static bool EXT_shader_samples_identical; + private static bool EXT_shadow_funcs; + private static bool EXT_shared_texture_palette; + private static bool EXT_sparse_texture2; + private static bool EXT_stencil_clear_tag; + private static bool EXT_stencil_two_side; + private static bool EXT_stencil_wrap; + private static bool EXT_subtexture; + private static bool EXT_texture; + private static bool EXT_texture_array; + private static bool EXT_texture_buffer_object; + private static bool EXT_texture_compression_latc; + private static bool EXT_texture_compression_rgtc; + private static bool EXT_texture_compression_s3tc; + private static bool EXT_texture_cube_map; + private static bool EXT_texture_env_add; + private static bool EXT_texture_env_combine; + private static bool EXT_texture_env_dot3; + private static bool EXT_texture_filter_anisotropic; + private static bool EXT_texture_filter_minmax; + private static bool EXT_texture_integer; + private static bool EXT_texture_lod_bias; + private static bool EXT_texture_mirror_clamp; + private static bool EXT_texture_object; + private static bool EXT_texture_perturb_normal; + private static bool EXT_texture_shadow_lod; + private static bool EXT_texture_shared_exponent; + private static bool EXT_texture_snorm; + private static bool EXT_texture_sRGB; + private static bool EXT_texture_sRGB_decode; + private static bool EXT_texture_sRGB_R8; + private static bool EXT_texture_sRGB_RG8; + private static bool EXT_texture_storage; + private static bool EXT_texture_swizzle; + private static bool EXT_texture3D; + private static bool EXT_timer_query; + private static bool EXT_transform_feedback; + private static bool EXT_vertex_array; + private static bool EXT_vertex_array_bgra; + private static bool EXT_vertex_attrib_64bit; + private static bool EXT_vertex_shader; + private static bool EXT_vertex_weighting; + private static bool EXT_win32_keyed_mutex; + private static bool EXT_window_rectangles; + private static bool EXT_x11_sync_object; + private static bool GREMEDY_frame_terminator; + private static bool GREMEDY_string_marker; + private static bool HP_convolution_border_modes; + private static bool HP_image_transform; + private static bool HP_occlusion_test; + private static bool HP_texture_lighting; + private static bool IBM_cull_vertex; + private static bool IBM_multimode_draw_arrays; + private static bool IBM_rasterpos_clip; + private static bool IBM_static_data; + private static bool IBM_texture_mirrored_repeat; + private static bool IBM_vertex_array_lists; + private static bool INGR_blend_func_separate; + private static bool INGR_color_clamp; + private static bool INGR_interlace_read; + private static bool INTEL_blackhole_render; + private static bool INTEL_conservative_rasterization; + private static bool INTEL_fragment_shader_ordering; + private static bool INTEL_framebuffer_CMAA; + private static bool INTEL_map_texture; + private static bool INTEL_parallel_arrays; + private static bool INTEL_performance_query; + private static bool KHR_blend_equation_advanced; + private static bool KHR_blend_equation_advanced_coherent; + private static bool KHR_context_flush_control; + private static bool KHR_debug; + private static bool KHR_no_error; + private static bool KHR_parallel_shader_compile; + private static bool KHR_robust_buffer_access_behavior; + private static bool KHR_robustness; + private static bool KHR_shader_subgroup; + private static bool KHR_texture_compression_astc_hdr; + private static bool KHR_texture_compression_astc_ldr; + private static bool KHR_texture_compression_astc_sliced_3d; + private static bool MESA_framebuffer_flip_x; + private static bool MESA_framebuffer_flip_y; + private static bool MESA_framebuffer_swap_xy; + private static bool MESA_pack_invert; + private static bool MESA_program_binary_formats; + private static bool MESA_resize_buffers; + private static bool MESA_shader_integer_functions; + private static bool MESA_tile_raster_order; + private static bool MESA_window_pos; + private static bool MESA_ycbcr_texture; + private static bool MESAX_texture_stack; + private static bool NV_alpha_to_coverage_dither_control; + private static bool NV_bindless_multi_draw_indirect; + private static bool NV_bindless_multi_draw_indirect_count; + private static bool NV_bindless_texture; + private static bool NV_blend_equation_advanced; + private static bool NV_blend_equation_advanced_coherent; + private static bool NV_blend_minmax_factor; + private static bool NV_blend_square; + private static bool NV_clip_space_w_scaling; + private static bool NV_command_list; + private static bool NV_compute_program5; + private static bool NV_compute_shader_derivatives; + private static bool NV_conditional_render; + private static bool NV_conservative_raster; + private static bool NV_conservative_raster_dilate; + private static bool NV_conservative_raster_pre_snap; + private static bool NV_conservative_raster_pre_snap_triangles; + private static bool NV_conservative_raster_underestimation; + private static bool NV_copy_depth_to_color; + private static bool NV_copy_image; + private static bool NV_deep_texture3D; + private static bool NV_depth_buffer_float; + private static bool NV_depth_clamp; + private static bool NV_draw_texture; + private static bool NV_draw_vulkan_image; + private static bool NV_evaluators; + private static bool NV_explicit_multisample; + private static bool NV_fence; + private static bool NV_fill_rectangle; + private static bool NV_float_buffer; + private static bool NV_fog_distance; + private static bool NV_fragment_coverage_to_color; + private static bool NV_fragment_program; + private static bool NV_fragment_program_option; + private static bool NV_fragment_program2; + private static bool NV_fragment_program4; + private static bool NV_fragment_shader_barycentric; + private static bool NV_fragment_shader_interlock; + private static bool NV_framebuffer_mixed_samples; + private static bool NV_framebuffer_multisample_coverage; + private static bool NV_geometry_program4; + private static bool NV_geometry_shader_passthrough; + private static bool NV_geometry_shader4; + private static bool NV_gpu_multicast; + private static bool NV_gpu_program4; + private static bool NV_gpu_program5; + private static bool NV_gpu_program5_mem_extended; + private static bool NV_gpu_shader5; + private static bool NV_half_float; + private static bool NV_internalformat_sample_query; + private static bool NV_light_max_exponent; + private static bool NV_memory_attachment; + private static bool NV_memory_object_sparse; + private static bool NV_mesh_shader; + private static bool NV_multisample_coverage; + private static bool NV_multisample_filter_hint; + private static bool NV_occlusion_query; + private static bool NV_packed_depth_stencil; + private static bool NV_parameter_buffer_object; + private static bool NV_parameter_buffer_object2; + private static bool NV_path_rendering; + private static bool NV_path_rendering_shared_edge; + private static bool NV_pixel_data_range; + private static bool NV_point_sprite; + private static bool NV_present_video; + private static bool NV_primitive_restart; + private static bool NV_primitive_shading_rate; + private static bool NV_query_resource; + private static bool NV_query_resource_tag; + private static bool NV_register_combiners; + private static bool NV_register_combiners2; + private static bool NV_representative_fragment_test; + private static bool NV_robustness_video_memory_purge; + private static bool NV_sample_locations; + private static bool NV_sample_mask_override_coverage; + private static bool NV_scissor_exclusive; + private static bool NV_shader_atomic_counters; + private static bool NV_shader_atomic_float; + private static bool NV_shader_atomic_float64; + private static bool NV_shader_atomic_fp16_vector; + private static bool NV_shader_atomic_int64; + private static bool NV_shader_buffer_load; + private static bool NV_shader_buffer_store; + private static bool NV_shader_storage_buffer_object; + private static bool NV_shader_subgroup_partitioned; + private static bool NV_shader_texture_footprint; + private static bool NV_shader_thread_group; + private static bool NV_shader_thread_shuffle; + private static bool NV_shading_rate_image; + private static bool NV_stereo_view_rendering; + private static bool NV_tessellation_program5; + private static bool NV_texgen_emboss; + private static bool NV_texgen_reflection; + private static bool NV_texture_barrier; + private static bool NV_texture_compression_vtc; + private static bool NV_texture_env_combine4; + private static bool NV_texture_expand_normal; + private static bool NV_texture_multisample; + private static bool NV_texture_rectangle; + private static bool NV_texture_rectangle_compressed; + private static bool NV_texture_shader; + private static bool NV_texture_shader2; + private static bool NV_texture_shader3; + private static bool NV_timeline_semaphore; + private static bool NV_transform_feedback; + private static bool NV_transform_feedback2; + private static bool NV_uniform_buffer_std430_layout; + private static bool NV_uniform_buffer_unified_memory; + private static bool NV_vdpau_interop; + private static bool NV_vdpau_interop2; + private static bool NV_vertex_array_range; + private static bool NV_vertex_array_range2; + private static bool NV_vertex_attrib_integer_64bit; + private static bool NV_vertex_buffer_unified_memory; + private static bool NV_vertex_program; + private static bool NV_vertex_program1_1; + private static bool NV_vertex_program2; + private static bool NV_vertex_program2_option; + private static bool NV_vertex_program3; + private static bool NV_vertex_program4; + private static bool NV_video_capture; + private static bool NV_viewport_array2; + private static bool NV_viewport_swizzle; + private static bool NVX_blend_equation_advanced_multi_draw_buffers; + private static bool NVX_conditional_render; + private static bool NVX_gpu_memory_info; + private static bool NVX_gpu_multicast2; + private static bool NVX_linked_gpu_multicast; + private static bool NVX_progress_fence; + private static bool OES_byte_coordinates; + private static bool OES_compressed_paletted_texture; + private static bool OES_fixed_point; + private static bool OES_query_matrix; + private static bool OES_read_format; + private static bool OES_single_precision; + private static bool OML_interlace; + private static bool OML_resample; + private static bool OML_subsample; + private static bool OVR_multiview; + private static bool OVR_multiview2; + private static bool PGI_misc_hints; + private static bool PGI_vertex_hints; + private static bool REND_screen_coordinates; + private static bool S3_s3tc; + private static bool SGI_color_matrix; + private static bool SGI_color_table; + private static bool SGI_texture_color_table; + private static bool SGIS_detail_texture; + private static bool SGIS_fog_function; + private static bool SGIS_generate_mipmap; + private static bool SGIS_multisample; + private static bool SGIS_pixel_texture; + private static bool SGIS_point_line_texgen; + private static bool SGIS_point_parameters; + private static bool SGIS_sharpen_texture; + private static bool SGIS_texture_border_clamp; + private static bool SGIS_texture_color_mask; + private static bool SGIS_texture_edge_clamp; + private static bool SGIS_texture_filter4; + private static bool SGIS_texture_lod; + private static bool SGIS_texture_select; + private static bool SGIS_texture4D; + private static bool SGIX_async; + private static bool SGIX_async_histogram; + private static bool SGIX_async_pixel; + private static bool SGIX_blend_alpha_minmax; + private static bool SGIX_calligraphic_fragment; + private static bool SGIX_clipmap; + private static bool SGIX_convolution_accuracy; + private static bool SGIX_depth_pass_instrument; + private static bool SGIX_depth_texture; + private static bool SGIX_flush_raster; + private static bool SGIX_fog_offset; + private static bool SGIX_fragment_lighting; + private static bool SGIX_framezoom; + private static bool SGIX_igloo_interface; + private static bool SGIX_instruments; + private static bool SGIX_interlace; + private static bool SGIX_ir_instrument1; + private static bool SGIX_list_priority; + private static bool SGIX_pixel_texture; + private static bool SGIX_pixel_tiles; + private static bool SGIX_polynomial_ffd; + private static bool SGIX_reference_plane; + private static bool SGIX_resample; + private static bool SGIX_scalebias_hint; + private static bool SGIX_shadow; + private static bool SGIX_shadow_ambient; + private static bool SGIX_sprite; + private static bool SGIX_subsample; + private static bool SGIX_tag_sample_buffer; + private static bool SGIX_texture_add_env; + private static bool SGIX_texture_coordinate_clamp; + private static bool SGIX_texture_lod_bias; + private static bool SGIX_texture_multi_buffer; + private static bool SGIX_texture_scale_bias; + private static bool SGIX_vertex_preclip; + private static bool SGIX_ycrcb; + private static bool SGIX_ycrcb_subsample; + private static bool SGIX_ycrcba; + private static bool SUN_convolution_border_modes; + private static bool SUN_global_alpha; + private static bool SUN_mesh_array; + private static bool SUN_slice_accum; + private static bool SUN_triangle_list; + private static bool SUN_vertex; + private static bool SUNX_constant_data; + private static bool WIN_phong_shading; + private static bool WIN_specular_fog; + + #endregion + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glClampf.cs b/StgSharp.Common/Graphics/OpenGL/glClampf.cs new file mode 100644 index 00000000..9151b666 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glClampf.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glClampf.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.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal +{ + /// + /// OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + /// + [StructLayout( LayoutKind.Sequential )] + public struct GLclampf + { + + public float value; + + public GLclampf( float a ) + { + value = a; + } + + public static explicit operator float( GLclampf v ) + { + return v.value; + } + + public static explicit operator GLclampf( float v ) + { + return new GLclampf( v ); + } + + } + + /// + /// OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + /// [0,1]. + /// + [StructLayout( LayoutKind.Sequential )] + public struct GLclampd + { + + public double value; + + public GLclampd( double a ) + { + value = a; + } + + public static explicit operator double( GLclampd v ) + { + return v.value; + } + + public static explicit operator GLclampd( double v ) + { + return new GLclampd( v ); + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glConst.cs b/StgSharp.Common/Graphics/OpenGL/glConst.cs new file mode 100644 index 00000000..7f2f8355 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glConst.cs @@ -0,0 +1,4862 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glConst.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.Drawing; + +namespace StgSharp.Graphics.OpenGL +{ + //rename types in style of glConst + + public static unsafe class glConst + { + + #region glfw + + public const int GLFW_VERSION_MAJOR = 3; + public const int GLFW_VERSION_MINOR = 3; + public const int GLFW_VERSION_REVISION = 8; + public const int GLFW_TRUE = 1; + public const int GLFW_FALSE = 0; + public const int GLFW_RELEASE = 0; + public const int GLFW_PRESS = 1; + public const int GLFW_REPEAT = 2; + public const int GLFW_HAT_CENTERED = 0; + public const int GLFW_HAT_UP = 1; + public const int GLFW_HAT_RIGHT = 2; + public const int GLFW_HAT_DOWN = 4; + public const int GLFW_HAT_LEFT = 8; + public const int GLFW_HAT_RIGHT_UP = GLFW_HAT_RIGHT | GLFW_HAT_UP; + public const int GLFW_HAT_RIGHT_DOWN = GLFW_HAT_RIGHT | GLFW_HAT_DOWN; + public const int GLFW_HAT_LEFT_UP = GLFW_HAT_LEFT | GLFW_HAT_UP; + public const int GLFW_HAT_LEFT_DOWN = GLFW_HAT_LEFT | GLFW_HAT_DOWN; + public const int GLFW_KEY_UNKNOWN = -1; + public const int GLFW_KEY_SPACE = 32; + public const int GLFW_KEY_APOSTROPHE = 39; + public const int GLFW_KEY_COMMA = 44; + public const int GLFW_KEY_MINUS = 45; + public const int GLFW_KEY_PERIOD = 46; + public const int GLFW_KEY_SLASH = 47; + public const int GLFW_KEY_0 = 48; + public const int GLFW_KEY_1 = 49; + public const int GLFW_KEY_2 = 50; + public const int GLFW_KEY_3 = 51; + public const int GLFW_KEY_4 = 52; + public const int GLFW_KEY_5 = 53; + public const int GLFW_KEY_6 = 54; + public const int GLFW_KEY_7 = 55; + public const int GLFW_KEY_8 = 56; + public const int GLFW_KEY_9 = 57; + public const int GLFW_KEY_SEMICOLON = 59; + public const int GLFW_KEY_EQUAL = 61; + public const int GLFW_KEY_A = 65; + public const int GLFW_KEY_B = 66; + public const int GLFW_KEY_C = 67; + public const int GLFW_KEY_D = 68; + public const int GLFW_KEY_E = 69; + public const int GLFW_KEY_F = 70; + public const int GLFW_KEY_G = 71; + public const int GLFW_KEY_H = 72; + public const int GLFW_KEY_I = 73; + public const int GLFW_KEY_J = 74; + public const int GLFW_KEY_K = 75; + public const int GLFW_KEY_L = 76; + public const int GLFW_KEY_M = 77; + public const int GLFW_KEY_N = 78; + public const int GLFW_KEY_O = 79; + public const int GLFW_KEY_P = 80; + public const int GLFW_KEY_Q = 81; + public const int GLFW_KEY_R = 82; + public const int GLFW_KEY_S = 83; + public const int GLFW_KEY_T = 84; + public const int GLFW_KEY_U = 85; + public const int GLFW_KEY_V = 86; + public const int GLFW_KEY_W = 87; + public const int GLFW_KEY_X = 88; + public const int GLFW_KEY_Y = 89; + public const int GLFW_KEY_Z = 90; + public const int GLFW_KEY_LEFT_BRACKET = 91; + public const int GLFW_KEY_BACKSLASH = 92; + public const int GLFW_KEY_RIGHT_BRACKET = 93; + public const int GLFW_KEY_GRAVE_ACCENT = 96; + public const int GLFW_KEY_WORLD_1 = 161; + public const int GLFW_KEY_WORLD_2 = 162; + public const int GLFW_KEY_ESCAPE = 256; + public const int GLFW_KEY_ENTER = 257; + public const int GLFW_KEY_TAB = 258; + public const int GLFW_KEY_BACKSPACE = 259; + public const int GLFW_KEY_INSERT = 260; + public const int GLFW_KEY_DELETE = 261; + public const int GLFW_KEY_RIGHT = 262; + public const int GLFW_KEY_LEFT = 263; + public const int GLFW_KEY_DOWN = 264; + public const int GLFW_KEY_UP = 265; + public const int GLFW_KEY_PAGE_UP = 266; + public const int GLFW_KEY_PAGE_DOWN = 267; + public const int GLFW_KEY_HOME = 268; + public const int GLFW_KEY_END = 269; + public const int GLFW_KEY_CAPS_LOCK = 280; + public const int GLFW_KEY_SCROLL_LOCK = 281; + public const int GLFW_KEY_NUM_LOCK = 282; + public const int GLFW_KEY_PRINT_SCREEN = 283; + public const int GLFW_KEY_PAUSE = 284; + public const int GLFW_KEY_F1 = 290; + public const int GLFW_KEY_F2 = 291; + public const int GLFW_KEY_F3 = 292; + public const int GLFW_KEY_F4 = 293; + public const int GLFW_KEY_F5 = 294; + public const int GLFW_KEY_F6 = 295; + public const int GLFW_KEY_F7 = 296; + public const int GLFW_KEY_F8 = 297; + public const int GLFW_KEY_F9 = 298; + public const int GLFW_KEY_F10 = 299; + public const int GLFW_KEY_F11 = 300; + public const int GLFW_KEY_F12 = 301; + public const int GLFW_KEY_F13 = 302; + public const int GLFW_KEY_F14 = 303; + public const int GLFW_KEY_F15 = 304; + public const int GLFW_KEY_F16 = 305; + public const int GLFW_KEY_F17 = 306; + public const int GLFW_KEY_F18 = 307; + public const int GLFW_KEY_F19 = 308; + public const int GLFW_KEY_F20 = 309; + public const int GLFW_KEY_F21 = 310; + public const int GLFW_KEY_F22 = 311; + public const int GLFW_KEY_F23 = 312; + public const int GLFW_KEY_F24 = 313; + public const int GLFW_KEY_F25 = 314; + public const int GLFW_KEY_KP_0 = 320; + public const int GLFW_KEY_KP_1 = 321; + public const int GLFW_KEY_KP_2 = 322; + public const int GLFW_KEY_KP_3 = 323; + public const int GLFW_KEY_KP_4 = 324; + public const int GLFW_KEY_KP_5 = 325; + public const int GLFW_KEY_KP_6 = 326; + public const int GLFW_KEY_KP_7 = 327; + public const int GLFW_KEY_KP_8 = 328; + public const int GLFW_KEY_KP_9 = 329; + public const int GLFW_KEY_KP_DECIMAL = 330; + public const int GLFW_KEY_KP_DIVIDE = 331; + public const int GLFW_KEY_KP_MULTIPLY = 332; + public const int GLFW_KEY_KP_SUBTRACT = 333; + public const int GLFW_KEY_KP_ADD = 334; + public const int GLFW_KEY_KP_ENTER = 335; + public const int GLFW_KEY_KP_EQUAL = 336; + public const int GLFW_KEY_LEFT_SHIFT = 340; + public const int GLFW_KEY_LEFT_CONTROL = 341; + public const int GLFW_KEY_LEFT_ALT = 342; + public const int GLFW_KEY_LEFT_SUPER = 343; + public const int GLFW_KEY_RIGHT_SHIFT = 344; + public const int GLFW_KEY_RIGHT_CONTROL = 345; + public const int GLFW_KEY_RIGHT_ALT = 346; + public const int GLFW_KEY_RIGHT_SUPER = 347; + public const int GLFW_KEY_MENU = 348; + public const int GLFW_KEY_LAST = GLFW_KEY_MENU; + public const int GLFW_MOD_SHIFT = 0x0001; + public const int GLFW_MOD_CONTROL = 0x0002; + public const int GLFW_MOD_ALT = 0x0004; + public const int GLFW_MOD_SUPER = 0x0008; + public const int GLFW_MOD_CAPS_LOCK = 0x0010; + public const int GLFW_MOD_NUM_LOCK = 0x0020; + public const int GLFW_MOUSE_BUTTON_1 = 0; + public const int GLFW_MOUSE_BUTTON_2 = 1; + public const int GLFW_MOUSE_BUTTON_3 = 2; + public const int GLFW_MOUSE_BUTTON_4 = 3; + public const int GLFW_MOUSE_BUTTON_5 = 4; + public const int GLFW_MOUSE_BUTTON_6 = 5; + public const int GLFW_MOUSE_BUTTON_7 = 6; + public const int GLFW_MOUSE_BUTTON_8 = 7; + public const int GLFW_MOUSE_BUTTON_LAST = GLFW_MOUSE_BUTTON_8; + public const int GLFW_MOUSE_BUTTON_LEFT = GLFW_MOUSE_BUTTON_1; + public const int GLFW_MOUSE_BUTTON_RIGHT = GLFW_MOUSE_BUTTON_2; + public const int GLFW_MOUSE_BUTTON_MIDDLE = GLFW_MOUSE_BUTTON_3; + public const int GLFW_JOYSTICK_1 = 0; + public const int GLFW_JOYSTICK_2 = 1; + public const int GLFW_JOYSTICK_3 = 2; + public const int GLFW_JOYSTICK_4 = 3; + public const int GLFW_JOYSTICK_5 = 4; + public const int GLFW_JOYSTICK_6 = 5; + public const int GLFW_JOYSTICK_7 = 6; + public const int GLFW_JOYSTICK_8 = 7; + public const int GLFW_JOYSTICK_9 = 8; + public const int GLFW_JOYSTICK_10 = 9; + public const int GLFW_JOYSTICK_11 = 10; + public const int GLFW_JOYSTICK_12 = 11; + public const int GLFW_JOYSTICK_13 = 12; + public const int GLFW_JOYSTICK_14 = 13; + public const int GLFW_JOYSTICK_15 = 14; + public const int GLFW_JOYSTICK_16 = 15; + public const int GLFW_JOYSTICK_LAST = GLFW_JOYSTICK_16; + public const int GLFW_GAMEPAD_BUTTON_A = 0; + public const int GLFW_GAMEPAD_BUTTON_B = 1; + public const int GLFW_GAMEPAD_BUTTON_X = 2; + public const int GLFW_GAMEPAD_BUTTON_Y = 3; + public const int GLFW_GAMEPAD_BUTTON_LEFT_BUMPER = 4; + public const int GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER = 5; + public const int GLFW_GAMEPAD_BUTTON_BACK = 6; + public const int GLFW_GAMEPAD_BUTTON_START = 7; + public const int GLFW_GAMEPAD_BUTTON_GUIDE = 8; + public const int GLFW_GAMEPAD_BUTTON_LEFT_THUMB = 9; + public const int GLFW_GAMEPAD_BUTTON_RIGHT_THUMB = 10; + public const int GLFW_GAMEPAD_BUTTON_DPAD_UP = 11; + public const int GLFW_GAMEPAD_BUTTON_DPAD_RIGHT = 12; + public const int GLFW_GAMEPAD_BUTTON_DPAD_DOWN = 13; + public const int GLFW_GAMEPAD_BUTTON_DPAD_LEFT = 14; + public const int GLFW_GAMEPAD_BUTTON_LAST = GLFW_GAMEPAD_BUTTON_DPAD_LEFT; + public const int GLFW_GAMEPAD_BUTTON_CROSS = GLFW_GAMEPAD_BUTTON_A; + public const int GLFW_GAMEPAD_BUTTON_CIRCLE = GLFW_GAMEPAD_BUTTON_B; + public const int GLFW_GAMEPAD_BUTTON_SQUARE = GLFW_GAMEPAD_BUTTON_X; + public const int GLFW_GAMEPAD_BUTTON_TRIANGLE = GLFW_GAMEPAD_BUTTON_Y; + public const int GLFW_GAMEPAD_AXIS_LEFT_X = 0; + public const int GLFW_GAMEPAD_AXIS_LEFT_Y = 1; + public const int GLFW_GAMEPAD_AXIS_RIGHT_X = 2; + public const int GLFW_GAMEPAD_AXIS_RIGHT_Y = 3; + public const int GLFW_GAMEPAD_AXIS_LEFT_TRIGGER = 4; + public const int GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER = 5; + public const int GLFW_GAMEPAD_AXIS_LAST = GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER; + public const int GLFW_NO_ERROR = 0; + public const int GLFW_NOT_INITIALIZED = 0x00010001; + public const int GLFW_NO_CURRENT_CONTEXT = 0x00010002; + public const int GLFW_INVALID_ENUM = 0x00010003; + public const int GLFW_INVALID_VALUE = 0x00010004; + public const int GLFW_OUT_OF_MEMORY = 0x00010005; + public const int GLFW_API_UNAVAILABLE = 0x00010006; + public const int GLFW_VERSION_UNAVAILABLE = 0x00010007; + public const int GLFW_PLATFORM_ERROR = 0x00010008; + public const int GLFW_FORMAT_UNAVAILABLE = 0x00010009; + public const int GLFW_NO_WINDOW_CONTEXT = 0x0001000A; + public const int GLFW_FOCUSED = 0x00020001; + public const int GLFW_ICONIFIED = 0x00020002; + public const int GLFW_RESIZABLE = 0x00020003; + public const int GLFW_VISIBLE = 0x00020004; + public const int GLFW_DECORATED = 0x00020005; + public const int GLFW_AUTO_ICONIFY = 0x00020006; + public const int GLFW_FLOATING = 0x00020007; + public const int GLFW_MAXIMIZED = 0x00020008; + public const int GLFW_CENTER_CURSOR = 0x00020009; + public const int GLFW_TRANSPARENT_FRAMEBUFFER = 0x0002000A; + public const int GLFW_HOVERED = 0x0002000B; + public const int GLFW_FOCUS_ON_SHOW = 0x0002000C; + public const int GLFW_RED_BITS = 0x00021001; + public const int GLFW_GREEN_BITS = 0x00021002; + public const int GLFW_BLUE_BITS = 0x00021003; + public const int GLFW_ALPHA_BITS = 0x00021004; + public const int GLFW_DEPTH_BITS = 0x00021005; + public const int GLFW_STENCIL_BITS = 0x00021006; + public const int GLFW_ACCUM_RED_BITS = 0x00021007; + public const int GLFW_ACCUM_GREEN_BITS = 0x00021008; + public const int GLFW_ACCUM_BLUE_BITS = 0x00021009; + public const int GLFW_ACCUM_ALPHA_BITS = 0x0002100A; + public const int GLFW_AUX_BUFFERS = 0x0002100B; + public const int GLFW_STEREO = 0x0002100C; + public const int GLFW_SAMPLES = 0x0002100D; + public const int GLFW_SRGB_CAPABLE = 0x0002100E; + public const int GLFW_REFRESH_RATE = 0x0002100F; + public const int GLFW_DOUBLEBUFFER = 0x00021010; + public const int GLFW_CLIENT_API = 0x00022001; + public const int GLFW_CONTEXT_VERSION_MAJOR = 0x00022002; + public const int GLFW_CONTEXT_VERSION_MINOR = 0x00022003; + public const int GLFW_CONTEXT_REVISION = 0x00022004; + public const int GLFW_CONTEXT_ROBUSTNESS = 0x00022005; + public const int GLFW_OPENGL_FORWARD_COMPAT = 0x00022006; + public const int GLFW_OPENGL_DEBUG_CONTEXT = 0x00022007; + public const int GLFW_OPENGL_PROFILE = 0x00022008; + public const int GLFW_CONTEXT_RELEASE_BEHAVIOR = 0x00022009; + public const int GLFW_CONTEXT_NO_ERROR = 0x0002200A; + public const int GLFW_CONTEXT_CREATION_API = 0x0002200B; + public const int GLFW_SCALE_TO_MONITOR = 0x0002200C; + public const int GLFW_COCOA_RETINA_FRAMEBUFFER = 0x00023001; + public const int GLFW_COCOA_FRAME_NAME = 0x00023002; + public const int GLFW_COCOA_GRAPHICS_SWITCHING = 0x00023003; + public const int GLFW_X11_CLASS_NAME = 0x00024001; + public const int GLFW_X11_INSTANCE_NAME = 0x00024002; + public const int GLFW_NO_API = 0; + public const int GLFW_OPENGL_API = 0x00030001; + public const int GLFW_OPENGL_ES_API = 0x00030002; + public const int GLFW_NO_ROBUSTNESS = 0; + public const int GLFW_NO_RESET_NOTIFICATION = 0x00031001; + public const int GLFW_LOSE_CONTEXT_ON_RESET = 0x00031002; + public const int GLFW_OPENGL_ANY_PROFILE = 0; + public const int GLFW_OPENGL_CORE_PROFILE = 0x00032001; + public const int GLFW_OPENGL_COMPAT_PROFILE = 0x00032002; + public const int GLFW_CURSOR = 0x00033001; + public const int GLFW_STICKY_KEYS = 0x00033002; + public const int GLFW_STICKY_MOUSE_BUTTONS = 0x00033003; + public const int GLFW_LOCK_KEY_MODS = 0x00033004; + public const int GLFW_RAW_MOUSE_MOTION = 0x00033005; + public const int GLFW_CURSOR_NORMAL = 0x00034001; + public const int GLFW_CURSOR_HIDDEN = 0x00034002; + public const int GLFW_CURSOR_DISABLED = 0x00034003; + public const int GLFW_ANY_RELEASE_BEHAVIOR = 0; + public const int GLFW_RELEASE_BEHAVIOR_FLUSH = 0x00035001; + public const int GLFW_RELEASE_BEHAVIOR_NONE = 0x00035002; + public const int GLFW_NATIVE_CONTEXT_API = 0x00036001; + public const int GLFW_EGL_CONTEXT_API = 0x00036002; + public const int GLFW_OSMESA_CONTEXT_API = 0x00036003; + public const int GLFW_ARROW_CURSOR = 0x00036001; + public const int GLFW_IBEAM_CURSOR = 0x00036002; + public const int GLFW_CROSSHAIR_CURSOR = 0x00036003; + public const int GLFW_HAND_CURSOR = 0x00036004; + public const int GLFW_HRESIZE_CURSOR = 0x00036005; + public const int GLFW_VRESIZE_CURSOR = 0x00036006; + public const int GLFW_CONNECTED = 0x00040001; + public const int GLFW_DISCONNECTED = 0x00040002; + public const int GLFW_JOYSTICK_HAT_BUTTONS = 0x00050001; + public const int GLFW_COCOA_CHDIR_RESOURCES = 0x00051001; + public const int GLFW_COCOA_MENUBAR = 0x00051002; + public const int GLFW_DONT_CARE = -1; + + #endregion + + #region glad + + public const int _1PASS_EXT = 0x80A1; + public const int _1PASS_SGIS = 0x80A1; + public const int _2PASS_0_EXT = 0x80A2; + public const int _2PASS_0_SGIS = 0x80A2; + public const int _2PASS_1_EXT = 0x80A3; + public const int _2PASS_1_SGIS = 0x80A3; + public const int _2X_BIT_ATI = 0x00000001; + public const int _422_AVERAGE_EXT = 0x80CE; + public const int _422_EXT = 0x80CC; + public const int _422_REV_AVERAGE_EXT = 0x80CF; + public const int _422_REV_EXT = 0x80CD; + public const int _4PASS_0_EXT = 0x80A4; + public const int _4PASS_0_SGIS = 0x80A4; + public const int _4PASS_1_EXT = 0x80A5; + public const int _4PASS_1_SGIS = 0x80A5; + public const int _4PASS_2_EXT = 0x80A6; + public const int _4PASS_2_SGIS = 0x80A6; + public const int _4PASS_3_EXT = 0x80A7; + public const int _4PASS_3_SGIS = 0x80A7; + public const int _4X_BIT_ATI = 0x00000002; + public const int _8X_BIT_ATI = 0x00000004; + public const int ABGR_EXT = 0x8000; + public const int ACCUM_ADJACENT_PAIRS_NV = 0x90AD; + public const int ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x92D9; + public const int ACTIVE_ATTRIBUTES = 0x8B89; + public const int ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A; + public const int ACTIVE_PROGRAM = 0x8259; + public const int ACTIVE_PROGRAM_EXT = 0x8B8D; + public const int ACTIVE_RESOURCES = 0x92F5; + public const int ACTIVE_STENCIL_FACE_EXT = 0x8911; + public const int ACTIVE_SUBROUTINES = 0x8DE5; + public const int ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48; + public const int ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6; + public const int ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47; + public const int ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49; + public const int ACTIVE_TEXTURE = 0x84E0; + public const int ACTIVE_TEXTURE_ARB = 0x84E0; + public const int ACTIVE_UNIFORMS = 0x8B86; + public const int ACTIVE_UNIFORM_BLOCKS = 0x8A36; + public const int ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35; + public const int ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87; + public const int ACTIVE_VARIABLES = 0x9305; + public const int ACTIVE_VARYINGS_NV = 0x8C81; + public const int ACTIVE_VARYING_MAX_LENGTH_NV = 0x8C82; + public const int ACTIVE_VERTEX_UNITS_ARB = 0x86A5; + public const int ADD_ATI = 0x8963; + public const int ADD_SIGNED_ARB = 0x8574; + public const int ADD_SIGNED_EXT = 0x8574; + public const int ADJACENT_PAIRS_NV = 0x90AE; + public const int AFFINE_2D_NV = 0x9092; + public const int AFFINE_3D_NV = 0x9094; + public const int ALIASED_LINE_WIDTH_RANGE = 0x846E; + public const int ALLOW_DRAW_FRG_HINT_PGI = 0x1A210; + public const int ALLOW_DRAW_MEM_HINT_PGI = 0x1A211; + public const int ALLOW_DRAW_OBJ_HINT_PGI = 0x1A20E; + public const int ALLOW_DRAW_WIN_HINT_PGI = 0x1A20F; + public const uint ALL_BARRIER_BITS = 0xFFFFFFFF; + public const uint ALL_BARRIER_BITS_EXT = 0xFFFFFFFF; + public const int ALL_COMPLETED_NV = 0x84F2; + public const uint ALL_PIXELS_AMD = 0xFFFFFFFF; + public const uint ALL_SHADER_BITS = 0xFFFFFFFF; + public const int ALL_STATIC_DATA_IBM = 103060; + public const int ALPHA = 0x1906; + public const int ALPHA12_EXT = 0x803D; + public const int ALPHA16F_ARB = 0x881C; + public const int ALPHA16F_EXT = 0x881C; + public const int ALPHA16I_EXT = 0x8D8A; + public const int ALPHA16UI_EXT = 0x8D78; + public const int ALPHA16_EXT = 0x803E; + public const int ALPHA16_SNORM = 0x9018; + public const int ALPHA32F_ARB = 0x8816; + public const int ALPHA32F_EXT = 0x8816; + public const int ALPHA32I_EXT = 0x8D84; + public const int ALPHA32UI_EXT = 0x8D72; + public const int ALPHA4_EXT = 0x803B; + public const int ALPHA8I_EXT = 0x8D90; + public const int ALPHA8UI_EXT = 0x8D7E; + public const int ALPHA8_EXT = 0x803C; + public const int ALPHA8_SNORM = 0x9014; + public const int ALPHA_FLOAT16_APPLE = 0x881C; + public const int ALPHA_FLOAT16_ATI = 0x881C; + public const int ALPHA_FLOAT32_APPLE = 0x8816; + public const int ALPHA_FLOAT32_ATI = 0x8816; + public const int ALPHA_INTEGER_EXT = 0x8D97; + public const int ALPHA_MAX_CLAMP_INGR = 0x8567; + public const int ALPHA_MAX_SGIX = 0x8321; + public const int ALPHA_MIN_CLAMP_INGR = 0x8563; + public const int ALPHA_MIN_SGIX = 0x8320; + public const int ALPHA_REF_COMMAND_NV = 0x000F; + public const int ALPHA_SNORM = 0x9010; + public const int ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV = 0x934D; + public const int ALPHA_TO_COVERAGE_DITHER_DISABLE_NV = 0x934F; + public const int ALPHA_TO_COVERAGE_DITHER_ENABLE_NV = 0x934E; + public const int ALPHA_TO_COVERAGE_DITHER_MODE_NV = 0x92BF; + public const int ALREADY_SIGNALED = 0x911A; + public const int ALWAYS = 0x0207; + public const int ALWAYS_FAST_HINT_PGI = 0x1A20C; + public const int ALWAYS_SOFT_HINT_PGI = 0x1A20D; + public const int AND = 0x1501; + public const int AND_INVERTED = 0x1504; + public const int AND_REVERSE = 0x1502; + public const int ANY_SAMPLES_PASSED = 0x8C2F; + public const int ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A; + public const int ARC_TO_NV = 0xFE; + public const int ARRAY_BUFFER = 0x8892; + public const int ARRAY_BUFFER_ARB = 0x8892; + public const int ARRAY_BUFFER_BINDING = 0x8894; + public const int ARRAY_BUFFER_BINDING_ARB = 0x8894; + public const int ARRAY_ELEMENT_LOCK_COUNT_EXT = 0x81A9; + public const int ARRAY_ELEMENT_LOCK_FIRST_EXT = 0x81A8; + public const int ARRAY_OBJECT_BUFFER_ATI = 0x8766; + public const int ARRAY_OBJECT_OFFSET_ATI = 0x8767; + public const int ARRAY_SIZE = 0x92FB; + public const int ARRAY_STRIDE = 0x92FE; + public const int ASYNC_DRAW_PIXELS_SGIX = 0x835D; + public const int ASYNC_HISTOGRAM_SGIX = 0x832C; + public const int ASYNC_MARKER_SGIX = 0x8329; + public const int ASYNC_READ_PIXELS_SGIX = 0x835E; + public const int ASYNC_TEX_IMAGE_SGIX = 0x835C; + public const int ATOMIC_COUNTER_BARRIER_BIT = 0x00001000; + public const int ATOMIC_COUNTER_BARRIER_BIT_EXT = 0x00001000; + public const int ATOMIC_COUNTER_BUFFER = 0x92C0; + public const int ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = 0x92C5; + public const int ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = 0x92C6; + public const int ATOMIC_COUNTER_BUFFER_BINDING = 0x92C1; + public const int ATOMIC_COUNTER_BUFFER_DATA_SIZE = 0x92C4; + public const int ATOMIC_COUNTER_BUFFER_INDEX = 0x9301; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = 0x92CB; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = 0x92CA; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV = 0x959E; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV = 0x959F; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = 0x92C8; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x92C9; + public const int ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = 0x92C7; + public const int ATOMIC_COUNTER_BUFFER_SIZE = 0x92C3; + public const int ATOMIC_COUNTER_BUFFER_START = 0x92C2; + public const int ATTACHED_MEMORY_OBJECT_NV = 0x95A4; + public const int ATTACHED_MEMORY_OFFSET_NV = 0x95A5; + public const int ATTACHED_SHADERS = 0x8B85; + public const int ATTENUATION_EXT = 0x834D; + public const int ATTRIBUTE_ADDRESS_COMMAND_NV = 0x0009; + public const int ATTRIB_ARRAY_POINTER_NV = 0x8645; + public const int ATTRIB_ARRAY_SIZE_NV = 0x8623; + public const int ATTRIB_ARRAY_STRIDE_NV = 0x8624; + public const int ATTRIB_ARRAY_TYPE_NV = 0x8625; + public const int AUTO_GENERATE_MIPMAP = 0x8295; + public const int AUX_DEPTH_STENCIL_APPLE = 0x8A14; + public const int AVERAGE_EXT = 0x8335; + public const int AVERAGE_HP = 0x8160; + public const int BACK = 0x0405; + public const int BACK_LEFT = 0x0402; + public const int BACK_NORMALS_HINT_PGI = 0x1A223; + public const int BACK_PRIMARY_COLOR_NV = 0x8C77; + public const int BACK_RIGHT = 0x0403; + public const int BACK_SECONDARY_COLOR_NV = 0x8C78; + public const int BEVEL_NV = 0x90A6; + public const int BGR = 0x80E0; + public const int BGRA = 0x80E1; + public const int BGRA8_EXT = 0x93A1; + public const int BGRA_EXT = 0x80E1; + public const int BGRA_INTEGER = 0x8D9B; + public const int BGRA_INTEGER_EXT = 0x8D9B; + public const int BGR_EXT = 0x80E0; + public const int BGR_INTEGER = 0x8D9A; + public const int BGR_INTEGER_EXT = 0x8D9A; + public const int BIAS_BIT_ATI = 0x00000008; + public const int BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541; + public const int BINORMAL_ARRAY_EXT = 0x843A; + public const int BINORMAL_ARRAY_POINTER_EXT = 0x8443; + public const int BINORMAL_ARRAY_STRIDE_EXT = 0x8441; + public const int BINORMAL_ARRAY_TYPE_EXT = 0x8440; + public const int BLACKHOLE_RENDER_INTEL = 0x83FC; + public const int BLEND = 0x0BE2; + public const int BLEND_ADVANCED_COHERENT_KHR = 0x9285; + public const int BLEND_ADVANCED_COHERENT_NV = 0x9285; + public const int BLEND_COLOR = 0x8005; + public const int BLEND_COLOR_COMMAND_NV = 0x000B; + public const int BLEND_COLOR_EXT = 0x8005; + public const int BLEND_DST = 0x0BE0; + public const int BLEND_DST_ALPHA = 0x80CA; + public const int BLEND_DST_ALPHA_EXT = 0x80CA; + public const int BLEND_DST_RGB = 0x80C8; + public const int BLEND_DST_RGB_EXT = 0x80C8; + public const int BLEND_EQUATION = 0x8009; + public const int BLEND_EQUATION_ALPHA = 0x883D; + public const int BLEND_EQUATION_ALPHA_EXT = 0x883D; + public const int BLEND_EQUATION_EXT = 0x8009; + public const int BLEND_EQUATION_RGB = 0x8009; + public const int BLEND_EQUATION_RGB_EXT = 0x8009; + public const int BLEND_OVERLAP_NV = 0x9281; + public const int BLEND_PREMULTIPLIED_SRC_NV = 0x9280; + public const int BLEND_SRC = 0x0BE1; + public const int BLEND_SRC_ALPHA = 0x80CB; + public const int BLEND_SRC_ALPHA_EXT = 0x80CB; + public const int BLEND_SRC_RGB = 0x80C9; + public const int BLEND_SRC_RGB_EXT = 0x80C9; + public const int BLOCK_INDEX = 0x92FD; + public const int BLUE = 0x1905; + public const int BLUE_BIT_ATI = 0x00000004; + public const int BLUE_INTEGER = 0x8D96; + public const int BLUE_INTEGER_EXT = 0x8D96; + public const int BLUE_MAX_CLAMP_INGR = 0x8566; + public const int BLUE_MIN_CLAMP_INGR = 0x8562; + public const int BLUE_NV = 0x1905; + public const int BOLD_BIT_NV = 0x01; + public const int BOOL = 0x8B56; + public const int BOOL_ARB = 0x8B56; + public const int BOOL_VEC2 = 0x8B57; + public const int BOOL_VEC2_ARB = 0x8B57; + public const int BOOL_VEC3 = 0x8B58; + public const int BOOL_VEC3_ARB = 0x8B58; + public const int BOOL_VEC4 = 0x8B59; + public const int BOOL_VEC4_ARB = 0x8B59; + public const int BOUNDING_BOX_NV = 0x908D; + public const int BOUNDING_BOX_OF_BOUNDING_BOXES_NV = 0x909C; + public const int BUFFER = 0x82E0; + public const int BUFFER_ACCESS = 0x88BB; + public const int BUFFER_ACCESS_ARB = 0x88BB; + public const int BUFFER_ACCESS_FLAGS = 0x911F; + public const int BUFFER_BINDING = 0x9302; + public const int BUFFER_DATA_SIZE = 0x9303; + public const int BUFFER_FLUSHING_UNMAP_APPLE = 0x8A13; + public const int BUFFER_GPU_ADDRESS_NV = 0x8F1D; + public const int BUFFER_IMMUTABLE_STORAGE = 0x821F; + public const int BUFFER_MAPPED = 0x88BC; + public const int BUFFER_MAPPED_ARB = 0x88BC; + public const int BUFFER_MAP_LENGTH = 0x9120; + public const int BUFFER_MAP_OFFSET = 0x9121; + public const int BUFFER_MAP_POINTER = 0x88BD; + public const int BUFFER_MAP_POINTER_ARB = 0x88BD; + public const int BUFFER_OBJECT_APPLE = 0x85B3; + public const int BUFFER_OBJECT_EXT = 0x9151; + public const int BUFFER_SERIALIZED_MODIFY_APPLE = 0x8A12; + public const int BUFFER_SIZE = 0x8764; + public const int BUFFER_SIZE_ARB = 0x8764; + public const int BUFFER_STORAGE_FLAGS = 0x8220; + public const int BUFFER_UPDATE_BARRIER_BIT = 0x00000200; + public const int BUFFER_UPDATE_BARRIER_BIT_EXT = 0x00000200; + public const int BUFFER_USAGE = 0x8765; + public const int BUFFER_USAGE_ARB = 0x8765; + public const int BUFFER_VARIABLE = 0x92E5; + public const int BUMP_ENVMAP_ATI = 0x877B; + public const int BUMP_NUM_TEX_UNITS_ATI = 0x8777; + public const int BUMP_ROT_MATRIX_ATI = 0x8775; + public const int BUMP_ROT_MATRIX_SIZE_ATI = 0x8776; + public const int BUMP_TARGET_ATI = 0x877C; + public const int BUMP_TEX_UNITS_ATI = 0x8778; + public const int BYTE = 0x1400; + public const int CALLIGRAPHIC_FRAGMENT_SGIX = 0x8183; + public const int CAVEAT_SUPPORT = 0x82B8; + public const int CCW = 0x0901; + public const int CIRCULAR_CCW_ARC_TO_NV = 0xF8; + public const int CIRCULAR_CW_ARC_TO_NV = 0xFA; + public const int CIRCULAR_TANGENT_ARC_TO_NV = 0xFC; + public const int CLAMP_FRAGMENT_COLOR_ARB = 0x891B; + public const int CLAMP_READ_COLOR = 0x891C; + public const int CLAMP_READ_COLOR_ARB = 0x891C; + public const int CLAMP_TO_BORDER = 0x812D; + public const int CLAMP_TO_BORDER_ARB = 0x812D; + public const int CLAMP_TO_BORDER_SGIS = 0x812D; + public const int CLAMP_TO_EDGE = 0x812F; + public const int CLAMP_TO_EDGE_SGIS = 0x812F; + public const int CLAMP_VERTEX_COLOR_ARB = 0x891A; + public const int CLEAR = 0x1500; + public const int CLEAR_BUFFER = 0x82B4; + public const int CLEAR_TEXTURE = 0x9365; + public const int CLIENT_ACTIVE_TEXTURE_ARB = 0x84E1; + public const int CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000; + public const int CLIENT_STORAGE_BIT = 0x0200; + public const int CLIPPING_INPUT_PRIMITIVES = 0x82F6; + public const int CLIPPING_INPUT_PRIMITIVES_ARB = 0x82F6; + public const int CLIPPING_OUTPUT_PRIMITIVES = 0x82F7; + public const int CLIPPING_OUTPUT_PRIMITIVES_ARB = 0x82F7; + public const int CLIP_DEPTH_MODE = 0x935D; + public const int CLIP_DISTANCE0 = 0x3000; + public const int CLIP_DISTANCE1 = 0x3001; + public const int CLIP_DISTANCE2 = 0x3002; + public const int CLIP_DISTANCE3 = 0x3003; + public const int CLIP_DISTANCE4 = 0x3004; + public const int CLIP_DISTANCE5 = 0x3005; + public const int CLIP_DISTANCE6 = 0x3006; + public const int CLIP_DISTANCE7 = 0x3007; + public const int CLIP_DISTANCE_NV = 0x8C7A; + public const int CLIP_FAR_HINT_PGI = 0x1A221; + public const int CLIP_NEAR_HINT_PGI = 0x1A220; + public const int CLIP_ORIGIN = 0x935C; + public const int CLIP_VOLUME_CLIPPING_HINT_EXT = 0x80F0; + public const int CLOSE_PATH_NV = 0x00; + public const int CMYKA_EXT = 0x800D; + public const int CMYK_EXT = 0x800C; + public const int CND0_ATI = 0x896B; + public const int CND_ATI = 0x896A; + public const int COLOR = 0x1800; + public const int COLOR3_BIT_PGI = 0x00010000; + public const int COLOR4_BIT_PGI = 0x00020000; + public const int COLORBURN_KHR = 0x929A; + public const int COLORBURN_NV = 0x929A; + public const int COLORDODGE_KHR = 0x9299; + public const int COLORDODGE_NV = 0x9299; + public const int COLOR_ALPHA_PAIRING_ATI = 0x8975; + public const int COLOR_ARRAY_ADDRESS_NV = 0x8F23; + public const int COLOR_ARRAY_BUFFER_BINDING_ARB = 0x8898; + public const int COLOR_ARRAY_COUNT_EXT = 0x8084; + public const int COLOR_ARRAY_EXT = 0x8076; + public const int COLOR_ARRAY_LENGTH_NV = 0x8F2D; + public const int COLOR_ARRAY_LIST_IBM = 103072; + public const int COLOR_ARRAY_LIST_STRIDE_IBM = 103082; + public const int COLOR_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F7; + public const int COLOR_ARRAY_POINTER_EXT = 0x8090; + public const int COLOR_ARRAY_SIZE_EXT = 0x8081; + public const int COLOR_ARRAY_STRIDE_EXT = 0x8083; + public const int COLOR_ARRAY_TYPE_EXT = 0x8082; + public const int COLOR_ATTACHMENT0 = 0x8CE0; + public const int COLOR_ATTACHMENT0_EXT = 0x8CE0; + public const int COLOR_ATTACHMENT1 = 0x8CE1; + public const int COLOR_ATTACHMENT10 = 0x8CEA; + public const int COLOR_ATTACHMENT10_EXT = 0x8CEA; + public const int COLOR_ATTACHMENT11 = 0x8CEB; + public const int COLOR_ATTACHMENT11_EXT = 0x8CEB; + public const int COLOR_ATTACHMENT12 = 0x8CEC; + public const int COLOR_ATTACHMENT12_EXT = 0x8CEC; + public const int COLOR_ATTACHMENT13 = 0x8CED; + public const int COLOR_ATTACHMENT13_EXT = 0x8CED; + public const int COLOR_ATTACHMENT14 = 0x8CEE; + public const int COLOR_ATTACHMENT14_EXT = 0x8CEE; + public const int COLOR_ATTACHMENT15 = 0x8CEF; + public const int COLOR_ATTACHMENT15_EXT = 0x8CEF; + public const int COLOR_ATTACHMENT16 = 0x8CF0; + public const int COLOR_ATTACHMENT17 = 0x8CF1; + public const int COLOR_ATTACHMENT18 = 0x8CF2; + public const int COLOR_ATTACHMENT19 = 0x8CF3; + public const int COLOR_ATTACHMENT1_EXT = 0x8CE1; + public const int COLOR_ATTACHMENT2 = 0x8CE2; + public const int COLOR_ATTACHMENT20 = 0x8CF4; + public const int COLOR_ATTACHMENT21 = 0x8CF5; + public const int COLOR_ATTACHMENT22 = 0x8CF6; + public const int COLOR_ATTACHMENT23 = 0x8CF7; + public const int COLOR_ATTACHMENT24 = 0x8CF8; + public const int COLOR_ATTACHMENT25 = 0x8CF9; + public const int COLOR_ATTACHMENT26 = 0x8CFA; + public const int COLOR_ATTACHMENT27 = 0x8CFB; + public const int COLOR_ATTACHMENT28 = 0x8CFC; + public const int COLOR_ATTACHMENT29 = 0x8CFD; + public const int COLOR_ATTACHMENT2_EXT = 0x8CE2; + public const int COLOR_ATTACHMENT3 = 0x8CE3; + public const int COLOR_ATTACHMENT30 = 0x8CFE; + public const int COLOR_ATTACHMENT31 = 0x8CFF; + public const int COLOR_ATTACHMENT3_EXT = 0x8CE3; + public const int COLOR_ATTACHMENT4 = 0x8CE4; + public const int COLOR_ATTACHMENT4_EXT = 0x8CE4; + public const int COLOR_ATTACHMENT5 = 0x8CE5; + public const int COLOR_ATTACHMENT5_EXT = 0x8CE5; + public const int COLOR_ATTACHMENT6 = 0x8CE6; + public const int COLOR_ATTACHMENT6_EXT = 0x8CE6; + public const int COLOR_ATTACHMENT7 = 0x8CE7; + public const int COLOR_ATTACHMENT7_EXT = 0x8CE7; + public const int COLOR_ATTACHMENT8 = 0x8CE8; + public const int COLOR_ATTACHMENT8_EXT = 0x8CE8; + public const int COLOR_ATTACHMENT9 = 0x8CE9; + public const int COLOR_ATTACHMENT9_EXT = 0x8CE9; + public const int COLOR_BUFFER_BIT = 0x00004000; + public const int COLOR_CLEAR_UNCLAMPED_VALUE_ATI = 0x8835; + public const int COLOR_CLEAR_VALUE = 0x0C22; + public const int COLOR_COMPONENTS = 0x8283; + public const int COLOR_ENCODING = 0x8296; + public const int COLOR_FLOAT_APPLE = 0x8A0F; + public const int COLOR_INDEX12_EXT = 0x80E6; + public const int COLOR_INDEX16_EXT = 0x80E7; + public const int COLOR_INDEX1_EXT = 0x80E2; + public const int COLOR_INDEX2_EXT = 0x80E3; + public const int COLOR_INDEX4_EXT = 0x80E4; + public const int COLOR_INDEX8_EXT = 0x80E5; + public const int COLOR_LOGIC_OP = 0x0BF2; + public const int COLOR_MATRIX_SGI = 0x80B1; + public const int COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B2; + public const int COLOR_RENDERABLE = 0x8286; + public const int COLOR_SAMPLES_NV = 0x8E20; + public const int COLOR_SUM_ARB = 0x8458; + public const int COLOR_SUM_CLAMP_NV = 0x854F; + public const int COLOR_SUM_EXT = 0x8458; + public const int COLOR_TABLE_ALPHA_SIZE_SGI = 0x80DD; + public const int COLOR_TABLE_BIAS_SGI = 0x80D7; + public const int COLOR_TABLE_BLUE_SIZE_SGI = 0x80DC; + public const int COLOR_TABLE_FORMAT_SGI = 0x80D8; + public const int COLOR_TABLE_GREEN_SIZE_SGI = 0x80DB; + public const int COLOR_TABLE_INTENSITY_SIZE_SGI = 0x80DF; + public const int COLOR_TABLE_LUMINANCE_SIZE_SGI = 0x80DE; + public const int COLOR_TABLE_RED_SIZE_SGI = 0x80DA; + public const int COLOR_TABLE_SCALE_SGI = 0x80D6; + public const int COLOR_TABLE_SGI = 0x80D0; + public const int COLOR_TABLE_WIDTH_SGI = 0x80D9; + public const int COLOR_WRITEMASK = 0x0C23; + public const int COMBINE4_NV = 0x8503; + public const int COMBINER0_NV = 0x8550; + public const int COMBINER1_NV = 0x8551; + public const int COMBINER2_NV = 0x8552; + public const int COMBINER3_NV = 0x8553; + public const int COMBINER4_NV = 0x8554; + public const int COMBINER5_NV = 0x8555; + public const int COMBINER6_NV = 0x8556; + public const int COMBINER7_NV = 0x8557; + public const int COMBINER_AB_DOT_PRODUCT_NV = 0x8545; + public const int COMBINER_AB_OUTPUT_NV = 0x854A; + public const int COMBINER_BIAS_NV = 0x8549; + public const int COMBINER_CD_DOT_PRODUCT_NV = 0x8546; + public const int COMBINER_CD_OUTPUT_NV = 0x854B; + public const int COMBINER_COMPONENT_USAGE_NV = 0x8544; + public const int COMBINER_INPUT_NV = 0x8542; + public const int COMBINER_MAPPING_NV = 0x8543; + public const int COMBINER_MUX_SUM_NV = 0x8547; + public const int COMBINER_SCALE_NV = 0x8548; + public const int COMBINER_SUM_OUTPUT_NV = 0x854C; + public const int COMBINE_ALPHA_ARB = 0x8572; + public const int COMBINE_ALPHA_EXT = 0x8572; + public const int COMBINE_ARB = 0x8570; + public const int COMBINE_EXT = 0x8570; + public const int COMBINE_RGB_ARB = 0x8571; + public const int COMBINE_RGB_EXT = 0x8571; + public const int COMMAND_BARRIER_BIT = 0x00000040; + public const int COMMAND_BARRIER_BIT_EXT = 0x00000040; + public const int COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x884E; + public const int COMPARE_REF_TO_TEXTURE = 0x884E; + public const int COMPARE_R_TO_TEXTURE_ARB = 0x884E; + public const int COMPATIBLE_SUBROUTINES = 0x8E4B; + public const int COMPILE_STATUS = 0x8B81; + public const int COMPLETION_STATUS_ARB = 0x91B1; + public const int COMPLETION_STATUS_KHR = 0x91B1; + public const int COMPRESSED_ALPHA_ARB = 0x84E9; + public const int COMPRESSED_INTENSITY_ARB = 0x84EC; + public const int COMPRESSED_LUMINANCE_ALPHA_ARB = 0x84EB; + public const int COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C72; + public const int COMPRESSED_LUMINANCE_ARB = 0x84EA; + public const int COMPRESSED_LUMINANCE_LATC1_EXT = 0x8C70; + public const int COMPRESSED_R11_EAC = 0x9270; + public const int COMPRESSED_RED = 0x8225; + public const int COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD; + public const int COMPRESSED_RED_RGTC1 = 0x8DBB; + public const int COMPRESSED_RED_RGTC1_EXT = 0x8DBB; + public const int COMPRESSED_RG = 0x8226; + public const int COMPRESSED_RG11_EAC = 0x9272; + public const int COMPRESSED_RGB = 0x84ED; + public const int COMPRESSED_RGB8_ETC2 = 0x9274; + public const int COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276; + public const int COMPRESSED_RGBA = 0x84EE; + public const int COMPRESSED_RGBA8_ETC2_EAC = 0x9278; + public const int COMPRESSED_RGBA_ARB = 0x84EE; + public const int COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB; + public const int COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8; + public const int COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9; + public const int COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA; + public const int COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC; + public const int COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD; + public const int COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0; + public const int COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1; + public const int COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2; + public const int COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3; + public const int COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4; + public const int COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5; + public const int COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6; + public const int COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7; + public const int COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C; + public const int COMPRESSED_RGBA_BPTC_UNORM_ARB = 0x8E8C; + public const int COMPRESSED_RGBA_FXT1_3DFX = 0x86B1; + public const int COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1; + public const int COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2; + public const int COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3; + public const int COMPRESSED_RGB_ARB = 0x84ED; + public const int COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E; + public const int COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = 0x8E8E; + public const int COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F; + public const int COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = 0x8E8F; + public const int COMPRESSED_RGB_FXT1_3DFX = 0x86B0; + public const int COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0; + public const int COMPRESSED_RG_RGTC2 = 0x8DBD; + public const int COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C73; + public const int COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = 0x8C71; + public const int COMPRESSED_SIGNED_R11_EAC = 0x9271; + public const int COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE; + public const int COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC; + public const int COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC; + public const int COMPRESSED_SIGNED_RG11_EAC = 0x9273; + public const int COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE; + public const int COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B; + public const int COMPRESSED_SLUMINANCE_EXT = 0x8C4A; + public const int COMPRESSED_SRGB = 0x8C48; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6; + public const int COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7; + public const int COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279; + public const int COMPRESSED_SRGB8_ETC2 = 0x9275; + public const int COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277; + public const int COMPRESSED_SRGB_ALPHA = 0x8C49; + public const int COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D; + public const int COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = 0x8E8D; + public const int COMPRESSED_SRGB_ALPHA_EXT = 0x8C49; + public const int COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D; + public const int COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E; + public const int COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F; + public const int COMPRESSED_SRGB_EXT = 0x8C48; + public const int COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C; + public const int COMPRESSED_TEXTURE_FORMATS = 0x86A3; + public const int COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A3; + public const int COMPUTE_PROGRAM_NV = 0x90FB; + public const int COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x90FC; + public const int COMPUTE_SHADER = 0x91B9; + public const int COMPUTE_SHADER_BIT = 0x00000020; + public const int COMPUTE_SHADER_INVOCATIONS = 0x82F5; + public const int COMPUTE_SHADER_INVOCATIONS_ARB = 0x82F5; + public const int COMPUTE_SUBROUTINE = 0x92ED; + public const int COMPUTE_SUBROUTINE_UNIFORM = 0x92F3; + public const int COMPUTE_TEXTURE = 0x82A0; + public const int COMPUTE_WORK_GROUP_SIZE = 0x8267; + public const int COMP_BIT_ATI = 0x00000002; + public const int CONDITION_SATISFIED = 0x911C; + public const int CONFORMANT_NV = 0x9374; + public const int CONIC_CURVE_TO_NV = 0x1A; + public const int CONJOINT_NV = 0x9284; + public const int CONSERVATIVE_RASTERIZATION_INTEL = 0x83FE; + public const int CONSERVATIVE_RASTERIZATION_NV = 0x9346; + public const int CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV = 0x937B; + public const int CONSERVATIVE_RASTER_DILATE_NV = 0x9379; + public const int CONSERVATIVE_RASTER_DILATE_RANGE_NV = 0x937A; + public const int CONSERVATIVE_RASTER_MODE_NV = 0x954D; + public const int CONSERVATIVE_RASTER_MODE_POST_SNAP_NV = 0x954E; + public const int CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV = 0x9550; + public const int CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV = 0x954F; + public const int CONSERVE_MEMORY_HINT_PGI = 0x1A1FD; + public const int CONSTANT_ALPHA = 0x8003; + public const int CONSTANT_ALPHA_EXT = 0x8003; + public const int CONSTANT_ARB = 0x8576; + public const int CONSTANT_BORDER_HP = 0x8151; + public const int CONSTANT_COLOR = 0x8001; + public const int CONSTANT_COLOR0_NV = 0x852A; + public const int CONSTANT_COLOR1_NV = 0x852B; + public const int CONSTANT_COLOR_EXT = 0x8001; + public const int CONSTANT_EXT = 0x8576; + public const int CONST_EYE_NV = 0x86E5; + public const int CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002; + public const int CONTEXT_CORE_PROFILE_BIT = 0x00000001; + public const int CONTEXT_FLAGS = 0x821E; + public const int CONTEXT_FLAG_DEBUG_BIT = 0x00000002; + public const int CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001; + public const int CONTEXT_FLAG_NO_ERROR_BIT = 0x00000008; + public const int CONTEXT_FLAG_NO_ERROR_BIT_KHR = 0x00000008; + public const int CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004; + public const int CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004; + public const int CONTEXT_LOST = 0x0507; + public const int CONTEXT_PROFILE_MASK = 0x9126; + public const int CONTEXT_RELEASE_BEHAVIOR = 0x82FB; + public const int CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC; + public const int CONTEXT_ROBUST_ACCESS = 0x90F3; + public const int CONTINUOUS_AMD = 0x9007; + public const int CONTRAST_NV = 0x92A1; + public const int CONVEX_HULL_NV = 0x908B; + public const int CONVOLUTION_1D_EXT = 0x8010; + public const int CONVOLUTION_2D_EXT = 0x8011; + public const int CONVOLUTION_BORDER_COLOR_HP = 0x8154; + public const int CONVOLUTION_BORDER_MODE_EXT = 0x8013; + public const int CONVOLUTION_FILTER_BIAS_EXT = 0x8015; + public const int CONVOLUTION_FILTER_SCALE_EXT = 0x8014; + public const int CONVOLUTION_FORMAT_EXT = 0x8017; + public const int CONVOLUTION_HEIGHT_EXT = 0x8019; + public const int CONVOLUTION_HINT_SGIX = 0x8316; + public const int CONVOLUTION_WIDTH_EXT = 0x8018; + public const int CON_0_ATI = 0x8941; + public const int CON_10_ATI = 0x894B; + public const int CON_11_ATI = 0x894C; + public const int CON_12_ATI = 0x894D; + public const int CON_13_ATI = 0x894E; + public const int CON_14_ATI = 0x894F; + public const int CON_15_ATI = 0x8950; + public const int CON_16_ATI = 0x8951; + public const int CON_17_ATI = 0x8952; + public const int CON_18_ATI = 0x8953; + public const int CON_19_ATI = 0x8954; + public const int CON_1_ATI = 0x8942; + public const int CON_20_ATI = 0x8955; + public const int CON_21_ATI = 0x8956; + public const int CON_22_ATI = 0x8957; + public const int CON_23_ATI = 0x8958; + public const int CON_24_ATI = 0x8959; + public const int CON_25_ATI = 0x895A; + public const int CON_26_ATI = 0x895B; + public const int CON_27_ATI = 0x895C; + public const int CON_28_ATI = 0x895D; + public const int CON_29_ATI = 0x895E; + public const int CON_2_ATI = 0x8943; + public const int CON_30_ATI = 0x895F; + public const int CON_31_ATI = 0x8960; + public const int CON_3_ATI = 0x8944; + public const int CON_4_ATI = 0x8945; + public const int CON_5_ATI = 0x8946; + public const int CON_6_ATI = 0x8947; + public const int CON_7_ATI = 0x8948; + public const int CON_8_ATI = 0x8949; + public const int CON_9_ATI = 0x894A; + public const int COORD_REPLACE_ARB = 0x8862; + public const int COORD_REPLACE_NV = 0x8862; + public const int COPY = 0x1503; + public const int COPY_INVERTED = 0x150C; + public const int COPY_READ_BUFFER = 0x8F36; + public const int COPY_READ_BUFFER_BINDING = 0x8F36; + public const int COPY_WRITE_BUFFER = 0x8F37; + public const int COPY_WRITE_BUFFER_BINDING = 0x8F37; + public const int COUNTER_RANGE_AMD = 0x8BC1; + public const int COUNTER_TYPE_AMD = 0x8BC0; + public const int COUNT_DOWN_NV = 0x9089; + public const int COUNT_UP_NV = 0x9088; + public const int COVERAGE_MODULATION_NV = 0x9332; + public const int COVERAGE_MODULATION_TABLE_NV = 0x9331; + public const int COVERAGE_MODULATION_TABLE_SIZE_NV = 0x9333; + public const int CUBIC_CURVE_TO_NV = 0x0C; + public const int CUBIC_EXT = 0x8334; + public const int CUBIC_HP = 0x815F; + public const int CULL_FACE = 0x0B44; + public const int CULL_FACE_MODE = 0x0B45; + public const int CULL_FRAGMENT_NV = 0x86E7; + public const int CULL_MODES_NV = 0x86E0; + public const int CULL_VERTEX_EXT = 0x81AA; + public const int CULL_VERTEX_EYE_POSITION_EXT = 0x81AB; + public const int CULL_VERTEX_IBM = 103050; + public const int CULL_VERTEX_OBJECT_POSITION_EXT = 0x81AC; + public const int CURRENT_ATTRIB_NV = 0x8626; + public const int CURRENT_BINORMAL_EXT = 0x843C; + public const int CURRENT_FOG_COORDINATE_EXT = 0x8453; + public const int CURRENT_MATRIX_ARB = 0x8641; + public const int CURRENT_MATRIX_INDEX_ARB = 0x8845; + public const int CURRENT_MATRIX_NV = 0x8641; + public const int CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640; + public const int CURRENT_MATRIX_STACK_DEPTH_NV = 0x8640; + public const int CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865; + public const int CURRENT_PALETTE_MATRIX_ARB = 0x8843; + public const int CURRENT_PROGRAM = 0x8B8D; + public const int CURRENT_QUERY = 0x8865; + public const int CURRENT_QUERY_ARB = 0x8865; + public const int CURRENT_RASTER_NORMAL_SGIX = 0x8406; + public const int CURRENT_SECONDARY_COLOR_EXT = 0x8459; + public const int CURRENT_TANGENT_EXT = 0x843B; + public const int CURRENT_TIME_NV = 0x8E28; + public const int CURRENT_VERTEX_ATTRIB = 0x8626; + public const int CURRENT_VERTEX_ATTRIB_ARB = 0x8626; + public const int CURRENT_VERTEX_EXT = 0x87E2; + public const int CURRENT_VERTEX_WEIGHT_EXT = 0x850B; + public const int CURRENT_WEIGHT_ARB = 0x86A8; + public const int CW = 0x0900; + public const int D3D12_FENCE_VALUE_EXT = 0x9595; + public const int DARKEN_KHR = 0x9297; + public const int DARKEN_NV = 0x9297; + public const int DATA_BUFFER_AMD = 0x9151; + public const int DEBUG_CALLBACK_FUNCTION = 0x8244; + public const int DEBUG_CALLBACK_FUNCTION_ARB = 0x8244; + public const int DEBUG_CALLBACK_USER_PARAM = 0x8245; + public const int DEBUG_CALLBACK_USER_PARAM_ARB = 0x8245; + public const int DEBUG_CATEGORY_API_ERROR_AMD = 0x9149; + public const int DEBUG_CATEGORY_APPLICATION_AMD = 0x914F; + public const int DEBUG_CATEGORY_DEPRECATION_AMD = 0x914B; + public const int DEBUG_CATEGORY_OTHER_AMD = 0x9150; + public const int DEBUG_CATEGORY_PERFORMANCE_AMD = 0x914D; + public const int DEBUG_CATEGORY_SHADER_COMPILER_AMD = 0x914E; + public const int DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = 0x914C; + public const int DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = 0x914A; + public const int DEBUG_GROUP_STACK_DEPTH = 0x826D; + public const int DEBUG_LOGGED_MESSAGES = 0x9145; + public const int DEBUG_LOGGED_MESSAGES_AMD = 0x9145; + public const int DEBUG_LOGGED_MESSAGES_ARB = 0x9145; + public const int DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243; + public const int DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x8243; + public const int DEBUG_OUTPUT = 0x92E0; + public const int DEBUG_OUTPUT_SYNCHRONOUS = 0x8242; + public const int DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x8242; + public const int DEBUG_SEVERITY_HIGH = 0x9146; + public const int DEBUG_SEVERITY_HIGH_AMD = 0x9146; + public const int DEBUG_SEVERITY_HIGH_ARB = 0x9146; + public const int DEBUG_SEVERITY_LOW = 0x9148; + public const int DEBUG_SEVERITY_LOW_AMD = 0x9148; + public const int DEBUG_SEVERITY_LOW_ARB = 0x9148; + public const int DEBUG_SEVERITY_MEDIUM = 0x9147; + public const int DEBUG_SEVERITY_MEDIUM_AMD = 0x9147; + public const int DEBUG_SEVERITY_MEDIUM_ARB = 0x9147; + public const int DEBUG_SEVERITY_NOTIFICATION = 0x826B; + public const int DEBUG_SOURCE_API = 0x8246; + public const int DEBUG_SOURCE_API_ARB = 0x8246; + public const int DEBUG_SOURCE_APPLICATION = 0x824A; + public const int DEBUG_SOURCE_APPLICATION_ARB = 0x824A; + public const int DEBUG_SOURCE_OTHER = 0x824B; + public const int DEBUG_SOURCE_OTHER_ARB = 0x824B; + public const int DEBUG_SOURCE_SHADER_COMPILER = 0x8248; + public const int DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248; + public const int DEBUG_SOURCE_THIRD_PARTY = 0x8249; + public const int DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249; + public const int DEBUG_SOURCE_WINDOW_SYSTEM = 0x8247; + public const int DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247; + public const int DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824D; + public const int DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D; + public const int DEBUG_TYPE_ERROR = 0x824C; + public const int DEBUG_TYPE_ERROR_ARB = 0x824C; + public const int DEBUG_TYPE_MARKER = 0x8268; + public const int DEBUG_TYPE_OTHER = 0x8251; + public const int DEBUG_TYPE_OTHER_ARB = 0x8251; + public const int DEBUG_TYPE_PERFORMANCE = 0x8250; + public const int DEBUG_TYPE_PERFORMANCE_ARB = 0x8250; + public const int DEBUG_TYPE_POP_GROUP = 0x826A; + public const int DEBUG_TYPE_PORTABILITY = 0x824F; + public const int DEBUG_TYPE_PORTABILITY_ARB = 0x824F; + public const int DEBUG_TYPE_PUSH_GROUP = 0x8269; + public const int DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x824E; + public const int DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E; + public const int DECODE_EXT = 0x8A49; + public const int DECR = 0x1E03; + public const int DECR_WRAP = 0x8508; + public const int DECR_WRAP_EXT = 0x8508; + public const int DEDICATED_MEMORY_OBJECT_EXT = 0x9581; + public const int DEFORMATIONS_MASK_SGIX = 0x8196; + public const int DELETE_STATUS = 0x8B80; + public const int DEPENDENT_AR_TEXTURE_2D_NV = 0x86E9; + public const int DEPENDENT_GB_TEXTURE_2D_NV = 0x86EA; + public const int DEPENDENT_HILO_TEXTURE_2D_NV = 0x8858; + public const int DEPENDENT_RGB_TEXTURE_3D_NV = 0x8859; + public const int DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = 0x885A; + public const int DEPTH = 0x1801; + public const int DEPTH24_STENCIL8 = 0x88F0; + public const int DEPTH24_STENCIL8_EXT = 0x88F0; + public const int DEPTH32F_STENCIL8 = 0x8CAD; + public const int DEPTH32F_STENCIL8_NV = 0x8DAC; + public const int DEPTH_ATTACHMENT = 0x8D00; + public const int DEPTH_ATTACHMENT_EXT = 0x8D00; + public const int DEPTH_BOUNDS_EXT = 0x8891; + public const int DEPTH_BOUNDS_TEST_EXT = 0x8890; + public const int DEPTH_BUFFER_BIT = 0x00000100; + public const int DEPTH_BUFFER_FLOAT_MODE_NV = 0x8DAF; + public const int DEPTH_CLAMP = 0x864F; + public const int DEPTH_CLAMP_FAR_AMD = 0x901F; + public const int DEPTH_CLAMP_NEAR_AMD = 0x901E; + public const int DEPTH_CLAMP_NV = 0x864F; + public const int DEPTH_CLEAR_VALUE = 0x0B73; + public const int DEPTH_COMPONENT = 0x1902; + public const int DEPTH_COMPONENT16 = 0x81A5; + public const int DEPTH_COMPONENT16_ARB = 0x81A5; + public const int DEPTH_COMPONENT16_SGIX = 0x81A5; + public const int DEPTH_COMPONENT24 = 0x81A6; + public const int DEPTH_COMPONENT24_ARB = 0x81A6; + public const int DEPTH_COMPONENT24_SGIX = 0x81A6; + public const int DEPTH_COMPONENT32 = 0x81A7; + public const int DEPTH_COMPONENT32F = 0x8CAC; + public const int DEPTH_COMPONENT32F_NV = 0x8DAB; + public const int DEPTH_COMPONENT32_ARB = 0x81A7; + public const int DEPTH_COMPONENT32_SGIX = 0x81A7; + public const int DEPTH_COMPONENTS = 0x8284; + public const int DEPTH_FUNC = 0x0B74; + public const int DEPTH_RANGE = 0x0B70; + public const int DEPTH_RENDERABLE = 0x8287; + public const int DEPTH_SAMPLES_NV = 0x932D; + public const int DEPTH_STENCIL = 0x84F9; + public const int DEPTH_STENCIL_ATTACHMENT = 0x821A; + public const int DEPTH_STENCIL_EXT = 0x84F9; + public const int DEPTH_STENCIL_NV = 0x84F9; + public const int DEPTH_STENCIL_TEXTURE_MODE = 0x90EA; + public const int DEPTH_STENCIL_TO_BGRA_NV = 0x886F; + public const int DEPTH_STENCIL_TO_RGBA_NV = 0x886E; + public const int DEPTH_TEST = 0x0B71; + public const int DEPTH_TEXTURE_MODE_ARB = 0x884B; + public const int DEPTH_WRITEMASK = 0x0B72; + public const int DETACHED_BUFFERS_NV = 0x95AB; + public const int DETACHED_MEMORY_INCARNATION_NV = 0x95A9; + public const int DETACHED_TEXTURES_NV = 0x95AA; + public const int DETAIL_TEXTURE_2D_BINDING_SGIS = 0x8096; + public const int DETAIL_TEXTURE_2D_SGIS = 0x8095; + public const int DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x809C; + public const int DETAIL_TEXTURE_LEVEL_SGIS = 0x809A; + public const int DETAIL_TEXTURE_MODE_SGIS = 0x809B; + public const int DEVICE_LUID_EXT = 0x9599; + public const int DEVICE_NODE_MASK_EXT = 0x959A; + public const int DEVICE_UUID_EXT = 0x9597; + public const int DIFFERENCE_KHR = 0x929E; + public const int DIFFERENCE_NV = 0x929E; + public const int DISCARD_ATI = 0x8763; + public const int DISCARD_NV = 0x8530; + public const int DISCRETE_AMD = 0x9006; + public const int DISJOINT_NV = 0x9283; + public const int DISPATCH_INDIRECT_BUFFER = 0x90EE; + public const int DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF; + public const int DISTANCE_ATTENUATION_EXT = 0x8129; + public const int DISTANCE_ATTENUATION_SGIS = 0x8129; + public const int DITHER = 0x0BD0; + public const int DONT_CARE = 0x1100; + public const int DOT2_ADD_ATI = 0x896C; + public const int DOT3_ATI = 0x8966; + public const int DOT3_RGBA_ARB = 0x86AF; + public const int DOT3_RGBA_EXT = 0x8741; + public const int DOT3_RGB_ARB = 0x86AE; + public const int DOT3_RGB_EXT = 0x8740; + public const int DOT4_ATI = 0x8967; + public const int DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = 0x885D; + public const int DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = 0x86F3; + public const int DOT_PRODUCT_DEPTH_REPLACE_NV = 0x86ED; + public const int DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = 0x86F1; + public const int DOT_PRODUCT_NV = 0x86EC; + public const int DOT_PRODUCT_PASS_THROUGH_NV = 0x885B; + public const int DOT_PRODUCT_REFLECT_CUBE_MAP_NV = 0x86F2; + public const int DOT_PRODUCT_TEXTURE_1D_NV = 0x885C; + public const int DOT_PRODUCT_TEXTURE_2D_NV = 0x86EE; + public const int DOT_PRODUCT_TEXTURE_3D_NV = 0x86EF; + public const int DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = 0x86F0; + public const int DOT_PRODUCT_TEXTURE_RECTANGLE_NV = 0x864E; + public const int DOUBLE = 0x140A; + public const int DOUBLEBUFFER = 0x0C32; + public const int DOUBLE_MAT2 = 0x8F46; + public const int DOUBLE_MAT2_EXT = 0x8F46; + public const int DOUBLE_MAT2x3 = 0x8F49; + public const int DOUBLE_MAT2x3_EXT = 0x8F49; + public const int DOUBLE_MAT2x4 = 0x8F4A; + public const int DOUBLE_MAT2x4_EXT = 0x8F4A; + public const int DOUBLE_MAT3 = 0x8F47; + public const int DOUBLE_MAT3_EXT = 0x8F47; + public const int DOUBLE_MAT3x2 = 0x8F4B; + public const int DOUBLE_MAT3x2_EXT = 0x8F4B; + public const int DOUBLE_MAT3x4 = 0x8F4C; + public const int DOUBLE_MAT3x4_EXT = 0x8F4C; + public const int DOUBLE_MAT4 = 0x8F48; + public const int DOUBLE_MAT4_EXT = 0x8F48; + public const int DOUBLE_MAT4x2 = 0x8F4D; + public const int DOUBLE_MAT4x2_EXT = 0x8F4D; + public const int DOUBLE_MAT4x3 = 0x8F4E; + public const int DOUBLE_MAT4x3_EXT = 0x8F4E; + public const int DOUBLE_VEC2 = 0x8FFC; + public const int DOUBLE_VEC2_EXT = 0x8FFC; + public const int DOUBLE_VEC3 = 0x8FFD; + public const int DOUBLE_VEC3_EXT = 0x8FFD; + public const int DOUBLE_VEC4 = 0x8FFE; + public const int DOUBLE_VEC4_EXT = 0x8FFE; + public const int DRAW_ARRAYS_COMMAND_NV = 0x0003; + public const int DRAW_ARRAYS_INSTANCED_COMMAND_NV = 0x0007; + public const int DRAW_ARRAYS_STRIP_COMMAND_NV = 0x0005; + public const int DRAW_BUFFER = 0x0C01; + public const int DRAW_BUFFER0 = 0x8825; + public const int DRAW_BUFFER0_ARB = 0x8825; + public const int DRAW_BUFFER0_ATI = 0x8825; + public const int DRAW_BUFFER1 = 0x8826; + public const int DRAW_BUFFER10 = 0x882F; + public const int DRAW_BUFFER10_ARB = 0x882F; + public const int DRAW_BUFFER10_ATI = 0x882F; + public const int DRAW_BUFFER11 = 0x8830; + public const int DRAW_BUFFER11_ARB = 0x8830; + public const int DRAW_BUFFER11_ATI = 0x8830; + public const int DRAW_BUFFER12 = 0x8831; + public const int DRAW_BUFFER12_ARB = 0x8831; + public const int DRAW_BUFFER12_ATI = 0x8831; + public const int DRAW_BUFFER13 = 0x8832; + public const int DRAW_BUFFER13_ARB = 0x8832; + public const int DRAW_BUFFER13_ATI = 0x8832; + public const int DRAW_BUFFER14 = 0x8833; + public const int DRAW_BUFFER14_ARB = 0x8833; + public const int DRAW_BUFFER14_ATI = 0x8833; + public const int DRAW_BUFFER15 = 0x8834; + public const int DRAW_BUFFER15_ARB = 0x8834; + public const int DRAW_BUFFER15_ATI = 0x8834; + public const int DRAW_BUFFER1_ARB = 0x8826; + public const int DRAW_BUFFER1_ATI = 0x8826; + public const int DRAW_BUFFER2 = 0x8827; + public const int DRAW_BUFFER2_ARB = 0x8827; + public const int DRAW_BUFFER2_ATI = 0x8827; + public const int DRAW_BUFFER3 = 0x8828; + public const int DRAW_BUFFER3_ARB = 0x8828; + public const int DRAW_BUFFER3_ATI = 0x8828; + public const int DRAW_BUFFER4 = 0x8829; + public const int DRAW_BUFFER4_ARB = 0x8829; + public const int DRAW_BUFFER4_ATI = 0x8829; + public const int DRAW_BUFFER5 = 0x882A; + public const int DRAW_BUFFER5_ARB = 0x882A; + public const int DRAW_BUFFER5_ATI = 0x882A; + public const int DRAW_BUFFER6 = 0x882B; + public const int DRAW_BUFFER6_ARB = 0x882B; + public const int DRAW_BUFFER6_ATI = 0x882B; + public const int DRAW_BUFFER7 = 0x882C; + public const int DRAW_BUFFER7_ARB = 0x882C; + public const int DRAW_BUFFER7_ATI = 0x882C; + public const int DRAW_BUFFER8 = 0x882D; + public const int DRAW_BUFFER8_ARB = 0x882D; + public const int DRAW_BUFFER8_ATI = 0x882D; + public const int DRAW_BUFFER9 = 0x882E; + public const int DRAW_BUFFER9_ARB = 0x882E; + public const int DRAW_BUFFER9_ATI = 0x882E; + public const int DRAW_ELEMENTS_COMMAND_NV = 0x0002; + public const int DRAW_ELEMENTS_INSTANCED_COMMAND_NV = 0x0006; + public const int DRAW_ELEMENTS_STRIP_COMMAND_NV = 0x0004; + public const int DRAW_FRAMEBUFFER = 0x8CA9; + public const int DRAW_FRAMEBUFFER_BINDING = 0x8CA6; + public const int DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CA6; + public const int DRAW_FRAMEBUFFER_EXT = 0x8CA9; + public const int DRAW_INDIRECT_ADDRESS_NV = 0x8F41; + public const int DRAW_INDIRECT_BUFFER = 0x8F3F; + public const int DRAW_INDIRECT_BUFFER_BINDING = 0x8F43; + public const int DRAW_INDIRECT_LENGTH_NV = 0x8F42; + public const int DRAW_INDIRECT_UNIFIED_NV = 0x8F40; + public const int DRAW_PIXELS_APPLE = 0x8A0A; + public const int DRIVER_UUID_EXT = 0x9598; + public const int DSDT8_MAG8_INTENSITY8_NV = 0x870B; + public const int DSDT8_MAG8_NV = 0x870A; + public const int DSDT8_NV = 0x8709; + public const int DSDT_MAG_INTENSITY_NV = 0x86DC; + public const int DSDT_MAG_NV = 0x86F6; + public const int DSDT_MAG_VIB_NV = 0x86F7; + public const int DSDT_NV = 0x86F5; + public const int DST_ALPHA = 0x0304; + public const int DST_ATOP_NV = 0x928F; + public const int DST_COLOR = 0x0306; + public const int DST_IN_NV = 0x928B; + public const int DST_NV = 0x9287; + public const int DST_OUT_NV = 0x928D; + public const int DST_OVER_NV = 0x9289; + public const int DS_BIAS_NV = 0x8716; + public const int DS_SCALE_NV = 0x8710; + public const int DT_BIAS_NV = 0x8717; + public const int DT_SCALE_NV = 0x8711; + public const int DU8DV8_ATI = 0x877A; + public const int DUAL_ALPHA12_SGIS = 0x8112; + public const int DUAL_ALPHA16_SGIS = 0x8113; + public const int DUAL_ALPHA4_SGIS = 0x8110; + public const int DUAL_ALPHA8_SGIS = 0x8111; + public const int DUAL_INTENSITY12_SGIS = 0x811A; + public const int DUAL_INTENSITY16_SGIS = 0x811B; + public const int DUAL_INTENSITY4_SGIS = 0x8118; + public const int DUAL_INTENSITY8_SGIS = 0x8119; + public const int DUAL_LUMINANCE12_SGIS = 0x8116; + public const int DUAL_LUMINANCE16_SGIS = 0x8117; + public const int DUAL_LUMINANCE4_SGIS = 0x8114; + public const int DUAL_LUMINANCE8_SGIS = 0x8115; + public const int DUAL_LUMINANCE_ALPHA4_SGIS = 0x811C; + public const int DUAL_LUMINANCE_ALPHA8_SGIS = 0x811D; + public const int DUAL_TEXTURE_SELECT_SGIS = 0x8124; + public const int DUDV_ATI = 0x8779; + public const int DUP_FIRST_CUBIC_CURVE_TO_NV = 0xF2; + public const int DUP_LAST_CUBIC_CURVE_TO_NV = 0xF4; + public const int DYNAMIC_ATI = 0x8761; + public const int DYNAMIC_COPY = 0x88EA; + public const int DYNAMIC_COPY_ARB = 0x88EA; + public const int DYNAMIC_DRAW = 0x88E8; + public const int DYNAMIC_DRAW_ARB = 0x88E8; + public const int DYNAMIC_READ = 0x88E9; + public const int DYNAMIC_READ_ARB = 0x88E9; + public const int DYNAMIC_STORAGE_BIT = 0x0100; + public const int EDGEFLAG_BIT_PGI = 0x00040000; + public const int EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26; + public const int EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x889B; + public const int EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D; + public const int EDGE_FLAG_ARRAY_EXT = 0x8079; + public const int EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30; + public const int EDGE_FLAG_ARRAY_LIST_IBM = 103075; + public const int EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085; + public const int EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093; + public const int EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C; + public const int EFFECTIVE_RASTER_SAMPLES_EXT = 0x932C; + public const int EIGHTH_BIT_ATI = 0x00000020; + public const int ELEMENT_ADDRESS_COMMAND_NV = 0x0008; + public const int ELEMENT_ARRAY_ADDRESS_NV = 0x8F29; + public const int ELEMENT_ARRAY_APPLE = 0x8A0C; + public const int ELEMENT_ARRAY_ATI = 0x8768; + public const int ELEMENT_ARRAY_BARRIER_BIT = 0x00000002; + public const int ELEMENT_ARRAY_BARRIER_BIT_EXT = 0x00000002; + public const int ELEMENT_ARRAY_BUFFER = 0x8893; + public const int ELEMENT_ARRAY_BUFFER_ARB = 0x8893; + public const int ELEMENT_ARRAY_BUFFER_BINDING = 0x8895; + public const int ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x8895; + public const int ELEMENT_ARRAY_LENGTH_NV = 0x8F33; + public const int ELEMENT_ARRAY_POINTER_APPLE = 0x8A0E; + public const int ELEMENT_ARRAY_POINTER_ATI = 0x876A; + public const int ELEMENT_ARRAY_TYPE_APPLE = 0x8A0D; + public const int ELEMENT_ARRAY_TYPE_ATI = 0x8769; + public const int ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F; + public const int EMBOSS_CONSTANT_NV = 0x855E; + public const int EMBOSS_LIGHT_NV = 0x855D; + public const int EMBOSS_MAP_NV = 0x855F; + public const int EQUAL = 0x0202; + public const int EQUIV = 0x1509; + public const int EVAL_2D_NV = 0x86C0; + public const int EVAL_FRACTIONAL_TESSELLATION_NV = 0x86C5; + public const int EVAL_TRIANGULAR_2D_NV = 0x86C1; + public const int EVAL_VERTEX_ATTRIB0_NV = 0x86C6; + public const int EVAL_VERTEX_ATTRIB10_NV = 0x86D0; + public const int EVAL_VERTEX_ATTRIB11_NV = 0x86D1; + public const int EVAL_VERTEX_ATTRIB12_NV = 0x86D2; + public const int EVAL_VERTEX_ATTRIB13_NV = 0x86D3; + public const int EVAL_VERTEX_ATTRIB14_NV = 0x86D4; + public const int EVAL_VERTEX_ATTRIB15_NV = 0x86D5; + public const int EVAL_VERTEX_ATTRIB1_NV = 0x86C7; + public const int EVAL_VERTEX_ATTRIB2_NV = 0x86C8; + public const int EVAL_VERTEX_ATTRIB3_NV = 0x86C9; + public const int EVAL_VERTEX_ATTRIB4_NV = 0x86CA; + public const int EVAL_VERTEX_ATTRIB5_NV = 0x86CB; + public const int EVAL_VERTEX_ATTRIB6_NV = 0x86CC; + public const int EVAL_VERTEX_ATTRIB7_NV = 0x86CD; + public const int EVAL_VERTEX_ATTRIB8_NV = 0x86CE; + public const int EVAL_VERTEX_ATTRIB9_NV = 0x86CF; + public const int EXCLUSION_KHR = 0x92A0; + public const int EXCLUSION_NV = 0x92A0; + public const int EXCLUSIVE_EXT = 0x8F11; + public const int EXPAND_NEGATE_NV = 0x8539; + public const int EXPAND_NORMAL_NV = 0x8538; + public const int EXTENSIONS = 0x1F03; + public const int EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD = 0x9160; + public const int EYE_DISTANCE_TO_LINE_SGIS = 0x81F2; + public const int EYE_DISTANCE_TO_POINT_SGIS = 0x81F0; + public const int EYE_LINE_SGIS = 0x81F6; + public const int EYE_PLANE = 0x2502; + public const int EYE_PLANE_ABSOLUTE_NV = 0x855C; + public const int EYE_POINT_SGIS = 0x81F4; + public const int EYE_RADIAL_NV = 0x855B; + public const int E_TIMES_F_NV = 0x8531; + public const int FACTOR_MAX_AMD = 0x901D; + public const int FACTOR_MIN_AMD = 0x901C; + public const int FAILURE_NV = 0x9030; + public const int FALSE = 0; + public const int FASTEST = 0x1101; + public const int FENCE_APPLE = 0x8A0B; + public const int FENCE_CONDITION_NV = 0x84F4; + public const int FENCE_STATUS_NV = 0x84F3; + public const int FIELDS_NV = 0x8E27; + public const int FIELD_LOWER_NV = 0x9023; + public const int FIELD_UPPER_NV = 0x9022; + public const int FILE_NAME_NV = 0x9074; + public const int FILL = 0x1B02; + public const int FILL_RECTANGLE_NV = 0x933C; + public const int FILTER = 0x829A; + public const int FILTER4_SGIS = 0x8146; + public const int FIRST_TO_REST_NV = 0x90AF; + public const int FIRST_VERTEX_CONVENTION = 0x8E4D; + public const int FIRST_VERTEX_CONVENTION_EXT = 0x8E4D; + public const int FIXED = 0x140C; + public const int FIXED_OES = 0x140C; + public const int FIXED_ONLY = 0x891D; + public const int FIXED_ONLY_ARB = 0x891D; + public const int FLOAT = 0x1406; + public const int FLOAT16_MAT2_AMD = 0x91C5; + public const int FLOAT16_MAT2x3_AMD = 0x91C8; + public const int FLOAT16_MAT2x4_AMD = 0x91C9; + public const int FLOAT16_MAT3_AMD = 0x91C6; + public const int FLOAT16_MAT3x2_AMD = 0x91CA; + public const int FLOAT16_MAT3x4_AMD = 0x91CB; + public const int FLOAT16_MAT4_AMD = 0x91C7; + public const int FLOAT16_MAT4x2_AMD = 0x91CC; + public const int FLOAT16_MAT4x3_AMD = 0x91CD; + public const int FLOAT16_NV = 0x8FF8; + public const int FLOAT16_VEC2_NV = 0x8FF9; + public const int FLOAT16_VEC3_NV = 0x8FFA; + public const int FLOAT16_VEC4_NV = 0x8FFB; + public const int FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD; + public const int FLOAT_32_UNSIGNED_INT_24_8_REV_NV = 0x8DAD; + public const int FLOAT_CLEAR_COLOR_VALUE_NV = 0x888D; + public const int FLOAT_MAT2 = 0x8B5A; + public const int FLOAT_MAT2_ARB = 0x8B5A; + public const int FLOAT_MAT2x3 = 0x8B65; + public const int FLOAT_MAT2x4 = 0x8B66; + public const int FLOAT_MAT3 = 0x8B5B; + public const int FLOAT_MAT3_ARB = 0x8B5B; + public const int FLOAT_MAT3x2 = 0x8B67; + public const int FLOAT_MAT3x4 = 0x8B68; + public const int FLOAT_MAT4 = 0x8B5C; + public const int FLOAT_MAT4_ARB = 0x8B5C; + public const int FLOAT_MAT4x2 = 0x8B69; + public const int FLOAT_MAT4x3 = 0x8B6A; + public const int FLOAT_R16_NV = 0x8884; + public const int FLOAT_R32_NV = 0x8885; + public const int FLOAT_RG16_NV = 0x8886; + public const int FLOAT_RG32_NV = 0x8887; + public const int FLOAT_RGB16_NV = 0x8888; + public const int FLOAT_RGB32_NV = 0x8889; + public const int FLOAT_RGBA16_NV = 0x888A; + public const int FLOAT_RGBA32_NV = 0x888B; + public const int FLOAT_RGBA_MODE_NV = 0x888E; + public const int FLOAT_RGBA_NV = 0x8883; + public const int FLOAT_RGB_NV = 0x8882; + public const int FLOAT_RG_NV = 0x8881; + public const int FLOAT_R_NV = 0x8880; + public const int FLOAT_VEC2 = 0x8B50; + public const int FLOAT_VEC2_ARB = 0x8B50; + public const int FLOAT_VEC3 = 0x8B51; + public const int FLOAT_VEC3_ARB = 0x8B51; + public const int FLOAT_VEC4 = 0x8B52; + public const int FLOAT_VEC4_ARB = 0x8B52; + public const int FOG = 0x0B60; + public const int FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x889D; + public const int FOG_COORDINATE_ARRAY_EXT = 0x8457; + public const int FOG_COORDINATE_ARRAY_LIST_IBM = 103076; + public const int FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086; + public const int FOG_COORDINATE_ARRAY_POINTER_EXT = 0x8456; + public const int FOG_COORDINATE_ARRAY_STRIDE_EXT = 0x8455; + public const int FOG_COORDINATE_ARRAY_TYPE_EXT = 0x8454; + public const int FOG_COORDINATE_EXT = 0x8451; + public const int FOG_COORDINATE_SOURCE_EXT = 0x8450; + public const int FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28; + public const int FOG_COORD_ARRAY_LENGTH_NV = 0x8F32; + public const int FOG_DISTANCE_MODE_NV = 0x855A; + public const int FOG_FUNC_POINTS_SGIS = 0x812B; + public const int FOG_FUNC_SGIS = 0x812A; + public const int FOG_OFFSET_SGIX = 0x8198; + public const int FOG_OFFSET_VALUE_SGIX = 0x8199; + public const int FOG_SPECULAR_TEXTURE_WIN = 0x80EC; + public const int FONT_ASCENDER_BIT_NV = 0x00200000; + public const int FONT_DESCENDER_BIT_NV = 0x00400000; + public const int FONT_GLYPHS_AVAILABLE_NV = 0x9368; + public const int FONT_HAS_KERNING_BIT_NV = 0x10000000; + public const int FONT_HEIGHT_BIT_NV = 0x00800000; + public const int FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000; + public const int FONT_MAX_ADVANCE_WIDTH_BIT_NV = 0x01000000; + public const int FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000; + public const int FONT_TARGET_UNAVAILABLE_NV = 0x9369; + public const int FONT_UNAVAILABLE_NV = 0x936A; + public const int FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000; + public const int FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000; + public const int FONT_UNINTELLIGIBLE_NV = 0x936B; + public const int FONT_UNITS_PER_EM_BIT_NV = 0x00100000; + public const int FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000; + public const int FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000; + public const int FONT_Y_MAX_BOUNDS_BIT_NV = 0x00080000; + public const int FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000; + public const int FORCE_BLUE_TO_ONE_NV = 0x8860; + public const int FORMAT_SUBSAMPLE_244_244_OML = 0x8983; + public const int FORMAT_SUBSAMPLE_24_24_OML = 0x8982; + public const int FRACTIONAL_EVEN = 0x8E7C; + public const int FRACTIONAL_ODD = 0x8E7B; + public const int FRAGMENT_COLOR_EXT = 0x834C; + public const int FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x8402; + public const int FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x8403; + public const int FRAGMENT_COLOR_MATERIAL_SGIX = 0x8401; + public const int FRAGMENT_COVERAGE_COLOR_NV = 0x92DE; + public const int FRAGMENT_COVERAGE_TO_COLOR_NV = 0x92DD; + public const int FRAGMENT_DEPTH_EXT = 0x8452; + public const int FRAGMENT_INPUT_NV = 0x936D; + public const int FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D; + public const int FRAGMENT_LIGHT0_SGIX = 0x840C; + public const int FRAGMENT_LIGHT1_SGIX = 0x840D; + public const int FRAGMENT_LIGHT2_SGIX = 0x840E; + public const int FRAGMENT_LIGHT3_SGIX = 0x840F; + public const int FRAGMENT_LIGHT4_SGIX = 0x8410; + public const int FRAGMENT_LIGHT5_SGIX = 0x8411; + public const int FRAGMENT_LIGHT6_SGIX = 0x8412; + public const int FRAGMENT_LIGHT7_SGIX = 0x8413; + public const int FRAGMENT_LIGHTING_SGIX = 0x8400; + public const int FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x840A; + public const int FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x8408; + public const int FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x840B; + public const int FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x8409; + public const int FRAGMENT_MATERIAL_EXT = 0x8349; + public const int FRAGMENT_NORMAL_EXT = 0x834A; + public const int FRAGMENT_PROGRAM_ARB = 0x8804; + public const int FRAGMENT_PROGRAM_BINDING_NV = 0x8873; + public const int FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = 0x8E5D; + public const int FRAGMENT_PROGRAM_NV = 0x8870; + public const int FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA4; + public const int FRAGMENT_SHADER = 0x8B30; + public const int FRAGMENT_SHADER_ARB = 0x8B30; + public const int FRAGMENT_SHADER_ATI = 0x8920; + public const int FRAGMENT_SHADER_BIT = 0x00000002; + public const int FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B; + public const int FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B; + public const int FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = 0x8A52; + public const int FRAGMENT_SHADER_INVOCATIONS = 0x82F4; + public const int FRAGMENT_SHADER_INVOCATIONS_ARB = 0x82F4; + public const int FRAGMENT_SUBROUTINE = 0x92EC; + public const int FRAGMENT_SUBROUTINE_UNIFORM = 0x92F2; + public const int FRAGMENT_TEXTURE = 0x829F; + public const int FRAMEBUFFER = 0x8D40; + public const int FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215; + public const int FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214; + public const int FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210; + public const int FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211; + public const int FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; + public const int FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213; + public const int FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7; + public const int FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7; + public const int FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 0x8DA7; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0; + public const int FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0; + public const int FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212; + public const int FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = 0x8CD4; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2; + public const int FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630; + public const int FRAMEBUFFER_BARRIER_BIT = 0x00000400; + public const int FRAMEBUFFER_BARRIER_BIT_EXT = 0x00000400; + public const int FRAMEBUFFER_BINDING = 0x8CA6; + public const int FRAMEBUFFER_BINDING_EXT = 0x8CA6; + public const int FRAMEBUFFER_BLEND = 0x828B; + public const int FRAMEBUFFER_COMPLETE = 0x8CD5; + public const int FRAMEBUFFER_COMPLETE_EXT = 0x8CD5; + public const int FRAMEBUFFER_DEFAULT = 0x8218; + public const int FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x9314; + public const int FRAMEBUFFER_DEFAULT_HEIGHT = 0x9311; + public const int FRAMEBUFFER_DEFAULT_LAYERS = 0x9312; + public const int FRAMEBUFFER_DEFAULT_SAMPLES = 0x9313; + public const int FRAMEBUFFER_DEFAULT_WIDTH = 0x9310; + public const int FRAMEBUFFER_EXT = 0x8D40; + public const int FRAMEBUFFER_FLIP_X_MESA = 0x8BBC; + public const int FRAMEBUFFER_FLIP_Y_MESA = 0x8BBB; + public const int FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6; + public const int FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6; + public const int FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9; + public const int FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB; + public const int FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB; + public const int FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = 0x8DA9; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8; + public const int FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 0x8DA8; + public const int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7; + public const int FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7; + public const int FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56; + public const int FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56; + public const int FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC; + public const int FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC; + public const int FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633; + public const int FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB = 0x9342; + public const int FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = 0x9342; + public const int FRAMEBUFFER_RENDERABLE = 0x8289; + public const int FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A; + public const int FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB = 0x9343; + public const int FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = 0x9343; + public const int FRAMEBUFFER_SRGB = 0x8DB9; + public const int FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA; + public const int FRAMEBUFFER_SRGB_EXT = 0x8DB9; + public const int FRAMEBUFFER_SWAP_XY_MESA = 0x8BBD; + public const int FRAMEBUFFER_UNDEFINED = 0x8219; + public const int FRAMEBUFFER_UNSUPPORTED = 0x8CDD; + public const int FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD; + public const int FRAMEZOOM_FACTOR_SGIX = 0x818C; + public const int FRAMEZOOM_SGIX = 0x818B; + public const int FRAME_NV = 0x8E26; + public const int FRONT = 0x0404; + public const int FRONT_AND_BACK = 0x0408; + public const int FRONT_FACE = 0x0B46; + public const int FRONT_FACE_COMMAND_NV = 0x0012; + public const int FRONT_LEFT = 0x0400; + public const int FRONT_RIGHT = 0x0401; + public const int FULL_RANGE_EXT = 0x87E1; + public const int FULL_STIPPLE_HINT_PGI = 0x1A219; + public const int FULL_SUPPORT = 0x82B7; + public const int FUNC_ADD = 0x8006; + public const int FUNC_ADD_EXT = 0x8006; + public const int FUNC_REVERSE_SUBTRACT = 0x800B; + public const int FUNC_REVERSE_SUBTRACT_EXT = 0x800B; + public const int FUNC_SUBTRACT = 0x800A; + public const int FUNC_SUBTRACT_EXT = 0x800A; + public const int GENERATE_MIPMAP_HINT_SGIS = 0x8192; + public const int GENERATE_MIPMAP_SGIS = 0x8191; + public const int GENERIC_ATTRIB_NV = 0x8C7D; + public const int GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002; + public const int GEOMETRY_DEFORMATION_SGIX = 0x8194; + public const int GEOMETRY_INPUT_TYPE = 0x8917; + public const int GEOMETRY_INPUT_TYPE_ARB = 0x8DDB; + public const int GEOMETRY_INPUT_TYPE_EXT = 0x8DDB; + public const int GEOMETRY_OUTPUT_TYPE = 0x8918; + public const int GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC; + public const int GEOMETRY_OUTPUT_TYPE_EXT = 0x8DDC; + public const int GEOMETRY_PROGRAM_NV = 0x8C26; + public const int GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA3; + public const int GEOMETRY_SHADER = 0x8DD9; + public const int GEOMETRY_SHADER_ARB = 0x8DD9; + public const int GEOMETRY_SHADER_BIT = 0x00000004; + public const int GEOMETRY_SHADER_EXT = 0x8DD9; + public const int GEOMETRY_SHADER_INVOCATIONS = 0x887F; + public const int GEOMETRY_SHADER_PRIMITIVES_EMITTED = 0x82F3; + public const int GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB = 0x82F3; + public const int GEOMETRY_SUBROUTINE = 0x92EB; + public const int GEOMETRY_SUBROUTINE_UNIFORM = 0x92F1; + public const int GEOMETRY_TEXTURE = 0x829E; + public const int GEOMETRY_VERTICES_OUT = 0x8916; + public const int GEOMETRY_VERTICES_OUT_ARB = 0x8DDA; + public const int GEOMETRY_VERTICES_OUT_EXT = 0x8DDA; + public const int GEQUAL = 0x0206; + public const int GET_TEXTURE_IMAGE_FORMAT = 0x8291; + public const int GET_TEXTURE_IMAGE_TYPE = 0x8292; + public const int GLOBAL_ALPHA_FACTOR_SUN = 0x81DA; + public const int GLOBAL_ALPHA_SUN = 0x81D9; + public const int GLYPH_HAS_KERNING_BIT_NV = 0x100; + public const int GLYPH_HEIGHT_BIT_NV = 0x02; + public const int GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV = 0x10; + public const int GLYPH_HORIZONTAL_BEARING_X_BIT_NV = 0x04; + public const int GLYPH_HORIZONTAL_BEARING_Y_BIT_NV = 0x08; + public const int GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x80; + public const int GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x20; + public const int GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x40; + public const int GLYPH_WIDTH_BIT_NV = 0x01; + public const int GPU_ADDRESS_NV = 0x8F34; + public const int GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX = 0x9049; + public const int GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = 0x9047; + public const int GPU_MEMORY_INFO_EVICTED_MEMORY_NVX = 0x904B; + public const int GPU_MEMORY_INFO_EVICTION_COUNT_NVX = 0x904A; + public const int GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX = 0x9048; + public const int GREATER = 0x0204; + public const int GREEN = 0x1904; + public const int GREEN_BIT_ATI = 0x00000002; + public const int GREEN_INTEGER = 0x8D95; + public const int GREEN_INTEGER_EXT = 0x8D95; + public const int GREEN_MAX_CLAMP_INGR = 0x8565; + public const int GREEN_MIN_CLAMP_INGR = 0x8561; + public const int GREEN_NV = 0x1904; + public const int GUILTY_CONTEXT_RESET = 0x8253; + public const int GUILTY_CONTEXT_RESET_ARB = 0x8253; + public const int HALF_APPLE = 0x140B; + public const int HALF_BIAS_NEGATE_NV = 0x853B; + public const int HALF_BIAS_NORMAL_NV = 0x853A; + public const int HALF_BIT_ATI = 0x00000008; + public const int HALF_FLOAT = 0x140B; + public const int HALF_FLOAT_ARB = 0x140B; + public const int HALF_FLOAT_NV = 0x140B; + public const int HANDLE_TYPE_D3D11_IMAGE_EXT = 0x958B; + public const int HANDLE_TYPE_D3D11_IMAGE_KMT_EXT = 0x958C; + public const int HANDLE_TYPE_D3D12_FENCE_EXT = 0x9594; + public const int HANDLE_TYPE_D3D12_RESOURCE_EXT = 0x958A; + public const int HANDLE_TYPE_D3D12_TILEPOOL_EXT = 0x9589; + public const int HANDLE_TYPE_OPAQUE_FD_EXT = 0x9586; + public const int HANDLE_TYPE_OPAQUE_WIN32_EXT = 0x9587; + public const int HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT = 0x9588; + public const int HARDLIGHT_KHR = 0x929B; + public const int HARDLIGHT_NV = 0x929B; + public const int HARDMIX_NV = 0x92A9; + public const int HIGH_FLOAT = 0x8DF2; + public const int HIGH_INT = 0x8DF5; + public const int HILO16_NV = 0x86F8; + public const int HILO8_NV = 0x885E; + public const int HILO_NV = 0x86F4; + public const int HISTOGRAM_ALPHA_SIZE_EXT = 0x802B; + public const int HISTOGRAM_BLUE_SIZE_EXT = 0x802A; + public const int HISTOGRAM_EXT = 0x8024; + public const int HISTOGRAM_FORMAT_EXT = 0x8027; + public const int HISTOGRAM_GREEN_SIZE_EXT = 0x8029; + public const int HISTOGRAM_LUMINANCE_SIZE_EXT = 0x802C; + public const int HISTOGRAM_RED_SIZE_EXT = 0x8028; + public const int HISTOGRAM_SINK_EXT = 0x802D; + public const int HISTOGRAM_WIDTH_EXT = 0x8026; + public const int HI_BIAS_NV = 0x8714; + public const int HI_SCALE_NV = 0x870E; + public const int HORIZONTAL_LINE_TO_NV = 0x06; + public const int HSL_COLOR_KHR = 0x92AF; + public const int HSL_COLOR_NV = 0x92AF; + public const int HSL_HUE_KHR = 0x92AD; + public const int HSL_HUE_NV = 0x92AD; + public const int HSL_LUMINOSITY_KHR = 0x92B0; + public const int HSL_LUMINOSITY_NV = 0x92B0; + public const int HSL_SATURATION_KHR = 0x92AE; + public const int HSL_SATURATION_NV = 0x92AE; + public const int IDENTITY_NV = 0x862A; + public const int IGNORE_BORDER_HP = 0x8150; + public const int IMAGE_1D = 0x904C; + public const int IMAGE_1D_ARRAY = 0x9052; + public const int IMAGE_1D_ARRAY_EXT = 0x9052; + public const int IMAGE_1D_EXT = 0x904C; + public const int IMAGE_2D = 0x904D; + public const int IMAGE_2D_ARRAY = 0x9053; + public const int IMAGE_2D_ARRAY_EXT = 0x9053; + public const int IMAGE_2D_EXT = 0x904D; + public const int IMAGE_2D_MULTISAMPLE = 0x9055; + public const int IMAGE_2D_MULTISAMPLE_ARRAY = 0x9056; + public const int IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9056; + public const int IMAGE_2D_MULTISAMPLE_EXT = 0x9055; + public const int IMAGE_2D_RECT = 0x904F; + public const int IMAGE_2D_RECT_EXT = 0x904F; + public const int IMAGE_3D = 0x904E; + public const int IMAGE_3D_EXT = 0x904E; + public const int IMAGE_BINDING_ACCESS = 0x8F3E; + public const int IMAGE_BINDING_ACCESS_EXT = 0x8F3E; + public const int IMAGE_BINDING_FORMAT = 0x906E; + public const int IMAGE_BINDING_FORMAT_EXT = 0x906E; + public const int IMAGE_BINDING_LAYER = 0x8F3D; + public const int IMAGE_BINDING_LAYERED = 0x8F3C; + public const int IMAGE_BINDING_LAYERED_EXT = 0x8F3C; + public const int IMAGE_BINDING_LAYER_EXT = 0x8F3D; + public const int IMAGE_BINDING_LEVEL = 0x8F3B; + public const int IMAGE_BINDING_LEVEL_EXT = 0x8F3B; + public const int IMAGE_BINDING_NAME = 0x8F3A; + public const int IMAGE_BINDING_NAME_EXT = 0x8F3A; + public const int IMAGE_BUFFER = 0x9051; + public const int IMAGE_BUFFER_EXT = 0x9051; + public const int IMAGE_CLASS_10_10_10_2 = 0x82C3; + public const int IMAGE_CLASS_11_11_10 = 0x82C2; + public const int IMAGE_CLASS_1_X_16 = 0x82BE; + public const int IMAGE_CLASS_1_X_32 = 0x82BB; + public const int IMAGE_CLASS_1_X_8 = 0x82C1; + public const int IMAGE_CLASS_2_X_16 = 0x82BD; + public const int IMAGE_CLASS_2_X_32 = 0x82BA; + public const int IMAGE_CLASS_2_X_8 = 0x82C0; + public const int IMAGE_CLASS_4_X_16 = 0x82BC; + public const int IMAGE_CLASS_4_X_32 = 0x82B9; + public const int IMAGE_CLASS_4_X_8 = 0x82BF; + public const int IMAGE_COMPATIBILITY_CLASS = 0x82A8; + public const int IMAGE_CUBE = 0x9050; + public const int IMAGE_CUBE_EXT = 0x9050; + public const int IMAGE_CUBE_MAP_ARRAY = 0x9054; + public const int IMAGE_CUBE_MAP_ARRAY_EXT = 0x9054; + public const int IMAGE_CUBIC_WEIGHT_HP = 0x815E; + public const int IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 0x90C9; + public const int IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 0x90C8; + public const int IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7; + public const int IMAGE_MAG_FILTER_HP = 0x815C; + public const int IMAGE_MIN_FILTER_HP = 0x815D; + public const int IMAGE_PIXEL_FORMAT = 0x82A9; + public const int IMAGE_PIXEL_TYPE = 0x82AA; + public const int IMAGE_ROTATE_ANGLE_HP = 0x8159; + public const int IMAGE_ROTATE_ORIGIN_X_HP = 0x815A; + public const int IMAGE_ROTATE_ORIGIN_Y_HP = 0x815B; + public const int IMAGE_SCALE_X_HP = 0x8155; + public const int IMAGE_SCALE_Y_HP = 0x8156; + public const int IMAGE_TEXEL_SIZE = 0x82A7; + public const int IMAGE_TRANSFORM_2D_HP = 0x8161; + public const int IMAGE_TRANSLATE_X_HP = 0x8157; + public const int IMAGE_TRANSLATE_Y_HP = 0x8158; + public const int IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; + public const int IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B; + public const int IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A; + public const int IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A; + public const int INCLUSIVE_EXT = 0x8F10; + public const int INCR = 0x1E02; + public const int INCR_WRAP = 0x8507; + public const int INCR_WRAP_EXT = 0x8507; + public const int INDEX_ARRAY_ADDRESS_NV = 0x8F24; + public const int INDEX_ARRAY_BUFFER_BINDING_ARB = 0x8899; + public const int INDEX_ARRAY_COUNT_EXT = 0x8087; + public const int INDEX_ARRAY_EXT = 0x8077; + public const int INDEX_ARRAY_LENGTH_NV = 0x8F2E; + public const int INDEX_ARRAY_LIST_IBM = 103073; + public const int INDEX_ARRAY_LIST_STRIDE_IBM = 103083; + public const int INDEX_ARRAY_POINTER_EXT = 0x8091; + public const int INDEX_ARRAY_STRIDE_EXT = 0x8086; + public const int INDEX_ARRAY_TYPE_EXT = 0x8085; + public const int INDEX_BIT_PGI = 0x00080000; + public const int INDEX_MATERIAL_EXT = 0x81B8; + public const int INDEX_MATERIAL_FACE_EXT = 0x81BA; + public const int INDEX_MATERIAL_PARAMETER_EXT = 0x81B9; + public const int INDEX_TEST_EXT = 0x81B5; + public const int INDEX_TEST_FUNC_EXT = 0x81B6; + public const int INDEX_TEST_REF_EXT = 0x81B7; + public const int INFO_LOG_LENGTH = 0x8B84; + public const int INNOCENT_CONTEXT_RESET = 0x8254; + public const int INNOCENT_CONTEXT_RESET_ARB = 0x8254; + public const int INSTRUMENT_BUFFER_POINTER_SGIX = 0x8180; + public const int INSTRUMENT_MEASUREMENTS_SGIX = 0x8181; + public const int INT = 0x1404; + public const int INT16_NV = 0x8FE4; + public const int INT16_VEC2_NV = 0x8FE5; + public const int INT16_VEC3_NV = 0x8FE6; + public const int INT16_VEC4_NV = 0x8FE7; + public const int INT64_ARB = 0x140E; + public const int INT64_NV = 0x140E; + public const int INT64_VEC2_ARB = 0x8FE9; + public const int INT64_VEC2_NV = 0x8FE9; + public const int INT64_VEC3_ARB = 0x8FEA; + public const int INT64_VEC3_NV = 0x8FEA; + public const int INT64_VEC4_ARB = 0x8FEB; + public const int INT64_VEC4_NV = 0x8FEB; + public const int INT8_NV = 0x8FE0; + public const int INT8_VEC2_NV = 0x8FE1; + public const int INT8_VEC3_NV = 0x8FE2; + public const int INT8_VEC4_NV = 0x8FE3; + public const int INTENSITY12_EXT = 0x804C; + public const int INTENSITY16F_ARB = 0x881D; + public const int INTENSITY16I_EXT = 0x8D8B; + public const int INTENSITY16UI_EXT = 0x8D79; + public const int INTENSITY16_EXT = 0x804D; + public const int INTENSITY16_SNORM = 0x901B; + public const int INTENSITY32F_ARB = 0x8817; + public const int INTENSITY32I_EXT = 0x8D85; + public const int INTENSITY32UI_EXT = 0x8D73; + public const int INTENSITY4_EXT = 0x804A; + public const int INTENSITY8I_EXT = 0x8D91; + public const int INTENSITY8UI_EXT = 0x8D7F; + public const int INTENSITY8_EXT = 0x804B; + public const int INTENSITY8_SNORM = 0x9017; + public const int INTENSITY_EXT = 0x8049; + public const int INTENSITY_FLOAT16_APPLE = 0x881D; + public const int INTENSITY_FLOAT16_ATI = 0x881D; + public const int INTENSITY_FLOAT32_APPLE = 0x8817; + public const int INTENSITY_FLOAT32_ATI = 0x8817; + public const int INTENSITY_SNORM = 0x9013; + public const int INTERLACE_OML = 0x8980; + public const int INTERLACE_READ_INGR = 0x8568; + public const int INTERLACE_READ_OML = 0x8981; + public const int INTERLACE_SGIX = 0x8094; + public const int INTERLEAVED_ATTRIBS = 0x8C8C; + public const int INTERLEAVED_ATTRIBS_EXT = 0x8C8C; + public const int INTERLEAVED_ATTRIBS_NV = 0x8C8C; + public const int INTERNALFORMAT_ALPHA_SIZE = 0x8274; + public const int INTERNALFORMAT_ALPHA_TYPE = 0x827B; + public const int INTERNALFORMAT_BLUE_SIZE = 0x8273; + public const int INTERNALFORMAT_BLUE_TYPE = 0x827A; + public const int INTERNALFORMAT_DEPTH_SIZE = 0x8275; + public const int INTERNALFORMAT_DEPTH_TYPE = 0x827C; + public const int INTERNALFORMAT_GREEN_SIZE = 0x8272; + public const int INTERNALFORMAT_GREEN_TYPE = 0x8279; + public const int INTERNALFORMAT_PREFERRED = 0x8270; + public const int INTERNALFORMAT_RED_SIZE = 0x8271; + public const int INTERNALFORMAT_RED_TYPE = 0x8278; + public const int INTERNALFORMAT_SHARED_SIZE = 0x8277; + public const int INTERNALFORMAT_STENCIL_SIZE = 0x8276; + public const int INTERNALFORMAT_STENCIL_TYPE = 0x827D; + public const int INTERNALFORMAT_SUPPORTED = 0x826F; + public const int INTERPOLATE_ARB = 0x8575; + public const int INTERPOLATE_EXT = 0x8575; + public const int INT_2_10_10_10_REV = 0x8D9F; + public const int INT_IMAGE_1D = 0x9057; + public const int INT_IMAGE_1D_ARRAY = 0x905D; + public const int INT_IMAGE_1D_ARRAY_EXT = 0x905D; + public const int INT_IMAGE_1D_EXT = 0x9057; + public const int INT_IMAGE_2D = 0x9058; + public const int INT_IMAGE_2D_ARRAY = 0x905E; + public const int INT_IMAGE_2D_ARRAY_EXT = 0x905E; + public const int INT_IMAGE_2D_EXT = 0x9058; + public const int INT_IMAGE_2D_MULTISAMPLE = 0x9060; + public const int INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9061; + public const int INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9061; + public const int INT_IMAGE_2D_MULTISAMPLE_EXT = 0x9060; + public const int INT_IMAGE_2D_RECT = 0x905A; + public const int INT_IMAGE_2D_RECT_EXT = 0x905A; + public const int INT_IMAGE_3D = 0x9059; + public const int INT_IMAGE_3D_EXT = 0x9059; + public const int INT_IMAGE_BUFFER = 0x905C; + public const int INT_IMAGE_BUFFER_EXT = 0x905C; + public const int INT_IMAGE_CUBE = 0x905B; + public const int INT_IMAGE_CUBE_EXT = 0x905B; + public const int INT_IMAGE_CUBE_MAP_ARRAY = 0x905F; + public const int INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x905F; + public const int INT_SAMPLER_1D = 0x8DC9; + public const int INT_SAMPLER_1D_ARRAY = 0x8DCE; + public const int INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE; + public const int INT_SAMPLER_1D_EXT = 0x8DC9; + public const int INT_SAMPLER_2D = 0x8DCA; + public const int INT_SAMPLER_2D_ARRAY = 0x8DCF; + public const int INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF; + public const int INT_SAMPLER_2D_EXT = 0x8DCA; + public const int INT_SAMPLER_2D_MULTISAMPLE = 0x9109; + public const int INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C; + public const int INT_SAMPLER_2D_RECT = 0x8DCD; + public const int INT_SAMPLER_2D_RECT_EXT = 0x8DCD; + public const int INT_SAMPLER_3D = 0x8DCB; + public const int INT_SAMPLER_3D_EXT = 0x8DCB; + public const int INT_SAMPLER_BUFFER = 0x8DD0; + public const int INT_SAMPLER_BUFFER_AMD = 0x9002; + public const int INT_SAMPLER_BUFFER_EXT = 0x8DD0; + public const int INT_SAMPLER_CUBE = 0x8DCC; + public const int INT_SAMPLER_CUBE_EXT = 0x8DCC; + public const int INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E; + public const int INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900E; + public const int INT_SAMPLER_RENDERBUFFER_NV = 0x8E57; + public const int INT_VEC2 = 0x8B53; + public const int INT_VEC2_ARB = 0x8B53; + public const int INT_VEC3 = 0x8B54; + public const int INT_VEC3_ARB = 0x8B54; + public const int INT_VEC4 = 0x8B55; + public const int INT_VEC4_ARB = 0x8B55; + public const int INVALID_ENUM = 0x0500; + public const int INVALID_FRAMEBUFFER_OPERATION = 0x0506; + public const int INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506; + public const uint INVALID_INDEX = 0xFFFFFFFF; + public const int INVALID_OPERATION = 0x0502; + public const int INVALID_VALUE = 0x0501; + public const int INVARIANT_DATATYPE_EXT = 0x87EB; + public const int INVARIANT_EXT = 0x87C2; + public const int INVARIANT_VALUE_EXT = 0x87EA; + public const int INVERSE_NV = 0x862B; + public const int INVERSE_TRANSPOSE_NV = 0x862D; + public const int INVERT = 0x150A; + public const int INVERTED_SCREEN_W_REND = 0x8491; + public const int INVERT_OVG_NV = 0x92B4; + public const int INVERT_RGB_NV = 0x92A3; + public const int IR_INSTRUMENT1_SGIX = 0x817F; + public const int ISOLINES = 0x8E7A; + public const int IS_PER_PATCH = 0x92E7; + public const int IS_ROW_MAJOR = 0x9300; + public const int ITALIC_BIT_NV = 0x02; + public const int IUI_N3F_V2F_EXT = 0x81AF; + public const int IUI_N3F_V3F_EXT = 0x81B0; + public const int IUI_V2F_EXT = 0x81AD; + public const int IUI_V3F_EXT = 0x81AE; + public const int KEEP = 0x1E00; + public const int LARGE_CCW_ARC_TO_NV = 0x16; + public const int LARGE_CW_ARC_TO_NV = 0x18; + public const int LAST_VERTEX_CONVENTION = 0x8E4E; + public const int LAST_VERTEX_CONVENTION_EXT = 0x8E4E; + public const int LAST_VIDEO_CAPTURE_STATUS_NV = 0x9027; + public const int LAYER_NV = 0x8DAA; + public const int LAYER_PROVOKING_VERTEX = 0x825E; + public const int LAYOUT_COLOR_ATTACHMENT_EXT = 0x958E; + public const int LAYOUT_DEFAULT_INTEL = 0; + public const int LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT = 0x9531; + public const int LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT = 0x9530; + public const int LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT = 0x958F; + public const int LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT = 0x9590; + public const int LAYOUT_GENERAL_EXT = 0x958D; + public const int LAYOUT_LINEAR_CPU_CACHED_INTEL = 2; + public const int LAYOUT_LINEAR_INTEL = 1; + public const int LAYOUT_SHADER_READ_ONLY_EXT = 0x9591; + public const int LAYOUT_TRANSFER_DST_EXT = 0x9593; + public const int LAYOUT_TRANSFER_SRC_EXT = 0x9592; + public const int LEFT = 0x0406; + public const int LEQUAL = 0x0203; + public const int LERP_ATI = 0x8969; + public const int LESS = 0x0201; + public const int LGPU_SEPARATE_STORAGE_BIT_NVX = 0x0800; + public const int LIGHTEN_KHR = 0x9298; + public const int LIGHTEN_NV = 0x9298; + public const int LIGHT_ENV_MODE_SGIX = 0x8407; + public const int LIGHT_MODEL_COLOR_CONTROL_EXT = 0x81F8; + public const int LIGHT_MODEL_SPECULAR_VECTOR_APPLE = 0x85B0; + public const int LINE = 0x1B01; + public const int LINEAR = 0x2601; + public const int LINEARBURN_NV = 0x92A5; + public const int LINEARDODGE_NV = 0x92A4; + public const int LINEARLIGHT_NV = 0x92A7; + public const int LINEAR_CLIPMAP_LINEAR_SGIX = 0x8170; + public const int LINEAR_CLIPMAP_NEAREST_SGIX = 0x844F; + public const int LINEAR_DETAIL_ALPHA_SGIS = 0x8098; + public const int LINEAR_DETAIL_COLOR_SGIS = 0x8099; + public const int LINEAR_DETAIL_SGIS = 0x8097; + public const int LINEAR_MIPMAP_LINEAR = 0x2703; + public const int LINEAR_MIPMAP_NEAREST = 0x2701; + public const int LINEAR_SHARPEN_ALPHA_SGIS = 0x80AE; + public const int LINEAR_SHARPEN_COLOR_SGIS = 0x80AF; + public const int LINEAR_SHARPEN_SGIS = 0x80AD; + public const int LINEAR_TILING_EXT = 0x9585; + public const int LINES = 0x0001; + public const int LINES_ADJACENCY = 0x000A; + public const int LINES_ADJACENCY_ARB = 0x000A; + public const int LINES_ADJACENCY_EXT = 0x000A; + public const int LINE_LOOP = 0x0002; + public const int LINE_SMOOTH = 0x0B20; + public const int LINE_SMOOTH_HINT = 0x0C52; + public const int LINE_STRIP = 0x0003; + public const int LINE_STRIP_ADJACENCY = 0x000B; + public const int LINE_STRIP_ADJACENCY_ARB = 0x000B; + public const int LINE_STRIP_ADJACENCY_EXT = 0x000B; + public const int LINE_TO_NV = 0x04; + public const int LINE_WIDTH = 0x0B21; + public const int LINE_WIDTH_COMMAND_NV = 0x000D; + public const int LINE_WIDTH_GRANULARITY = 0x0B23; + public const int LINE_WIDTH_RANGE = 0x0B22; + public const int LINK_STATUS = 0x8B82; + public const int LIST_PRIORITY_SGIX = 0x8182; + public const int LOCAL_CONSTANT_DATATYPE_EXT = 0x87ED; + public const int LOCAL_CONSTANT_EXT = 0x87C3; + public const int LOCAL_CONSTANT_VALUE_EXT = 0x87EC; + public const int LOCAL_EXT = 0x87C4; + public const int LOCATION = 0x930E; + public const int LOCATION_COMPONENT = 0x934A; + public const int LOCATION_INDEX = 0x930F; + public const int LOGIC_OP_MODE = 0x0BF0; + public const int LOSE_CONTEXT_ON_RESET = 0x8252; + public const int LOSE_CONTEXT_ON_RESET_ARB = 0x8252; + public const int LOWER_LEFT = 0x8CA1; + public const int LOW_FLOAT = 0x8DF0; + public const int LOW_INT = 0x8DF3; + public const int LO_BIAS_NV = 0x8715; + public const int LO_SCALE_NV = 0x870F; + public const int LUID_SIZE_EXT = 8; + public const int LUMINANCE12_ALPHA12_EXT = 0x8047; + public const int LUMINANCE12_ALPHA4_EXT = 0x8046; + public const int LUMINANCE12_EXT = 0x8041; + public const int LUMINANCE16F_ARB = 0x881E; + public const int LUMINANCE16F_EXT = 0x881E; + public const int LUMINANCE16I_EXT = 0x8D8C; + public const int LUMINANCE16UI_EXT = 0x8D7A; + public const int LUMINANCE16_ALPHA16_EXT = 0x8048; + public const int LUMINANCE16_ALPHA16_SNORM = 0x901A; + public const int LUMINANCE16_EXT = 0x8042; + public const int LUMINANCE16_SNORM = 0x9019; + public const int LUMINANCE32F_ARB = 0x8818; + public const int LUMINANCE32F_EXT = 0x8818; + public const int LUMINANCE32I_EXT = 0x8D86; + public const int LUMINANCE32UI_EXT = 0x8D74; + public const int LUMINANCE4_ALPHA4_EXT = 0x8043; + public const int LUMINANCE4_EXT = 0x803F; + public const int LUMINANCE6_ALPHA2_EXT = 0x8044; + public const int LUMINANCE8I_EXT = 0x8D92; + public const int LUMINANCE8UI_EXT = 0x8D80; + public const int LUMINANCE8_ALPHA8_EXT = 0x8045; + public const int LUMINANCE8_ALPHA8_SNORM = 0x9016; + public const int LUMINANCE8_EXT = 0x8040; + public const int LUMINANCE8_SNORM = 0x9015; + public const int LUMINANCE_ALPHA16F_ARB = 0x881F; + public const int LUMINANCE_ALPHA16F_EXT = 0x881F; + public const int LUMINANCE_ALPHA16I_EXT = 0x8D8D; + public const int LUMINANCE_ALPHA16UI_EXT = 0x8D7B; + public const int LUMINANCE_ALPHA32F_ARB = 0x8819; + public const int LUMINANCE_ALPHA32F_EXT = 0x8819; + public const int LUMINANCE_ALPHA32I_EXT = 0x8D87; + public const int LUMINANCE_ALPHA32UI_EXT = 0x8D75; + public const int LUMINANCE_ALPHA8I_EXT = 0x8D93; + public const int LUMINANCE_ALPHA8UI_EXT = 0x8D81; + public const int LUMINANCE_ALPHA_FLOAT16_APPLE = 0x881F; + public const int LUMINANCE_ALPHA_FLOAT16_ATI = 0x881F; + public const int LUMINANCE_ALPHA_FLOAT32_APPLE = 0x8819; + public const int LUMINANCE_ALPHA_FLOAT32_ATI = 0x8819; + public const int LUMINANCE_ALPHA_INTEGER_EXT = 0x8D9D; + public const int LUMINANCE_ALPHA_SNORM = 0x9012; + public const int LUMINANCE_FLOAT16_APPLE = 0x881E; + public const int LUMINANCE_FLOAT16_ATI = 0x881E; + public const int LUMINANCE_FLOAT32_APPLE = 0x8818; + public const int LUMINANCE_FLOAT32_ATI = 0x8818; + public const int LUMINANCE_INTEGER_EXT = 0x8D9C; + public const int LUMINANCE_SNORM = 0x9011; + public const int MAD_ATI = 0x8968; + public const int MAGNITUDE_BIAS_NV = 0x8718; + public const int MAGNITUDE_SCALE_NV = 0x8712; + public const int MAJOR_VERSION = 0x821B; + public const int MANUAL_GENERATE_MIPMAP = 0x8294; + public const int MAP1_BINORMAL_EXT = 0x8446; + public const int MAP1_TANGENT_EXT = 0x8444; + public const int MAP1_VERTEX_ATTRIB0_4_NV = 0x8660; + public const int MAP1_VERTEX_ATTRIB10_4_NV = 0x866A; + public const int MAP1_VERTEX_ATTRIB11_4_NV = 0x866B; + public const int MAP1_VERTEX_ATTRIB12_4_NV = 0x866C; + public const int MAP1_VERTEX_ATTRIB13_4_NV = 0x866D; + public const int MAP1_VERTEX_ATTRIB14_4_NV = 0x866E; + public const int MAP1_VERTEX_ATTRIB15_4_NV = 0x866F; + public const int MAP1_VERTEX_ATTRIB1_4_NV = 0x8661; + public const int MAP1_VERTEX_ATTRIB2_4_NV = 0x8662; + public const int MAP1_VERTEX_ATTRIB3_4_NV = 0x8663; + public const int MAP1_VERTEX_ATTRIB4_4_NV = 0x8664; + public const int MAP1_VERTEX_ATTRIB5_4_NV = 0x8665; + public const int MAP1_VERTEX_ATTRIB6_4_NV = 0x8666; + public const int MAP1_VERTEX_ATTRIB7_4_NV = 0x8667; + public const int MAP1_VERTEX_ATTRIB8_4_NV = 0x8668; + public const int MAP1_VERTEX_ATTRIB9_4_NV = 0x8669; + public const int MAP2_BINORMAL_EXT = 0x8447; + public const int MAP2_TANGENT_EXT = 0x8445; + public const int MAP2_VERTEX_ATTRIB0_4_NV = 0x8670; + public const int MAP2_VERTEX_ATTRIB10_4_NV = 0x867A; + public const int MAP2_VERTEX_ATTRIB11_4_NV = 0x867B; + public const int MAP2_VERTEX_ATTRIB12_4_NV = 0x867C; + public const int MAP2_VERTEX_ATTRIB13_4_NV = 0x867D; + public const int MAP2_VERTEX_ATTRIB14_4_NV = 0x867E; + public const int MAP2_VERTEX_ATTRIB15_4_NV = 0x867F; + public const int MAP2_VERTEX_ATTRIB1_4_NV = 0x8671; + public const int MAP2_VERTEX_ATTRIB2_4_NV = 0x8672; + public const int MAP2_VERTEX_ATTRIB3_4_NV = 0x8673; + public const int MAP2_VERTEX_ATTRIB4_4_NV = 0x8674; + public const int MAP2_VERTEX_ATTRIB5_4_NV = 0x8675; + public const int MAP2_VERTEX_ATTRIB6_4_NV = 0x8676; + public const int MAP2_VERTEX_ATTRIB7_4_NV = 0x8677; + public const int MAP2_VERTEX_ATTRIB8_4_NV = 0x8678; + public const int MAP2_VERTEX_ATTRIB9_4_NV = 0x8679; + public const int MAP_ATTRIB_U_ORDER_NV = 0x86C3; + public const int MAP_ATTRIB_V_ORDER_NV = 0x86C4; + public const int MAP_COHERENT_BIT = 0x0080; + public const int MAP_FLUSH_EXPLICIT_BIT = 0x0010; + public const int MAP_INVALIDATE_BUFFER_BIT = 0x0008; + public const int MAP_INVALIDATE_RANGE_BIT = 0x0004; + public const int MAP_PERSISTENT_BIT = 0x0040; + public const int MAP_READ_BIT = 0x0001; + public const int MAP_TESSELLATION_NV = 0x86C2; + public const int MAP_UNSYNCHRONIZED_BIT = 0x0020; + public const int MAP_WRITE_BIT = 0x0002; + public const int MATERIAL_SIDE_HINT_PGI = 0x1A22C; + public const int MATRIX0_ARB = 0x88C0; + public const int MATRIX0_NV = 0x8630; + public const int MATRIX10_ARB = 0x88CA; + public const int MATRIX11_ARB = 0x88CB; + public const int MATRIX12_ARB = 0x88CC; + public const int MATRIX13_ARB = 0x88CD; + public const int MATRIX14_ARB = 0x88CE; + public const int MATRIX15_ARB = 0x88CF; + public const int MATRIX16_ARB = 0x88D0; + public const int MATRIX17_ARB = 0x88D1; + public const int MATRIX18_ARB = 0x88D2; + public const int MATRIX19_ARB = 0x88D3; + public const int MATRIX1_ARB = 0x88C1; + public const int MATRIX1_NV = 0x8631; + public const int MATRIX20_ARB = 0x88D4; + public const int MATRIX21_ARB = 0x88D5; + public const int MATRIX22_ARB = 0x88D6; + public const int MATRIX23_ARB = 0x88D7; + public const int MATRIX24_ARB = 0x88D8; + public const int MATRIX25_ARB = 0x88D9; + public const int MATRIX26_ARB = 0x88DA; + public const int MATRIX27_ARB = 0x88DB; + public const int MATRIX28_ARB = 0x88DC; + public const int MATRIX29_ARB = 0x88DD; + public const int MATRIX2_ARB = 0x88C2; + public const int MATRIX2_NV = 0x8632; + public const int MATRIX30_ARB = 0x88DE; + public const int MATRIX31_ARB = 0x88DF; + public const int MATRIX3_ARB = 0x88C3; + public const int MATRIX3_NV = 0x8633; + public const int MATRIX4_ARB = 0x88C4; + public const int MATRIX4_NV = 0x8634; + public const int MATRIX5_ARB = 0x88C5; + public const int MATRIX5_NV = 0x8635; + public const int MATRIX6_ARB = 0x88C6; + public const int MATRIX6_NV = 0x8636; + public const int MATRIX7_ARB = 0x88C7; + public const int MATRIX7_NV = 0x8637; + public const int MATRIX8_ARB = 0x88C8; + public const int MATRIX9_ARB = 0x88C9; + public const int MATRIX_EXT = 0x87C0; + public const int MATRIX_INDEX_ARRAY_ARB = 0x8844; + public const int MATRIX_INDEX_ARRAY_POINTER_ARB = 0x8849; + public const int MATRIX_INDEX_ARRAY_SIZE_ARB = 0x8846; + public const int MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x8848; + public const int MATRIX_INDEX_ARRAY_TYPE_ARB = 0x8847; + public const int MATRIX_PALETTE_ARB = 0x8840; + public const int MATRIX_STRIDE = 0x92FF; + public const int MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = 0x00200000; + public const int MAT_AMBIENT_BIT_PGI = 0x00100000; + public const int MAT_COLOR_INDEXES_BIT_PGI = 0x01000000; + public const int MAT_DIFFUSE_BIT_PGI = 0x00400000; + public const int MAT_EMISSION_BIT_PGI = 0x00800000; + public const int MAT_SHININESS_BIT_PGI = 0x02000000; + public const int MAT_SPECULAR_BIT_PGI = 0x04000000; + public const int MAX = 0x8008; + public const int MAX_3D_TEXTURE_SIZE = 0x8073; + public const int MAX_3D_TEXTURE_SIZE_EXT = 0x8073; + public const int MAX_4D_TEXTURE_SIZE_SGIS = 0x8138; + public const int MAX_ACTIVE_LIGHTS_SGIX = 0x8405; + public const int MAX_ARRAY_TEXTURE_LAYERS = 0x88FF; + public const int MAX_ARRAY_TEXTURE_LAYERS_EXT = 0x88FF; + public const int MAX_ASYNC_DRAW_PIXELS_SGIX = 0x8360; + public const int MAX_ASYNC_HISTOGRAM_SGIX = 0x832D; + public const int MAX_ASYNC_READ_PIXELS_SGIX = 0x8361; + public const int MAX_ASYNC_TEX_IMAGE_SGIX = 0x835F; + public const int MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 0x92DC; + public const int MAX_ATOMIC_COUNTER_BUFFER_SIZE = 0x92D8; + public const int MAX_BINDABLE_UNIFORM_SIZE_EXT = 0x8DED; + public const int MAX_CLIPMAP_DEPTH_SGIX = 0x8177; + public const int MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8178; + public const int MAX_CLIP_DISTANCES = 0x0D32; + public const int MAX_COARSE_FRAGMENT_SAMPLES_NV = 0x955F; + public const int MAX_COLOR_ATTACHMENTS = 0x8CDF; + public const int MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF; + public const int MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD = 0x91B3; + public const int MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD = 0x91B4; + public const int MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B3; + public const int MAX_COLOR_TEXTURE_SAMPLES = 0x910E; + public const int MAX_COMBINED_ATOMIC_COUNTERS = 0x92D7; + public const int MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 0x92D1; + public const int MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x82FA; + public const int MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266; + public const int MAX_COMBINED_DIMENSIONS = 0x8282; + public const int MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33; + public const int MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32; + public const int MAX_COMBINED_IMAGE_UNIFORMS = 0x90CF; + public const int MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39; + public const int MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = 0x8F39; + public const int MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV = 0x8E67; + public const int MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39; + public const int MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC; + public const int MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV = 0x8E6F; + public const int MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E; + public const int MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F; + public const int MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D; + public const int MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x8B4D; + public const int MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E; + public const int MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31; + public const int MAX_COMPUTE_ATOMIC_COUNTERS = 0x8265; + public const int MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x8264; + public const int MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = 0x90EB; + public const int MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = 0x91BF; + public const int MAX_COMPUTE_IMAGE_UNIFORMS = 0x91BD; + public const int MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB; + public const int MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x8262; + public const int MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x91BC; + public const int MAX_COMPUTE_UNIFORM_BLOCKS = 0x91BB; + public const int MAX_COMPUTE_UNIFORM_COMPONENTS = 0x8263; + public const int MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = 0x9344; + public const int MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = 0x9345; + public const int MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE; + public const int MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x90EB; + public const int MAX_COMPUTE_WORK_GROUP_SIZE = 0x91BF; + public const int MAX_CONVOLUTION_HEIGHT_EXT = 0x801B; + public const int MAX_CONVOLUTION_WIDTH_EXT = 0x801A; + public const int MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C; + public const int MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 0x851C; + public const int MAX_CUBE_MAP_TEXTURE_SIZE_EXT = 0x851C; + public const int MAX_CULL_DISTANCES = 0x82F9; + public const int MAX_DEBUG_GROUP_STACK_DEPTH = 0x826C; + public const int MAX_DEBUG_LOGGED_MESSAGES = 0x9144; + public const int MAX_DEBUG_LOGGED_MESSAGES_AMD = 0x9144; + public const int MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x9144; + public const int MAX_DEBUG_MESSAGE_LENGTH = 0x9143; + public const int MAX_DEBUG_MESSAGE_LENGTH_AMD = 0x9143; + public const int MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x9143; + public const int MAX_DEEP_3D_TEXTURE_DEPTH_NV = 0x90D1; + public const int MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x90D0; + public const int MAX_DEFORMATION_ORDER_SGIX = 0x8197; + public const int MAX_DEPTH = 0x8280; + public const int MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD = 0x91B5; + public const int MAX_DEPTH_TEXTURE_SAMPLES = 0x910F; + public const int MAX_DETACHED_BUFFERS_NV = 0x95AD; + public const int MAX_DETACHED_TEXTURES_NV = 0x95AC; + public const int MAX_DRAW_BUFFERS = 0x8824; + public const int MAX_DRAW_BUFFERS_ARB = 0x8824; + public const int MAX_DRAW_BUFFERS_ATI = 0x8824; + public const int MAX_DRAW_MESH_TASKS_COUNT_NV = 0x953D; + public const int MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC; + public const int MAX_ELEMENTS_INDICES = 0x80E9; + public const int MAX_ELEMENTS_INDICES_EXT = 0x80E9; + public const int MAX_ELEMENTS_VERTICES = 0x80E8; + public const int MAX_ELEMENTS_VERTICES_EXT = 0x80E8; + public const int MAX_ELEMENT_INDEX = 0x8D6B; + public const int MAX_EXT = 0x8008; + public const int MAX_FOG_FUNC_POINTS_SGIS = 0x812C; + public const int MAX_FRAGMENT_ATOMIC_COUNTERS = 0x92D6; + public const int MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x92D0; + public const int MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = 0x8DE3; + public const int MAX_FRAGMENT_IMAGE_UNIFORMS = 0x90CE; + public const int MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125; + public const int MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C; + public const int MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5C; + public const int MAX_FRAGMENT_LIGHTS_SGIX = 0x8404; + public const int MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868; + public const int MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA; + public const int MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D; + public const int MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49; + public const int MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x8B49; + public const int MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD; + public const int MAX_FRAMEBUFFER_HEIGHT = 0x9316; + public const int MAX_FRAMEBUFFER_LAYERS = 0x9317; + public const int MAX_FRAMEBUFFER_SAMPLES = 0x9318; + public const int MAX_FRAMEBUFFER_WIDTH = 0x9315; + public const int MAX_FRAMEZOOM_FACTOR_SGIX = 0x818D; + public const int MAX_GENERAL_COMBINERS_NV = 0x854D; + public const int MAX_GEOMETRY_ATOMIC_COUNTERS = 0x92D5; + public const int MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x92CF; + public const int MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = 0x8DE4; + public const int MAX_GEOMETRY_IMAGE_UNIFORMS = 0x90CD; + public const int MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123; + public const int MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124; + public const int MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0; + public const int MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0; + public const int MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 0x8DE0; + public const int MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = 0x8E5A; + public const int MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A; + public const int MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7; + public const int MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29; + public const int MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29; + public const int MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 0x8C29; + public const int MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1; + public const int MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1; + public const int MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8DE1; + public const int MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C; + public const int MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF; + public const int MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF; + public const int MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8DDF; + public const int MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD; + public const int MAX_GEOMETRY_VARYING_COMPONENTS_EXT = 0x8DDD; + public const int MAX_HEIGHT = 0x827F; + public const int MAX_IMAGE_SAMPLES = 0x906D; + public const int MAX_IMAGE_SAMPLES_EXT = 0x906D; + public const int MAX_IMAGE_UNITS = 0x8F38; + public const int MAX_IMAGE_UNITS_EXT = 0x8F38; + public const int MAX_INTEGER_SAMPLES = 0x9110; + public const int MAX_LABEL_LENGTH = 0x82E8; + public const int MAX_LAYERS = 0x8281; + public const int MAX_LGPU_GPUS_NVX = 0x92BA; + public const int MAX_MAP_TESSELLATION_NV = 0x86D6; + public const int MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x8841; + public const int MAX_MESH_ATOMIC_COUNTERS_NV = 0x8E65; + public const int MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV = 0x8E64; + public const int MAX_MESH_IMAGE_UNIFORMS_NV = 0x8E62; + public const int MAX_MESH_OUTPUT_PRIMITIVES_NV = 0x9539; + public const int MAX_MESH_OUTPUT_VERTICES_NV = 0x9538; + public const int MAX_MESH_SHADER_STORAGE_BLOCKS_NV = 0x8E66; + public const int MAX_MESH_TEXTURE_IMAGE_UNITS_NV = 0x8E61; + public const int MAX_MESH_TOTAL_MEMORY_SIZE_NV = 0x9536; + public const int MAX_MESH_UNIFORM_BLOCKS_NV = 0x8E60; + public const int MAX_MESH_UNIFORM_COMPONENTS_NV = 0x8E63; + public const int MAX_MESH_VIEWS_NV = 0x9557; + public const int MAX_MESH_WORK_GROUP_INVOCATIONS_NV = 0x95A2; + public const int MAX_MESH_WORK_GROUP_SIZE_NV = 0x953B; + public const int MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11; + public const int MAX_NAME_LENGTH = 0x92F6; + public const int MAX_NUM_ACTIVE_VARIABLES = 0x92F7; + public const int MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8; + public const int MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CA; + public const int MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = 0x87CD; + public const int MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = 0x87CE; + public const int MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC; + public const int MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = 0x87CB; + public const int MAX_PALETTE_MATRICES_ARB = 0x8842; + public const int MAX_PATCH_VERTICES = 0x8E7D; + public const int MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8337; + public const int MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F1; + public const int MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B1; + public const int MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x880B; + public const int MAX_PROGRAM_ATTRIBS_ARB = 0x88AD; + public const int MAX_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8908; + public const int MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5; + public const int MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5; + public const int MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4; + public const int MAX_PROGRAM_GENERIC_ATTRIBS_NV = 0x8DA5; + public const int MAX_PROGRAM_GENERIC_RESULTS_NV = 0x8DA6; + public const int MAX_PROGRAM_IF_DEPTH_NV = 0x88F6; + public const int MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1; + public const int MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4; + public const int MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8; + public const int MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7; + public const int MAX_PROGRAM_MATRICES_ARB = 0x862F; + public const int MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E; + public const int MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B3; + public const int MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x880E; + public const int MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF; + public const int MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3; + public const int MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB; + public const int MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7; + public const int MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x8810; + public const int MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x880F; + public const int MAX_PROGRAM_OUTPUT_VERTICES_NV = 0x8C27; + public const int MAX_PROGRAM_PARAMETERS_ARB = 0x88A9; + public const int MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = 0x8DA0; + public const int MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = 0x8DA1; + public const int MAX_PROGRAM_PATCH_ATTRIBS_NV = 0x86D8; + public const int MAX_PROGRAM_RESULT_COMPONENTS_NV = 0x8909; + public const int MAX_PROGRAM_SUBROUTINE_NUM_NV = 0x8F45; + public const int MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = 0x8F44; + public const int MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5; + public const int MAX_PROGRAM_TEXEL_OFFSET = 0x8905; + public const int MAX_PROGRAM_TEXEL_OFFSET_EXT = 0x8905; + public const int MAX_PROGRAM_TEXEL_OFFSET_NV = 0x8905; + public const int MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = 0x8F9F; + public const int MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F; + public const int MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5F; + public const int MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5F; + public const int MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 0x880D; + public const int MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x880C; + public const int MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = 0x8C28; + public const int MAX_RASTER_SAMPLES_EXT = 0x9329; + public const int MAX_RATIONAL_EVAL_ORDER_NV = 0x86D7; + public const int MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8; + public const int MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x84F8; + public const int MAX_RECTANGLE_TEXTURE_SIZE_NV = 0x84F8; + public const int MAX_RENDERBUFFER_SIZE = 0x84E8; + public const int MAX_RENDERBUFFER_SIZE_EXT = 0x84E8; + public const int MAX_SAMPLES = 0x8D57; + public const int MAX_SAMPLES_EXT = 0x8D57; + public const int MAX_SAMPLE_MASK_WORDS = 0x8E59; + public const int MAX_SAMPLE_MASK_WORDS_NV = 0x8E59; + public const int MAX_SERVER_WAIT_TIMEOUT = 0x9111; + public const int MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35; + public const int MAX_SHADER_COMPILER_THREADS_ARB = 0x91B0; + public const int MAX_SHADER_COMPILER_THREADS_KHR = 0x91B0; + public const int MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE; + public const int MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD; + public const int MAX_SHININESS_NV = 0x8504; + public const int MAX_SPARSE_3D_TEXTURE_SIZE_AMD = 0x9199; + public const int MAX_SPARSE_3D_TEXTURE_SIZE_ARB = 0x9199; + public const int MAX_SPARSE_ARRAY_TEXTURE_LAYERS = 0x919A; + public const int MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB = 0x919A; + public const int MAX_SPARSE_TEXTURE_SIZE_AMD = 0x9198; + public const int MAX_SPARSE_TEXTURE_SIZE_ARB = 0x9198; + public const int MAX_SPOT_EXPONENT_NV = 0x8505; + public const int MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = 0x9349; + public const int MAX_SUBROUTINES = 0x8DE7; + public const int MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8; + public const int MAX_TASK_ATOMIC_COUNTERS_NV = 0x8E6D; + public const int MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV = 0x8E6C; + public const int MAX_TASK_IMAGE_UNIFORMS_NV = 0x8E6A; + public const int MAX_TASK_OUTPUT_COUNT_NV = 0x953A; + public const int MAX_TASK_SHADER_STORAGE_BLOCKS_NV = 0x8E6E; + public const int MAX_TASK_TEXTURE_IMAGE_UNITS_NV = 0x8E69; + public const int MAX_TASK_TOTAL_MEMORY_SIZE_NV = 0x9537; + public const int MAX_TASK_UNIFORM_BLOCKS_NV = 0x8E68; + public const int MAX_TASK_UNIFORM_COMPONENTS_NV = 0x8E6B; + public const int MAX_TASK_WORK_GROUP_INVOCATIONS_NV = 0x95A3; + public const int MAX_TASK_WORK_GROUP_SIZE_NV = 0x953C; + public const int MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x92D3; + public const int MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x92CD; + public const int MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x90CB; + public const int MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C; + public const int MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83; + public const int MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8; + public const int MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81; + public const int MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85; + public const int MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89; + public const int MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F; + public const int MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x92D4; + public const int MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x92CE; + public const int MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x90CC; + public const int MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D; + public const int MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86; + public const int MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9; + public const int MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82; + public const int MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A; + public const int MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80; + public const int MAX_TESS_GEN_LEVEL = 0x8E7E; + public const int MAX_TESS_PATCH_COMPONENTS = 0x8E84; + public const int MAX_TEXTURE_BUFFER_SIZE = 0x8C2B; + public const int MAX_TEXTURE_BUFFER_SIZE_ARB = 0x8C2B; + public const int MAX_TEXTURE_BUFFER_SIZE_EXT = 0x8C2B; + public const int MAX_TEXTURE_COORDS_ARB = 0x8871; + public const int MAX_TEXTURE_COORDS_NV = 0x8871; + public const int MAX_TEXTURE_IMAGE_UNITS = 0x8872; + public const int MAX_TEXTURE_IMAGE_UNITS_ARB = 0x8872; + public const int MAX_TEXTURE_IMAGE_UNITS_NV = 0x8872; + public const int MAX_TEXTURE_LOD_BIAS = 0x84FD; + public const int MAX_TEXTURE_LOD_BIAS_EXT = 0x84FD; + public const int MAX_TEXTURE_MAX_ANISOTROPY = 0x84FF; + public const int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF; + public const int MAX_TEXTURE_SIZE = 0x0D33; + public const int MAX_TEXTURE_UNITS_ARB = 0x84E2; + public const int MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV = 0x95B6; + public const int MAX_TRACK_MATRICES_NV = 0x862F; + public const int MAX_TRACK_MATRIX_STACK_DEPTH_NV = 0x862E; + public const int MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70; + public const int MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A; + public const int MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A; + public const int MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = 0x8C8A; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = 0x8C8B; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x8C8B; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = 0x8C80; + public const int MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x8C80; + public const int MAX_UNIFORM_BLOCK_SIZE = 0x8A30; + public const int MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F; + public const int MAX_UNIFORM_LOCATIONS = 0x826E; + public const int MAX_VARYING_COMPONENTS = 0x8B4B; + public const int MAX_VARYING_COMPONENTS_EXT = 0x8B4B; + public const int MAX_VARYING_FLOATS = 0x8B4B; + public const int MAX_VARYING_FLOATS_ARB = 0x8B4B; + public const int MAX_VARYING_VECTORS = 0x8DFC; + public const int MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = 0x8520; + public const int MAX_VERTEX_ATOMIC_COUNTERS = 0x92D2; + public const int MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x92CC; + public const int MAX_VERTEX_ATTRIBS = 0x8869; + public const int MAX_VERTEX_ATTRIBS_ARB = 0x8869; + public const int MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA; + public const int MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9; + public const int MAX_VERTEX_ATTRIB_STRIDE = 0x82E5; + public const int MAX_VERTEX_BINDABLE_UNIFORMS_EXT = 0x8DE2; + public const int MAX_VERTEX_HINT_PGI = 0x1A22D; + public const int MAX_VERTEX_IMAGE_UNIFORMS = 0x90CA; + public const int MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122; + public const int MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87C5; + public const int MAX_VERTEX_SHADER_INVARIANTS_EXT = 0x87C7; + public const int MAX_VERTEX_SHADER_LOCALS_EXT = 0x87C9; + public const int MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87C8; + public const int MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6; + public const int MAX_VERTEX_SHADER_VARIANTS_EXT = 0x87C6; + public const int MAX_VERTEX_STREAMS = 0x8E71; + public const int MAX_VERTEX_STREAMS_ATI = 0x876B; + public const int MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C; + public const int MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C; + public const int MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B; + public const int MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A; + public const int MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x8B4A; + public const int MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB; + public const int MAX_VERTEX_UNITS_ARB = 0x86A4; + public const int MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE; + public const int MAX_VERTEX_VARYING_COMPONENTS_EXT = 0x8DDE; + public const int MAX_VIEWPORTS = 0x825B; + public const int MAX_VIEWPORT_DIMS = 0x0D3A; + public const int MAX_VIEWS_OVR = 0x9631; + public const int MAX_WIDTH = 0x827E; + public const int MAX_WINDOW_RECTANGLES_EXT = 0x8F14; + public const int MEDIUM_FLOAT = 0x8DF1; + public const int MEDIUM_INT = 0x8DF4; + public const int MEMORY_ATTACHABLE_ALIGNMENT_NV = 0x95A6; + public const int MEMORY_ATTACHABLE_NV = 0x95A8; + public const int MEMORY_ATTACHABLE_SIZE_NV = 0x95A7; + public const int MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV = 0x9543; + public const int MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV = 0x92DF; + public const int MESH_OUTPUT_TYPE_NV = 0x957B; + public const int MESH_PRIMITIVES_OUT_NV = 0x957A; + public const int MESH_SHADER_BIT_NV = 0x00000040; + public const int MESH_SHADER_NV = 0x9559; + public const int MESH_SUBROUTINE_NV = 0x957C; + public const int MESH_SUBROUTINE_UNIFORM_NV = 0x957E; + public const int MESH_VERTICES_OUT_NV = 0x9579; + public const int MESH_WORK_GROUP_SIZE_NV = 0x953E; + public const int MIN = 0x8007; + public const int MINMAX_EXT = 0x802E; + public const int MINMAX_FORMAT_EXT = 0x802F; + public const int MINMAX_SINK_EXT = 0x8030; + public const int MINOR_VERSION = 0x821C; + public const int MINUS_CLAMPED_NV = 0x92B3; + public const int MINUS_NV = 0x929F; + public const int MIN_EXT = 0x8007; + public const int MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B; + public const int MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5B; + public const int MIN_LOD_WARNING_AMD = 0x919C; + public const int MIN_MAP_BUFFER_ALIGNMENT = 0x90BC; + public const int MIN_PROGRAM_TEXEL_OFFSET = 0x8904; + public const int MIN_PROGRAM_TEXEL_OFFSET_EXT = 0x8904; + public const int MIN_PROGRAM_TEXEL_OFFSET_NV = 0x8904; + public const int MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E; + public const int MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5E; + public const int MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5E; + public const int MIN_SAMPLE_SHADING_VALUE = 0x8C37; + public const int MIN_SAMPLE_SHADING_VALUE_ARB = 0x8C37; + public const int MIN_SPARSE_LEVEL_AMD = 0x919B; + public const int MIPMAP = 0x8293; + public const int MIRRORED_REPEAT = 0x8370; + public const int MIRRORED_REPEAT_ARB = 0x8370; + public const int MIRRORED_REPEAT_IBM = 0x8370; + public const int MIRROR_CLAMP_ATI = 0x8742; + public const int MIRROR_CLAMP_EXT = 0x8742; + public const int MIRROR_CLAMP_TO_BORDER_EXT = 0x8912; + public const int MIRROR_CLAMP_TO_EDGE = 0x8743; + public const int MIRROR_CLAMP_TO_EDGE_ATI = 0x8743; + public const int MIRROR_CLAMP_TO_EDGE_EXT = 0x8743; + public const int MITER_REVERT_NV = 0x90A7; + public const int MITER_TRUNCATE_NV = 0x90A8; + public const int MIXED_DEPTH_SAMPLES_SUPPORTED_NV = 0x932F; + public const int MIXED_STENCIL_SAMPLES_SUPPORTED_NV = 0x9330; + public const int MODELVIEW0_ARB = 0x1700; + public const int MODELVIEW0_EXT = 0x1700; + public const int MODELVIEW0_MATRIX_EXT = 0x0BA6; + public const int MODELVIEW0_STACK_DEPTH_EXT = 0x0BA3; + public const int MODELVIEW10_ARB = 0x872A; + public const int MODELVIEW11_ARB = 0x872B; + public const int MODELVIEW12_ARB = 0x872C; + public const int MODELVIEW13_ARB = 0x872D; + public const int MODELVIEW14_ARB = 0x872E; + public const int MODELVIEW15_ARB = 0x872F; + public const int MODELVIEW16_ARB = 0x8730; + public const int MODELVIEW17_ARB = 0x8731; + public const int MODELVIEW18_ARB = 0x8732; + public const int MODELVIEW19_ARB = 0x8733; + public const int MODELVIEW1_ARB = 0x850A; + public const int MODELVIEW1_EXT = 0x850A; + public const int MODELVIEW1_MATRIX_EXT = 0x8506; + public const int MODELVIEW1_STACK_DEPTH_EXT = 0x8502; + public const int MODELVIEW20_ARB = 0x8734; + public const int MODELVIEW21_ARB = 0x8735; + public const int MODELVIEW22_ARB = 0x8736; + public const int MODELVIEW23_ARB = 0x8737; + public const int MODELVIEW24_ARB = 0x8738; + public const int MODELVIEW25_ARB = 0x8739; + public const int MODELVIEW26_ARB = 0x873A; + public const int MODELVIEW27_ARB = 0x873B; + public const int MODELVIEW28_ARB = 0x873C; + public const int MODELVIEW29_ARB = 0x873D; + public const int MODELVIEW2_ARB = 0x8722; + public const int MODELVIEW30_ARB = 0x873E; + public const int MODELVIEW31_ARB = 0x873F; + public const int MODELVIEW3_ARB = 0x8723; + public const int MODELVIEW4_ARB = 0x8724; + public const int MODELVIEW5_ARB = 0x8725; + public const int MODELVIEW6_ARB = 0x8726; + public const int MODELVIEW7_ARB = 0x8727; + public const int MODELVIEW8_ARB = 0x8728; + public const int MODELVIEW9_ARB = 0x8729; + public const int MODELVIEW_PROJECTION_NV = 0x8629; + public const int MODULATE_ADD_ATI = 0x8744; + public const int MODULATE_SIGNED_ADD_ATI = 0x8745; + public const int MODULATE_SUBTRACT_ATI = 0x8746; + public const int MOVE_TO_CONTINUES_NV = 0x90B6; + public const int MOVE_TO_NV = 0x02; + public const int MOVE_TO_RESETS_NV = 0x90B5; + public const int MOV_ATI = 0x8961; + public const int MULTICAST_GPUS_NV = 0x92BA; + public const int MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9549; + public const int MULTIPLY_KHR = 0x9294; + public const int MULTIPLY_NV = 0x9294; + public const int MULTISAMPLE = 0x809D; + public const int MULTISAMPLES_NV = 0x9371; + public const int MULTISAMPLE_3DFX = 0x86B2; + public const int MULTISAMPLE_ARB = 0x809D; + public const int MULTISAMPLE_BIT_3DFX = 0x20000000; + public const int MULTISAMPLE_BIT_ARB = 0x20000000; + public const int MULTISAMPLE_BIT_EXT = 0x20000000; + public const int MULTISAMPLE_COVERAGE_MODES_NV = 0x8E12; + public const int MULTISAMPLE_EXT = 0x809D; + public const int MULTISAMPLE_FILTER_HINT_NV = 0x8534; + public const int MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB = 0x9382; + public const int MULTISAMPLE_LINE_WIDTH_RANGE_ARB = 0x9381; + public const int MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = 0x932B; + public const int MULTISAMPLE_SGIS = 0x809D; + public const int MUL_ATI = 0x8964; + public const int MVP_MATRIX_EXT = 0x87E3; + public const int NAMED_STRING_LENGTH_ARB = 0x8DE9; + public const int NAMED_STRING_TYPE_ARB = 0x8DEA; + public const int NAME_LENGTH = 0x92F9; + public const int NAND = 0x150E; + public const int NATIVE_GRAPHICS_BEGIN_HINT_PGI = 0x1A203; + public const int NATIVE_GRAPHICS_END_HINT_PGI = 0x1A204; + public const int NATIVE_GRAPHICS_HANDLE_PGI = 0x1A202; + public const int NEAREST = 0x2600; + public const int NEAREST_CLIPMAP_LINEAR_SGIX = 0x844E; + public const int NEAREST_CLIPMAP_NEAREST_SGIX = 0x844D; + public const int NEAREST_MIPMAP_LINEAR = 0x2702; + public const int NEAREST_MIPMAP_NEAREST = 0x2700; + public const int NEGATE_BIT_ATI = 0x00000004; + public const int NEGATIVE_ONE_EXT = 0x87DF; + public const int NEGATIVE_ONE_TO_ONE = 0x935E; + public const int NEGATIVE_W_EXT = 0x87DC; + public const int NEGATIVE_X_EXT = 0x87D9; + public const int NEGATIVE_Y_EXT = 0x87DA; + public const int NEGATIVE_Z_EXT = 0x87DB; + public const int NEVER = 0x0200; + public const int NEXT_BUFFER_NV = -2; + public const int NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x9025; + public const int NICEST = 0x1102; + public const int NONE = 0; + public const int NOOP = 0x1505; + public const int NOP_COMMAND_NV = 0x0001; + public const int NOR = 0x1508; + public const int NORMALIZED_RANGE_EXT = 0x87E0; + public const int NORMAL_ARRAY_ADDRESS_NV = 0x8F22; + public const int NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x8897; + public const int NORMAL_ARRAY_COUNT_EXT = 0x8080; + public const int NORMAL_ARRAY_EXT = 0x8075; + public const int NORMAL_ARRAY_LENGTH_NV = 0x8F2C; + public const int NORMAL_ARRAY_LIST_IBM = 103071; + public const int NORMAL_ARRAY_LIST_STRIDE_IBM = 103081; + public const int NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F6; + public const int NORMAL_ARRAY_POINTER_EXT = 0x808F; + public const int NORMAL_ARRAY_STRIDE_EXT = 0x807F; + public const int NORMAL_ARRAY_TYPE_EXT = 0x807E; + public const int NORMAL_BIT_PGI = 0x08000000; + public const int NORMAL_MAP_ARB = 0x8511; + public const int NORMAL_MAP_EXT = 0x8511; + public const int NORMAL_MAP_NV = 0x8511; + public const int NOTEQUAL = 0x0205; + public const int NO_ERROR = 0; + public const int NO_RESET_NOTIFICATION = 0x8261; + public const int NO_RESET_NOTIFICATION_ARB = 0x8261; + public const int NUM_ACTIVE_VARIABLES = 0x9304; + public const int NUM_COMPATIBLE_SUBROUTINES = 0x8E4A; + public const int NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2; + public const int NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A2; + public const int NUM_DEVICE_UUIDS_EXT = 0x9596; + public const int NUM_EXTENSIONS = 0x821D; + public const int NUM_FILL_STREAMS_NV = 0x8E29; + public const int NUM_FRAGMENT_CONSTANTS_ATI = 0x896F; + public const int NUM_FRAGMENT_REGISTERS_ATI = 0x896E; + public const int NUM_GENERAL_COMBINERS_NV = 0x854E; + public const int NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = 0x8973; + public const int NUM_INSTRUCTIONS_PER_PASS_ATI = 0x8971; + public const int NUM_INSTRUCTIONS_TOTAL_ATI = 0x8972; + public const int NUM_LOOPBACK_COMPONENTS_ATI = 0x8974; + public const int NUM_PASSES_ATI = 0x8970; + public const int NUM_PROGRAM_BINARY_FORMATS = 0x87FE; + public const int NUM_SAMPLE_COUNTS = 0x9380; + public const int NUM_SHADER_BINARY_FORMATS = 0x8DF9; + public const int NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9; + public const int NUM_SPARSE_LEVELS_ARB = 0x91AA; + public const int NUM_SPIR_V_EXTENSIONS = 0x9554; + public const int NUM_SUPPORTED_MULTISAMPLE_MODES_AMD = 0x91B6; + public const int NUM_TILING_TYPES_EXT = 0x9582; + public const int NUM_VIDEO_CAPTURE_STREAMS_NV = 0x9024; + public const int NUM_VIRTUAL_PAGE_SIZES_ARB = 0x91A8; + public const int NUM_WINDOW_RECTANGLES_EXT = 0x8F15; + public const int OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x8B89; + public const int OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x8B8A; + public const int OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86; + public const int OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87; + public const int OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85; + public const int OBJECT_BUFFER_SIZE_ATI = 0x8764; + public const int OBJECT_BUFFER_USAGE_ATI = 0x8765; + public const int OBJECT_COMPILE_STATUS_ARB = 0x8B81; + public const int OBJECT_DELETE_STATUS_ARB = 0x8B80; + public const int OBJECT_DISTANCE_TO_LINE_SGIS = 0x81F3; + public const int OBJECT_DISTANCE_TO_POINT_SGIS = 0x81F1; + public const int OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84; + public const int OBJECT_LINE_SGIS = 0x81F7; + public const int OBJECT_LINK_STATUS_ARB = 0x8B82; + public const int OBJECT_POINT_SGIS = 0x81F5; + public const int OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88; + public const int OBJECT_SUBTYPE_ARB = 0x8B4F; + public const int OBJECT_TYPE = 0x9112; + public const int OBJECT_TYPE_ARB = 0x8B4E; + public const int OBJECT_VALIDATE_STATUS_ARB = 0x8B83; + public const int OCCLUSION_QUERY_EVENT_MASK_AMD = 0x874F; + public const int OCCLUSION_TEST_HP = 0x8165; + public const int OCCLUSION_TEST_RESULT_HP = 0x8166; + public const int OFFSET = 0x92FC; + public const int OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = 0x8856; + public const int OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8857; + public const int OFFSET_HILO_TEXTURE_2D_NV = 0x8854; + public const int OFFSET_HILO_TEXTURE_RECTANGLE_NV = 0x8855; + public const int OFFSET_PROJECTIVE_TEXTURE_2D_NV = 0x8850; + public const int OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = 0x8851; + public const int OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8852; + public const int OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = 0x8853; + public const int OFFSET_TEXTURE_2D_BIAS_NV = 0x86E3; + public const int OFFSET_TEXTURE_2D_MATRIX_NV = 0x86E1; + public const int OFFSET_TEXTURE_2D_NV = 0x86E8; + public const int OFFSET_TEXTURE_2D_SCALE_NV = 0x86E2; + public const int OFFSET_TEXTURE_BIAS_NV = 0x86E3; + public const int OFFSET_TEXTURE_MATRIX_NV = 0x86E1; + public const int OFFSET_TEXTURE_RECTANGLE_NV = 0x864C; + public const int OFFSET_TEXTURE_RECTANGLE_SCALE_NV = 0x864D; + public const int OFFSET_TEXTURE_SCALE_NV = 0x86E2; + public const int ONE = 1; + public const int ONE_EXT = 0x87DE; + public const int ONE_MINUS_CONSTANT_ALPHA = 0x8004; + public const int ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004; + public const int ONE_MINUS_CONSTANT_COLOR = 0x8002; + public const int ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002; + public const int ONE_MINUS_DST_ALPHA = 0x0305; + public const int ONE_MINUS_DST_COLOR = 0x0307; + public const int ONE_MINUS_SRC1_ALPHA = 0x88FB; + public const int ONE_MINUS_SRC1_COLOR = 0x88FA; + public const int ONE_MINUS_SRC_ALPHA = 0x0303; + public const int ONE_MINUS_SRC_COLOR = 0x0301; + public const int OPERAND0_ALPHA_ARB = 0x8598; + public const int OPERAND0_ALPHA_EXT = 0x8598; + public const int OPERAND0_RGB_ARB = 0x8590; + public const int OPERAND0_RGB_EXT = 0x8590; + public const int OPERAND1_ALPHA_ARB = 0x8599; + public const int OPERAND1_ALPHA_EXT = 0x8599; + public const int OPERAND1_RGB_ARB = 0x8591; + public const int OPERAND1_RGB_EXT = 0x8591; + public const int OPERAND2_ALPHA_ARB = 0x859A; + public const int OPERAND2_ALPHA_EXT = 0x859A; + public const int OPERAND2_RGB_ARB = 0x8592; + public const int OPERAND2_RGB_EXT = 0x8592; + public const int OPERAND3_ALPHA_NV = 0x859B; + public const int OPERAND3_RGB_NV = 0x8593; + public const int OPTIMAL_TILING_EXT = 0x9584; + public const int OP_ADD_EXT = 0x8787; + public const int OP_CLAMP_EXT = 0x878E; + public const int OP_CROSS_PRODUCT_EXT = 0x8797; + public const int OP_DOT3_EXT = 0x8784; + public const int OP_DOT4_EXT = 0x8785; + public const int OP_EXP_BASE_2_EXT = 0x8791; + public const int OP_FLOOR_EXT = 0x878F; + public const int OP_FRAC_EXT = 0x8789; + public const int OP_INDEX_EXT = 0x8782; + public const int OP_LOG_BASE_2_EXT = 0x8792; + public const int OP_MADD_EXT = 0x8788; + public const int OP_MAX_EXT = 0x878A; + public const int OP_MIN_EXT = 0x878B; + public const int OP_MOV_EXT = 0x8799; + public const int OP_MULTIPLY_MATRIX_EXT = 0x8798; + public const int OP_MUL_EXT = 0x8786; + public const int OP_NEGATE_EXT = 0x8783; + public const int OP_POWER_EXT = 0x8793; + public const int OP_RECIP_EXT = 0x8794; + public const int OP_RECIP_SQRT_EXT = 0x8795; + public const int OP_ROUND_EXT = 0x8790; + public const int OP_SET_GE_EXT = 0x878C; + public const int OP_SET_LT_EXT = 0x878D; + public const int OP_SUB_EXT = 0x8796; + public const int OR = 0x1507; + public const int OR_INVERTED = 0x150D; + public const int OR_REVERSE = 0x150B; + public const int OUTPUT_COLOR0_EXT = 0x879B; + public const int OUTPUT_COLOR1_EXT = 0x879C; + public const int OUTPUT_FOG_EXT = 0x87BD; + public const int OUTPUT_TEXTURE_COORD0_EXT = 0x879D; + public const int OUTPUT_TEXTURE_COORD10_EXT = 0x87A7; + public const int OUTPUT_TEXTURE_COORD11_EXT = 0x87A8; + public const int OUTPUT_TEXTURE_COORD12_EXT = 0x87A9; + public const int OUTPUT_TEXTURE_COORD13_EXT = 0x87AA; + public const int OUTPUT_TEXTURE_COORD14_EXT = 0x87AB; + public const int OUTPUT_TEXTURE_COORD15_EXT = 0x87AC; + public const int OUTPUT_TEXTURE_COORD16_EXT = 0x87AD; + public const int OUTPUT_TEXTURE_COORD17_EXT = 0x87AE; + public const int OUTPUT_TEXTURE_COORD18_EXT = 0x87AF; + public const int OUTPUT_TEXTURE_COORD19_EXT = 0x87B0; + public const int OUTPUT_TEXTURE_COORD1_EXT = 0x879E; + public const int OUTPUT_TEXTURE_COORD20_EXT = 0x87B1; + public const int OUTPUT_TEXTURE_COORD21_EXT = 0x87B2; + public const int OUTPUT_TEXTURE_COORD22_EXT = 0x87B3; + public const int OUTPUT_TEXTURE_COORD23_EXT = 0x87B4; + public const int OUTPUT_TEXTURE_COORD24_EXT = 0x87B5; + public const int OUTPUT_TEXTURE_COORD25_EXT = 0x87B6; + public const int OUTPUT_TEXTURE_COORD26_EXT = 0x87B7; + public const int OUTPUT_TEXTURE_COORD27_EXT = 0x87B8; + public const int OUTPUT_TEXTURE_COORD28_EXT = 0x87B9; + public const int OUTPUT_TEXTURE_COORD29_EXT = 0x87BA; + public const int OUTPUT_TEXTURE_COORD2_EXT = 0x879F; + public const int OUTPUT_TEXTURE_COORD30_EXT = 0x87BB; + public const int OUTPUT_TEXTURE_COORD31_EXT = 0x87BC; + public const int OUTPUT_TEXTURE_COORD3_EXT = 0x87A0; + public const int OUTPUT_TEXTURE_COORD4_EXT = 0x87A1; + public const int OUTPUT_TEXTURE_COORD5_EXT = 0x87A2; + public const int OUTPUT_TEXTURE_COORD6_EXT = 0x87A3; + public const int OUTPUT_TEXTURE_COORD7_EXT = 0x87A4; + public const int OUTPUT_TEXTURE_COORD8_EXT = 0x87A5; + public const int OUTPUT_TEXTURE_COORD9_EXT = 0x87A6; + public const int OUTPUT_VERTEX_EXT = 0x879A; + public const int OUT_OF_MEMORY = 0x0505; + public const int OVERLAY_KHR = 0x9296; + public const int OVERLAY_NV = 0x9296; + public const int PACK_ALIGNMENT = 0x0D05; + public const int PACK_CMYK_HINT_EXT = 0x800E; + public const int PACK_COMPRESSED_BLOCK_DEPTH = 0x912D; + public const int PACK_COMPRESSED_BLOCK_HEIGHT = 0x912C; + public const int PACK_COMPRESSED_BLOCK_SIZE = 0x912E; + public const int PACK_COMPRESSED_BLOCK_WIDTH = 0x912B; + public const int PACK_IMAGE_DEPTH_SGIS = 0x8131; + public const int PACK_IMAGE_HEIGHT = 0x806C; + public const int PACK_IMAGE_HEIGHT_EXT = 0x806C; + public const int PACK_INVERT_MESA = 0x8758; + public const int PACK_LSB_FIRST = 0x0D01; + public const int PACK_RESAMPLE_OML = 0x8984; + public const int PACK_RESAMPLE_SGIX = 0x842E; + public const int PACK_ROW_BYTES_APPLE = 0x8A15; + public const int PACK_ROW_LENGTH = 0x0D02; + public const int PACK_SKIP_IMAGES = 0x806B; + public const int PACK_SKIP_IMAGES_EXT = 0x806B; + public const int PACK_SKIP_PIXELS = 0x0D04; + public const int PACK_SKIP_ROWS = 0x0D03; + public const int PACK_SKIP_VOLUMES_SGIS = 0x8130; + public const int PACK_SUBSAMPLE_RATE_SGIX = 0x85A0; + public const int PACK_SWAP_BYTES = 0x0D00; + public const int PALETTE4_R5_G6_B5_OES = 0x8B92; + public const int PALETTE4_RGB5_A1_OES = 0x8B94; + public const int PALETTE4_RGB8_OES = 0x8B90; + public const int PALETTE4_RGBA4_OES = 0x8B93; + public const int PALETTE4_RGBA8_OES = 0x8B91; + public const int PALETTE8_R5_G6_B5_OES = 0x8B97; + public const int PALETTE8_RGB5_A1_OES = 0x8B99; + public const int PALETTE8_RGB8_OES = 0x8B95; + public const int PALETTE8_RGBA4_OES = 0x8B98; + public const int PALETTE8_RGBA8_OES = 0x8B96; + public const int PARALLEL_ARRAYS_INTEL = 0x83F4; + public const int PARAMETER_BUFFER = 0x80EE; + public const int PARAMETER_BUFFER_ARB = 0x80EE; + public const int PARAMETER_BUFFER_BINDING = 0x80EF; + public const int PARAMETER_BUFFER_BINDING_ARB = 0x80EF; + public const int PARTIAL_SUCCESS_NV = 0x902E; + public const int PASS_THROUGH_NV = 0x86E6; + public const int PATCHES = 0x000E; + public const int PATCH_DEFAULT_INNER_LEVEL = 0x8E73; + public const int PATCH_DEFAULT_OUTER_LEVEL = 0x8E74; + public const int PATCH_VERTICES = 0x8E72; + public const int PATH_CLIENT_LENGTH_NV = 0x907F; + public const int PATH_COMMAND_COUNT_NV = 0x909D; + public const int PATH_COMPUTED_LENGTH_NV = 0x90A0; + public const int PATH_COORD_COUNT_NV = 0x909E; + public const int PATH_COVER_DEPTH_FUNC_NV = 0x90BF; + public const int PATH_DASH_ARRAY_COUNT_NV = 0x909F; + public const int PATH_DASH_CAPS_NV = 0x907B; + public const int PATH_DASH_OFFSET_NV = 0x907E; + public const int PATH_DASH_OFFSET_RESET_NV = 0x90B4; + public const int PATH_END_CAPS_NV = 0x9076; + public const int PATH_ERROR_POSITION_NV = 0x90AB; + public const int PATH_FILL_BOUNDING_BOX_NV = 0x90A1; + public const int PATH_FILL_COVER_MODE_NV = 0x9082; + public const int PATH_FILL_MASK_NV = 0x9081; + public const int PATH_FILL_MODE_NV = 0x9080; + public const int PATH_FORMAT_PS_NV = 0x9071; + public const int PATH_FORMAT_SVG_NV = 0x9070; + public const int PATH_GEN_COEFF_NV = 0x90B1; + public const int PATH_GEN_COMPONENTS_NV = 0x90B3; + public const int PATH_GEN_MODE_NV = 0x90B0; + public const int PATH_INITIAL_DASH_CAP_NV = 0x907C; + public const int PATH_INITIAL_END_CAP_NV = 0x9077; + public const int PATH_JOIN_STYLE_NV = 0x9079; + public const int PATH_MAX_MODELVIEW_STACK_DEPTH_NV = 0x0D36; + public const int PATH_MAX_PROJECTION_STACK_DEPTH_NV = 0x0D38; + public const int PATH_MITER_LIMIT_NV = 0x907A; + public const int PATH_MODELVIEW_MATRIX_NV = 0x0BA6; + public const int PATH_MODELVIEW_NV = 0x1700; + public const int PATH_MODELVIEW_STACK_DEPTH_NV = 0x0BA3; + public const int PATH_OBJECT_BOUNDING_BOX_NV = 0x908A; + public const int PATH_PROJECTION_MATRIX_NV = 0x0BA7; + public const int PATH_PROJECTION_NV = 0x1701; + public const int PATH_PROJECTION_STACK_DEPTH_NV = 0x0BA4; + public const int PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x90BD; + public const int PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x90BE; + public const int PATH_STENCIL_FUNC_NV = 0x90B7; + public const int PATH_STENCIL_REF_NV = 0x90B8; + public const int PATH_STENCIL_VALUE_MASK_NV = 0x90B9; + public const int PATH_STROKE_BOUNDING_BOX_NV = 0x90A2; + public const int PATH_STROKE_COVER_MODE_NV = 0x9083; + public const int PATH_STROKE_MASK_NV = 0x9084; + public const int PATH_STROKE_WIDTH_NV = 0x9075; + public const int PATH_TERMINAL_DASH_CAP_NV = 0x907D; + public const int PATH_TERMINAL_END_CAP_NV = 0x9078; + public const int PATH_TRANSPOSE_MODELVIEW_MATRIX_NV = 0x84E3; + public const int PATH_TRANSPOSE_PROJECTION_MATRIX_NV = 0x84E4; + public const int PERCENTAGE_AMD = 0x8BC3; + public const int PERFMON_RESULT_AMD = 0x8BC6; + public const int PERFMON_RESULT_AVAILABLE_AMD = 0x8BC4; + public const int PERFMON_RESULT_SIZE_AMD = 0x8BC5; + public const int PERFORMANCE_MONITOR_AMD = 0x9152; + public const int PERFQUERY_COUNTER_DATA_BOOL32_INTEL = 0x94FC; + public const int PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = 0x94FB; + public const int PERFQUERY_COUNTER_DATA_FLOAT_INTEL = 0x94FA; + public const int PERFQUERY_COUNTER_DATA_UINT32_INTEL = 0x94F8; + public const int PERFQUERY_COUNTER_DATA_UINT64_INTEL = 0x94F9; + public const int PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = 0x94FF; + public const int PERFQUERY_COUNTER_DURATION_NORM_INTEL = 0x94F1; + public const int PERFQUERY_COUNTER_DURATION_RAW_INTEL = 0x94F2; + public const int PERFQUERY_COUNTER_EVENT_INTEL = 0x94F0; + public const int PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = 0x94FE; + public const int PERFQUERY_COUNTER_RAW_INTEL = 0x94F4; + public const int PERFQUERY_COUNTER_THROUGHPUT_INTEL = 0x94F3; + public const int PERFQUERY_COUNTER_TIMESTAMP_INTEL = 0x94F5; + public const int PERFQUERY_DONOT_FLUSH_INTEL = 0x83F9; + public const int PERFQUERY_FLUSH_INTEL = 0x83FA; + public const int PERFQUERY_GLOBAL_CONTEXT_INTEL = 0x00000001; + public const int PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = 0x9500; + public const int PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = 0x94FD; + public const int PERFQUERY_SINGLE_CONTEXT_INTEL = 0x00000000; + public const int PERFQUERY_WAIT_INTEL = 0x83FB; + public const int PERTURB_EXT = 0x85AE; + public const int PER_GPU_STORAGE_BIT_NV = 0x0800; + public const int PER_GPU_STORAGE_NV = 0x9548; + public const int PER_STAGE_CONSTANTS_NV = 0x8535; + public const int PHONG_HINT_WIN = 0x80EB; + public const int PHONG_WIN = 0x80EA; + public const int PINLIGHT_NV = 0x92A8; + public const int PIXELS_PER_SAMPLE_PATTERN_X_AMD = 0x91AE; + public const int PIXELS_PER_SAMPLE_PATTERN_Y_AMD = 0x91AF; + public const int PIXEL_BUFFER_BARRIER_BIT = 0x00000080; + public const int PIXEL_BUFFER_BARRIER_BIT_EXT = 0x00000080; + public const int PIXEL_COUNTER_BITS_NV = 0x8864; + public const int PIXEL_COUNT_AVAILABLE_NV = 0x8867; + public const int PIXEL_COUNT_NV = 0x8866; + public const int PIXEL_CUBIC_WEIGHT_EXT = 0x8333; + public const int PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = 0x8355; + public const int PIXEL_FRAGMENT_RGB_SOURCE_SGIS = 0x8354; + public const int PIXEL_GROUP_COLOR_SGIS = 0x8356; + public const int PIXEL_MAG_FILTER_EXT = 0x8331; + public const int PIXEL_MIN_FILTER_EXT = 0x8332; + public const int PIXEL_PACK_BUFFER = 0x88EB; + public const int PIXEL_PACK_BUFFER_ARB = 0x88EB; + public const int PIXEL_PACK_BUFFER_BINDING = 0x88ED; + public const int PIXEL_PACK_BUFFER_BINDING_ARB = 0x88ED; + public const int PIXEL_PACK_BUFFER_BINDING_EXT = 0x88ED; + public const int PIXEL_PACK_BUFFER_EXT = 0x88EB; + public const int PIXEL_SUBSAMPLE_2424_SGIX = 0x85A3; + public const int PIXEL_SUBSAMPLE_4242_SGIX = 0x85A4; + public const int PIXEL_SUBSAMPLE_4444_SGIX = 0x85A2; + public const int PIXEL_TEXTURE_SGIS = 0x8353; + public const int PIXEL_TEX_GEN_MODE_SGIX = 0x832B; + public const int PIXEL_TEX_GEN_SGIX = 0x8139; + public const int PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x813E; + public const int PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x813F; + public const int PIXEL_TILE_CACHE_SIZE_SGIX = 0x8145; + public const int PIXEL_TILE_GRID_DEPTH_SGIX = 0x8144; + public const int PIXEL_TILE_GRID_HEIGHT_SGIX = 0x8143; + public const int PIXEL_TILE_GRID_WIDTH_SGIX = 0x8142; + public const int PIXEL_TILE_HEIGHT_SGIX = 0x8141; + public const int PIXEL_TILE_WIDTH_SGIX = 0x8140; + public const int PIXEL_TRANSFORM_2D_EXT = 0x8330; + public const int PIXEL_TRANSFORM_2D_MATRIX_EXT = 0x8338; + public const int PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8336; + public const int PIXEL_UNPACK_BUFFER = 0x88EC; + public const int PIXEL_UNPACK_BUFFER_ARB = 0x88EC; + public const int PIXEL_UNPACK_BUFFER_BINDING = 0x88EF; + public const int PIXEL_UNPACK_BUFFER_BINDING_ARB = 0x88EF; + public const int PIXEL_UNPACK_BUFFER_BINDING_EXT = 0x88EF; + public const int PIXEL_UNPACK_BUFFER_EXT = 0x88EC; + public const int PLUS_CLAMPED_ALPHA_NV = 0x92B2; + public const int PLUS_CLAMPED_NV = 0x92B1; + public const int PLUS_DARKER_NV = 0x9292; + public const int PLUS_NV = 0x9291; + public const int PN_TRIANGLES_ATI = 0x87F0; + public const int PN_TRIANGLES_NORMAL_MODE_ATI = 0x87F3; + public const int PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = 0x87F7; + public const int PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = 0x87F8; + public const int PN_TRIANGLES_POINT_MODE_ATI = 0x87F2; + public const int PN_TRIANGLES_POINT_MODE_CUBIC_ATI = 0x87F6; + public const int PN_TRIANGLES_POINT_MODE_LINEAR_ATI = 0x87F5; + public const int PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F4; + public const int POINT = 0x1B00; + public const int POINTS = 0x0000; + public const int POINT_DISTANCE_ATTENUATION_ARB = 0x8129; + public const int POINT_FADE_THRESHOLD_SIZE = 0x8128; + public const int POINT_FADE_THRESHOLD_SIZE_ARB = 0x8128; + public const int POINT_FADE_THRESHOLD_SIZE_EXT = 0x8128; + public const int POINT_FADE_THRESHOLD_SIZE_SGIS = 0x8128; + public const int POINT_SIZE = 0x0B11; + public const int POINT_SIZE_GRANULARITY = 0x0B13; + public const int POINT_SIZE_MAX_ARB = 0x8127; + public const int POINT_SIZE_MAX_EXT = 0x8127; + public const int POINT_SIZE_MAX_SGIS = 0x8127; + public const int POINT_SIZE_MIN_ARB = 0x8126; + public const int POINT_SIZE_MIN_EXT = 0x8126; + public const int POINT_SIZE_MIN_SGIS = 0x8126; + public const int POINT_SIZE_RANGE = 0x0B12; + public const int POINT_SPRITE_ARB = 0x8861; + public const int POINT_SPRITE_COORD_ORIGIN = 0x8CA0; + public const int POINT_SPRITE_NV = 0x8861; + public const int POINT_SPRITE_R_MODE_NV = 0x8863; + public const int POLYGON_MODE = 0x0B40; + public const int POLYGON_OFFSET_BIAS_EXT = 0x8039; + public const int POLYGON_OFFSET_CLAMP = 0x8E1B; + public const int POLYGON_OFFSET_CLAMP_EXT = 0x8E1B; + public const int POLYGON_OFFSET_COMMAND_NV = 0x000E; + public const int POLYGON_OFFSET_EXT = 0x8037; + public const int POLYGON_OFFSET_FACTOR = 0x8038; + public const int POLYGON_OFFSET_FACTOR_EXT = 0x8038; + public const int POLYGON_OFFSET_FILL = 0x8037; + public const int POLYGON_OFFSET_LINE = 0x2A02; + public const int POLYGON_OFFSET_POINT = 0x2A01; + public const int POLYGON_OFFSET_UNITS = 0x2A00; + public const int POLYGON_SMOOTH = 0x0B41; + public const int POLYGON_SMOOTH_HINT = 0x0C53; + public const int POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x80BB; + public const int POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x80B7; + public const int POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x80BA; + public const int POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x80B6; + public const int POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D2; + public const int POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x80B9; + public const int POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x80B5; + public const int POST_COLOR_MATRIX_RED_BIAS_SGI = 0x80B8; + public const int POST_COLOR_MATRIX_RED_SCALE_SGI = 0x80B4; + public const int POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x8023; + public const int POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x801F; + public const int POST_CONVOLUTION_BLUE_BIAS_EXT = 0x8022; + public const int POST_CONVOLUTION_BLUE_SCALE_EXT = 0x801E; + public const int POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D1; + public const int POST_CONVOLUTION_GREEN_BIAS_EXT = 0x8021; + public const int POST_CONVOLUTION_GREEN_SCALE_EXT = 0x801D; + public const int POST_CONVOLUTION_RED_BIAS_EXT = 0x8020; + public const int POST_CONVOLUTION_RED_SCALE_EXT = 0x801C; + public const int POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8162; + public const int POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x817B; + public const int POST_TEXTURE_FILTER_BIAS_SGIX = 0x8179; + public const int POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x817C; + public const int POST_TEXTURE_FILTER_SCALE_SGIX = 0x817A; + public const int PREFER_DOUBLEBUFFER_HINT_PGI = 0x1A1F8; + public const int PRESENT_DURATION_NV = 0x8E2B; + public const int PRESENT_TIME_NV = 0x8E2A; + public const int PRESERVE_ATI = 0x8762; + public const int PREVIOUS_ARB = 0x8578; + public const int PREVIOUS_EXT = 0x8578; + public const int PREVIOUS_TEXTURE_INPUT_NV = 0x86E4; + public const int PRIMARY_COLOR_ARB = 0x8577; + public const int PRIMARY_COLOR_EXT = 0x8577; + public const int PRIMARY_COLOR_NV = 0x852C; + public const int PRIMITIVES_GENERATED = 0x8C87; + public const int PRIMITIVES_GENERATED_EXT = 0x8C87; + public const int PRIMITIVES_GENERATED_NV = 0x8C87; + public const int PRIMITIVES_SUBMITTED = 0x82EF; + public const int PRIMITIVES_SUBMITTED_ARB = 0x82EF; + public const int PRIMITIVE_BOUNDING_BOX_ARB = 0x92BE; + public const int PRIMITIVE_ID_NV = 0x8C7C; + public const int PRIMITIVE_RESTART = 0x8F9D; + public const int PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69; + public const int PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221; + public const int PRIMITIVE_RESTART_INDEX = 0x8F9E; + public const int PRIMITIVE_RESTART_INDEX_NV = 0x8559; + public const int PRIMITIVE_RESTART_NV = 0x8558; + public const int PROGRAM = 0x82E2; + public const int PROGRAMMABLE_SAMPLE_LOCATION_ARB = 0x9341; + public const int PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9341; + public const int PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB = 0x9340; + public const int PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = 0x9340; + public const int PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B0; + public const int PROGRAM_ALU_INSTRUCTIONS_ARB = 0x8805; + public const int PROGRAM_ATTRIBS_ARB = 0x88AC; + public const int PROGRAM_ATTRIB_COMPONENTS_NV = 0x8906; + public const int PROGRAM_BINARY_FORMATS = 0x87FF; + public const int PROGRAM_BINARY_FORMAT_MESA = 0x875F; + public const int PROGRAM_BINARY_LENGTH = 0x8741; + public const int PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257; + public const int PROGRAM_BINDING_ARB = 0x8677; + public const int PROGRAM_ERROR_POSITION_ARB = 0x864B; + public const int PROGRAM_ERROR_POSITION_NV = 0x864B; + public const int PROGRAM_ERROR_STRING_ARB = 0x8874; + public const int PROGRAM_ERROR_STRING_NV = 0x8874; + public const int PROGRAM_FORMAT_ARB = 0x8876; + public const int PROGRAM_FORMAT_ASCII_ARB = 0x8875; + public const int PROGRAM_INPUT = 0x92E3; + public const int PROGRAM_INSTRUCTIONS_ARB = 0x88A0; + public const int PROGRAM_LENGTH_ARB = 0x8627; + public const int PROGRAM_LENGTH_NV = 0x8627; + public const int PROGRAM_MATRIX_EXT = 0x8E2D; + public const int PROGRAM_MATRIX_STACK_DEPTH_EXT = 0x8E2F; + public const int PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B2; + public const int PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x8808; + public const int PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE; + public const int PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2; + public const int PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA; + public const int PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6; + public const int PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x880A; + public const int PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x8809; + public const int PROGRAM_OBJECT_ARB = 0x8B40; + public const int PROGRAM_OBJECT_EXT = 0x8B40; + public const int PROGRAM_OUTPUT = 0x92E4; + public const int PROGRAM_PARAMETERS_ARB = 0x88A8; + public const int PROGRAM_PARAMETER_NV = 0x8644; + public const int PROGRAM_PIPELINE = 0x82E4; + public const int PROGRAM_PIPELINE_BINDING = 0x825A; + public const int PROGRAM_PIPELINE_OBJECT_EXT = 0x8A4F; + public const int PROGRAM_POINT_SIZE = 0x8642; + public const int PROGRAM_POINT_SIZE_ARB = 0x8642; + public const int PROGRAM_POINT_SIZE_EXT = 0x8642; + public const int PROGRAM_RESIDENT_NV = 0x8647; + public const int PROGRAM_RESULT_COMPONENTS_NV = 0x8907; + public const int PROGRAM_SEPARABLE = 0x8258; + public const int PROGRAM_STRING_ARB = 0x8628; + public const int PROGRAM_STRING_NV = 0x8628; + public const int PROGRAM_TARGET_NV = 0x8646; + public const int PROGRAM_TEMPORARIES_ARB = 0x88A4; + public const int PROGRAM_TEX_INDIRECTIONS_ARB = 0x8807; + public const int PROGRAM_TEX_INSTRUCTIONS_ARB = 0x8806; + public const int PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6; + public const int PROTECTED_MEMORY_OBJECT_EXT = 0x959B; + public const int PROVOKING_VERTEX = 0x8E4F; + public const int PROVOKING_VERTEX_EXT = 0x8E4F; + public const int PROXY_COLOR_TABLE_SGI = 0x80D3; + public const int PROXY_HISTOGRAM_EXT = 0x8025; + public const int PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D5; + public const int PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D4; + public const int PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8163; + public const int PROXY_TEXTURE_1D = 0x8063; + public const int PROXY_TEXTURE_1D_ARRAY = 0x8C19; + public const int PROXY_TEXTURE_1D_ARRAY_EXT = 0x8C19; + public const int PROXY_TEXTURE_1D_EXT = 0x8063; + public const int PROXY_TEXTURE_1D_STACK_MESAX = 0x875B; + public const int PROXY_TEXTURE_2D = 0x8064; + public const int PROXY_TEXTURE_2D_ARRAY = 0x8C1B; + public const int PROXY_TEXTURE_2D_ARRAY_EXT = 0x8C1B; + public const int PROXY_TEXTURE_2D_EXT = 0x8064; + public const int PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101; + public const int PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103; + public const int PROXY_TEXTURE_2D_STACK_MESAX = 0x875C; + public const int PROXY_TEXTURE_3D = 0x8070; + public const int PROXY_TEXTURE_3D_EXT = 0x8070; + public const int PROXY_TEXTURE_4D_SGIS = 0x8135; + public const int PROXY_TEXTURE_COLOR_TABLE_SGI = 0x80BD; + public const int PROXY_TEXTURE_CUBE_MAP = 0x851B; + public const int PROXY_TEXTURE_CUBE_MAP_ARB = 0x851B; + public const int PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B; + public const int PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x900B; + public const int PROXY_TEXTURE_CUBE_MAP_EXT = 0x851B; + public const int PROXY_TEXTURE_RECTANGLE = 0x84F7; + public const int PROXY_TEXTURE_RECTANGLE_ARB = 0x84F7; + public const int PROXY_TEXTURE_RECTANGLE_NV = 0x84F7; + public const int PURGEABLE_APPLE = 0x8A1D; + public const int PURGED_CONTEXT_RESET_NV = 0x92BB; + public const int QUADRATIC_CURVE_TO_NV = 0x0A; + public const int QUADS = 0x0007; + public const int QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C; + public const int QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = 0x8E4C; + public const int QUAD_ALPHA4_SGIS = 0x811E; + public const int QUAD_ALPHA8_SGIS = 0x811F; + public const int QUAD_INTENSITY4_SGIS = 0x8122; + public const int QUAD_INTENSITY8_SGIS = 0x8123; + public const int QUAD_LUMINANCE4_SGIS = 0x8120; + public const int QUAD_LUMINANCE8_SGIS = 0x8121; + public const int QUAD_MESH_SUN = 0x8614; + public const int QUAD_TEXTURE_SELECT_SGIS = 0x8125; + public const int QUARTER_BIT_ATI = 0x00000010; + public const int QUERY = 0x82E3; + public const uint QUERY_ALL_EVENT_BITS_AMD = 0xFFFFFFFF; + public const int QUERY_BUFFER = 0x9192; + public const int QUERY_BUFFER_AMD = 0x9192; + public const int QUERY_BUFFER_BARRIER_BIT = 0x00008000; + public const int QUERY_BUFFER_BINDING = 0x9193; + public const int QUERY_BUFFER_BINDING_AMD = 0x9193; + public const int QUERY_BY_REGION_NO_WAIT = 0x8E16; + public const int QUERY_BY_REGION_NO_WAIT_INVERTED = 0x8E1A; + public const int QUERY_BY_REGION_NO_WAIT_NV = 0x8E16; + public const int QUERY_BY_REGION_WAIT = 0x8E15; + public const int QUERY_BY_REGION_WAIT_INVERTED = 0x8E19; + public const int QUERY_BY_REGION_WAIT_NV = 0x8E15; + public const int QUERY_COUNTER_BITS = 0x8864; + public const int QUERY_COUNTER_BITS_ARB = 0x8864; + public const int QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD = 0x00000008; + public const int QUERY_DEPTH_FAIL_EVENT_BIT_AMD = 0x00000002; + public const int QUERY_DEPTH_PASS_EVENT_BIT_AMD = 0x00000001; + public const int QUERY_NO_WAIT = 0x8E14; + public const int QUERY_NO_WAIT_INVERTED = 0x8E18; + public const int QUERY_NO_WAIT_NV = 0x8E14; + public const int QUERY_OBJECT_AMD = 0x9153; + public const int QUERY_OBJECT_EXT = 0x9153; + public const int QUERY_RESOURCE_BUFFEROBJECT_NV = 0x9547; + public const int QUERY_RESOURCE_MEMTYPE_VIDMEM_NV = 0x9542; + public const int QUERY_RESOURCE_RENDERBUFFER_NV = 0x9546; + public const int QUERY_RESOURCE_SYS_RESERVED_NV = 0x9544; + public const int QUERY_RESOURCE_TEXTURE_NV = 0x9545; + public const int QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV = 0x9540; + public const int QUERY_RESULT = 0x8866; + public const int QUERY_RESULT_ARB = 0x8866; + public const int QUERY_RESULT_AVAILABLE = 0x8867; + public const int QUERY_RESULT_AVAILABLE_ARB = 0x8867; + public const int QUERY_RESULT_NO_WAIT = 0x9194; + public const int QUERY_RESULT_NO_WAIT_AMD = 0x9194; + public const int QUERY_STENCIL_FAIL_EVENT_BIT_AMD = 0x00000004; + public const int QUERY_TARGET = 0x82EA; + public const int QUERY_WAIT = 0x8E13; + public const int QUERY_WAIT_INVERTED = 0x8E17; + public const int QUERY_WAIT_NV = 0x8E13; + public const int R11F_G11F_B10F = 0x8C3A; + public const int R11F_G11F_B10F_EXT = 0x8C3A; + public const int R16 = 0x822A; + public const int R16F = 0x822D; + public const int R16F_EXT = 0x822D; + public const int R16I = 0x8233; + public const int R16UI = 0x8234; + public const int R16_SNORM = 0x8F98; + public const int R1UI_C3F_V3F_SUN = 0x85C6; + public const int R1UI_C4F_N3F_V3F_SUN = 0x85C8; + public const int R1UI_C4UB_V3F_SUN = 0x85C5; + public const int R1UI_N3F_V3F_SUN = 0x85C7; + public const int R1UI_T2F_C4F_N3F_V3F_SUN = 0x85CB; + public const int R1UI_T2F_N3F_V3F_SUN = 0x85CA; + public const int R1UI_T2F_V3F_SUN = 0x85C9; + public const int R1UI_V3F_SUN = 0x85C4; + public const int R32F = 0x822E; + public const int R32F_EXT = 0x822E; + public const int R32I = 0x8235; + public const int R32UI = 0x8236; + public const int R3_G3_B2 = 0x2A10; + public const int R8 = 0x8229; + public const int R8I = 0x8231; + public const int R8UI = 0x8232; + public const int R8_EXT = 0x8229; + public const int R8_SNORM = 0x8F94; + public const int RASTERIZER_DISCARD = 0x8C89; + public const int RASTERIZER_DISCARD_EXT = 0x8C89; + public const int RASTERIZER_DISCARD_NV = 0x8C89; + public const int RASTER_FIXED_SAMPLE_LOCATIONS_EXT = 0x932A; + public const int RASTER_MULTISAMPLE_EXT = 0x9327; + public const int RASTER_POSITION_UNCLIPPED_IBM = 0x19262; + public const int RASTER_SAMPLES_EXT = 0x9328; + public const int READ_BUFFER = 0x0C02; + public const int READ_FRAMEBUFFER = 0x8CA8; + public const int READ_FRAMEBUFFER_BINDING = 0x8CAA; + public const int READ_FRAMEBUFFER_BINDING_EXT = 0x8CAA; + public const int READ_FRAMEBUFFER_EXT = 0x8CA8; + public const int READ_ONLY = 0x88B8; + public const int READ_ONLY_ARB = 0x88B8; + public const int READ_PIXELS = 0x828C; + public const int READ_PIXELS_FORMAT = 0x828D; + public const int READ_PIXELS_TYPE = 0x828E; + public const int READ_PIXEL_DATA_RANGE_LENGTH_NV = 0x887B; + public const int READ_PIXEL_DATA_RANGE_NV = 0x8879; + public const int READ_PIXEL_DATA_RANGE_POINTER_NV = 0x887D; + public const int READ_WRITE = 0x88BA; + public const int READ_WRITE_ARB = 0x88BA; + public const int RECLAIM_MEMORY_HINT_PGI = 0x1A1FE; + public const int RECT_NV = 0xF6; + public const int RED = 0x1903; + public const int REDUCE_EXT = 0x8016; + public const int RED_BIT_ATI = 0x00000001; + public const int RED_INTEGER = 0x8D94; + public const int RED_INTEGER_EXT = 0x8D94; + public const int RED_MAX_CLAMP_INGR = 0x8564; + public const int RED_MIN_CLAMP_INGR = 0x8560; + public const int RED_NV = 0x1903; + public const int RED_SNORM = 0x8F90; + public const int REFERENCED_BY_COMPUTE_SHADER = 0x930B; + public const int REFERENCED_BY_FRAGMENT_SHADER = 0x930A; + public const int REFERENCED_BY_GEOMETRY_SHADER = 0x9309; + public const int REFERENCED_BY_MESH_SHADER_NV = 0x95A0; + public const int REFERENCED_BY_TASK_SHADER_NV = 0x95A1; + public const int REFERENCED_BY_TESS_CONTROL_SHADER = 0x9307; + public const int REFERENCED_BY_TESS_EVALUATION_SHADER = 0x9308; + public const int REFERENCED_BY_VERTEX_SHADER = 0x9306; + public const int REFERENCE_PLANE_EQUATION_SGIX = 0x817E; + public const int REFERENCE_PLANE_SGIX = 0x817D; + public const int REFLECTION_MAP_ARB = 0x8512; + public const int REFLECTION_MAP_EXT = 0x8512; + public const int REFLECTION_MAP_NV = 0x8512; + public const int REGISTER_COMBINERS_NV = 0x8522; + public const int REG_0_ATI = 0x8921; + public const int REG_10_ATI = 0x892B; + public const int REG_11_ATI = 0x892C; + public const int REG_12_ATI = 0x892D; + public const int REG_13_ATI = 0x892E; + public const int REG_14_ATI = 0x892F; + public const int REG_15_ATI = 0x8930; + public const int REG_16_ATI = 0x8931; + public const int REG_17_ATI = 0x8932; + public const int REG_18_ATI = 0x8933; + public const int REG_19_ATI = 0x8934; + public const int REG_1_ATI = 0x8922; + public const int REG_20_ATI = 0x8935; + public const int REG_21_ATI = 0x8936; + public const int REG_22_ATI = 0x8937; + public const int REG_23_ATI = 0x8938; + public const int REG_24_ATI = 0x8939; + public const int REG_25_ATI = 0x893A; + public const int REG_26_ATI = 0x893B; + public const int REG_27_ATI = 0x893C; + public const int REG_28_ATI = 0x893D; + public const int REG_29_ATI = 0x893E; + public const int REG_2_ATI = 0x8923; + public const int REG_30_ATI = 0x893F; + public const int REG_31_ATI = 0x8940; + public const int REG_3_ATI = 0x8924; + public const int REG_4_ATI = 0x8925; + public const int REG_5_ATI = 0x8926; + public const int REG_6_ATI = 0x8927; + public const int REG_7_ATI = 0x8928; + public const int REG_8_ATI = 0x8929; + public const int REG_9_ATI = 0x892A; + public const int RELATIVE_ARC_TO_NV = 0xFF; + public const int RELATIVE_CONIC_CURVE_TO_NV = 0x1B; + public const int RELATIVE_CUBIC_CURVE_TO_NV = 0x0D; + public const int RELATIVE_HORIZONTAL_LINE_TO_NV = 0x07; + public const int RELATIVE_LARGE_CCW_ARC_TO_NV = 0x17; + public const int RELATIVE_LARGE_CW_ARC_TO_NV = 0x19; + public const int RELATIVE_LINE_TO_NV = 0x05; + public const int RELATIVE_MOVE_TO_NV = 0x03; + public const int RELATIVE_QUADRATIC_CURVE_TO_NV = 0x0B; + public const int RELATIVE_RECT_NV = 0xF7; + public const int RELATIVE_ROUNDED_RECT2_NV = 0xEB; + public const int RELATIVE_ROUNDED_RECT4_NV = 0xED; + public const int RELATIVE_ROUNDED_RECT8_NV = 0xEF; + public const int RELATIVE_ROUNDED_RECT_NV = 0xE9; + public const int RELATIVE_SMALL_CCW_ARC_TO_NV = 0x13; + public const int RELATIVE_SMALL_CW_ARC_TO_NV = 0x15; + public const int RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = 0x11; + public const int RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0F; + public const int RELATIVE_VERTICAL_LINE_TO_NV = 0x09; + public const int RELEASED_APPLE = 0x8A19; + public const int RENDERBUFFER = 0x8D41; + public const int RENDERBUFFER_ALPHA_SIZE = 0x8D53; + public const int RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53; + public const int RENDERBUFFER_BINDING = 0x8CA7; + public const int RENDERBUFFER_BINDING_EXT = 0x8CA7; + public const int RENDERBUFFER_BLUE_SIZE = 0x8D52; + public const int RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52; + public const int RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10; + public const int RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB; + public const int RENDERBUFFER_DEPTH_SIZE = 0x8D54; + public const int RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54; + public const int RENDERBUFFER_EXT = 0x8D41; + public const int RENDERBUFFER_FREE_MEMORY_ATI = 0x87FD; + public const int RENDERBUFFER_GREEN_SIZE = 0x8D51; + public const int RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51; + public const int RENDERBUFFER_HEIGHT = 0x8D43; + public const int RENDERBUFFER_HEIGHT_EXT = 0x8D43; + public const int RENDERBUFFER_INTERNAL_FORMAT = 0x8D44; + public const int RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44; + public const int RENDERBUFFER_RED_SIZE = 0x8D50; + public const int RENDERBUFFER_RED_SIZE_EXT = 0x8D50; + public const int RENDERBUFFER_SAMPLES = 0x8CAB; + public const int RENDERBUFFER_SAMPLES_EXT = 0x8CAB; + public const int RENDERBUFFER_STENCIL_SIZE = 0x8D55; + public const int RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55; + public const int RENDERBUFFER_STORAGE_SAMPLES_AMD = 0x91B2; + public const int RENDERBUFFER_WIDTH = 0x8D42; + public const int RENDERBUFFER_WIDTH_EXT = 0x8D42; + public const int RENDERER = 0x1F01; + public const int RENDER_GPU_MASK_NV = 0x9558; + public const int REPEAT = 0x2901; + public const int REPLACE = 0x1E01; + public const int REPLACEMENT_CODE_ARRAY_POINTER_SUN = 0x85C3; + public const int REPLACEMENT_CODE_ARRAY_STRIDE_SUN = 0x85C2; + public const int REPLACEMENT_CODE_ARRAY_SUN = 0x85C0; + public const int REPLACEMENT_CODE_ARRAY_TYPE_SUN = 0x85C1; + public const int REPLACEMENT_CODE_SUN = 0x81D8; + public const int REPLACE_EXT = 0x8062; + public const int REPLACE_MIDDLE_SUN = 0x0002; + public const int REPLACE_OLDEST_SUN = 0x0003; + public const int REPLACE_VALUE_AMD = 0x874B; + public const int REPLICATE_BORDER_HP = 0x8153; + public const int REPRESENTATIVE_FRAGMENT_TEST_NV = 0x937F; + public const int RESAMPLE_AVERAGE_OML = 0x8988; + public const int RESAMPLE_DECIMATE_OML = 0x8989; + public const int RESAMPLE_DECIMATE_SGIX = 0x8430; + public const int RESAMPLE_REPLICATE_OML = 0x8986; + public const int RESAMPLE_REPLICATE_SGIX = 0x8433; + public const int RESAMPLE_ZERO_FILL_OML = 0x8987; + public const int RESAMPLE_ZERO_FILL_SGIX = 0x8434; + public const int RESCALE_NORMAL_EXT = 0x803A; + public const int RESET_NOTIFICATION_STRATEGY = 0x8256; + public const int RESET_NOTIFICATION_STRATEGY_ARB = 0x8256; + public const int RESTART_PATH_NV = 0xF0; + public const int RESTART_SUN = 0x0001; + public const int RETAINED_APPLE = 0x8A1B; + public const int RG = 0x8227; + public const int RG16 = 0x822C; + public const int RG16F = 0x822F; + public const int RG16F_EXT = 0x822F; + public const int RG16I = 0x8239; + public const int RG16UI = 0x823A; + public const int RG16_SNORM = 0x8F99; + public const int RG32F = 0x8230; + public const int RG32F_EXT = 0x8230; + public const int RG32I = 0x823B; + public const int RG32UI = 0x823C; + public const int RG8 = 0x822B; + public const int RG8I = 0x8237; + public const int RG8UI = 0x8238; + public const int RG8_EXT = 0x822B; + public const int RG8_SNORM = 0x8F95; + public const int RGB = 0x1907; + public const int RGB10 = 0x8052; + public const int RGB10_A2 = 0x8059; + public const int RGB10_A2UI = 0x906F; + public const int RGB10_A2_EXT = 0x8059; + public const int RGB10_EXT = 0x8052; + public const int RGB12 = 0x8053; + public const int RGB12_EXT = 0x8053; + public const int RGB16 = 0x8054; + public const int RGB16F = 0x881B; + public const int RGB16F_ARB = 0x881B; + public const int RGB16F_EXT = 0x881B; + public const int RGB16I = 0x8D89; + public const int RGB16I_EXT = 0x8D89; + public const int RGB16UI = 0x8D77; + public const int RGB16UI_EXT = 0x8D77; + public const int RGB16_EXT = 0x8054; + public const int RGB16_SNORM = 0x8F9A; + public const int RGB2_EXT = 0x804E; + public const int RGB32F = 0x8815; + public const int RGB32F_ARB = 0x8815; + public const int RGB32F_EXT = 0x8815; + public const int RGB32I = 0x8D83; + public const int RGB32I_EXT = 0x8D83; + public const int RGB32UI = 0x8D71; + public const int RGB32UI_EXT = 0x8D71; + public const int RGB4 = 0x804F; + public const int RGB4_EXT = 0x804F; + public const int RGB4_S3TC = 0x83A1; + public const int RGB5 = 0x8050; + public const int RGB565 = 0x8D62; + public const int RGB5_A1 = 0x8057; + public const int RGB5_A1_EXT = 0x8057; + public const int RGB5_EXT = 0x8050; + public const int RGB8 = 0x8051; + public const int RGB8I = 0x8D8F; + public const int RGB8I_EXT = 0x8D8F; + public const int RGB8UI = 0x8D7D; + public const int RGB8UI_EXT = 0x8D7D; + public const int RGB8_EXT = 0x8051; + public const int RGB8_SNORM = 0x8F96; + public const int RGB9_E5 = 0x8C3D; + public const int RGB9_E5_EXT = 0x8C3D; + public const int RGBA = 0x1908; + public const int RGBA12 = 0x805A; + public const int RGBA12_EXT = 0x805A; + public const int RGBA16 = 0x805B; + public const int RGBA16F = 0x881A; + public const int RGBA16F_ARB = 0x881A; + public const int RGBA16F_EXT = 0x881A; + public const int RGBA16I = 0x8D88; + public const int RGBA16I_EXT = 0x8D88; + public const int RGBA16UI = 0x8D76; + public const int RGBA16UI_EXT = 0x8D76; + public const int RGBA16_EXT = 0x805B; + public const int RGBA16_SNORM = 0x8F9B; + public const int RGBA2 = 0x8055; + public const int RGBA2_EXT = 0x8055; + public const int RGBA32F = 0x8814; + public const int RGBA32F_ARB = 0x8814; + public const int RGBA32F_EXT = 0x8814; + public const int RGBA32I = 0x8D82; + public const int RGBA32I_EXT = 0x8D82; + public const int RGBA32UI = 0x8D70; + public const int RGBA32UI_EXT = 0x8D70; + public const int RGBA4 = 0x8056; + public const int RGBA4_DXT5_S3TC = 0x83A5; + public const int RGBA4_EXT = 0x8056; + public const int RGBA4_S3TC = 0x83A3; + public const int RGBA8 = 0x8058; + public const int RGBA8I = 0x8D8E; + public const int RGBA8I_EXT = 0x8D8E; + public const int RGBA8UI = 0x8D7C; + public const int RGBA8UI_EXT = 0x8D7C; + public const int RGBA8_EXT = 0x8058; + public const int RGBA8_SNORM = 0x8F97; + public const int RGBA_DXT5_S3TC = 0x83A4; + public const int RGBA_FLOAT16_APPLE = 0x881A; + public const int RGBA_FLOAT16_ATI = 0x881A; + public const int RGBA_FLOAT32_APPLE = 0x8814; + public const int RGBA_FLOAT32_ATI = 0x8814; + public const int RGBA_FLOAT_MODE_ARB = 0x8820; + public const int RGBA_FLOAT_MODE_ATI = 0x8820; + public const int RGBA_INTEGER = 0x8D99; + public const int RGBA_INTEGER_EXT = 0x8D99; + public const int RGBA_INTEGER_MODE_EXT = 0x8D9E; + public const int RGBA_S3TC = 0x83A2; + public const int RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C; + public const int RGBA_SNORM = 0x8F93; + public const int RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = 0x86D9; + public const int RGB_422_APPLE = 0x8A1F; + public const int RGB_FLOAT16_APPLE = 0x881B; + public const int RGB_FLOAT16_ATI = 0x881B; + public const int RGB_FLOAT32_APPLE = 0x8815; + public const int RGB_FLOAT32_ATI = 0x8815; + public const int RGB_INTEGER = 0x8D98; + public const int RGB_INTEGER_EXT = 0x8D98; + public const int RGB_RAW_422_APPLE = 0x8A51; + public const int RGB_S3TC = 0x83A0; + public const int RGB_SCALE_ARB = 0x8573; + public const int RGB_SCALE_EXT = 0x8573; + public const int RGB_SNORM = 0x8F92; + public const int RG_INTEGER = 0x8228; + public const int RG_SNORM = 0x8F91; + public const int RIGHT = 0x0407; + public const int ROUNDED_RECT2_NV = 0xEA; + public const int ROUNDED_RECT4_NV = 0xEC; + public const int ROUNDED_RECT8_NV = 0xEE; + public const int ROUNDED_RECT_NV = 0xE8; + public const int ROUND_NV = 0x90A4; + public const int SAMPLER = 0x82E6; + public const int SAMPLER_1D = 0x8B5D; + public const int SAMPLER_1D_ARB = 0x8B5D; + public const int SAMPLER_1D_ARRAY = 0x8DC0; + public const int SAMPLER_1D_ARRAY_EXT = 0x8DC0; + public const int SAMPLER_1D_ARRAY_SHADOW = 0x8DC3; + public const int SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3; + public const int SAMPLER_1D_SHADOW = 0x8B61; + public const int SAMPLER_1D_SHADOW_ARB = 0x8B61; + public const int SAMPLER_2D = 0x8B5E; + public const int SAMPLER_2D_ARB = 0x8B5E; + public const int SAMPLER_2D_ARRAY = 0x8DC1; + public const int SAMPLER_2D_ARRAY_EXT = 0x8DC1; + public const int SAMPLER_2D_ARRAY_SHADOW = 0x8DC4; + public const int SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4; + public const int SAMPLER_2D_MULTISAMPLE = 0x9108; + public const int SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B; + public const int SAMPLER_2D_RECT = 0x8B63; + public const int SAMPLER_2D_RECT_ARB = 0x8B63; + public const int SAMPLER_2D_RECT_SHADOW = 0x8B64; + public const int SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64; + public const int SAMPLER_2D_SHADOW = 0x8B62; + public const int SAMPLER_2D_SHADOW_ARB = 0x8B62; + public const int SAMPLER_3D = 0x8B5F; + public const int SAMPLER_3D_ARB = 0x8B5F; + public const int SAMPLER_BINDING = 0x8919; + public const int SAMPLER_BUFFER = 0x8DC2; + public const int SAMPLER_BUFFER_AMD = 0x9001; + public const int SAMPLER_BUFFER_EXT = 0x8DC2; + public const int SAMPLER_CUBE = 0x8B60; + public const int SAMPLER_CUBE_ARB = 0x8B60; + public const int SAMPLER_CUBE_MAP_ARRAY = 0x900C; + public const int SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900C; + public const int SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D; + public const int SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = 0x900D; + public const int SAMPLER_CUBE_SHADOW = 0x8DC5; + public const int SAMPLER_CUBE_SHADOW_EXT = 0x8DC5; + public const int SAMPLER_OBJECT_AMD = 0x9155; + public const int SAMPLER_RENDERBUFFER_NV = 0x8E56; + public const int SAMPLES = 0x80A9; + public const int SAMPLES_3DFX = 0x86B4; + public const int SAMPLES_ARB = 0x80A9; + public const int SAMPLES_EXT = 0x80A9; + public const int SAMPLES_PASSED = 0x8914; + public const int SAMPLES_PASSED_ARB = 0x8914; + public const int SAMPLES_SGIS = 0x80A9; + public const int SAMPLE_ALPHA_TO_COVERAGE = 0x809E; + public const int SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x809E; + public const int SAMPLE_ALPHA_TO_MASK_EXT = 0x809E; + public const int SAMPLE_ALPHA_TO_MASK_SGIS = 0x809E; + public const int SAMPLE_ALPHA_TO_ONE = 0x809F; + public const int SAMPLE_ALPHA_TO_ONE_ARB = 0x809F; + public const int SAMPLE_ALPHA_TO_ONE_EXT = 0x809F; + public const int SAMPLE_ALPHA_TO_ONE_SGIS = 0x809F; + public const int SAMPLE_BUFFERS = 0x80A8; + public const int SAMPLE_BUFFERS_3DFX = 0x86B3; + public const int SAMPLE_BUFFERS_ARB = 0x80A8; + public const int SAMPLE_BUFFERS_EXT = 0x80A8; + public const int SAMPLE_BUFFERS_SGIS = 0x80A8; + public const int SAMPLE_COVERAGE = 0x80A0; + public const int SAMPLE_COVERAGE_ARB = 0x80A0; + public const int SAMPLE_COVERAGE_INVERT = 0x80AB; + public const int SAMPLE_COVERAGE_INVERT_ARB = 0x80AB; + public const int SAMPLE_COVERAGE_VALUE = 0x80AA; + public const int SAMPLE_COVERAGE_VALUE_ARB = 0x80AA; + public const int SAMPLE_LOCATION_ARB = 0x8E50; + public const int SAMPLE_LOCATION_NV = 0x8E50; + public const int SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB = 0x933F; + public const int SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = 0x933F; + public const int SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB = 0x933E; + public const int SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = 0x933E; + public const int SAMPLE_LOCATION_SUBPIXEL_BITS_ARB = 0x933D; + public const int SAMPLE_LOCATION_SUBPIXEL_BITS_NV = 0x933D; + public const int SAMPLE_MASK = 0x8E51; + public const int SAMPLE_MASK_EXT = 0x80A0; + public const int SAMPLE_MASK_INVERT_EXT = 0x80AB; + public const int SAMPLE_MASK_INVERT_SGIS = 0x80AB; + public const int SAMPLE_MASK_NV = 0x8E51; + public const int SAMPLE_MASK_SGIS = 0x80A0; + public const int SAMPLE_MASK_VALUE = 0x8E52; + public const int SAMPLE_MASK_VALUE_EXT = 0x80AA; + public const int SAMPLE_MASK_VALUE_NV = 0x8E52; + public const int SAMPLE_MASK_VALUE_SGIS = 0x80AA; + public const int SAMPLE_PATTERN_EXT = 0x80AC; + public const int SAMPLE_PATTERN_SGIS = 0x80AC; + public const int SAMPLE_POSITION = 0x8E50; + public const int SAMPLE_POSITION_NV = 0x8E50; + public const int SAMPLE_SHADING = 0x8C36; + public const int SAMPLE_SHADING_ARB = 0x8C36; + public const int SATURATE_BIT_ATI = 0x00000040; + public const int SCALAR_EXT = 0x87BE; + public const int SCALEBIAS_HINT_SGIX = 0x8322; + public const int SCALED_RESOLVE_FASTEST_EXT = 0x90BA; + public const int SCALED_RESOLVE_NICEST_EXT = 0x90BB; + public const int SCALE_BY_FOUR_NV = 0x853F; + public const int SCALE_BY_ONE_HALF_NV = 0x8540; + public const int SCALE_BY_TWO_NV = 0x853E; + public const int SCISSOR_BOX = 0x0C10; + public const int SCISSOR_BOX_EXCLUSIVE_NV = 0x9556; + public const int SCISSOR_COMMAND_NV = 0x0011; + public const int SCISSOR_TEST = 0x0C11; + public const int SCISSOR_TEST_EXCLUSIVE_NV = 0x9555; + public const int SCREEN_COORDINATES_REND = 0x8490; + public const int SCREEN_KHR = 0x9295; + public const int SCREEN_NV = 0x9295; + public const int SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27; + public const int SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x889C; + public const int SECONDARY_COLOR_ARRAY_EXT = 0x845E; + public const int SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31; + public const int SECONDARY_COLOR_ARRAY_LIST_IBM = 103077; + public const int SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087; + public const int SECONDARY_COLOR_ARRAY_POINTER_EXT = 0x845D; + public const int SECONDARY_COLOR_ARRAY_SIZE_EXT = 0x845A; + public const int SECONDARY_COLOR_ARRAY_STRIDE_EXT = 0x845C; + public const int SECONDARY_COLOR_ARRAY_TYPE_EXT = 0x845B; + public const int SECONDARY_COLOR_NV = 0x852D; + public const int SECONDARY_INTERPOLATOR_ATI = 0x896D; + public const int SEMAPHORE_TYPE_BINARY_NV = 0x95B4; + public const int SEMAPHORE_TYPE_NV = 0x95B3; + public const int SEMAPHORE_TYPE_TIMELINE_NV = 0x95B5; + public const int SEPARABLE_2D_EXT = 0x8012; + public const int SEPARATE_ATTRIBS = 0x8C8D; + public const int SEPARATE_ATTRIBS_EXT = 0x8C8D; + public const int SEPARATE_ATTRIBS_NV = 0x8C8D; + public const int SEPARATE_SPECULAR_COLOR_EXT = 0x81FA; + public const int SET = 0x150F; + public const int SET_AMD = 0x874A; + public const int SHADER = 0x82E1; + public const int SHADER_BINARY_FORMATS = 0x8DF8; + public const int SHADER_BINARY_FORMAT_SPIR_V = 0x9551; + public const int SHADER_BINARY_FORMAT_SPIR_V_ARB = 0x9551; + public const int SHADER_COMPILER = 0x8DFA; + public const int SHADER_CONSISTENT_NV = 0x86DD; + public const int SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV = 0x00000010; + public const int SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020; + public const int SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT = 0x00000020; + public const int SHADER_IMAGE_ATOMIC = 0x82A6; + public const int SHADER_IMAGE_LOAD = 0x82A4; + public const int SHADER_IMAGE_STORE = 0x82A5; + public const int SHADER_INCLUDE_ARB = 0x8DAE; + public const int SHADER_OBJECT_ARB = 0x8B48; + public const int SHADER_OBJECT_EXT = 0x8B48; + public const int SHADER_OPERATION_NV = 0x86DF; + public const int SHADER_SOURCE_LENGTH = 0x8B88; + public const int SHADER_STORAGE_BARRIER_BIT = 0x00002000; + public const int SHADER_STORAGE_BLOCK = 0x92E6; + public const int SHADER_STORAGE_BUFFER = 0x90D2; + public const int SHADER_STORAGE_BUFFER_BINDING = 0x90D3; + public const int SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF; + public const int SHADER_STORAGE_BUFFER_SIZE = 0x90D5; + public const int SHADER_STORAGE_BUFFER_START = 0x90D4; + public const int SHADER_TYPE = 0x8B4F; + public const int SHADING_LANGUAGE_VERSION = 0x8B8C; + public const int SHADING_LANGUAGE_VERSION_ARB = 0x8B8C; + public const int SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 0x956F; + public const int SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 0x9566; + public const int SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 0x9567; + public const int SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 0x9568; + public const int SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 0x9569; + public const int SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 0x956A; + public const int SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 0x956B; + public const int SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0x9565; + public const int SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 0x956C; + public const int SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 0x956D; + public const int SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 0x956E; + public const int SHADING_RATE_IMAGE_BINDING_NV = 0x955B; + public const int SHADING_RATE_IMAGE_NV = 0x9563; + public const int SHADING_RATE_IMAGE_PALETTE_COUNT_NV = 0x95B2; + public const int SHADING_RATE_IMAGE_PALETTE_SIZE_NV = 0x955E; + public const int SHADING_RATE_IMAGE_PER_PRIMITIVE_NV = 0x95B1; + public const int SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV = 0x955D; + public const int SHADING_RATE_IMAGE_TEXEL_WIDTH_NV = 0x955C; + public const int SHADING_RATE_NO_INVOCATIONS_NV = 0x9564; + public const int SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV = 0x95AE; + public const int SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV = 0x95AF; + public const int SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV = 0x95B0; + public const int SHADOW_AMBIENT_SGIX = 0x80BF; + public const int SHADOW_ATTENUATION_EXT = 0x834E; + public const int SHARED_EDGE_NV = 0xC0; + public const int SHARED_TEXTURE_PALETTE_EXT = 0x81FB; + public const int SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x80B0; + public const int SHORT = 0x1402; + public const int SIGNALED = 0x9119; + public const int SIGNED_ALPHA8_NV = 0x8706; + public const int SIGNED_ALPHA_NV = 0x8705; + public const int SIGNED_HILO16_NV = 0x86FA; + public const int SIGNED_HILO8_NV = 0x885F; + public const int SIGNED_HILO_NV = 0x86F9; + public const int SIGNED_IDENTITY_NV = 0x853C; + public const int SIGNED_INTENSITY8_NV = 0x8708; + public const int SIGNED_INTENSITY_NV = 0x8707; + public const int SIGNED_LUMINANCE8_ALPHA8_NV = 0x8704; + public const int SIGNED_LUMINANCE8_NV = 0x8702; + public const int SIGNED_LUMINANCE_ALPHA_NV = 0x8703; + public const int SIGNED_LUMINANCE_NV = 0x8701; + public const int SIGNED_NEGATE_NV = 0x853D; + public const int SIGNED_NORMALIZED = 0x8F9C; + public const int SIGNED_RGB8_NV = 0x86FF; + public const int SIGNED_RGB8_UNSIGNED_ALPHA8_NV = 0x870D; + public const int SIGNED_RGBA8_NV = 0x86FC; + public const int SIGNED_RGBA_NV = 0x86FB; + public const int SIGNED_RGB_NV = 0x86FE; + public const int SIGNED_RGB_UNSIGNED_ALPHA_NV = 0x870C; + public const int SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x82AC; + public const int SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x82AE; + public const int SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x82AD; + public const int SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF; + public const int SINGLE_COLOR_EXT = 0x81F9; + public const int SKIP_COMPONENTS1_NV = -6; + public const int SKIP_COMPONENTS2_NV = -5; + public const int SKIP_COMPONENTS3_NV = -4; + public const int SKIP_COMPONENTS4_NV = -3; + public const int SKIP_DECODE_EXT = 0x8A4A; + public const int SKIP_MISSING_GLYPH_NV = 0x90A9; + public const int SLICE_ACCUM_SUN = 0x85CC; + public const int SLUMINANCE8_ALPHA8_EXT = 0x8C45; + public const int SLUMINANCE8_EXT = 0x8C47; + public const int SLUMINANCE_ALPHA_EXT = 0x8C44; + public const int SLUMINANCE_EXT = 0x8C46; + public const int SMALL_CCW_ARC_TO_NV = 0x12; + public const int SMALL_CW_ARC_TO_NV = 0x14; + public const int SMOOTH_CUBIC_CURVE_TO_NV = 0x10; + public const int SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23; + public const int SMOOTH_LINE_WIDTH_RANGE = 0x0B22; + public const int SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13; + public const int SMOOTH_POINT_SIZE_RANGE = 0x0B12; + public const int SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0E; + public const int SM_COUNT_NV = 0x933B; + public const int SOFTLIGHT_KHR = 0x929C; + public const int SOFTLIGHT_NV = 0x929C; + public const int SOURCE0_ALPHA_ARB = 0x8588; + public const int SOURCE0_ALPHA_EXT = 0x8588; + public const int SOURCE0_RGB_ARB = 0x8580; + public const int SOURCE0_RGB_EXT = 0x8580; + public const int SOURCE1_ALPHA = 0x8589; + public const int SOURCE1_ALPHA_ARB = 0x8589; + public const int SOURCE1_ALPHA_EXT = 0x8589; + public const int SOURCE1_RGB_ARB = 0x8581; + public const int SOURCE1_RGB_EXT = 0x8581; + public const int SOURCE2_ALPHA_ARB = 0x858A; + public const int SOURCE2_ALPHA_EXT = 0x858A; + public const int SOURCE2_RGB_ARB = 0x8582; + public const int SOURCE2_RGB_EXT = 0x8582; + public const int SOURCE3_ALPHA_NV = 0x858B; + public const int SOURCE3_RGB_NV = 0x8583; + public const int SPARE0_NV = 0x852E; + public const int SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532; + public const int SPARE1_NV = 0x852F; + public const int SPARSE_BUFFER_PAGE_SIZE_ARB = 0x82F8; + public const int SPARSE_STORAGE_BIT_ARB = 0x0400; + public const int SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB = 0x91A9; + public const int SPIR_V_BINARY = 0x9552; + public const int SPIR_V_BINARY_ARB = 0x9552; + public const int SPIR_V_EXTENSIONS = 0x9553; + public const int SPRITE_AXIAL_SGIX = 0x814C; + public const int SPRITE_AXIS_SGIX = 0x814A; + public const int SPRITE_EYE_ALIGNED_SGIX = 0x814E; + public const int SPRITE_MODE_SGIX = 0x8149; + public const int SPRITE_OBJECT_ALIGNED_SGIX = 0x814D; + public const int SPRITE_SGIX = 0x8148; + public const int SPRITE_TRANSLATION_SGIX = 0x814B; + public const int SQUARE_NV = 0x90A3; + public const int SR8_EXT = 0x8FBD; + public const int SRC1_ALPHA = 0x8589; + public const int SRC1_COLOR = 0x88F9; + public const int SRC_ALPHA = 0x0302; + public const int SRC_ALPHA_SATURATE = 0x0308; + public const int SRC_ATOP_NV = 0x928E; + public const int SRC_COLOR = 0x0300; + public const int SRC_IN_NV = 0x928A; + public const int SRC_NV = 0x9286; + public const int SRC_OUT_NV = 0x928C; + public const int SRC_OVER_NV = 0x9288; + public const int SRG8_EXT = 0x8FBE; + public const int SRGB = 0x8C40; + public const int SRGB8 = 0x8C41; + public const int SRGB8_ALPHA8 = 0x8C43; + public const int SRGB8_ALPHA8_EXT = 0x8C43; + public const int SRGB8_EXT = 0x8C41; + public const int SRGB_ALPHA = 0x8C42; + public const int SRGB_ALPHA_EXT = 0x8C42; + public const int SRGB_DECODE_ARB = 0x8299; + public const int SRGB_EXT = 0x8C40; + public const int SRGB_READ = 0x8297; + public const int SRGB_WRITE = 0x8298; + public const int STACK_OVERFLOW = 0x0503; + public const int STACK_UNDERFLOW = 0x0504; + public const int STANDARD_FONT_FORMAT_NV = 0x936C; + public const int STANDARD_FONT_NAME_NV = 0x9072; + public const int STATIC_ATI = 0x8760; + public const int STATIC_COPY = 0x88E6; + public const int STATIC_COPY_ARB = 0x88E6; + public const int STATIC_DRAW = 0x88E4; + public const int STATIC_DRAW_ARB = 0x88E4; + public const int STATIC_READ = 0x88E5; + public const int STATIC_READ_ARB = 0x88E5; + public const int STATIC_VERTEX_ARRAY_IBM = 103061; + public const int STENCIL = 0x1802; + public const int STENCIL_ATTACHMENT = 0x8D20; + public const int STENCIL_ATTACHMENT_EXT = 0x8D20; + public const int STENCIL_BACK_FAIL = 0x8801; + public const int STENCIL_BACK_FAIL_ATI = 0x8801; + public const int STENCIL_BACK_FUNC = 0x8800; + public const int STENCIL_BACK_FUNC_ATI = 0x8800; + public const int STENCIL_BACK_OP_VALUE_AMD = 0x874D; + public const int STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802; + public const int STENCIL_BACK_PASS_DEPTH_FAIL_ATI = 0x8802; + public const int STENCIL_BACK_PASS_DEPTH_PASS = 0x8803; + public const int STENCIL_BACK_PASS_DEPTH_PASS_ATI = 0x8803; + public const int STENCIL_BACK_REF = 0x8CA3; + public const int STENCIL_BACK_VALUE_MASK = 0x8CA4; + public const int STENCIL_BACK_WRITEMASK = 0x8CA5; + public const int STENCIL_BUFFER_BIT = 0x00000400; + public const int STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3; + public const int STENCIL_CLEAR_VALUE = 0x0B91; + public const int STENCIL_COMPONENTS = 0x8285; + public const int STENCIL_FAIL = 0x0B94; + public const int STENCIL_FUNC = 0x0B92; + public const int STENCIL_INDEX = 0x1901; + public const int STENCIL_INDEX1 = 0x8D46; + public const int STENCIL_INDEX16 = 0x8D49; + public const int STENCIL_INDEX16_EXT = 0x8D49; + public const int STENCIL_INDEX1_EXT = 0x8D46; + public const int STENCIL_INDEX4 = 0x8D47; + public const int STENCIL_INDEX4_EXT = 0x8D47; + public const int STENCIL_INDEX8 = 0x8D48; + public const int STENCIL_INDEX8_EXT = 0x8D48; + public const int STENCIL_OP_VALUE_AMD = 0x874C; + public const int STENCIL_PASS_DEPTH_FAIL = 0x0B95; + public const int STENCIL_PASS_DEPTH_PASS = 0x0B96; + public const int STENCIL_REF = 0x0B97; + public const int STENCIL_REF_COMMAND_NV = 0x000C; + public const int STENCIL_RENDERABLE = 0x8288; + public const int STENCIL_SAMPLES_NV = 0x932E; + public const int STENCIL_TAG_BITS_EXT = 0x88F2; + public const int STENCIL_TEST = 0x0B90; + public const int STENCIL_TEST_TWO_SIDE_EXT = 0x8910; + public const int STENCIL_VALUE_MASK = 0x0B93; + public const int STENCIL_WRITEMASK = 0x0B98; + public const int STEREO = 0x0C33; + public const int STORAGE_CACHED_APPLE = 0x85BE; + public const int STORAGE_CLIENT_APPLE = 0x85B4; + public const int STORAGE_PRIVATE_APPLE = 0x85BD; + public const int STORAGE_SHARED_APPLE = 0x85BF; + public const int STREAM_COPY = 0x88E2; + public const int STREAM_COPY_ARB = 0x88E2; + public const int STREAM_DRAW = 0x88E0; + public const int STREAM_DRAW_ARB = 0x88E0; + public const int STREAM_RASTERIZATION_AMD = 0x91A0; + public const int STREAM_READ = 0x88E1; + public const int STREAM_READ_ARB = 0x88E1; + public const int STRICT_DEPTHFUNC_HINT_PGI = 0x1A216; + public const int STRICT_LIGHTING_HINT_PGI = 0x1A217; + public const int STRICT_SCISSOR_HINT_PGI = 0x1A218; + public const int SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR = 0x00000004; + public const int SUBGROUP_FEATURE_BALLOT_BIT_KHR = 0x00000008; + public const int SUBGROUP_FEATURE_BASIC_BIT_KHR = 0x00000001; + public const int SUBGROUP_FEATURE_CLUSTERED_BIT_KHR = 0x00000040; + public const int SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100; + public const int SUBGROUP_FEATURE_QUAD_BIT_KHR = 0x00000080; + public const int SUBGROUP_FEATURE_SHUFFLE_BIT_KHR = 0x00000010; + public const int SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR = 0x00000020; + public const int SUBGROUP_FEATURE_VOTE_BIT_KHR = 0x00000002; + public const int SUBGROUP_QUAD_ALL_STAGES_KHR = 0x9535; + public const int SUBGROUP_SIZE_KHR = 0x9532; + public const int SUBGROUP_SUPPORTED_FEATURES_KHR = 0x9534; + public const int SUBGROUP_SUPPORTED_STAGES_KHR = 0x9533; + public const int SUBPIXEL_BITS = 0x0D50; + public const int SUBPIXEL_PRECISION_BIAS_X_BITS_NV = 0x9347; + public const int SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = 0x9348; + public const int SUBSAMPLE_DISTANCE_AMD = 0x883F; + public const int SUBTRACT_ARB = 0x84E7; + public const int SUB_ATI = 0x8965; + public const int SUCCESS_NV = 0x902F; + public const int SUPERSAMPLE_SCALE_X_NV = 0x9372; + public const int SUPERSAMPLE_SCALE_Y_NV = 0x9373; + public const int SUPPORTED_MULTISAMPLE_MODES_AMD = 0x91B7; + public const int SURFACE_MAPPED_NV = 0x8700; + public const int SURFACE_REGISTERED_NV = 0x86FD; + public const int SURFACE_STATE_NV = 0x86EB; + public const int SWIZZLE_STQ_ATI = 0x8977; + public const int SWIZZLE_STQ_DQ_ATI = 0x8979; + public const int SWIZZLE_STRQ_ATI = 0x897A; + public const int SWIZZLE_STRQ_DQ_ATI = 0x897B; + public const int SWIZZLE_STR_ATI = 0x8976; + public const int SWIZZLE_STR_DR_ATI = 0x8978; + public const int SYNC_CL_EVENT_ARB = 0x8240; + public const int SYNC_CL_EVENT_COMPLETE_ARB = 0x8241; + public const int SYNC_CONDITION = 0x9113; + public const int SYNC_FENCE = 0x9116; + public const int SYNC_FLAGS = 0x9115; + public const int SYNC_FLUSH_COMMANDS_BIT = 0x00000001; + public const int SYNC_GPU_COMMANDS_COMPLETE = 0x9117; + public const int SYNC_STATUS = 0x9114; + public const int SYNC_X11_FENCE_EXT = 0x90E1; + public const int SYSTEM_FONT_NAME_NV = 0x9073; + public const int T2F_IUI_N3F_V2F_EXT = 0x81B3; + public const int T2F_IUI_N3F_V3F_EXT = 0x81B4; + public const int T2F_IUI_V2F_EXT = 0x81B1; + public const int T2F_IUI_V3F_EXT = 0x81B2; + public const int TABLE_TOO_LARGE_EXT = 0x8031; + public const int TANGENT_ARRAY_EXT = 0x8439; + public const int TANGENT_ARRAY_POINTER_EXT = 0x8442; + public const int TANGENT_ARRAY_STRIDE_EXT = 0x843F; + public const int TANGENT_ARRAY_TYPE_EXT = 0x843E; + public const int TASK_SHADER_BIT_NV = 0x00000080; + public const int TASK_SHADER_NV = 0x955A; + public const int TASK_SUBROUTINE_NV = 0x957D; + public const int TASK_SUBROUTINE_UNIFORM_NV = 0x957F; + public const int TASK_WORK_GROUP_SIZE_NV = 0x953F; + public const int TERMINATE_SEQUENCE_COMMAND_NV = 0x0000; + public const int TESSELLATION_FACTOR_AMD = 0x9005; + public const int TESSELLATION_MODE_AMD = 0x9004; + public const int TESS_CONTROL_OUTPUT_VERTICES = 0x8E75; + public const int TESS_CONTROL_PROGRAM_NV = 0x891E; + public const int TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = 0x8C74; + public const int TESS_CONTROL_SHADER = 0x8E88; + public const int TESS_CONTROL_SHADER_BIT = 0x00000008; + public const int TESS_CONTROL_SHADER_PATCHES = 0x82F1; + public const int TESS_CONTROL_SHADER_PATCHES_ARB = 0x82F1; + public const int TESS_CONTROL_SUBROUTINE = 0x92E9; + public const int TESS_CONTROL_SUBROUTINE_UNIFORM = 0x92EF; + public const int TESS_CONTROL_TEXTURE = 0x829C; + public const int TESS_EVALUATION_PROGRAM_NV = 0x891F; + public const int TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = 0x8C75; + public const int TESS_EVALUATION_SHADER = 0x8E87; + public const int TESS_EVALUATION_SHADER_BIT = 0x00000010; + public const int TESS_EVALUATION_SHADER_INVOCATIONS = 0x82F2; + public const int TESS_EVALUATION_SHADER_INVOCATIONS_ARB = 0x82F2; + public const int TESS_EVALUATION_SUBROUTINE = 0x92EA; + public const int TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0; + public const int TESS_EVALUATION_TEXTURE = 0x829D; + public const int TESS_GEN_MODE = 0x8E76; + public const int TESS_GEN_POINT_MODE = 0x8E79; + public const int TESS_GEN_SPACING = 0x8E77; + public const int TESS_GEN_VERTEX_ORDER = 0x8E78; + public const int TEXCOORD1_BIT_PGI = 0x10000000; + public const int TEXCOORD2_BIT_PGI = 0x20000000; + public const int TEXCOORD3_BIT_PGI = 0x40000000; + public const uint TEXCOORD4_BIT_PGI = 0x80000000; + public const int TEXTURE = 0x1702; + public const int TEXTURE0 = 0x84C0; + public const int TEXTURE0_ARB = 0x84C0; + public const int TEXTURE1 = 0x84C1; + public const int TEXTURE10 = 0x84CA; + public const int TEXTURE10_ARB = 0x84CA; + public const int TEXTURE11 = 0x84CB; + public const int TEXTURE11_ARB = 0x84CB; + public const int TEXTURE12 = 0x84CC; + public const int TEXTURE12_ARB = 0x84CC; + public const int TEXTURE13 = 0x84CD; + public const int TEXTURE13_ARB = 0x84CD; + public const int TEXTURE14 = 0x84CE; + public const int TEXTURE14_ARB = 0x84CE; + public const int TEXTURE15 = 0x84CF; + public const int TEXTURE15_ARB = 0x84CF; + public const int TEXTURE16 = 0x84D0; + public const int TEXTURE16_ARB = 0x84D0; + public const int TEXTURE17 = 0x84D1; + public const int TEXTURE17_ARB = 0x84D1; + public const int TEXTURE18 = 0x84D2; + public const int TEXTURE18_ARB = 0x84D2; + public const int TEXTURE19 = 0x84D3; + public const int TEXTURE19_ARB = 0x84D3; + public const int TEXTURE1_ARB = 0x84C1; + public const int TEXTURE2 = 0x84C2; + public const int TEXTURE20 = 0x84D4; + public const int TEXTURE20_ARB = 0x84D4; + public const int TEXTURE21 = 0x84D5; + public const int TEXTURE21_ARB = 0x84D5; + public const int TEXTURE22 = 0x84D6; + public const int TEXTURE22_ARB = 0x84D6; + public const int TEXTURE23 = 0x84D7; + public const int TEXTURE23_ARB = 0x84D7; + public const int TEXTURE24 = 0x84D8; + public const int TEXTURE24_ARB = 0x84D8; + public const int TEXTURE25 = 0x84D9; + public const int TEXTURE25_ARB = 0x84D9; + public const int TEXTURE26 = 0x84DA; + public const int TEXTURE26_ARB = 0x84DA; + public const int TEXTURE27 = 0x84DB; + public const int TEXTURE27_ARB = 0x84DB; + public const int TEXTURE28 = 0x84DC; + public const int TEXTURE28_ARB = 0x84DC; + public const int TEXTURE29 = 0x84DD; + public const int TEXTURE29_ARB = 0x84DD; + public const int TEXTURE2_ARB = 0x84C2; + public const int TEXTURE3 = 0x84C3; + public const int TEXTURE30 = 0x84DE; + public const int TEXTURE30_ARB = 0x84DE; + public const int TEXTURE31 = 0x84DF; + public const int TEXTURE31_ARB = 0x84DF; + public const int TEXTURE3_ARB = 0x84C3; + public const int TEXTURE4 = 0x84C4; + public const int TEXTURE4_ARB = 0x84C4; + public const int TEXTURE5 = 0x84C5; + public const int TEXTURE5_ARB = 0x84C5; + public const int TEXTURE6 = 0x84C6; + public const int TEXTURE6_ARB = 0x84C6; + public const int TEXTURE7 = 0x84C7; + public const int TEXTURE7_ARB = 0x84C7; + public const int TEXTURE8 = 0x84C8; + public const int TEXTURE8_ARB = 0x84C8; + public const int TEXTURE9 = 0x84C9; + public const int TEXTURE9_ARB = 0x84C9; + public const int TEXTURE_1D = 0x0DE0; + public const int TEXTURE_1D_ARRAY = 0x8C18; + public const int TEXTURE_1D_ARRAY_EXT = 0x8C18; + public const int TEXTURE_1D_BINDING_EXT = 0x8068; + public const int TEXTURE_1D_STACK_BINDING_MESAX = 0x875D; + public const int TEXTURE_1D_STACK_MESAX = 0x8759; + public const int TEXTURE_2D = 0x0DE1; + public const int TEXTURE_2D_ARRAY = 0x8C1A; + public const int TEXTURE_2D_ARRAY_EXT = 0x8C1A; + public const int TEXTURE_2D_BINDING_EXT = 0x8069; + public const int TEXTURE_2D_MULTISAMPLE = 0x9100; + public const int TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102; + public const int TEXTURE_2D_STACK_BINDING_MESAX = 0x875E; + public const int TEXTURE_2D_STACK_MESAX = 0x875A; + public const int TEXTURE_3D = 0x806F; + public const int TEXTURE_3D_BINDING_EXT = 0x806A; + public const int TEXTURE_3D_EXT = 0x806F; + public const int TEXTURE_4DSIZE_SGIS = 0x8136; + public const int TEXTURE_4D_BINDING_SGIS = 0x814F; + public const int TEXTURE_4D_SGIS = 0x8134; + public const int TEXTURE_ALPHA_SIZE = 0x805F; + public const int TEXTURE_ALPHA_SIZE_EXT = 0x805F; + public const int TEXTURE_ALPHA_TYPE = 0x8C13; + public const int TEXTURE_ALPHA_TYPE_ARB = 0x8C13; + public const int TEXTURE_APPLICATION_MODE_EXT = 0x834F; + public const int TEXTURE_BASE_LEVEL = 0x813C; + public const int TEXTURE_BASE_LEVEL_SGIS = 0x813C; + public const int TEXTURE_BINDING_1D = 0x8068; + public const int TEXTURE_BINDING_1D_ARRAY = 0x8C1C; + public const int TEXTURE_BINDING_1D_ARRAY_EXT = 0x8C1C; + public const int TEXTURE_BINDING_2D = 0x8069; + public const int TEXTURE_BINDING_2D_ARRAY = 0x8C1D; + public const int TEXTURE_BINDING_2D_ARRAY_EXT = 0x8C1D; + public const int TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104; + public const int TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105; + public const int TEXTURE_BINDING_3D = 0x806A; + public const int TEXTURE_BINDING_BUFFER = 0x8C2C; + public const int TEXTURE_BINDING_BUFFER_ARB = 0x8C2C; + public const int TEXTURE_BINDING_BUFFER_EXT = 0x8C2C; + public const int TEXTURE_BINDING_CUBE_MAP = 0x8514; + public const int TEXTURE_BINDING_CUBE_MAP_ARB = 0x8514; + public const int TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A; + public const int TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = 0x900A; + public const int TEXTURE_BINDING_CUBE_MAP_EXT = 0x8514; + public const int TEXTURE_BINDING_RECTANGLE = 0x84F6; + public const int TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6; + public const int TEXTURE_BINDING_RECTANGLE_NV = 0x84F6; + public const int TEXTURE_BINDING_RENDERBUFFER_NV = 0x8E53; + public const int TEXTURE_BLUE_SIZE = 0x805E; + public const int TEXTURE_BLUE_SIZE_EXT = 0x805E; + public const int TEXTURE_BLUE_TYPE = 0x8C12; + public const int TEXTURE_BLUE_TYPE_ARB = 0x8C12; + public const int TEXTURE_BORDER_COLOR = 0x1004; + public const int TEXTURE_BORDER_VALUES_NV = 0x871A; + public const int TEXTURE_BUFFER = 0x8C2A; + public const int TEXTURE_BUFFER_ARB = 0x8C2A; + public const int TEXTURE_BUFFER_BINDING = 0x8C2A; + public const int TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D; + public const int TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x8C2D; + public const int TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 0x8C2D; + public const int TEXTURE_BUFFER_EXT = 0x8C2A; + public const int TEXTURE_BUFFER_FORMAT_ARB = 0x8C2E; + public const int TEXTURE_BUFFER_FORMAT_EXT = 0x8C2E; + public const int TEXTURE_BUFFER_OFFSET = 0x919D; + public const int TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F; + public const int TEXTURE_BUFFER_SIZE = 0x919E; + public const int TEXTURE_CLIPMAP_CENTER_SGIX = 0x8171; + public const int TEXTURE_CLIPMAP_DEPTH_SGIX = 0x8176; + public const int TEXTURE_CLIPMAP_FRAME_SGIX = 0x8172; + public const int TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x8175; + public const int TEXTURE_CLIPMAP_OFFSET_SGIX = 0x8173; + public const int TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8174; + public const int TEXTURE_COLOR_SAMPLES_NV = 0x9046; + public const int TEXTURE_COLOR_TABLE_SGI = 0x80BC; + public const int TEXTURE_COLOR_WRITEMASK_SGIS = 0x81EF; + public const int TEXTURE_COMPARE_FAIL_VALUE_ARB = 0x80BF; + public const int TEXTURE_COMPARE_FUNC = 0x884D; + public const int TEXTURE_COMPARE_FUNC_ARB = 0x884D; + public const int TEXTURE_COMPARE_MODE = 0x884C; + public const int TEXTURE_COMPARE_MODE_ARB = 0x884C; + public const int TEXTURE_COMPARE_OPERATOR_SGIX = 0x819B; + public const int TEXTURE_COMPARE_SGIX = 0x819A; + public const int TEXTURE_COMPRESSED = 0x86A1; + public const int TEXTURE_COMPRESSED_ARB = 0x86A1; + public const int TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2; + public const int TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3; + public const int TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1; + public const int TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0; + public const int TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = 0x86A0; + public const int TEXTURE_COMPRESSION_HINT = 0x84EF; + public const int TEXTURE_COMPRESSION_HINT_ARB = 0x84EF; + public const int TEXTURE_CONSTANT_DATA_SUNX = 0x81D6; + public const int TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25; + public const int TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x889A; + public const int TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B; + public const int TEXTURE_COORD_ARRAY_EXT = 0x8078; + public const int TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F; + public const int TEXTURE_COORD_ARRAY_LIST_IBM = 103074; + public const int TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084; + public const int TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F8; + public const int TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092; + public const int TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088; + public const int TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A; + public const int TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089; + public const int TEXTURE_COORD_NV = 0x8C79; + public const int TEXTURE_COVERAGE_SAMPLES_NV = 0x9045; + public const int TEXTURE_CUBE_MAP = 0x8513; + public const int TEXTURE_CUBE_MAP_ARB = 0x8513; + public const int TEXTURE_CUBE_MAP_ARRAY = 0x9009; + public const int TEXTURE_CUBE_MAP_ARRAY_ARB = 0x9009; + public const int TEXTURE_CUBE_MAP_EXT = 0x8513; + public const int TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516; + public const int TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x8516; + public const int TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = 0x8516; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x8518; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = 0x8518; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x851A; + public const int TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = 0x851A; + public const int TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515; + public const int TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x8515; + public const int TEXTURE_CUBE_MAP_POSITIVE_X_EXT = 0x8515; + public const int TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517; + public const int TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x8517; + public const int TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = 0x8517; + public const int TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519; + public const int TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x8519; + public const int TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = 0x8519; + public const int TEXTURE_CUBE_MAP_SEAMLESS = 0x884F; + public const int TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001; + public const int TEXTURE_DEFORMATION_SGIX = 0x8195; + public const int TEXTURE_DEPTH = 0x8071; + public const int TEXTURE_DEPTH_EXT = 0x8071; + public const int TEXTURE_DEPTH_SIZE = 0x884A; + public const int TEXTURE_DEPTH_SIZE_ARB = 0x884A; + public const int TEXTURE_DEPTH_TYPE = 0x8C16; + public const int TEXTURE_DEPTH_TYPE_ARB = 0x8C16; + public const int TEXTURE_DS_SIZE_NV = 0x871D; + public const int TEXTURE_DT_SIZE_NV = 0x871E; + public const int TEXTURE_ENV_BIAS_SGIX = 0x80BE; + public const int TEXTURE_FETCH_BARRIER_BIT = 0x00000008; + public const int TEXTURE_FETCH_BARRIER_BIT_EXT = 0x00000008; + public const int TEXTURE_FILTER4_SIZE_SGIS = 0x8147; + public const int TEXTURE_FILTER_CONTROL_EXT = 0x8500; + public const int TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107; + public const int TEXTURE_FLOAT_COMPONENTS_NV = 0x888C; + public const int TEXTURE_FREE_MEMORY_ATI = 0x87FC; + public const int TEXTURE_GATHER = 0x82A2; + public const int TEXTURE_GATHER_SHADOW = 0x82A3; + public const int TEXTURE_GEQUAL_R_SGIX = 0x819D; + public const int TEXTURE_GREEN_SIZE = 0x805D; + public const int TEXTURE_GREEN_SIZE_EXT = 0x805D; + public const int TEXTURE_GREEN_TYPE = 0x8C11; + public const int TEXTURE_GREEN_TYPE_ARB = 0x8C11; + public const int TEXTURE_HEIGHT = 0x1001; + public const int TEXTURE_HI_SIZE_NV = 0x871B; + public const int TEXTURE_IMAGE_FORMAT = 0x828F; + public const int TEXTURE_IMAGE_TYPE = 0x8290; + public const int TEXTURE_IMMUTABLE_FORMAT = 0x912F; + public const int TEXTURE_IMMUTABLE_FORMAT_EXT = 0x912F; + public const int TEXTURE_IMMUTABLE_LEVELS = 0x82DF; + public const int TEXTURE_INDEX_SIZE_EXT = 0x80ED; + public const int TEXTURE_INTENSITY_SIZE_EXT = 0x8061; + public const int TEXTURE_INTENSITY_TYPE_ARB = 0x8C15; + public const int TEXTURE_INTERNAL_FORMAT = 0x1003; + public const int TEXTURE_LEQUAL_R_SGIX = 0x819C; + public const int TEXTURE_LIGHTING_MODE_HP = 0x8167; + public const int TEXTURE_LIGHT_EXT = 0x8350; + public const int TEXTURE_LOD_BIAS = 0x8501; + public const int TEXTURE_LOD_BIAS_EXT = 0x8501; + public const int TEXTURE_LOD_BIAS_R_SGIX = 0x8190; + public const int TEXTURE_LOD_BIAS_S_SGIX = 0x818E; + public const int TEXTURE_LOD_BIAS_T_SGIX = 0x818F; + public const int TEXTURE_LO_SIZE_NV = 0x871C; + public const int TEXTURE_LUMINANCE_SIZE_EXT = 0x8060; + public const int TEXTURE_LUMINANCE_TYPE_ARB = 0x8C14; + public const int TEXTURE_MAG_FILTER = 0x2800; + public const int TEXTURE_MAG_SIZE_NV = 0x871F; + public const int TEXTURE_MATERIAL_FACE_EXT = 0x8351; + public const int TEXTURE_MATERIAL_PARAMETER_EXT = 0x8352; + public const int TEXTURE_MAX_ANISOTROPY = 0x84FE; + public const int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE; + public const int TEXTURE_MAX_CLAMP_R_SGIX = 0x836B; + public const int TEXTURE_MAX_CLAMP_S_SGIX = 0x8369; + public const int TEXTURE_MAX_CLAMP_T_SGIX = 0x836A; + public const int TEXTURE_MAX_LEVEL = 0x813D; + public const int TEXTURE_MAX_LEVEL_SGIS = 0x813D; + public const int TEXTURE_MAX_LOD = 0x813B; + public const int TEXTURE_MAX_LOD_SGIS = 0x813B; + public const int TEXTURE_MEMORY_LAYOUT_INTEL = 0x83FF; + public const int TEXTURE_MIN_FILTER = 0x2801; + public const int TEXTURE_MIN_LOD = 0x813A; + public const int TEXTURE_MIN_LOD_SGIS = 0x813A; + public const int TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x812E; + public const int TEXTURE_NORMAL_EXT = 0x85AF; + public const int TEXTURE_POST_SPECULAR_HP = 0x8168; + public const int TEXTURE_PRE_SPECULAR_HP = 0x8169; + public const int TEXTURE_PRIORITY_EXT = 0x8066; + public const int TEXTURE_RANGE_LENGTH_APPLE = 0x85B7; + public const int TEXTURE_RANGE_POINTER_APPLE = 0x85B8; + public const int TEXTURE_RECTANGLE = 0x84F5; + public const int TEXTURE_RECTANGLE_ARB = 0x84F5; + public const int TEXTURE_RECTANGLE_NV = 0x84F5; + public const int TEXTURE_REDUCTION_MODE_ARB = 0x9366; + public const int TEXTURE_REDUCTION_MODE_EXT = 0x9366; + public const int TEXTURE_RED_SIZE = 0x805C; + public const int TEXTURE_RED_SIZE_EXT = 0x805C; + public const int TEXTURE_RED_TYPE = 0x8C10; + public const int TEXTURE_RED_TYPE_ARB = 0x8C10; + public const int TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = 0x8E54; + public const int TEXTURE_RENDERBUFFER_NV = 0x8E55; + public const int TEXTURE_RESIDENT_EXT = 0x8067; + public const int TEXTURE_SAMPLES = 0x9106; + public const int TEXTURE_SHADER_NV = 0x86DE; + public const int TEXTURE_SHADOW = 0x82A1; + public const int TEXTURE_SHARED_SIZE = 0x8C3F; + public const int TEXTURE_SHARED_SIZE_EXT = 0x8C3F; + public const int TEXTURE_SPARSE_ARB = 0x91A6; + public const int TEXTURE_SRGB_DECODE_EXT = 0x8A48; + public const int TEXTURE_STENCIL_SIZE = 0x88F1; + public const int TEXTURE_STENCIL_SIZE_EXT = 0x88F1; + public const int TEXTURE_STORAGE_HINT_APPLE = 0x85BC; + public const int TEXTURE_STORAGE_SPARSE_BIT_AMD = 0x00000001; + public const int TEXTURE_SWIZZLE_A = 0x8E45; + public const int TEXTURE_SWIZZLE_A_EXT = 0x8E45; + public const int TEXTURE_SWIZZLE_B = 0x8E44; + public const int TEXTURE_SWIZZLE_B_EXT = 0x8E44; + public const int TEXTURE_SWIZZLE_G = 0x8E43; + public const int TEXTURE_SWIZZLE_G_EXT = 0x8E43; + public const int TEXTURE_SWIZZLE_R = 0x8E42; + public const int TEXTURE_SWIZZLE_RGBA = 0x8E46; + public const int TEXTURE_SWIZZLE_RGBA_EXT = 0x8E46; + public const int TEXTURE_SWIZZLE_R_EXT = 0x8E42; + public const int TEXTURE_TARGET = 0x1006; + public const int TEXTURE_TILING_EXT = 0x9580; + public const int TEXTURE_TOO_LARGE_EXT = 0x8065; + public const int TEXTURE_UNSIGNED_REMAP_MODE_NV = 0x888F; + public const int TEXTURE_UPDATE_BARRIER_BIT = 0x00000100; + public const int TEXTURE_UPDATE_BARRIER_BIT_EXT = 0x00000100; + public const int TEXTURE_VIEW = 0x82B5; + public const int TEXTURE_VIEW_MIN_LAYER = 0x82DD; + public const int TEXTURE_VIEW_MIN_LEVEL = 0x82DB; + public const int TEXTURE_VIEW_NUM_LAYERS = 0x82DE; + public const int TEXTURE_VIEW_NUM_LEVELS = 0x82DC; + public const int TEXTURE_WIDTH = 0x1000; + public const int TEXTURE_WRAP_Q_SGIS = 0x8137; + public const int TEXTURE_WRAP_R = 0x8072; + public const int TEXTURE_WRAP_R_EXT = 0x8072; + public const int TEXTURE_WRAP_S = 0x2802; + public const int TEXTURE_WRAP_T = 0x2803; + public const int TEXT_FRAGMENT_SHADER_ATI = 0x8200; + public const int TILE_RASTER_ORDER_FIXED_MESA = 0x8BB8; + public const int TILE_RASTER_ORDER_INCREASING_X_MESA = 0x8BB9; + public const int TILE_RASTER_ORDER_INCREASING_Y_MESA = 0x8BBA; + public const int TILING_TYPES_EXT = 0x9583; + public const int TIMELINE_SEMAPHORE_VALUE_NV = 0x9595; + public const int TIMEOUT_EXPIRED = 0x911B; + public const ulong TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF; + public const int TIMESTAMP = 0x8E28; + public const int TIME_ELAPSED = 0x88BF; + public const int TIME_ELAPSED_EXT = 0x88BF; + public const int TOP_LEVEL_ARRAY_SIZE = 0x930C; + public const int TOP_LEVEL_ARRAY_STRIDE = 0x930D; + public const int TRACK_MATRIX_NV = 0x8648; + public const int TRACK_MATRIX_TRANSFORM_NV = 0x8649; + public const int TRANSFORM_FEEDBACK = 0x8E22; + public const int TRANSFORM_FEEDBACK_ACTIVE = 0x8E24; + public const int TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x8C7E; + public const int TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800; + public const int TRANSFORM_FEEDBACK_BARRIER_BIT_EXT = 0x00000800; + public const int TRANSFORM_FEEDBACK_BINDING = 0x8E25; + public const int TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25; + public const int TRANSFORM_FEEDBACK_BUFFER = 0x8C8E; + public const int TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24; + public const int TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24; + public const int TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F; + public const int TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = 0x8C8F; + public const int TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F; + public const int TRANSFORM_FEEDBACK_BUFFER_EXT = 0x8C8E; + public const int TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B; + public const int TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F; + public const int TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = 0x8C7F; + public const int TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x8C7F; + public const int TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E; + public const int TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23; + public const int TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23; + public const int TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85; + public const int TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = 0x8C85; + public const int TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x8C85; + public const int TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84; + public const int TRANSFORM_FEEDBACK_BUFFER_START_EXT = 0x8C84; + public const int TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x8C84; + public const int TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C; + public const int TRANSFORM_FEEDBACK_NV = 0x8E22; + public const int TRANSFORM_FEEDBACK_OVERFLOW = 0x82EC; + public const int TRANSFORM_FEEDBACK_OVERFLOW_ARB = 0x82EC; + public const int TRANSFORM_FEEDBACK_PAUSED = 0x8E23; + public const int TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88; + public const int TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = 0x8C88; + public const int TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x8C88; + public const int TRANSFORM_FEEDBACK_RECORD_NV = 0x8C86; + public const int TRANSFORM_FEEDBACK_STREAM_OVERFLOW = 0x82ED; + public const int TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB = 0x82ED; + public const int TRANSFORM_FEEDBACK_VARYING = 0x92F4; + public const int TRANSFORM_FEEDBACK_VARYINGS = 0x8C83; + public const int TRANSFORM_FEEDBACK_VARYINGS_EXT = 0x8C83; + public const int TRANSFORM_FEEDBACK_VARYINGS_NV = 0x8C83; + public const int TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76; + public const int TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = 0x8C76; + public const int TRANSFORM_HINT_APPLE = 0x85B1; + public const int TRANSLATE_2D_NV = 0x9090; + public const int TRANSLATE_3D_NV = 0x9091; + public const int TRANSLATE_X_NV = 0x908E; + public const int TRANSLATE_Y_NV = 0x908F; + public const int TRANSPOSE_AFFINE_2D_NV = 0x9096; + public const int TRANSPOSE_AFFINE_3D_NV = 0x9098; + public const int TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6; + public const int TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7; + public const int TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3; + public const int TRANSPOSE_NV = 0x862C; + public const int TRANSPOSE_PROGRAM_MATRIX_EXT = 0x8E2E; + public const int TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4; + public const int TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5; + public const int TRIANGLES = 0x0004; + public const int TRIANGLES_ADJACENCY = 0x000C; + public const int TRIANGLES_ADJACENCY_ARB = 0x000C; + public const int TRIANGLES_ADJACENCY_EXT = 0x000C; + public const int TRIANGLE_FAN = 0x0006; + public const int TRIANGLE_LIST_SUN = 0x81D7; + public const int TRIANGLE_MESH_SUN = 0x8615; + public const int TRIANGLE_STRIP = 0x0005; + public const int TRIANGLE_STRIP_ADJACENCY = 0x000D; + public const int TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D; + public const int TRIANGLE_STRIP_ADJACENCY_EXT = 0x000D; + public const int TRIANGULAR_NV = 0x90A5; + public const int TRUE = 1; + public const int TYPE = 0x92FA; + public const int UNCORRELATED_NV = 0x9282; + public const int UNDEFINED_APPLE = 0x8A1C; + public const int UNDEFINED_VERTEX = 0x8260; + public const int UNIFORM = 0x92E1; + public const int UNIFORM_ADDRESS_COMMAND_NV = 0x000A; + public const int UNIFORM_ARRAY_STRIDE = 0x8A3C; + public const int UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x92DA; + public const int UNIFORM_BARRIER_BIT = 0x00000004; + public const int UNIFORM_BARRIER_BIT_EXT = 0x00000004; + public const int UNIFORM_BLOCK = 0x92E2; + public const int UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42; + public const int UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43; + public const int UNIFORM_BLOCK_BINDING = 0x8A3F; + public const int UNIFORM_BLOCK_DATA_SIZE = 0x8A40; + public const int UNIFORM_BLOCK_INDEX = 0x8A3A; + public const int UNIFORM_BLOCK_NAME_LENGTH = 0x8A41; + public const int UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC; + public const int UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46; + public const int UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45; + public const int UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV = 0x959C; + public const int UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV = 0x959D; + public const int UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0; + public const int UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1; + public const int UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44; + public const int UNIFORM_BUFFER = 0x8A11; + public const int UNIFORM_BUFFER_ADDRESS_NV = 0x936F; + public const int UNIFORM_BUFFER_BINDING = 0x8A28; + public const int UNIFORM_BUFFER_BINDING_EXT = 0x8DEF; + public const int UNIFORM_BUFFER_EXT = 0x8DEE; + public const int UNIFORM_BUFFER_LENGTH_NV = 0x9370; + public const int UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34; + public const int UNIFORM_BUFFER_SIZE = 0x8A2A; + public const int UNIFORM_BUFFER_START = 0x8A29; + public const int UNIFORM_BUFFER_UNIFIED_NV = 0x936E; + public const int UNIFORM_IS_ROW_MAJOR = 0x8A3E; + public const int UNIFORM_MATRIX_STRIDE = 0x8A3D; + public const int UNIFORM_NAME_LENGTH = 0x8A39; + public const int UNIFORM_OFFSET = 0x8A3B; + public const int UNIFORM_SIZE = 0x8A38; + public const int UNIFORM_TYPE = 0x8A37; + public const int UNKNOWN_CONTEXT_RESET = 0x8255; + public const int UNKNOWN_CONTEXT_RESET_ARB = 0x8255; + public const int UNPACK_ALIGNMENT = 0x0CF5; + public const int UNPACK_CLIENT_STORAGE_APPLE = 0x85B2; + public const int UNPACK_CMYK_HINT_EXT = 0x800F; + public const int UNPACK_COMPRESSED_BLOCK_DEPTH = 0x9129; + public const int UNPACK_COMPRESSED_BLOCK_HEIGHT = 0x9128; + public const int UNPACK_COMPRESSED_BLOCK_SIZE = 0x912A; + public const int UNPACK_COMPRESSED_BLOCK_WIDTH = 0x9127; + public const int UNPACK_CONSTANT_DATA_SUNX = 0x81D5; + public const int UNPACK_IMAGE_DEPTH_SGIS = 0x8133; + public const int UNPACK_IMAGE_HEIGHT = 0x806E; + public const int UNPACK_IMAGE_HEIGHT_EXT = 0x806E; + public const int UNPACK_LSB_FIRST = 0x0CF1; + public const int UNPACK_RESAMPLE_OML = 0x8985; + public const int UNPACK_RESAMPLE_SGIX = 0x842F; + public const int UNPACK_ROW_BYTES_APPLE = 0x8A16; + public const int UNPACK_ROW_LENGTH = 0x0CF2; + public const int UNPACK_SKIP_IMAGES = 0x806D; + public const int UNPACK_SKIP_IMAGES_EXT = 0x806D; + public const int UNPACK_SKIP_PIXELS = 0x0CF4; + public const int UNPACK_SKIP_ROWS = 0x0CF3; + public const int UNPACK_SKIP_VOLUMES_SGIS = 0x8132; + public const int UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1; + public const int UNPACK_SWAP_BYTES = 0x0CF0; + public const int UNSIGNALED = 0x9118; + public const int UNSIGNED_BYTE = 0x1401; + public const int UNSIGNED_BYTE_2_3_3_REV = 0x8362; + public const int UNSIGNED_BYTE_3_3_2 = 0x8032; + public const int UNSIGNED_BYTE_3_3_2_EXT = 0x8032; + public const int UNSIGNED_IDENTITY_NV = 0x8536; + public const int UNSIGNED_INT = 0x1405; + public const int UNSIGNED_INT16_NV = 0x8FF0; + public const int UNSIGNED_INT16_VEC2_NV = 0x8FF1; + public const int UNSIGNED_INT16_VEC3_NV = 0x8FF2; + public const int UNSIGNED_INT16_VEC4_NV = 0x8FF3; + public const int UNSIGNED_INT64_AMD = 0x8BC2; + public const int UNSIGNED_INT64_ARB = 0x140F; + public const int UNSIGNED_INT64_NV = 0x140F; + public const int UNSIGNED_INT64_VEC2_ARB = 0x8FF5; + public const int UNSIGNED_INT64_VEC2_NV = 0x8FF5; + public const int UNSIGNED_INT64_VEC3_ARB = 0x8FF6; + public const int UNSIGNED_INT64_VEC3_NV = 0x8FF6; + public const int UNSIGNED_INT64_VEC4_ARB = 0x8FF7; + public const int UNSIGNED_INT64_VEC4_NV = 0x8FF7; + public const int UNSIGNED_INT8_NV = 0x8FEC; + public const int UNSIGNED_INT8_VEC2_NV = 0x8FED; + public const int UNSIGNED_INT8_VEC3_NV = 0x8FEE; + public const int UNSIGNED_INT8_VEC4_NV = 0x8FEF; + public const int UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B; + public const int UNSIGNED_INT_10F_11F_11F_REV_EXT = 0x8C3B; + public const int UNSIGNED_INT_10_10_10_2 = 0x8036; + public const int UNSIGNED_INT_10_10_10_2_EXT = 0x8036; + public const int UNSIGNED_INT_24_8 = 0x84FA; + public const int UNSIGNED_INT_24_8_EXT = 0x84FA; + public const int UNSIGNED_INT_24_8_NV = 0x84FA; + public const int UNSIGNED_INT_2_10_10_10_REV = 0x8368; + public const int UNSIGNED_INT_5_9_9_9_REV = 0x8C3E; + public const int UNSIGNED_INT_5_9_9_9_REV_EXT = 0x8C3E; + public const int UNSIGNED_INT_8_8_8_8 = 0x8035; + public const int UNSIGNED_INT_8_8_8_8_EXT = 0x8035; + public const int UNSIGNED_INT_8_8_8_8_REV = 0x8367; + public const int UNSIGNED_INT_8_8_S8_S8_REV_NV = 0x86DB; + public const int UNSIGNED_INT_ATOMIC_COUNTER = 0x92DB; + public const int UNSIGNED_INT_IMAGE_1D = 0x9062; + public const int UNSIGNED_INT_IMAGE_1D_ARRAY = 0x9068; + public const int UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = 0x9068; + public const int UNSIGNED_INT_IMAGE_1D_EXT = 0x9062; + public const int UNSIGNED_INT_IMAGE_2D = 0x9063; + public const int UNSIGNED_INT_IMAGE_2D_ARRAY = 0x9069; + public const int UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = 0x9069; + public const int UNSIGNED_INT_IMAGE_2D_EXT = 0x9063; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = 0x906B; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x906C; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x906C; + public const int UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x906B; + public const int UNSIGNED_INT_IMAGE_2D_RECT = 0x9065; + public const int UNSIGNED_INT_IMAGE_2D_RECT_EXT = 0x9065; + public const int UNSIGNED_INT_IMAGE_3D = 0x9064; + public const int UNSIGNED_INT_IMAGE_3D_EXT = 0x9064; + public const int UNSIGNED_INT_IMAGE_BUFFER = 0x9067; + public const int UNSIGNED_INT_IMAGE_BUFFER_EXT = 0x9067; + public const int UNSIGNED_INT_IMAGE_CUBE = 0x9066; + public const int UNSIGNED_INT_IMAGE_CUBE_EXT = 0x9066; + public const int UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 0x906A; + public const int UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x906A; + public const int UNSIGNED_INT_S8_S8_8_8_NV = 0x86DA; + public const int UNSIGNED_INT_SAMPLER_1D = 0x8DD1; + public const int UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6; + public const int UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6; + public const int UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1; + public const int UNSIGNED_INT_SAMPLER_2D = 0x8DD2; + public const int UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7; + public const int UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7; + public const int UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2; + public const int UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A; + public const int UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D; + public const int UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5; + public const int UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5; + public const int UNSIGNED_INT_SAMPLER_3D = 0x8DD3; + public const int UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3; + public const int UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8; + public const int UNSIGNED_INT_SAMPLER_BUFFER_AMD = 0x9003; + public const int UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8; + public const int UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4; + public const int UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4; + public const int UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F; + public const int UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900F; + public const int UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58; + public const int UNSIGNED_INT_VEC2 = 0x8DC6; + public const int UNSIGNED_INT_VEC2_EXT = 0x8DC6; + public const int UNSIGNED_INT_VEC3 = 0x8DC7; + public const int UNSIGNED_INT_VEC3_EXT = 0x8DC7; + public const int UNSIGNED_INT_VEC4 = 0x8DC8; + public const int UNSIGNED_INT_VEC4_EXT = 0x8DC8; + public const int UNSIGNED_INVERT_NV = 0x8537; + public const int UNSIGNED_NORMALIZED = 0x8C17; + public const int UNSIGNED_NORMALIZED_ARB = 0x8C17; + public const int UNSIGNED_SHORT = 0x1403; + public const int UNSIGNED_SHORT_1_5_5_5_REV = 0x8366; + public const int UNSIGNED_SHORT_4_4_4_4 = 0x8033; + public const int UNSIGNED_SHORT_4_4_4_4_EXT = 0x8033; + public const int UNSIGNED_SHORT_4_4_4_4_REV = 0x8365; + public const int UNSIGNED_SHORT_5_5_5_1 = 0x8034; + public const int UNSIGNED_SHORT_5_5_5_1_EXT = 0x8034; + public const int UNSIGNED_SHORT_5_6_5 = 0x8363; + public const int UNSIGNED_SHORT_5_6_5_REV = 0x8364; + public const int UNSIGNED_SHORT_8_8_APPLE = 0x85BA; + public const int UNSIGNED_SHORT_8_8_MESA = 0x85BA; + public const int UNSIGNED_SHORT_8_8_REV_APPLE = 0x85BB; + public const int UNSIGNED_SHORT_8_8_REV_MESA = 0x85BB; + public const int UPLOAD_GPU_MASK_NVX = 0x954A; + public const int UPPER_LEFT = 0x8CA2; + public const int USE_MISSING_GLYPH_NV = 0x90AA; + public const int UTF16_NV = 0x909B; + public const int UTF8_NV = 0x909A; + public const int UUID_SIZE_EXT = 16; + public const int VALIDATE_STATUS = 0x8B83; + public const int VARIABLE_A_NV = 0x8523; + public const int VARIABLE_B_NV = 0x8524; + public const int VARIABLE_C_NV = 0x8525; + public const int VARIABLE_D_NV = 0x8526; + public const int VARIABLE_E_NV = 0x8527; + public const int VARIABLE_F_NV = 0x8528; + public const int VARIABLE_G_NV = 0x8529; + public const int VARIANT_ARRAY_EXT = 0x87E8; + public const int VARIANT_ARRAY_POINTER_EXT = 0x87E9; + public const int VARIANT_ARRAY_STRIDE_EXT = 0x87E6; + public const int VARIANT_ARRAY_TYPE_EXT = 0x87E7; + public const int VARIANT_DATATYPE_EXT = 0x87E5; + public const int VARIANT_EXT = 0x87C1; + public const int VARIANT_VALUE_EXT = 0x87E4; + public const int VBO_FREE_MEMORY_ATI = 0x87FB; + public const int VECTOR_EXT = 0x87BF; + public const int VENDOR = 0x1F00; + public const int VERSION = 0x1F02; + public const int VERTEX23_BIT_PGI = 0x00000004; + public const int VERTEX4_BIT_PGI = 0x00000008; + public const int VERTEX_ARRAY = 0x8074; + public const int VERTEX_ARRAY_ADDRESS_NV = 0x8F21; + public const int VERTEX_ARRAY_BINDING = 0x85B5; + public const int VERTEX_ARRAY_BINDING_APPLE = 0x85B5; + public const int VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x8896; + public const int VERTEX_ARRAY_COUNT_EXT = 0x807D; + public const int VERTEX_ARRAY_EXT = 0x8074; + public const int VERTEX_ARRAY_LENGTH_NV = 0x8F2B; + public const int VERTEX_ARRAY_LIST_IBM = 103070; + public const int VERTEX_ARRAY_LIST_STRIDE_IBM = 103080; + public const int VERTEX_ARRAY_OBJECT_AMD = 0x9154; + public const int VERTEX_ARRAY_OBJECT_EXT = 0x9154; + public const int VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F5; + public const int VERTEX_ARRAY_POINTER_EXT = 0x808E; + public const int VERTEX_ARRAY_RANGE_APPLE = 0x851D; + public const int VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x851E; + public const int VERTEX_ARRAY_RANGE_LENGTH_NV = 0x851E; + public const int VERTEX_ARRAY_RANGE_NV = 0x851D; + public const int VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x8521; + public const int VERTEX_ARRAY_RANGE_POINTER_NV = 0x8521; + public const int VERTEX_ARRAY_RANGE_VALID_NV = 0x851F; + public const int VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = 0x8533; + public const int VERTEX_ARRAY_SIZE_EXT = 0x807A; + public const int VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F; + public const int VERTEX_ARRAY_STRIDE_EXT = 0x807C; + public const int VERTEX_ARRAY_TYPE_EXT = 0x807B; + public const int VERTEX_ATTRIB_ARRAY0_NV = 0x8650; + public const int VERTEX_ATTRIB_ARRAY10_NV = 0x865A; + public const int VERTEX_ATTRIB_ARRAY11_NV = 0x865B; + public const int VERTEX_ATTRIB_ARRAY12_NV = 0x865C; + public const int VERTEX_ATTRIB_ARRAY13_NV = 0x865D; + public const int VERTEX_ATTRIB_ARRAY14_NV = 0x865E; + public const int VERTEX_ATTRIB_ARRAY15_NV = 0x865F; + public const int VERTEX_ATTRIB_ARRAY1_NV = 0x8651; + public const int VERTEX_ATTRIB_ARRAY2_NV = 0x8652; + public const int VERTEX_ATTRIB_ARRAY3_NV = 0x8653; + public const int VERTEX_ATTRIB_ARRAY4_NV = 0x8654; + public const int VERTEX_ATTRIB_ARRAY5_NV = 0x8655; + public const int VERTEX_ATTRIB_ARRAY6_NV = 0x8656; + public const int VERTEX_ATTRIB_ARRAY7_NV = 0x8657; + public const int VERTEX_ATTRIB_ARRAY8_NV = 0x8658; + public const int VERTEX_ATTRIB_ARRAY9_NV = 0x8659; + public const int VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20; + public const int VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 0x00000001; + public const int VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT = 0x00000001; + public const int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F; + public const int VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x889F; + public const int VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE; + public const int VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE; + public const int VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622; + public const int VERTEX_ATTRIB_ARRAY_ENABLED_ARB = 0x8622; + public const int VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD; + public const int VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD; + public const int VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x88FD; + public const int VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A; + public const int VERTEX_ATTRIB_ARRAY_LONG = 0x874E; + public const int VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A; + public const int VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = 0x886A; + public const int VERTEX_ATTRIB_ARRAY_POINTER = 0x8645; + public const int VERTEX_ATTRIB_ARRAY_POINTER_ARB = 0x8645; + public const int VERTEX_ATTRIB_ARRAY_SIZE = 0x8623; + public const int VERTEX_ATTRIB_ARRAY_SIZE_ARB = 0x8623; + public const int VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624; + public const int VERTEX_ATTRIB_ARRAY_STRIDE_ARB = 0x8624; + public const int VERTEX_ATTRIB_ARRAY_TYPE = 0x8625; + public const int VERTEX_ATTRIB_ARRAY_TYPE_ARB = 0x8625; + public const int VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E; + public const int VERTEX_ATTRIB_BINDING = 0x82D4; + public const int VERTEX_ATTRIB_MAP1_APPLE = 0x8A00; + public const int VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x8A03; + public const int VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x8A05; + public const int VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x8A04; + public const int VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x8A02; + public const int VERTEX_ATTRIB_MAP2_APPLE = 0x8A01; + public const int VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x8A07; + public const int VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x8A09; + public const int VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x8A08; + public const int VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x8A06; + public const int VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5; + public const int VERTEX_BINDING_BUFFER = 0x8F4F; + public const int VERTEX_BINDING_DIVISOR = 0x82D6; + public const int VERTEX_BINDING_OFFSET = 0x82D7; + public const int VERTEX_BINDING_STRIDE = 0x82D8; + public const int VERTEX_BLEND_ARB = 0x86A7; + public const int VERTEX_CONSISTENT_HINT_PGI = 0x1A22B; + public const int VERTEX_DATA_HINT_PGI = 0x1A22A; + public const int VERTEX_ELEMENT_SWIZZLE_AMD = 0x91A4; + public const int VERTEX_ID_NV = 0x8C7B; + public const int VERTEX_ID_SWIZZLE_AMD = 0x91A5; + public const int VERTEX_PRECLIP_HINT_SGIX = 0x83EF; + public const int VERTEX_PRECLIP_SGIX = 0x83EE; + public const int VERTEX_PROGRAM_ARB = 0x8620; + public const int VERTEX_PROGRAM_BINDING_NV = 0x864A; + public const int VERTEX_PROGRAM_NV = 0x8620; + public const int VERTEX_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA2; + public const int VERTEX_PROGRAM_POINT_SIZE = 0x8642; + public const int VERTEX_PROGRAM_POINT_SIZE_ARB = 0x8642; + public const int VERTEX_PROGRAM_POINT_SIZE_NV = 0x8642; + public const int VERTEX_PROGRAM_TWO_SIDE_ARB = 0x8643; + public const int VERTEX_PROGRAM_TWO_SIDE_NV = 0x8643; + public const int VERTEX_SHADER = 0x8B31; + public const int VERTEX_SHADER_ARB = 0x8B31; + public const int VERTEX_SHADER_BINDING_EXT = 0x8781; + public const int VERTEX_SHADER_BIT = 0x00000001; + public const int VERTEX_SHADER_EXT = 0x8780; + public const int VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CF; + public const int VERTEX_SHADER_INVARIANTS_EXT = 0x87D1; + public const int VERTEX_SHADER_INVOCATIONS = 0x82F0; + public const int VERTEX_SHADER_INVOCATIONS_ARB = 0x82F0; + public const int VERTEX_SHADER_LOCALS_EXT = 0x87D3; + public const int VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87D2; + public const int VERTEX_SHADER_OPTIMIZED_EXT = 0x87D4; + public const int VERTEX_SHADER_VARIANTS_EXT = 0x87D0; + public const int VERTEX_SOURCE_ATI = 0x8774; + public const int VERTEX_STATE_PROGRAM_NV = 0x8621; + public const int VERTEX_STREAM0_ATI = 0x876C; + public const int VERTEX_STREAM1_ATI = 0x876D; + public const int VERTEX_STREAM2_ATI = 0x876E; + public const int VERTEX_STREAM3_ATI = 0x876F; + public const int VERTEX_STREAM4_ATI = 0x8770; + public const int VERTEX_STREAM5_ATI = 0x8771; + public const int VERTEX_STREAM6_ATI = 0x8772; + public const int VERTEX_STREAM7_ATI = 0x8773; + public const int VERTEX_SUBROUTINE = 0x92E8; + public const int VERTEX_SUBROUTINE_UNIFORM = 0x92EE; + public const int VERTEX_TEXTURE = 0x829B; + public const int VERTEX_WEIGHTING_EXT = 0x8509; + public const int VERTEX_WEIGHT_ARRAY_EXT = 0x850C; + public const int VERTEX_WEIGHT_ARRAY_POINTER_EXT = 0x8510; + public const int VERTEX_WEIGHT_ARRAY_SIZE_EXT = 0x850D; + public const int VERTEX_WEIGHT_ARRAY_STRIDE_EXT = 0x850F; + public const int VERTEX_WEIGHT_ARRAY_TYPE_EXT = 0x850E; + public const int VERTICAL_LINE_TO_NV = 0x08; + public const int VERTICES_SUBMITTED = 0x82EE; + public const int VERTICES_SUBMITTED_ARB = 0x82EE; + public const int VIBRANCE_BIAS_NV = 0x8719; + public const int VIBRANCE_SCALE_NV = 0x8713; + public const int VIDEO_BUFFER_BINDING_NV = 0x9021; + public const int VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x902D; + public const int VIDEO_BUFFER_NV = 0x9020; + public const int VIDEO_BUFFER_PITCH_NV = 0x9028; + public const int VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x903B; + public const int VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x903A; + public const int VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x9039; + public const int VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x9038; + public const int VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x903C; + public const int VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x9026; + public const int VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x9029; + public const int VIDEO_COLOR_CONVERSION_MAX_NV = 0x902A; + public const int VIDEO_COLOR_CONVERSION_MIN_NV = 0x902B; + public const int VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x902C; + public const int VIEWPORT = 0x0BA2; + public const int VIEWPORT_BOUNDS_RANGE = 0x825D; + public const int VIEWPORT_COMMAND_NV = 0x0010; + public const int VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F; + public const int VIEWPORT_POSITION_W_SCALE_NV = 0x937C; + public const int VIEWPORT_POSITION_W_SCALE_X_COEFF_NV = 0x937D; + public const int VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV = 0x937E; + public const int VIEWPORT_SUBPIXEL_BITS = 0x825C; + public const int VIEWPORT_SWIZZLE_NEGATIVE_W_NV = 0x9357; + public const int VIEWPORT_SWIZZLE_NEGATIVE_X_NV = 0x9351; + public const int VIEWPORT_SWIZZLE_NEGATIVE_Y_NV = 0x9353; + public const int VIEWPORT_SWIZZLE_NEGATIVE_Z_NV = 0x9355; + public const int VIEWPORT_SWIZZLE_POSITIVE_W_NV = 0x9356; + public const int VIEWPORT_SWIZZLE_POSITIVE_X_NV = 0x9350; + public const int VIEWPORT_SWIZZLE_POSITIVE_Y_NV = 0x9352; + public const int VIEWPORT_SWIZZLE_POSITIVE_Z_NV = 0x9354; + public const int VIEWPORT_SWIZZLE_W_NV = 0x935B; + public const int VIEWPORT_SWIZZLE_X_NV = 0x9358; + public const int VIEWPORT_SWIZZLE_Y_NV = 0x9359; + public const int VIEWPORT_SWIZZLE_Z_NV = 0x935A; + public const int VIEW_CLASS_128_BITS = 0x82C4; + public const int VIEW_CLASS_16_BITS = 0x82CA; + public const int VIEW_CLASS_24_BITS = 0x82C9; + public const int VIEW_CLASS_32_BITS = 0x82C8; + public const int VIEW_CLASS_48_BITS = 0x82C7; + public const int VIEW_CLASS_64_BITS = 0x82C6; + public const int VIEW_CLASS_8_BITS = 0x82CB; + public const int VIEW_CLASS_96_BITS = 0x82C5; + public const int VIEW_CLASS_ASTC_10x10_RGBA = 0x9393; + public const int VIEW_CLASS_ASTC_10x5_RGBA = 0x9390; + public const int VIEW_CLASS_ASTC_10x6_RGBA = 0x9391; + public const int VIEW_CLASS_ASTC_10x8_RGBA = 0x9392; + public const int VIEW_CLASS_ASTC_12x10_RGBA = 0x9394; + public const int VIEW_CLASS_ASTC_12x12_RGBA = 0x9395; + public const int VIEW_CLASS_ASTC_4x4_RGBA = 0x9388; + public const int VIEW_CLASS_ASTC_5x4_RGBA = 0x9389; + public const int VIEW_CLASS_ASTC_5x5_RGBA = 0x938A; + public const int VIEW_CLASS_ASTC_6x5_RGBA = 0x938B; + public const int VIEW_CLASS_ASTC_6x6_RGBA = 0x938C; + public const int VIEW_CLASS_ASTC_8x5_RGBA = 0x938D; + public const int VIEW_CLASS_ASTC_8x6_RGBA = 0x938E; + public const int VIEW_CLASS_ASTC_8x8_RGBA = 0x938F; + public const int VIEW_CLASS_BPTC_FLOAT = 0x82D3; + public const int VIEW_CLASS_BPTC_UNORM = 0x82D2; + public const int VIEW_CLASS_EAC_R11 = 0x9383; + public const int VIEW_CLASS_EAC_RG11 = 0x9384; + public const int VIEW_CLASS_ETC2_EAC_RGBA = 0x9387; + public const int VIEW_CLASS_ETC2_RGB = 0x9385; + public const int VIEW_CLASS_ETC2_RGBA = 0x9386; + public const int VIEW_CLASS_RGTC1_RED = 0x82D0; + public const int VIEW_CLASS_RGTC2_RG = 0x82D1; + public const int VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC; + public const int VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD; + public const int VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE; + public const int VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF; + public const int VIEW_COMPATIBILITY_CLASS = 0x82B6; + public const int VIRTUAL_PAGE_SIZE_INDEX_ARB = 0x91A7; + public const int VIRTUAL_PAGE_SIZE_X_AMD = 0x9195; + public const int VIRTUAL_PAGE_SIZE_X_ARB = 0x9195; + public const int VIRTUAL_PAGE_SIZE_Y_AMD = 0x9196; + public const int VIRTUAL_PAGE_SIZE_Y_ARB = 0x9196; + public const int VIRTUAL_PAGE_SIZE_Z_AMD = 0x9197; + public const int VIRTUAL_PAGE_SIZE_Z_ARB = 0x9197; + public const int VIVIDLIGHT_NV = 0x92A6; + public const int VOLATILE_APPLE = 0x8A1A; + public const int WAIT_FAILED = 0x911D; + public const int WARPS_PER_SM_NV = 0x933A; + public const int WARP_SIZE_NV = 0x9339; + public const int WEIGHTED_AVERAGE_ARB = 0x9367; + public const int WEIGHTED_AVERAGE_EXT = 0x9367; + public const int WEIGHT_ARRAY_ARB = 0x86AD; + public const int WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x889E; + public const int WEIGHT_ARRAY_POINTER_ARB = 0x86AC; + public const int WEIGHT_ARRAY_SIZE_ARB = 0x86AB; + public const int WEIGHT_ARRAY_STRIDE_ARB = 0x86AA; + public const int WEIGHT_ARRAY_TYPE_ARB = 0x86A9; + public const int WEIGHT_SUM_UNITY_ARB = 0x86A6; + public const int WIDE_LINE_HINT_PGI = 0x1A222; + public const int WINDOW_RECTANGLE_EXT = 0x8F12; + public const int WINDOW_RECTANGLE_MODE_EXT = 0x8F13; + public const int WRAP_BORDER_SUN = 0x81D4; + public const int WRITE_DISCARD_NV = 0x88BE; + public const int WRITE_ONLY = 0x88B9; + public const int WRITE_ONLY_ARB = 0x88B9; + public const int WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A; + public const int WRITE_PIXEL_DATA_RANGE_NV = 0x8878; + public const int WRITE_PIXEL_DATA_RANGE_POINTER_NV = 0x887C; + public const int W_EXT = 0x87D8; + public const int XOR = 0x1506; + public const int XOR_NV = 0x1506; + public const int X_EXT = 0x87D5; + public const int YCBAYCR8A_4224_NV = 0x9032; + public const int YCBCR_422_APPLE = 0x85B9; + public const int YCBCR_MESA = 0x8757; + public const int YCBYCR8_422_NV = 0x9031; + public const int YCRCBA_SGIX = 0x8319; + public const int YCRCB_422_SGIX = 0x81BB; + public const int YCRCB_444_SGIX = 0x81BC; + public const int YCRCB_SGIX = 0x8318; + public const int Y_EXT = 0x87D6; + public const int Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x9036; + public const int Z4Y12Z4CB12Z4CR12_444_NV = 0x9037; + public const int Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x9035; + public const int Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x9034; + public const int Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x9033; + public const int ZERO = 0; + public const int ZERO_EXT = 0x87DD; + public const int ZERO_TO_ONE = 0x935F; + public const int Z_EXT = 0x87D7; + + #endregion + } + + public static class glAttachment + { + + public const uint Depth = glConst.DEPTH_ATTACHMENT; + public const uint DepthAndStencil = glConst.DEPTH_STENCIL_ATTACHMENT; + public const uint Stencil = glConst.STENCIL_ATTACHMENT; + + public static uint Color( int i ) + { + #if DEBUG + if( ( i > OpenGLFunction.CurrentGL.AttachmentColorRange ) || ( i < 0 ) ) { + throw new ArgumentOutOfRangeException(); + } + #endif + return ( uint )( glConst.COLOR_ATTACHMENT0 + i ); + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glContext.cs b/StgSharp.Common/Graphics/OpenGL/glContext.cs new file mode 100644 index 00000000..a156d2af --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glContext.cs @@ -0,0 +1,2611 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glContext.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.HighPerformance; +using StgSharp.Internal; +using StgSharp.Internal.Intrinsic; + +using System; +using System.Collections.Generic; + +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + [StructLayout( LayoutKind.Sequential )] + public struct OpenglContext + { + + public override bool Equals( object obj ) + { + return false; + } + + public override unsafe int GetHashCode() + { + fixed( OpenglContext* sptr = &this ) { + return sptr->GetHashCode(); + } + } + + public static bool operator !=( + OpenglContext left, + OpenglContext right ) + { + return !( left == right ); + } + + public static bool operator ==( + OpenglContext left, + OpenglContext right ) + { + return left.Equals( right ); + } + + #region glapi + + internal unsafe delegate* glAccumxOES; + internal unsafe delegate* glAcquireKeyedMutexWin32EXT; + internal unsafe delegate* glActiveProgramEXT; + internal unsafe delegate* glActiveShaderProgram; + internal unsafe delegate* glActiveStencilFaceEXT; + internal unsafe delegate* glActiveTexture; + internal unsafe delegate* glActiveTextureARB; + internal unsafe delegate* glActiveVaryingNV; + internal unsafe delegate* glAlphaFragmentOp1ATI; + internal unsafe delegate* glAlphaFragmentOp2ATI; + internal unsafe delegate* glAlphaFragmentOp3ATI; + internal unsafe delegate* glAlphaFuncxOES; + internal unsafe delegate* glAlphaToCoverageDitherControlNV; + internal unsafe delegate* glApplyFramebufferAttachmentCMAAINTEL; + internal unsafe delegate* glApplyTextureEXT; + internal unsafe delegate* glAreProgramsResidentNV; + internal unsafe delegate* glAreTexturesResidentEXT; + internal unsafe delegate* glArrayElementEXT; + internal unsafe delegate* glArrayObjectATI; + internal unsafe delegate* glAsyncCopyBufferSubDataNVX; + internal unsafe delegate* glAsyncCopyImageSubDataNVX; + internal unsafe delegate* glAsyncMarkerSGIX; + internal unsafe delegate* glAttachObjectARB; + internal unsafe delegate* glAttachShader; + internal unsafe delegate* glBeginConditionalRender; + internal unsafe delegate* glBeginConditionalRenderNV; + internal unsafe delegate* glBeginConditionalRenderNVX; + internal unsafe delegate* glBeginFragmentShaderATI; + internal unsafe delegate* glBeginOcclusionQueryNV; + internal unsafe delegate* glBeginPerfMonitorAMD; + internal unsafe delegate* glBeginPerfQueryINTEL; + internal unsafe delegate* glBeginQuery; + internal unsafe delegate* glBeginQueryARB; + internal unsafe delegate* glBeginQueryIndexed; + internal unsafe delegate* glBeginTransformFeedback; + internal unsafe delegate* glBeginTransformFeedbackEXT; + internal unsafe delegate* glBeginTransformFeedbackNV; + internal unsafe delegate* glBeginVertexShaderEXT; + internal unsafe delegate* glBeginVideoCaptureNV; + internal unsafe delegate* glBindAttribLocation; + internal unsafe delegate* glBindAttribLocationARB; + internal unsafe delegate* glBindBuffer; + internal unsafe delegate* glBindBufferARB; + internal unsafe delegate* glBindBufferBase; + internal unsafe delegate* glBindBufferBaseEXT; + internal unsafe delegate* glBindBufferBaseNV; + internal unsafe delegate* glBindBufferOffsetEXT; + internal unsafe delegate* glBindBufferOffsetNV; + internal unsafe delegate* glBindBufferRange; + internal unsafe delegate* glBindBufferRangeEXT; + internal unsafe delegate* glBindBufferRangeNV; + internal unsafe delegate* glBindBuffersBase; + internal unsafe delegate* glBindBuffersRange; + internal unsafe delegate* glBindFragDataLocation; + internal unsafe delegate* glBindFragDataLocationEXT; + internal unsafe delegate* glBindFragDataLocationIndexed; + internal unsafe delegate* glBindFragmentShaderATI; + internal unsafe delegate* glBindFramebuffer; + internal unsafe delegate* glBindFramebufferEXT; + internal unsafe delegate* glBindImageTexture; + internal unsafe delegate* glBindImageTextureEXT; + internal unsafe delegate* glBindImageTextures; + internal unsafe delegate* glBindLightParameterEXT; + internal unsafe delegate* glBindMaterialParameterEXT; + internal unsafe delegate* glBindMultiTextureEXT; + internal unsafe delegate* glBindParameterEXT; + internal unsafe delegate* glBindProgramARB; + internal unsafe delegate* glBindProgramNV; + internal unsafe delegate* glBindProgramPipeline; + internal unsafe delegate* glBindRenderbuffer; + internal unsafe delegate* glBindRenderbufferEXT; + internal unsafe delegate* glBindSampler; + internal unsafe delegate* glBindSamplers; + internal unsafe delegate* glBindShadingRateImageNV; + internal unsafe delegate* glBindTexGenParameterEXT; + internal unsafe delegate* glBindTexture; + internal unsafe delegate* glBindTextureEXT; + internal unsafe delegate* glBindTextureUnit; + internal unsafe delegate* glBindTextureUnitParameterEXT; + internal unsafe delegate* glBindTextures; + internal unsafe delegate* glBindTransformFeedback; + internal unsafe delegate* glBindTransformFeedbackNV; + internal unsafe delegate* glBindVertexArray; + internal unsafe delegate* glBindVertexArrayAPPLE; + internal unsafe delegate* glBindVertexBuffer; + internal unsafe delegate* glBindVertexBuffers; + internal unsafe delegate* glBindVertexShaderEXT; + internal unsafe delegate* glBindVideoCaptureStreamBufferNV; + internal unsafe delegate* glBindVideoCaptureStreamTextureNV; + internal unsafe delegate* glBinormal3bEXT; + internal unsafe delegate* glBinormal3bvEXT; + internal unsafe delegate* glBinormal3dEXT; + internal unsafe delegate* glBinormal3dvEXT; + internal unsafe delegate* glBinormal3fEXT; + internal unsafe delegate* glBinormal3fvEXT; + internal unsafe delegate* glBinormal3iEXT; + internal unsafe delegate* glBinormal3ivEXT; + internal unsafe delegate* glBinormal3sEXT; + internal unsafe delegate* glBinormal3svEXT; + internal unsafe delegate* glBinormalPointerEXT; + internal unsafe delegate* glBitmapxOES; + internal unsafe delegate* glBlendBarrierKHR; + internal unsafe delegate* glBlendBarrierNV; + internal unsafe delegate* glBlendColor; + internal unsafe delegate* glBlendColorEXT; + internal unsafe delegate* glBlendColorxOES; + internal unsafe delegate* glBlendEquation; + internal unsafe delegate* glBlendEquationEXT; + internal unsafe delegate* glBlendEquationIndexedAMD; + internal unsafe delegate* glBlendEquationSeparate; + internal unsafe delegate* glBlendEquationSeparateEXT; + internal unsafe delegate* glBlendEquationSeparateIndexedAMD; + internal unsafe delegate* glBlendEquationSeparatei; + internal unsafe delegate* glBlendEquationSeparateiARB; + internal unsafe delegate* glBlendEquationi; + internal unsafe delegate* glBlendEquationiARB; + internal unsafe delegate* glBlendFunc; + internal unsafe delegate* glBlendFuncIndexedAMD; + internal unsafe delegate* glBlendFuncSeparate; + internal unsafe delegate* glBlendFuncSeparateEXT; + internal unsafe delegate* glBlendFuncSeparateINGR; + internal unsafe delegate* glBlendFuncSeparateIndexedAMD; + internal unsafe delegate* glBlendFuncSeparatei; + internal unsafe delegate* glBlendFuncSeparateiARB; + internal unsafe delegate* glBlendFunci; + internal unsafe delegate* glBlendFunciARB; + internal unsafe delegate* glBlendParameteriNV; + internal unsafe delegate* glBlitFramebuffer; + internal unsafe delegate* glBlitFramebufferEXT; + internal unsafe delegate* glBlitFramebufferLayerEXT; + internal unsafe delegate* glBlitFramebufferLayersEXT; + internal unsafe delegate* glBlitNamedFramebuffer; + internal unsafe delegate* glBufferAddressRangeNV; + internal unsafe delegate* glBufferAttachMemoryNV; + internal unsafe delegate* glBufferData; + internal unsafe delegate* glBufferDataARB; + internal unsafe delegate* glBufferPageCommitmentARB; + internal unsafe delegate* glBufferPageCommitmentMemNV; + internal unsafe delegate* glBufferParameteriAPPLE; + internal unsafe delegate* glBufferStorage; + [Obsolete( "Param type uncertain", true )] internal unsafe delegate* glBufferStorageExternalEXT; + internal unsafe delegate* glBufferStorageMemEXT; + internal unsafe delegate* glBufferSubData; + internal unsafe delegate* glBufferSubDataARB; + internal unsafe delegate* glCallCommandListNV; + internal unsafe delegate* glCheckFramebufferStatus; + internal unsafe delegate* glCheckFramebufferStatusEXT; + internal unsafe delegate* glCheckNamedFramebufferStatus; + internal unsafe delegate* glCheckNamedFramebufferStatusEXT; + internal unsafe delegate* glClampColor; + internal unsafe delegate* glClampColorARB; + internal unsafe delegate* glClear; + internal unsafe delegate* glClearAccumxOES; + internal unsafe delegate* glClearBufferData; + internal unsafe delegate* glClearBufferSubData; + internal unsafe delegate* glClearBufferfi; + internal unsafe delegate* glClearBufferfv; + internal unsafe delegate* glClearBufferiv; + internal unsafe delegate* glClearBufferuiv; + internal unsafe delegate* glClearColor; + internal unsafe delegate* glClearColorIiEXT; + internal unsafe delegate* glClearColorIuiEXT; + internal unsafe delegate* glClearColorxOES; + internal unsafe delegate* glClearDepth; + internal unsafe delegate* glClearDepthdNV; + internal unsafe delegate* glClearDepthf; + internal unsafe delegate* glClearDepthfOES; + internal unsafe delegate* glClearDepthxOES; + internal unsafe delegate* glClearNamedBufferData; + internal unsafe delegate* glClearNamedBufferDataEXT; + internal unsafe delegate* glClearNamedBufferSubData; + internal unsafe delegate* glClearNamedBufferSubDataEXT; + internal unsafe delegate* glClearNamedFramebufferfi; + internal unsafe delegate* glClearNamedFramebufferfv; + internal unsafe delegate* glClearNamedFramebufferiv; + internal unsafe delegate* glClearNamedFramebufferuiv; + internal unsafe delegate* glClearStencil; + internal unsafe delegate* glClearTexImage; + internal unsafe delegate* glClearTexSubImage; + internal unsafe delegate* glClientActiveTextureARB; + internal unsafe delegate* glClientActiveVertexStreamATI; + internal unsafe delegate* glClientAttribDefaultEXT; + internal unsafe delegate* glClientWaitSemaphoreui64NVX; + internal unsafe delegate* glClientWaitSync; + internal unsafe delegate* glClipControl; + internal unsafe delegate* glClipPlanefOES; + internal unsafe delegate* glClipPlanexOES; + internal unsafe delegate* glColor3fVertex3fSUN; + internal unsafe delegate* glColor3fVertex3fvSUN; + internal unsafe delegate* glColor3hNV; + internal unsafe delegate* glColor3hvNV; + internal unsafe delegate* glColor3xOES; + internal unsafe delegate* glColor3xvOES; + internal unsafe delegate* glColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glColor4hNV; + internal unsafe delegate* glColor4hvNV; + internal unsafe delegate* glColor4ubVertex2fSUN; + internal unsafe delegate* glColor4ubVertex2fvSUN; + internal unsafe delegate* glColor4ubVertex3fSUN; + internal unsafe delegate* glColor4ubVertex3fvSUN; + internal unsafe delegate* glColor4xOES; + internal unsafe delegate* glColor4xvOES; + internal unsafe delegate* glColorFormatNV; + internal unsafe delegate* glColorFragmentOp1ATI; + internal unsafe delegate* glColorFragmentOp2ATI; + internal unsafe delegate* glColorFragmentOp3ATI; + internal unsafe delegate* glColorMask; + internal unsafe delegate* glColorMaskIndexedEXT; + internal unsafe delegate* glColorMaski; + internal unsafe delegate* glColorPointerEXT; + internal unsafe delegate* glColorPointerListIBM; + internal unsafe delegate* glColorPointervINTEL; + internal unsafe delegate* glColorSubTableEXT; + internal unsafe delegate* glColorTableEXT; + internal unsafe delegate* glColorTableParameterfvSGI; + internal unsafe delegate* glColorTableParameterivSGI; + internal unsafe delegate* glColorTableSGI; + internal unsafe delegate* glCombinerInputNV; + internal unsafe delegate* glCombinerOutputNV; + internal unsafe delegate* glCombinerParameterfNV; + internal unsafe delegate* glCombinerParameterfvNV; + internal unsafe delegate* glCombinerParameteriNV; + internal unsafe delegate* glCombinerParameterivNV; + internal unsafe delegate* glCombinerStageParameterfvNV; + internal unsafe delegate* glCommandListSegmentsNV; + internal unsafe delegate* glCompileCommandListNV; + internal unsafe delegate* glCompileShader; + internal unsafe delegate* glCompileShaderARB; + internal unsafe delegate* glCompileShaderIncludeARB; + internal unsafe delegate* glCompressedMultiTexImage1DEXT; + internal unsafe delegate* glCompressedMultiTexImage2DEXT; + internal unsafe delegate* glCompressedMultiTexImage3DEXT; + internal unsafe delegate* glCompressedMultiTexSubImage1DEXT; + internal unsafe delegate* glCompressedMultiTexSubImage2DEXT; + internal unsafe delegate* glCompressedMultiTexSubImage3DEXT; + internal unsafe delegate* glCompressedTexImage1D; + internal unsafe delegate* glCompressedTexImage1DARB; + internal unsafe delegate* glCompressedTexImage2D; + internal unsafe delegate* glCompressedTexImage2DARB; + internal unsafe delegate* glCompressedTexImage3D; + internal unsafe delegate* glCompressedTexImage3DARB; + internal unsafe delegate* glCompressedTexSubImage1D; + internal unsafe delegate* glCompressedTexSubImage1DARB; + internal unsafe delegate* glCompressedTexSubImage2D; + internal unsafe delegate* glCompressedTexSubImage2DARB; + internal unsafe delegate* glCompressedTexSubImage3D; + internal unsafe delegate* glCompressedTexSubImage3DARB; + internal unsafe delegate* glCompressedTextureImage1DEXT; + internal unsafe delegate* glCompressedTextureImage2DEXT; + internal unsafe delegate* glCompressedTextureImage3DEXT; + internal unsafe delegate* glCompressedTextureSubImage1D; + internal unsafe delegate* glCompressedTextureSubImage1DEXT; + internal unsafe delegate* glCompressedTextureSubImage2D; + internal unsafe delegate* glCompressedTextureSubImage2DEXT; + internal unsafe delegate* glCompressedTextureSubImage3D; + internal unsafe delegate* glCompressedTextureSubImage3DEXT; + internal unsafe delegate* glConservativeRasterParameterfNV; + internal unsafe delegate* glConservativeRasterParameteriNV; + internal unsafe delegate* glConvolutionFilter1DEXT; + internal unsafe delegate* glConvolutionFilter2DEXT; + internal unsafe delegate* glConvolutionParameterfEXT; + internal unsafe delegate* glConvolutionParameterfvEXT; + internal unsafe delegate* glConvolutionParameteriEXT; + internal unsafe delegate* glConvolutionParameterivEXT; + internal unsafe delegate* glConvolutionParameterxOES; + internal unsafe delegate* glConvolutionParameterxvOES; + internal unsafe delegate* glCopyBufferSubData; + internal unsafe delegate* glCopyColorSubTableEXT; + internal unsafe delegate* glCopyColorTableSGI; + internal unsafe delegate* glCopyConvolutionFilter1DEXT; + internal unsafe delegate* glCopyConvolutionFilter2DEXT; + internal unsafe delegate* glCopyImageSubData; + internal unsafe delegate* glCopyImageSubDataNV; + internal unsafe delegate* glCopyMultiTexImage1DEXT; + internal unsafe delegate* glCopyMultiTexImage2DEXT; + internal unsafe delegate* glCopyMultiTexSubImage1DEXT; + internal unsafe delegate* glCopyMultiTexSubImage2DEXT; + internal unsafe delegate* glCopyMultiTexSubImage3DEXT; + internal unsafe delegate* glCopyNamedBufferSubData; + internal unsafe delegate* glCopyPathNV; + internal unsafe delegate* glCopyTexImage1D; + internal unsafe delegate* glCopyTexImage1DEXT; + internal unsafe delegate* glCopyTexImage2D; + internal unsafe delegate* glCopyTexImage2DEXT; + internal unsafe delegate* glCopyTexSubImage1D; + internal unsafe delegate* glCopyTexSubImage1DEXT; + internal unsafe delegate* glCopyTexSubImage2D; + internal unsafe delegate* glCopyTexSubImage2DEXT; + internal unsafe delegate* glCopyTexSubImage3D; + internal unsafe delegate* glCopyTexSubImage3DEXT; + internal unsafe delegate* glCopyTextureImage1DEXT; + internal unsafe delegate* glCopyTextureImage2DEXT; + internal unsafe delegate* glCopyTextureSubImage1D; + internal unsafe delegate* glCopyTextureSubImage1DEXT; + internal unsafe delegate* glCopyTextureSubImage2D; + internal unsafe delegate* glCopyTextureSubImage2DEXT; + internal unsafe delegate* glCopyTextureSubImage3D; + internal unsafe delegate* glCopyTextureSubImage3DEXT; + internal unsafe delegate* glCoverFillPathInstancedNV; + internal unsafe delegate* glCoverFillPathNV; + internal unsafe delegate* glCoverStrokePathInstancedNV; + internal unsafe delegate* glCoverStrokePathNV; + internal unsafe delegate* glCoverageModulationNV; + internal unsafe delegate* glCoverageModulationTableNV; + internal unsafe delegate* glCreateBuffers; + internal unsafe delegate* glCreateCommandListsNV; + internal unsafe delegate* glCreateFramebuffers; + internal unsafe delegate* glCreateMemoryObjectsEXT; + internal unsafe delegate* glCreatePerfQueryINTEL; + internal unsafe delegate* glCreateProgram; + internal unsafe delegate* glCreateProgramObjectARB; + internal unsafe delegate* glCreateProgramPipelines; + internal unsafe delegate* glCreateProgressFenceNVX; + internal unsafe delegate* glCreateQueries; + internal unsafe delegate* glCreateRenderbuffers; + internal unsafe delegate* glCreateSamplers; + internal unsafe delegate* glCreateSemaphoresNV; + internal unsafe delegate* glCreateShader; + internal unsafe delegate* glCreateShaderObjectARB; + internal unsafe delegate* glCreateShaderProgramEXT; + internal unsafe delegate* glCreateShaderProgramv; + internal unsafe delegate* glCreateStatesNV; + internal unsafe delegate* glCreateSyncFromCLeventARB; + internal unsafe delegate* glCreateTextures; + internal unsafe delegate* glCreateTransformFeedbacks; + internal unsafe delegate* glCreateVertexArrays; + internal unsafe delegate* glCullFace; + internal unsafe delegate* glCullParameterdvEXT; + internal unsafe delegate* glCullParameterfvEXT; + internal unsafe delegate* glCurrentPaletteMatrixARB; + internal unsafe delegate* glDebugMessageCallback; + internal unsafe delegate* glDebugMessageCallbackAMD; + internal unsafe delegate* glDebugMessageCallbackARB; + internal unsafe delegate* glDebugMessageControl; + internal unsafe delegate* glDebugMessageControlARB; + internal unsafe delegate* glDebugMessageEnableAMD; + internal unsafe delegate* glDebugMessageInsert; + internal unsafe delegate* glDebugMessageInsertAMD; + internal unsafe delegate* glDebugMessageInsertARB; + internal unsafe delegate* glDeformSGIX; + internal unsafe delegate* glDeformationMap3dSGIX; + internal unsafe delegate* glDeformationMap3fSGIX; + internal unsafe delegate* glDeleteAsyncMarkersSGIX; + internal unsafe delegate* glDeleteBuffers; + internal unsafe delegate* glDeleteBuffersARB; + internal unsafe delegate* glDeleteCommandListsNV; + internal unsafe delegate* glDeleteFencesAPPLE; + internal unsafe delegate* glDeleteFencesNV; + internal unsafe delegate* glDeleteFragmentShaderATI; + internal unsafe delegate* glDeleteFramebuffers; + internal unsafe delegate* glDeleteFramebuffersEXT; + internal unsafe delegate* glDeleteMemoryObjectsEXT; + internal unsafe delegate* glDeleteNamedStringARB; + internal unsafe delegate* glDeleteNamesAMD; + internal unsafe delegate* glDeleteObjectARB; + internal unsafe delegate* glDeleteOcclusionQueriesNV; + internal unsafe delegate* glDeletePathsNV; + internal unsafe delegate* glDeletePerfMonitorsAMD; + internal unsafe delegate* glDeletePerfQueryINTEL; + internal unsafe delegate* glDeleteProgram; + internal unsafe delegate* glDeleteProgramPipelines; + internal unsafe delegate* glDeleteProgramsARB; + internal unsafe delegate* glDeleteProgramsNV; + internal unsafe delegate* glDeleteQueries; + internal unsafe delegate* glDeleteQueriesARB; + internal unsafe delegate* glDeleteQueryResourceTagNV; + internal unsafe delegate* glDeleteRenderbuffers; + internal unsafe delegate* glDeleteRenderbuffersEXT; + internal unsafe delegate* glDeleteSamplers; + internal unsafe delegate* glDeleteSemaphoresEXT; + internal unsafe delegate* glDeleteShader; + internal unsafe delegate* glDeleteStatesNV; + internal unsafe delegate* glDeleteSync; + internal unsafe delegate* glDeleteTextures; + internal unsafe delegate* glDeleteTexturesEXT; + internal unsafe delegate* glDeleteTransformFeedbacks; + internal unsafe delegate* glDeleteTransformFeedbacksNV; + internal unsafe delegate* glDeleteVertexArrays; + internal unsafe delegate* glDeleteVertexArraysAPPLE; + internal unsafe delegate* glDeleteVertexShaderEXT; + internal unsafe delegate* glDepthBoundsEXT; + internal unsafe delegate* glDepthBoundsdNV; + internal unsafe delegate* glDepthFunc; + internal unsafe delegate* glDepthMask; + internal unsafe delegate* glDepthRange; + internal unsafe delegate* glDepthRangeArraydvNV; + internal unsafe delegate* glDepthRangeArrayv; + internal unsafe delegate* glDepthRangeIndexed; + internal unsafe delegate* glDepthRangeIndexeddNV; + internal unsafe delegate* glDepthRangedNV; + internal unsafe delegate* glDepthRangef; + internal unsafe delegate* glDepthRangefOES; + internal unsafe delegate* glDepthRangexOES; + internal unsafe delegate* glDetachObjectARB; + internal unsafe delegate* glDetachShader; + internal unsafe delegate* glDetailTexFuncSGIS; + internal unsafe delegate* glDisable; + internal unsafe delegate* glDisableClientStateIndexedEXT; + internal unsafe delegate* glDisableClientStateiEXT; + internal unsafe delegate* glDisableIndexedEXT; + internal unsafe delegate* glDisableVariantClientStateEXT; + internal unsafe delegate* glDisableVertexArrayAttrib; + internal unsafe delegate* glDisableVertexArrayAttribEXT; + internal unsafe delegate* glDisableVertexArrayEXT; + internal unsafe delegate* glDisableVertexAttribAPPLE; + internal unsafe delegate* glDisableVertexAttribArray; + internal unsafe delegate* glDisableVertexAttribArrayARB; + internal unsafe delegate* glDisablei; + internal unsafe delegate* glDispatchCompute; + internal unsafe delegate* glDispatchComputeGroupSizeARB; + internal unsafe delegate* glDispatchComputeIndirect; + internal unsafe delegate* glDrawArrays; + internal unsafe delegate* glDrawArraysEXT; + internal unsafe delegate* glDrawArraysIndirect; + internal unsafe delegate* glDrawArraysInstanced; + internal unsafe delegate* glDrawArraysInstancedARB; + internal unsafe delegate* glDrawArraysInstancedBaseInstance; + internal unsafe delegate* glDrawArraysInstancedEXT; + internal unsafe delegate* glDrawBuffer; + internal unsafe delegate* glDrawBuffers; + internal unsafe delegate* glDrawBuffersARB; + internal unsafe delegate* glDrawBuffersATI; + internal unsafe delegate* glDrawCommandsAddressNV; + internal unsafe delegate* glDrawCommandsNV; + internal unsafe delegate* glDrawCommandsStatesAddressNV; + internal unsafe delegate* glDrawCommandsStatesNV; + internal unsafe delegate* glDrawElementArrayAPPLE; + internal unsafe delegate* glDrawElementArrayATI; + internal unsafe delegate* glDrawElements; + internal unsafe delegate* glDrawElementsBaseVertex; + internal unsafe delegate* glDrawElementsIndirect; + internal unsafe delegate* glDrawElementsInstanced; + internal unsafe delegate* glDrawElementsInstancedARB; + internal unsafe delegate* glDrawElementsInstancedBaseInstance; + internal unsafe delegate* glDrawElementsInstancedBaseVertex; + internal unsafe delegate* glDrawElementsInstancedBaseVertexBaseInstance; + internal unsafe delegate* glDrawElementsInstancedEXT; + internal unsafe delegate* glDrawMeshArraysSUN; + internal unsafe delegate* glDrawMeshTasksIndirectNV; + internal unsafe delegate* glDrawMeshTasksNV; + internal unsafe delegate* glDrawRangeElementArrayAPPLE; + internal unsafe delegate* glDrawRangeElementArrayATI; + internal unsafe delegate* glDrawRangeElements; + internal unsafe delegate* glDrawRangeElementsBaseVertex; + internal unsafe delegate* glDrawRangeElementsEXT; + internal unsafe delegate* glDrawTextureNV; + internal unsafe delegate* glDrawTransformFeedback; + internal unsafe delegate* glDrawTransformFeedbackInstanced; + internal unsafe delegate* glDrawTransformFeedbackNV; + internal unsafe delegate* glDrawTransformFeedbackStream; + internal unsafe delegate* glDrawTransformFeedbackStreamInstanced; + internal unsafe delegate* glDrawVkImageNV; + internal unsafe delegate* glEGLImageTargetTexStorageEXT; + internal unsafe delegate* glEGLImageTargetTextureStorageEXT; + internal unsafe delegate* glEdgeFlagFormatNV; + internal unsafe delegate* glEdgeFlagPointerEXT; + internal unsafe delegate* glEdgeFlagPointerListIBM; + internal unsafe delegate* glElementPointerAPPLE; + internal unsafe delegate* glElementPointerATI; + internal unsafe delegate* glEnable; + internal unsafe delegate* glEnableClientStateIndexedEXT; + internal unsafe delegate* glEnableClientStateiEXT; + internal unsafe delegate* glEnableIndexedEXT; + internal unsafe delegate* glEnableVariantClientStateEXT; + internal unsafe delegate* glEnableVertexArrayAttrib; + internal unsafe delegate* glEnableVertexArrayAttribEXT; + internal unsafe delegate* glEnableVertexArrayEXT; + internal unsafe delegate* glEnableVertexAttribAPPLE; + internal unsafe delegate* glEnableVertexAttribArray; + internal unsafe delegate* glEnableVertexAttribArrayARB; + internal unsafe delegate* glEnablei; + internal unsafe delegate* glEndConditionalRender; + internal unsafe delegate* glEndConditionalRenderNV; + internal unsafe delegate* glEndConditionalRenderNVX; + internal unsafe delegate* glEndFragmentShaderATI; + internal unsafe delegate* glEndOcclusionQueryNV; + internal unsafe delegate* glEndPerfMonitorAMD; + internal unsafe delegate* glEndPerfQueryINTEL; + internal unsafe delegate* glEndQuery; + internal unsafe delegate* glEndQueryARB; + internal unsafe delegate* glEndQueryIndexed; + internal unsafe delegate* glEndTransformFeedback; + internal unsafe delegate* glEndTransformFeedbackEXT; + internal unsafe delegate* glEndTransformFeedbackNV; + internal unsafe delegate* glEndVertexShaderEXT; + internal unsafe delegate* glEndVideoCaptureNV; + internal unsafe delegate* glEvalCoord1xOES; + internal unsafe delegate* glEvalCoord1xvOES; + internal unsafe delegate* glEvalCoord2xOES; + internal unsafe delegate* glEvalCoord2xvOES; + internal unsafe delegate* glEvalMapsNV; + internal unsafe delegate* glEvaluateDepthValuesARB; + internal unsafe delegate* glExecuteProgramNV; + internal unsafe delegate* glExtractComponentEXT; + internal unsafe delegate* glFeedbackBufferxOES; + internal unsafe delegate* glFenceSync; + internal unsafe delegate* glFinalCombinerInputNV; + internal unsafe delegate* glFinish; + internal unsafe delegate* glFinishAsyncSGIX; + internal unsafe delegate* glFinishFenceAPPLE; + internal unsafe delegate* glFinishFenceNV; + internal unsafe delegate* glFinishObjectAPPLE; + internal unsafe delegate* glFinishTextureSUNX; + internal unsafe delegate* glFlush; + internal unsafe delegate* glFlushMappedBufferRange; + internal unsafe delegate* glFlushMappedBufferRangeAPPLE; + internal unsafe delegate* glFlushMappedNamedBufferRange; + internal unsafe delegate* glFlushMappedNamedBufferRangeEXT; + internal unsafe delegate* glFlushPixelDataRangeNV; + internal unsafe delegate* glFlushRasterSGIX; + internal unsafe delegate* glFlushStaticDataIBM; + internal unsafe delegate* glFlushVertexArrayRangeAPPLE; + internal unsafe delegate* glFlushVertexArrayRangeNV; + internal unsafe delegate* glFogCoordFormatNV; + internal unsafe delegate* glFogCoordPointerEXT; + internal unsafe delegate* glFogCoordPointerListIBM; + internal unsafe delegate* glFogCoorddEXT; + internal unsafe delegate* glFogCoorddvEXT; + internal unsafe delegate* glFogCoordfEXT; + internal unsafe delegate* glFogCoordfvEXT; + internal unsafe delegate* glFogCoordhNV; + internal unsafe delegate* glFogCoordhvNV; + internal unsafe delegate* glFogFuncSGIS; + internal unsafe delegate* glFogxOES; + internal unsafe delegate* glFogxvOES; + internal unsafe delegate* glFragmentColorMaterialSGIX; + internal unsafe delegate* glFragmentCoverageColorNV; + internal unsafe delegate* glFragmentLightModelfSGIX; + internal unsafe delegate* glFragmentLightModelfvSGIX; + internal unsafe delegate* glFragmentLightModeliSGIX; + internal unsafe delegate* glFragmentLightModelivSGIX; + internal unsafe delegate* glFragmentLightfSGIX; + internal unsafe delegate* glFragmentLightfvSGIX; + internal unsafe delegate* glFragmentLightiSGIX; + internal unsafe delegate* glFragmentLightivSGIX; + internal unsafe delegate* glFragmentMaterialfSGIX; + internal unsafe delegate* glFragmentMaterialfvSGIX; + internal unsafe delegate* glFragmentMaterialiSGIX; + internal unsafe delegate* glFragmentMaterialivSGIX; + internal unsafe delegate* glFrameTerminatorGREMEDY; + internal unsafe delegate* glFrameZoomSGIX; + internal unsafe delegate* glFramebufferDrawBufferEXT; + internal unsafe delegate* glFramebufferDrawBuffersEXT; + internal unsafe delegate* glFramebufferFetchBarrierEXT; + internal unsafe delegate* glFramebufferParameteri; + internal unsafe delegate* glFramebufferParameteriMESA; + internal unsafe delegate* glFramebufferReadBufferEXT; + internal unsafe delegate* glFramebufferRenderbuffer; + internal unsafe delegate* glFramebufferRenderbufferEXT; + internal unsafe delegate* glFramebufferSampleLocationsfvARB; + internal unsafe delegate* glFramebufferSampleLocationsfvNV; + internal unsafe delegate* glFramebufferSamplePositionsfvAMD; + internal unsafe delegate* glFramebufferTexture; + internal unsafe delegate* glFramebufferTexture1D; + internal unsafe delegate* glFramebufferTexture1DEXT; + internal unsafe delegate* glFramebufferTexture2D; + internal unsafe delegate* glFramebufferTexture2DEXT; + internal unsafe delegate* glFramebufferTexture3D; + internal unsafe delegate* glFramebufferTexture3DEXT; + internal unsafe delegate* glFramebufferTextureARB; + internal unsafe delegate* glFramebufferTextureEXT; + internal unsafe delegate* glFramebufferTextureFaceARB; + internal unsafe delegate* glFramebufferTextureFaceEXT; + internal unsafe delegate* glFramebufferTextureLayer; + internal unsafe delegate* glFramebufferTextureLayerARB; + internal unsafe delegate* glFramebufferTextureLayerEXT; + internal unsafe delegate* glFramebufferTextureMultiviewOVR; + internal unsafe delegate* glFreeObjectBufferATI; + internal unsafe delegate* glFrontFace; + internal unsafe delegate* glFrustumfOES; + internal unsafe delegate* glFrustumxOES; + internal unsafe delegate* glGenAsyncMarkersSGIX; + internal unsafe delegate* glGenBuffers; + internal unsafe delegate* glGenBuffersARB; + internal unsafe delegate* glGenFencesAPPLE; + internal unsafe delegate* glGenFencesNV; + internal unsafe delegate* glGenFragmentShadersATI; + internal unsafe delegate* glGenFramebuffers; + internal unsafe delegate* glGenFramebuffersEXT; + internal unsafe delegate* glGenNamesAMD; + internal unsafe delegate* glGenOcclusionQueriesNV; + internal unsafe delegate* glGenPathsNV; + internal unsafe delegate* glGenPerfMonitorsAMD; + internal unsafe delegate* glGenProgramPipelines; + internal unsafe delegate* glGenProgramsARB; + internal unsafe delegate* glGenProgramsNV; + internal unsafe delegate* glGenQueries; + internal unsafe delegate* glGenQueriesARB; + internal unsafe delegate* glGenQueryResourceTagNV; + internal unsafe delegate* glGenRenderbuffers; + internal unsafe delegate* glGenRenderbuffersEXT; + internal unsafe delegate* glGenSamplers; + internal unsafe delegate* glGenSemaphoresEXT; + internal unsafe delegate* glGenSymbolsEXT; + internal unsafe delegate* glGenTextures; + internal unsafe delegate* glGenTexturesEXT; + internal unsafe delegate* glGenTransformFeedbacks; + internal unsafe delegate* glGenTransformFeedbacksNV; + internal unsafe delegate* glGenVertexArrays; + internal unsafe delegate* glGenVertexArraysAPPLE; + internal unsafe delegate* glGenVertexShadersEXT; + internal unsafe delegate* glGenerateMipmap; + internal unsafe delegate* glGenerateMipmapEXT; + internal unsafe delegate* glGenerateMultiTexMipmapEXT; + internal unsafe delegate* glGenerateTextureMipmap; + internal unsafe delegate* glGenerateTextureMipmapEXT; + internal unsafe delegate* glGetActiveAtomicCounterBufferiv; + internal unsafe delegate* glGetActiveAttrib; + internal unsafe delegate* glGetActiveAttribARB; + internal unsafe delegate* glGetActiveSubroutineName; + internal unsafe delegate* glGetActiveSubroutineUniformName; + internal unsafe delegate* glGetActiveSubroutineUniformiv; + internal unsafe delegate* glGetActiveUniform; + internal unsafe delegate* glGetActiveUniformARB; + internal unsafe delegate* glGetActiveUniformBlockName; + internal unsafe delegate* glGetActiveUniformBlockiv; + internal unsafe delegate* glGetActiveUniformName; + internal unsafe delegate* glGetActiveUniformsiv; + internal unsafe delegate* glGetActiveVaryingNV; + internal unsafe delegate* glGetArrayObjectfvATI; + internal unsafe delegate* glGetArrayObjectivATI; + internal unsafe delegate* glGetAttachedObjectsARB; + internal unsafe delegate* glGetAttachedShaders; + internal unsafe delegate* glGetAttribLocation; + internal unsafe delegate* glGetAttribLocationARB; + internal unsafe delegate* glGetBooleanIndexedvEXT; + internal unsafe delegate* glGetBooleani_v; + internal unsafe delegate* glGetBooleanv; + internal unsafe delegate* glGetBufferParameteri64v; + internal unsafe delegate* glGetBufferParameteriv; + internal unsafe delegate* glGetBufferParameterivARB; + internal unsafe delegate* glGetBufferParameterui64vNV; + internal unsafe delegate* glGetBufferPointerv; + internal unsafe delegate* glGetBufferPointervARB; + internal unsafe delegate* glGetBufferSubData; + internal unsafe delegate* glGetBufferSubDataARB; + internal unsafe delegate* glGetClipPlanefOES; + internal unsafe delegate* glGetClipPlanexOES; + internal unsafe delegate* glGetColorTableEXT; + internal unsafe delegate* glGetColorTableParameterfvEXT; + internal unsafe delegate* glGetColorTableParameterfvSGI; + internal unsafe delegate* glGetColorTableParameterivEXT; + internal unsafe delegate* glGetColorTableParameterivSGI; + internal unsafe delegate* glGetColorTableSGI; + internal unsafe delegate* glGetCombinerInputParameterfvNV; + internal unsafe delegate* glGetCombinerInputParameterivNV; + internal unsafe delegate* glGetCombinerOutputParameterfvNV; + internal unsafe delegate* glGetCombinerOutputParameterivNV; + internal unsafe delegate* glGetCombinerStageParameterfvNV; + internal unsafe delegate* glGetCommandHeaderNV; + internal unsafe delegate* glGetCompressedMultiTexImageEXT; + internal unsafe delegate* glGetCompressedTexImage; + internal unsafe delegate* glGetCompressedTexImageARB; + internal unsafe delegate* glGetCompressedTextureImage; + internal unsafe delegate* glGetCompressedTextureImageEXT; + internal unsafe delegate* glGetCompressedTextureSubImage; + internal unsafe delegate* glGetConvolutionFilterEXT; + internal unsafe delegate* glGetConvolutionParameterfvEXT; + internal unsafe delegate* glGetConvolutionParameterivEXT; + internal unsafe delegate* glGetConvolutionParameterxvOES; + internal unsafe delegate* glGetCoverageModulationTableNV; + internal unsafe delegate* glGetDebugMessageLog; + internal unsafe delegate* glGetDebugMessageLogAMD; + internal unsafe delegate* glGetDebugMessageLogARB; + internal unsafe delegate* glGetDetailTexFuncSGIS; + internal unsafe delegate* glGetDoubleIndexedvEXT; + internal unsafe delegate* glGetDoublei_v; + internal unsafe delegate* glGetDoublei_vEXT; + internal unsafe delegate* glGetDoublev; + internal unsafe delegate* glGetError; + internal unsafe delegate* glGetFenceivNV; + internal unsafe delegate* glGetFinalCombinerInputParameterfvNV; + internal unsafe delegate* glGetFinalCombinerInputParameterivNV; + internal unsafe delegate* glGetFirstPerfQueryIdINTEL; + internal unsafe delegate* glGetFixedvOES; + internal unsafe delegate* glGetFloatIndexedvEXT; + internal unsafe delegate* glGetFloati_v; + internal unsafe delegate* glGetFloati_vEXT; + internal unsafe delegate* glGetFloatv; + internal unsafe delegate* glGetFogFuncSGIS; + internal unsafe delegate* glGetFragDataIndex; + internal unsafe delegate* glGetFragDataLocation; + internal unsafe delegate* glGetFragDataLocationEXT; + internal unsafe delegate* glGetFragmentLightfvSGIX; + internal unsafe delegate* glGetFragmentLightivSGIX; + internal unsafe delegate* glGetFragmentMaterialfvSGIX; + internal unsafe delegate* glGetFragmentMaterialivSGIX; + internal unsafe delegate* glGetFramebufferAttachmentParameteriv; + internal unsafe delegate* glGetFramebufferAttachmentParameterivEXT; + internal unsafe delegate* glGetFramebufferParameterfvAMD; + internal unsafe delegate* glGetFramebufferParameteriv; + internal unsafe delegate* glGetFramebufferParameterivEXT; + internal unsafe delegate* glGetFramebufferParameterivMESA; + internal unsafe delegate* glGetGraphicsResetStatus; + internal unsafe delegate* glGetGraphicsResetStatusARB; + internal unsafe delegate* glGetHandleARB; + internal unsafe delegate* glGetHistogramEXT; + internal unsafe delegate* glGetHistogramParameterfvEXT; + internal unsafe delegate* glGetHistogramParameterivEXT; + internal unsafe delegate* glGetHistogramParameterxvOES; + internal unsafe delegate* glGetImageHandleARB; + internal unsafe delegate* glGetImageHandleNV; + internal unsafe delegate* glGetImageTransformParameterfvHP; + internal unsafe delegate* glGetImageTransformParameterivHP; + internal unsafe delegate* glGetInfoLogARB; + internal unsafe delegate* glGetInstrumentsSGIX; + internal unsafe delegate* glGetInteger64i_v; + internal unsafe delegate* glGetInteger64v; + internal unsafe delegate* glGetIntegerIndexedvEXT; + internal unsafe delegate* glGetIntegeri_v; + internal unsafe delegate* glGetIntegerui64i_vNV; + internal unsafe delegate* glGetIntegerui64vNV; + internal unsafe delegate* glGetIntegerv; + internal unsafe delegate* glGetInternalformatSampleivNV; + internal unsafe delegate* glGetInternalformati64v; + internal unsafe delegate* glGetInternalformativ; + internal unsafe delegate* glGetInvariantBooleanvEXT; + internal unsafe delegate* glGetInvariantFloatvEXT; + internal unsafe delegate* glGetInvariantIntegervEXT; + internal unsafe delegate* glGetLightxOES; + internal unsafe delegate* glGetListParameterfvSGIX; + internal unsafe delegate* glGetListParameterivSGIX; + internal unsafe delegate* glGetLocalConstantBooleanvEXT; + internal unsafe delegate* glGetLocalConstantFloatvEXT; + internal unsafe delegate* glGetLocalConstantIntegervEXT; + internal unsafe delegate* glGetMapAttribParameterfvNV; + internal unsafe delegate* glGetMapAttribParameterivNV; + internal unsafe delegate* glGetMapControlPointsNV; + internal unsafe delegate* glGetMapParameterfvNV; + internal unsafe delegate* glGetMapParameterivNV; + internal unsafe delegate* glGetMapxvOES; + internal unsafe delegate* glGetMaterialxOES; + internal unsafe delegate* glGetMemoryObjectDetachedResourcesuivNV; + internal unsafe delegate* glGetMemoryObjectParameterivEXT; + internal unsafe delegate* glGetMinmaxEXT; + internal unsafe delegate* glGetMinmaxParameterfvEXT; + internal unsafe delegate* glGetMinmaxParameterivEXT; + internal unsafe delegate* glGetMultiTexEnvfvEXT; + internal unsafe delegate* glGetMultiTexEnvivEXT; + internal unsafe delegate* glGetMultiTexGendvEXT; + internal unsafe delegate* glGetMultiTexGenfvEXT; + internal unsafe delegate* glGetMultiTexGenivEXT; + internal unsafe delegate* glGetMultiTexImageEXT; + internal unsafe delegate* glGetMultiTexLevelParameterfvEXT; + internal unsafe delegate* glGetMultiTexLevelParameterivEXT; + internal unsafe delegate* glGetMultiTexParameterIivEXT; + internal unsafe delegate* glGetMultiTexParameterIuivEXT; + internal unsafe delegate* glGetMultiTexParameterfvEXT; + internal unsafe delegate* glGetMultiTexParameterivEXT; + internal unsafe delegate* glGetMultisamplefv; + internal unsafe delegate* glGetMultisamplefvNV; + internal unsafe delegate* glGetNamedBufferParameteri64v; + internal unsafe delegate* glGetNamedBufferParameteriv; + internal unsafe delegate* glGetNamedBufferParameterivEXT; + internal unsafe delegate* glGetNamedBufferParameterui64vNV; + internal unsafe delegate* glGetNamedBufferPointerv; + internal unsafe delegate* glGetNamedBufferPointervEXT; + internal unsafe delegate* glGetNamedBufferSubData; + internal unsafe delegate* glGetNamedBufferSubDataEXT; + internal unsafe delegate* glGetNamedFramebufferAttachmentParameteriv; + internal unsafe delegate* glGetNamedFramebufferAttachmentParameterivEXT; + internal unsafe delegate* glGetNamedFramebufferParameterfvAMD; + internal unsafe delegate* glGetNamedFramebufferParameteriv; + internal unsafe delegate* glGetNamedFramebufferParameterivEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterIivEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterIuivEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterdvEXT; + internal unsafe delegate* glGetNamedProgramLocalParameterfvEXT; + internal unsafe delegate* glGetNamedProgramStringEXT; + internal unsafe delegate* glGetNamedProgramivEXT; + internal unsafe delegate* glGetNamedRenderbufferParameteriv; + internal unsafe delegate* glGetNamedRenderbufferParameterivEXT; + internal unsafe delegate* glGetNamedStringARB; + internal unsafe delegate* glGetNamedStringivARB; + internal unsafe delegate* glGetNextPerfQueryIdINTEL; + internal unsafe delegate* glGetObjectBufferfvATI; + internal unsafe delegate* glGetObjectBufferivATI; + internal unsafe delegate* glGetObjectLabel; + internal unsafe delegate* glGetObjectLabelEXT; + internal unsafe delegate* glGetObjectParameterfvARB; + internal unsafe delegate* glGetObjectParameterivAPPLE; + internal unsafe delegate* glGetObjectParameterivARB; + internal unsafe delegate* glGetObjectPtrLabel; + internal unsafe delegate* glGetOcclusionQueryivNV; + internal unsafe delegate* glGetOcclusionQueryuivNV; + internal unsafe delegate* glGetPathCommandsNV; + internal unsafe delegate* glGetPathCoordsNV; + internal unsafe delegate* glGetPathDashArrayNV; + internal unsafe delegate* glGetPathLengthNV; + internal unsafe delegate* glGetPathMetricRangeNV; + internal unsafe delegate* glGetPathMetricsNV; + internal unsafe delegate* glGetPathParameterfvNV; + internal unsafe delegate* glGetPathParameterivNV; + internal unsafe delegate* glGetPathSpacingNV; + internal unsafe delegate* glGetPerfCounterInfoINTEL; + internal unsafe delegate* glGetPerfMonitorCounterDataAMD; + internal unsafe delegate* glGetPerfMonitorCounterInfoAMD; + internal unsafe delegate* glGetPerfMonitorCounterStringAMD; + internal unsafe delegate* glGetPerfMonitorCountersAMD; + internal unsafe delegate* glGetPerfMonitorGroupStringAMD; + internal unsafe delegate* glGetPerfMonitorGroupsAMD; + internal unsafe delegate* glGetPerfQueryDataINTEL; + internal unsafe delegate* glGetPerfQueryIdByNameINTEL; + internal unsafe delegate* glGetPerfQueryInfoINTEL; + internal unsafe delegate* glGetPixelMapxv; + internal unsafe delegate* glGetPixelTexGenParameterfvSGIS; + internal unsafe delegate* glGetPixelTexGenParameterivSGIS; + internal unsafe delegate* glGetPixelTransformParameterfvEXT; + internal unsafe delegate* glGetPixelTransformParameterivEXT; + internal unsafe delegate* glGetPointerIndexedvEXT; + internal unsafe delegate* glGetPointeri_vEXT; + internal unsafe delegate* glGetPointerv; + internal unsafe delegate* glGetPointervEXT; + internal unsafe delegate* glGetProgramBinary; + internal unsafe delegate* glGetProgramEnvParameterIivNV; + internal unsafe delegate* glGetProgramEnvParameterIuivNV; + internal unsafe delegate* glGetProgramEnvParameterdvARB; + internal unsafe delegate* glGetProgramEnvParameterfvARB; + internal unsafe delegate* glGetProgramInfoLog; + internal unsafe delegate* glGetProgramInterfaceiv; + internal unsafe delegate* glGetProgramLocalParameterIivNV; + internal unsafe delegate* glGetProgramLocalParameterIuivNV; + internal unsafe delegate* glGetProgramLocalParameterdvARB; + internal unsafe delegate* glGetProgramLocalParameterfvARB; + internal unsafe delegate* glGetProgramNamedParameterdvNV; + internal unsafe delegate* glGetProgramNamedParameterfvNV; + internal unsafe delegate* glGetProgramParameterdvNV; + internal unsafe delegate* glGetProgramParameterfvNV; + internal unsafe delegate* glGetProgramPipelineInfoLog; + internal unsafe delegate* glGetProgramPipelineiv; + internal unsafe delegate* glGetProgramResourceIndex; + internal unsafe delegate* glGetProgramResourceLocation; + internal unsafe delegate* glGetProgramResourceLocationIndex; + internal unsafe delegate* glGetProgramResourceName; + internal unsafe delegate* glGetProgramResourcefvNV; + internal unsafe delegate* glGetProgramResourceiv; + internal unsafe delegate* glGetProgramStageiv; + internal unsafe delegate* glGetProgramStringARB; + internal unsafe delegate* glGetProgramStringNV; + internal unsafe delegate* glGetProgramSubroutineParameteruivNV; + internal unsafe delegate* glGetProgramiv; + internal unsafe delegate* glGetProgramivARB; + internal unsafe delegate* glGetProgramivNV; + internal unsafe delegate* glGetQueryBufferObjecti64v; + internal unsafe delegate* glGetQueryBufferObjectiv; + internal unsafe delegate* glGetQueryBufferObjectui64v; + internal unsafe delegate* glGetQueryBufferObjectuiv; + internal unsafe delegate* glGetQueryIndexediv; + internal unsafe delegate* glGetQueryObjecti64v; + internal unsafe delegate* glGetQueryObjecti64vEXT; + internal unsafe delegate* glGetQueryObjectiv; + internal unsafe delegate* glGetQueryObjectivARB; + internal unsafe delegate* glGetQueryObjectui64v; + internal unsafe delegate* glGetQueryObjectui64vEXT; + internal unsafe delegate* glGetQueryObjectuiv; + internal unsafe delegate* glGetQueryObjectuivARB; + internal unsafe delegate* glGetQueryiv; + internal unsafe delegate* glGetQueryivARB; + internal unsafe delegate* glGetRenderbufferParameteriv; + internal unsafe delegate* glGetRenderbufferParameterivEXT; + internal unsafe delegate* glGetSamplerParameterIiv; + internal unsafe delegate* glGetSamplerParameterIuiv; + internal unsafe delegate* glGetSamplerParameterfv; + internal unsafe delegate* glGetSamplerParameteriv; + internal unsafe delegate* glGetSemaphoreParameterivNV; + internal unsafe delegate* glGetSemaphoreParameterui64vEXT; + internal unsafe delegate* glGetSeparableFilterEXT; + internal unsafe delegate* glGetShaderInfoLog; + internal unsafe delegate* glGetShaderPrecisionFormat; + internal unsafe delegate* glGetShaderSource; + internal unsafe delegate* glGetShaderSourceARB; + internal unsafe delegate* glGetShaderiv; + internal unsafe delegate* glGetShadingRateImagePaletteNV; + internal unsafe delegate* glGetShadingRateSampleLocationivNV; + internal unsafe delegate* glGetSharpenTexFuncSGIS; + internal unsafe delegate* glGetStageIndexNV; + internal unsafe delegate* glGetString; + internal unsafe delegate* glGetStringi; + internal unsafe delegate* glGetSubroutineIndex; + internal unsafe delegate* glGetSubroutineUniformLocation; + internal unsafe delegate* glGetSynciv; + internal unsafe delegate* glGetTexBumpParameterfvATI; + internal unsafe delegate* glGetTexBumpParameterivATI; + internal unsafe delegate* glGetTexEnvxvOES; + internal unsafe delegate* glGetTexFilterFuncSGIS; + internal unsafe delegate* glGetTexGenxvOES; + internal unsafe delegate* glGetTexImage; + internal unsafe delegate* glGetTexLevelParameterfv; + internal unsafe delegate* glGetTexLevelParameteriv; + internal unsafe delegate* glGetTexLevelParameterxvOES; + internal unsafe delegate* glGetTexParameterIiv; + internal unsafe delegate* glGetTexParameterIivEXT; + internal unsafe delegate* glGetTexParameterIuiv; + internal unsafe delegate* glGetTexParameterIuivEXT; + internal unsafe delegate* glGetTexParameterPointervAPPLE; + internal unsafe delegate* glGetTexParameterfv; + internal unsafe delegate* glGetTexParameteriv; + internal unsafe delegate* glGetTexParameterxvOES; + internal unsafe delegate* glGetTextureHandleARB; + internal unsafe delegate* glGetTextureHandleNV; + internal unsafe delegate* glGetTextureImage; + internal unsafe delegate* glGetTextureImageEXT; + internal unsafe delegate* glGetTextureLevelParameterfv; + internal unsafe delegate* glGetTextureLevelParameterfvEXT; + internal unsafe delegate* glGetTextureLevelParameteriv; + internal unsafe delegate* glGetTextureLevelParameterivEXT; + internal unsafe delegate* glGetTextureParameterIiv; + internal unsafe delegate* glGetTextureParameterIivEXT; + internal unsafe delegate* glGetTextureParameterIuiv; + internal unsafe delegate* glGetTextureParameterIuivEXT; + internal unsafe delegate* glGetTextureParameterfv; + internal unsafe delegate* glGetTextureParameterfvEXT; + internal unsafe delegate* glGetTextureParameteriv; + internal unsafe delegate* glGetTextureParameterivEXT; + internal unsafe delegate* glGetTextureSamplerHandleARB; + internal unsafe delegate* glGetTextureSamplerHandleNV; + internal unsafe delegate* glGetTextureSubImage; + internal unsafe delegate* glGetTrackMatrixivNV; + internal unsafe delegate* glGetTransformFeedbackVarying; + internal unsafe delegate* glGetTransformFeedbackVaryingEXT; + internal unsafe delegate* glGetTransformFeedbackVaryingNV; + internal unsafe delegate* glGetTransformFeedbacki64_v; + internal unsafe delegate* glGetTransformFeedbacki_v; + internal unsafe delegate* glGetTransformFeedbackiv; + internal unsafe delegate* glGetUniformBlockIndex; + internal unsafe delegate* glGetUniformBufferSizeEXT; + internal unsafe delegate* glGetUniformIndices; + internal unsafe delegate* glGetUniformLocation; + internal unsafe delegate* glGetUniformLocationARB; + internal unsafe delegate* glGetUniformOffsetEXT; + internal unsafe delegate* glGetUniformSubroutineuiv; + internal unsafe delegate* glGetUniformdv; + internal unsafe delegate* glGetUniformfv; + internal unsafe delegate* glGetUniformfvARB; + internal unsafe delegate* glGetUniformi64vARB; + internal unsafe delegate* glGetUniformi64vNV; + internal unsafe delegate* glGetUniformiv; + internal unsafe delegate* glGetUniformivARB; + internal unsafe delegate* glGetUniformui64vARB; + internal unsafe delegate* glGetUniformui64vNV; + internal unsafe delegate* glGetUniformuiv; + internal unsafe delegate* glGetUniformuivEXT; + internal unsafe delegate* glGetUnsignedBytei_vEXT; + internal unsafe delegate* glGetUnsignedBytevEXT; + internal unsafe delegate* glGetVariantArrayObjectfvATI; + internal unsafe delegate* glGetVariantArrayObjectivATI; + internal unsafe delegate* glGetVariantBooleanvEXT; + internal unsafe delegate* glGetVariantFloatvEXT; + internal unsafe delegate* glGetVariantIntegervEXT; + internal unsafe delegate* glGetVariantPointervEXT; + internal unsafe delegate* glGetVaryingLocationNV; + internal unsafe delegate* glGetVertexArrayIndexed64iv; + internal unsafe delegate* glGetVertexArrayIndexediv; + internal unsafe delegate* glGetVertexArrayIntegeri_vEXT; + internal unsafe delegate* glGetVertexArrayIntegervEXT; + internal unsafe delegate* glGetVertexArrayPointeri_vEXT; + internal unsafe delegate* glGetVertexArrayPointervEXT; + internal unsafe delegate* glGetVertexArrayiv; + internal unsafe delegate* glGetVertexAttribArrayObjectfvATI; + internal unsafe delegate* glGetVertexAttribArrayObjectivATI; + internal unsafe delegate* glGetVertexAttribIiv; + internal unsafe delegate* glGetVertexAttribIivEXT; + internal unsafe delegate* glGetVertexAttribIuiv; + internal unsafe delegate* glGetVertexAttribIuivEXT; + internal unsafe delegate* glGetVertexAttribLdv; + internal unsafe delegate* glGetVertexAttribLdvEXT; + internal unsafe delegate* glGetVertexAttribLi64vNV; + internal unsafe delegate* glGetVertexAttribLui64vARB; + internal unsafe delegate* glGetVertexAttribLui64vNV; + internal unsafe delegate* glGetVertexAttribPointerv; + internal unsafe delegate* glGetVertexAttribPointervARB; + internal unsafe delegate* glGetVertexAttribPointervNV; + internal unsafe delegate* glGetVertexAttribdv; + internal unsafe delegate* glGetVertexAttribdvARB; + internal unsafe delegate* glGetVertexAttribdvNV; + internal unsafe delegate* glGetVertexAttribfv; + internal unsafe delegate* glGetVertexAttribfvARB; + internal unsafe delegate* glGetVertexAttribfvNV; + internal unsafe delegate* glGetVertexAttribiv; + internal unsafe delegate* glGetVertexAttribivARB; + internal unsafe delegate* glGetVertexAttribivNV; + internal unsafe delegate* glGetVideoCaptureStreamdvNV; + internal unsafe delegate* glGetVideoCaptureStreamfvNV; + internal unsafe delegate* glGetVideoCaptureStreamivNV; + internal unsafe delegate* glGetVideoCaptureivNV; + internal unsafe delegate* glGetVideoi64vNV; + internal unsafe delegate* glGetVideoivNV; + internal unsafe delegate* glGetVideoui64vNV; + internal unsafe delegate* glGetVideouivNV; + internal unsafe delegate* glGetVkProcAddrNV; + internal unsafe delegate* glGetnCompressedTexImage; + internal unsafe delegate* glGetnCompressedTexImageARB; + internal unsafe delegate* glGetnTexImage; + internal unsafe delegate* glGetnTexImageARB; + internal unsafe delegate* glGetnUniformdv; + internal unsafe delegate* glGetnUniformdvARB; + internal unsafe delegate* glGetnUniformfv; + internal unsafe delegate* glGetnUniformfvARB; + internal unsafe delegate* glGetnUniformi64vARB; + internal unsafe delegate* glGetnUniformiv; + internal unsafe delegate* glGetnUniformivARB; + internal unsafe delegate* glGetnUniformui64vARB; + internal unsafe delegate* glGetnUniformuiv; + internal unsafe delegate* glGetnUniformuivARB; + internal unsafe delegate* glGlobalAlphaFactorbSUN; + internal unsafe delegate* glGlobalAlphaFactordSUN; + internal unsafe delegate* glGlobalAlphaFactorfSUN; + internal unsafe delegate* glGlobalAlphaFactoriSUN; + internal unsafe delegate* glGlobalAlphaFactorsSUN; + internal unsafe delegate* glGlobalAlphaFactorubSUN; + internal unsafe delegate* glGlobalAlphaFactoruiSUN; + internal unsafe delegate* glGlobalAlphaFactorusSUN; + internal unsafe delegate* glHint; + internal unsafe delegate* glHintPGI; + internal unsafe delegate* glHistogramEXT; + internal unsafe delegate* glIglooInterfaceSGIX; + internal unsafe delegate* glImageTransformParameterfHP; + internal unsafe delegate* glImageTransformParameterfvHP; + internal unsafe delegate* glImageTransformParameteriHP; + internal unsafe delegate* glImageTransformParameterivHP; + internal unsafe delegate* glImportMemoryFdEXT; + internal unsafe delegate* glImportMemoryWin32HandleEXT; + internal unsafe delegate* glImportMemoryWin32NameEXT; + internal unsafe delegate* glImportSemaphoreFdEXT; + internal unsafe delegate* glImportSemaphoreWin32HandleEXT; + internal unsafe delegate* glImportSemaphoreWin32NameEXT; + internal unsafe delegate* glImportSyncEXT; + internal unsafe delegate* glIndexFormatNV; + internal unsafe delegate* glIndexFuncEXT; + internal unsafe delegate* glIndexMaterialEXT; + internal unsafe delegate* glIndexPointerEXT; + internal unsafe delegate* glIndexPointerListIBM; + internal unsafe delegate* glIndexxOES; + internal unsafe delegate* glIndexxvOES; + internal unsafe delegate* glInsertComponentEXT; + internal unsafe delegate* glInsertEventMarkerEXT; + internal unsafe delegate* glInstrumentsBufferSGIX; + internal unsafe delegate* glInterpolatePathsNV; + internal unsafe delegate* glInvalidateBufferData; + internal unsafe delegate* glInvalidateBufferSubData; + internal unsafe delegate* glInvalidateFramebuffer; + internal unsafe delegate* glInvalidateNamedFramebufferData; + internal unsafe delegate* glInvalidateNamedFramebufferSubData; + internal unsafe delegate* glInvalidateSubFramebuffer; + internal unsafe delegate* glInvalidateTexImage; + internal unsafe delegate* glInvalidateTexSubImage; + internal unsafe delegate* glIsAsyncMarkerSGIX; + internal unsafe delegate* glIsBuffer; + internal unsafe delegate* glIsBufferARB; + internal unsafe delegate* glIsBufferResidentNV; + internal unsafe delegate* glIsCommandListNV; + internal unsafe delegate* glIsEnabled; + internal unsafe delegate* glIsEnabledIndexedEXT; + internal unsafe delegate* glIsEnabledi; + internal unsafe delegate* glIsFenceAPPLE; + internal unsafe delegate* glIsFenceNV; + internal unsafe delegate* glIsFramebuffer; + internal unsafe delegate* glIsFramebufferEXT; + internal unsafe delegate* glIsImageHandleResidentARB; + internal unsafe delegate* glIsImageHandleResidentNV; + internal unsafe delegate* glIsMemoryObjectEXT; + internal unsafe delegate* glIsNameAMD; + internal unsafe delegate* glIsNamedBufferResidentNV; + internal unsafe delegate* glIsNamedStringARB; + internal unsafe delegate* glIsObjectBufferATI; + internal unsafe delegate* glIsOcclusionQueryNV; + internal unsafe delegate* glIsPathNV; + internal unsafe delegate* glIsPointInFillPathNV; + internal unsafe delegate* glIsPointInStrokePathNV; + internal unsafe delegate* glIsProgram; + internal unsafe delegate* glIsProgramARB; + internal unsafe delegate* glIsProgramNV; + internal unsafe delegate* glIsProgramPipeline; + internal unsafe delegate* glIsQuery; + internal unsafe delegate* glIsQueryARB; + internal unsafe delegate* glIsRenderbuffer; + internal unsafe delegate* glIsRenderbufferEXT; + internal unsafe delegate* glIsSampler; + internal unsafe delegate* glIsSemaphoreEXT; + internal unsafe delegate* glIsShader; + internal unsafe delegate* glIsStateNV; + internal unsafe delegate* glIsSync; + internal unsafe delegate* glIsTexture; + internal unsafe delegate* glIsTextureEXT; + internal unsafe delegate* glIsTextureHandleResidentARB; + internal unsafe delegate* glIsTextureHandleResidentNV; + internal unsafe delegate* glIsTransformFeedback; + internal unsafe delegate* glIsTransformFeedbackNV; + internal unsafe delegate* glIsVariantEnabledEXT; + internal unsafe delegate* glIsVertexArray; + internal unsafe delegate* glIsVertexArrayAPPLE; + internal unsafe delegate* glIsVertexAttribEnabledAPPLE; + internal unsafe delegate* glLGPUCopyImageSubDataNVX; + internal unsafe delegate* glLGPUInterlockNVX; + internal unsafe delegate* glLGPUNamedBufferSubDataNVX; + internal unsafe delegate* glLabelObjectEXT; + internal unsafe delegate* glLightEnviSGIX; + internal unsafe delegate* glLightModelxOES; + internal unsafe delegate* glLightModelxvOES; + internal unsafe delegate* glLightxOES; + internal unsafe delegate* glLightxvOES; + internal unsafe delegate* glLineWidth; + internal unsafe delegate* glLineWidthxOES; + internal unsafe delegate* glLinkProgram; + internal unsafe delegate* glLinkProgramARB; + internal unsafe delegate* glListDrawCommandsStatesClientNV; + internal unsafe delegate* glListParameterfSGIX; + internal unsafe delegate* glListParameterfvSGIX; + internal unsafe delegate* glListParameteriSGIX; + internal unsafe delegate* glListParameterivSGIX; + internal unsafe delegate* glLoadIdentityDeformationMapSGIX; + internal unsafe delegate* glLoadMatrixxOES; + internal unsafe delegate* glLoadProgramNV; + internal unsafe delegate* glLoadTransposeMatrixdARB; + internal unsafe delegate* glLoadTransposeMatrixfARB; + internal unsafe delegate* glLoadTransposeMatrixxOES; + internal unsafe delegate* glLockArraysEXT; + internal unsafe delegate* glLogicOp; + internal unsafe delegate* glMakeBufferNonResidentNV; + internal unsafe delegate* glMakeBufferResidentNV; + internal unsafe delegate* glMakeImageHandleNonResidentARB; + internal unsafe delegate* glMakeImageHandleNonResidentNV; + internal unsafe delegate* glMakeImageHandleResidentARB; + internal unsafe delegate* glMakeImageHandleResidentNV; + internal unsafe delegate* glMakeNamedBufferNonResidentNV; + internal unsafe delegate* glMakeNamedBufferResidentNV; + internal unsafe delegate* glMakeTextureHandleNonResidentARB; + internal unsafe delegate* glMakeTextureHandleNonResidentNV; + internal unsafe delegate* glMakeTextureHandleResidentARB; + internal unsafe delegate* glMakeTextureHandleResidentNV; + internal unsafe delegate* glMap1xOES; + internal unsafe delegate* glMap2xOES; + internal unsafe delegate* glMapBuffer; + internal unsafe delegate* glMapBufferARB; + internal unsafe delegate* glMapBufferRange; + internal unsafe delegate* glMapControlPointsNV; + internal unsafe delegate* glMapGrid1xOES; + internal unsafe delegate* glMapGrid2xOES; + internal unsafe delegate* glMapNamedBuffer; + internal unsafe delegate* glMapNamedBufferEXT; + internal unsafe delegate* glMapNamedBufferRange; + internal unsafe delegate* glMapNamedBufferRangeEXT; + internal unsafe delegate* glMapObjectBufferATI; + internal unsafe delegate* glMapParameterfvNV; + internal unsafe delegate* glMapParameterivNV; + internal unsafe delegate* glMapTexture2DINTEL; + internal unsafe delegate* glMapVertexAttrib1dAPPLE; + internal unsafe delegate* glMapVertexAttrib1fAPPLE; + internal unsafe delegate* glMapVertexAttrib2dAPPLE; + internal unsafe delegate* glMapVertexAttrib2fAPPLE; + internal unsafe delegate* glMaterialxOES; + internal unsafe delegate* glMaterialxvOES; + internal unsafe delegate* glMatrixFrustumEXT; + internal unsafe delegate* glMatrixIndexPointerARB; + internal unsafe delegate* glMatrixIndexubvARB; + internal unsafe delegate* glMatrixIndexuivARB; + internal unsafe delegate* glMatrixIndexusvARB; + internal unsafe delegate* glMatrixLoad3x2fNV; + internal unsafe delegate* glMatrixLoad3x3fNV; + internal unsafe delegate* glMatrixLoadIdentityEXT; + internal unsafe delegate* glMatrixLoadTranspose3x3fNV; + internal unsafe delegate* glMatrixLoadTransposedEXT; + internal unsafe delegate* glMatrixLoadTransposefEXT; + internal unsafe delegate* glMatrixLoaddEXT; + internal unsafe delegate* glMatrixLoadfEXT; + internal unsafe delegate* glMatrixMult3x2fNV; + internal unsafe delegate* glMatrixMult3x3fNV; + internal unsafe delegate* glMatrixMultTranspose3x3fNV; + internal unsafe delegate* glMatrixMultTransposedEXT; + internal unsafe delegate* glMatrixMultTransposefEXT; + internal unsafe delegate* glMatrixMultdEXT; + internal unsafe delegate* glMatrixMultfEXT; + internal unsafe delegate* glMatrixOrthoEXT; + internal unsafe delegate* glMatrixPopEXT; + internal unsafe delegate* glMatrixPushEXT; + internal unsafe delegate* glMatrixRotatedEXT; + internal unsafe delegate* glMatrixRotatefEXT; + internal unsafe delegate* glMatrixScaledEXT; + internal unsafe delegate* glMatrixScalefEXT; + internal unsafe delegate* glMatrixTranslatedEXT; + internal unsafe delegate* glMatrixTranslatefEXT; + internal unsafe delegate* glMaxShaderCompilerThreadsARB; + internal unsafe delegate* glMaxShaderCompilerThreadsKHR; + internal unsafe delegate* glMemoryBarrier; + internal unsafe delegate* glMemoryBarrierByRegion; + internal unsafe delegate* glMemoryBarrierEXT; + internal unsafe delegate* glMemoryObjectParameterivEXT; + internal unsafe delegate* glMinSampleShading; + internal unsafe delegate* glMinSampleShadingARB; + internal unsafe delegate* glMinmaxEXT; + internal unsafe delegate* glMultMatrixxOES; + internal unsafe delegate* glMultTransposeMatrixdARB; + internal unsafe delegate* glMultTransposeMatrixfARB; + internal unsafe delegate* glMultTransposeMatrixxOES; + internal unsafe delegate* glMultiDrawArrays; + internal unsafe delegate* glMultiDrawArraysEXT; + internal unsafe delegate* glMultiDrawArraysIndirect; + internal unsafe delegate* glMultiDrawArraysIndirectAMD; + internal unsafe delegate* glMultiDrawArraysIndirectBindlessCountNV; + internal unsafe delegate* glMultiDrawArraysIndirectBindlessNV; + internal unsafe delegate* glMultiDrawArraysIndirectCount; + internal unsafe delegate* glMultiDrawArraysIndirectCountARB; + internal unsafe delegate* glMultiDrawElementArrayAPPLE; + internal unsafe delegate* glMultiDrawElements; + internal unsafe delegate* glMultiDrawElementsBaseVertex; + internal unsafe delegate* glMultiDrawElementsEXT; + internal unsafe delegate* glMultiDrawElementsIndirect; + internal unsafe delegate* glMultiDrawElementsIndirectAMD; + internal unsafe delegate* glMultiDrawElementsIndirectBindlessCountNV; + internal unsafe delegate* glMultiDrawElementsIndirectBindlessNV; + internal unsafe delegate* glMultiDrawElementsIndirectCount; + internal unsafe delegate* glMultiDrawElementsIndirectCountARB; + internal unsafe delegate* glMultiDrawMeshTasksIndirectCountNV; + internal unsafe delegate* glMultiDrawMeshTasksIndirectNV; + internal unsafe delegate* glMultiDrawRangeElementArrayAPPLE; + internal unsafe delegate* glMultiModeDrawArraysIBM; + internal unsafe delegate* glMultiModeDrawElementsIBM; + internal unsafe delegate* glMultiTexBufferEXT; + internal unsafe delegate* glMultiTexCoord1bOES; + internal unsafe delegate* glMultiTexCoord1bvOES; + internal unsafe delegate* glMultiTexCoord1dARB; + internal unsafe delegate* glMultiTexCoord1dvARB; + internal unsafe delegate* glMultiTexCoord1fARB; + internal unsafe delegate* glMultiTexCoord1fvARB; + internal unsafe delegate* glMultiTexCoord1hNV; + internal unsafe delegate* glMultiTexCoord1hvNV; + internal unsafe delegate* glMultiTexCoord1iARB; + internal unsafe delegate* glMultiTexCoord1ivARB; + internal unsafe delegate* glMultiTexCoord1sARB; + internal unsafe delegate* glMultiTexCoord1svARB; + internal unsafe delegate* glMultiTexCoord1xOES; + internal unsafe delegate* glMultiTexCoord1xvOES; + internal unsafe delegate* glMultiTexCoord2bOES; + internal unsafe delegate* glMultiTexCoord2bvOES; + internal unsafe delegate* glMultiTexCoord2dARB; + internal unsafe delegate* glMultiTexCoord2dvARB; + internal unsafe delegate* glMultiTexCoord2fARB; + internal unsafe delegate* glMultiTexCoord2fvARB; + internal unsafe delegate* glMultiTexCoord2hNV; + internal unsafe delegate* glMultiTexCoord2hvNV; + internal unsafe delegate* glMultiTexCoord2iARB; + internal unsafe delegate* glMultiTexCoord2ivARB; + internal unsafe delegate* glMultiTexCoord2sARB; + internal unsafe delegate* glMultiTexCoord2svARB; + internal unsafe delegate* glMultiTexCoord2xOES; + internal unsafe delegate* glMultiTexCoord2xvOES; + internal unsafe delegate* glMultiTexCoord3bOES; + internal unsafe delegate* glMultiTexCoord3bvOES; + internal unsafe delegate* glMultiTexCoord3dARB; + internal unsafe delegate* glMultiTexCoord3dvARB; + internal unsafe delegate* glMultiTexCoord3fARB; + internal unsafe delegate* glMultiTexCoord3fvARB; + internal unsafe delegate* glMultiTexCoord3hNV; + internal unsafe delegate* glMultiTexCoord3hvNV; + internal unsafe delegate* glMultiTexCoord3iARB; + internal unsafe delegate* glMultiTexCoord3ivARB; + internal unsafe delegate* glMultiTexCoord3sARB; + internal unsafe delegate* glMultiTexCoord3svARB; + internal unsafe delegate* glMultiTexCoord3xOES; + internal unsafe delegate* glMultiTexCoord3xvOES; + internal unsafe delegate* glMultiTexCoord4bOES; + internal unsafe delegate* glMultiTexCoord4bvOES; + internal unsafe delegate* glMultiTexCoord4dARB; + internal unsafe delegate* glMultiTexCoord4dvARB; + internal unsafe delegate* glMultiTexCoord4fARB; + internal unsafe delegate* glMultiTexCoord4fvARB; + internal unsafe delegate* glMultiTexCoord4hNV; + internal unsafe delegate* glMultiTexCoord4hvNV; + internal unsafe delegate* glMultiTexCoord4iARB; + internal unsafe delegate* glMultiTexCoord4ivARB; + internal unsafe delegate* glMultiTexCoord4sARB; + internal unsafe delegate* glMultiTexCoord4svARB; + internal unsafe delegate* glMultiTexCoord4xOES; + internal unsafe delegate* glMultiTexCoord4xvOES; + internal unsafe delegate* glMultiTexCoordPointerEXT; + internal unsafe delegate* glMultiTexEnvfEXT; + internal unsafe delegate* glMultiTexEnvfvEXT; + internal unsafe delegate* glMultiTexEnviEXT; + internal unsafe delegate* glMultiTexEnvivEXT; + internal unsafe delegate* glMultiTexGendEXT; + internal unsafe delegate* glMultiTexGendvEXT; + internal unsafe delegate* glMultiTexGenfEXT; + internal unsafe delegate* glMultiTexGenfvEXT; + internal unsafe delegate* glMultiTexGeniEXT; + internal unsafe delegate* glMultiTexGenivEXT; + internal unsafe delegate* glMultiTexImage1DEXT; + internal unsafe delegate* glMultiTexImage2DEXT; + internal unsafe delegate* glMultiTexImage3DEXT; + internal unsafe delegate* glMultiTexParameterIivEXT; + internal unsafe delegate* glMultiTexParameterIuivEXT; + internal unsafe delegate* glMultiTexParameterfEXT; + internal unsafe delegate* glMultiTexParameterfvEXT; + internal unsafe delegate* glMultiTexParameteriEXT; + internal unsafe delegate* glMultiTexParameterivEXT; + internal unsafe delegate* glMultiTexRenderbufferEXT; + internal unsafe delegate* glMultiTexSubImage1DEXT; + internal unsafe delegate* glMultiTexSubImage2DEXT; + internal unsafe delegate* glMultiTexSubImage3DEXT; + internal unsafe delegate* glMulticastBarrierNV; + internal unsafe delegate* glMulticastBlitFramebufferNV; + internal unsafe delegate* glMulticastBufferSubDataNV; + internal unsafe delegate* glMulticastCopyBufferSubDataNV; + internal unsafe delegate* glMulticastCopyImageSubDataNV; + internal unsafe delegate* glMulticastFramebufferSampleLocationsfvNV; + internal unsafe delegate* glMulticastGetQueryObjecti64vNV; + internal unsafe delegate* glMulticastGetQueryObjectivNV; + internal unsafe delegate* glMulticastGetQueryObjectui64vNV; + internal unsafe delegate* glMulticastGetQueryObjectuivNV; + internal unsafe delegate* glMulticastScissorArrayvNVX; + internal unsafe delegate* glMulticastViewportArrayvNVX; + internal unsafe delegate* glMulticastViewportPositionWScaleNVX; + internal unsafe delegate* glMulticastWaitSyncNV; + internal unsafe delegate* glNamedBufferAttachMemoryNV; + internal unsafe delegate* glNamedBufferData; + internal unsafe delegate* glNamedBufferDataEXT; + internal unsafe delegate* glNamedBufferPageCommitmentARB; + internal unsafe delegate* glNamedBufferPageCommitmentEXT; + internal unsafe delegate* glNamedBufferPageCommitmentMemNV; + internal unsafe delegate* glNamedBufferStorage; + internal unsafe delegate* glNamedBufferStorageEXT; + [Obsolete( "Param type uncertain", true )] internal unsafe delegate* glNamedBufferStorageExternalEXT; + internal unsafe delegate* glNamedBufferStorageMemEXT; + internal unsafe delegate* glNamedBufferSubData; + internal unsafe delegate* glNamedBufferSubDataEXT; + internal unsafe delegate* glNamedCopyBufferSubDataEXT; + internal unsafe delegate* glNamedFramebufferDrawBuffer; + internal unsafe delegate* glNamedFramebufferDrawBuffers; + internal unsafe delegate* glNamedFramebufferParameteri; + internal unsafe delegate* glNamedFramebufferParameteriEXT; + internal unsafe delegate* glNamedFramebufferReadBuffer; + internal unsafe delegate* glNamedFramebufferRenderbuffer; + internal unsafe delegate* glNamedFramebufferRenderbufferEXT; + internal unsafe delegate* glNamedFramebufferSampleLocationsfvARB; + internal unsafe delegate* glNamedFramebufferSampleLocationsfvNV; + internal unsafe delegate* glNamedFramebufferSamplePositionsfvAMD; + internal unsafe delegate* glNamedFramebufferTexture; + internal unsafe delegate* glNamedFramebufferTexture1DEXT; + internal unsafe delegate* glNamedFramebufferTexture2DEXT; + internal unsafe delegate* glNamedFramebufferTexture3DEXT; + internal unsafe delegate* glNamedFramebufferTextureEXT; + internal unsafe delegate* glNamedFramebufferTextureFaceEXT; + internal unsafe delegate* glNamedFramebufferTextureLayer; + internal unsafe delegate* glNamedFramebufferTextureLayerEXT; + internal unsafe delegate* glNamedProgramLocalParameter4dEXT; + internal unsafe delegate* glNamedProgramLocalParameter4dvEXT; + internal unsafe delegate* glNamedProgramLocalParameter4fEXT; + internal unsafe delegate* glNamedProgramLocalParameter4fvEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4iEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4ivEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4uiEXT; + internal unsafe delegate* glNamedProgramLocalParameterI4uivEXT; + internal unsafe delegate* glNamedProgramLocalParameters4fvEXT; + internal unsafe delegate* glNamedProgramLocalParametersI4ivEXT; + internal unsafe delegate* glNamedProgramLocalParametersI4uivEXT; + internal unsafe delegate* glNamedProgramStringEXT; + internal unsafe delegate* glNamedRenderbufferStorage; + internal unsafe delegate* glNamedRenderbufferStorageEXT; + internal unsafe delegate* glNamedRenderbufferStorageMultisample; + internal unsafe delegate* glNamedRenderbufferStorageMultisampleAdvancedAMD; + internal unsafe delegate* glNamedRenderbufferStorageMultisampleCoverageEXT; + internal unsafe delegate* glNamedRenderbufferStorageMultisampleEXT; + internal unsafe delegate* glNamedStringARB; + internal unsafe delegate* glNewObjectBufferATI; + internal unsafe delegate* glNormal3fVertex3fSUN; + internal unsafe delegate* glNormal3fVertex3fvSUN; + internal unsafe delegate* glNormal3hNV; + internal unsafe delegate* glNormal3hvNV; + internal unsafe delegate* glNormal3xOES; + internal unsafe delegate* glNormal3xvOES; + internal unsafe delegate* glNormalFormatNV; + internal unsafe delegate* glNormalPointerEXT; + internal unsafe delegate* glNormalPointerListIBM; + internal unsafe delegate* glNormalPointervINTEL; + internal unsafe delegate* glNormalStream3bATI; + internal unsafe delegate* glNormalStream3bvATI; + internal unsafe delegate* glNormalStream3dATI; + internal unsafe delegate* glNormalStream3dvATI; + internal unsafe delegate* glNormalStream3fATI; + internal unsafe delegate* glNormalStream3fvATI; + internal unsafe delegate* glNormalStream3iATI; + internal unsafe delegate* glNormalStream3ivATI; + internal unsafe delegate* glNormalStream3sATI; + internal unsafe delegate* glNormalStream3svATI; + internal unsafe delegate* glObjectLabel; + internal unsafe delegate* glObjectPtrLabel; + internal unsafe delegate* glObjectPurgeableAPPLE; + internal unsafe delegate* glObjectUnpurgeableAPPLE; + internal unsafe delegate* glOrthofOES; + internal unsafe delegate* glOrthoxOES; + internal unsafe delegate* glPNTrianglesfATI; + internal unsafe delegate* glPNTrianglesiATI; + internal unsafe delegate* glPassTexCoordATI; + internal unsafe delegate* glPassThroughxOES; + internal unsafe delegate* glPatchParameterfv; + internal unsafe delegate* glPatchParameteri; + internal unsafe delegate* glPathCommandsNV; + internal unsafe delegate* glPathCoordsNV; + internal unsafe delegate* glPathCoverDepthFuncNV; + internal unsafe delegate* glPathDashArrayNV; + internal unsafe delegate* glPathGlyphIndexArrayNV; + internal unsafe delegate* glPathGlyphIndexRangeNV; + internal unsafe delegate* glPathGlyphRangeNV; + internal unsafe delegate* glPathGlyphsNV; + internal unsafe delegate* glPathMemoryGlyphIndexArrayNV; + internal unsafe delegate* glPathParameterfNV; + internal unsafe delegate* glPathParameterfvNV; + internal unsafe delegate* glPathParameteriNV; + internal unsafe delegate* glPathParameterivNV; + internal unsafe delegate* glPathStencilDepthOffsetNV; + internal unsafe delegate* glPathStencilFuncNV; + internal unsafe delegate* glPathStringNV; + internal unsafe delegate* glPathSubCommandsNV; + internal unsafe delegate* glPathSubCoordsNV; + internal unsafe delegate* glPauseTransformFeedback; + internal unsafe delegate* glPauseTransformFeedbackNV; + internal unsafe delegate* glPixelDataRangeNV; + internal unsafe delegate* glPixelMapx; + internal unsafe delegate* glPixelStoref; + internal unsafe delegate* glPixelStorei; + internal unsafe delegate* glPixelStorex; + internal unsafe delegate* glPixelTexGenParameterfSGIS; + internal unsafe delegate* glPixelTexGenParameterfvSGIS; + internal unsafe delegate* glPixelTexGenParameteriSGIS; + internal unsafe delegate* glPixelTexGenParameterivSGIS; + internal unsafe delegate* glPixelTexGenSGIX; + internal unsafe delegate* glPixelTransferxOES; + internal unsafe delegate* glPixelTransformParameterfEXT; + internal unsafe delegate* glPixelTransformParameterfvEXT; + internal unsafe delegate* glPixelTransformParameteriEXT; + internal unsafe delegate* glPixelTransformParameterivEXT; + internal unsafe delegate* glPixelZoomxOES; + internal unsafe delegate* glPointAlongPathNV; + internal unsafe delegate* glPointParameterf; + internal unsafe delegate* glPointParameterfARB; + internal unsafe delegate* glPointParameterfEXT; + internal unsafe delegate* glPointParameterfSGIS; + internal unsafe delegate* glPointParameterfv; + internal unsafe delegate* glPointParameterfvARB; + internal unsafe delegate* glPointParameterfvEXT; + internal unsafe delegate* glPointParameterfvSGIS; + internal unsafe delegate* glPointParameteri; + internal unsafe delegate* glPointParameteriNV; + internal unsafe delegate* glPointParameteriv; + internal unsafe delegate* glPointParameterivNV; + internal unsafe delegate* glPointParameterxvOES; + internal unsafe delegate* glPointSize; + internal unsafe delegate* glPointSizexOES; + internal unsafe delegate* glPollAsyncSGIX; + internal unsafe delegate* glPollInstrumentsSGIX; + internal unsafe delegate* glPolygonMode; + internal unsafe delegate* glPolygonOffset; + internal unsafe delegate* glPolygonOffsetClamp; + internal unsafe delegate* glPolygonOffsetClampEXT; + internal unsafe delegate* glPolygonOffsetEXT; + internal unsafe delegate* glPolygonOffsetxOES; + internal unsafe delegate* glPopDebugGroup; + internal unsafe delegate* glPopGroupMarkerEXT; + internal unsafe delegate* glPresentFrameDualFillNV; + internal unsafe delegate* glPresentFrameKeyedNV; + internal unsafe delegate* glPrimitiveBoundingBoxARB; + internal unsafe delegate* glPrimitiveRestartIndex; + internal unsafe delegate* glPrimitiveRestartIndexNV; + internal unsafe delegate* glPrimitiveRestartNV; + internal unsafe delegate* glPrioritizeTexturesEXT; + internal unsafe delegate* glPrioritizeTexturesxOES; + internal unsafe delegate* glProgramBinary; + internal unsafe delegate* glProgramBufferParametersIivNV; + internal unsafe delegate* glProgramBufferParametersIuivNV; + internal unsafe delegate* glProgramBufferParametersfvNV; + internal unsafe delegate* glProgramEnvParameter4dARB; + internal unsafe delegate* glProgramEnvParameter4dvARB; + internal unsafe delegate* glProgramEnvParameter4fARB; + internal unsafe delegate* glProgramEnvParameter4fvARB; + internal unsafe delegate* glProgramEnvParameterI4iNV; + internal unsafe delegate* glProgramEnvParameterI4ivNV; + internal unsafe delegate* glProgramEnvParameterI4uiNV; + internal unsafe delegate* glProgramEnvParameterI4uivNV; + internal unsafe delegate* glProgramEnvParameters4fvEXT; + internal unsafe delegate* glProgramEnvParametersI4ivNV; + internal unsafe delegate* glProgramEnvParametersI4uivNV; + internal unsafe delegate* glProgramLocalParameter4dARB; + internal unsafe delegate* glProgramLocalParameter4dvARB; + internal unsafe delegate* glProgramLocalParameter4fARB; + internal unsafe delegate* glProgramLocalParameter4fvARB; + internal unsafe delegate* glProgramLocalParameterI4iNV; + internal unsafe delegate* glProgramLocalParameterI4ivNV; + internal unsafe delegate* glProgramLocalParameterI4uiNV; + internal unsafe delegate* glProgramLocalParameterI4uivNV; + internal unsafe delegate* glProgramLocalParameters4fvEXT; + internal unsafe delegate* glProgramLocalParametersI4ivNV; + internal unsafe delegate* glProgramLocalParametersI4uivNV; + internal unsafe delegate* glProgramNamedParameter4dNV; + internal unsafe delegate* glProgramNamedParameter4dvNV; + internal unsafe delegate* glProgramNamedParameter4fNV; + internal unsafe delegate* glProgramNamedParameter4fvNV; + internal unsafe delegate* glProgramParameter4dNV; + internal unsafe delegate* glProgramParameter4dvNV; + internal unsafe delegate* glProgramParameter4fNV; + internal unsafe delegate* glProgramParameter4fvNV; + internal unsafe delegate* glProgramParameteri; + internal unsafe delegate* glProgramParameteriARB; + internal unsafe delegate* glProgramParameteriEXT; + internal unsafe delegate* glProgramParameters4dvNV; + internal unsafe delegate* glProgramParameters4fvNV; + internal unsafe delegate* glProgramPathFragmentInputGenNV; + internal unsafe delegate* glProgramStringARB; + internal unsafe delegate* glProgramSubroutineParametersuivNV; + internal unsafe delegate* glProgramUniform1d; + internal unsafe delegate* glProgramUniform1dEXT; + internal unsafe delegate* glProgramUniform1dv; + internal unsafe delegate* glProgramUniform1dvEXT; + internal unsafe delegate* glProgramUniform1f; + internal unsafe delegate* glProgramUniform1fEXT; + internal unsafe delegate* glProgramUniform1fv; + internal unsafe delegate* glProgramUniform1fvEXT; + internal unsafe delegate* glProgramUniform1i; + internal unsafe delegate* glProgramUniform1i64ARB; + internal unsafe delegate* glProgramUniform1i64NV; + internal unsafe delegate* glProgramUniform1i64vARB; + internal unsafe delegate* glProgramUniform1i64vNV; + internal unsafe delegate* glProgramUniform1iEXT; + internal unsafe delegate* glProgramUniform1iv; + internal unsafe delegate* glProgramUniform1ivEXT; + internal unsafe delegate* glProgramUniform1ui; + internal unsafe delegate* glProgramUniform1ui64ARB; + internal unsafe delegate* glProgramUniform1ui64NV; + internal unsafe delegate* glProgramUniform1ui64vARB; + internal unsafe delegate* glProgramUniform1ui64vNV; + internal unsafe delegate* glProgramUniform1uiEXT; + internal unsafe delegate* glProgramUniform1uiv; + internal unsafe delegate* glProgramUniform1uivEXT; + internal unsafe delegate* glProgramUniform2d; + internal unsafe delegate* glProgramUniform2dEXT; + internal unsafe delegate* glProgramUniform2dv; + internal unsafe delegate* glProgramUniform2dvEXT; + internal unsafe delegate* glProgramUniform2f; + internal unsafe delegate* glProgramUniform2fEXT; + internal unsafe delegate* glProgramUniform2fv; + internal unsafe delegate* glProgramUniform2fvEXT; + internal unsafe delegate* glProgramUniform2i; + internal unsafe delegate* glProgramUniform2i64ARB; + internal unsafe delegate* glProgramUniform2i64NV; + internal unsafe delegate* glProgramUniform2i64vARB; + internal unsafe delegate* glProgramUniform2i64vNV; + internal unsafe delegate* glProgramUniform2iEXT; + internal unsafe delegate* glProgramUniform2iv; + internal unsafe delegate* glProgramUniform2ivEXT; + internal unsafe delegate* glProgramUniform2ui; + internal unsafe delegate* glProgramUniform2ui64ARB; + internal unsafe delegate* glProgramUniform2ui64NV; + internal unsafe delegate* glProgramUniform2ui64vARB; + internal unsafe delegate* glProgramUniform2ui64vNV; + internal unsafe delegate* glProgramUniform2uiEXT; + internal unsafe delegate* glProgramUniform2uiv; + internal unsafe delegate* glProgramUniform2uivEXT; + internal unsafe delegate* glProgramUniform3d; + internal unsafe delegate* glProgramUniform3dEXT; + internal unsafe delegate* glProgramUniform3dv; + internal unsafe delegate* glProgramUniform3dvEXT; + internal unsafe delegate* glProgramUniform3f; + internal unsafe delegate* glProgramUniform3fEXT; + internal unsafe delegate* glProgramUniform3fv; + internal unsafe delegate* glProgramUniform3fvEXT; + internal unsafe delegate* glProgramUniform3i; + internal unsafe delegate* glProgramUniform3i64ARB; + internal unsafe delegate* glProgramUniform3i64NV; + internal unsafe delegate* glProgramUniform3i64vARB; + internal unsafe delegate* glProgramUniform3i64vNV; + internal unsafe delegate* glProgramUniform3iEXT; + internal unsafe delegate* glProgramUniform3iv; + internal unsafe delegate* glProgramUniform3ivEXT; + internal unsafe delegate* glProgramUniform3ui; + internal unsafe delegate* glProgramUniform3ui64ARB; + internal unsafe delegate* glProgramUniform3ui64NV; + internal unsafe delegate* glProgramUniform3ui64vARB; + internal unsafe delegate* glProgramUniform3ui64vNV; + internal unsafe delegate* glProgramUniform3uiEXT; + internal unsafe delegate* glProgramUniform3uiv; + internal unsafe delegate* glProgramUniform3uivEXT; + internal unsafe delegate* glProgramUniform4d; + internal unsafe delegate* glProgramUniform4dEXT; + internal unsafe delegate* glProgramUniform4dv; + internal unsafe delegate* glProgramUniform4dvEXT; + internal unsafe delegate* glProgramUniform4f; + internal unsafe delegate* glProgramUniform4fEXT; + internal unsafe delegate* glProgramUniform4fv; + internal unsafe delegate* glProgramUniform4fvEXT; + internal unsafe delegate* glProgramUniform4i; + internal unsafe delegate* glProgramUniform4i64ARB; + internal unsafe delegate* glProgramUniform4i64NV; + internal unsafe delegate* glProgramUniform4i64vARB; + internal unsafe delegate* glProgramUniform4i64vNV; + internal unsafe delegate* glProgramUniform4iEXT; + internal unsafe delegate* glProgramUniform4iv; + internal unsafe delegate* glProgramUniform4ivEXT; + internal unsafe delegate* glProgramUniform4ui; + internal unsafe delegate* glProgramUniform4ui64ARB; + internal unsafe delegate* glProgramUniform4ui64NV; + internal unsafe delegate* glProgramUniform4ui64vARB; + internal unsafe delegate* glProgramUniform4ui64vNV; + internal unsafe delegate* glProgramUniform4uiEXT; + internal unsafe delegate* glProgramUniform4uiv; + internal unsafe delegate* glProgramUniform4uivEXT; + internal unsafe delegate* glProgramUniformHandleui64ARB; + internal unsafe delegate* glProgramUniformHandleui64NV; + internal unsafe delegate* glProgramUniformHandleui64vARB; + internal unsafe delegate* glProgramUniformHandleui64vNV; + internal unsafe delegate* glProgramUniformMatrix2dv; + internal unsafe delegate* glProgramUniformMatrix2dvEXT; + internal unsafe delegate* glProgramUniformMatrix2fv; + internal unsafe delegate* glProgramUniformMatrix2fvEXT; + internal unsafe delegate* glProgramUniformMatrix2x3dv; + internal unsafe delegate* glProgramUniformMatrix2x3dvEXT; + internal unsafe delegate* glProgramUniformMatrix2x3fv; + internal unsafe delegate* glProgramUniformMatrix2x3fvEXT; + internal unsafe delegate* glProgramUniformMatrix2x4dv; + internal unsafe delegate* glProgramUniformMatrix2x4dvEXT; + internal unsafe delegate* glProgramUniformMatrix2x4fv; + internal unsafe delegate* glProgramUniformMatrix2x4fvEXT; + internal unsafe delegate* glProgramUniformMatrix3dv; + internal unsafe delegate* glProgramUniformMatrix3dvEXT; + internal unsafe delegate* glProgramUniformMatrix3fv; + internal unsafe delegate* glProgramUniformMatrix3fvEXT; + internal unsafe delegate* glProgramUniformMatrix3x2dv; + internal unsafe delegate* glProgramUniformMatrix3x2dvEXT; + internal unsafe delegate* glProgramUniformMatrix3x2fv; + internal unsafe delegate* glProgramUniformMatrix3x2fvEXT; + internal unsafe delegate* glProgramUniformMatrix3x4dv; + internal unsafe delegate* glProgramUniformMatrix3x4dvEXT; + internal unsafe delegate* glProgramUniformMatrix3x4fv; + internal unsafe delegate* glProgramUniformMatrix3x4fvEXT; + internal unsafe delegate* glProgramUniformMatrix4dv; + internal unsafe delegate* glProgramUniformMatrix4dvEXT; + internal unsafe delegate* glProgramUniformMatrix4fv; + internal unsafe delegate* glProgramUniformMatrix4fvEXT; + internal unsafe delegate* glProgramUniformMatrix4x2dv; + internal unsafe delegate* glProgramUniformMatrix4x2dvEXT; + internal unsafe delegate* glProgramUniformMatrix4x2fv; + internal unsafe delegate* glProgramUniformMatrix4x2fvEXT; + internal unsafe delegate* glProgramUniformMatrix4x3dv; + internal unsafe delegate* glProgramUniformMatrix4x3dvEXT; + internal unsafe delegate* glProgramUniformMatrix4x3fv; + internal unsafe delegate* glProgramUniformMatrix4x3fvEXT; + internal unsafe delegate* glProgramUniformui64NV; + internal unsafe delegate* glProgramUniformui64vNV; + internal unsafe delegate* glProgramVertexLimitNV; + internal unsafe delegate* glProvokingVertex; + internal unsafe delegate* glProvokingVertexEXT; + internal unsafe delegate* glPushClientAttribDefaultEXT; + internal unsafe delegate* glPushDebugGroup; + internal unsafe delegate* glPushGroupMarkerEXT; + internal unsafe delegate* glQueryCounter; + internal unsafe delegate* glQueryMatrixxOES; + internal unsafe delegate* glQueryObjectParameteruiAMD; + internal unsafe delegate* glQueryResourceNV; + internal unsafe delegate* glQueryResourceTagNV; + internal unsafe delegate* glRasterPos2xOES; + internal unsafe delegate* glRasterPos2xvOES; + internal unsafe delegate* glRasterPos3xOES; + internal unsafe delegate* glRasterPos3xvOES; + internal unsafe delegate* glRasterPos4xOES; + internal unsafe delegate* glRasterPos4xvOES; + internal unsafe delegate* glRasterSamplesEXT; + internal unsafe delegate* glReadBuffer; + internal unsafe delegate* glReadInstrumentsSGIX; + internal unsafe delegate* glReadPixels; + internal unsafe delegate* glReadnPixels; + internal unsafe delegate* glReadnPixelsARB; + internal unsafe delegate* glRectxOES; + internal unsafe delegate* glRectxvOES; + internal unsafe delegate* glReferencePlaneSGIX; + internal unsafe delegate* glReleaseKeyedMutexWin32EXT; + internal unsafe delegate* glReleaseShaderCompiler; + internal unsafe delegate* glRenderGpuMaskNV; + internal unsafe delegate* glRenderbufferStorage; + internal unsafe delegate* glRenderbufferStorageEXT; + internal unsafe delegate* glRenderbufferStorageMultisample; + internal unsafe delegate* glRenderbufferStorageMultisampleAdvancedAMD; + internal unsafe delegate* glRenderbufferStorageMultisampleCoverageNV; + internal unsafe delegate* glRenderbufferStorageMultisampleEXT; + internal unsafe delegate* glReplacementCodePointerSUN; + internal unsafe delegate* glReplacementCodeubSUN; + internal unsafe delegate* glReplacementCodeubvSUN; + internal unsafe delegate* glReplacementCodeuiColor3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiColor3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiColor4ubVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiColor4ubVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiTexCoord2fVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuiVertex3fSUN; + internal unsafe delegate* glReplacementCodeuiVertex3fvSUN; + internal unsafe delegate* glReplacementCodeuivSUN; + internal unsafe delegate* glReplacementCodeusSUN; + internal unsafe delegate* glReplacementCodeusvSUN; + internal unsafe delegate* glRequestResidentProgramsNV; + internal unsafe delegate* glResetHistogramEXT; + internal unsafe delegate* glResetMemoryObjectParameterNV; + internal unsafe delegate* glResetMinmaxEXT; + internal unsafe delegate* glResizeBuffersMESA; + internal unsafe delegate* glResolveDepthValuesNV; + internal unsafe delegate* glResumeTransformFeedback; + internal unsafe delegate* glResumeTransformFeedbackNV; + internal unsafe delegate* glRotatexOES; + internal unsafe delegate* glSampleCoverage; + internal unsafe delegate* glSampleCoverageARB; + internal unsafe delegate* glSampleMapATI; + internal unsafe delegate* glSampleMaskEXT; + internal unsafe delegate* glSampleMaskIndexedNV; + internal unsafe delegate* glSampleMaskSGIS; + internal unsafe delegate* glSampleMaski; + internal unsafe delegate* glSamplePatternEXT; + internal unsafe delegate* glSamplePatternSGIS; + internal unsafe delegate* glSamplerParameterIiv; + internal unsafe delegate* glSamplerParameterIuiv; + internal unsafe delegate* glSamplerParameterf; + internal unsafe delegate* glSamplerParameterfv; + internal unsafe delegate* glSamplerParameteri; + internal unsafe delegate* glSamplerParameteriv; + internal unsafe delegate* glScalexOES; + internal unsafe delegate* glScissor; + internal unsafe delegate* glScissorArrayv; + internal unsafe delegate* glScissorExclusiveArrayvNV; + internal unsafe delegate* glScissorExclusiveNV; + internal unsafe delegate* glScissorIndexed; + internal unsafe delegate* glScissorIndexedv; + internal unsafe delegate* glSecondaryColor3bEXT; + internal unsafe delegate* glSecondaryColor3bvEXT; + internal unsafe delegate* glSecondaryColor3dEXT; + internal unsafe delegate* glSecondaryColor3dvEXT; + internal unsafe delegate* glSecondaryColor3fEXT; + internal unsafe delegate* glSecondaryColor3fvEXT; + internal unsafe delegate* glSecondaryColor3hNV; + internal unsafe delegate* glSecondaryColor3hvNV; + internal unsafe delegate* glSecondaryColor3iEXT; + internal unsafe delegate* glSecondaryColor3ivEXT; + internal unsafe delegate* glSecondaryColor3sEXT; + internal unsafe delegate* glSecondaryColor3svEXT; + internal unsafe delegate* glSecondaryColor3ubEXT; + internal unsafe delegate* glSecondaryColor3ubvEXT; + internal unsafe delegate* glSecondaryColor3uiEXT; + internal unsafe delegate* glSecondaryColor3uivEXT; + internal unsafe delegate* glSecondaryColor3usEXT; + internal unsafe delegate* glSecondaryColor3usvEXT; + internal unsafe delegate* glSecondaryColorFormatNV; + internal unsafe delegate* glSecondaryColorPointerEXT; + internal unsafe delegate* glSecondaryColorPointerListIBM; + internal unsafe delegate* glSelectPerfMonitorCountersAMD; + internal unsafe delegate* glSemaphoreParameterivNV; + internal unsafe delegate* glSemaphoreParameterui64vEXT; + internal unsafe delegate* glSeparableFilter2DEXT; + internal unsafe delegate* glSetFenceAPPLE; + internal unsafe delegate* glSetFenceNV; + internal unsafe delegate* glSetFragmentShaderConstantATI; + internal unsafe delegate* glSetInvariantEXT; + internal unsafe delegate* glSetLocalConstantEXT; + internal unsafe delegate* glSetMultisamplefvAMD; + internal unsafe delegate* glShaderBinary; + internal unsafe delegate* glShaderOp1EXT; + internal unsafe delegate* glShaderOp2EXT; + internal unsafe delegate* glShaderOp3EXT; + internal unsafe delegate* unmanaged[Stdcall] glShaderSource; + internal unsafe delegate* glShaderSourceARB; + internal unsafe delegate* glShaderStorageBlockBinding; + internal unsafe delegate* glShadingRateImageBarrierNV; + internal unsafe delegate* glShadingRateImagePaletteNV; + internal unsafe delegate* glShadingRateSampleOrderCustomNV; + internal unsafe delegate* glShadingRateSampleOrderNV; + internal unsafe delegate* glSharpenTexFuncSGIS; + internal unsafe delegate* glSignalSemaphoreEXT; + internal unsafe delegate* glSignalSemaphoreui64NVX; + internal unsafe delegate* glSignalVkFenceNV; + internal unsafe delegate* glSignalVkSemaphoreNV; + internal unsafe delegate* glSpecializeShader; + internal unsafe delegate* glSpecializeShaderARB; + internal unsafe delegate* glSpriteParameterfSGIX; + internal unsafe delegate* glSpriteParameterfvSGIX; + internal unsafe delegate* glSpriteParameteriSGIX; + internal unsafe delegate* glSpriteParameterivSGIX; + internal unsafe delegate* glStartInstrumentsSGIX; + internal unsafe delegate* glStateCaptureNV; + internal unsafe delegate* glStencilClearTagEXT; + internal unsafe delegate* glStencilFillPathInstancedNV; + internal unsafe delegate* glStencilFillPathNV; + internal unsafe delegate* glStencilFunc; + internal unsafe delegate* glStencilFuncSeparate; + internal unsafe delegate* glStencilFuncSeparateATI; + internal unsafe delegate* glStencilMask; + internal unsafe delegate* glStencilMaskSeparate; + internal unsafe delegate* glStencilOp; + internal unsafe delegate* glStencilOpSeparate; + internal unsafe delegate* glStencilOpSeparateATI; + internal unsafe delegate* glStencilOpValueAMD; + internal unsafe delegate* glStencilStrokePathInstancedNV; + internal unsafe delegate* glStencilStrokePathNV; + internal unsafe delegate* glStencilThenCoverFillPathInstancedNV; + internal unsafe delegate* glStencilThenCoverFillPathNV; + internal unsafe delegate* glStencilThenCoverStrokePathInstancedNV; + internal unsafe delegate* glStencilThenCoverStrokePathNV; + internal unsafe delegate* glStopInstrumentsSGIX; + internal unsafe delegate* glStringMarkerGREMEDY; + internal unsafe delegate* glSubpixelPrecisionBiasNV; + internal unsafe delegate* glSwizzleEXT; + internal unsafe delegate* glSyncTextureINTEL; + internal unsafe delegate* glTagSampleBufferSGIX; + internal unsafe delegate* glTangent3bEXT; + internal unsafe delegate* glTangent3bvEXT; + internal unsafe delegate* glTangent3dEXT; + internal unsafe delegate* glTangent3dvEXT; + internal unsafe delegate* glTangent3fEXT; + internal unsafe delegate* glTangent3fvEXT; + internal unsafe delegate* glTangent3iEXT; + internal unsafe delegate* glTangent3ivEXT; + internal unsafe delegate* glTangent3sEXT; + internal unsafe delegate* glTangent3svEXT; + internal unsafe delegate* glTangentPointerEXT; + internal unsafe delegate* glTbufferMask3DFX; + internal unsafe delegate* glTessellationFactorAMD; + internal unsafe delegate* glTessellationModeAMD; + internal unsafe delegate* glTestFenceAPPLE; + internal unsafe delegate* glTestFenceNV; + internal unsafe delegate* glTestObjectAPPLE; + internal unsafe delegate* glTexAttachMemoryNV; + internal unsafe delegate* glTexBuffer; + internal unsafe delegate* glTexBufferARB; + internal unsafe delegate* glTexBufferEXT; + internal unsafe delegate* glTexBufferRange; + internal unsafe delegate* glTexBumpParameterfvATI; + internal unsafe delegate* glTexBumpParameterivATI; + internal unsafe delegate* glTexCoord1bOES; + internal unsafe delegate* glTexCoord1bvOES; + internal unsafe delegate* glTexCoord1hNV; + internal unsafe delegate* glTexCoord1hvNV; + internal unsafe delegate* glTexCoord1xOES; + internal unsafe delegate* glTexCoord1xvOES; + internal unsafe delegate* glTexCoord2bOES; + internal unsafe delegate* glTexCoord2bvOES; + internal unsafe delegate* glTexCoord2fColor3fVertex3fSUN; + internal unsafe delegate* glTexCoord2fColor3fVertex3fvSUN; + internal unsafe delegate* glTexCoord2fColor4fNormal3fVertex3fSUN; + internal unsafe delegate* glTexCoord2fColor4fNormal3fVertex3fvSUN; + internal unsafe delegate* glTexCoord2fColor4ubVertex3fSUN; + internal unsafe delegate* glTexCoord2fColor4ubVertex3fvSUN; + internal unsafe delegate* glTexCoord2fNormal3fVertex3fSUN; + internal unsafe delegate* glTexCoord2fNormal3fVertex3fvSUN; + internal unsafe delegate* glTexCoord2fVertex3fSUN; + internal unsafe delegate* glTexCoord2fVertex3fvSUN; + internal unsafe delegate* glTexCoord2hNV; + internal unsafe delegate* glTexCoord2hvNV; + internal unsafe delegate* glTexCoord2xOES; + internal unsafe delegate* glTexCoord2xvOES; + internal unsafe delegate* glTexCoord3bOES; + internal unsafe delegate* glTexCoord3bvOES; + internal unsafe delegate* glTexCoord3hNV; + internal unsafe delegate* glTexCoord3hvNV; + internal unsafe delegate* glTexCoord3xOES; + internal unsafe delegate* glTexCoord3xvOES; + internal unsafe delegate* glTexCoord4bOES; + internal unsafe delegate* glTexCoord4bvOES; + internal unsafe delegate* glTexCoord4fColor4fNormal3fVertex4fSUN; + internal unsafe delegate* glTexCoord4fColor4fNormal3fVertex4fvSUN; + internal unsafe delegate* glTexCoord4fVertex4fSUN; + internal unsafe delegate* glTexCoord4fVertex4fvSUN; + internal unsafe delegate* glTexCoord4hNV; + internal unsafe delegate* glTexCoord4hvNV; + internal unsafe delegate* glTexCoord4xOES; + internal unsafe delegate* glTexCoord4xvOES; + internal unsafe delegate* glTexCoordFormatNV; + internal unsafe delegate* glTexCoordPointerEXT; + internal unsafe delegate* glTexCoordPointerListIBM; + internal unsafe delegate* glTexCoordPointervINTEL; + internal unsafe delegate* glTexEnvxOES; + internal unsafe delegate* glTexEnvxvOES; + internal unsafe delegate* glTexFilterFuncSGIS; + internal unsafe delegate* glTexGenxOES; + internal unsafe delegate* glTexGenxvOES; + internal unsafe delegate* glTexImage1D; + internal unsafe delegate* glTexImage2D; + internal unsafe delegate* glTexImage2DMultisample; + internal unsafe delegate* glTexImage2DMultisampleCoverageNV; + internal unsafe delegate* glTexImage3D; + internal unsafe delegate* glTexImage3DEXT; + internal unsafe delegate* glTexImage3DMultisample; + internal unsafe delegate* glTexImage3DMultisampleCoverageNV; + internal unsafe delegate* glTexImage4DSGIS; + internal unsafe delegate* glTexPageCommitmentARB; + internal unsafe delegate* glTexPageCommitmentMemNV; + internal unsafe delegate* glTexParameterIiv; + internal unsafe delegate* glTexParameterIivEXT; + internal unsafe delegate* glTexParameterIuiv; + internal unsafe delegate* glTexParameterIuivEXT; + internal unsafe delegate* glTexParameterf; + internal unsafe delegate* glTexParameterfv; + internal unsafe delegate* glTexParameteri; + internal unsafe delegate* glTexParameteriv; + internal unsafe delegate* glTexParameterxOES; + internal unsafe delegate* glTexParameterxvOES; + internal unsafe delegate* glTexRenderbufferNV; + internal unsafe delegate* glTexStorage1D; + internal unsafe delegate* glTexStorage1DEXT; + internal unsafe delegate* glTexStorage2D; + internal unsafe delegate* glTexStorage2DEXT; + internal unsafe delegate* glTexStorage2DMultisample; + internal unsafe delegate* glTexStorage3D; + internal unsafe delegate* glTexStorage3DEXT; + internal unsafe delegate* glTexStorage3DMultisample; + internal unsafe delegate* glTexStorageMem1DEXT; + internal unsafe delegate* glTexStorageMem2DEXT; + internal unsafe delegate* glTexStorageMem2DMultisampleEXT; + internal unsafe delegate* glTexStorageMem3DEXT; + internal unsafe delegate* glTexStorageMem3DMultisampleEXT; + internal unsafe delegate* glTexStorageSparseAMD; + internal unsafe delegate* glTexSubImage1D; + internal unsafe delegate* glTexSubImage1DEXT; + internal unsafe delegate* glTexSubImage2D; + internal unsafe delegate* glTexSubImage2DEXT; + internal unsafe delegate* glTexSubImage3D; + internal unsafe delegate* glTexSubImage3DEXT; + internal unsafe delegate* glTexSubImage4DSGIS; + internal unsafe delegate* glTextureAttachMemoryNV; + internal unsafe delegate* glTextureBarrier; + internal unsafe delegate* glTextureBarrierNV; + internal unsafe delegate* glTextureBuffer; + internal unsafe delegate* glTextureBufferEXT; + internal unsafe delegate* glTextureBufferRange; + internal unsafe delegate* glTextureBufferRangeEXT; + internal unsafe delegate* glTextureColorMaskSGIS; + internal unsafe delegate* glTextureImage1DEXT; + internal unsafe delegate* glTextureImage2DEXT; + internal unsafe delegate* glTextureImage2DMultisampleCoverageNV; + internal unsafe delegate* glTextureImage2DMultisampleNV; + internal unsafe delegate* glTextureImage3DEXT; + internal unsafe delegate* glTextureImage3DMultisampleCoverageNV; + internal unsafe delegate* glTextureImage3DMultisampleNV; + internal unsafe delegate* glTextureLightEXT; + internal unsafe delegate* glTextureMaterialEXT; + internal unsafe delegate* glTextureNormalEXT; + internal unsafe delegate* glTexturePageCommitmentEXT; + internal unsafe delegate* glTexturePageCommitmentMemNV; + internal unsafe delegate* glTextureParameterIiv; + internal unsafe delegate* glTextureParameterIivEXT; + internal unsafe delegate* glTextureParameterIuiv; + internal unsafe delegate* glTextureParameterIuivEXT; + internal unsafe delegate* glTextureParameterf; + internal unsafe delegate* glTextureParameterfEXT; + internal unsafe delegate* glTextureParameterfv; + internal unsafe delegate* glTextureParameterfvEXT; + internal unsafe delegate* glTextureParameteri; + internal unsafe delegate* glTextureParameteriEXT; + internal unsafe delegate* glTextureParameteriv; + internal unsafe delegate* glTextureParameterivEXT; + internal unsafe delegate* glTextureRangeAPPLE; + internal unsafe delegate* glTextureRenderbufferEXT; + internal unsafe delegate* glTextureStorage1D; + internal unsafe delegate* glTextureStorage1DEXT; + internal unsafe delegate* glTextureStorage2D; + internal unsafe delegate* glTextureStorage2DEXT; + internal unsafe delegate* glTextureStorage2DMultisample; + internal unsafe delegate* glTextureStorage2DMultisampleEXT; + internal unsafe delegate* glTextureStorage3D; + internal unsafe delegate* glTextureStorage3DEXT; + internal unsafe delegate* glTextureStorage3DMultisample; + internal unsafe delegate* glTextureStorage3DMultisampleEXT; + internal unsafe delegate* glTextureStorageMem1DEXT; + internal unsafe delegate* glTextureStorageMem2DEXT; + internal unsafe delegate* glTextureStorageMem2DMultisampleEXT; + internal unsafe delegate* glTextureStorageMem3DEXT; + internal unsafe delegate* glTextureStorageMem3DMultisampleEXT; + internal unsafe delegate* glTextureStorageSparseAMD; + internal unsafe delegate* glTextureSubImage1D; + internal unsafe delegate* glTextureSubImage1DEXT; + internal unsafe delegate* glTextureSubImage2D; + internal unsafe delegate* glTextureSubImage2DEXT; + internal unsafe delegate* glTextureSubImage3D; + internal unsafe delegate* glTextureSubImage3DEXT; + internal unsafe delegate* glTextureView; + internal unsafe delegate* glTrackMatrixNV; + internal unsafe delegate* glTransformFeedbackAttribsNV; + internal unsafe delegate* glTransformFeedbackBufferBase; + internal unsafe delegate* glTransformFeedbackBufferRange; + internal unsafe delegate* glTransformFeedbackStreamAttribsNV; + internal unsafe delegate* glTransformFeedbackVaryings; + internal unsafe delegate* glTransformFeedbackVaryingsEXT; + internal unsafe delegate* glTransformFeedbackVaryingsNV; + internal unsafe delegate* glTransformPathNV; + internal unsafe delegate* glTranslatexOES; + internal unsafe delegate* glUniform1d; + internal unsafe delegate* glUniform1dv; + internal unsafe delegate* glUniform1f; + internal unsafe delegate* glUniform1fARB; + internal unsafe delegate* glUniform1fv; + internal unsafe delegate* glUniform1fvARB; + internal unsafe delegate* glUniform1i; + internal unsafe delegate* glUniform1i64ARB; + internal unsafe delegate* glUniform1i64NV; + internal unsafe delegate* glUniform1i64vARB; + internal unsafe delegate* glUniform1i64vNV; + internal unsafe delegate* glUniform1iARB; + internal unsafe delegate* glUniform1iv; + internal unsafe delegate* glUniform1ivARB; + internal unsafe delegate* glUniform1ui; + internal unsafe delegate* glUniform1ui64ARB; + internal unsafe delegate* glUniform1ui64NV; + internal unsafe delegate* glUniform1ui64vARB; + internal unsafe delegate* glUniform1ui64vNV; + internal unsafe delegate* glUniform1uiEXT; + internal unsafe delegate* glUniform1uiv; + internal unsafe delegate* glUniform1uivEXT; + internal unsafe delegate* glUniform2d; + internal unsafe delegate* glUniform2dv; + internal unsafe delegate* glUniform2f; + internal unsafe delegate* glUniform2fARB; + internal unsafe delegate* glUniform2fv; + internal unsafe delegate* glUniform2fvARB; + internal unsafe delegate* glUniform2i; + internal unsafe delegate* glUniform2i64ARB; + internal unsafe delegate* glUniform2i64NV; + internal unsafe delegate* glUniform2i64vARB; + internal unsafe delegate* glUniform2i64vNV; + internal unsafe delegate* glUniform2iARB; + internal unsafe delegate* glUniform2iv; + internal unsafe delegate* glUniform2ivARB; + internal unsafe delegate* glUniform2ui; + internal unsafe delegate* glUniform2ui64ARB; + internal unsafe delegate* glUniform2ui64NV; + internal unsafe delegate* glUniform2ui64vARB; + internal unsafe delegate* glUniform2ui64vNV; + internal unsafe delegate* glUniform2uiEXT; + internal unsafe delegate* glUniform2uiv; + internal unsafe delegate* glUniform2uivEXT; + internal unsafe delegate* glUniform3d; + internal unsafe delegate* glUniform3dv; + internal unsafe delegate* glUniform3f; + internal unsafe delegate* glUniform3fARB; + internal unsafe delegate* glUniform3fv; + internal unsafe delegate* glUniform3fvARB; + internal unsafe delegate* glUniform3i; + internal unsafe delegate* glUniform3i64ARB; + internal unsafe delegate* glUniform3i64NV; + internal unsafe delegate* glUniform3i64vARB; + internal unsafe delegate* glUniform3i64vNV; + internal unsafe delegate* glUniform3iARB; + internal unsafe delegate* glUniform3iv; + internal unsafe delegate* glUniform3ivARB; + internal unsafe delegate* glUniform3ui; + internal unsafe delegate* glUniform3ui64ARB; + internal unsafe delegate* glUniform3ui64NV; + internal unsafe delegate* glUniform3ui64vARB; + internal unsafe delegate* glUniform3ui64vNV; + internal unsafe delegate* glUniform3uiEXT; + internal unsafe delegate* glUniform3uiv; + internal unsafe delegate* glUniform3uivEXT; + internal unsafe delegate* glUniform4d; + internal unsafe delegate* glUniform4dv; + internal unsafe delegate* glUniform4f; + internal unsafe delegate* glUniform4fARB; + internal unsafe delegate* glUniform4fv; + internal unsafe delegate* glUniform4fvARB; + internal unsafe delegate* glUniform4i; + internal unsafe delegate* glUniform4i64ARB; + internal unsafe delegate* glUniform4i64NV; + internal unsafe delegate* glUniform4i64vARB; + internal unsafe delegate* glUniform4i64vNV; + internal unsafe delegate* glUniform4iARB; + internal unsafe delegate* glUniform4iv; + internal unsafe delegate* glUniform4ivARB; + internal unsafe delegate* glUniform4ui; + internal unsafe delegate* glUniform4ui64ARB; + internal unsafe delegate* glUniform4ui64NV; + internal unsafe delegate* glUniform4ui64vARB; + internal unsafe delegate* glUniform4ui64vNV; + internal unsafe delegate* glUniform4uiEXT; + internal unsafe delegate* glUniform4uiv; + internal unsafe delegate* glUniform4uivEXT; + internal unsafe delegate* glUniformBlockBinding; + internal unsafe delegate* glUniformBufferEXT; + internal unsafe delegate* glUniformHandleui64ARB; + internal unsafe delegate* glUniformHandleui64NV; + internal unsafe delegate* glUniformHandleui64vARB; + internal unsafe delegate* glUniformHandleui64vNV; + internal unsafe delegate* glUniformMatrix2dv; + internal unsafe delegate* glUniformMatrix2fv; + internal unsafe delegate* glUniformMatrix2fvARB; + internal unsafe delegate* glUniformMatrix2x3dv; + internal unsafe delegate* glUniformMatrix2x3fv; + internal unsafe delegate* glUniformMatrix2x4dv; + internal unsafe delegate* glUniformMatrix2x4fv; + internal unsafe delegate* glUniformMatrix3dv; + internal unsafe delegate* glUniformMatrix3fv; + internal unsafe delegate* glUniformMatrix3fvARB; + internal unsafe delegate* glUniformMatrix3x2dv; + internal unsafe delegate* glUniformMatrix3x2fv; + internal unsafe delegate* glUniformMatrix3x4dv; + internal unsafe delegate* glUniformMatrix3x4fv; + internal unsafe delegate* glUniformMatrix4dv; + internal unsafe delegate* glUniformMatrix4fv; + internal unsafe delegate* glUniformMatrix4fvARB; + internal unsafe delegate* glUniformMatrix4x2dv; + internal unsafe delegate* glUniformMatrix4x2fv; + internal unsafe delegate* glUniformMatrix4x3dv; + internal unsafe delegate* glUniformMatrix4x3fv; + internal unsafe delegate* glUniformSubroutinesuiv; + internal unsafe delegate* glUniformui64NV; + internal unsafe delegate* glUniformui64vNV; + internal unsafe delegate* glUnlockArraysEXT; + internal unsafe delegate* glUnmapBuffer; + internal unsafe delegate* glUnmapBufferARB; + internal unsafe delegate* glUnmapNamedBuffer; + internal unsafe delegate* glUnmapNamedBufferEXT; + internal unsafe delegate* glUnmapObjectBufferATI; + internal unsafe delegate* glUnmapTexture2DINTEL; + internal unsafe delegate* glUpdateObjectBufferATI; + internal unsafe delegate* glUploadGpuMaskNVX; + internal unsafe delegate* glUseProgram; + internal unsafe delegate* glUseProgramObjectARB; + internal unsafe delegate* glUseProgramStages; + internal unsafe delegate* glUseShaderProgramEXT; + internal unsafe delegate* glVDPAUFiniNV; + internal unsafe delegate* glVDPAUGetSurfaceivNV; + internal unsafe delegate* glVDPAUInitNV; + internal unsafe delegate* glVDPAUIsSurfaceNV; + internal unsafe delegate* glVDPAUMapSurfacesNV; + internal unsafe delegate* glVDPAURegisterOutputSurfaceNV; + internal unsafe delegate* glVDPAURegisterVideoSurfaceNV; + internal unsafe delegate* glVDPAURegisterVideoSurfaceWithPictureStructureNV; + internal unsafe delegate* glVDPAUSurfaceAccessNV; + internal unsafe delegate* glVDPAUUnmapSurfacesNV; + internal unsafe delegate* glVDPAUUnregisterSurfaceNV; + internal unsafe delegate* glValidateProgram; + internal unsafe delegate* glValidateProgramARB; + internal unsafe delegate* glValidateProgramPipeline; + internal unsafe delegate* glVariantArrayObjectATI; + internal unsafe delegate* glVariantPointerEXT; + internal unsafe delegate* glVariantbvEXT; + internal unsafe delegate* glVariantdvEXT; + internal unsafe delegate* glVariantfvEXT; + internal unsafe delegate* glVariantivEXT; + internal unsafe delegate* glVariantsvEXT; + internal unsafe delegate* glVariantubvEXT; + internal unsafe delegate* glVariantuivEXT; + internal unsafe delegate* glVariantusvEXT; + internal unsafe delegate* glVertex2bOES; + internal unsafe delegate* glVertex2bvOES; + internal unsafe delegate* glVertex2hNV; + internal unsafe delegate* glVertex2hvNV; + internal unsafe delegate* glVertex2xOES; + internal unsafe delegate* glVertex2xvOES; + internal unsafe delegate* glVertex3bOES; + internal unsafe delegate* glVertex3bvOES; + internal unsafe delegate* glVertex3hNV; + internal unsafe delegate* glVertex3hvNV; + internal unsafe delegate* glVertex3xOES; + internal unsafe delegate* glVertex3xvOES; + internal unsafe delegate* glVertex4bOES; + internal unsafe delegate* glVertex4bvOES; + internal unsafe delegate* glVertex4hNV; + internal unsafe delegate* glVertex4hvNV; + internal unsafe delegate* glVertex4xOES; + internal unsafe delegate* glVertex4xvOES; + internal unsafe delegate* glVertexArrayAttribBinding; + internal unsafe delegate* glVertexArrayAttribFormat; + internal unsafe delegate* glVertexArrayAttribIFormat; + internal unsafe delegate* glVertexArrayAttribLFormat; + internal unsafe delegate* glVertexArrayBindVertexBufferEXT; + internal unsafe delegate* glVertexArrayBindingDivisor; + internal unsafe delegate* glVertexArrayColorOffsetEXT; + internal unsafe delegate* glVertexArrayEdgeFlagOffsetEXT; + internal unsafe delegate* glVertexArrayElementBuffer; + internal unsafe delegate* glVertexArrayFogCoordOffsetEXT; + internal unsafe delegate* glVertexArrayIndexOffsetEXT; + internal unsafe delegate* glVertexArrayMultiTexCoordOffsetEXT; + internal unsafe delegate* glVertexArrayNormalOffsetEXT; + internal unsafe delegate* glVertexArrayParameteriAPPLE; + internal unsafe delegate* glVertexArrayRangeAPPLE; + internal unsafe delegate* glVertexArrayRangeNV; + internal unsafe delegate* glVertexArraySecondaryColorOffsetEXT; + internal unsafe delegate* glVertexArrayTexCoordOffsetEXT; + internal unsafe delegate* glVertexArrayVertexAttribBindingEXT; + internal unsafe delegate* glVertexArrayVertexAttribDivisorEXT; + internal unsafe delegate* glVertexArrayVertexAttribFormatEXT; + internal unsafe delegate* glVertexArrayVertexAttribIFormatEXT; + internal unsafe delegate* glVertexArrayVertexAttribIOffsetEXT; + internal unsafe delegate* glVertexArrayVertexAttribLFormatEXT; + internal unsafe delegate* glVertexArrayVertexAttribLOffsetEXT; + internal unsafe delegate* glVertexArrayVertexAttribOffsetEXT; + internal unsafe delegate* glVertexArrayVertexBindingDivisorEXT; + internal unsafe delegate* glVertexArrayVertexBuffer; + internal unsafe delegate* glVertexArrayVertexBuffers; + internal unsafe delegate* glVertexArrayVertexOffsetEXT; + internal unsafe delegate* glVertexAttrib1d; + internal unsafe delegate* glVertexAttrib1dARB; + internal unsafe delegate* glVertexAttrib1dNV; + internal unsafe delegate* glVertexAttrib1dv; + internal unsafe delegate* glVertexAttrib1dvARB; + internal unsafe delegate* glVertexAttrib1dvNV; + internal unsafe delegate* glVertexAttrib1f; + internal unsafe delegate* glVertexAttrib1fARB; + internal unsafe delegate* glVertexAttrib1fNV; + internal unsafe delegate* glVertexAttrib1fv; + internal unsafe delegate* glVertexAttrib1fvARB; + internal unsafe delegate* glVertexAttrib1fvNV; + internal unsafe delegate* glVertexAttrib1hNV; + internal unsafe delegate* glVertexAttrib1hvNV; + internal unsafe delegate* glVertexAttrib1s; + internal unsafe delegate* glVertexAttrib1sARB; + internal unsafe delegate* glVertexAttrib1sNV; + internal unsafe delegate* glVertexAttrib1sv; + internal unsafe delegate* glVertexAttrib1svARB; + internal unsafe delegate* glVertexAttrib1svNV; + internal unsafe delegate* glVertexAttrib2d; + internal unsafe delegate* glVertexAttrib2dARB; + internal unsafe delegate* glVertexAttrib2dNV; + internal unsafe delegate* glVertexAttrib2dv; + internal unsafe delegate* glVertexAttrib2dvARB; + internal unsafe delegate* glVertexAttrib2dvNV; + internal unsafe delegate* glVertexAttrib2f; + internal unsafe delegate* glVertexAttrib2fARB; + internal unsafe delegate* glVertexAttrib2fNV; + internal unsafe delegate* glVertexAttrib2fv; + internal unsafe delegate* glVertexAttrib2fvARB; + internal unsafe delegate* glVertexAttrib2fvNV; + internal unsafe delegate* glVertexAttrib2hNV; + internal unsafe delegate* glVertexAttrib2hvNV; + internal unsafe delegate* glVertexAttrib2s; + internal unsafe delegate* glVertexAttrib2sARB; + internal unsafe delegate* glVertexAttrib2sNV; + internal unsafe delegate* glVertexAttrib2sv; + internal unsafe delegate* glVertexAttrib2svARB; + internal unsafe delegate* glVertexAttrib2svNV; + internal unsafe delegate* glVertexAttrib3d; + internal unsafe delegate* glVertexAttrib3dARB; + internal unsafe delegate* glVertexAttrib3dNV; + internal unsafe delegate* glVertexAttrib3dv; + internal unsafe delegate* glVertexAttrib3dvARB; + internal unsafe delegate* glVertexAttrib3dvNV; + internal unsafe delegate* glVertexAttrib3f; + internal unsafe delegate* glVertexAttrib3fARB; + internal unsafe delegate* glVertexAttrib3fNV; + internal unsafe delegate* glVertexAttrib3fv; + internal unsafe delegate* glVertexAttrib3fvARB; + internal unsafe delegate* glVertexAttrib3fvNV; + internal unsafe delegate* glVertexAttrib3hNV; + internal unsafe delegate* glVertexAttrib3hvNV; + internal unsafe delegate* glVertexAttrib3s; + internal unsafe delegate* glVertexAttrib3sARB; + internal unsafe delegate* glVertexAttrib3sNV; + internal unsafe delegate* glVertexAttrib3sv; + internal unsafe delegate* glVertexAttrib3svARB; + internal unsafe delegate* glVertexAttrib3svNV; + internal unsafe delegate* glVertexAttrib4Nbv; + internal unsafe delegate* glVertexAttrib4NbvARB; + internal unsafe delegate* glVertexAttrib4Niv; + internal unsafe delegate* glVertexAttrib4NivARB; + internal unsafe delegate* glVertexAttrib4Nsv; + internal unsafe delegate* glVertexAttrib4NsvARB; + internal unsafe delegate* glVertexAttrib4Nub; + internal unsafe delegate* glVertexAttrib4NubARB; + internal unsafe delegate* glVertexAttrib4Nubv; + internal unsafe delegate* glVertexAttrib4NubvARB; + internal unsafe delegate* glVertexAttrib4Nuiv; + internal unsafe delegate* glVertexAttrib4NuivARB; + internal unsafe delegate* glVertexAttrib4Nusv; + internal unsafe delegate* glVertexAttrib4NusvARB; + internal unsafe delegate* glVertexAttrib4bv; + internal unsafe delegate* glVertexAttrib4bvARB; + internal unsafe delegate* glVertexAttrib4d; + internal unsafe delegate* glVertexAttrib4dARB; + internal unsafe delegate* glVertexAttrib4dNV; + internal unsafe delegate* glVertexAttrib4dv; + internal unsafe delegate* glVertexAttrib4dvARB; + internal unsafe delegate* glVertexAttrib4dvNV; + internal unsafe delegate* glVertexAttrib4f; + internal unsafe delegate* glVertexAttrib4fARB; + internal unsafe delegate* glVertexAttrib4fNV; + internal unsafe delegate* glVertexAttrib4fv; + internal unsafe delegate* glVertexAttrib4fvARB; + internal unsafe delegate* glVertexAttrib4fvNV; + internal unsafe delegate* glVertexAttrib4hNV; + internal unsafe delegate* glVertexAttrib4hvNV; + internal unsafe delegate* glVertexAttrib4iv; + internal unsafe delegate* glVertexAttrib4ivARB; + internal unsafe delegate* glVertexAttrib4s; + internal unsafe delegate* glVertexAttrib4sARB; + internal unsafe delegate* glVertexAttrib4sNV; + internal unsafe delegate* glVertexAttrib4sv; + internal unsafe delegate* glVertexAttrib4svARB; + internal unsafe delegate* glVertexAttrib4svNV; + internal unsafe delegate* glVertexAttrib4ubNV; + internal unsafe delegate* glVertexAttrib4ubv; + internal unsafe delegate* glVertexAttrib4ubvARB; + internal unsafe delegate* glVertexAttrib4ubvNV; + internal unsafe delegate* glVertexAttrib4uiv; + internal unsafe delegate* glVertexAttrib4uivARB; + internal unsafe delegate* glVertexAttrib4usv; + internal unsafe delegate* glVertexAttrib4usvARB; + internal unsafe delegate* glVertexAttribArrayObjectATI; + internal unsafe delegate* glVertexAttribBinding; + internal unsafe delegate* glVertexAttribDivisor; + internal unsafe delegate* glVertexAttribDivisorARB; + internal unsafe delegate* glVertexAttribFormat; + internal unsafe delegate* glVertexAttribFormatNV; + internal unsafe delegate* glVertexAttribI1i; + internal unsafe delegate* glVertexAttribI1iEXT; + internal unsafe delegate* glVertexAttribI1iv; + internal unsafe delegate* glVertexAttribI1ivEXT; + internal unsafe delegate* glVertexAttribI1ui; + internal unsafe delegate* glVertexAttribI1uiEXT; + internal unsafe delegate* glVertexAttribI1uiv; + internal unsafe delegate* glVertexAttribI1uivEXT; + internal unsafe delegate* glVertexAttribI2i; + internal unsafe delegate* glVertexAttribI2iEXT; + internal unsafe delegate* glVertexAttribI2iv; + internal unsafe delegate* glVertexAttribI2ivEXT; + internal unsafe delegate* glVertexAttribI2ui; + internal unsafe delegate* glVertexAttribI2uiEXT; + internal unsafe delegate* glVertexAttribI2uiv; + internal unsafe delegate* glVertexAttribI2uivEXT; + internal unsafe delegate* glVertexAttribI3i; + internal unsafe delegate* glVertexAttribI3iEXT; + internal unsafe delegate* glVertexAttribI3iv; + internal unsafe delegate* glVertexAttribI3ivEXT; + internal unsafe delegate* glVertexAttribI3ui; + internal unsafe delegate* glVertexAttribI3uiEXT; + internal unsafe delegate* glVertexAttribI3uiv; + internal unsafe delegate* glVertexAttribI3uivEXT; + internal unsafe delegate* glVertexAttribI4bv; + internal unsafe delegate* glVertexAttribI4bvEXT; + internal unsafe delegate* glVertexAttribI4i; + internal unsafe delegate* glVertexAttribI4iEXT; + internal unsafe delegate* glVertexAttribI4iv; + internal unsafe delegate* glVertexAttribI4ivEXT; + internal unsafe delegate* glVertexAttribI4sv; + internal unsafe delegate* glVertexAttribI4svEXT; + internal unsafe delegate* glVertexAttribI4ubv; + internal unsafe delegate* glVertexAttribI4ubvEXT; + internal unsafe delegate* glVertexAttribI4ui; + internal unsafe delegate* glVertexAttribI4uiEXT; + internal unsafe delegate* glVertexAttribI4uiv; + internal unsafe delegate* glVertexAttribI4uivEXT; + internal unsafe delegate* glVertexAttribI4usv; + internal unsafe delegate* glVertexAttribI4usvEXT; + internal unsafe delegate* glVertexAttribIFormat; + internal unsafe delegate* glVertexAttribIFormatNV; + internal unsafe delegate* glVertexAttribIPointer; + internal unsafe delegate* glVertexAttribIPointerEXT; + internal unsafe delegate* glVertexAttribL1d; + internal unsafe delegate* glVertexAttribL1dEXT; + internal unsafe delegate* glVertexAttribL1dv; + internal unsafe delegate* glVertexAttribL1dvEXT; + internal unsafe delegate* glVertexAttribL1i64NV; + internal unsafe delegate* glVertexAttribL1i64vNV; + internal unsafe delegate* glVertexAttribL1ui64ARB; + internal unsafe delegate* glVertexAttribL1ui64NV; + internal unsafe delegate* glVertexAttribL1ui64vARB; + internal unsafe delegate* glVertexAttribL1ui64vNV; + internal unsafe delegate* glVertexAttribL2d; + internal unsafe delegate* glVertexAttribL2dEXT; + internal unsafe delegate* glVertexAttribL2dv; + internal unsafe delegate* glVertexAttribL2dvEXT; + internal unsafe delegate* glVertexAttribL2i64NV; + internal unsafe delegate* glVertexAttribL2i64vNV; + internal unsafe delegate* glVertexAttribL2ui64NV; + internal unsafe delegate* glVertexAttribL2ui64vNV; + internal unsafe delegate* glVertexAttribL3d; + internal unsafe delegate* glVertexAttribL3dEXT; + internal unsafe delegate* glVertexAttribL3dv; + internal unsafe delegate* glVertexAttribL3dvEXT; + internal unsafe delegate* glVertexAttribL3i64NV; + internal unsafe delegate* glVertexAttribL3i64vNV; + internal unsafe delegate* glVertexAttribL3ui64NV; + internal unsafe delegate* glVertexAttribL3ui64vNV; + internal unsafe delegate* glVertexAttribL4d; + internal unsafe delegate* glVertexAttribL4dEXT; + internal unsafe delegate* glVertexAttribL4dv; + internal unsafe delegate* glVertexAttribL4dvEXT; + internal unsafe delegate* glVertexAttribL4i64NV; + internal unsafe delegate* glVertexAttribL4i64vNV; + internal unsafe delegate* glVertexAttribL4ui64NV; + internal unsafe delegate* glVertexAttribL4ui64vNV; + internal unsafe delegate* glVertexAttribLFormat; + internal unsafe delegate* glVertexAttribLFormatNV; + internal unsafe delegate* glVertexAttribLPointer; + internal unsafe delegate* glVertexAttribLPointerEXT; + internal unsafe delegate* glVertexAttribP1ui; + internal unsafe delegate* glVertexAttribP1uiv; + internal unsafe delegate* glVertexAttribP2ui; + internal unsafe delegate* glVertexAttribP2uiv; + internal unsafe delegate* glVertexAttribP3ui; + internal unsafe delegate* glVertexAttribP3uiv; + internal unsafe delegate* glVertexAttribP4ui; + internal unsafe delegate* glVertexAttribP4uiv; + internal unsafe delegate* glVertexAttribParameteriAMD; + internal unsafe delegate* glVertexAttribPointer; + internal unsafe delegate* glVertexAttribPointerARB; + internal unsafe delegate* glVertexAttribPointerNV; + internal unsafe delegate* glVertexAttribs1dvNV; + internal unsafe delegate* glVertexAttribs1fvNV; + internal unsafe delegate* glVertexAttribs1hvNV; + internal unsafe delegate* glVertexAttribs1svNV; + internal unsafe delegate* glVertexAttribs2dvNV; + internal unsafe delegate* glVertexAttribs2fvNV; + internal unsafe delegate* glVertexAttribs2hvNV; + internal unsafe delegate* glVertexAttribs2svNV; + internal unsafe delegate* glVertexAttribs3dvNV; + internal unsafe delegate* glVertexAttribs3fvNV; + internal unsafe delegate* glVertexAttribs3hvNV; + internal unsafe delegate* glVertexAttribs3svNV; + internal unsafe delegate* glVertexAttribs4dvNV; + internal unsafe delegate* glVertexAttribs4fvNV; + internal unsafe delegate* glVertexAttribs4hvNV; + internal unsafe delegate* glVertexAttribs4svNV; + internal unsafe delegate* glVertexAttribs4ubvNV; + internal unsafe delegate* glVertexBindingDivisor; + internal unsafe delegate* glVertexBlendARB; + internal unsafe delegate* glVertexBlendEnvfATI; + internal unsafe delegate* glVertexBlendEnviATI; + internal unsafe delegate* glVertexFormatNV; + internal unsafe delegate* glVertexPointerEXT; + internal unsafe delegate* glVertexPointerListIBM; + internal unsafe delegate* glVertexPointervINTEL; + internal unsafe delegate* glVertexStream1dATI; + internal unsafe delegate* glVertexStream1dvATI; + internal unsafe delegate* glVertexStream1fATI; + internal unsafe delegate* glVertexStream1fvATI; + internal unsafe delegate* glVertexStream1iATI; + internal unsafe delegate* glVertexStream1ivATI; + internal unsafe delegate* glVertexStream1sATI; + internal unsafe delegate* glVertexStream1svATI; + internal unsafe delegate* glVertexStream2dATI; + internal unsafe delegate* glVertexStream2dvATI; + internal unsafe delegate* glVertexStream2fATI; + internal unsafe delegate* glVertexStream2fvATI; + internal unsafe delegate* glVertexStream2iATI; + internal unsafe delegate* glVertexStream2ivATI; + internal unsafe delegate* glVertexStream2sATI; + internal unsafe delegate* glVertexStream2svATI; + internal unsafe delegate* glVertexStream3dATI; + internal unsafe delegate* glVertexStream3dvATI; + internal unsafe delegate* glVertexStream3fATI; + internal unsafe delegate* glVertexStream3fvATI; + internal unsafe delegate* glVertexStream3iATI; + internal unsafe delegate* glVertexStream3ivATI; + internal unsafe delegate* glVertexStream3sATI; + internal unsafe delegate* glVertexStream3svATI; + internal unsafe delegate* glVertexStream4dATI; + internal unsafe delegate* glVertexStream4dvATI; + internal unsafe delegate* glVertexStream4fATI; + internal unsafe delegate* glVertexStream4fvATI; + internal unsafe delegate* glVertexStream4iATI; + internal unsafe delegate* glVertexStream4ivATI; + internal unsafe delegate* glVertexStream4sATI; + internal unsafe delegate* glVertexStream4svATI; + internal unsafe delegate* glVertexWeightPointerEXT; + internal unsafe delegate* glVertexWeightfEXT; + internal unsafe delegate* glVertexWeightfvEXT; + internal unsafe delegate* glVertexWeighthNV; + internal unsafe delegate* glVertexWeighthvNV; + internal unsafe delegate* glVideoCaptureNV; + internal unsafe delegate* glVideoCaptureStreamParameterdvNV; + internal unsafe delegate* glVideoCaptureStreamParameterfvNV; + internal unsafe delegate* glVideoCaptureStreamParameterivNV; + internal unsafe delegate* glViewport; + internal unsafe delegate* glViewportArrayv; + internal unsafe delegate* glViewportIndexedf; + internal unsafe delegate* glViewportIndexedfv; + internal unsafe delegate* glViewportPositionWScaleNV; + internal unsafe delegate* glViewportSwizzleNV; + internal unsafe delegate* glWaitSemaphoreEXT; + internal unsafe delegate* glWaitSemaphoreui64NVX; + internal unsafe delegate* glWaitSync; + internal unsafe delegate* glWaitVkSemaphoreNV; + internal unsafe delegate* glWeightPathsNV; + internal unsafe delegate* glWeightPointerARB; + internal unsafe delegate* glWeightbvARB; + internal unsafe delegate* glWeightdvARB; + internal unsafe delegate* glWeightfvARB; + internal unsafe delegate* glWeightivARB; + internal unsafe delegate* glWeightsvARB; + internal unsafe delegate* glWeightubvARB; + internal unsafe delegate* glWeightuivARB; + internal unsafe delegate* glWeightusvARB; + internal unsafe delegate* glWindowPos2dARB; + internal unsafe delegate* glWindowPos2dMESA; + internal unsafe delegate* glWindowPos2dvARB; + internal unsafe delegate* glWindowPos2dvMESA; + internal unsafe delegate* glWindowPos2fARB; + internal unsafe delegate* glWindowPos2fMESA; + internal unsafe delegate* glWindowPos2fvARB; + internal unsafe delegate* glWindowPos2fvMESA; + internal unsafe delegate* glWindowPos2iARB; + internal unsafe delegate* glWindowPos2iMESA; + internal unsafe delegate* glWindowPos2ivARB; + internal unsafe delegate* glWindowPos2ivMESA; + internal unsafe delegate* glWindowPos2sARB; + internal unsafe delegate* glWindowPos2sMESA; + internal unsafe delegate* glWindowPos2svARB; + internal unsafe delegate* glWindowPos2svMESA; + internal unsafe delegate* glWindowPos3dARB; + internal unsafe delegate* glWindowPos3dMESA; + internal unsafe delegate* glWindowPos3dvARB; + internal unsafe delegate* glWindowPos3dvMESA; + internal unsafe delegate* glWindowPos3fARB; + internal unsafe delegate* glWindowPos3fMESA; + internal unsafe delegate* glWindowPos3fvARB; + internal unsafe delegate* glWindowPos3fvMESA; + internal unsafe delegate* glWindowPos3iARB; + internal unsafe delegate* glWindowPos3iMESA; + internal unsafe delegate* glWindowPos3ivARB; + internal unsafe delegate* glWindowPos3ivMESA; + internal unsafe delegate* glWindowPos3sARB; + internal unsafe delegate* glWindowPos3sMESA; + internal unsafe delegate* glWindowPos3svARB; + internal unsafe delegate* glWindowPos3svMESA; + internal unsafe delegate* glWindowPos4dMESA; + internal unsafe delegate* glWindowPos4dvMESA; + internal unsafe delegate* glWindowPos4fMESA; + internal unsafe delegate* glWindowPos4fvMESA; + internal unsafe delegate* glWindowPos4iMESA; + internal unsafe delegate* glWindowPos4ivMESA; + internal unsafe delegate* glWindowPos4sMESA; + internal unsafe delegate* glWindowPos4svMESA; + internal unsafe delegate* glWindowRectanglesEXT; + internal unsafe delegate* glWriteMaskEXT; + + #endregion glapi + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glEnum.cs b/StgSharp.Common/Graphics/OpenGL/glEnum.cs new file mode 100644 index 00000000..4dd00bbc --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glEnum.cs @@ -0,0 +1,211 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glEnum.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.Runtime.CompilerServices; + +namespace StgSharp.Graphics.OpenGL +{ + public enum PixelChannelLayout + { + UByte = glConst.UNSIGNED_BYTE, + Byte = glConst.BYTE, + UShort = glConst.UNSIGNED_SHORT, + Short = glConst.SHORT, + UInt = glConst.UNSIGNED_INT, + Int = glConst.INT, + Float = glConst.FLOAT, + UByte332 = glConst.UNSIGNED_BYTE_3_3_2, + UByte233Rev = glConst.UNSIGNED_BYTE_2_3_3_REV, + UShort565 = glConst.UNSIGNED_SHORT_5_6_5, + UShort565Rev = glConst.UNSIGNED_SHORT_5_6_5_REV, + UShort4444 = glConst.UNSIGNED_SHORT_4_4_4_4, + UShort4444Rev = glConst.UNSIGNED_SHORT_4_4_4_4_REV, + UShort5551 = glConst.UNSIGNED_SHORT_5_5_5_1, + UShort1555Rev = glConst.UNSIGNED_SHORT_1_5_5_5_REV, + UInt8888 = glConst.UNSIGNED_INT_8_8_8_8, + UInt8888Rev = glConst.UNSIGNED_INT_8_8_8_8_REV, + UInt1010102 = glConst.UNSIGNED_INT_10_10_10_2, + UInt2101010Rev = glConst.UNSIGNED_INT_2_10_10_10_REV + } + + public enum FrameBufferStatus + { + + Complete = glConst.FRAMEBUFFER_COMPLETE, // GL_FRAMEBUFFER_COMPLETE + IncompleteAttachment = glConst.FRAMEBUFFER_INCOMPLETE_ATTACHMENT, // GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT + IncompleteMissingAttachment = glConst.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, // GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT + IncompleteDrawBuffer = glConst.FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER, // GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER + IncompleteReadBuffer = glConst.FRAMEBUFFER_INCOMPLETE_READ_BUFFER, // GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER + Unsupported = glConst.FRAMEBUFFER_UNSUPPORTED, // GL_FRAMEBUFFER_UNSUPPORTED + IncompleteMultisample = glConst.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, // GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE + IncompleteLayerTargets = glConst.FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS // GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS + + } + + public enum FrameBufferChannel + { + + STENCIL_INDEX = glConst.STENCIL_INDEX, + DEPTH_COMPONENT = glConst.DEPTH_COMPONENT, + DEPTH_STENCIL = glConst.DEPTH_STENCIL, + RED = glConst.RED, + GREEN = glConst.GREEN, + BLUE = glConst.BLUE, + RGB = glConst.RGB, + BGR = glConst.BGR, + RGBA = glConst.RGBA, + BGRA = glConst.BGRA + + } + + public enum FrameBufferAttachment + { + + Color = glConst.COLOR_ATTACHMENT0, + Depth = glConst.DEPTH_ATTACHMENT, + Stencil = glConst.STENCIL_ATTACHMENT, + DepthAndStencil = glConst.DEPTH_STENCIL_ATTACHMENT, + + } + + public enum Texture2DTarget + { + + Texture2D = glConst.TEXTURE_2D, + ProxyTexture2D = glConst.PROXY_TEXTURE_2D, + Texture1DArray = glConst.TEXTURE_1D_ARRAY, + ProxyTexture1DArray = glConst.PROXY_TEXTURE_1D_ARRAY, + TextureRectangle = glConst.TEXTURE_RECTANGLE, + ProxyTextureRectangle = glConst.PROXY_TEXTURE_RECTANGLE, + TextureCubeMapPositiveX = glConst.TEXTURE_CUBE_MAP_POSITIVE_X, + TextureCubeMapNegativeX = glConst.TEXTURE_CUBE_MAP_NEGATIVE_X, + TextureCubeMapPositiveY = glConst.TEXTURE_CUBE_MAP_POSITIVE_Y, + TextureCubeMapNegativeY = glConst.TEXTURE_CUBE_MAP_NEGATIVE_Y, + TextureCubeMapPositiveZ = glConst.TEXTURE_CUBE_MAP_POSITIVE_Z, + TextureCubeMapNegativeZ = glConst.TEXTURE_CUBE_MAP_NEGATIVE_Z, + ProxyTextureCubeMap = glConst.PROXY_TEXTURE_CUBE_MAP + + } + + public enum RenderBufferInternalFormat : uint + { + + RGBA8 = glConst.RGBA8, + Depth24_Stencil8 = glConst.DEPTH24_STENCIL8, + + } + + public enum glOperation : uint + { + StencilTest = glConst.STENCIL_TEST, + } + +#pragma warning disable CA1008 + public enum ShaderType : int +#pragma warning restore CA1008 + { + + Fragment = glConst.FRAGMENT_SHADER, + Vertex = glConst.VERTEX_SHADER, + Compute = glConst.COMPUTE_SHADER, + Geometry = glConst.GEOMETRY_SHADER, + + } + +#pragma warning disable CA1008 + public enum BufferType : int +#pragma warning restore CA1008 + { + + ArrayBuffer = glConst.ARRAY_BUFFER, + ElementArrayBuffer = glConst.ELEMENT_ARRAY_BUFFER, + AtomicCounterBuffer = glConst.ATOMIC_COUNTER_BUFFER, + CopyHeadBuffer = glConst.COPY_READ_BUFFER, + COPY_WRITE_BUFFER = glConst.COPY_WRITE_BUFFER, + DISPATCH_INDIRECT_BUFFER = glConst.DISPATCH_INDIRECT_BUFFER, + DRAW_INDIRECT_BUFFER = glConst.DRAW_INDIRECT_BUFFER, + PIXEL_PACK_BUFFER = glConst.PIXEL_PACK_BUFFER, + PIXEL_UNPACK_BUFFER = glConst.PIXEL_UNPACK_BUFFER, + QUERY_BUFFER = glConst.QUERY_BUFFER, + ShaderStorageBuffer = glConst.SHADER_STORAGE_BUFFER, + TEXTURE_BUFFER = glConst.TEXTURE_BUFFER, + TRANSFORM_FEEDBACK_BUFFER = glConst.TRANSFORM_FEEDBACK_BUFFER, + UNIFORM_BUFFER = glConst.UNIFORM_BUFFER, + + } + +#pragma warning disable CA1008 + public enum BufferUsage : int +#pragma warning restore CA1008 + { + + StreamDraw = 0x88E0, + StreamRead = 0x88E1, + StreamCopy = 0x88E2, + StaticDraw = 0x88E4, + StaticRead = 0x88E5, + StaticCopy = 0x88E6, + DynamicDraw = 0x88E8, + DynamicRead = 0x88E9, + DynamicCopy = 0x88EA + + } + + public enum MaskBufferBit + { + + COLOR = glConst.COLOR_BUFFER_BIT, + DEPTH = glConst.DEPTH_BUFFER_BIT, + STENCIL = glConst.STENCIL_BUFFER_BIT, + + } + + public enum GeometryType : uint + { + + POINTS = 0x0000, + LINES = 0x0001, + LINE_LOOP = 0x0002, + LINE_STRIP = 0x0003, + TRIANGLES = 0x0004, + TRIANGLE_STRIP = 0x0005, + TRIANGLE_FAN = 0x0006 + + } + + public enum TextureFiltering + { + + Nearest = 0x2600, + Linear = 0x2601 + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glException.cs b/StgSharp.Common/Graphics/OpenGL/glException.cs new file mode 100644 index 00000000..6f6b902f --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glException.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glException.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.Diagnostics; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.Serialization; +using System.Text; + +namespace StgSharp.Graphics.OpenGL +{ + public sealed class GlErrorOverflowException : Exception + { + + public GlErrorOverflowException( int errorCount, uint errorCode ) + : base( + "Too many opengl error detected at certain position. " + $"The amount of errors exceeds {errorCount}. " + $"Code of the last error is {errorCode}" ) { } + + } + + public sealed class GlExecutionException : Exception + { + + public GlExecutionException( uint errorCode ) + : base( $"Critical OpenGL error: {errorCode}" ) { } + + } + + public sealed class GlArrayFormatException : Exception + { + + internal GlArrayFormatException( string message ) : base( message ) { } + + internal GlArrayFormatException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } + + internal GlArrayFormatException( + string message, + Exception innerException ) + : base( message, innerException ) { } + + public GlArrayFormatException( + PixelChannelLayout layout, + string arrayname ) + : base( $"{arrayname} cannot be used as layout of {layout}" ) { } + + } + + public static partial class GlHelper + { + + public static bool CheckArrayFormat( + this Array array, + PixelChannelLayout layout ) + { + return layout switch + { + PixelChannelLayout.Byte or PixelChannelLayout.UByte332 or PixelChannelLayout.UByte233Rev => ( array is byte[] ) || ( array is sbyte[] ), + PixelChannelLayout.Short => array is short[], + PixelChannelLayout.UShort => array is ushort[], + PixelChannelLayout.Int => array is int[], + PixelChannelLayout.Float => array is float[], + PixelChannelLayout.UShort4444 => ( array is ushort[] ) || ( array is byte[] ), + PixelChannelLayout.UByte => ( array is byte[] ) || ( array is sbyte[] ), + PixelChannelLayout.UInt => array is uint[], + PixelChannelLayout.UShort565 or + PixelChannelLayout.UShort565Rev or + PixelChannelLayout.UShort4444Rev or + PixelChannelLayout.UShort5551 or + PixelChannelLayout.UShort1555Rev => array is ushort[], + PixelChannelLayout.UInt8888Rev or + PixelChannelLayout.UInt1010102 or + PixelChannelLayout.UInt2101010Rev => array is int[], + PixelChannelLayout.UInt8888 => array is uint[] or byte[], + _ => false, + }; + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs b/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs new file mode 100644 index 00000000..0853b013 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glFucntionSourceManager.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; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class OpenGLFunction + { + + private Lazy textureUnitCountGetter; + private Lazy> unusedTextureImageUintInitilizing; + + public int TextureUnitCount + { + get => textureUnitCountGetter.Value; + } + + private ConcurrentQueue UnusedTextureImageUint + { + get => unusedTextureImageUintInitilizing.Value; + } + + internal void ReturnAvailableUnit( IEnumerable source ) + { + int v = glConst.TEXTURE0 + TextureUnitCount; + foreach( TextureUnit unit in source ) { + if( ( int )unit > v ) { + throw new InvalidOperationException( + "Source contains texture unit beyond context support." ); + } + } + } + + internal int TryGetAvailableTextureUnit( + int count, + out IEnumerable result ) + { + result = new Queue(); + for( int i = 0; i < count; i++ ) { + if( UnusedTextureImageUint.TryDequeue( out TextureUnit unit ) ) { + ( result as Queue )!.Enqueue( unit ); + } else { + return i; + } + } + return count; + } + + private ConcurrentQueue InitializeUnusedTextureImageUint() + { + ConcurrentQueue result = new ConcurrentQueue( + ); + for( int index = 0; index < TextureUnitCount; index++ ) { + result.Enqueue( ( TextureUnit )( glConst.TEXTURE0 + index ) ); + } + return result; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.cs new file mode 100644 index 00000000..e9e5916e --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.cs @@ -0,0 +1,812 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glFunction.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.Graphics; +using StgSharp.Internal; +using StgSharp.Math; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.ExceptionServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; + +namespace StgSharp.Graphics.OpenGL +{ + public unsafe partial class OpenGLFunction + { + + private static Dictionary contextToGLMap = new Dictionary( + ); + private static ThreadLocal _currentGL = new ThreadLocal( + ); + private OpenglContext* _context; + + private Lazy _attachmentColorRange; + + private OpenGLFunction() + { + textureUnitCountGetter = new Lazy( + () => GetMaskInteger( glConst.MAX_TEXTURE_IMAGE_UNITS ) ); + unusedTextureImageUintInitilizing = new Lazy>( + InitializeUnusedTextureImageUint ); + _attachmentColorRange = new Lazy( + () => { + return GetMaskInteger( + ( uint )glConst.MAX_COLOR_ATTACHMENTS ); + } ); + } + + public int AttachmentColorRange + { + get => _attachmentColorRange.Value; + } + + public static OpenGLFunction CurrentGL + { + get { return _currentGL.Value; } + internal set { _currentGL.Value = value; } + } + + internal IntPtr ContextHandle => ( IntPtr )_context; + + protected ref OpenglContext Context + { + get + { + #if DEBUG + if( ( IntPtr )_context == IntPtr.Zero ) { + throw new NullReferenceException(); + } + #endif + return ref ( *_context ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void ActiveTextureUnit( uint type ) + { + Context.glActiveTexture( type ); + } + + [Conditional( "DEBUG" )] + public void Assert( bool shouldReportWhenNormal ) + { + uint code = Context.glGetError(); + if( code != glConst.NO_ERROR ) { + throw new GlExecutionException( code ); + } + if( shouldReportWhenNormal ) { + Console.WriteLine( "OpenGL runs normally" ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void AttachShader( GlHandle program, GlHandle shader ) + { + Context.glAttachShader( program.Value, shader.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindBuffer( BufferType bufferType, GlHandle handle ) + { + Context.glBindBuffer( ( uint )bufferType, handle.Value ); + } + + /// + /// Bind a frame Buffer to a frame Buffer target Same function as glBindFramebuffer. + /// + /// The frame Buffer target of the binding operation. + /// The handle of the frame Buffer object to bind. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindFrameBuffer( FrameBufferTarget target, GlHandle handle ) + { + Context.glBindFramebuffer( ( uint )target, handle.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindRenderBuffer( GlHandle handle ) + { + Context.glBindRenderbuffer( glConst.RENDERBUFFER, handle.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindTexture( uint type, GlHandle texture ) + { + Context.glBindTexture( type, texture.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindVertexArray( GlHandle handle ) + { + Context.glBindVertexArray( handle.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public FrameBufferStatus CheckFrameBufferStatus( + FrameBufferTarget target ) + { + return ( FrameBufferStatus )Context.glCheckFramebufferStatus( + ( uint )target ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Clear( MaskBufferBit mask ) + { + Context.glClear( ( uint )mask ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void ClearColor( float R, float G, float B, float A ) + { + Context.glClearColor( R, G, B, A ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void ClearError() + { + uint code = 0; + for( int i = 0; i < 1024; i++ ) { + code = Context.glGetError(); + if( code == 0 ) { + return; + } + + //Console.WriteLine(code); + } + foreach( ProcessThread thread in Process.GetCurrentProcess().Threads ) { + Debugger.Break(); + } + throw new GlErrorOverflowException( 1024, code ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void ClearGraphicError() + { + while( Context.glGetError() != 0 ) { } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CombineFrameBufferRenderBuffer( + FrameBufferAttachment attachment, + GlHandle rboHandle ) + { + Context.glFramebufferRenderbuffer( + glConst.FRAMEBUFFER, ( uint )attachment, glConst.RENDERBUFFER, + rboHandle.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CompileShader( GlHandle shaderhandle ) + { + Context.glCompileShader( shaderhandle.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle CreateGraphicProgram() + { + return GlHandle.Alloc( Context.glCreateProgram() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public GlHandle CreateProgram() + { + return GlHandle.Alloc( Context.glCreateProgram() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] CreateProgram( int count ) + { + GlHandle[] h = new GlHandle[count]; + for( int i = 0; i < count; i++ ) { + h.SetValue( i, Context.glCreateProgram() ); + } + return h; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public GlHandle[] CreateShaderSet( int count, ShaderType type ) + { + GlHandle[] ret = new GlHandle[count]; + uint t = ( uint )type; + for( int i = 0; i < count; i++ ) { + uint id = Context.glCreateShader( t ); + if( id == 0 ) { + uint error = Context.glGetError(); + throw new InvalidOperationException( + $"Failed in creating shader: {error}" ); + } + ret[ i ] = GlHandle.Alloc( id ); + } + return ret; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DeleteBuffer( GlHandle handle ) + { + Context.glDeleteBuffers( 1, ( uint* )&handle ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DeleteBuffers( GlHandle[] handle ) + { + if( ( handle == null ) || ( handle.Length == 0 ) ) { + throw new ArgumentNullException( nameof( handle ) ); + } + fixed( GlHandle* hptr = handle ) { + uint* iptr = ( uint* )hptr; + for( int i = 0; i < handle.Length; i++ ) { + Context.glDeleteBuffers( 1, iptr + i ); + } + } + } + + /// + /// Delete a render Buffer object Very simlilar function as glDeleteRenderbuffers. The only + /// deifference is that this mehtod can only delete one renderbuffer at the same time. + /// + /// Handle to Buffer to delete. + public unsafe void DeleteRenderBuffer( GlHandle bufferHandle ) + { + Context.glDeleteRenderbuffers( 1, &bufferHandle.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DeleteVertexArrays( GlHandle[] arrays ) + { + fixed( GlHandle* hptr = arrays ) { + uint* iptr = ( uint* )hptr; + for( int i = 0; i < arrays.Length; i++ ) { + Context.glDeleteVertexArrays( 1, iptr + i ); + } + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DrawElements( + GeometryType mode, + uint count, + TypeCode type, + IntPtr ptr ) + { + uint a; + a = type switch + { + TypeCode.UInt32 => glConst.UNSIGNED_INT, + TypeCode.UInt16 => glConst.UNSIGNED_SHORT, + TypeCode.Byte => glConst.UNSIGNED_BYTE, + _ => throw new ArgumentException( + $"{$"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}"}{$"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}"}" ) + }; + Context.glDrawElements( ( uint )mode, count, a, ( void* )ptr ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void DrawElementsInstanced( + GeometryType mode, + uint count, + TypeCode type, + IntPtr ptr, + uint amount ) + { + uint a; + switch( type ) { + case TypeCode.UInt32: + a = glConst.UNSIGNED_INT; + break; + + case TypeCode.UInt16: + a = glConst.UNSIGNED_SHORT; + break; + + case TypeCode.Byte: + a = glConst.UNSIGNED_BYTE; + break; + + default: + InternalIO.InternalWriteLog( + $"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}", + LogType.Error ); + return; + } + Context.glDrawElementsInstanced( + ( uint )mode, count, a, ( void* )ptr, amount ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Enable( glOperation operation ) + { + Context.glEnable( ( uint )operation ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void FrameBufferTexture2d( + FrameBufferTarget target, + uint attachment, + Texture2DTarget texTarget, + GlHandle textureHandle, + int level ) + { + Context.glFramebufferTexture2D( + ( uint )target, attachment, ( uint )texTarget, + textureHandle.Value, level ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] GenBuffers( int count ) + { + GlHandle[] h = new GlHandle[count]; + fixed( GlHandle* hptr = h ) { + for( int i = 0; i < count; i++ ) { + Context.glGenBuffers( count, ( ( uint* )hptr ) + i ); + } + } + return h; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void GenerateMipmap( Texture2DTarget target ) + { + Context.glGenerateMipmap( ( uint )target ); + } + + public unsafe GlHandle[] GenFrameBuffers( int count ) + { + GlHandle[] h = new GlHandle[count]; + fixed( GlHandle* hptr = h ) { + Context.glGenFramebuffers( 1, ( uint* )hptr ); + } + return h; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] GenRenderBuffer( int count ) + { + GlHandle[] h = new GlHandle[count]; + fixed( GlHandle* hptr = h ) { + Context.glGenRenderbuffers( count, ( uint* )hptr ); + } + return h; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] GenTextures( int count ) + { + GlHandle[] h = new GlHandle[count]; + fixed( GlHandle* hptr = h ) { + Context.glGenTextures( count, ( uint* )hptr ); + } + return h; + } + + public unsafe GlHandle[] GenVertexArrays( int count ) + { + GlHandle[] h = new GlHandle[count]; + fixed( GlHandle* hptr = h ) { + Context.glGenVertexArrays( count, ( uint* )hptr ); + } + return h; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public uint GetError() + { + return Context.glGetError(); + } + + public unsafe int GetMaskInteger( uint statusCode ) + { + int ret = 0; + Context.glGetIntegerv( statusCode, &ret ); + return ret; + } + + public string GetShaderStatus( Shader s, int index, int key ) + { + IntPtr sptr = IntPtr.Zero; + if( InternalIO.glCheckShaderStatus( + ref Context, s.handle[ index ].Value, key, ref sptr ) == 0 ) { + return Marshal.PtrToStringAnsi( sptr ); + } + return string.Empty; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void GetTextureImage( + Texture2DTarget target, + int level, + ImageChannel channel, + PixelChannelLayout channelLayout, + T[] dataStream ) + where T: struct,INumber + { + #pragma warning disable CS8500 + fixed( T* tptr = dataStream ) { + Context.glGetTexImage( + ( uint )target, level, ( uint )channel, + ( uint )channelLayout, tptr ); + } + #pragma warning restore CS8500 + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void GetTextureLevelProperty( + uint textureTypeMask, + int level, + uint propertyMask, + out int propertyValue ) + { + fixed( int* iptr = &propertyValue ) { + Context.glGetTexLevelParameteriv( + textureTypeMask, level, propertyMask, iptr ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle GetUniformLocation( + GlHandle program, + string name ) + { + byte[] code = Encoding.UTF8.GetBytes( name ); + fixed( byte* ptr = code ) { + int ret = Context.glGetUniformLocation( program.Value, ptr ); + #if DEBUG + if( ( ret == glConst.INVALID_OPERATION ) || ( ret == glConst.INVALID_VALUE ) ) { + throw new InvalidOperationException(); + } + if( ret == -1 ) { + throw new UniformEmptyReferenceException( + nameof( program ), name ); + } + #endif + return GlHandle.SignedAlloc( ret ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + byte[] codeStream ) + { + fixed( byte* streamPtr = codeStream ) { + Context.glShaderSource( + shaderHandle.Value, 1, &streamPtr, ( void* )0 ); + } + } + + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + ReadOnlySpan codeStream) + { + fixed (char* streamPtr = codeStream) + { + byte* bptr = (byte*)streamPtr; + Context.glShaderSource( + shaderHandle.Value, 1, &bptr, (void*)0); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void ReadPixels( + (int X, int Y) beginPosition, + (int width, int height) size, + FrameBufferChannel format, + PixelChannelLayout dataType, + ref byte[] stream ) + { + fixed( byte* bptr = stream ) { + Context.glReadPixels( + beginPosition.X, beginPosition.Y, size.width, size.height, + ( uint )format, ( uint )dataType, bptr ); + } + } + + public void RereadImage( + in Image i, + (int X, int Y) beginPosition, + FrameBufferChannel format, + PixelChannelLayout dataType ) + { + byte[] pixels = i.PixelBuffer; + if( !pixels.CheckArrayFormat( dataType ) ) { + throw new GlArrayFormatException( dataType, "i.PixelArray" ); + } + fixed( byte* bptr = pixels ) { + Context.glReadPixels( + beginPosition.X, beginPosition.Y, i.Width, i.Height, + ( uint )format, ( uint )dataType, bptr ); + } + i.PixelUpdateCount++; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + T bufferData, + BufferUsage usage ) + where T: struct + { + int size = Marshal.SizeOf(); + #pragma warning disable CS8500 + T* p = &bufferData; + #pragma warning restore CS8500 + Context.glBufferData( + ( uint )bufferType, ( IntPtr )size, ( IntPtr )p, + ( uint )usage ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + T[] bufferArray, + BufferUsage usage ) + where T: struct,INumber + { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { + return; + } + #pragma warning disable CS8500 + fixed( void* bufferPtr = bufferArray ) + #pragma warning restore CS8500 + { + Context.glBufferData( + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + ReadOnlySpan bufferArray, + BufferUsage usage ) + where T: struct,INumber + { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { + return; + } + #pragma warning disable CS8500 + fixed( void* bufferPtr = bufferArray ) + #pragma warning restore CS8500 + { + Context.glBufferData( + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + Span bufferArray, + BufferUsage usage ) + where T: struct, INumber + { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { + return; + } + + #pragma warning disable CS8500 + fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + #pragma warning restore CS8500 + { + Context.glBufferData( + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferVectorData( + BufferType bufferType, + ReadOnlySpan bufferArray, + BufferUsage usage ) + where T: struct, IVector + { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { + return; + } + #pragma warning disable CS8500 + fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + #pragma warning restore CS8500 + { + Context.glBufferData( + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferVectorData( + BufferType bufferType, + T[] bufferArray, + BufferUsage usage ) + where T: struct, IVector + { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { + return; + } + #pragma warning disable CS8500 + fixed( void* bufferPtr = bufferArray ) + #pragma warning restore CS8500 + { + Context.glBufferData( + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetRenderBufferStorage( + RenderBufferInternalFormat internalFormat, + (int width, int height) size ) + { + Context.glRenderbufferStorage( + glConst.RENDERBUFFER, ( uint )internalFormat, size.width, + size.height ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetRenderBufferStorage( + RenderBufferInternalFormat internalFormat, + (uint width, uint height) size ) + { + Context.glRenderbufferStorage( + glConst.RENDERBUFFER, ( uint )internalFormat, ( int )size.width, + ( int )size.height ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetVertexAttribute( + uint index, + int size, + TypeCode t, + bool normalized, + uint stride, + int pointer ) + { + uint type = InternalIO.GLtype[ t ]; + Context.glVertexAttribPointer( + index, size, type, normalized ? 1 : 0, stride, + ( void* )pointer ); + Context.glEnableVertexAttribArray( index ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void TextureImage2d( + Texture2DTarget target, + int level, + ImageChannel sourceChannel, + uint width, + uint height, + ImageChannel targetChannel, + PixelChannelLayout type, + T[] pixels ) + where T: struct, INumber + { + #pragma warning disable CS8500 + fixed( T* tptr = pixels ) { + T* ptr = ( ( pixels == null ) || ( pixels.Length == 0 ) ) ? + ( T* )IntPtr.Zero : tptr; + Context.glTexImage2D( + ( uint )target, level, ( uint )sourceChannel, width, height, + 0, ( uint )targetChannel, ( uint )type, tptr ); + } + #pragma warning restore CS8500 + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void TextureImage2d( + Texture2DTarget target, + int level, + ImageChannel sourceChannel, + uint width, + uint height, + ImageChannel targetChannel, + PixelChannelLayout type, + Span pixelSpan ) + where T: struct, INumber + { +#pragma warning disable CS8500 + fixed( T* tptr = pixelSpan ) { + Context.glTexImage2D( + ( uint )target, level, ( uint )sourceChannel, width, height, + 0, ( uint )targetChannel, ( uint )type, tptr ); + } +#pragma warning restore CS8500 + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void TextureParameter( int target, uint pname, int param ) + { + Context.glTexParameteri( ( uint )target, pname, param ); + } + + public static bool TryGetFunctionPackage( + IntPtr handle, + out OpenGLFunction functionPackage ) + { + return contextToGLMap.TryGetValue( handle, out functionPackage ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void UseProgram( GlHandle program ) + { + Context.glUseProgram( program.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void VertexAttributeDivisor( uint layoutIndex, uint divisor ) + { + Context.glVertexAttribDivisor( layoutIndex, divisor ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Viewport( int x, int y, uint width, uint height ) + { + Context.glViewport( x, y, width, height ); + } + + public void WaitAccomplishment() + { + Context.glFinish(); + } + + internal static OpenGLFunction BuildGlFunctionPackage( IntPtr handle ) + { + OpenGLFunction pack; + if( contextToGLMap.TryGetValue( handle, out pack ) ) { + return pack; + } + pack = new OpenGLFunction { _context = ( OpenglContext* )handle }; + contextToGLMap.Add( handle, pack ); + return pack; + } + + ~OpenGLFunction() + { + contextToGLMap.Remove( ContextHandle ); + } + + } +} + diff --git a/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs b/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs new file mode 100644 index 00000000..47e5e0f2 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glHalfNV.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.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal.OpenGL +{ + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct glHalfNV + { + + [FieldOffset( 0 )] public short binary; + + public glHalfNV( short bin ) + { + binary = bin; + } + + public static glHalfNV FromInt16(short x) + { + return new glHalfNV(x); + } + + public static explicit operator glHalfNV( short x ) + { + return new glHalfNV( x ); + } + + public static short ToInt16(glHalfNV half) + { + return half.binary; + } + + public static explicit operator short( glHalfNV x ) + { + return x.binary; + } + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glHandle.cs b/StgSharp.Common/Graphics/OpenGL/glHandle.cs new file mode 100644 index 00000000..fd94a7ad --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glHandle.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glHandle.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.Data.Common; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Versioning; +using System.Security.AccessControl; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + [StructLayout( LayoutKind.Explicit, Size = 4 )] + public struct GlHandle + { + + [FieldOffset( 0 )] public int SignedValue; + [FieldOffset( 0 )] public uint Value; + + public static GlHandle Zero + { + get => new GlHandle { Value = 0 }; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static GlHandle Alloc( uint value ) + { + return new GlHandle { Value = value }; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static GlHandle SignedAlloc( int value ) + { + return new GlHandle { SignedValue = value }; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs b/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs new file mode 100644 index 00000000..045376c1 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderSourceGenrator.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.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class glRender + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected AutoTextureGL CreateAutoTexture( int count ) + { + return new AutoTextureGL( count, this ); + } + + /// + /// Create a set of . + /// + /// Amount of EBO to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected ElementBuffer CreateElementBuffer( int count ) + { + return new ElementBuffer( count, this ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected FrameBuffer CreateFrameBuffer( int count ) + { + return new FrameBuffer( count, this ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected RenderBuffer CreateRenderBuffer( int count ) + { + return new RenderBuffer( count, this ); + } + + /// + /// Create a sets of + /// + /// Amount of textures to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected TextureGL CreateTexture( int count ) + { + return new TextureGL( count, this ); + } + + /// + /// Create a set of . + /// + /// Amount of VAO to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected VertexArray CreateVertexArray( int count ) + { + return new VertexArray( count, this ); + } + + /// + /// Create a set of . + /// + /// Amount of Object to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected VertexBuffer CreateVertexBuffer( int count ) + { + return new VertexBuffer( count, this ); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs new file mode 100644 index 00000000..478b6ef9 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs @@ -0,0 +1,191 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderStream.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.Math; +using StgSharp.Threading; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public abstract partial class glRender : RenderStream + { + + private protected static readonly ConcurrentDictionary renderToThread + = new ConcurrentDictionary(); + + private OpenGLFunction _context; + + protected internal OpenGLFunction GL + { + get { return _context; } + } + + /// + /// Initialize an opengl context and load all opengl functions. + /// + public unsafe void InitializeContext() + { + if( ContextHandle == default ) { + ContextHandle = Marshal.AllocHGlobal( + Marshal.SizeOf( typeof( OpenglContext ) ) ); + OpenglContext* contextID = ( OpenglContext* )ContextHandle; + contextID->glGetString = ( delegate* )IntPtr.Zero; + } + if( GL == null ) { + _context = OpenGLFunction.BuildGlFunctionPackage( + ContextHandle ); + } + } + + /// + /// Initialize an OpenGl viewPortDisplay if current form has not been binded to any + /// viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + /// viewPortDisplay. + /// + /// + /// Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + /// + public unsafe void MakeAsCurrentContext() + { + InternalIO.glfwMakeContextCurrent( CanvasHandle ); + OpenGLFunction.CurrentGL = this.GL; + } + + /// + public override void RenderEnd() + { + if( !renderToThread.TryGetValue( this, + out Thread t ) || t != Thread.CurrentThread ) { + throw new InvalidOperationException( + $"Current render has had been binded to thread {t!.ManagedThreadId}" ); + } + SwapBuffers(); + renderToThread[ this ] = ThreadHelper.EmptyThread; + InternalIO.glfwMakeContextCurrent( IntPtr.Zero ); + OpenGLFunction.CurrentGL = null; + } + + /// + public override void RenderStart() + { + Thread current = Thread.CurrentThread; + if( !renderToThread.TryGetValue( this, + out Thread t ) || t == ThreadHelper.EmptyThread ) { + renderToThread[ this ] = current; + MakeAsCurrentContext(); + return; + } + if( t != current ) { + throw new InvalidOperationException( + $"Current render has had been binded to thread {t!.ManagedThreadId}" ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ) + { + InternalIO.glfwSetWindowSizeLimits( + this.CanvasHandle, minWidth, minHeight, maxWidth, maxHeight ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal override sealed void PlatformSpecifiedInitialize() + { + InitializeContext(); + MakeAsCurrentContext(); + glManager.LoadOpenGLApiTo( BindedViewPortContext.GraphicHandle ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal override sealed void Terminate() + { + CustomizeDeinit(); + } + + protected override sealed Uniform NativeCameraUniform( + ShaderProgram source, + string name ) + { + NativeCamera.GainAllUniforms( source, name ); + return NativeCamera.convertedUniform; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected override sealed void NativeCameraViewRange( + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ) + { + NativeCamera.SetViewRange( + fieldOfRange, this.Size, offset, viewDepth ); + } + + protected override sealed void NativeCameraViewTarget( + Vec3 position, + Vec3 direction, + Vec3 up ) + { + NativeCamera.SetViewDirection( position, direction, up ); + } + + #region Key Control + + protected KeyStatus CheckKey( KeyboardKey key ) + { + return InternalIO.glfwGetKey( this.CanvasHandle, ( int )key ); + } + + protected KeyStatus CheckKey( Mouse key ) + { + return InternalIO.glfwGetKey( this.CanvasHandle, ( int )key ); + } + + protected KeyStatus CheckKey( Joystick key ) + { + return InternalIO.glfwGetKey( this.CanvasHandle, ( int )key ); + } + + #endregion + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderThreadSecurity.cs b/StgSharp.Common/Graphics/OpenGL/glRenderThreadSecurity.cs new file mode 100644 index 00000000..c0dca674 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glRenderThreadSecurity.cs @@ -0,0 +1,49 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderThreadSecurity.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.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class glRender + { + + private static ConcurrentDictionary threadLocalIndex + = new ConcurrentDictionary(); + private readonly SynchronizationContext mainThreadContext = SynchronizationContext.Current; + + } +} diff --git a/StgSharp.Common/Graphics/OpenGL/glType.cs b/StgSharp.Common/Graphics/OpenGL/glType.cs new file mode 100644 index 00000000..d4f7dfc1 --- /dev/null +++ b/StgSharp.Common/Graphics/OpenGL/glType.cs @@ -0,0 +1,148 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glType.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.Collections.ObjectModel; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal.OpenGL +{ + public delegate IntPtr GLfuncLoader( string name ); + + internal delegate void GLVULKANPROCNV(); + + public unsafe struct GLhandleARB + { + + private dynamic value; + + public unsafe GLhandleARB( dynamic value ) + { + if( !RuntimeInformation.IsOSPlatform( OSPlatform.OSX ) ) { + if( value.GetType().Name != "Uint32" ) { + goto errorlog; + } + this.value = value; + } else { + if( value.GetType().Name != "IntPtr" ) { + goto errorlog; + } + this.value = value; + } + + errorlog: + { + InternalIO.InternalWriteLog( + $"{value.GetType().Name} does not match definination of GLhandlARB on OS {Environment.OSVersion.Platform} ", + LogType.Error ); + } + } + + public static implicit operator uint( GLhandleARB value ) + { + return ( uint )value; + } + + } + + #region GLFW_dele + + internal unsafe delegate void GLFWwindowsizefun( + glfwWindow* window, + int width, + int height ); + internal unsafe delegate void GLFWwindowrefreshfun( glfwWindow* window ); + internal unsafe delegate void GLFWwindowposfun( + glfwWindow* window, + int xpos, + int ypos ); + internal unsafe delegate void GLFWwindowmaximizefun( + glfwWindow* window, + int maximized ); + internal unsafe delegate void GLFWwindowiconifyfun( + glfwWindow* window, + int iconified ); + internal unsafe delegate void GLFWwindowfocusfun( + glfwWindow* window, + int focused ); + internal unsafe delegate void GLFWwindowcontentscalefun( + glfwWindow* window, + float xscale, + float yscale ); + internal unsafe delegate void GLFWwindowclosefun( glfwWindow* window ); + internal unsafe delegate void GLFWvkproc(); + internal unsafe delegate void GLFWscrollfun( + glfwWindow* window, + double xoffset, + double yoffset ); + internal unsafe delegate void GLFWmousebuttonfun( + glfwWindow* window, + int button, + int action, + int mods ); + internal unsafe delegate void GLFWmonitorfun( + glfwMonitor* monitor, + int monitorevent ); + internal unsafe delegate void GLFWkeyfun( + glfwWindow* window, + int key, + int scancode, + int action, + int mods ); + internal unsafe delegate void GLFWjoystickfun( int jid, int keyevent ); + public unsafe delegate void GLFWglproc(); + internal unsafe delegate void GLFWerrorfun( + int error_code, + sbyte* description ); + internal unsafe delegate void GLFWdropfun( + glfwWindow* window, + int path_count, + sbyte*[] paths ); + internal unsafe delegate void GLFWcursorposfun( + glfwWindow* window, + double xpos, + double ypos ); + internal unsafe delegate void GLFWcursorenterfun( + glfwWindow* window, + int entered ); + internal unsafe delegate void GLFWcharmodsfun( + glfwWindow* window, + uint codepoint, + int mods ); + internal unsafe delegate void GLFWcharfun( + glfwWindow* window, + uint codepoint ); + +#endregion + +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/Pixels.cs b/StgSharp.Common/Graphics/Pixels.cs new file mode 100644 index 00000000..9424725e --- /dev/null +++ b/StgSharp.Common/Graphics/Pixels.cs @@ -0,0 +1,80 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Pixels.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.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public interface IPixel + { + + public float Red + { + get; + set; + } + + public float Green + { + get; + set; + } + + public float Blue + { + get; + set; + } + + public float Alpha + { + get; + set; + } + + internal int Size + { + get; + } + + } + + [StructLayout( LayoutKind.Explicit, Size = 32 )] + public unsafe struct Pixel32 + { + [FieldOffset( 0 )] private unsafe fixed byte data[ 4 ]; + + internal int Size => 4; + + } +} diff --git a/StgSharp.Common/Graphics/PlainGeometryMesh.cs b/StgSharp.Common/Graphics/PlainGeometryMesh.cs new file mode 100644 index 00000000..0f506367 --- /dev/null +++ b/StgSharp.Common/Graphics/PlainGeometryMesh.cs @@ -0,0 +1,103 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainGeometryMesh.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.Math; + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public class PlainGeometryMesh + { + + private PlainGeometry _shape; + private TextureProvider _texture; + + public PlainGeometryMesh( + [NotNull] PlainGeometry shape, + [NotNull] TextureProvider texture ) + { + if( shape.VertexCount > texture.TextureCoordinate.Length ) { + throw new ArgumentException( + paramName: nameof( texture ), + message: "Amount of texture coordination is too less" ); + } + _texture = texture; + _shape = shape; + } + + //private Image _texture; + + public PlainGeometryMesh( + PlainGeometry shape, + Image texture, + Vec2[] texCoord ) + { + if( shape == null ) { + throw new ArgumentNullException( nameof( shape ) ); + } + if( texCoord == null ) { + throw new ArgumentNullException( nameof( texCoord ) ); + } + + if( shape.VertexCount > texCoord.Length ) { + throw new ArgumentException( + paramName: nameof( texCoord ), + message: "Amount of texture coordination is too less" ); + } + _texture = new TextureProvider( texture, texCoord ); + } + + public Vec4[] VertexArray => _shape.VertexStream; + + public Image TextureImage + { + get => _texture.ProvideImage(); + internal set => _texture.ReadImage( value ); + } + + public ReadOnlySpan MeshIndices => _shape.VertexIndices; + + public ReadOnlySpan TextureCoord => MemoryMarshal.Cast( + _texture.TextureCoordinate ); + + public PlainGeometryMesh Resize( PlainGeometry newShape ) + { + return new PlainGeometryMesh( newShape, _texture ); + } + + } +} diff --git a/StgSharp.Common/Graphics/RenderStream.cs b/StgSharp.Common/Graphics/RenderStream.cs new file mode 100644 index 00000000..f841362e --- /dev/null +++ b/StgSharp.Common/Graphics/RenderStream.cs @@ -0,0 +1,252 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RenderStream.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.Graphics.OpenGL; +using StgSharp.Math; + +using StgSharp.MVVM; +using StgSharp.MVVM.View; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public abstract class RenderStream + { + + private protected ViewPort primeArgs; + private Camera nativeCamera; + internal TimeSpanProvider _timeProvider; + + public (int width, int height) Size + { + get => (Width, Height); + } + + public abstract bool IsContextSharable + { + get; + } + + public int Height + { + get => primeArgs.Height; + } + + public int Width + { + get => primeArgs.Width; + } + + public IntPtr Monitor + { + get => primeArgs.Monitor; + internal set => primeArgs.Monitor = value; + } + + public string Name + { + get => primeArgs.Name; + } + + public ViewPort BindedViewPortContext + { + get => primeArgs; + internal set => primeArgs = value; + } + + internal IntPtr CanvasHandle + { + get => primeArgs.ViewPortID; + } + + internal IntPtr ContextHandle + { + get => primeArgs.GraphicHandle; + private protected set => primeArgs.GraphicHandle = value; + } + + protected internal Camera NativeCamera + { + get => nativeCamera; + internal set => nativeCamera = value; + } + + protected float FramePassed + { + get => _timeProvider.CurrentSpan; + } + + protected int PassedFrames + { + get => _timeProvider.CurrentSpan; + } + + protected float TimePassed + { + get => _timeProvider.CurrentSecond; + } + + protected TimeSpanProvider TimeProvider + { + get => _timeProvider; + } + + /// + /// 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 abstract void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ); + + public static TTarget ShareContextFrom( + [NotNull]TSource source ) + where TSource: RenderStream + where TTarget: RenderStream, new() + { + TTarget target = new TTarget(); + target.Initialize( + source.BindedViewPortContext, + source._timeProvider ); + return target; + } + + /**/ + protected internal static void PollEvents() + { + InternalIO.glfwPollEvents(); + } + + private protected void SwapBuffers() + { + InternalIO.glfwSwapBuffers( CanvasHandle ); + } + + /**/ + + #region native camera operation + + protected abstract void NativeCameraViewRange( + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ); + + protected abstract void NativeCameraViewTarget( + Vec3 position, + Vec3 direction, + Vec3 up ); + + /// + /// Get (TView is ) uniform from a shader. + /// This uniform will be used as projection matrix of this camera. Additionally, for multi- + /// shader rendering, each shader requires a uniform, so do not ignore return value of this + /// method. + /// + /// Shader using this camera + /// ContextName of projection camera named in shader + /// + /// (TView is ) representing projection + /// matrix in shader program. + /// + protected abstract Uniform NativeCameraUniform( + ShaderProgram source, + string name ); + + #endregion + + #region internal operation + + public void Initialize( + ViewPort v, + TimeSpanProvider timeProvider ) + { + if( v == null ) { + throw new ArgumentNullException( nameof( v ) ); + } + primeArgs = v; + this._timeProvider = timeProvider; + nativeCamera = new Camera(); + PlatformSpecifiedInitialize(); + CustomizeInit(); + InternalIO.glfwMakeContextCurrent( IntPtr.Zero ); + } + + internal abstract void PlatformSpecifiedInitialize(); + + internal abstract void Terminate(); + + #endregion + + #region public operation + + protected abstract void CustomizeDeinit(); + + protected abstract void CustomizeInit(); + + /// + /// Marking the start of current render operations, and set this renser context as current. + /// + public abstract void RenderStart(); + + /// + /// Marking the end of current render operations, and release the binding of this renser + /// context to current, making it available for another thread as current. + /// + public abstract void RenderEnd(); + + #endregion + + #region public resource generator + + protected abstract Shader CreateShaderSegment( + ShaderType type, + int count ); + + protected abstract ShaderProgram CreateShaderProgram(); + + #endregion + } +} diff --git a/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs b/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs new file mode 100644 index 00000000..48878e6a --- /dev/null +++ b/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs @@ -0,0 +1,207 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ShaderGenerator.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.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.ShaderEdit +{ + public class ShaderGenerator + { + + private Dictionary uniformDefine; + private List codeList; + private List usedShaderFunctions; + + public Uniform DefineUniform( string name, int index ) + where T: struct + { + ShaderParameter p = new ShaderParameter( + name, ShaderParameter.TypeMarshal() ); + uniformDefine.Add( index, p ); + + //return new Uniform(); + throw new NotImplementedException(); + } + + } + + public class ShaderFunction + { + + private List codeList; + private List inputList; + private ShaderParameter outPut; + private string name; + + public int ParameterCount => inputList.Count; + + public void EmitCall( + ShaderFunction function, + ShaderParameter outPut, + params ShaderParameter[] inputParams ) + { + if( inputParams.Length != function.ParameterCount ) { + // Param list length not equal + throw new ArgumentException( + "Provided parameters does not match function's parameter list." ); + } + if( !ShaderParameter.IsSameType( outPut, function.outPut ) ) { + // Type of returning value not equal + throw new ArgumentException( + "Provided parameters does not match function's parameter list." ); + } + for( int i = 0; i < inputParams.Length; i++ ) { + if( !ShaderParameter.IsSameType( + function.inputList[ i ], inputParams[ i ] ) ) { + // Input type not match + throw new InvalidCastException( + "Provided parameters does not match function's parameter list." ); + } + } + string codeLine = string.Empty; // adding a line like " outvalue = Func(input1, input2,...); " + if( outPut != ShaderParameter.Void ) { + codeLine += $"{outPut.name} = "; + } + codeLine += $"{function.name}("; + foreach( ShaderParameter inputParam in inputParams ) { + codeLine += inputParam.name; + } + codeLine += ");\n"; + codeList.Add( codeLine ); + } + + } + + public class ShaderParameter + { + + public static readonly ShaderParameter Void = new ShaderParameter( + string.Empty, InternalShaderType.Void ); + internal readonly bool isReadOnly; + internal readonly InternalShaderType type; + internal readonly string name; + + public ShaderParameter( string name, InternalShaderType type ) + { + this.name = name; + this.type = type; + isReadOnly = false; + } + + public static bool IsSameType( + ShaderParameter param1, + ShaderParameter param2 ) + { + if( param1.type != InternalShaderType.Struct ) { + return param1.type == param2.type; + } else { + throw new Exception( "Struct is currently not supported." ); + } + } + + public static InternalShaderType TypeMarshal() where T: struct + { + switch( Type.GetTypeCode( typeof( T ) ) ) { + case TypeCode.Single: + return InternalShaderType.Float; + case TypeCode.Double: + return InternalShaderType.Double; + case TypeCode.Int32: + return InternalShaderType.Int; + case TypeCode.UInt32: + return InternalShaderType.UInt; + default: + break; + } + switch( typeof( T ).Name ) { + case "vec4d": + return InternalShaderType.Vector4; + case "Matrix2x2": + return InternalShaderType.Matrix2x2; + case "Matrix2x3": + return InternalShaderType.Matrix2x3; + case "Matrix2x4": + return InternalShaderType.Matrix2x4; + case "Matrix3x2": + return InternalShaderType.Matrix3x2; + case "Matrix3x3": + return InternalShaderType.Matrix3x3; + case "Matrix3x4": + return InternalShaderType.Matrix3x4; + case "Matrix4x2": + return InternalShaderType.Matrix4x2; + case "Matrix4x3": + return InternalShaderType.Matrix4x3; + case "Matrix4x4": + return InternalShaderType.Matrix4x4; + default: + throw new ArgumentException( + "Not supported shader data type." ); + } + } + + } + + public enum InternalShaderType + { +#pragma warning disable CS1591 + Struct, + Void, + Int, + UInt, + Float, + Double, + Vector2, + Vector3, + Vector4, + VectorD2, + VectorD3, + VectorD4, + Matrix2x2, + Matrix2x3, + Matrix2x4, + Matrix3x2, + Matrix3x3, + Matrix3x4, + Matrix4x2, + Matrix4x3, + Matrix4x4, +#pragma warning restore CS1591 + } +} \ No newline at end of file diff --git a/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs b/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs new file mode 100644 index 00000000..eecd6187 --- /dev/null +++ b/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ShaderStruct.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.ShaderEdit +{ + public class ShaderStructMember + { + + internal InternalShaderType type; + internal object value; + + } + + public class ShaderStruct + { + + internal Dictionary uniformPair; + + internal ShaderStruct() { } + + public ShaderStruct( + params (GlHandle, ShaderStructMember)[] uniformPairs ) + { + uniformPair = new Dictionary(); + if( uniformPairs.Length == 0 ) { + return; + } + + foreach( (GlHandle, ShaderStructMember) item in uniformPairs ) { + uniformPair.Add( item.Item1, item.Item2 ); + } + } + + public unsafe void SetAllUniforms() + { + OpenglContext* gl = ( OpenglContext* )OpenGL.OpenGLFunction.CurrentGL.ContextHandle; + foreach( KeyValuePair uniform in uniformPair ) { + int id = uniform.Key.SignedValue; + ShaderStructMember s = uniform.Value; + switch( s.type ) { + case InternalShaderType.Struct: + throw new ArgumentException( + "Incorrect type \"Struct\" defined in this self define type" ); + case InternalShaderType.Void: + throw new ArgumentException( + "Incorrect type \"Void\" defined in this self define type" ); + case InternalShaderType.Float: + gl->glUniform1f( id, ( float )s.value ); + break; + case InternalShaderType.Int: + gl->glUniform1f( id, ( int )s.value ); + break; + default: + throw new NotImplementedException(); + throw new ArgumentException( + "Incorrect type \"Unknown\" defined in this self define type" ); + } + } + }//------------------------------------ End of Class --------------------------------------- + + } +} diff --git a/StgSharp.Common/Graphics/TexturePipeline.cs b/StgSharp.Common/Graphics/TexturePipeline.cs new file mode 100644 index 00000000..bd9c3b64 --- /dev/null +++ b/StgSharp.Common/Graphics/TexturePipeline.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TexturePipeline.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.Blueprint; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public class TexturePipeline : BlueprintPipelineArgs + { + + private Image _value; + + public TexturePipeline( Image i ) + { + _value = i; + } + + public new Image Value + { + get => _value; + set => _value = value ?? + throw new ArgumentNullException( nameof( value ) ); + } + + } +} diff --git a/StgSharp.Common/Graphics/TextureProvider.cs b/StgSharp.Common/Graphics/TextureProvider.cs new file mode 100644 index 00000000..351dfe8d --- /dev/null +++ b/StgSharp.Common/Graphics/TextureProvider.cs @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TextureProvider.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.Math; + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public class TextureProvider : IImageProvider + { + + private Vec2[] _texCoord; + private Image _tex; + + public TextureProvider( Image image, Vec2[] coord ) + { + _tex = image; + _texCoord = coord; + } + + public ref Vec2 this[ int index ] + { + get => ref _texCoord[ index ]; + } + + public Span TextureCoordinate + { + get => new Span( _texCoord ); + } + + public Image ProvideImage() + { + return _tex; + } + + public void ReadImage( IImageProvider provider ) + { + _tex = provider.ProvideImage(); + } + + public void UpdateFromImage( [NotNull]Image i ) + { + if( i == _tex ) { + return; + } + if( i.Size == _tex.Size ) { + _tex = i; + } else { + throw new ArgumentException( + $"Size of {nameof(i)} does not equals to current image." ); + } + } + + } +} diff --git a/StgSharp.Common/Graphics/Vulkan/vkEnum.cs b/StgSharp.Common/Graphics/Vulkan/vkEnum.cs new file mode 100644 index 00000000..227c1fc3 --- /dev/null +++ b/StgSharp.Common/Graphics/Vulkan/vkEnum.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Graphics.Vulkan +{ + + internal enum VkStructureType : uint + { + + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, + VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, + VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, + VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, + VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, + VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF + + } + + internal enum VkResult + { + + VK_SUCCESS = 0, + VK_NOT_READY = 1, + VK_TIMEOUT = 2, + VK_EVENT_SET = 3, + VK_EVENT_RESET = 4, + VK_INCOMPLETE = 5, + VK_ERROR_OUT_OF_HOST_MEMORY = -1, + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2, + VK_ERROR_INITIALIZATION_FAILED = -3, + VK_ERROR_DEVICE_LOST = -4, + VK_ERROR_MEMORY_MAP_FAILED = -5, + VK_ERROR_LAYER_NOT_PRESENT = -6, + VK_ERROR_EXTENSION_NOT_PRESENT = -7, + VK_ERROR_FEATURE_NOT_PRESENT = -8, + VK_ERROR_INCOMPATIBLE_DRIVER = -9, + VK_ERROR_TOO_MANY_OBJECTS = -10, + VK_ERROR_FORMAT_NOT_SUPPORTED = -11, + VK_ERROR_SURFACE_LOST_KHR = -1000000000, + VK_SUBOPTIMAL_KHR = 1000001003, + VK_ERROR_OUT_OF_DATE_KHR = -1000001004, + VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, + VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, + VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, + VK_RESULT_MAX_ENUM = 0x7FFFFFFF + + } + +} diff --git a/StgSharp.Common/Graphics/Vulkan/vkHandle.cs b/StgSharp.Common/Graphics/Vulkan/vkHandle.cs new file mode 100644 index 00000000..5396a1f7 --- /dev/null +++ b/StgSharp.Common/Graphics/Vulkan/vkHandle.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="vkHandle.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.Runtime.InteropServices; +using System.Security; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.Vulkan +{ + [StructLayout( LayoutKind.Explicit, Size = 8 )] + public struct vkHandle + { + + [FieldOffset( 0 )] public int SignedHalfValue; + [FieldOffset( 0 )] public IntPtr Handle; + [FieldOffset( 0 )] public IntPtr UnsignedHandle; + [FieldOffset( 0 )] public uint HalfValue; + + } +} diff --git a/StgSharp.Common/Graphics/framework.cs b/StgSharp.Common/Graphics/framework.cs new file mode 100644 index 00000000..ee91a8c1 --- /dev/null +++ b/StgSharp.Common/Graphics/framework.cs @@ -0,0 +1,106 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="framework.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.Graphics; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +#if Windows +// using Windows.Win32; +#endif + + +namespace StgSharp.Graphics +{ + + #region StgSharpDele + + public unsafe delegate void FrameBufferSizeHandler( + IntPtr window, + int width, + int height); + + public unsafe delegate void FramePositionHandler( + IntPtr window, + float width, + float height); + + #endregion + + /// + /// Function handler to load an opengl function by searching its _name. + /// + /// the _name of the Opengl function + /// An Intptr value representing the pointer to the function + public delegate IntPtr glLoader(string name); + + #region glDEBUG + + internal unsafe delegate void GLDEBUGPROC( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam); + internal unsafe delegate void GLDEBUGPROCARB( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam); + internal unsafe delegate void GLDEBUGPROCKHR( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam); + internal unsafe delegate void GLDEBUGPROCAMD( + uint id, + int category, + int severity, + int length, + sbyte* message, + void* userParam); + + #endregion + +} diff --git a/StgSharp.Common/Graphics/frameworkSyncContext.cs b/StgSharp.Common/Graphics/frameworkSyncContext.cs new file mode 100644 index 00000000..661b20d1 --- /dev/null +++ b/StgSharp.Common/Graphics/frameworkSyncContext.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="frameworkSyncContext.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public class FrameworkSyncContext : SynchronizationContext + { + + private static readonly FrameworkSyncContext _mainThreadContext = new FrameworkSyncContext( + ); + + private readonly BlockingCollection _syncContexts = new BlockingCollection( + ); + private readonly Thread _mainThread = Thread.CurrentThread; + + public FrameworkSyncContext() + { + _syncContexts = new BlockingCollection(); + _mainThread = Thread.CurrentThread; + } + + public static FrameworkSyncContext MainThreadContext + { + get => _mainThreadContext; + } + + public override void Post( SendOrPostCallback d, object state ) + { + _syncContexts.Add( d ); + } + + public override void Send( SendOrPostCallback d, object state ) + { + if( Thread.CurrentThread == _mainThread ) { + d( state ); + } else { + Post( d, state ); + } + } + + } +} diff --git a/StgSharp.Common/HighPerformance/IRegisterType.cs b/StgSharp.Common/HighPerformance/IRegisterType.cs new file mode 100644 index 00000000..2dce5add --- /dev/null +++ b/StgSharp.Common/HighPerformance/IRegisterType.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IRegisterType.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.Numerics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.HighPerformance +{ + public interface IRegisterType + { + + public ref T AsRef() where T: struct, INumber; + + public T Read( int index ) where T: struct, INumber; + + public void Write( int index, T value ) where T: struct, INumber; + + } +} diff --git a/StgSharp.Common/HighPerformance/Lable.cs b/StgSharp.Common/HighPerformance/Lable.cs new file mode 100644 index 00000000..9bf1de48 --- /dev/null +++ b/StgSharp.Common/HighPerformance/Lable.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Lable.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.Runtime.CompilerServices; + +namespace StgSharp.HighPerformance +{ + public class DataLabel + { + + private readonly string _name; + + public DataLabel( string lableName ) + { + _name = lableName; + } + + public string Name + { + get => _name; + } + + public override unsafe int GetHashCode() + { + ReadOnlySpan nameSpan = _name.AsSpan(); + fixed( char* cptr = nameSpan ) { + return InternalIO.Intrinsic + .city_hash_simplify( cptr, _name.Length ); + } + } + + } + + public static class DataLabelBuilder + { + + public static DataLabel AsLabel( this string name ) + { + return new DataLabel( name ); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/HighPerformance/M128.cs b/StgSharp.Common/HighPerformance/M128.cs new file mode 100644 index 00000000..3ccf13cc --- /dev/null +++ b/StgSharp.Common/HighPerformance/M128.cs @@ -0,0 +1,184 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="M128.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.Diagnostics.CodeAnalysis; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +#if NET5_0_OR_GREATER +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; +#endif + +using System.Text; + +namespace StgSharp.HighPerformance +{ + [StructLayout( LayoutKind.Explicit, Pack = 16 )] + public unsafe struct M128 : IRegisterType + { + + [FieldOffset( 0 )] internal fixed byte Buffer[ 16 ]; + [FieldOffset( 0 )] internal Vector4 Vec; + + internal M128( Vector4 v ) + { + Vec = v; + } + + public ref T AsRef() where T: struct, INumber + { + return ref Unsafe.As( ref Buffer[ 0 ] ); + } + + public override bool Equals( [NotNullWhen( true )] object obj ) + { + if( obj is not M128 other ) { + return false; + } + return this == other; + } + + public override int GetHashCode() + { + return Vec.GetHashCode(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public T Read( int index ) where T: struct, INumber + + { + fixed( Vector4* p = &Vec ) { + #pragma warning disable CS8500 + return *( ( T* )p + index ); + #pragma warning restore CS8500 + } + } + + public override string ToString() + { + return string.Empty; + } + + public string ToString( int sample ) + { + string str = string.Empty; + for( int i = 15; i >= 0; i-- ) { + str += $"{Convert.ToString(Buffer[i], sample)} "; + } + return str; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Write( int index, T value ) where T: struct, INumber + { + fixed( byte* p = Buffer ) { + #pragma warning disable CS8500 + *( ( T* )p + index ) = value; + #pragma warning restore CS8500 + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( M128 left, M128 right ) + { + return left.Vec != right.Vec; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( M128 left, M128 right ) + { + return left.Vec == right.Vec; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.Vec.AsVector128().As(); + } + + } +} diff --git a/StgSharp.Common/HighPerformance/M256.cs b/StgSharp.Common/HighPerformance/M256.cs new file mode 100644 index 00000000..0ff9c732 --- /dev/null +++ b/StgSharp.Common/HighPerformance/M256.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="M256.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.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.HighPerformance +{ + [StructLayout( LayoutKind.Explicit, Pack = 16 )] + public unsafe struct M256 : IRegisterType + { + + [FieldOffset( 0 )] internal fixed byte Buffer[ 32 ]; + + public ref T AsRef() where T: struct, INumber + { + return ref Unsafe.As( ref Buffer[ 0 ] ); + } + + public T Read( int index ) where T: struct, INumber + { + fixed( byte* mptr = Buffer ) { + return *( ( T* )mptr + index ); + } + } + + public void Write( int index, T value ) where T: struct, INumber + { + fixed( byte* mptr = Buffer ) { + *( ( T* )mptr + index ) = value; + } + } + + } +} diff --git a/StgSharp.Common/HighPerformance/UnsafeCompute.cs b/StgSharp.Common/HighPerformance/UnsafeCompute.cs new file mode 100644 index 00000000..1301a8b2 --- /dev/null +++ b/StgSharp.Common/HighPerformance/UnsafeCompute.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="UnsafeCompute.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.Diagnostics; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.HighPerformance +{ + public static class UnsafeCompute + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int CityHashSimplify( char* span, int length ) + { + return InternalIO.Intrinsic.city_hash_simplify( span, length ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int CityHashSimplify( + char* span, + int begin, + int length ) + { + return InternalIO.Intrinsic + .city_hash_simplify( span + begin, length ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int IndexOfCharPair( + char* source, + int pairValue, + int length ) + { + return InternalIO.Intrinsic.index_pair( source, pairValue, length ); + } + + } +} diff --git a/StgSharp.Common/Internal/ClangLoad/gl.cs b/StgSharp.Common/Internal/ClangLoad/gl.cs new file mode 100644 index 00000000..0fb83e57 --- /dev/null +++ b/StgSharp.Common/Internal/ClangLoad/gl.cs @@ -0,0 +1,99 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="gl.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.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Internal.OpenGL; + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal +{ + internal partial class InternalIO + { + + [LibraryImport( SSC_libName, EntryPoint = "glCheckShaderStat" )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + #pragma warning disable CA5392 + internal static partial int glCheckShaderStatus( + ref OpenglContext context, + uint shaderHandle, + int key, + ref IntPtr logPtr ); + #pragma warning restore CA5392 + + + #region ssgc api define + + [LibraryImport( SSC_libName, EntryPoint = "initGL" )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + internal static partial void InternalInitGL( + int majorVersion, + int minorVersion ); + + [LibraryImport( + SSC_libName, + EntryPoint = "loadGlfuncDefault", + StringMarshalling = StringMarshalling.Utf8 )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + internal static partial IntPtr InternalLoadGlfuncDefault( string name ); + + [LibraryImport( SSC_libName, EntryPoint = "linkShaderProgram" )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + internal static unsafe partial uint InternalLinkShaderProgram( + OpenglContext* context, + uint shaderProgram ); + + [LibraryImport( SSC_libName, EntryPoint = "readLog" )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + internal static unsafe partial IntPtr InternalReadSSCLog(); + + [LibraryImport( + SSC_libName, + EntryPoint = "loadImageData", + StringMarshalling = StringMarshalling.Utf8 )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + internal static unsafe partial void InternalLoadImage( + string fileName, + ImageInfo* output, + ImageLoader loader ); + + [LibraryImport( SSC_libName, EntryPoint = "unloadImageData" )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + internal static unsafe partial void InternalUnloadImage( + ImageInfo* output ); + + #endregion ssgc api define + } +} diff --git a/StgSharp.Common/Internal/InternalIO.cs b/StgSharp.Common/Internal/InternalIO.cs new file mode 100644 index 00000000..88728c2d --- /dev/null +++ b/StgSharp.Common/Internal/InternalIO.cs @@ -0,0 +1,147 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="InternalIO.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.Graphics; +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.IO; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +using System.Text; +using System.Threading; + +namespace StgSharp.Internal +{ + internal static unsafe partial class InternalIO + { + + internal const string SS_errorLog = + "SS_errorlog.log"; + + internal const string SSC_libName = + "StgSharp.C"; + + internal static Dictionary GLtype = + new Dictionary(); + + internal static readonly GCHandle ssc_logHandle = + GCHandle.Alloc( new byte[512], GCHandleType.Pinned ); + + internal static IntPtr SSClibPtr = IntPtr.Zero; + + internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim( + 1, 1 ); + + static InternalIO() + { + GLtype.Add( TypeCode.Single, glConst.FLOAT ); + GLtype.Add( TypeCode.Int32, glConst.INT ); + GLtype.Add( TypeCode.UInt32, glConst.UNSIGNED_INT ); + GLtype.Add( TypeCode.Int16, glConst.SHORT ); + GLtype.Add( TypeCode.UInt16, glConst.UNSIGNED_SHORT ); + GLtype.Add( TypeCode.SByte, glConst.BYTE ); + GLtype.Add( TypeCode.Byte, glConst.UNSIGNED_BYTE ); + } + + internal static void InternalAppendLog( string log ) + { + if( !File.Exists( SS_errorLog ) ) { + FileStream stream = File.Create( SS_errorLog ); + stream.Close(); + } + + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( log ); + } + } + + [Obsolete( "Not completed", true )] + internal static IntPtr InternalLoadProc( IntPtr lib, string name ) + where T: Delegate + { + try { + IntPtr procPtr = +#if WINDOWS + IntPtr.Zero; + #elif LINUX + + #else + IntPtr.Zero; + + #endif + return procPtr; + } + catch( Exception ) { + throw; + } + } + + internal static void InternalWriteLog( string logLine, LogType logType ) + { + logSyncSemaphore.Wait(); + if( !File.Exists( SS_errorLog ) ) { + FileStream stream = File.Create( SS_errorLog ); + stream.Close(); + } + + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( + $"{logType}\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( logLine ); + } + logSyncSemaphore.Release(); + } + + internal static void InternalWriteLog( + string beforeTime, + string logLine, + LogType logType ) + { + logSyncSemaphore.Wait(); + if( !File.Exists( SS_errorLog ) ) { + FileStream stream = File.Create( SS_errorLog ); + stream.Close(); + } + + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( beforeTime ); + logStream.WriteLine( + $"{logType}\t@\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( logLine ); + } + logSyncSemaphore.Release( 1 ); + } + + } +} diff --git a/StgSharp.Common/Internal/InternalResource.cs b/StgSharp.Common/Internal/InternalResource.cs new file mode 100644 index 00000000..3daeae0d --- /dev/null +++ b/StgSharp.Common/Internal/InternalResource.cs @@ -0,0 +1,99 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="InternalResource.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.Text; + +namespace StgSharp.Internal +{ + internal partial class InternalIO + { + + #region ControllingItemRender + + internal const string ControlItemRenderVertexShader = """ + + + + """; + + #endregion + + #region CollisionTexture + + internal const string CollisionTextureVertexShader = """ + #version 430 core + layout(location = 0) in vec2 localCollisionCoord; + layout(location = 1) in vec2 spaceCoord; + layout(location = 2) in float rotation; + layout(location = 3) in float scaling; + + uniform vec2 target; + uniform mat2 projection; + + void main() + { + mat2 scaling = mat2( + scaling,0, + 0,scaling ); + + mat2 rotation = mat2( + cos(rotation),-sin(rotation), + sin(rotation),cos(rotation) ); + + vec2 realCoord = (rotation * scaling * localCollisionCoord) + spaceCoord - target; + realCoord = projection * realCoord; + float dist = distance(realCoord, vec2(0,0)); + float angle = atan(realCoord.y, realCoord.x); + gl_Position = vec4(angle, realCoord.y, dist, 1); + } + """; + internal const string CollisionTextureFragmentShader = """ + #version 430 core + out vec4 Color; + + uniform float range; + void main() + { + float dist = gl_FragCoord.z; + if(dist > range) + { + discard; + } + dist /= range; + gl_FragDepth = min(dist, gl_FragDepth); + Color = vec4(dist,0,0,1); + } + """; + + #endregion + } +} diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs new file mode 100644 index 00000000..591e4627 --- /dev/null +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs @@ -0,0 +1,91 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet2.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; +using StgSharp.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 12 * sizeof( float ), Pack = 16 )] + internal struct ColumnSet2 : IEquatable + { + + [FieldOffset( 0 * sizeof( float ) )] internal float m00; + [FieldOffset( 4 * sizeof( float ) )] internal float m01; + [FieldOffset( 1 * sizeof( float ) )] internal float m10; + [FieldOffset( 5 * sizeof( float ) )] internal float m11; + [FieldOffset( 2 * sizeof( float ) )] internal float m20; + [FieldOffset( 6 * sizeof( float ) )] internal float m21; + [FieldOffset( 3 * sizeof( float ) )] internal float m30; + [FieldOffset( 7 * sizeof( float ) )] internal float m31; + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vector4 colum1; + + internal ColumnSet2( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit( out this ); + colum0 = c0; + colum1 = c1; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet2 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet2 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet2 left, ColumnSet2 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet2 left, ColumnSet2 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs new file mode 100644 index 00000000..809eaf36 --- /dev/null +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs @@ -0,0 +1,86 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet3.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.Internal.Intrinsic; +using StgSharp.Math; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 12 * sizeof( float ), Pack = 16 )] + internal struct ColumnSet3 : IEquatable, IMat + { + [FieldOffset( 0 * sizeof( float ) )] internal float m00; + [FieldOffset( 4 * sizeof( float ) )] internal float m01; + [FieldOffset( 8 * sizeof( float ) )] internal float m02; + [FieldOffset( 1 * sizeof( float ) )] internal float m10; + [FieldOffset( 5 * sizeof( float ) )] internal float m11; + [FieldOffset( 9 * sizeof( float ) )] internal float m12; + [FieldOffset( 2 * sizeof( float ) )] internal float m20; + [FieldOffset( 6 * sizeof( float ) )] internal float m21; + [FieldOffset( 10 * sizeof( float ) )] internal float m22; + [FieldOffset( 3 * sizeof( float ) )] internal float m30; + [FieldOffset( 7 * sizeof( float ) )] internal float m31; + [FieldOffset( 11 * sizeof( float ) )] internal float m32; + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vector4 colum1; + [FieldOffset( 8 * sizeof( float ) )] internal Vector4 colum2; + + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet3 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet3 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ) && colum2.Equals( other.colum2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet3 left, ColumnSet3 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet3 left, ColumnSet3 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs new file mode 100644 index 00000000..b3781305 --- /dev/null +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet4.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; +using StgSharp.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 16 * sizeof( float ) )] + internal struct ColumnSet4 : IEquatable, IMat + { + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 16 )] internal Vector4 colum1; + [FieldOffset( 32 )] internal Vector4 colum2; + [FieldOffset( 48 )] internal Vector4 colum3; + + [FieldOffset( 0 )] public float m00; + [FieldOffset( 16 )] public float m01; + [FieldOffset( 32 )] public float m02; + [FieldOffset( 48 )] public float m03; + [FieldOffset( 4 )] public float m10; + [FieldOffset( 20 )] public float m11; + [FieldOffset( 36 )] public float m12; + [FieldOffset( 52 )] public float m13; + [FieldOffset( 8 )] public float m20; + [FieldOffset( 24 )] public float m21; + [FieldOffset( 40 )] public float m22; + [FieldOffset( 56 )] public float m23; + [FieldOffset( 12 )] public float m30; + [FieldOffset( 28 )] public float m31; + [FieldOffset( 44 )] public float m32; + [FieldOffset( 60 )] public float m33; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal ColumnSet4( + Vector4 colum0, + Vector4 colum1, + Vector4 colum2, + Vector4 colum3 ) + { + Unsafe.SkipInit( out this ); + this.colum0 = colum0; + this.colum1 = colum1; + this.colum2 = colum2; + this.colum3 = colum3; + } + + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet4 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet4 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ) && colum2.Equals( other.colum2 ) && colum3.Equals( + other.colum3 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet4 left, ColumnSet4 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet4 left, ColumnSet4 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs new file mode 100644 index 00000000..a5016dce --- /dev/null +++ b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IntrinsicContext.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; +using StgSharp.HighPerformance; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Internal.Intrinsic +{ + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct IntrinsicContext + { + + public delegate* unmanaged[Cdecl] add_mat_2; + public delegate* unmanaged[Cdecl] add_mat_3; + public delegate* unmanaged[Cdecl] add_mat_4; + public delegate* unmanaged[Cdecl] city_hash_simplify; + public delegate* unmanaged[Cdecl] det_mat_3; + public delegate* unmanaged[Cdecl] det_mat_4; + public delegate* unmanaged[Cdecl] dot_31; + public delegate* unmanaged[Cdecl] dot_32; + public delegate* unmanaged[Cdecl] dot_41; + public delegate* unmanaged[Cdecl] dot_42; + public delegate* unmanaged[Cdecl] dot_43; + public delegate* unmanaged[Cdecl] index_pair; + public delegate* unmanaged[Cdecl] normalize_v3; + public delegate* unmanaged[Cdecl] transpose23; + public delegate* unmanaged[Cdecl] transpose24; + public delegate* unmanaged[Cdecl] transpose32; + public delegate* unmanaged[Cdecl] transpose33; + public delegate* unmanaged[Cdecl] transpose34; + public delegate* unmanaged[Cdecl] transpose42; + public delegate* unmanaged[Cdecl] transpose43; + public delegate* unmanaged[Cdecl] transpose44; + + } +} diff --git a/StgSharp.Common/Internal/Intrinsic/MatInterface.cs b/StgSharp.Common/Internal/Intrinsic/MatInterface.cs new file mode 100644 index 00000000..4425f944 --- /dev/null +++ b/StgSharp.Common/Internal/Intrinsic/MatInterface.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MatInterface.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.Text; + +namespace StgSharp.Internal.Intrinsic +{ + public interface IMat { } +} diff --git a/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs new file mode 100644 index 00000000..c159bf45 --- /dev/null +++ b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="intrinsicContextProvider.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.Internal.Intrinsic; + +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Internal +{ + internal static unsafe partial class InternalIO + { + + private static readonly IntrinsicContext _intrinsicContext = new IntrinsicContext( + ); + + internal static IntrinsicContext Intrinsic + { + get => _intrinsicContext; + } + + internal static void InitIntrinsicContext() + { + int statCode; + + fixed( IntrinsicContext* cptr = &_intrinsicContext ) { + statCode = LoadIntrinsicFunction( cptr ); + } + + switch( statCode ) { + case 0: + + //Dialogue.PostError(new PlatformNotSupportedException("No SIMD instructions supported on current hardware platform")); + Environment.Exit( -1 ); + break; + default: + break; + } + } + + [LibraryImport( SSC_libName, EntryPoint = "load_intrinsic_function" )] + [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] + private static partial int LoadIntrinsicFunction( + IntrinsicContext* context ); + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Internal/StructDefine.cs b/StgSharp.Common/Internal/StructDefine.cs new file mode 100644 index 00000000..3f3aaeb1 --- /dev/null +++ b/StgSharp.Common/Internal/StructDefine.cs @@ -0,0 +1,962 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StructDefine.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.Internal.OpenGL; + +using StgSharp.Graphics.OpenGL; + +using System; +using System.Runtime.InteropServices; + +/**/ + +namespace StgSharp.Internal +{ + //rename types in style of GLFW + + using GLFWbool = Boolean; + + //strucs defined in GLFW3.h + + #region GLFW3 struct + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWcontext + { + + private delegate* extensionSupported; + private delegate*, void> getProcAddress; + + /* + void (* makeCurrent) (glfwWindow*); + void (* swapBuffers) (glfwWindow*); + void (* swapInterval) (int); + int (* extensionSupported) (const byte*); + GLFWglproc(*getProcAddress)(const byte*); + void (* destroy) (glfwWindow*); + */ + + private delegate* makeCurrent; + private delegate* swapBuffer; + private delegate* swapInterval; + private GLFWbool forward, debug, noerror; + + private int client; + private int major, minor, revision; + private int profile; + private int release; + private int robustness; + private int source; + private IntPtr destroy; + + //PFNGLGETINTEGERVPROC GetIntegerv; + private IntPtr GetIntegerv; + + //PFNGLGETSTRINGPROC GetString; + private IntPtr GetString; + + //PFNGLGETSTRINGIPROC GetStringi; + private IntPtr GetStringi; + + internal struct egl + { + + private void* client; + + /* + EGLConfig config; + EGLContext handle; + EGLSurface surface; + */ + private void* config; + private void* handle; + private void* surface; + + } + + internal struct osmesa + { + + private void* buffer; + + //OSMesaContext handle; + private void* handle; + private int height; + + private int width; + + } + + // This is defined in platform.h + //GLFW_PLATFORM_CONTEXT_STATE + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct glfwVideomode + { + /*! The refresh rate, in Hz, of the video mode. + */ + + private int refreshRate; + /*! The bit depth of the blue channel of the video mode. + */ + public int blueBits; + /*! The bit depth of the green channel of the video mode. + */ + public int greenBits; + /*! The height, in screen coordinates, of the video mode. + */ + public int height; + /*! The bit depth of the red channel of the video mode. + */ + public int redBits; + + /*! The width, in screen coordinates, of the video mode. + */ + public int width; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct glfwGammaramp + { + /*! An array of value describing the response of the blue channel. + */ + + private ushort* blue; + /*! An array of value describing the response of the green channel. + */ + private ushort* green; + + /*! An array of value describing the response of the red channel. + */ + private ushort* red; + /*! The number of elements in each array. + */ + private uint size; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWimage + { + /*! The pixel _data of this image, arranged left-to-right, top-to-bottom. + */ + + private byte* pixels; + + /*! The height, in pixels, of this image. + */ + private int height; + /*! The width, in pixels, of this image. + */ + private int width; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWgamepadstate + { + /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` + * or `GLFW_RELEASE`. + */ + + public fixed byte buttons[ 15 ]; + + /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 + * to 1.0 inclusive. + */ + public fixed float axes[ 6 ]; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWallocator + { + + private void* user; + + //GLFWallocatefun allocate; + private IntPtr allocate; + + //GLFWdeallocatefun deallocate; + private IntPtr deallocate; + + //GLFWreallocatefun reallocate; + private IntPtr reallocate; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct glfwMonitor + { + + private glfwVideomode* modes; + + private glfwWindow* window; + + private fixed byte name[ 128 ]; + private glfwGammaramp currentRamp; + + private glfwGammaramp originalRamp; + private glfwVideomode currentMode; + private int modeCount; + + private int width, height; + private IntPtr userPointer; + + public glfwMonitor() { } + + public unsafe string Name + { + get + { + fixed( byte* cptr = name ) { + return Marshal.PtrToStringAnsi( ( IntPtr )cptr ); + } + } + } + + } + + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct glfwWindow + { + + private glfwWindow* next; + private void* userPointer; + private bool rawMouseMotion; + private Callbacks callbacks; + + // Virtual cursor position when cursor is disabled + private double virtualCursorPosX, virtualCursorPosY; + private int autoIconify; + private int cursorMode; + private int decorated; + private int doublebuffer; + private int floating; + private int focusOnShow; + private int lockKeyMods; + private int maxwidth, maxheight; + + private int minwidth, minheight; + private int mousePassthrough; + private int numer, denom; + + // Window settings and state + private int resizable; + private int shouldClose; + + private int stickyKeys; + private int stickyMouseButtons; + private IntPtr cursor; // _GLFWcursor* cursor; + // glfwVideomode videoMode; // 根据GLFWvidmode的定义转换 + private IntPtr monitor; // _GLFWmonitor* monitor; + public fixed byte keys[ glConst.GLFW_KEY_LAST + 1 ]; + public fixed byte mouseButtons[ glConst.GLFW_MOUSE_BUTTON_LAST + 1 ]; + + // _GLFWcontext viewPortDisplay; // 根据_GLFWcontext的定义转换 + + // Callbacks are represented as IntPtr since we don't need the actual function pointers in C# + internal struct Callbacks + { + + internal IntPtr character; + internal IntPtr charmods; + internal IntPtr close; + internal IntPtr cursorEnter; + internal IntPtr cursorPos; + internal IntPtr drop; + internal IntPtr fbsize; + internal IntPtr focus; + internal IntPtr iconify; + internal IntPtr key; + internal IntPtr maximize; + internal IntPtr mouseButton; + internal IntPtr pos; + internal IntPtr refresh; + internal IntPtr scale; + internal IntPtr scroll; + internal IntPtr size; + + } + + // GLFW_PLATFORM_WINDOW_STATE platformWindowState; + } + + [StructLayout( LayoutKind.Sequential )] + public struct GLFWwindowCallback { } + + [StructLayout( LayoutKind.Sequential )] + public struct GLFWcursor + { + + //GLFWcursor* next; + private IntPtr next; + + // This is defined in platform.h + // not completed in tranformation + // GLFW_PLATFORM_CURSOR_STATE; + } + + /* + [StructLayout(LayoutKind.Sequential)] + public unsafe struct GLFWerror + { + //GLFWerror* next; + IntPtr next; + int code; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)glConst.GLFW_MESSAGE_SIZE)] + byte[] description = new byte[glConst.GLFW_MESSAGE_SIZE]; + + public GLFWerror() + { + } + } + */ + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWinitconfig + { + + private GLFWbool hatButtons; + + private int angleType; + private int platformID; + + //PFN_vkGetInstanceProcAddr vulkanLoader; + private IntPtr vulkanLoader; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWwndconfig + { + + private byte* title; + + private GLFWbool autoIconify; + private GLFWbool centerCursor; + private GLFWbool decorated; + private GLFWbool floating; + private GLFWbool focused; + private GLFWbool focusOnShow; + private GLFWbool maximized; + private GLFWbool mousePassthrough; + private GLFWbool resizable; + private GLFWbool scaleToMonitor; + private GLFWbool visible; + private int height; + private int width; + + private int xpos; + private int ypos; + + internal Ns ns = new Ns(); + + internal Win32 win32 = new Win32(); + + internal Wl wl = new Wl(); + + internal X11 x11 = new X11(); + + public GLFWwndconfig() { } + + internal struct Ns + { + + private GLFWbool retina = false; + public fixed byte frameName[ 256 ]; + + public Ns() { } + + } + + internal struct X11 + { + + public fixed byte className[ 256 ]; + public fixed byte instanceName[ 256 ]; + + public X11() { } + + } + + internal struct Win32 + { + + private GLFWbool keymenu; + + } + + internal struct Wl + { + + public fixed byte appId[ 256 ]; + + public Wl() { } + + } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWctxconfig + { + + private GLFWbool debug; + private GLFWbool forward; + private GLFWbool noerror; + + private int client; + private int major; + private int minor; + private int profile; + private int release; + private int robustness; + private int source; + + //glfwWindow* share; + private IntPtr share; + + internal Nsgl nsgl = new Nsgl(); + + public GLFWctxconfig() { } + + internal struct Nsgl + { + + private GLFWbool offline; + + } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWfbconfig + { + + private GLFWbool doublebuffer; + private GLFWbool sRGB; + private GLFWbool stereo; + private GLFWbool transparent; + + private int accumAlphaBits; + private int accumBlueBits; + private int accumGreenBits; + private int accumRedBits; + private int alphaBits; + private int auxBuffers; + private int blueBits; + private int depthBits; + private int greenBits; + + private int redBits; + private int samples; + private int stencilBits; + private uintptr_t handle; + + } + + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct GLFWlibrary + { + + [MarshalAs( + UnmanagedType.ByValArray, + SizeConst = glConst.GLFW_JOYSTICK_LAST + 1 )] + private GLFWjoystick[] joysticks = new GLFWjoystick[glConst.GLFW_JOYSTICK_LAST + 1]; + + private GLFWallocator allocator; + + private GLFWbool initialized; + + private GLFWbool joysticksInitialized; + private GLFWls contextSlot; + + private GLFWls errorSlot; + private GLFWmutex errorLock; + + private GLFWplatform platform; + + private int mappingCount; + + private int monitorCount; + + //GLFWcursor* cursorListHead; + private IntPtr cursorListHead; + + //GLFWerror* errorListHead; + private IntPtr errorListHead; + + //GLFWmapping* mappings; + private IntPtr mappings; + + //GLFWmonitor** monitors; + private IntPtr monitors; + + //glfwWindow* windowListHead; + private IntPtr windowListHead; + + internal Callbacks callbacks = new Callbacks(); + + internal Egl egl = new Egl(); + + internal Hints hints = new Hints(); + + internal Osmesa osmesa = new Osmesa(); + + public GLFWlibrary() { } + + internal unsafe struct Hints + { + + private GLFWctxconfig context; + private GLFWfbconfig framebuffer; + + private GLFWinitconfig init; + private GLFWwndconfig window; + private int refreshRate; + + } + + internal unsafe struct timer + { + + private ulong offset; + + // This is defined in platform.h + + //not transformed function defination + //GLFW_PLATFORM_LIBRARY_TIMER_STATE + } + + internal unsafe struct Egl + { + + internal void* display; + + internal void* handle; + + internal bool ANGLE_platform_angle; + internal bool ANGLE_platform_angle_d3d; + internal bool ANGLE_platform_angle_metal; + internal bool ANGLE_platform_angle_opengl; + internal bool ANGLE_platform_angle_vulkan; + internal bool EXT_client_extensions; + internal bool EXT_platform_base; + internal bool EXT_platform_wayland; + internal bool EXT_platform_x11; + internal bool EXT_present_opaque; + internal bool KHR_colorSpace; + internal bool KHR_context_flush_control; + + internal bool KHR_create_context; + internal bool KHR_create_context_no_error; + internal bool KHR_get_all_proc_addresses; + internal bool prefix; + internal int major, minor; + + internal int platform; + internal IntPtr BindAPI; + internal IntPtr CreateContext; + internal IntPtr CreatePlatformWindowSurfaceEXT; + internal IntPtr CreateWindowSurface; + internal IntPtr DestroyContext; + internal IntPtr DestroySurface; + + internal IntPtr GetConfigAttrib; + internal IntPtr GetConfigs; + internal IntPtr GetDisplay; + internal IntPtr GetError; + + internal IntPtr GetPlatformDisplayEXT; + internal IntPtr GetProcAddress; + internal IntPtr Initialize; + internal IntPtr MakeCurrent; + internal IntPtr QueryString; + internal IntPtr SwapBuffers; + internal IntPtr SwapInterval; + internal IntPtr Terminate; + + } + + internal unsafe struct Osmesa + { + + private void* handle; + + private IntPtr CreateContextAttribs; + + private IntPtr CreateContextExt; + private IntPtr DestroyContext; + private IntPtr GetColorBuffer; + private IntPtr GetDepthBuffer; + private IntPtr GetProcAddress; + private IntPtr MakeCurrent; + + } + + internal unsafe struct vk + { + + private void* handle; + + private GLFWbool available; + private GLFWbool EXT_metal_surface; + private GLFWbool KHR_surface; + private GLFWbool KHR_wayland_surface; + private GLFWbool KHR_win32_surface; + private GLFWbool KHR_xcb_surface; + private GLFWbool KHR_xlib_surface; + private GLFWbool MVK_macos_surface; + private IntPtr GetInstanceProcAddr; + private fixed ulong extensions[ 2 ]; + + public vk() { } + + } + + internal unsafe struct Callbacks + { + + private IntPtr joystick; + + private IntPtr monitor; + + } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWmapelement + { + + private byte index; + + private byte type; + + private sbyte axisOffset; + private sbyte axisScale; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWmapping + { + + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 6 )] + private GLFWmapelement[] axes = new GLFWmapelement[6]; + + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 15 )] + private GLFWmapelement[] buttons = new GLFWmapelement[15]; + private fixed byte guid[ 33 ]; + + private fixed byte name[ 128 ]; + + public GLFWmapping() { } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWjoystick + { + + private float* axes; + private byte* buttons; + private byte* hats; + private void* userPointer; + private fixed byte guid[ 33 ]; + private fixed byte name[ 128 ]; + + private GLFWbool allocated; + private GLFWbool connected; + private int axisCount; + private int buttonCount; + private int hatCount; + + //GLFWmapping* mapping; + private IntPtr mapping; + + // This is defined in platform.h + // not completed in transforming + // GLFW_PLATFORM_JOYSTICK_STATE; + + public GLFWjoystick() { } + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWls + { + + // This is defined in platform.h + + //GLFW_PLATFORM_TLS_STATE + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWplatform + { + + private int platformID; + + // init + //GLFWbool(*init)(void); + private IntPtr init; + + //void (* terminate) (void); + private IntPtr terminate; + internal IntPtr createCursor; + internal IntPtr createStandardCursor; + + // window + internal IntPtr createWindow; + internal IntPtr destroyCursor; + + internal IntPtr destroyWindow; + internal IntPtr focusWindow; + internal IntPtr framebufferTransparent; + + // monitor + internal IntPtr freeMonitor; + internal IntPtr getClipboardString; + + internal IntPtr getEGLNativeDisplay; + internal IntPtr getEGLNativeWindow; + + // EGL + //EGLenum(*getEGLPlatform)(EGLint**); + //EGLNativeDisplayType(*getEGLNativeDisplay)(void); + //EGLNativeWindowType(*getEGLNativeWindow)(glfwWindow*); + internal IntPtr getEGLPlatform; + internal IntPtr getFramebufferSize; + internal IntPtr getGammaRamp; + internal IntPtr getKeyScancode; + internal IntPtr getMappingName; + internal IntPtr getMonitorContentScale; + + internal IntPtr getMonitorPos; + internal IntPtr getMonitorWorkarea; + + // vulkan + //void (* getRequiredInstanceExtensions) (byte**); + //GLFWbool(*getPhysicalDevicePresentationSupport)(VkInstance, VkPhysicalDevice, uint32_t); + //VkResult(*createWindowSurface)(VkInstance, glfwWindow*,const VkAllocationCallbacks*, VkSurfaceKHR*); + internal IntPtr getRequiredInstanceExtensions; + internal IntPtr getScancodeName; + internal IntPtr getVideoMode; + internal IntPtr getVideoModes; + internal IntPtr getWindowContentScale; + internal IntPtr getWindowFrameSize; + internal IntPtr getWindowOpacity; + internal IntPtr getWindowPos; + internal IntPtr getWindowSize; + internal IntPtr GLFWwindow; + internal IntPtr hideWindow; + internal IntPtr iconifyWindow; + internal IntPtr initJoysticks; + internal IntPtr maximizeWindow; + internal IntPtr pollEvents; + internal IntPtr pollJoystick; + internal IntPtr postEmptyEvent; + internal IntPtr rawMouseMotionSupported; + internal IntPtr requestWindowAttention; + internal IntPtr restoreWindow; + internal IntPtr setClipboardString; + internal IntPtr setCursor; + internal IntPtr setCursorMode; + + #region input + + /* void (* getCursorPos) (glfwWindow*, double*, double*); + void (* setCursorPos) (glfwWindow*, double, double); + void (* setCursorMode) (glfwWindow*, int); + void (* setRawMouseMotion) (glfwWindow*, GLFWbool); + GLFWbool(*rawMouseMotionSupported)(void); + GLFWbool(*createCursor)(GLFWcursor*,const GLFWimage*,int,int); + GLFWbool(*createStandardCursor)(GLFWcursor*, int); + void (* destroyCursor) (GLFWcursor*); + void (* setCursor) (glfwWindow*, GLFWcursor*); + const byte* (*getScancodeName)(int); + int (* getKeyScancode) (int); + void (* setClipboardString) (const byte*); + const byte* (*getClipboardString)(void); + GLFWbool(*initJoysticks)(void); + void (* terminateJoysticks) (void); + GLFWbool(*pollJoystick)(GLFWjoystick*, int); + const byte* (*getMappingName)(void); + void (* updateGamepadGUID) (byte*); + // monitor + void (* freeMonitor) (GLFWmonitor*); + void (* getMonitorPos) (GLFWmonitor*, int*, int*); + void (* getMonitorContentScale) (GLFWmonitor*, float*, float*); + void (* getMonitorWorkarea) (GLFWmonitor*, int*, int*, int*, int*); + glfwVideomode* (* getVideoModes) (GLFWmonitor*, int*); + void (* getVideoMode) (GLFWmonitor*, glfwVideomode*); + GLFWbool(*getGammaRamp)(GLFWmonitor*, glfwGammaramp*); + void (* setGammaRamp) (GLFWmonitor*,const glfwGammaramp*); + // window + GLFWbool(*createWindow)(glfwWindow*,const GLFWwndconfig*,const GLFWctxconfig*,const GLFWfbconfig*); + void (* destroyWindow) (glfwWindow*); + void (* setWindowTitle) (glfwWindow*,const byte*); + void (* setWindowIcon) (glfwWindow*, int,const GLFWimage*); + void (* getWindowPos) (glfwWindow*, int*, int*); + void (* setWindowPos) (glfwWindow*, int, int); + void (* getWindowSize) (glfwWindow*, int*, int*); + void (* setWindowSize) (glfwWindow*, int, int); + void (* setWindowSizeLimits) (glfwWindow*, int, int, int, int); + void (* setWindowAspectRatio) (glfwWindow*, int, int); + void (* getFramebufferSize) (glfwWindow*, int*, int*); + void (* getWindowFrameSize) (glfwWindow*, int*, int*, int*, int*); + void (* getWindowContentScale) (glfwWindow*, float*, float*); + void (* iconifyWindow) (glfwWindow*); + void (* restoreWindow) (glfwWindow*); + void (* maximizeWindow) (glfwWindow*); + void (* showWindow) (glfwWindow*); + void (* hideWindow) (glfwWindow*); + void (* requestWindowAttention) (glfwWindow*); + void (* focusWindow) (glfwWindow*); + void (* setWindowMonitor) (glfwWindow*, GLFWmonitor*, int, int, int, int, int); + GLFWbool(*windowFocused)(glfwWindow*); + GLFWbool(*windowIconified)(glfwWindow*); + GLFWbool(*windowVisible)(glfwWindow*); + GLFWbool(*windowMaximized)(glfwWindow*); + GLFWbool(*windowHovered)(glfwWindow*); + GLFWbool(*framebufferTransparent)(glfwWindow*); + float (* getWindowOpacity) (glfwWindow*); + void (* setWindowResizable) (glfwWindow*, GLFWbool); + void (* setWindowDecorated) (glfwWindow*, GLFWbool); + void (* setWindowFloating) (glfwWindow*, GLFWbool); + void (* setWindowOpacity) (glfwWindow*, float); + void (* setWindowMousePassthrough) (glfwWindow*, GLFWbool); + void (* pollEvents) (void); + void (* waitEvents) (void); + void (* waitEventsTimeout) (double); + void (* postEmptyEvent) (void); + */ + + #endregion + + internal IntPtr setCursorPos; + internal IntPtr setGammaRamp; + internal IntPtr setRawMouseMotion; + internal IntPtr setWindowAspectRatio; + internal IntPtr setWindowDecorated; + internal IntPtr setWindowFloating; + internal IntPtr setWindowIcon; + internal IntPtr setWindowMonitor; + internal IntPtr setWindowMousePassthrough; + internal IntPtr setWindowOpacity; + internal IntPtr setWindowPos; + internal IntPtr setWindowResizable; + internal IntPtr setWindowSize; + internal IntPtr setWindowSizeLimits; + internal IntPtr setWindowTitle; + internal IntPtr showWindow; + internal IntPtr terminateJoysticks; + internal IntPtr updateGamepadGUID; + + internal IntPtr VkPhysicalDevice; + internal IntPtr waitEvents; + internal IntPtr waitEventsTimeout; + internal IntPtr windowFocused; + internal IntPtr windowHovered; + internal IntPtr windowIconified; + internal IntPtr windowMaximized; + internal IntPtr windowVisible; + + } + + [StructLayout( LayoutKind.Sequential )] + public unsafe struct GLFWmutex + { + + // This is defined in platform.h + //GLFW_PLATFORM_MUTEX_STATE + } + + //public unsafe struct VkAllocationCallbacks { } + + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct VkExtensionProperties + { + + private fixed byte extensionName[ 256 ]; + private uint specVersion; + + public VkExtensionProperties() { } + + } + + /* + [StructLayout(LayoutKind.Sequential)] + internal unsafe struct GLFWerror + { + IntPtr next; + int code; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] + byte[] description = new byte[1024]; + + public GLFWerror() + { + } + } + */ + + [StructLayout( LayoutKind.Explicit, Size = 16 )] + public struct uintptr_t + { + + [FieldOffset( 0 )] + private long part1; + + [FieldOffset( 8 )] + private long part2; + + } + + #endregion GLFW3 struct + + #region glad struct + + [StructLayout( LayoutKind.Sequential )] + internal struct GLsync + { + + public IntPtr Handle; + + } + + #endregion glad struct +} + +/**/ \ No newline at end of file diff --git a/StgSharp.Common/Internal/glfw.cs b/StgSharp.Common/Internal/glfw.cs new file mode 100644 index 00000000..0e479914 --- /dev/null +++ b/StgSharp.Common/Internal/glfw.cs @@ -0,0 +1,594 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glfw.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.Graphics; + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Internal +{ + internal partial class InternalIO + { + + #region api call + + [LibraryImport( SSC_libName, EntryPoint = "glfwInit" )] + internal static unsafe partial int glfwInit(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwTerminate" )] + internal static unsafe partial void glfwTerminate(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwInitHint" )] + internal static unsafe partial void glfwInitHint( int hint, int value ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetVersion" )] + internal static unsafe partial void glfwGetVersion( + int* major, + int* minor, + int* rev ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetVersionString" )] + internal static unsafe partial byte* glfwGetVersionString(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetError" )] + internal static unsafe partial int glfwGetError( byte** description ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetErrorCallback" )] + internal static unsafe partial GLFWerrorfun glfwSetErrorCallback( + GLFWerrorfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitors" )] + internal static unsafe partial IntPtr* glfwGetMonitors( int* count ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetPrimaryMonitor" )] + internal static unsafe partial IntPtr glfwGetPrimaryMonitor(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorPos" )] + internal static unsafe partial void glfwGetMonitorPos( + IntPtr monitor, + int* xpos, + int* ypos ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorWorkarea" )] + internal static unsafe partial void glfwGetMonitorWorkarea( + IntPtr monitor, + int* xpos, + int* ypos, + int* width, + int* height ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorPhysicalSize" )] + internal static unsafe partial void glfwGetMonitorPhysicalSize( + IntPtr monitor, + int* widthMM, + int* heightMM ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorContentScale" )] + internal static unsafe partial void glfwGetMonitorContentScale( + IntPtr monitor, + float* xscale, + float* yscale ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorName" )] + internal static unsafe partial byte* glfwGetMonitorName( + IntPtr monitor ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetMonitorUserPointer" )] + internal static unsafe partial void glfwSetMonitorUserPointer( + IntPtr monitor, + void* pointer ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorUserPointer" )] + internal static unsafe partial void* glfwGetMonitorUserPointer( + IntPtr monitor ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetMonitorCallback" )] + internal static unsafe partial GLFWmonitorfun glfwSetMonitorCallback( + GLFWmonitorfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetVideoModes" )] + internal static unsafe partial glfwVideomode* glfwGetVideoModes( + IntPtr monitor, + int* count ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetVideoMode" )] + internal static unsafe partial glfwVideomode* glfwGetVideoMode( + IntPtr monitor ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetGamma" )] + internal static unsafe partial void glfwSetGamma( + IntPtr monitor, + float gamma ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetGammaRamp" )] + internal static unsafe partial glfwGammaramp* glfwGetGammaRamp( + IntPtr monitor ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetGammaRamp" )] + internal static unsafe partial void glfwSetGammaRamp( + IntPtr monitor, + glfwGammaramp* ramp ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwDefaultWindowHints" )] + internal static unsafe partial void glfwDefaultWindowHints(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwWindowHint" )] + internal static unsafe partial void glfwWindowHint( + int hint, + int value ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwWindowHintString" )] + internal static unsafe partial void glfwWindowHintString( + int hint, + byte* value ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwCreateWindow" )] + internal static unsafe partial IntPtr glfwCreateWindow( + int width, + int height, + byte[] title, + IntPtr monitor, + IntPtr share ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwDestroyWindow" )] + internal static unsafe partial void glfwDestroyWindow( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwWindowShouldClose" )] + internal static unsafe partial int glfwWindowShouldClose( + IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowShouldClose" )] + internal static unsafe partial void glfwSetWindowShouldClose( + IntPtr window, + int value ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowTitle" )] + internal static unsafe partial void glfwSetWindowTitle( + IntPtr window, + byte* title ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowIcon" )] + internal static unsafe partial void glfwSetWindowIcon( + IntPtr window, + int count, + GLFWimage* images ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowPos" )] + internal static unsafe partial void glfwGetWindowPos( + IntPtr window, + int* xpos, + int* ypos ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowPos" )] + internal static unsafe partial void glfwSetWindowPos( + IntPtr window, + int xpos, + int ypos ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowSize" )] + internal static unsafe partial void glfwGetWindowSize( + IntPtr window, + int* width, + int* height ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSizeLimits" )] + internal static unsafe partial void glfwSetWindowSizeLimits( + IntPtr window, + int minwidth, + int minheight, + int maxwidth, + int maxheight ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowAspectRatio" )] + internal static unsafe partial void glfwSetWindowAspectRatio( + IntPtr window, + int numer, + int denom ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSize" )] + internal static unsafe partial void glfwSetWindowSize( + IntPtr window, + int width, + int height ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetFramebufferSize" )] + internal static unsafe partial void glfwGetFramebufferSize( + IntPtr window, + int* width, + int* height ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowFrameSize" )] + internal static unsafe partial void glfwGetWindowFrameSize( + IntPtr window, + int* left, + int* top, + int* right, + int* bottom ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowContentScale" )] + internal static unsafe partial void glfwGetWindowContentScale( + IntPtr window, + float* xscale, + float* yscale ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowOpacity" )] + internal static unsafe partial float glfwGetWindowOpacity( + IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowOpacity" )] + internal static unsafe partial void glfwSetWindowOpacity( + IntPtr window, + float opacity ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwIconifyWindow" )] + internal static unsafe partial void glfwIconifyWindow( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwRestoreWindow" )] + internal static unsafe partial void glfwRestoreWindow( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwMaximizeWindow" )] + internal static unsafe partial void glfwMaximizeWindow( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwShowWindow" )] + internal static unsafe partial void glfwShowWindow( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwHideWindow" )] + internal static unsafe partial void glfwHideWindow( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwFocusWindow" )] + internal static unsafe partial void glfwFocusWindow( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwRequestWindowAttention" )] + internal static unsafe partial void glfwRequestWindowAttention( + IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowMonitor" )] + internal static unsafe partial IntPtr glfwGetWindowMonitor( + IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowMonitor" )] + internal static unsafe partial void glfwSetWindowMonitor( + IntPtr window, + IntPtr monitor, + int xpos, + int ypos, + int width, + int height, + int refreshRate ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowAttrib" )] + internal static unsafe partial int glfwGetWindowAttrib( + IntPtr window, + int attrib ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowAttrib" )] + internal static unsafe partial void glfwSetWindowAttrib( + IntPtr window, + int attrib, + int value ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowUserPointer" )] + internal static unsafe partial void glfwSetWindowUserPointer( + IntPtr window, + void* pointer ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowUserPointer" )] + internal static unsafe partial void* glfwGetWindowUserPointer( + IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowPosCallback" )] + internal static unsafe partial GLFWwindowposfun glfwSetWindowPosCallback( + IntPtr window, + IntPtr callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSizeCallback" )] + internal static unsafe partial GLFWwindowsizefun glfwSetWindowSizeCallback( + IntPtr window, + GLFWwindowsizefun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowCloseCallback" )] + internal static unsafe partial GLFWwindowclosefun glfwSetWindowCloseCallback( + IntPtr window, + GLFWwindowclosefun callback ); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwSetWindowRefreshCallback" )] + internal static unsafe partial GLFWwindowrefreshfun glfwSetWindowRefreshCallback( + IntPtr window, + GLFWwindowrefreshfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowFocusCallback" )] + internal static unsafe partial GLFWwindowfocusfun glfwSetWindowFocusCallback( + IntPtr window, + GLFWwindowfocusfun callback ); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwSetWindowIconifyCallback" )] + internal static unsafe partial GLFWwindowiconifyfun glfwSetWindowIconifyCallback( + IntPtr window, + GLFWwindowiconifyfun callback ); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwSetWindowMaximizeCallback" )] + internal static unsafe partial GLFWwindowmaximizefun glfwSetWindowMaximizeCallback( + IntPtr window, + GLFWwindowmaximizefun callback ); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwSetFramebufferSizeCallback" )] + internal static unsafe partial FrameBufferSizeHandler glfwSetFramebufferSizeCallback( + IntPtr window, + IntPtr callback ); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwSetWindowContentScaleCallback" )] + internal static unsafe partial GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback( + IntPtr window, + GLFWwindowcontentscalefun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwPollEvents" )] + internal static unsafe partial void glfwPollEvents(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwWaitEvents" )] + internal static unsafe partial void glfwWaitEvents(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwWaitEventsTimeout" )] + internal static unsafe partial void glfwWaitEventsTimeout( + double timeout ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwPostEmptyEvent" )] + internal static unsafe partial void glfwPostEmptyEvent(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetInputMode" )] + internal static unsafe partial int glfwGetInputMode( + IntPtr window, + int mode ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetInputMode" )] + internal static unsafe partial void glfwSetInputMode( + IntPtr window, + int mode, + int value ); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwRawMouseMotionSupported" )] + internal static unsafe partial int glfwRawMouseMotionSupported(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetKeyName" )] + internal static unsafe partial byte* glfwGetKeyName( + int key, + int scancode ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetKeyScancode" )] + internal static unsafe partial int glfwGetKeyScancode( int key ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetKey" )] + internal static unsafe partial KeyStatus glfwGetKey( + IntPtr window, + int key ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetMouseButton" )] + internal static unsafe partial int glfwGetMouseButton( + IntPtr window, + int button ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetCursorPos" )] + internal static unsafe partial void glfwGetCursorPos( + IntPtr window, + double* xpos, + double* ypos ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorPos" )] + internal static unsafe partial void glfwSetCursorPos( + IntPtr window, + double xpos, + double ypos ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwCreateCursor" )] + internal static unsafe partial GLFWcursor* glfwCreateCursor( + GLFWimage* image, + int xhot, + int yhot ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwCreateStandardCursor" )] + internal static unsafe partial GLFWcursor* glfwCreateStandardCursor( + int shape ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwDestroyCursor" )] + internal static unsafe partial void glfwDestroyCursor( + GLFWcursor* cursor ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursor" )] + internal static unsafe partial void glfwSetCursor( + IntPtr window, + GLFWcursor* cursor ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetKeyCallback" )] + internal static unsafe partial GLFWkeyfun glfwSetKeyCallback( + IntPtr window, + GLFWkeyfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetCharCallback" )] + internal static unsafe partial GLFWcharfun glfwSetCharCallback( + IntPtr window, + GLFWcharfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetCharModsCallback" )] + internal static unsafe partial GLFWcharmodsfun glfwSetCharModsCallback( + IntPtr window, + GLFWcharmodsfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetMouseButtonCallback" )] + internal static unsafe partial GLFWmousebuttonfun glfwSetMouseButtonCallback( + IntPtr window, + GLFWmousebuttonfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorPosCallback" )] + internal static unsafe partial GLFWcursorposfun glfwSetCursorPosCallback( + IntPtr window, + GLFWcursorposfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorEnterCallback" )] + internal static unsafe partial GLFWcursorenterfun glfwSetCursorEnterCallback( + IntPtr window, + GLFWcursorenterfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetScrollCallback" )] + internal static unsafe partial GLFWscrollfun glfwSetScrollCallback( + IntPtr window, + GLFWscrollfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetDropCallback" )] + internal static unsafe partial GLFWdropfun glfwSetDropCallback( + IntPtr window, + GLFWdropfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwJoystickPresent" )] + internal static unsafe partial int glfwJoystickPresent( int jid ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickAxes" )] + internal static unsafe partial float* glfwGetJoystickAxes( + int jid, + int* count ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickButtons" )] + internal static unsafe partial byte* glfwGetJoystickButtons( + int jid, + int* count ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickHats" )] + internal static unsafe partial byte* glfwGetJoystickHats( + int jid, + int* count ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickName" )] + internal static unsafe partial byte* glfwGetJoystickName( int jid ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickGUID" )] + internal static unsafe partial byte* glfwGetJoystickGUID( int jid ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetJoystickUserPointer" )] + internal static unsafe partial void glfwSetJoystickUserPointer( + int jid, + void* pointer ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickUserPointer" )] + internal static unsafe partial void* glfwGetJoystickUserPointer( + int jid ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwJoystickIsGamepad" )] + internal static unsafe partial int glfwJoystickIsGamepad( int jid ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetJoystickCallback" )] + internal static unsafe partial GLFWjoystickfun glfwSetJoystickCallback( + GLFWjoystickfun callback ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwUpdateGamepadMappings" )] + internal static unsafe partial int glfwUpdateGamepadMappings( + byte* str ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetGamepadName" )] + internal static unsafe partial byte* glfwGetGamepadName( int jid ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetGamepadState" )] + internal static unsafe partial int glfwGetGamepadState( + int jid, + GLFWgamepadstate* state ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetClipboardString" )] + internal static unsafe partial void glfwSetClipboardString( + IntPtr window, + byte* str ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetClipboardString" )] + internal static unsafe partial byte* glfwGetClipboardString( + IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetTime" )] + internal static unsafe partial double glfwGetTime(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSetTime" )] + internal static unsafe partial void glfwSetTime( double time ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetTimerValue" )] + internal static unsafe partial ulong* glfwGetTimerValue(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetTimerFrequency" )] + internal static unsafe partial ulong* glfwGetTimerFrequency(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwMakeContextCurrent" )] + internal static unsafe partial void glfwMakeContextCurrent( + IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwGetCurrentContext" )] + internal static unsafe partial IntPtr glfwGetCurrentContext(); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSwapBuffers" )] + internal static unsafe partial void glfwSwapBuffers( IntPtr window ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwSwapInterval" )] + internal static unsafe partial void glfwSwapInterval( int interval ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwExtensionSupported" )] + internal static unsafe partial int glfwExtensionSupported( + byte* extension ); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwGetProcAddress", + StringMarshalling = StringMarshalling.Utf8 )] + internal static unsafe partial IntPtr glfwGetProcAddress( + string procname ); + + [LibraryImport( SSC_libName, EntryPoint = "glfwVulkanSupported" )] + internal static unsafe partial int glfwVulkanSupported(); + + [LibraryImport( + SSC_libName, + EntryPoint = "glfwGetRequiredInstanceExtensions" )] + internal static unsafe partial byte** glfwGetRequiredInstanceExtensions( + uint* count ); + + //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetInstanceProcAddress")] internal unsafe partial static GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, byte* procname); + //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetPhysicalDevicePresentationSupport")] internal unsafe partial static int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint* queuefamily); + //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwCreateWindowSurface")] internal unsafe partial static VkResult glfwCreateWindowSurface(VkInstance instance, glfwWindow* window, VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); + + #endregion api call + } +} diff --git a/StgSharp.Common/Internal/publicType.cs b/StgSharp.Common/Internal/publicType.cs new file mode 100644 index 00000000..8aaf866c --- /dev/null +++ b/StgSharp.Common/Internal/publicType.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="publicType.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp +{ + public enum LogType + { + + Error, + Warning, + Info, + InfoError, + InfoWarning, + + } +} diff --git a/StgSharp.Common/Logic/Blueprint/Blueprint.cs b/StgSharp.Common/Logic/Blueprint/Blueprint.cs new file mode 100644 index 00000000..e4540b9c --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/Blueprint.cs @@ -0,0 +1,188 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintSchedueler.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; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Xml.Serialization; + +namespace StgSharp.Blueprint +{ + /// + /// A sets of complex logic designed for running in multi threads environment. Warning: do not + /// run a instance in multi threads more than once. + /// + public partial class BlueprintSchedueler : IConvertableToBlueprintNode + { + + private BeginningNode beginNode; + private Dictionary allNode; + private EndingNode endNode; + + private Func terminate; + private List globalNodeList; + private List nativeNodeList; + + private SemaphoreSlim runningStat; + + internal int currentGlobalNodeIndex; + internal int currentNativeNodeIndex; + + public BlueprintSchedueler() + { + allNode = new Dictionary(); + globalNodeList = new List(); + nativeNodeList = new List(); + runningStat = new SemaphoreSlim( 1, 1 ); + beginNode = new BeginningNode( this ); + endNode = new EndingNode( this ); + } + + public BlueprintNode BeginLayer => beginNode; + + public BlueprintNode EndLayer => endNode; + + public bool IsRunning + { + get => runningStat.CurrentCount == 0; + } + + public ReadOnlySpan InputInterfacesName + { + get { return beginNode.OutputInterfaces + .Select( p => p.Key ) + .ToArray(); } + } + + public ReadOnlySpan OutputInterfacesName + { + get { return beginNode.OutputInterfaces + .Select( p => p.Key ) + .ToArray(); } + } + + /**/ + + internal SemaphoreSlim RunningStat + { + get => runningStat; + } + /**/ + + public void AddNode( BlueprintNode node, bool isNative ) + { + _ = node ?? throw new ArgumentNullException( nameof( node ) ); + node.IsNative = isNative; + allNode.Add( node.Name, node ); + } + + + public void ExecuteMain( + in Dictionary input, + in Dictionary output ) + { + BlueprintRunner.Run( this ); + } + + public BlueprintNodeOperation Operation + { + get => ExecuteMain; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public (string name, BlueprintPipelineArgs arg)[] GetOutput() + { + return endNode.OutputData; + } + + public void Init() + { + foreach( KeyValuePair item in allNode ) { + if( item.Value.IsNative ) { + nativeNodeList.Add( item.Value ); + } else { + globalNodeList.Add( item.Value ); + } + } + nativeNodeList.Sort(); + globalNodeList.Sort(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetInput( + params (string name, BlueprintPipelineArgs arg)[] parameters ) + { + beginNode.InputData = parameters; + } + + public void Terminate() + { + Interlocked.Exchange( ref currentGlobalNodeIndex, int.MaxValue ); + Interlocked.Exchange( ref currentNativeNodeIndex, int.MaxValue ); + } + + internal bool RequestNexGlobalNode( out BlueprintNode node ) + { + if( currentGlobalNodeIndex < globalNodeList.Count ) { + node = globalNodeList[ currentGlobalNodeIndex ]; + Interlocked.Increment( ref currentGlobalNodeIndex ); + return true; + } + node = default!; + return false; + } + + internal bool RequestNextNativeNode( out BlueprintNode node ) + { + if( currentNativeNodeIndex < nativeNodeList.Count ) { + node = nativeNodeList[ currentNativeNodeIndex ]; + Interlocked.Increment( ref currentNativeNodeIndex ); + return true; + } + node = default!; + return false; + } + + ~BlueprintSchedueler() + { + runningStat.Dispose(); + } + + } +} diff --git a/StgSharp.Common/Logic/Blueprint/BlueprintNode.cs b/StgSharp.Common/Logic/Blueprint/BlueprintNode.cs new file mode 100644 index 00000000..7e198ba1 --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/BlueprintNode.cs @@ -0,0 +1,303 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintNode.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.Entities; + +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.Serialization; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + /// + /// + /// + /// + /// Reset pipeline has risk, this operation is a direct operation to port in current node, the + /// port on the other node cannot get the change. + /// +#pragma warning disable CA1036 + public class BlueprintNode : IComparable + #pragma warning restore CA1036 + { + + private static BlueprintNode _emptyNode = new BlueprintNode( + string.Empty, null!, false ); + + private static Dictionary _emptyLayer = new(); + private protected bool _levelAvailable, _nativeRequested; + private protected Dictionary _inputInterfaces; + private protected Dictionary _outputInterfaces; + private protected int _level; + private IConvertableToBlueprintNode _mainOperation; + private string _name; + + internal BlueprintNode( + string name, + IConvertableToBlueprintNode node, + bool isNative ) + { + _levelAvailable = false; + _name = name; + _nativeRequested = isNative; + _mainOperation = node; + _inputInterfaces = new Dictionary(); + _outputInterfaces = new Dictionary(); + foreach( string portName in node.InputInterfacesName ) { + _inputInterfaces.Add( portName, null! ); + } + + foreach( string portName in node.OutputInterfacesName ) { + _outputInterfaces.Add( portName, null! ); + } + } + + #pragma warning disable CS8618 + internal BlueprintNode( + BlueprintNodeOperation operation, + string name, + bool isNative, + string[] inputPorts, + string[] outputPorts ) + #pragma warning restore CS8618 + { + if( ( inputPorts == null ) || ( inputPorts.Length == 0 ) ) { + throw new ArgumentNullException( nameof( inputPorts ) ); + } + if( ( outputPorts == null ) || ( outputPorts.Length == 0 ) ) { + throw new ArgumentNullException( nameof( outputPorts ) ); + } + _levelAvailable = false; + _name = name; + _nativeRequested = isNative; + operation = operation ?? DefaultOperation; + _mainOperation = new DefaultConvertableToBlueprintNode( + operation, + inputPorts, + outputPorts); + _inputInterfaces = new Dictionary(); + _outputInterfaces = new Dictionary(); + foreach( string portName in inputPorts ) { + _inputInterfaces.Add( + portName, + SealedBlueprintPiipeline.SealOutput( this, name ) ); + } + foreach( string portName in outputPorts ) { + _outputInterfaces.Add( portName, null! ); + } + } + + protected static void DefaultOperation( + in Dictionary input, + in Dictionary output) + { + BlueprintPipeline.SkipAll(output); + } + + public static BlueprintNode Empty + { + get => _emptyNode; + } + + public bool IsNative + { + get => _nativeRequested; + internal set => _nativeRequested = value; + } + + public static Dictionary EmptyPortLayer + { + get => _emptyLayer; + } + + public int Level + { + get + { + if( _levelAvailable ) { + return _level; + } + _level = 0; + foreach( KeyValuePair item in _inputInterfaces ) { + if( item.Value == null ) { + continue; + } + if( _level < item.Value.Level ) { + _level = item.Value.Level; + } + } + _level += 1; + _levelAvailable = true; + return _level; + } + } + + public string Name => _name; + + internal Dictionary InputInterfaces => _inputInterfaces; + + internal Dictionary OutputInterfaces => _outputInterfaces; + + internal IConvertableToBlueprintNode Value + { + get => _mainOperation; + } + + public void Append( + [NotNull] BlueprintNode next, + string thisOutputPortName, + string afterInputPortName ) + { + this._levelAvailable = false; + BlueprintPipeline pipeline = new BlueprintPipeline( this, next ); + if( next is EndingNode enode ) { + enode.SetCertainInputPort( afterInputPortName, pipeline ); + } else { + next.SetCertainInputPort( afterInputPortName, pipeline ); + } + SetCertainOutputPort( thisOutputPortName, pipeline ); + } + + public int CompareTo( BlueprintNode other ) + { + if( null == other ) { + throw new ArgumentNullException( nameof( other ) ); + } + + return this.Level.CompareTo( other.Level ); + } + + public void Prepend( + [NotNull] BlueprintNode former, + string formerOutputPortName, + string thisInputPortName ) + { + this._levelAvailable = false; + BlueprintPipeline pipeline = new BlueprintPipeline( former, this ); + if( former is BeginningNode bnode ) { + bnode.SetCertainOutputPort( formerOutputPortName, pipeline ); + } else { + former.SetCertainOutputPort( formerOutputPortName, pipeline ); + } + SetCertainInputPort( thisInputPortName, pipeline ); + } + + public virtual void Run() + { + try { + //Console.WriteLine(_name); + BlueprintPipeline.WaitAll( _inputInterfaces ); + if( _mainOperation != null ) { + _mainOperation.Operation( + in _inputInterfaces, in _outputInterfaces ); + } + } + catch( Exception ) { + throw; + } + } + + #region port operation + + public BlueprintPipeline GetInputPort( string name ) + { + BlueprintPipeline ret; + if( !_inputInterfaces.TryGetValue( name, out ret ) ) { + throw new ArgumentOutOfRangeException( + $"Cannot find the interface named {name} in node {Name}." ); + } + return ret; + } + + public BlueprintPipeline GetOutputPort( string name ) + { + BlueprintPipeline ret; + if( !_outputInterfaces.TryGetValue( name, out ret ) ) { + throw new ArgumentOutOfRangeException( + $"Cannot find the interface named {name} in node {Name}." ); + } + return ret; + } + + public void SetCertainInputPort( + string name, + BlueprintPipeline pipeline ) + { + if( !_inputInterfaces.ContainsKey( name ) ) { + throw new ArgumentException( + $"Cannot find the interface named {name} in node {Name}." ); + } + _inputInterfaces[ name ] = pipeline; + } + + public void SetCertainOutputPort( + string name, + BlueprintPipeline pipeline ) + { + if( !_outputInterfaces.ContainsKey( name ) ) { + throw new ArgumentOutOfRangeException( + $"Cannot find the interface named {name} in node {Name}." ); + } + _outputInterfaces[ name ] = pipeline; + } + + #endregion + }//--------------------------------- end of class ----------------------------------- + + public class BlueprintNodeRunException : Exception + { + + protected BlueprintNodeRunException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } + + public BlueprintNodeRunException() { } + + public BlueprintNodeRunException( Exception ex ) + : base( string.Empty, ex ) { } + + public BlueprintNodeRunException( string message ) : base( message ) { } + + public BlueprintNodeRunException( + string message, + Exception innerException ) + : base( message, innerException ) { } + + } +} diff --git a/StgSharp.Common/Logic/Blueprint/BlueprintNodeCraeater.cs b/StgSharp.Common/Logic/Blueprint/BlueprintNodeCraeater.cs new file mode 100644 index 00000000..0f6826a2 --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/BlueprintNodeCraeater.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintNodeCraeater.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.Text; + +namespace StgSharp.Blueprint +{ + public partial class BlueprintSchedueler + { + + public BlueprintNode CreateBlueprintNode( + string name, + BlueprintNodeOperation operation, + string[] inputPort, + string[] outputPort, + bool isNative ) + { + BlueprintNode node = new BlueprintNode( + operation, name, isNative, inputPort, outputPort ); + if( isNative ) { + nativeNodeList.Add( node ); + } else { + globalNodeList.Add( node ); + } + return node; + } + + } +} diff --git a/StgSharp.Common/Logic/Blueprint/BlueprintRunner.cs b/StgSharp.Common/Logic/Blueprint/BlueprintRunner.cs new file mode 100644 index 00000000..e2209255 --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/BlueprintRunner.cs @@ -0,0 +1,226 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BlueprintRunner.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.Threading; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; + +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + public static class BlueprintRunner + { + + private static NodeRunner[] allAvailableTask = CreateBlueprintRunnerArray(); + private static CancellationTokenSource cts = new CancellationTokenSource(); + private static ConcurrentStack blueprintInWaiting + = new ConcurrentStack(); + private static int _callingThread; + private static SemaphoreSlim bpLock = new SemaphoreSlim( 0, 1 ); + + private static NodeRunner[] CreateBlueprintRunnerArray() + { + int count = Environment.ProcessorCount; + return new NodeRunner[ count < 2 ? count : count - 2]; + } + + /// + /// Only the fallowing occasions of calling are valid: + /// 1. no bp is running or the only bp is quitting. + /// 2. calling from the main thread and the current running bp. + /// + internal static bool IsValidCalling + { + get + { + if( ( NodeRunner.CurrentBlueprint == null ) || //no bp running at all + ( ( blueprintInWaiting.IsEmpty ) && ( NodeRunner.CurrentBlueprint.IsRunning == false ) ) ) + // a bp is quiting + { + //in case no bp is running + return true; + } + int? id = Task.CurrentId; + if( id is null ) { + // in case calling from main thread and current running bp + return _callingThread == Environment.CurrentManagedThreadId; + } + foreach( NodeRunner item in allAvailableTask ) { + if( item.Id == id ) { + //if calling from any bp running task + return true; + } + } + return false; + } + } + + public static void Run(BlueprintSchedueler blueprint) + { + //Console.WriteLine(); + if( blueprint == null ) { + return; + } + if( blueprint.IsRunning ) { + throw new InvalidOperationException( + "Attempt to run a blueprint instance twice." ); + } + if( IsValidCalling ) { + //Console.WriteLine("valid and run"); + if( InterruptAndRunNewBp( blueprint ) ) { + while (InterruptAndRunNewBp( + NodeRunner.CurrentBlueprint )){ }; + } + } else { + bpLock.Wait(); + if( InterruptAndRunNewBp( blueprint ) ) { + while (InterruptAndRunNewBp( + NodeRunner.CurrentBlueprint)) { } + } + + bpLock.Release(); + } + Interlocked.Exchange( ref _callingThread, -1 ); + } + + public static void SetMaxTaskCount( int size ) + { + if( size < 1 ) { + size = 1; + } + if( allAvailableTask.Length >= size ) { + for( int i = size; i < allAvailableTask.Length; i++ ) { + if( allAvailableTask[ i ] != null ) { + allAvailableTask[ i ].Cancel(); + } + } + } + Array.Resize( ref allAvailableTask, size ); + } + + public static void Terminate() + { + cts.Cancel(); + NodeRunner.CurrentBlueprint.Terminate(); + foreach( NodeRunner task in allAvailableTask ) { + task.Cts.Cancel(); + } + foreach( BlueprintSchedueler bp in blueprintInWaiting ) { + bp.Terminate(); + } + blueprintInWaiting.Clear(); + } + + internal static bool InterruptAndRunNewBp( BlueprintSchedueler newBp ) + { + Debug.Assert( newBp != null ); + if( ( newBp != NodeRunner.CurrentBlueprint ) && ( NodeRunner.CurrentBlueprint != null ) ) { + //if a running bp exists + blueprintInWaiting.Push( NodeRunner.CurrentBlueprint ); + } + + //load new bp to current bp + Interlocked.Exchange( ref NodeRunner.CurrentBlueprint!, newBp ); + Interlocked.Exchange( + ref _callingThread, Environment.CurrentManagedThreadId ); + + //run beginning node to init it first. + if( !NodeRunner.CurrentBlueprint.IsRunning ) { + ( NodeRunner.CurrentBlueprint.BeginLayer as BeginningNode )!.Run(); + } + + //refresh all tasks + for( int i = 0; i < allAvailableTask.Length; i++ ) { + NodeRunner item = allAvailableTask[ i ]; + if( ( item is null ) || item.IsCompleted ) { + allAvailableTask[ i ] = NodeRunner.Run(); + } + } + BlueprintNode node; + while( !cts.Token.IsCancellationRequested && NodeRunner.CurrentBlueprint + .RequestNextNativeNode( out node ) ) { + node.Run(); + if( !NodeRunner.CurrentBlueprint.IsRunning ) { + break; + } + } + ( NodeRunner.CurrentBlueprint.EndLayer as EndingNode )!.Run(); + return blueprintInWaiting.TryPeek( out NodeRunner.CurrentBlueprint ); + } + + } + + internal class NodeRunner : CancellableTask + { + + private static BlueprintSchedueler _current; + + internal NodeRunner() + : base() + { + _startup = InternalRun; + } + + internal static ref BlueprintSchedueler CurrentBlueprint + { + get => ref _current; + } + + internal static NodeRunner Run() + { + NodeRunner ret = new NodeRunner { _startup = InternalRun }; + ret._internalTask = Task.Run( ret.InternalAction ); + return ret; + } + + private static void InternalRun( CancellationToken token ) + { + //Console.WriteLine("Task Begin"); + BlueprintNode item; + while( ( CurrentBlueprint != null ) && CurrentBlueprint.IsRunning && !token.IsCancellationRequested && CurrentBlueprint.RequestNexGlobalNode( + out item ) ) { + //Console.WriteLine($"Get node of {item.Name}, going to run."); + item.Run(); + } + + //Console.WriteLine("Task Completed"); + } + + }//------------------------------------- End of Class ------------------------------------------ +} diff --git a/StgSharp.Common/Logic/Blueprint/CrossFrameBlueprintNode.cs b/StgSharp.Common/Logic/Blueprint/CrossFrameBlueprintNode.cs new file mode 100644 index 00000000..56039604 --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/CrossFrameBlueprintNode.cs @@ -0,0 +1,91 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CrossFrameBlueprintNode.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.Blueprint; + +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + public class CrossFrameOperation : IConvertableToBlueprintNode + { + private int currentCount; + private readonly int cycleCount; + private Action _mainExecution; + + public CrossFrameOperation( Action startup, int cycleCount ) + { + MainExecution = startup; + this.cycleCount = ( cycleCount > 1 ) ? + cycleCount : throw new ArgumentException( + $"{$"The {typeof(CrossFrameOperation).Name} crosses only one cycle, "}{$"please use a {typeof(BlueprintNode).Name} instead."}" ); + this.cycleCount = cycleCount; + currentCount = cycleCount; + } + + public Action MainExecution + { + get => _mainExecution; + private protected set => _mainExecution = value; + } + + private static string[] _inputName = ["TaskIn"]; + private static string[] _outputName = ["TaskOut"]; + + public BlueprintNodeOperation Operation + { + get => ExecuteMain; + } + + public void ExecuteMain( + in Dictionary input, + in Dictionary output ) + { + if( currentCount < cycleCount ) { + Interlocked.Increment( ref currentCount ); + } else { + Interlocked.Exchange( ref currentCount, 0 ); + Task.Run( MainExecution ); + } + + //Console.WriteLine(currentCount); + BlueprintPipeline.SkipAll( output ); + } + + public ReadOnlySpan InputInterfacesName => _inputName; + + public ReadOnlySpan OutputInterfacesName => _outputName; + + } +} diff --git a/StgSharp.Common/Logic/Blueprint/IConvertableToBlueprintNode.cs b/StgSharp.Common/Logic/Blueprint/IConvertableToBlueprintNode.cs new file mode 100644 index 00000000..0b58561e --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/IConvertableToBlueprintNode.cs @@ -0,0 +1,82 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IConvertableToBlueprintNode.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.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Blueprint +{ + public delegate void BlueprintNodeOperation( + in Dictionary input, + in Dictionary output ); + + public interface IConvertableToBlueprintNode + { + public ReadOnlySpan InputInterfacesName + { + get; + } + + public ReadOnlySpan OutputInterfacesName + { + get; + } + + BlueprintNodeOperation Operation { get; } + + } + + internal class DefaultConvertableToBlueprintNode : IConvertableToBlueprintNode + { + + private string[] _input; + private string[] _output; + private BlueprintNodeOperation _execution; + + public DefaultConvertableToBlueprintNode( + BlueprintNodeOperation execution, + string[] input, + string[] output ) + { + _input = input; + _output = output; + _execution = execution; + } + + public BlueprintNodeOperation Operation => _execution; + + public ReadOnlySpan InputInterfacesName => _input; + + public ReadOnlySpan OutputInterfacesName => _output; + + } +} diff --git a/StgSharp.Common/Logic/Blueprint/PipeLine.cs b/StgSharp.Common/Logic/Blueprint/PipeLine.cs new file mode 100644 index 00000000..718c6cef --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/PipeLine.cs @@ -0,0 +1,164 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PipeLine.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.Numerics; +using System.Runtime.CompilerServices; +using System.Security.Authentication.ExtendedProtection; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + public class BlueprintPipeline + { + + private protected BlueprintNode after; + private protected BlueprintNode former; + private protected BlueprintPipelineArgs args; + private protected SemaphoreSlim formerCompleteSemaphore; + + public BlueprintPipeline( BlueprintNode former, BlueprintNode after ) + { + this.former = former; + this.after = after; + formerCompleteSemaphore = new SemaphoreSlim( + initialCount: 0, maxCount: 1 ); + } + + public BlueprintNode After => after; + + public BlueprintNode Former => former; + + public BlueprintPipelineArgs Args + { + get => args; + set => args = value; + } + + public int Level => former.Level; + + public static void SkipAll( + Dictionary ports ) + { + if( ports == null ) { + return; + } + foreach( KeyValuePair item in ports ) { + if( item.Value != null ) { + item.Value.CompleteAndSkip(); + } + } + } + + public static void WaitAll( + Dictionary ports ) + { + if( ports == null ) { + return; + } + foreach( KeyValuePair item in ports ) { + if( item.Value != null ) { + item.Value.WaitForStart(); + } + } + } + + public virtual void WaitForStart() + { + //Console.WriteLine($"Waiting \t{former.ContextName}\t->\t{after.ContextName}"); + formerCompleteSemaphore.Wait(); + } + + ~BlueprintPipeline() + { + formerCompleteSemaphore.Dispose(); + } + + #region pipline op + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CompleteAndSkip() + { + //Console.WriteLine($"Complete\t{former.Name}\t->\t{after.Name}"); + formerCompleteSemaphore.Release(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CompleteAndWriteData( BlueprintPipelineArgs args ) + { + this.args = args; + CompleteAndSkip(); + } + + #endregion + } + + public abstract class BlueprintPipelineArgs + { + public object? Value + { + get; + set; + } + + public object? ValueDefault + { + get; + } + } + + public sealed class SealedBlueprintPiipeline:BlueprintPipeline + { + internal SealedBlueprintPiipeline(BlueprintNode former, BlueprintNode after): + base(former, after) + { + + } + + public static SealedBlueprintPiipeline SealOutput(BlueprintNode node, string portName) + { + return new SealedBlueprintPiipeline(node, BlueprintNode.Empty); + } + + public static SealedBlueprintPiipeline SealInput(BlueprintNode node, string portName) + { + return new SealedBlueprintPiipeline(BlueprintNode.Empty, node); + } + + public sealed override void WaitForStart() + { + + } + } +} diff --git a/StgSharp.Common/Logic/Blueprint/RouteSwitch.cs b/StgSharp.Common/Logic/Blueprint/RouteSwitch.cs new file mode 100644 index 00000000..673ab96d --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/RouteSwitch.cs @@ -0,0 +1,111 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RouteSwitch.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.Reflection.Emit; +using System.Security.Cryptography.X509Certificates; +using System.Text; + +namespace StgSharp.Blueprint +{ + public class RouteSwitch : BlueprintNode + { + + private protected Dictionary openingRule)> outputDictionary; + + public RouteSwitch( string name, bool isNative, string inputPorts ) + : base(DefaultOperation, name, isNative, [inputPorts], [string.Empty] ) + { + outputDictionary = new Dictionary openingRule)>( + ); + } + + public new int Level + { + get + { + if( _levelAvailable ) { + return _level; + } + _level = 0; + KeyValuePair item = _inputInterfaces.First( + ); + if( item.Value == null ) { + throw new InvalidOperationException(); + } + if( _level <= item.Value.Level ) { + _level = item.Value.Level; + } + return _level; + } + } + + public new void AddBefore( + BlueprintNode after, + string thisOutputPortName, + string afterInputPortName ) + { + this.AppendNode( after, afterInputPortName, () => true ); + } + + public void AppendNode( + BlueprintNode node, + string portName, + Func openningRule ) + { + if( node == null ) { + throw new ArgumentNullException( nameof( node ) ); + } + string indexName = $"{node.Name}.{portName}"; + BlueprintPipeline p = new BlueprintPipeline( this, node ); + node.InputInterfaces[ portName ] = p; + outputDictionary.Add( indexName, (p, openningRule) ); + } + + public new void Run() + { + try { + BlueprintPipeline input = InputInterfaces.First().Value; + input.WaitForStart(); + foreach( KeyValuePair openingRule)> item in outputDictionary ) { + if( item.Value.openingRule() ) { + item.Value.pipeline.CompleteAndWriteData( input.Args ); + } + } + } + catch( Exception ) { + throw; + } + } + + } +} diff --git a/StgSharp.Common/Logic/Blueprint/SideNode.cs b/StgSharp.Common/Logic/Blueprint/SideNode.cs new file mode 100644 index 00000000..131716a5 --- /dev/null +++ b/StgSharp.Common/Logic/Blueprint/SideNode.cs @@ -0,0 +1,121 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SideNode.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.Globalization; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Blueprint +{ + internal sealed class BeginningNode : BlueprintNode + { + + private BlueprintSchedueler _bp; + + public BeginningNode( BlueprintSchedueler bp ) + : base(DefaultOperation, name: "BeginningNode", true, ["default"], ["default"] ) + { + _bp = bp; + } + + internal (string name, BlueprintPipelineArgs arg)[] InputData + { + set + { + if( value == null ) { + return; + } + foreach( (string name, BlueprintPipelineArgs arg) parameter in value ) { + OutputInterfaces[ parameter.name ].Args = parameter.arg; + } + } + } + + public override void Run() + { + _bp.RunningStat.Wait(); + BlueprintPipeline.SkipAll( _outputInterfaces ); + } + + public new void SetCertainOutputPort( + string name, + BlueprintPipeline pipeline ) + { + if( _outputInterfaces.ContainsKey( name ) ) { + _outputInterfaces[ name ] = pipeline; + } + _outputInterfaces.Add( name, pipeline ); + } + + } + + internal sealed class EndingNode : BlueprintNode + { + + private BlueprintSchedueler _bp; + + public EndingNode( BlueprintSchedueler bp ) + : base(DefaultOperation, name: "EndingNode", true, ["default"], ["default"] ) + { + _bp = bp; + } + + internal (string name, BlueprintPipelineArgs arg)[] OutputData + { + get { return InputInterfaces.Select( + key => (key.Key, key.Value.Args) ) + .ToArray(); } + } + + public override void Run() + { + BlueprintPipeline.WaitAll( _inputInterfaces ); + Interlocked.Exchange( ref _bp.currentGlobalNodeIndex, 0 ); + Interlocked.Exchange( ref _bp.currentNativeNodeIndex, 0 ); + _bp.RunningStat.Release(); + } + + public new void SetCertainInputPort( + string name, + BlueprintPipeline pipeline ) + { + if( _inputInterfaces.ContainsKey( name ) ) { + _inputInterfaces[ name ] = pipeline; + } + _inputInterfaces.Add( name, pipeline ); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Logic/Counter.cs b/StgSharp.Common/Logic/Counter.cs new file mode 100644 index 00000000..3295b105 --- /dev/null +++ b/StgSharp.Common/Logic/Counter.cs @@ -0,0 +1,131 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Counter.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; + +namespace StgSharp +{ + public class Counter + where T: struct, IConvertible, IFormattable, IComparable + #if NET8_OR_GREATER + ,INumber + #endif + { + internal dynamic _value; + + internal readonly T _defualtIncreament; + internal readonly T _defualtDecreament; + internal readonly T _defaultValue; + + public Counter( T defualtValue, T defualtIncreament, T defualtDecreament ) + { + Type tType = typeof( T ); + if ( + tType != typeof(byte) && + tType != typeof(short) && + tType != typeof(int) && + tType != typeof(long) && + tType != typeof(sbyte) && + tType != typeof(ushort) && + tType != typeof(uint) && + tType != typeof(ulong) && + tType != typeof(float) && + tType != typeof(double)) + { + throw new ArgumentException( + "Input is not number value type"); + } + + _value = defualtValue; + _defaultValue = defualtValue; + _defualtIncreament = defualtIncreament; + _defualtDecreament = defualtDecreament; + } + + public T DecreamentSoan => _defualtDecreament; + + public T IncreamentSpan => _defualtIncreament; + + public T CurrentSpan => _value - _defaultValue; + + public T Value + { + get => _value; + set => _value = value; + } + + public void Add( T value ) + { + _value += value; + } + + public void QuickAdd() + { + _value += _defualtIncreament; + } + + public void QuickSub() + { + _value -= _defualtDecreament; + } + + public void Reset() + { + _value = _defaultValue; + } + + public void Sub( T value ) + { + _value -= value; + } + + public override string ToString() + { + return Value.ToString(); + } + + public static Counter operator --( Counter counter ) + { + counter.QuickSub(); + return counter; + } + + public static Counter operator ++( Counter counter ) + { + counter.QuickAdd(); + return counter; + } + + public static implicit operator T( Counter counter ) + { + return counter.Value; + } + } +} \ No newline at end of file diff --git a/StgSharp.Common/Logic/PlainGeometryCollisionSensor.cs b/StgSharp.Common/Logic/PlainGeometryCollisionSensor.cs new file mode 100644 index 00000000..e8f2bfba --- /dev/null +++ b/StgSharp.Common/Logic/PlainGeometryCollisionSensor.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PlainGeometryCollisionSensor.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 System; + +namespace StgSharp +{ + public class CollisionEventArgs:EventArgs + { + public CollisionEventArgs(IGeometry target, IGeometry boarder) + { + Target = target; + Boarder = boarder; + } + + public IGeometry Target { get; set; } + public IGeometry Boarder { get; set; } + } + + public class PlainGeometryCollisionSensor + where TBoarder : IGeometry + where TTarget : IGeometry + { + internal PlainGeometry _boarder; + internal PlainGeometry _target; + internal EventHandler _rule; + + public event EventHandler Rule + { + add { _rule += value; } + remove + { + if (value == null) + { + return; + } +#pragma warning disable CS8601 + _rule -= value; +#pragma warning restore CS8601 + } + } + + public PlainGeometry boarder => _boarder; + + public PlainGeometry target + { + get => _target; + set => _target = value; + } + + } +} diff --git a/StgSharp.Common/Logic/StateMachine.cs b/StgSharp.Common/Logic/StateMachine.cs new file mode 100644 index 00000000..a3599e21 --- /dev/null +++ b/StgSharp.Common/Logic/StateMachine.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StateMachine.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 +{ + public interface IStateMachine where T: Enum + { + + public T LastStableState + { + get; + } + + public bool TryEnterState(); + + public bool TryExitState(); + + public bool TrySwitchState(); + + } + + public interface IStateMachineWithSwitchSpan : IStateMachine + where TState: Enum + { + + public bool IsInStabelState + { + get; + } + + public TState NextStableState + { + get; + } + + public bool TrySwitchState(); + + } +} diff --git a/StgSharp.Common/Logic/Timing/TimeFunction.cs b/StgSharp.Common/Logic/Timing/TimeFunction.cs new file mode 100644 index 00000000..388f07c3 --- /dev/null +++ b/StgSharp.Common/Logic/Timing/TimeFunction.cs @@ -0,0 +1,164 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeFunction.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.Text; + +namespace StgSharp.Timing +{ + public class TimeFunction + { + + private float _beginning, _ending; + private Func _timeRelatedCalculation; + private TimeSpanProvider _timeProvider; + + internal TimeFunction() { } + + public TimeFunction( + TimeSpanProvider timeSpanProvider, + Func timeRelatedCalculation, + float range ) + { + _timeProvider = timeSpanProvider; + _timeRelatedCalculation = timeRelatedCalculation; + if( timeSpanProvider == null ) { + return; + } + _beginning = _timeProvider.CurrentSecond; + _ending = _timeProvider.CurrentSecond + range; + } + + public virtual bool IsComplete + { + get => _timeProvider.CurrentSecond > _ending; + } + + public Func TimeRelatedCalculation + { + get { return _timeRelatedCalculation; } + set { _timeRelatedCalculation = value; } + } + + public static TimeFunction One + { + get => new TimeFunctionOne(); + } + + public TimeSpanProvider TimeSpanProvider + { + get { return _timeProvider; } + set { _timeProvider = value; } + } + + public virtual float Calculate() + { + if( _timeProvider.CurrentSecond < _ending ) { + return 0; + } + return _timeRelatedCalculation( + _timeProvider.CurrentSecond - _beginning ); + } + + public static TimeFunction Proportional( + TimeSpanProvider time, + float begin, + float range ) + { + return new TimeFunction( time, ( float t ) => t + begin, range ); + } + + public virtual TimeFunction Renew( + (Func func, float range) funcPair ) + { + return new TimeFunction( + _timeProvider, funcPair.func, funcPair.range ); + } + + public virtual TimeFunction Renew( + Func func, + float range ) + { + return new TimeFunction( _timeProvider, func, range ); + } + + public void Reset() + { + float range = _ending - _beginning; + _beginning = _timeProvider.CurrentSecond; + _ending = _beginning + range; + } + + public virtual TimeFunction Reverse() + { + float range = _ending - _beginning; + return new TimeFunction( + _timeProvider, p => _timeRelatedCalculation( range - p ), + range ); + } + + } + + public sealed class TimeFunctionOne : TimeFunction + { + + internal TimeFunctionOne() : base() { } + + public override bool IsComplete + { + get => true; + } + + public override float Calculate() + { + return 1; + } + + public override TimeFunction Renew( + (Func func, float range) funcPair ) + { + throw new NotSupportedException(); + } + + public override TimeFunction Renew( + Func func, + float range ) + { + throw new NotSupportedException(); + } + + #pragma warning disable CA1822 + public new void Reset() + #pragma warning restore CA1822 + { } + + } +} diff --git a/StgSharp.Common/Logic/Timing/TimeProvider.cs b/StgSharp.Common/Logic/Timing/TimeProvider.cs new file mode 100644 index 00000000..f045b73c --- /dev/null +++ b/StgSharp.Common/Logic/Timing/TimeProvider.cs @@ -0,0 +1,152 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeProvider.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.Timing; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Threading; + +namespace StgSharp +{ + public static partial class StgSharp + { + + internal static StgSharpTime mainTimeProvider = new StgSharpTime(); + + internal static TimeSourceProviderBase MainTimeProvider => mainTimeProvider; + + } + + public sealed class StgSharpTime : TimeSourceProviderBase + { + + private static List subscriberList = new List( + ); + private static long accuracy; + private static Stopwatch mainProvider = new Stopwatch(); + private static Thread timeProvideThread; + + internal StgSharpTime() { } + + public static TimeSourceProviderBase OnlyInstance => StgSharp.MainTimeProvider; + + public override sealed void StartProvidingTime() + { + if( mainProvider.IsRunning ) { + return; + } + mainProvider.Start(); + + //speed test + long totalMS, internalFrequncy = Stopwatch.Frequency; + for( int i = 0; i < 100; i++ ) { + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); + for( int t = 0; t < 10; t++ ) { + if( totalMS < 1000 ) { + subscriberList.Add( + new TimeSpanProvider( + 100L, TimeSpanProvider.DefaultProvider ) ); + } + } + } + mainProvider.Stop(); + subscriberList.Clear(); + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ) / 100L; + accuracy = ( totalMS * 2 ) / 3; + mainProvider.Reset(); + timeProvideThread = new Thread( new ThreadStart( ProvideTime ) ); + timeProvideThread.Start(); + } + + public override void StopProvidingTime() + { + lock( mainProvider ) { + mainProvider.Stop(); + } + } + + public void Terminate() + { + lock( mainProvider ) { + mainProvider.Stop(); + } + } + + protected override sealed void AddSubscriberUnsynced( + TimeSpanProvider subscriber ) + { + subscriberList.Add( subscriber ); + } + + protected override sealed void RemoveSubscriberUnsynced( + TimeSpanProvider subscriber ) + { + subscriberList.Remove( subscriber ); + } + + private void ProvideTime() + { + long totalMS, internalFrequncy = Stopwatch.Frequency; + lock( mainProvider ) { + mainProvider.Restart(); + } + while( mainProvider.IsRunning ) { + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); + if( subscriberList.Count == 0 ) { + continue; + } + CheckSubscriberSemaphore.Wait(); + List toRemoveList = new List( + ); + foreach( TimeSpanProvider subscriber in subscriberList ) { + if( !subscriber.CheckTime( totalMS ) ) { + toRemoveList.Add( subscriber ); + InternalIO.InternalWriteLog( + $"Time subscriber {subscriber} is to be removed.", + LogType.Info ); + } + ; + } + if( toRemoveList.Count != 0 ) { + foreach( TimeSpanProvider subscriber in toRemoveList ) { + subscriberList.Remove( subscriber ); + } + } + CheckSubscriberSemaphore.Release(); + } + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Logic/Timing/TimeSourceProvider.cs b/StgSharp.Common/Logic/Timing/TimeSourceProvider.cs new file mode 100644 index 00000000..ea1fdacc --- /dev/null +++ b/StgSharp.Common/Logic/Timing/TimeSourceProvider.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeSourceProvider.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; + +using System; +using System.Linq; +using System.Threading; + +namespace StgSharp.Timing +{ + public abstract class TimeSourceProviderBase + { + + private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim( + 1, 1 ); + + protected SemaphoreSlim CheckSubscriberSemaphore + { + get => _addSubscriberSemaphore; + } + + public void AddSubscriber( TimeSpanProvider subscriber ) + { + try { + _addSubscriberSemaphore.Wait(); + AddSubscriberUnsynced( subscriber ); + } + catch( Exception ) { + throw; + } + finally { + _addSubscriberSemaphore.Release(); + } + } + + public void RemoveSubscriber( TimeSpanProvider subscriber ) + { + _addSubscriberSemaphore.Wait(); + try { + RemoveSubscriberUnsynced( subscriber ); + } + catch( Exception ) { + throw; + } + finally { + _addSubscriberSemaphore.Release(); + } + } + + public abstract void StartProvidingTime(); + + public abstract void StopProvidingTime(); + + protected abstract void AddSubscriberUnsynced( + TimeSpanProvider subscriber ); + + protected abstract void RemoveSubscriberUnsynced( + TimeSpanProvider subscriber ); + + } +} diff --git a/StgSharp.Common/Logic/Timing/TimeSpanAwaitingToken.cs b/StgSharp.Common/Logic/Timing/TimeSpanAwaitingToken.cs new file mode 100644 index 00000000..7621d81c --- /dev/null +++ b/StgSharp.Common/Logic/Timing/TimeSpanAwaitingToken.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeSpanAwaitingToken.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Timing +{ + #nullable enable + + public sealed class TimeSpanAwaitingToken : IDisposable + { + + private static readonly ConcurrentStack s_unusedID = new ConcurrentStack( + [0] ); + private static int s_maxID; + private static readonly object s_lock = new object(); + + private EventHandler? _refreshHandler,_missHandler; + private int _size, _id; + + private object _participantObject = new object(); + private SemaphoreSlim _awaitingSemaphore; + + private TimeSpanProvider _provider; + + internal TimeSpanAwaitingToken( TimeSpanProvider provider ) + { + if( s_unusedID.Count == 1 ) { + lock( s_lock ) { + s_unusedID.TryPop( out int id ); + TokenID = id; + s_unusedID.Push( s_maxID++ ); + } + } else { + s_unusedID.TryPop( out int id ); + TokenID = id; + } + _provider = provider; + _size = 1; + _awaitingSemaphore = new SemaphoreSlim( 0, 1 ); + } + + internal TimeSpanAwaitingToken( TimeSpanProvider provider, int count ) + { + if( s_unusedID.Count == 1 ) { + lock( s_lock ) { + s_unusedID.TryPop( out int id ); + TokenID = id; + s_unusedID.Push( s_maxID++ ); + } + } else { + s_unusedID.TryPop( out int id ); + TokenID = id; + } + _provider = provider; + _size = count; + _awaitingSemaphore = new SemaphoreSlim( 0, _size ); + } + + public event EventHandler MissTimeSpanRefreshed + { + add { _missHandler += value; } + remove { _missHandler -= value; } + } + + public event EventHandler TimeSpanRefreshed + { + add { _refreshHandler += value; } + remove { _refreshHandler -= value; } + } + + public int TokenID + { + get => _id; + private set => _id = value; + } + + internal SemaphoreSlim AwaitingSemaphoreSlim + { + get => _awaitingSemaphore; + } + + public void Dispose() + { + _provider.QuitSpanAwaiting( this ); + s_unusedID.Push( TokenID ); + _awaitingSemaphore.Dispose(); + GC.SuppressFinalize( this ); + } + + public override int GetHashCode() + { + return _id; + } + + public void Participant() + { + lock( _participantObject ) { + _size++; + SemaphoreSlim newSemaphore = new SemaphoreSlim( + _awaitingSemaphore.CurrentCount, _size ); + Interlocked.Exchange( ref _awaitingSemaphore, newSemaphore ) + .Dispose(); + } + } + + public void WaitNextSpan() + { + _awaitingSemaphore.Wait(); + } + + internal void MissRefresh() + { + _missHandler?.Invoke( this, EventArgs.Empty ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void Refresh() + { + _refreshHandler?.Invoke( this, EventArgs.Empty ); + } + + ~TimeSpanAwaitingToken() + { + Dispose(); + } + + } + #nullable restore +} diff --git a/StgSharp.Common/Logic/Timing/TimeSpanProvider.cs b/StgSharp.Common/Logic/Timing/TimeSpanProvider.cs new file mode 100644 index 00000000..a29eb27d --- /dev/null +++ b/StgSharp.Common/Logic/Timing/TimeSpanProvider.cs @@ -0,0 +1,233 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeSpanProvider.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading; + +namespace StgSharp.Timing +{ + /// + /// A microsecond-accuracy timer. It will refresh every a certain time span. + /// + public class TimeSpanProvider + { + + private bool _subscribed; + + private ConcurrentQueue _tokenToAdd = new ConcurrentQueue( + ); + private ConcurrentQueue _tokenToQuit; + private Counter timeSpanCount = new Counter( -1, 1, 1 ); + private HashSet _awaitingTokens; + private long _maxSpanCount; + private long _spanBegin; + private readonly long _spanLength; + private readonly TimeSourceProviderBase _timeSource; + + /// + /// Create a new and define the length of time span. Length + /// of a single time span is defined in microseconds. + /// + /// + /// + public TimeSpanProvider( + long spanMicroSeconds, + TimeSourceProviderBase provider ) + { + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); + } + _timeSource = provider; + _spanLength = spanMicroSeconds; + _maxSpanCount = int.MaxValue; + provider.AddSubscriber( this ); + _subscribed = true; + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); + } + + /// + /// Create a new and define the length of time span. Length + /// of a single time span is defined in seconds. + /// + /// + /// + public TimeSpanProvider( + double spanSeconds, + TimeSourceProviderBase provider ) + { + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); + } + _timeSource = provider; + _spanLength = ( long )( spanSeconds * 1000L * 1000L ); + _spanBegin = -_spanLength; + _maxSpanCount = long.MaxValue; + provider.AddSubscriber( this ); + _subscribed = true; + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); + } + + /// + /// Create a new and define the length of time span. Length + /// of a single time span is defined in microseconds. + /// + /// + /// + /// + public TimeSpanProvider( + long spanLength, + long maxSpan, + TimeSourceProviderBase provider ) + { + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); + } + if( maxSpan <= 0 ) { + throw new ArgumentException( + "Sapn count cannot be smaller than zero" ); + } + _timeSource = provider; + _spanLength = spanLength; + _spanBegin = -_spanLength; + provider.AddSubscriber( this ); + _subscribed = true; + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); + } + + public double SpanLength + { + get => ( _spanLength * 1.0 ) / ( 1000L * 1000L ); + } + + public float CurrentSecond + { + get => timeSpanCount.Value * SpanLengthLowPrecession; + } + + public float SpanLengthLowPrecession + { + get => ( _spanLength * 1.0f ) / ( 1000 * 1000 ); + } + + public int CurrentSpan + { + get => timeSpanCount.Value; + } + + /// + /// Time source provider provided in internal framework. + /// + public static TimeSourceProviderBase DefaultProvider => StgSharpTime.OnlyInstance; + + public TimeSpanAwaitingToken ParticipantSpanAwaiting( int count ) + { + TimeSpanAwaitingToken token = new TimeSpanAwaitingToken( + this, count ); + _tokenToAdd.Enqueue( token ); + return token; + } + + public void QuitSpanAwaiting( TimeSpanAwaitingToken token ) + { + _tokenToQuit.Enqueue( token ); + } + + public void StopSpanProviding() + { + Interlocked.Exchange( ref _maxSpanCount, 0 ); + } + + public void SubscribeToTimeSource( + TimeSourceProviderBase serviceHandler ) + { + if( serviceHandler == null ) { + throw new ArgumentNullException( nameof( serviceHandler ) ); + } + if( _subscribed ) { + return; + } + _subscribed = true; + serviceHandler.AddSubscriber( this ); + } + + public int ToInt32() + { + return timeSpanCount.Value; + } + + internal bool CheckTime( long microseconds ) + { + if( microseconds - _spanBegin < _spanLength ) { + return true; + } + while( !_tokenToAdd.IsEmpty ) { + _tokenToAdd.TryDequeue( out TimeSpanAwaitingToken tokenAdd ); + _awaitingTokens.Add( tokenAdd ); + } + while( !_tokenToQuit.IsEmpty ) { + _tokenToQuit.TryDequeue( out TimeSpanAwaitingToken tokenQuit ); + _awaitingTokens.Remove( tokenQuit ); + InternalIO.InternalWriteLog( + $"Awaiting token {tokenQuit!.TokenID} has been removed.", + LogType.Info ); + } + + _spanBegin = microseconds; + timeSpanCount++; + + foreach( TimeSpanAwaitingToken item in _awaitingTokens ) { + if( item.AwaitingSemaphoreSlim.CurrentCount == 0 ) { + item.AwaitingSemaphoreSlim.Release(); + item.Refresh(); + } else { + item.MissRefresh(); + } + } + + return timeSpanCount < _maxSpanCount; + } + + public static explicit operator int( + [NotNull]TimeSpanProvider provider ) + { + return provider.ToInt32(); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/MVVM/OpenGLControllingItemRender.cs b/StgSharp.Common/MVVM/OpenGLControllingItemRender.cs new file mode 100644 index 00000000..79f6649e --- /dev/null +++ b/StgSharp.Common/MVVM/OpenGLControllingItemRender.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="OpenGLControllingItemRender.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.Graphics.OpenGL; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.MVVM +{ + public class OpenGLControllingItemRender : glRender + { + + public override bool IsContextSharable => true; + + protected override void CustomizeDeinit() + { + throw new NotImplementedException(); + } + + protected override void CustomizeInit() + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Common/MVVM/View/ViewBase.cs b/StgSharp.Common/MVVM/View/ViewBase.cs new file mode 100644 index 00000000..9ac51115 --- /dev/null +++ b/StgSharp.Common/MVVM/View/ViewBase.cs @@ -0,0 +1,208 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewBase.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.Graphics; +using StgSharp.Math; +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.View +{ + /// + /// 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.ViewPortID; + + 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 InternalIO.glfwGetKey( context.ViewPortID, ( 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 new file mode 100644 index 00000000..c0d1cb9f --- /dev/null +++ b/StgSharp.Common/MVVM/View/ViewDesigner.cs @@ -0,0 +1,146 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewDesigner.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.Controlling.UsrActivity; +using StgSharp.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; + +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; + +namespace StgSharp.MVVM.View +{ + 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 new file mode 100644 index 00000000..470d1894 --- /dev/null +++ b/StgSharp.Common/MVVM/View/ViewRender.cs @@ -0,0 +1,140 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewRender.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.Graphics; + +using StgSharp.HighPerformance; + +using System; +using System.Collections.Generic; +using System.Linq; + +namespace StgSharp.MVVM.View +{ + 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 new file mode 100644 index 00000000..d7719d27 --- /dev/null +++ b/StgSharp.Common/MVVM/View/ViewResponder.cs @@ -0,0 +1,144 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewResponder.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.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.View +{ + 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( InternalIO.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 new file mode 100644 index 00000000..5477ce5c --- /dev/null +++ b/StgSharp.Common/MVVM/ViewModel/DataBinding.cs @@ -0,0 +1,154 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DataBinding.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.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 new file mode 100644 index 00000000..c4e737a9 --- /dev/null +++ b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs @@ -0,0 +1,147 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ShowViewPort.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.Controls; +using StgSharp.Graphics; +using StgSharp.MVVM.View; +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 ); + TimeSpanAwaitingToken fpsCountingToken = fpsCountProvider.ParticipantSpanAwaiting( + 1 ); + fpsCountingToken.TimeSpanRefreshed += CountFps; + fpsCountingToken.MissTimeSpanRefreshed += CountFps; + if( _nextView != _currentView ) { + Interlocked.Exchange( ref _currentView, _nextView ); + } + Thread renderThread = new Thread( + ( token ) => { + try { + ProcessFrameWithoutEvent(); + } + catch( Exception ex ) { + InternalIO.InternalWriteLog( + $"Critical error when rendering:\n" + $"{ex}", + LogType.Error ); + ShouldClose = true; + } + } ); + renderThread.Start(); + /**/ + using( TimeSpanAwaitingToken eventAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( + 1 ) ) { + while( _closed ) { + if( _nextView != _currentView ) { + Interlocked.Exchange( ref _currentView, _nextView ); + } + InternalIO.glfwPollEvents(); + eventAwaitingToken.WaitNextSpan(); + _closed = !ShouldClose; + } + } + /**/ + renderThread.Join(); + fpsCountingToken.Dispose(); + fpsCountProvider.StopSpanProviding(); + frameTimeProvider.StopSpanProviding(); + } + + 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 ); + /* + Console.Clear(); + Console.WriteLine( FrameSpeed ); + /**/ + } + + private unsafe void PrivateShow() + { + if( 0 == InternalIO.glfwWindowShouldClose( + this.viewPortDisplay.ViewPortID ) ) { + CurrentView.Use(); + RenderStream.PollEvents(); + } + } + + private void ProcessFrameWithoutEvent() + { + using( TimeSpanAwaitingToken renderAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( + 1 ) ) { + renderAwaitingToken.TimeSpanRefreshed += ( _, _ ) => { }; + while( _closed ) { + foreach( ViewPort context in CurrentView.Render ) { + context.FlushSize(); + } + CurrentView.Use(); + renderAwaitingToken.WaitNextSpan(); + Interlocked.Add( ref _frameCount, 1 ); + } + } + } + + } +} diff --git a/StgSharp.Common/MVVM/ViewModel/ViewManage.cs b/StgSharp.Common/MVVM/ViewModel/ViewManage.cs new file mode 100644 index 00000000..a8959655 --- /dev/null +++ b/StgSharp.Common/MVVM/ViewModel/ViewManage.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewManage.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.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.MVVM.View; + +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 new file mode 100644 index 00000000..9b073031 --- /dev/null +++ b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs @@ -0,0 +1,261 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewModel.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.Controlling.UsrActivity; +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Math; +using StgSharp.MVVM.View; +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; + +using static StgSharp.Internal.InternalIO; + +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 = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long frameLength = ( FrameSpeed > 0 ) ? + ( ( 1000L * 1000L ) / FrameSpeed ) : 0; + frameTimeProvider = new TimeSpanProvider( + frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + protected ViewModelBase( float frameLength ) + { + viewPortDisplay = new ViewPort(); + allView = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long _frameLength = ( FrameSpeed > 0 ) ? + ( ( long )( 1000 * frameLength ) ) : 0; + frameTimeProvider = new TimeSpanProvider( + _frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + public ViewModelBase( ViewPort vBinding, int frameSpeed ) + { + viewPortDisplay = vBinding; + allView = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long frameLength = ( frameSpeed > 0 ) ? + ( ( 1000L * 1000L ) / frameSpeed ) : 0; + frameTimeProvider = new TimeSpanProvider( + frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + public ViewModelBase( ViewPort vBinding, float frameLength ) + { + viewPortDisplay = vBinding; + allView = new(); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); + _frameSpeed = 0; + _frameCount = 0; + long _frameLength = ( frameLength > 0 ) ? + ( ( long )( 1000 * frameLength ) ) : 0; + frameTimeProvider = new TimeSpanProvider( + _frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; + } + + public DataBindingEntry this[ string name ] + { + get + { + if( this.TryGetObjectReference( + name, out DataBindingEntry entry ) ) { + return entry; + } + throw new KeyNotFoundException(); + } + } + + public bool ShouldClose + { + get => InternalIO.glfwWindowShouldClose( + viewPortDisplay.ViewPortID ) != 0; + set => InternalIO.glfwSetWindowShouldClose( + viewPortDisplay.ViewPortID, value ? 1 : 0 ); + } + + public int CurrentFrameCount => frameTimeProvider.CurrentSpan; + + public int FrameSpeed => _frameSpeed; + + /// + /// Height of this form, represent in + /// + public int Height + { + get => viewPortDisplay.Height; + } + + /// + /// Width of this form, represent in + /// + public int Width + { + get => viewPortDisplay.Width; + } + + public unsafe IntPtr WindowID + { + get => viewPortDisplay.ViewPortID; + } + + public string Name + { + get => viewPortDisplay.Name; + } + + /// + /// Width of this form, represent in + /// + public Vec2 Size + { + get => new Vec2( Width, Height ); + } + + public ViewPort ViewPortBinding + { + get => viewPortDisplay; + } + + #pragma warning disable CA1044 + protected FrameBufferSizeHandler FrameSizeCallback + { + set + { + _resizeCallback = value; + IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate( + value ); + InternalIO.glfwSetFramebufferSizeCallback( + viewPortDisplay.ViewPortID, handlerPtr ); + } + } + #pragma warning restore CA1044 + + 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(); + InternalIO.glfwSetWindowSizeLimits( + this.viewPortDisplay.ViewPortID, ( 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(); + InternalIO.glfwSetWindowSizeLimits( + this.viewPortDisplay.ViewPortID, minWidth, minHeight, maxWidth, + maxHeight ); + } + + public abstract bool TryGetObjectReference( + string name, + out DataBindingEntry entry ); + + private void DefaultFrameRewsizeCallback( + 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 new file mode 100644 index 00000000..62992c26 --- /dev/null +++ b/StgSharp.Common/MVVM/ViewPort.cs @@ -0,0 +1,141 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewPort.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.Concurrent; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; + +namespace StgSharp.MVVM +{ + public class ViewPort + { + + private static ConcurrentDictionary _handleToViewPortIndex = new ConcurrentDictionary( + ); + private int _shouldCloseMask, _closeRequestedMask; + private int _width, _height, _newWidth, _newHeight; + + internal ViewPort() + { + _newHeight = 600; + _newWidth = 800; + FlushSize(); + Name = new StackFrame( 1, false ). + GetMethod()!.DeclaringType!.Name; + Monitor = IntPtr.Zero; + ViewPortID = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, + IntPtr.Zero ); + if( ViewPortID == IntPtr.Zero ) { + throw new InvalidOperationException( + "Unable to create viewport handle." ); + } + _handleToViewPortIndex.TryAdd( ViewPortID, this ); + } + + public ViewPort(int width, int height, string name, IntPtr monitor ) + { + _newWidth = width; + _newHeight = height; + FlushSize(); + Name = name; + Monitor = monitor; + ViewPortID = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, + IntPtr.Zero ); + if( ViewPortID == IntPtr.Zero ) { + throw new InvalidOperationException( + "Unable to create viewport handle." ); + } + _handleToViewPortIndex.TryAdd( ViewPortID, this ); + } + + public unsafe int Height + { + get { return _height; } + internal set { Interlocked.Exchange( ref _height, value ); } + } + + public unsafe int Width + { + get { return _width; } + internal set { Interlocked .Exchange( ref _width, value ); } + } + + public IntPtr GraphicHandle + { + get; + internal set; + } + + public IntPtr Monitor + { + get; + internal set; + } + + public IntPtr ViewPortID + { + 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/Math/Graphic/Camera.cs b/StgSharp.Common/Math/Graphic/Camera.cs new file mode 100644 index 00000000..5e9f06bc --- /dev/null +++ b/StgSharp.Common/Math/Graphic/Camera.cs @@ -0,0 +1,309 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Camera.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.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Graphics.ShaderEdit; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Graphics +{ + public sealed class Camera : IglConvertable + { + + private bool _isLookAtAvailable; + internal Matrix44 _lookAt; + internal Matrix44 _projection; + internal Matrix44 cameraAtt; + internal Matrix44 rotation; + internal Matrix44 rotationAtt; + internal Radius _pitch; + internal Radius _row; + internal Radius _yaw; + internal Uniform convertedUniform; + internal Vec3 _target, up; + + public Camera() + { + cameraAtt = Matrix44.Unit; + _target = Vec3.Zero; + up = Vec3.Zero; + _isLookAtAvailable = false; + _lookAt = Matrix44.Unit; + rotationAtt = Matrix44.Unit; + _projection = new Matrix44(); + } + + public Camera( Vec3 position, Vec3 target, Vec3 up ) + : this() + { + rotationAtt = Matrix44.Unit; + cameraAtt = new Matrix44(); + SetViewDirection( position, target, up ); + _pitch = Radius.Zero; + _row = Radius.Zero; + _yaw = Radius.Zero; + } + + public Matrix44 Projection => _projection; + + public Matrix44 View + { + get + { + if( _isLookAtAvailable ) { + return _lookAt; + } + Matrix44 move = Matrix44.Unit; + move.colum3.vec -= cameraAtt.colum3.vec; + _lookAt = rotationAtt.Transpose * move; + _isLookAtAvailable = true; + return _lookAt; + } + } + + public void DisplayGLtypeDefinition() + { + Console.WriteLine( "uniform matrix4x4 cameraName;" ); + } + + /// + /// Get all uniform related to this . + /// + /// Shader program requires this camera. + /// + /// ContextName of all related uniforms. If you fallow form from + /// + /// + public unsafe void GainAllUniforms( + ShaderProgram source, + params string[] uniformName ) + { + if( uniformName.Length != 1 ) { + throw new ArgumentException( + "Camera needs only one uniform.", nameof( uniformName ) ); + } + convertedUniform = source.GetUniform( uniformName[ 0 ] ); + } + + public void MoveNear( float distance ) + { + cameraAtt.colum3.Z -= distance; + _isLookAtAvailable = false; + } + + public void MoveRight( float distance ) + { + cameraAtt.colum3.X -= distance; + _isLookAtAvailable = false; + } + + public void MoveUp( float distance ) + { + cameraAtt.colum3.Y -= distance; + _isLookAtAvailable = false; + } + + public unsafe void SetAllUniforms() + { + //Console.WriteLine(Projection * ViewBase); + OpenGL.OpenGLFunction.CurrentGL + .SetUniformValue( convertedUniform, Projection * View ); + } + + public void SetViewDirection( Vec3 position, Vec3 target, Vec3 up ) + { + Vec3 direction = position - target; + if( ( position.vec == cameraAtt.colum3.vec ) && ( this.up == up ) && ( cameraAtt.colum2.vec == direction.vec ) ) { + //no difference with precious value + return; + } + if( direction.GetLength() == 0 ) { + //deadlock + throw new ArgumentException(); + } + if( Vec3.IsParallel( direction, up ) ) { + throw new ArgumentException(); + } + _target = direction; + this.up = up; + + _isLookAtAvailable = false; + + Linear.Orthogonalize( ref direction, ref up ); + + Vec3 right = Linear.Orthogonalize( Linear.Cross( up, direction ) ); + + cameraAtt.colum0.vec = right.vec; + cameraAtt.colum1.vec = up.vec; + cameraAtt.colum2.vec = direction.vec; + cameraAtt.colum3.vec = position.vec; + + InternalPitch(); + InternalRow(); + InternalYaw(); + } + + public void SetViewRange( + Radius fovRadius, + Vec2 size, + Vec2 offset, + (float front, float back) dephRange ) + { + float + distance = _target.GetLength(), + near = distance - dephRange.front, + far = distance + dephRange.back, + offsetX = offset.X, + offsetY = offset.Y, + width = Scaler.Abs( + GeometryScaler.Tan( fovRadius / 2 ) * near * 2 ), + height = ( width * size.Y ) / size.X; + + _projection.colum0.X = ( 2 * near ) / width; + _projection.colum1.Y = ( 2 * near ) / height; + _projection.colum2.X = ( 2 * offsetX ) / width; + _projection.colum2.Y = ( 2 * offsetY ) / height; + _projection.colum2.Z = ( far + near ) / ( near - far ); + _projection.colum2.W = -1; + _projection.colum3.Z = ( 2 * near * far ) / ( near - far ); + } + + public void Test( params Vec4[] vec ) + { + Console.WriteLine( View ); + Console.WriteLine( Projection ); + Console.WriteLine( Projection * View ); + Console.WriteLine( View ); + foreach( Vec4 item in vec ) { + Console.Write( $"{Projection * View * item};" ); + } + } + + ShaderStruct IglConvertable.GetConvertedGLtype() + { + throw new NotImplementedException(); + } + + ~Camera() { } + + #region rotation + + public void Yaw( Radius r ) + { + _yaw -= r; + + //Console.WriteLine(_yaw._radius); + //Console.WriteLine(rotationAtt); + InternalYaw(); + } + + public void Pitch( Radius r ) + { + _pitch -= r; + + //Console.WriteLine(_pitch._radius); + //Console.WriteLine(rotationAtt); + InternalPitch(); + } + + public void Row( Radius r ) + { + _row -= r; + + //Console.WriteLine(_row._radius); + //Console.WriteLine(rotationAtt); + InternalRow(); + } + + internal void InternalPitch() + { + _isLookAtAvailable = false; + + Matrix32 partialCoord = new Matrix32( + cameraAtt.colum1.vec, cameraAtt.colum2.vec ); + float angle = _pitch._radius; + + Matrix22 rotation = new Matrix22( + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); + + partialCoord *= rotation; + rotationAtt.colum1.vec = partialCoord.colum0.vec; + rotationAtt.colum2.vec = partialCoord.colum1.vec; + rotationAtt.isTransposed = false; + } + + internal void InternalRow() + { + _isLookAtAvailable = false; + + Matrix32 partialCoord = new Matrix32( + cameraAtt.colum0.vec, cameraAtt.colum1.vec ); + float angle = _row._radius; + + Matrix22 rotation = new Matrix22( + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); + + partialCoord *= rotation; + rotationAtt.colum0.vec = partialCoord.colum0.vec; + rotationAtt.colum1.vec = partialCoord.colum1.vec; + rotationAtt.isTransposed = false; + } + + internal void InternalYaw() + { + _isLookAtAvailable = false; + + Matrix32 partialCoord = new Matrix32( + cameraAtt.colum0.vec, cameraAtt.colum2.vec ); + float angle = _yaw._radius; + Matrix22 rotation = new Matrix22( + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); + + partialCoord *= rotation; + rotationAtt.colum0.vec = partialCoord.colum0.vec; + rotationAtt.colum2.vec = partialCoord.colum1.vec; + rotationAtt.isTransposed = false; + } + + #endregion + } +} diff --git a/StgSharp.Common/Math/Linear/Cordination.cs b/StgSharp.Common/Math/Linear/Cordination.cs new file mode 100644 index 00000000..225ceb3f --- /dev/null +++ b/StgSharp.Common/Math/Linear/Cordination.cs @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Cordination.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public enum CoordinatePlain + { + + XY, + YZ, + XZ, + + } +} diff --git a/StgSharp.Common/Math/Linear/IVector.cs b/StgSharp.Common/Math/Linear/IVector.cs new file mode 100644 index 00000000..ad02839a --- /dev/null +++ b/StgSharp.Common/Math/Linear/IVector.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IVector.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.Numerics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math +{ + public interface IVector + { + /* + public static TItem Create(Vector4 source) where TItem : IVector + { + return TItem + } + /**/ + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix22.cs b/StgSharp.Common/Math/Linear/Matrix22.cs new file mode 100644 index 00000000..84a9b0fb --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix22.cs @@ -0,0 +1,181 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix22.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.Internal.Intrinsic; + +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 2 * 2 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix22 : IMat + { + [FieldOffset( 2 * 2 * 4 * sizeof( float ) )] + internal bool isTransposed = false; + + [FieldOffset( 0 )] + internal ColumnSet2 _mat; + [FieldOffset( 2 * 4 * sizeof( float ) )] + internal ColumnSet2 _transpose; + + public Matrix22() + { + Unsafe.SkipInit( out this ); + isTransposed = false; + } + + internal Matrix22( ColumnSet2 mat ) + { + this._mat = mat; + } + + internal Matrix22( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + _mat.colum0 = c0; + _mat.colum1 = c1; + } + + public Matrix22( float a00, float a01, float a10, float a11 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + _mat.colum0 = new Vector4( a00, a10, 0, 0 ); + _mat.colum1 = new Vector4( a01, a11, 0, 0 ); + } + + public Matrix22 Transpose + { + get + { + InternalTranspose(); + return new Matrix22( this._transpose ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Det() + { + return ( _mat.m00 * _mat.m11 ) - ( _mat.m10 * _mat.m01 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void InternalTranspose() + { + if( !isTransposed ) { + _transpose = _mat; + float cache = _transpose.m10; + _transpose.m10 = _transpose.m01; + _transpose.m01 = cache; + + isTransposed = true; + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static unsafe Matrix22 operator +(Matrix22 left, Matrix22 right) + { + Matrix22 ret = new Matrix22(); + InternalIO.Intrinsic.add_mat_2( &left._mat, &right._mat, &ret._mat ); + return ret; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator -( Matrix22 left, Matrix22 right ) + { + return new Matrix22( + left._mat.colum0 + right._mat.colum0, + left._mat.colum1 + right._mat.colum1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix22 mat, float value ) + { + return new Matrix22( + mat._mat.colum0 * value, mat._mat.colum1 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix22 left, Matrix22 right ) + { + left.InternalTranspose(); + return new Matrix22( + Vector4.Dot( left._transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right._mat.colum1 ), + + Vector4.Dot( left._transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum1, right._mat.colum1 )); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix22 left, Matrix23 right ) + { + left.InternalTranspose(); + return new Matrix23( + Vector4.Dot( left._transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right._mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right._mat.colum2 ), + + Vector4.Dot( left._transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left._transpose.colum1, right._mat.colum1 ), + Vector4.Dot( left._transpose.colum1, right._mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix22 left, Matrix24 right ) + { + left.InternalTranspose(); + return new Matrix24( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left._transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum1, right.mat.colum3 )); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator /( Matrix22 mat, float value ) + { + return new Matrix22( + mat._mat.colum0 / value, mat._mat.colum1 / value ); + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix23.cs b/StgSharp.Common/Math/Linear/Matrix23.cs new file mode 100644 index 00000000..d65fb1c7 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix23.cs @@ -0,0 +1,200 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix23.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 3 + 2 ) * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix23 : IMat + { + + [FieldOffset( 5 * 4 * sizeof( float ) )] internal bool isTransposed = false; + [FieldOffset( 3 * 4 * sizeof( float ) )] internal ColumnSet2 _transpose; + [FieldOffset( 0 )] internal ColumnSet3 _mat; + + public Matrix23() + { + Unsafe.SkipInit( out _mat); + Unsafe.SkipInit(out _transpose); + } + + internal Matrix23( Vector4 c0, Vector4 c1, Vector4 c2 ) + { + _mat.colum0 = c0; + _mat.colum1 = c1; + _mat.colum2 = c2; + } + + public Matrix23( + float a00, + float a01, + float a02, + float a10, + float a11, + float a12 ) + { + _mat.colum0 = new Vector4( a00, a10, 0, 0 ); + _mat.colum1 = new Vector4( a01, a11, 0, 0 ); + _mat.colum2 = new Vector4( a02, a12, 0, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this._transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this._transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet3* source = &this._mat ) { + fixed( ColumnSet2* target = &this._transpose ) { + InternalIO.Intrinsic.transpose32( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator -( Matrix23 left, Matrix23 right ) + { + return new Matrix23( + left._mat.colum0 - right._mat.colum0, + left._mat.colum1 - right._mat.colum1, + left._mat.colum2 - right._mat.colum2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix23 mat, float value ) + { + return new Matrix23( + mat._mat.colum0 * value, mat._mat.colum1 * value, + mat._mat.colum2 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix23 left, Matrix32 right ) + { + left.InternalTranspose(); + return new Matrix22( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix23 left, Matrix33 right ) + { + left.InternalTranspose(); + return new Matrix23( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix23 left, Matrix34 right ) + { + left.InternalTranspose(); + return new Matrix24( + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left._transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left._transpose.colum0, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator /( Matrix23 mat, float value ) + { + return new Matrix23( + mat._mat.colum0 / value, mat._mat.colum1 / value, + mat._mat.colum2 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix23 operator +( Matrix23 left, Matrix23 right ) + { + Matrix23 ret = new Matrix23(); + InternalIO.Intrinsic.add_mat_3(&left._mat, &right._mat, &ret._mat); + return ret; + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix24.cs b/StgSharp.Common/Math/Linear/Matrix24.cs new file mode 100644 index 00000000..d03d80e2 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix24.cs @@ -0,0 +1,220 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix24.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 4 + 2 ) * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix24 : IMat + { + [FieldOffset( 6 * 4 * sizeof( float ) )] internal bool isTransposed; + [FieldOffset( 4 * 4 * sizeof( float ) )] internal ColumnSet2 transpose; + + [FieldOffset( 0 )] internal ColumnSet4 mat; + + [FieldOffset( 0 )] public Vec2 Colum0; + [FieldOffset( 16 )] public Vec2 Colum1; + [FieldOffset( 32 )] public Vec2 Colum2; + [FieldOffset( 48 )] public Vec2 Colum3; + + public Matrix24() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix24( Vector4 c0, Vector4 c1, Vector4 c2, Vector4 c3 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + mat.colum3 = c3; + } + + public Matrix24( + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, 0, 0 ); + mat.colum1 = new Vector4( a01, a11, 0, 0 ); + mat.colum2 = new Vector4( a02, a12, 0, 0 ); + mat.colum3 = new Vector4( a03, a13, 0, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public override string ToString() + { + InternalTranspose(); + return $"{$"[{mat.m00},{mat.m01},{mat.m02},{mat.m03}],"}{$"[{mat.m10},{mat.m11},{mat.m12},{mat.m13}]"}"; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet4* source = &this.mat ) { + fixed( ColumnSet2* target = &this.transpose ) { + InternalIO.Intrinsic.transpose42( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator -( Matrix24 left, Matrix24 right ) + { + return new Matrix24( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 - right.mat.colum2, + left.mat.colum3 - right.mat.colum3 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix24 mat, float value ) + { + return new Matrix24( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix24 left, Matrix42 right ) + { + left.InternalTranspose(); + return new Matrix22( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix24 left, Matrix43 right ) + { + left.InternalTranspose(); + return new Matrix23( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix24 left, Matrix44 right ) + { + left.InternalTranspose(); + return new Matrix24( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator /( Matrix24 mat, float value ) + { + return new Matrix24( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value, mat.mat.colum3 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix24 operator +( Matrix24 left, Matrix24 right ) + { + Matrix24 ret = new Matrix24(); + InternalIO.Intrinsic.add_mat_4(&left.mat,&right.mat,&ret.mat); + return ret; + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix32.cs b/StgSharp.Common/Math/Linear/Matrix32.cs new file mode 100644 index 00000000..b07ce0a7 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix32.cs @@ -0,0 +1,220 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix32.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 5 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix32 : IMat + { + + [FieldOffset( 5 * 4 * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet2 mat; + [FieldOffset( 2 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; + + [FieldOffset( 0 )] internal Vec3 colum0; + [FieldOffset( 4 * 4 )] internal Vec3 colum1; + + public Matrix32() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix32( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + } + + public unsafe Matrix32( + float a00, + float a01, + float a10, + float a11, + float a20, + float a21 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum1 = new Vector4( a01, a11, a21, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public Vec3 VerticalVecMultiply( Vec2 vec ) + { + return ( colum0 * vec.X ) + ( colum1 * vec.Y ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet2* source = &this.mat ) { + fixed( ColumnSet3* target = &this.transpose ) { + InternalIO.Intrinsic.transpose23( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator -( Matrix32 left, Matrix32 right ) + { + return new Matrix32( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix32 mat, float value ) + { + return new Matrix32( + mat.mat.colum0 * value, mat.mat.colum1 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix32 left, Matrix22 right ) + { + left.InternalTranspose(); + return new Matrix32( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix32 left, Matrix23 right ) + { + left.InternalTranspose(); + return new Matrix33( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix32 left, Matrix24 right ) + { + left.InternalTranspose(); + return new Matrix34( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator /( Matrix32 mat, float value ) + { + return new Matrix32( + mat.mat.colum0 / value, mat.mat.colum1 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix32 operator +( Matrix32 left, Matrix32 right ) + { + Matrix32 ret = new Matrix32(); + InternalIO.Intrinsic.add_mat_2(&left.mat, &right.mat, &ret.mat); + return ret; + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix33.cs b/StgSharp.Common/Math/Linear/Matrix33.cs new file mode 100644 index 00000000..5d89b5c6 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix33.cs @@ -0,0 +1,240 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix33.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 6 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix33 : IMat + { + + [FieldOffset( 6 * 4 * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet3 mat; + [FieldOffset( 3 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; + [FieldOffset( 0 * 4 * sizeof( float ) )] public Vec3 Colum0; + [FieldOffset( 1 * 4 * sizeof( float ) )] public Vec3 Colum1; + [FieldOffset( 2 * 4 * sizeof( float ) )] public Vec3 Colum2; + + public Matrix33() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix33( Vector4 c0, Vector4 c1, Vector4 c2 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + } + + public Matrix33( + float a00, + float a01, + float a02, + float a10, + float a11, + float a12, + float a20, + float a21, + float a22 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum1 = new Vector4( a01, a11, a21, 0 ); + mat.colum2 = new Vector4( a02, a12, a22, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + InternalIO.InternalWriteLog( + $"Attempt to write unused space in {GetType().Name} {nameof(mat)}", + LogType.Error ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe float Det() + { + fixed( ColumnSet3* mat = &this.mat ) { + return InternalIO.Intrinsic.det_mat_3( mat, ( ColumnSet3* )0 ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet3* source = &this.mat, target = &this.transpose ) { + InternalIO.Intrinsic.transpose33( source, target ); + } + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator -( Matrix33 left, Matrix33 right ) + { + return new Matrix33( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 + right.mat.colum2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix33 mat, float value ) + { + return new Matrix33( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator *( Matrix33 left, Vec3 right ) + { + left.InternalTranspose(); + return new Vec3( + Vector4.Dot( left.transpose.colum0, right.vec ), + Vector4.Dot( left.transpose.colum1, right.vec ), + Vector4.Dot( left.transpose.colum2, right.vec ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix33 left, Matrix32 right ) + { + left.InternalTranspose(); + return new Matrix32( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix33 left, Matrix33 right ) + { + left.InternalTranspose(); + return new Matrix33( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix33 left, Matrix34 right ) + { + left.InternalTranspose(); + return new Matrix34( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator /( Matrix33 mat, float value ) + { + return new Matrix33( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix33 operator +( Matrix33 left, Matrix33 right ) + { + Matrix33 ret = new Matrix33(); + InternalIO.Intrinsic.add_mat_3(&left.mat, &right.mat, &ret.mat); + return ret; + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix34.cs b/StgSharp.Common/Math/Linear/Matrix34.cs new file mode 100644 index 00000000..a521e02e --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix34.cs @@ -0,0 +1,239 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix34.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.Internal.Intrinsic; + +using System; +using System.Drawing; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 7 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix34 : IMat + { + + [FieldOffset( 7 * 4 * sizeof( float ) )] internal bool isTransposed; + [FieldOffset( 4 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; + + [FieldOffset( 0 )] internal ColumnSet4 mat; + + [FieldOffset( 0 * 4 * sizeof( float ) )] public Vec3 Colum0; + [FieldOffset( 1 * 4 * sizeof( float ) )] public Vec3 Colum1; + [FieldOffset( 2 * 4 * sizeof( float ) )] public Vec3 Colum2; + [FieldOffset( 3 * 4 * sizeof( float ) )] public Vec3 Colum3; + + public Matrix34() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix34( ColumnSet4 mat ) + { + Unsafe.SkipInit( out this ); + isTransposed = false; + this.mat = mat; + } + + internal Matrix34( Vector4 c0, Vector4 c1, Vector4 c2, Vector4 c3 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + mat.colum3 = c3; + } + + public Matrix34( + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13, + float a20, + float a21, + float a22, + float a23 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum0 = new Vector4( a01, a11, a21, 0 ); + mat.colum0 = new Vector4( a02, a12, a22, 0 ); + mat.colum0 = new Vector4( a03, a13, a23, 0 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet4* source = &this.mat ) { + fixed( ColumnSet3* target = &this.transpose ) { + InternalIO.Intrinsic.transpose43( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator -( Matrix34 left, Matrix34 right ) + { + return new Matrix34( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 - right.mat.colum2, + left.mat.colum3 - right.mat.colum3 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix34 mat, float value ) + { + return new Matrix34( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix34 left, Matrix42 right ) + { + left.InternalTranspose(); + return new Matrix32( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix34 left, Matrix43 right ) + { + left.InternalTranspose(); + return new Matrix33( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix34 left, Matrix44 right ) + { + left.InternalTranspose(); + return new Matrix34( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator /( Matrix34 mat, float value ) + { + return new Matrix34( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value, mat.mat.colum3 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix34 operator +( Matrix34 left, Matrix34 right ) + { + Matrix34 ret = new Matrix34(); + InternalIO.Intrinsic.add_mat_4(&left.mat,&right.mat,&ret.mat); + return ret; + + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix42.cs b/StgSharp.Common/Math/Linear/Matrix42.cs new file mode 100644 index 00000000..c4a359b0 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix42.cs @@ -0,0 +1,243 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix42.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.Internal.Intrinsic; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 16 + 8 ) * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix42 : IMat + { + + [FieldOffset( ( 16 + 8 ) * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet2 mat; + [FieldOffset( 8 * sizeof( float ) )] internal ColumnSet4 transpose; + + public Matrix42() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix42( ColumnSet2 mat ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + this.mat = mat; + } + + internal Matrix42( Vector4 c0, Vector4 c1 ) + { + Unsafe.SkipInit(out this); + isTransposed= false; + mat.colum0 = c0; + mat.colum1 = c1; + } + + public Matrix42( + float a00, + float a01, + float a10, + float a11, + float a20, + float a21, + float a30, + float a31 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public override int GetHashCode() + { + return HashCode.Combine( + mat.colum0.GetHashCode(), mat.colum1.GetHashCode() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet2* source = &this.mat ) { + fixed( ColumnSet4* target = &this.transpose ) { + InternalIO.Intrinsic.transpose24( source, target ); + } + } + + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator -( + Matrix42 left, + Matrix42 right ) + { + return new Matrix42( + left.mat.colum0 - right.mat.colum0, + left.mat.colum0 - right.mat.colum0 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix42 mat, float value ) + { + return new Matrix42( + mat.mat.colum0 * value, mat.mat.colum1 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix42 left, Matrix22 right ) + { + left.InternalTranspose(); + return new Matrix42( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ), + + Vector4.Dot( left.transpose.colum3, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right._mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix42 left, Matrix23 right ) + { + left.InternalTranspose(); + return new Matrix43( + Vector4.Dot( left.transpose.colum0, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right._mat.colum2 ), + + Vector4.Dot( left.transpose.colum3, right._mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right._mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right._mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix42 left, Matrix24 right ) + { + left.InternalTranspose(); + return new Matrix44( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator /( Matrix42 mat, float value ) + { + return new Matrix42( + mat.mat.colum0 / value, mat.mat.colum1 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator +( + Matrix42 left, + Matrix42 right ) + { + return new Matrix42( + left.mat.colum0 + right.mat.colum0, + left.mat.colum0 + right.mat.colum0 ); + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Matrix43.cs b/StgSharp.Common/Math/Linear/Matrix43.cs new file mode 100644 index 00000000..14f32935 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix43.cs @@ -0,0 +1,266 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix43.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.Internal.Intrinsic; + +using System; +using System.Collections.Generic; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security.AccessControl; + +namespace StgSharp.Math +{ + [StructLayout( + layoutKind: LayoutKind.Explicit, + Size = ( 7 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public struct Matrix43 : IEquatable, IMat + { + + [FieldOffset( 7 * 4 * sizeof( float ) )] + internal bool isTransposed; + + [FieldOffset( 0 )] + internal ColumnSet3 mat; + [FieldOffset( 3 * 4 * sizeof( float ) )] + internal ColumnSet4 transpose; + + public Matrix43() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix43( Vector4 c0, Vector4 c1, Vector4 c2 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = c0; + mat.colum1 = c1; + mat.colum2 = c2; + } + + public Matrix43( + float a00, + float a01, + float a02, + float a10, + float a11, + float a12, + float a20, + float a21, + float a22, + float a30, + float a31, + float a32 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + mat.colum2 = new Vector4( a02, a12, a22, a32 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public override bool Equals( object? obj ) + { + return ( obj is Matrix43 x ) && Equals( x ); + } + + public bool Equals( Matrix43 other ) + { + return EqualityComparer.Default.Equals( mat, + other.mat ); + } + + public override int GetHashCode() + { + return HashCode.Combine( + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), + mat.colum2.GetHashCode() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet3* source = &this.mat ) + fixed( ColumnSet4* target = &this.transpose ) { + InternalIO.Intrinsic.transpose34( source, target ); + } + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator -( Matrix43 left, Matrix43 right ) + { + return new Matrix43( + left.mat.colum0 - right.mat.colum0, + left.mat.colum1 - right.mat.colum1, + left.mat.colum2 - right.mat.colum2 ); + } + + public static bool operator !=( Matrix43 left, Matrix43 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix43 operator *( Matrix43 mat, float value ) + { + return new Matrix43( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix43 left, Matrix32 right ) + { + left.InternalTranspose(); + return new Matrix42( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix43 left, Matrix33 right ) + { + left.InternalTranspose(); + return new Matrix43( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix43 left, Matrix34 right ) + { + left.InternalTranspose(); + return new Matrix44( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator /( Matrix43 mat, float value ) + { + return new Matrix43( + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix43 operator +( Matrix43 left, Matrix43 right ) + { + Matrix43 ret = new Matrix43(); + InternalIO.Intrinsic.add_mat_3(&left.mat, &right.mat, &ret.mat); + return ret; + } + + public static bool operator ==( Matrix43 left, Matrix43 right ) + { + return left.Equals( right ); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Math/Linear/Matrix44.cs b/StgSharp.Common/Math/Linear/Matrix44.cs new file mode 100644 index 00000000..6e633415 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Matrix44.cs @@ -0,0 +1,324 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Matrix44.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.Internal.Intrinsic; + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( + LayoutKind.Explicit, + Size = ( 2 * 16 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] + public unsafe struct Matrix44 : IEquatable, IMat + { + + [FieldOffset( 2 * 64 * sizeof( float ) )] internal bool isTransposed; + + [FieldOffset( 0 )] internal ColumnSet4 mat; + [FieldOffset( 16 * sizeof( float ) )] internal ColumnSet4 transpose; + [FieldOffset( 0 * sizeof( float ) )] internal Vec4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vec4 colum1; + [FieldOffset( 8 * sizeof( float ) )] internal Vec4 colum2; + [FieldOffset( 12 * sizeof( float ) )] internal Vec4 colum3; + + public Matrix44() + { + Unsafe.SkipInit(out this); + isTransposed = false; + } + + internal Matrix44( ColumnSet4 mat ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + this.mat = mat; + } + + internal Matrix44( + Vector4 vec0, + Vector4 vec1, + Vector4 vec2, + Vector4 vec3 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = vec0; + mat.colum1 = vec1; + mat.colum2 = vec2; + mat.colum3 = vec3; + } + + public unsafe Matrix44( + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13, + float a20, + float a21, + float a22, + float a23, + float a30, + float a31, + float a32, + float a33 ) + { + Unsafe.SkipInit(out this); + isTransposed = false; + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + mat.colum2 = new Vector4( a02, a12, a22, a32 ); + mat.colum3 = new Vector4( a03, a13, a23, a33 ); + } + + public unsafe float this[ int rowNum, int columNum ] + { + get + { + #if DEBUG + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + #endif + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; + } + } + set + { + #if DEBUG + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); + } + #endif + InternalTranspose(); + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; + } + isTransposed = false; + } + } + + public Matrix44 Transpose + { + get + { + InternalTranspose(); + return new Matrix44( this.transpose ); + } + } + + public static Matrix44 Unit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); + + public static Matrix44 WNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1 ); + + public static Matrix44 XNegativeUnit => new Matrix44( + -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); + + public static Matrix44 YNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); + + public static Matrix44 ZNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe float Det() + { + InternalTranspose(); + fixed( ColumnSet4* _this = &mat, _trans = &transpose ) { + return InternalIO.Intrinsic.det_mat_4( _this, _trans ); + } + } + + public override bool Equals( object? obj ) + { + return ( obj is Matrix44 x ) && Equals( x ); + } + + public bool Equals( Matrix44 other ) + { + return mat.Equals( other.mat ); + } + + public override int GetHashCode() + { + return HashCode.Combine( + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), + mat.colum2.GetHashCode(), mat.colum3.GetHashCode() ); + } + + public override string ToString() + { + InternalTranspose(); + return $"{transpose.colum0}{transpose.colum1}{transpose.colum2}{transpose.colum3}"; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal unsafe void InternalTranspose() + { + if( !isTransposed ) { + fixed( ColumnSet4* source = &mat, target = &transpose ) { + InternalIO.Intrinsic.transpose44( source, target ); + } + isTransposed = true; + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator -( + Matrix44 left, + Matrix44 right ) + { + return new Matrix44( + right.mat.colum0 - left.mat.colum0, + right.mat.colum1 - left.mat.colum1, + right.mat.colum2 - left.mat.colum2, + right.mat.colum3 - left.mat.colum3 ); + } + + public static bool operator !=( Matrix44 left, Matrix44 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator *( Matrix44 mat, float value ) + { + return new Matrix44( + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public unsafe Matrix42 Multiple(in Matrix42 right) + { + InternalTranspose(); + Matrix42 ans = new Matrix42(); + fixed (ColumnSet4* lptr = &transpose) + fixed (Vector4* rptr = &right.mat.colum0) + { + InternalIO.Intrinsic.dot_42(lptr,rptr, &ans.mat.colum0); + } + return ans; + } + + [Obsolete("The operand may cause performance loss, use Matrix.Multiple() method instead.",false)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator *( + Matrix44 left, + Matrix42 right ) + { + return left.Multiple(right); + } + + public unsafe Matrix43 Multiple(in Matrix43 right) + { + InternalTranspose(); + + Matrix43 ans = new Matrix43(); + + fixed(Vector4* rptr = &right.mat.colum0) + fixed (ColumnSet4* lptr = &transpose) + { + InternalIO.Intrinsic.dot_43(lptr,rptr,&ans.mat.colum0); + } + return ans; + } + + [Obsolete("The operand may cause performance loss, use Matrix.Multiple() method instead.", false)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix44 left, Matrix43 right ) + { + return left.Multiple(in right); + } + + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix44 left, Matrix44 right ) + { + left.InternalTranspose(); + return new Matrix44( + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ), + + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum3 ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator +(Matrix44 left, Matrix44 right ) + { + Matrix44 ret = new Matrix44(); + InternalIO.Intrinsic.add_mat_4(&left.mat, &right.mat, &ret.mat); + return ret; + } + + public static bool operator ==( Matrix44 left, Matrix44 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Vec2.cs b/StgSharp.Common/Math/Linear/Vec2.cs new file mode 100644 index 00000000..a7c7ea12 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vec2.cs @@ -0,0 +1,133 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec2.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.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + /// + /// A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + /// vector. + /// + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec2 : IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 2 ]; + + [FieldOffset( 0 )] + internal Vector2 v; + + [FieldOffset( 0 )] + internal Vector4 vec; + + [FieldOffset( 0 )] + public float X; + [FieldOffset( 4 )] + public float Y; + + internal Vec2( Vector2 vec ) + { + v = vec; + } + + internal Vec2( Vector4 vec ) + { + this.vec = vec; + } + + public Vec2( float x, float y ) + { + v = new Vector2( x, y ); + } + + public static Vec2 Unit => new Vec2( 1, 1 ); + + public static Vec2 Zero => new Vec2( 0, 0 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Cross( Vec2 right ) + { + return ( X * right.Y ) - ( Y * right.X ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Dot( Vec2 vec ) + { + return Vector2.Dot( v, vec.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec2 operator -( Vec2 left, Vec2 right ) + { + return new Vec2( left.v - right.v ); + } + + public static bool operator !=( Vec2 left, Vec2 right ) + { + return !( left == right ); + } + + public static Vec2 operator *( Vec2 vec, float value ) + { + return new Vec2( vec.v * value ); + } + public static Vec2 operator *( float value, Vec2 vec ) + { + return new Vec2( vec.v * value ); + } + + public static Vec2 operator /( Vec2 vec, float value ) + { + return new Vec2( vec.v / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec2 operator +( Vec2 left, Vec2 right ) + { + return new Vec2( left.v + right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Vec2 left, Vec2 right ) + { + return left.v == right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static implicit operator Vec2( (float, float) tuple ) + { + return new Vec2( tuple.Item1, tuple.Item2 ); + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Vec3.cs b/StgSharp.Common/Math/Linear/Vec3.cs new file mode 100644 index 00000000..9fba0367 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vec3.cs @@ -0,0 +1,226 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec3.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.HighPerformance; +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec3 : IEquatable, IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 3 ]; + [FieldOffset( 0 )] + internal M128 reg; + + [FieldOffset( 0 )] + internal Vector3 v; + + [FieldOffset( 0 )] + internal Vector4 vec; + + [FieldOffset( 0 )] public float X; + [FieldOffset( 4 )] public float Y; + [FieldOffset( 8 )] public float Z; + + internal Vec3( Vector4 vector ) + { + vec = vector; + } + + internal Vec3( Vector3 vector ) + { + v = vector; + } + + public Vec3( Vec2 xy, float z ) + { + vec = xy.vec; + Z = z; + } + + public Vec3( float x, float y, float z ) + { + #if NET5_0_OR_GREATER + Unsafe.SkipInit( out vec ); + #endif + v = new Vector3( x, y, z ); + } + + public unsafe Vec2 XY + { + get => new Vec2( this.vec ); + set + { + fixed( Vector3* vptr = &v ) { + *( Vector2* )vptr = value.v; + } + } + } + + public Vec3 XYZ + { + get { return new Vec3( v ); } + } + + public static Vec3 Zero + { + get => new Vec3( 0, 0, 0 ); + } + + public static Vec3 One => new Vec3( 1, 1, 1 ); + + public static Vec3 UnitX => new Vec3( 1, 0, 0 ); + + public static Vec3 UnitY => new Vec3( 0, 1, 0 ); + + public static Vec3 UnitZ => new Vec3( 0, 0, 1 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 Cross( Vec3 left, Vec3 right ) + { + return Linear.Cross( left, right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Dot( Vec3 right ) + { + return Vector3.Dot( v, right.v ); + } + + public bool Equals( Vec3 other ) + { + return this.vec == other.vec; + } + + public override bool Equals( object obj ) + { + if( obj is Vec3 ) { + return this == ( Vec3 )obj; + } else { + return false; + } + } + + public override unsafe int GetHashCode() + { + fixed( float* add = &X ) { + return HashCode.Combine( X, Y, Z, ( ulong )add ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float GetMaxValue() + { + float ret = X; + ret = ( ret > Y ) ? ret : Y; + ret = ( ret > Z ) ? ret : Z; + return ret; + } + + public static bool IsParallel( Vec3 left, Vec3 right ) + { + return Cross( left, right ) == Zero; + } + + public override string ToString() + { + return $"[{X},{Y},{Z}]"; + } + + public string ToString( string sample ) + { + return $"[{X.ToString(sample)},{Y.ToString(sample)},{Z.ToString(sample)}]"; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator -( Vec3 vec ) + { + return new Vec3( -vec.vec ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator -( Vec3 left, Vec3 right ) + { + return new Vec3( left.v - right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( Vec3 left, Vec3 right ) + { + return left.v != right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator *( Vec3 vec, float value ) + { + return new Vec3( vec.v * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float operator *( Vec3 left, Vec3 right ) + { + return Vector3.Dot( left.v, right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator /( Vec3 vec, float value ) + { + return new Vec3( vec.v / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator +( Vec3 left, Vec3 right ) + { + return new Vec3( left.vec + right.vec ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Vec3 left, Vec3 right ) + { + return left.v == right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe implicit operator Vec3( + (float, float, float) tuple ) + { + Vec3 v = *( Vec3* )&tuple; + v.vec.W = 0.0f; + return v; + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Vec4.cs b/StgSharp.Common/Math/Linear/Vec4.cs new file mode 100644 index 00000000..6382a4f4 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vec4.cs @@ -0,0 +1,171 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec4.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.HighPerformance; +using StgSharp.Internal.Intrinsic; +using StgSharp.Math; + +using System; +using System.Data.Common; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec4 : IEquatable, IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 4 ]; + + [FieldOffset( 0 )] internal M128 reg; + + [FieldOffset( 0 )] internal Vector4 vec; + [FieldOffset( 12 )] public float W; + + [FieldOffset( 0 )] public float X; + [FieldOffset( 4 )] public float Y; + [FieldOffset( 8 )] public float Z; + + internal Vec4( Vector4 v ) + { + vec = v; + } + + public Vec4( Vec3 v, float w ) + { + vec = v.vec; + W = w; + } + + public Vec4( float x, float y, float z, float w ) + { + vec = new Vector4( x, y, z, w ); + } + + public unsafe Vec2 XY + { + get => new Vec2( vec ); + set + { + X = value.X; + Y = value.Y; + } + } + + public unsafe Vec3 XYZ + { + get => new Vec3( vec ); + set + { + float w = W; + vec = value.vec; + W = w; + } + } + + public static Vec4 One + { + get => new Vec4( Vector4.One ); + } + + public static Vec4 Zero + { + get => new Vec4( Vector4.Zero ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 Add( Vec4 left, Vec4 right ) + { + return left + right; + } + + public override bool Equals( object obj ) + { + return ( obj is Vec4 v ) ? ( v == this ) : false; + } + + public override int GetHashCode() + { + return vec.GetHashCode(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 Subtract( Vec4 left, Vec4 right ) + { + return left - right; + } + + public override string ToString() + { + return vec.ToString(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator -( Vec4 left, Vec4 right ) + { + return new Vec4( left.vec - right.vec ); + } + + public static bool operator !=( Vec4 left, Vec4 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator *( Matrix44 mat, Vec4 vec ) + { + mat.InternalTranspose(); + return new Vec4( + Vector4.Dot( mat.transpose.colum0, vec.vec ), + Vector4.Dot( mat.transpose.colum1, vec.vec ), + Vector4.Dot( mat.transpose.colum2, vec.vec ), + Vector4.Dot( mat.transpose.colum3, vec.vec ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator +( Vec4 left, Vec4 right ) + { + return new Vec4( left.vec + right.vec ); + } + + public static bool operator ==( Vec4 left, Vec4 right ) + { + return left.vec == right.vec; + } + + bool IEquatable.Equals( Vec4 other ) + { + return vec == other.vec; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Math/Linear/Vector.Cross.cs b/StgSharp.Common/Math/Linear/Vector.Cross.cs new file mode 100644 index 00000000..1f1866e0 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vector.Cross.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.Cross.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Linear + { + + public static float Cross( Vec2 vec1, Vec2 vec2 ) + { + return ( vec1.X * vec2.Y ) - ( vec1.Y * vec2.X ); + } + + public static Vec3 Cross( Vec3 vec1, Vec3 vec2 ) + { + return new Vec3( + ( vec1.Y * vec2.Z ) - ( vec1.Z * vec2.Y ), + ( vec1.X * vec2.Z ) - ( vec1.Z * vec2.X ), + ( vec1.X * vec2.Y ) - ( vec1.Y * vec2.X ) ); + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Vector.GetAngle.cs b/StgSharp.Common/Math/Linear/Vector.GetAngle.cs new file mode 100644 index 00000000..81144fe6 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vector.GetAngle.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.GetAngle.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Linear + { + + public static float GetAngle( Vec2 vec1, Vec2 vec2 ) + { + return Scaler.ACos( + 1 + //vec1.multiple(vec2) + / ( vec1.GetLength() * vec2.GetLength() ) ); + } + + public static float GetAngle( Vec3 vec1, Vec3 vec2 ) + { + return Scaler.ACos( + ( vec1 * vec2 ) / ( vec1.GetLength() * vec2.GetLength() ) ); + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Vector.GetLength.cs b/StgSharp.Common/Math/Linear/Vector.GetLength.cs new file mode 100644 index 00000000..4a6ab6a6 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vector.GetLength.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.GetLength.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Linear + { + + public static float GetLength( this Vec3 vec ) + { + return Scaler.Sqrt( vec.Dot( vec ) ); + } + + public static float GetLength( this Vec2 vec ) + { + return Scaler.Sqrt( vec.Dot( vec ) ); + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Vector.Normalize.cs b/StgSharp.Common/Math/Linear/Vector.Normalize.cs new file mode 100644 index 00000000..5ba9919a --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vector.Normalize.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.Normalize.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.Internal; +using StgSharp.Math; + +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.Math +{ + public static partial class Linear + { + + public static Vec4 Normalize( Vec4 vec ) + { + return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static Vec3 Normalize( Vec3 vec ) + { + return new Vec3 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static unsafe void Normalize( ref Vec4 source, ref Vec4 target ) + { + Vector4 s = source.vec; + Vector4 t = target.vec; + + s = Vector4.Normalize( s ); + + float dotProduct = Vector4.Dot( s, t ); + Vector4 projection = Vector4.Multiply( s, t ); + + t -= projection; + + source.vec = s; + target.vec = t; + } + + public static unsafe void Normalize( ref Vec3 source, ref Vec3 target ) + { + Vector3 s = source.v; + Vector3 t = target.v; + + s = Vector3.Normalize( s ); + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, + s ) ) * s; + t -= projection; + t = Vector3.Normalize( t ); + + source.v = s; + target.v = t; + } + + } +} diff --git a/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs b/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs new file mode 100644 index 00000000..5cd1da89 --- /dev/null +++ b/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs @@ -0,0 +1,99 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vector.Orthogonalize.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.Internal.Intrinsic; +using StgSharp.Math; + +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.Math +{ + public static partial class Linear + { + + public static Vec4 Orthogonalize( Vec4 vec ) + { + return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static Vec3 Orthogonalize( Vec3 vec ) + { + return new Vec3 { vec = Vector4.Normalize( vec.vec ) }; + } + + public static unsafe void Orthogonalize( + ref Vec4 source, + ref Vec4 target ) + { + Vector4 s = source.vec; + Vector4 t = target.vec; + + s = Vector4.Normalize( s ); + + float dotProduct = Vector4.Dot( s, t ); + Vector4 projection = Vector4.Multiply( s, t ); + + t -= projection; + + source.vec = s; + target.vec = t; + } + + /// + /// Orthogonalize two s, let their length be 1 and perpendicular to each + /// other. + /// + /// + /// + public static unsafe void Orthogonalize( + ref Vec3 source, + ref Vec3 target ) + { + Vector3 s = source.v; + Vector3 t = target.v; + + s = Vector3.Normalize( s ); + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, + s ) ) * s; + t -= projection; + t = Vector3.Normalize( t ); + + source.v = s; + target.v = t; + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/ACos.cs b/StgSharp.Common/Math/Scalar/ACos.cs new file mode 100644 index 00000000..90e8744d --- /dev/null +++ b/StgSharp.Common/Math/Scalar/ACos.cs @@ -0,0 +1,110 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ACos.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float ACos( float x ) + { + return MathF.Acos( x ); + + /* + int sign = 1; + float y; + + if (x < 0) + { + sign = -1; + y = -x; + } + else + { + y = x; + } + + if (x > 1) + { + throw new ArgumentException(); + } + + float r, s, u, v = 0.0f; + bool transform = (y >= 0.5f); + + if (transform) + { + r = 0.5f * (1.0f - y); + s = Scaler.Sqrt(r); + y = s; + } + else + { + r = y * y; + } + u = r * (0.184161606965100694821398249421F + + (-0.0565298683201845211985026327361F + + (-0.0133819288943925804214011424456F - + 0.00396137437848476485201154797087F * r) * r) * r) / + (1.10496961524520294485512696706F - + 0.836411276854206731913362287293F * r); + /* + + if (transform) + { + float c, s1, p, q; + uint us; + + us = *(uint*)&s; + uint uss = us & 0xffff0000; + s1 = *(float*)&uss; + + c = (r - s1 * s1) / (s + s1); + p = 2.0F * s * u - (piby2_tail - 2.0F * c); + q = hpiby2_head - 2.0F * s1; + v = hpiby2_head - (p - q); + } + else + { + v = y + y * u; + } + + v = sign * v; + + return piby2 - v; + */ + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/ASin.cs b/StgSharp.Common/Math/Scalar/ASin.cs new file mode 100644 index 00000000..7b32d995 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/ASin.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ASin.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; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + private const float + piby2_tail = 7.5497894159e-08f, /* 0x33a22168 */ + hpiby2_head = 7.8539812565e-01f, /* 0x3f490fda */ + piby2 = 1.5707963705e+00f; /* 0x3fc90fdb */ + + /// + /// Reurns the value of ArcSin(x) + /// + /// The sine value of the angle + /// + /// + public static float ASin( float x ) + { + return MathF.Asin( x ); + /* + int sign = 1; + float y; + + if (x < 0) + { + sign = -1; + y = -x; + } + else + { + y = x; + } + + if (x > 1) + { + throw new ArgumentException(); + } + + float r, s, u, v = 0.0f; + bool transform = (y >= 0.5f); + + if (transform) + { + r = 0.5f * (1.0f - y); + s = Scaler.Sqrt(r); + y = s; + } + else + { + r = y * y; + } + u = r * (0.184161606965100694821398249421F + + (-0.0565298683201845211985026327361F + + (-0.0133819288943925804214011424456F - + 0.00396137437848476485201154797087F * r) * r) * r) / + (1.10496961524520294485512696706F - + 0.836411276854206731913362287293F * r); + /* + + if (transform) + { + float c, s1, p, q; + uint us; + + us = *(uint*)&s; + uint uss = us & 0xffff0000; + s1 = *(float*)&uss; + + c = (r - s1 * s1) / (s + s1); + p = 2.0F * s * u - (piby2_tail - 2.0F * c); + q = hpiby2_head - 2.0F * s1; + v = hpiby2_head - (p - q); + } + else + { + v = y + y * u; + }/* + + return sign * v; + */ + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/ATan.cs b/StgSharp.Common/Math/Scalar/ATan.cs new file mode 100644 index 00000000..e9068cd2 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/ATan.cs @@ -0,0 +1,119 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ATan.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float ATan( float x ) + { + return MathF.Atan( x ); + /* + float sign = 1, angle = 0; + if (x < 0) + { + sign = -1; + x = -x; + } + uint xBit = *(uint*)&x; + int xExp = (int)(xBit >> 23) - 127; + if (xExp >= 26) + { + return 1; + } + if (xExp <= -15) + { + return x; + } + if (xExp >= 0) + { + x = (x - 1) / (x + 1); + angle = 0.7853981634f; + } + + float v = 0.7853981634f * x + x * (1 - x) * (0.2447f + 0.0663f * x); + v += angle; + v *= sign; + + return v; + + + } + + + public static unsafe float ATan(float x, float y) + { + + + float z = y / x; + + float sign = 1, angle = 0, angle2 = 0; + if (x < 0) + { + angle = -3.1415926535f; + } + if (z < 0) + { + sign = -1; + z = -z; + } + uint zBit = *(uint*)&z; + int zExp = (int)(zBit >> 23) - 127; + if (zExp >= 26) + { + return 1; + } + if (zExp <= -15) + { + return z; + } + if (zExp >= 0) + { + z = (z - 1) / (z + 1); + angle2 = 0.7853981634f; + } + + float v = 0.7853981634f * z + z * (1 - z) * (0.2447f + 0.0663f * z); + v *= 57.29577951f; + v += angle2; + v += angle; + v *= sign; + + return v; + */ + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/BasicOps.cs b/StgSharp.Common/Math/Scalar/BasicOps.cs new file mode 100644 index 00000000..e211a3d3 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/BasicOps.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="BasicOps.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.Globalization; +using System.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float Abs( float x ) + { + uint* a = ( uint* )&x; + *a &= 0b_0111_1111_1111_1111_1111_1111_1111_1111; + return *( float* )a; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int Abs( int x ) + { + uint* a = ( uint* )&x; + *a &= 0b_0111_1111_1111_1111_1111_1111_1111_1111; + return *( int* )a; + } + + internal static string GetListSeparator( + IFormatProvider formatProvider ) + { + if( formatProvider is CultureInfo cultureInfo ) { + return cultureInfo.TextInfo.ListSeparator; + } + + if( formatProvider?.GetFormat( typeof( TextInfo ) ) is TextInfo textInfo ) { + return textInfo.ListSeparator; + } + + return CultureInfo.CurrentCulture.TextInfo.ListSeparator; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Math/Scalar/Compare.cs b/StgSharp.Common/Math/Scalar/Compare.cs new file mode 100644 index 00000000..8f7b2e21 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Compare.cs @@ -0,0 +1,65 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Compare.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.Math +{ + public static partial class Scaler + { + + public static float MaxOf( params float[] stream ) + { + float ret = stream[ 0 ]; + foreach( float num in stream ) { + if( ret < num ) { + ret = num; + } + } + return ret; + } + + public static float MinOf( params float[] stream ) + { + float ret = stream[ 0 ]; + foreach( float num in stream ) { + if( ret > num ) { + ret = num; + } + } + return ret; + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Cos.cs b/StgSharp.Common/Math/Scalar/Cos.cs new file mode 100644 index 00000000..cb8fa828 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Cos.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Cos.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( float x ) + { + /* + float refer = x / 360.0f; + refer -= (int)refer; + + refer *= 40; + int a = (int)refer; //大分度,查表 + refer -= a; //小分度,拟合 + + float refer2 = refer * refer; + + + return ((-sinData[a]) * ((0.1570796327f * refer) - (6.459640975e-4f * refer * refer2))) + + (cosData[a] * ((1 - (0.0123370055f * refer2)) + (2.536695709e-5f * refer2 * refer2))); + */ + return MathF.Cos( x ); + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Ctor.cs b/StgSharp.Common/Math/Scalar/Ctor.cs new file mode 100644 index 00000000..b976dcdd --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Ctor.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Ctor.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.Runtime.InteropServices; + +namespace StgSharp.Math +{ + public unsafe delegate float ScalarCalcHandler( float* x ); + + public static unsafe partial class Scaler + { + + private const uint MEM_COMMIT = 0x1000; + private const uint MEM_RELEASE = 0x8000; + private const uint MEM_RESERVE = 0x2000; + private const uint PAGE_EXECUTE_READWRITE = 0x40; + + static Scaler() { } + + [DllImport( "Kernel32.dll", EntryPoint = "VirtualAlloc" )] + private static extern IntPtr VirtualAlloc( + IntPtr address, + int size, + uint allocType, + uint protect ); + + [DllImport( "Kernel32.dll", EntryPoint = "VirtualFree" )] + private static extern bool VirtualFree( + IntPtr address, + int size, + uint freeType ); + + } +} diff --git a/StgSharp.Common/Math/Scalar/Exp.cs b/StgSharp.Common/Math/Scalar/Exp.cs new file mode 100644 index 00000000..4df46ac0 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Exp.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Exp.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + public const float E = 2.718281828f; + + /// + /// Get the value of E ^ x; + /// + /// + /// + public static unsafe float Exp( float x ) + { + if( x == 1 ) { + return E; + } + if( x == 0 ) { + return 1; + } + + bool sign = false; + if( x < 0 ) { + sign = true; + x = -x; + } + + float z = x, t; + if( x < 0.5f ) { + t = 1.0f + ( x * ( 1.0f + ( x * ( 0.5f + ( x * ( 0.1666666667f + ( x * ( 0.0416666666667f + ( x * 8.333333333e-3f ) ) ) ) ) ) ) ) ); + } else { + /* + * define z = n * 2 ^ m + * n is between 0 and 0.5 + */ + uint zBit = *( uint* )&z; + uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; + uint uintm = zBitAbs >> 23; + int m = ( *( int* )&uintm ) - 126; + + + uint nBit = ( zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111 ) + 0b_0011_1111_0000_0000_0000_0000_0000_0000; + float n = ( *( float* )&nBit ) - 1; + + t = 2.718281828f + ( n * ( 2.718281828f + ( n * ( 1.359140914f + ( n * ( 0.4530469714f + ( n * ( 0.1132617429f + ( n * 0.02265234857f ) ) ) ) ) ) ) ) ); + + for( int i = 0; i < m; i++ ) { + t = t * t; + } + } + + if( sign ) { + t = 1 / t; + } + return t; + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Function.cs b/StgSharp.Common/Math/Scalar/Function.cs new file mode 100644 index 00000000..df600556 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Function.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Function.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public class Function { } +} diff --git a/StgSharp.Common/Math/Scalar/Log.cs b/StgSharp.Common/Math/Scalar/Log.cs new file mode 100644 index 00000000..9003770d --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Log.cs @@ -0,0 +1,81 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Log.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; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + private static readonly float[] logArray = { + 0f, 0.00995033085316809f, 0.0198026272961797f, 0.0295588022415444f, 0.0392207131532813f, 0.048790164169432f, 0.0582689081239758f, 0.0676586484738149f, 0.0769610411361284f, 0.0861776962410524f, 0.0953101798043249f, 0.104360015324243f, 0.113328685307003f, 0.122217632724249f, 0.131028262406404f, 0.139761942375159f, 0.148420005118273f, 0.157003748809665f, 0.165514438477573f, 0.173953307123438f, 0.182321556793955f, 0.19062035960865f, 0.198850858745165f, 0.207014169384326f, 0.215111379616945f, 0.22314355131421f, 0.231111720963387f, 0.2390169004705f, 0.246860077931526f, 0.254642218373581f, 0.262364264467491f, 0.27002713721306f, 0.27763173659828f, 0.285178942233662f, 0.29266961396282f, 0.300104592450338f, 0.307484699747961f, 0.314810739840034f, 0.322083499169113f, 0.3293037471426f, 0.336472236621213f, 0.343589704390077f, 0.350656871613169f, 0.357674444271816f, 0.364643113587909f, 0.371563556432483f, 0.378436435720245f, 0.385262400790645f, 0.392042087776024f, 0.398776119957368f, 0.405465108108164f, 0.412109650826833f, 0.418710334858185f, 0.425267735404344f, 0.431782416425538f, 0.438254930931155f, 0.444685821261446f, 0.451075619360217f, 0.457424847038875f, 0.46373401623214f, 0.470003629245736f, 0.476234178996372f, 0.482426149244293f, 0.488580014818671f, 0.494696241836107f, 0.500775287912489f, 0.506817602368452f, 0.512823626428664f, 0.518793793415168f, 0.524728528934982f, 0.53062825106217f, 0.536493370514568f, 0.542324290825362f, 0.548121408509688f, 0.553885113226438f, 0.559615787935423f, 0.56531380905006f, 0.570979546585738f, 0.576613364303994f, 0.582215619852664f, 0.587786664902119f, 0.593326845277734f, 0.598836501088704f, 0.60431596685333f, 0.609765571620894f, 0.615185639090233f, 0.62057648772511f, 0.625938430866495f, 0.631271776841858f, 0.636576829071551f, 0.641853886172395f, 0.647103242058538f, 0.65232518603969f, 0.657520002916794f, 0.662687973075237f, 0.667829372575655f, 0.672944473242426f, 0.678033542749897f, 0.683096844706444f, 0.688134638736401f, + }; + + /// + /// + /// + /// + /// + /// Returns the value of ln(x). + /// + public static unsafe float Log( float x ) + { + if( x < 0 ) { + throw new ArgumentOutOfRangeException(); + } + uint input = *( uint* )&x; + + int f = ( int )input; + f >>= 23; + f -= 127; + input <<= 9; + input >>= 9; + input += 0b_0011_1111_1000_0000_0000_0000_0000_0000; + float result = *( float* )&input; + uint order = ( ( uint )( result * 100 ) ) - 100; + + float cache = ( result / ( 1f + ( 0.01f * order ) ) ) - 1; + result = ( cache * ( -0.25f ) ) + 0.3333333333333f; + result = ( result * cache ) - 0.5f; + result = ( result * cache ) + 1.0f; + result *= cache; + + return + ( f * 0.6931471806f ) + result + logArray[ order ]; + } + + public static float Log( float x, float y ) + { + return Log( x ) / Log( y ); + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Pow.cs b/StgSharp.Common/Math/Scalar/Pow.cs new file mode 100644 index 00000000..87091efa --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Pow.cs @@ -0,0 +1,101 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Pow.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + /// + /// calculate the value of x^y + /// + /// + /// + /// Returns the value of x^y + public static unsafe float Pow( float x, float y ) + { + /* + * x^y = E ^ ( log( x ) * y ) + * Now define z = | log(x) * y | = m * n + * and m is an integer, and 0.5 < |n| < 1 + * then E ^ z = ( E ^ n ) ^ m + * + * + * As a float number can be expressed in (1+e)*(2^f) + * n = (1+e)/2 + * m = 2 ^ (f + 1) + * + */ + float z, t; + if( ( x == 1 ) || ( y == 0 ) ) { + return 1; + } + if( ( x == 1 ) && ( y == 0 ) ) { + return float.PositiveInfinity; + } + if( ( x == 0 ) && ( y != 0 ) ) { + return 0; + } + + z = Scaler.Log( x ) * y; + + bool sign = false; + if( z < 0 ) { + sign = true; + z = -z; + } + + if( z < 0.5f ) { + t = 1.0f + ( z * ( 1.0f + ( z * ( 0.5f + ( z * ( 0.1666666667f + ( z * ( 0.0416666666667f + ( z * 8.333333333e-3f ) ) ) ) ) ) ) ) ); + } else { + uint zBit = *( uint* )&z; + uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; + uint uintm = zBitAbs >> 23; + int m = ( *( int* )&uintm ) - 126; + + + uint nBit = ( zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111 ) + 0b_0011_1111_0000_0000_0000_0000_0000_0000; + float n = ( *( float* )&nBit ) - 1; + + t = 2.718281828f + ( n * ( 2.718281828f + ( n * ( 1.359140914f + ( n * ( 0.4530469714f + ( n * ( 0.1132617429f + ( n * 0.02265234857f ) ) ) ) ) ) ) ) ); + + for( int i = 0; i < m; i++ ) { + t = t * t; + } + } + if( sign ) { + t = 1 / t; + } + + return t; + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Random.cs b/StgSharp.Common/Math/Scalar/Random.cs new file mode 100644 index 00000000..562f7964 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Random.cs @@ -0,0 +1,127 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Random.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.Math; + +using System; +using System.Collections.Generic; +using System.Data; +using System.Numerics; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; +using System.Text; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + private static byte[] randomSeed; + + internal static float currentSeed +#if DEBUG + = 0.5f; + + #else + = Abs(System.DateTime.UtcNow.GetHashCode()); + #endif + + /// + /// returns a random float number between 0 and 1. + /// + /// + public static unsafe float LowProceisionRandom() + { + float seed = currentSeed; + + float sample = Scaler.Pow( Scaler.SeedSqrt( seed ), 2 ); + float sample2 = ( sample - seed ) / seed; + sample2 = Scaler.Abs( sample2 ); + + if( sample == 1 ) { + sample = sample2; + } + + currentSeed = sample; + sample2 *= 1000000; + + float result = sample2 - ( ( int )sample2 ); + if( result == 0 ) { + currentSeed = sample2 + 0.1f; + result = Scaler.LowProceisionRandom(); + } + return result; + } + + /// + /// + /// + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static T Random() where T: struct, IConvertible, INumber + + { + if( randomSeed == null ) { + randomSeed = new byte[64]; + string originSeed = + ( $"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(StgSharp))!) : + Assembly.GetEntryAssembly())}" ) + ( $"{DateTime.UtcNow.ToString("o")}" ); + using( SHA256 sha = SHA256.Create() ) { + randomSeed = sha.ComputeHash( + Encoding.UTF8.GetBytes( originSeed ) ); + } + } + using( SHA256 sha = SHA256.Create() ) { + randomSeed = sha.ComputeHash( randomSeed ); + } + fixed( byte* bptr = randomSeed ) { + return *( T* )bptr; + } + } + + /// + /// Generates a random seed in int value. + /// + /// + public static unsafe int RandomSeed() + { + float seedValue1 = LowProceisionRandom(); + float seedValue2 = LowProceisionRandom(); + uint seedValueBits = *( uint* )&seedValue1; + + float seedValue = seedValueBits * seedValue2; + + return *( int* )&seedValue; + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/SignOf.cs b/StgSharp.Common/Math/Scalar/SignOf.cs new file mode 100644 index 00000000..e88ec88a --- /dev/null +++ b/StgSharp.Common/Math/Scalar/SignOf.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="SignOf.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.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math +{ + public static unsafe partial class Scaler + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int SignOf( float x ) + { + if( x == 0 ) { + return 0; + } + if( x > 0 ) { + return 1; + } + return -1; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int SignOf( int x ) + { + if( x == 0 ) { + return 0; + } + if( x > 0 ) { + return 1; + } + return -1; + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Sin.cs b/StgSharp.Common/Math/Scalar/Sin.cs new file mode 100644 index 00000000..8b79166d --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Sin.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Sin.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.Net.NetworkInformation; +using System.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + public const float Pi = 3.1415926f; + + private static readonly float[] cosData = { + 1f, 0.987688341014302f, 0.951056517951169f, 0.891006527837756f, 0.809017000674805f, 0.707106790659974f, 0.587785265298989f, 0.453990516451646f, 0.309017014761716f, 0.156434488858737f, 2.67948965850537E-08f, -0.156434435928723f, -0.309016963794794f, -0.453990468702791f, -0.587785221943935f, -0.707106752766267f, -0.809016969175515f, -0.891006503508499f, -0.951056501391011f, -0.98768833263101f, -0.999999999999999f, -0.987688349397591f, -0.951056534511324f, -0.891006552167012f, -0.809017032174094f, -0.707106828553679f, -0.587785308654041f, -0.4539905642005f, -0.309017065728638f, -0.156434541788751f, -8.03846893110719E-08f, 0.156434382998709f, 0.309016912827872f, 0.453990420953934f, 0.58778517858888f, 0.707106714872559f, 0.809016937676222f, 0.891006479179238f, 0.951056484830851f, 0.987688324247716f, + }; + + private static readonly float[] sinData = { + 0f, 0.15643446239373f, 0.309016989278255f, 0.453990492577218f, 0.587785243621462f, 0.707106771713121f, 0.80901698492516f, 0.891006515673128f, 0.951056509671091f, 0.987688336822657f, 1f, 0.987688345205947f, 0.951056526231247f, 0.891006540002384f, 0.80901701642445f, 0.707106809606826f, 0.587785286976515f, 0.453990540326073f, 0.309017040245177f, 0.156434515323744f, 5.35897931701074E-08f, -0.156434409463716f, -0.309016938311333f, -0.453990444828362f, -0.587785200266408f, -0.707106733819413f, -0.809016953425868f, -0.891006491343869f, -0.951056493110931f, -0.987688328439363f, -0.999999999999997f, -0.987688353589235f, -0.951056542791401f, -0.891006564331638f, -0.809017047923737f, -0.70710684750053f, -0.587785330331566f, -0.453990588074927f, -0.309017091212098f, -0.156434568253757f, + }; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float Sin( float x ) + { + /* + float refer = x / 360.0f; + refer -= (int)refer; + + refer *= 40; + int a = (int)refer; //大分度,查表 + refer -= a; //小分度,拟合 + + float refer2 = refer * refer; + + + return (sinData[a] * ((1 - (0.0123370055f * refer2)) + (2.536695709e-5f * refer2 * refer2))) + + (cosData[a] * ((0.1570796327f * refer) - (6.459640975e-4f * refer * refer2))); + */ + return MathF.Sin( x ); + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Sqrt.cs b/StgSharp.Common/Math/Scalar/Sqrt.cs new file mode 100644 index 00000000..056a6a51 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Sqrt.cs @@ -0,0 +1,109 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Sqrt.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.Runtime.CompilerServices; + +namespace StgSharp.Math +{ + public static partial class Scaler + { + + public static unsafe float SeedSqrt( float x ) + { + /* + * 本方法采用分别对指数和小数处理的方法计算平方根 + * 将指数除以2即可获得结果的指数 + * (补充:指数最低位被加到小数位中以抵消一个多余的2 ^ 1的影响) + * 小数部分则统一乘以2 ^ 16后由y = Sqrt(x)在1.5 * 2 ^ 16处的切线近似 + * 为简化操作,提高计算速度,切线左界被移动到远点 + * 在进一步简化操作后,计算精度达到0.5%,速度约为.Net库函数的3倍 + */ + + if( x < 0 ) { + throw new ArgumentOutOfRangeException( + "Input is smaller than zero!" ); + } + if( x == 0 ) { + return 0; + } + /* + * 提取指数位并减半 + * 由于平方根仅对正数有效 + * 故不考虑正负号 + */ + + if( x < 0 ) { + throw new ArgumentOutOfRangeException(); + } + if( x <= 1e-12 ) { + return 0; + } + + //提取指数位并减去指数位中的127 + //由于平方根仅对正数有效 + //故不考虑正负号 + uint a = *( uint* )&x; + uint f = a; + f >>= 23; + f /= 2; + f += 64; + + //提取小数位 + //由于平方根仅对正数有效 + //故不考虑正负号 + + a -= 0b_0011_1111_0000_0000_0000_0000_0000_0000; + uint e = a << 8; + e >>= 8; + + //线性近似 + e *= 0b_1101_0001; + e >>= 24; + e += 0b_0000_0000_0001_0000_1010_1000_1110_0010; + + //还原指数 + f <<= 23; + e += f; + + float result = *( float* )&e; + result = ( result + ( x / result ) ) / 2; + return ( result + ( x / result ) ) / 2; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sqrt( float x ) + { + return MathF.Sqrt( x ); + /**/ + } + + } +} diff --git a/StgSharp.Common/Math/Scalar/Tan.cs b/StgSharp.Common/Math/Scalar/Tan.cs new file mode 100644 index 00000000..580fd019 --- /dev/null +++ b/StgSharp.Common/Math/Scalar/Tan.cs @@ -0,0 +1,55 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Tan.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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +namespace StgSharp.Math +{ + public static partial class Scaler + { + + public static float Tan( float x ) + { + float refer = x / 360.0f; + refer -= ( int )refer; + + refer *= 40; + int a = ( int )refer; //大分度,查表 + refer -= a; //小分度,拟合 + + float refer2 = refer * refer; + + float sin = ( 0.1570796327f * refer ) - ( 6.459640975e-4f * refer * refer2 ); + float cos = ( 1 - ( 0.0123370055f * refer2 ) ) + ( 2.536695709e-5f * refer2 * refer2 ); + + return ( ( sinData[ a ] * cos ) + ( cosData[ a ] * sin ) ) / ( ( cosData[ + a ] * cos ) - ( sinData[ a ] * sin ) ); + } + + } +} diff --git a/StgSharp.Common/Stg/Bullet.cs b/StgSharp.Common/Stg/Bullet.cs new file mode 100644 index 00000000..1f31f3c5 --- /dev/null +++ b/StgSharp.Common/Stg/Bullet.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Bullet.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.Math; + +using System; + +namespace StgSharp.Gaming +{ + public abstract class Bullet : IInstancing, IPlainEntity + { + + protected Bullet( + PlainInstancingBuffer buffer, + GeometryMotion movement, + Vec2 beginPosition, + float angle, + float scale ) + { + if( buffer == null ) { + throw new ArgumentNullException( nameof( 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; + set; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Common/Stg/CollisionTexture.cs b/StgSharp.Common/Stg/CollisionTexture.cs new file mode 100644 index 00000000..63f67677 --- /dev/null +++ b/StgSharp.Common/Stg/CollisionTexture.cs @@ -0,0 +1,193 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CollisionTexture.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.Internal; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; + +using StgSharp.Math; +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 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, + ( ( uint )g.VertexIndices.Length ) / 3, TypeCode.UInt32, + IntPtr.Zero, ( uint )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( Scaler.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, InternalIO.CollisionTextureVertexShader ); + fragmentShader.Compile( + 0, InternalIO.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, + ( uint )Width, ( uint )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 new file mode 100644 index 00000000..1d05b480 --- /dev/null +++ b/StgSharp.Common/Stg/TimeLine.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeLine.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.Text; + +namespace StgSharp.Stg +{ + public class TimeLine { } +} diff --git a/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs b/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs new file mode 100644 index 00000000..e720313a --- /dev/null +++ b/StgSharp.Common/Stg/Touhou/TouhouBuilder.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TouhouBuilder.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.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 new file mode 100644 index 00000000..0613d45c --- /dev/null +++ b/StgSharp.Common/Stg/Touhou/TouhouWindow.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TouhouWindow.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.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 new file mode 100644 index 00000000..f426bbc1 --- /dev/null +++ b/StgSharp.Common/Stg/Touhou/View/OpenningView.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="OpenningView.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.MVVM.View; +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 new file mode 100644 index 00000000..34092131 --- /dev/null +++ b/StgSharp.Common/StgSharp.Common.csproj @@ -0,0 +1,111 @@ + + + + net8.0 + True + Preview + True + True + AnyCPU;x64 + False + True + MIT + True + preview-all + Library + enable + Debug;Release; + + + + True + + + + False + portable + 1701;1702;0649;1591;0169 + False + + + + True + embedded + 1701;1702;0649;1591;0169 + False + + + + portable + False + 1701;1702;0649;1591;0169 + False + + + + 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 + + + + False + + + + False + + + + + + + diff --git a/StgSharp.Common/StgSharp.Common.csproj.user b/StgSharp.Common/StgSharp.Common.csproj.user new file mode 100644 index 00000000..88a55094 --- /dev/null +++ b/StgSharp.Common/StgSharp.Common.csproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/StgSharp.Common/Threading/CancellableTask.cs b/StgSharp.Common/Threading/CancellableTask.cs new file mode 100644 index 00000000..bd8e289d --- /dev/null +++ b/StgSharp.Common/Threading/CancellableTask.cs @@ -0,0 +1,153 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CancellableTask.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.Runtime.CompilerServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public class CancellableTask:IDisposable + { + private protected Action _startup; + private protected Task _internalTask; + private CancellationTokenSource cts; + private bool disposedValue; + + private protected CancellableTask() + { + cts = new CancellationTokenSource(); + } + + private protected CancellableTask( Action action ) + { + _internalTask = new Task( InternalAction ); + cts = new CancellationTokenSource(); + } + + public bool IsCompleted + { + get => _internalTask.IsCompleted; + } + + public CancellationTokenSource Cts + { + get => cts; + } + + public int Id + { + get => _internalTask.Id; + } + + public void Cancel() + { + Cts.Cancel(); + } + + public void CancelAndWait() + { + Cts.Cancel(); + _internalTask.Wait(); + } + + public static CancellableTask Run( Action startup ) + { + CancellableTask ret = new CancellableTask { _startup = startup }; + ret._internalTask = Task.Run( ret.InternalAction ); + return ret; + } + + public void Wait() + { + _internalTask.Wait(); + } + + public static void WaitAll( IEnumerable tasks ) + { + IEnumerable convertedTasks = tasks.Select( + ct => ct._internalTask ); + Task.WaitAll( convertedTasks.ToArray() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void InternalAction() + { + //Console.WriteLine($"Task {Task.CurrentId} is running."); + _startup( Cts.Token ); + } + + public static implicit operator Task( CancellableTask task ) + { + return task._internalTask; + } + + ~CancellableTask() + { + Cts.Dispose(); + } + + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + if (IsCompleted) + { + cts.Dispose(); + _internalTask.Dispose(); + } + else + { + throw new InvalidOperationException("Cannot dispose a cancellable task before completed"); + } + } + + disposedValue = true; + } + } + + // ~CancellableTask() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + } +} diff --git a/StgSharp.Common/Threading/EmptyThread.cs b/StgSharp.Common/Threading/EmptyThread.cs new file mode 100644 index 00000000..1340b9f2 --- /dev/null +++ b/StgSharp.Common/Threading/EmptyThread.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="EmptyThread.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.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public static partial class ThreadHelper + { + + private static readonly Thread _emptyThreadCache = new Thread( + () => { } ); + + static ThreadHelper() + { + _emptyThreadCache.Start(); + } + + /// + /// An individual thread doing nothing, and its always returns false. + /// + public static Thread EmptyThread + { + get => _emptyThreadCache; + } + + } +} diff --git a/StgSharp.Common/Threading/MainThreadAssert.cs b/StgSharp.Common/Threading/MainThreadAssert.cs new file mode 100644 index 00000000..f7dd494d --- /dev/null +++ b/StgSharp.Common/Threading/MainThreadAssert.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MainThreadAssert.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.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public static partial class ThreadHelper + { + + private static readonly int mainThreadId = Environment.CurrentManagedThreadId; + private static readonly ThreadLocal isNotMainThread = new ThreadLocal( + () => Environment.CurrentManagedThreadId != mainThreadId ); + + [Conditional( "DEBUG" )] + internal static void MainThreadAssert() + { + if( isNotMainThread.Value ) { + throw new InvalidOperationException( + $"Attempt to call sensitive operation which can be only called from main thread " + + $"from thread {Environment.CurrentManagedThreadId}." ); + } + } + + } +} diff --git a/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.deps.json b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..4c755f05 --- /dev/null +++ b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.deps.json @@ -0,0 +1,43 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {} + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.dll b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.dll new file mode 100644 index 00000000..5b110a77 Binary files /dev/null and b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.dll differ diff --git a/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.pdb b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.pdb new file mode 100644 index 00000000..92d03eb8 Binary files /dev/null and b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.pdb differ diff --git a/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.xml b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.xml new file mode 100644 index 00000000..f7f3186f --- /dev/null +++ b/StgSharp.Common/bin/x64/Debug/net8.0/StgSharp.Common.xml @@ -0,0 +1,648 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Part of a collection. This contains a direct reference to origin collection, + so all change to origin collection will be reflected in this object. + + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL Buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a Buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to Buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. Target of this frame Buffer should be set manually. + + The frame Buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame Buffer to a frame Buffer target Same function as glBindFramebuffer. + + The frame Buffer target of the binding operation. + The handle of the frame Buffer object to bind. + + + + Delete a render Buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to Buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.deps.json b/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.deps.json new file mode 100644 index 00000000..38d2e8b4 --- /dev/null +++ b/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.deps.json @@ -0,0 +1,58 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + } + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.dll b/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.dll new file mode 100644 index 00000000..249a2b5b Binary files /dev/null and b/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.dll differ diff --git a/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.xml b/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.xml new file mode 100644 index 00000000..557f4fd6 --- /dev/null +++ b/StgSharp.Common/bin/x64/Release/netstandard2.1/StgSharp.Common.xml @@ -0,0 +1,641 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame buffer object with _name frame buffer to the frame buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame buffer object with _name frame buffer to the frame buffer target specified + by target. Target of this frame buffer should be set manually. + + The frame buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame buffer to a frame buffer target Same function as glBindFramebuffer. + + The frame buffer target of the binding operation. + The handle of the frame buffer object to bind. + + + + Delete a render buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/StgSharp.Common/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Common/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Common/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..d87061fd --- /dev/null +++ b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfoInputs.cache b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfoInputs.cache new file mode 100644 index 00000000..aa6b19e1 --- /dev/null +++ b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +2d3ad66cecad0f67a390e05f6bc954ae3afbd4801eb606432d97babe8eed4aea diff --git a/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..2f204885 --- /dev/null +++ b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Common +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.assets.cache b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.assets.cache new file mode 100644 index 00000000..6aa2c298 Binary files /dev/null and b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.assets.cache differ diff --git a/StgSharp.Common/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Common/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Common/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..4cc796c1 --- /dev/null +++ b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache new file mode 100644 index 00000000..1162cbdd --- /dev/null +++ b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +c6f8984115f3d1707cb6ca73bba87a5caf6d5d8e68f8438fdcffe521b77ddf81 diff --git a/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..b742c566 --- /dev/null +++ b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = netstandard2.1 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Common +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.assets.cache b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.assets.cache new file mode 100644 index 00000000..8230af36 Binary files /dev/null and b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.assets.cache differ diff --git a/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache new file mode 100644 index 00000000..a0685836 Binary files /dev/null and b/StgSharp.Common/obj/Debug/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.dgspec.json b/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.dgspec.json new file mode 100644 index 00000000..644c7691 --- /dev/null +++ b/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.dgspec.json @@ -0,0 +1,84 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.g.props b/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.g.props new file mode 100644 index 00000000..7226a4fb --- /dev/null +++ b/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.11.0 + + + + + + \ No newline at end of file diff --git a/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.g.targets b/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.g.targets new file mode 100644 index 00000000..3dc06ef3 --- /dev/null +++ b/StgSharp.Common/obj/StgSharp.Common.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/StgSharp.Common/obj/project.assets.json b/StgSharp.Common/obj/project.assets.json new file mode 100644 index 00000000..b384dd3d --- /dev/null +++ b/StgSharp.Common/obj/project.assets.json @@ -0,0 +1,207 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/net7.0/_._": {} + }, + "runtime": { + "lib/net7.0/_._": {} + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + } + } + }, + "libraries": { + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "Microsoft.CSharp >= 4.7.0", + "System.Runtime.CompilerServices.Unsafe >= 6.1.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/StgSharp.Common/obj/project.nuget.cache b/StgSharp.Common/obj/project.nuget.cache new file mode 100644 index 00000000..c7e76403 --- /dev/null +++ b/StgSharp.Common/obj/project.nuget.cache @@ -0,0 +1,11 @@ +{ + "version": 2, + "dgSpecHash": "VQ/8uMxjyi0=", + "success": true, + "projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Common/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..bf452b96 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+83bde12d2227bf32a3b939e94849bbd7273bad21")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfoInputs.cache b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfoInputs.cache new file mode 100644 index 00000000..6a46d5db --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +4f5a62118e9ef2fea99279eb4d91b170cb5088614d2837c402043dad90b9c251 diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..2f204885 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Common +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.assets.cache b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.assets.cache new file mode 100644 index 00000000..936edad4 Binary files /dev/null and b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.assets.cache differ diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.BuildWithSkipAnalyzers b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.CoreCompileInputs.cache b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..fc9d4455 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +8cfbff878860a8a431d2ac537d4f36d975f2febfb4f6dcb135a1672469e0d32d diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..c4578653 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,14 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\net8.0\StgSharp.Common.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\net8.0\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Debug\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\refint\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Debug\net8.0\ref\StgSharp.Common.dll diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.dll b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.dll new file mode 100644 index 00000000..5b110a77 Binary files /dev/null and b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.dll differ diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.pdb b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.pdb new file mode 100644 index 00000000..92d03eb8 Binary files /dev/null and b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.pdb differ diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json new file mode 100644 index 00000000..a48608e3 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/83bde12d2227bf32a3b939e94849bbd7273bad21/*"}} \ No newline at end of file diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.xml b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.xml new file mode 100644 index 00000000..f7f3186f --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.xml @@ -0,0 +1,648 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Part of a collection. This contains a direct reference to origin collection, + so all change to origin collection will be reflected in this object. + + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL Buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a Buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to Buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. Target of this frame Buffer should be set manually. + + The frame Buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame Buffer to a frame Buffer target Same function as glBindFramebuffer. + + The frame Buffer target of the binding operation. + The handle of the frame Buffer object to bind. + + + + Delete a render Buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to Buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/ref/StgSharp.Common.dll b/StgSharp.Common/obj/x64/Debug/net8.0/ref/StgSharp.Common.dll new file mode 100644 index 00000000..7925a012 Binary files /dev/null and b/StgSharp.Common/obj/x64/Debug/net8.0/ref/StgSharp.Common.dll differ diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/refint/StgSharp.Common.dll b/StgSharp.Common/obj/x64/Debug/net8.0/refint/StgSharp.Common.dll new file mode 100644 index 00000000..7925a012 Binary files /dev/null and b/StgSharp.Common/obj/x64/Debug/net8.0/refint/StgSharp.Common.dll differ diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Common/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..1517f50a --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+4e5a1b0dfb69dd073410d254e2bab596629c4536")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache new file mode 100644 index 00000000..f5da0ad4 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +d0c6f8196c97c2f2e2834b54d6b209834c4e3a9799e44ab8f1380d2812886f3b diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..b742c566 --- /dev/null +++ b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = netstandard2.1 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Common +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.assets.cache b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.assets.cache new file mode 100644 index 00000000..0bce5717 Binary files /dev/null and b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.assets.cache differ diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache new file mode 100644 index 00000000..a0685836 Binary files /dev/null and b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.BuildWithSkipAnalyzers b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt b/StgSharp.Common/obj/x64/Debug/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Common/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..7a90fe90 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache new file mode 100644 index 00000000..7aa73234 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +71414109c08ac46028dedddd6b3f1138dc9f36bfcb4cf350ea92f5465d98cbcc diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..b742c566 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = netstandard2.1 +build_property.TargetPlatformMinVersion = 7.0 +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Common +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.assets.cache b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.assets.cache new file mode 100644 index 00000000..b3704c9f Binary files /dev/null and b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.assets.cache differ diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache new file mode 100644 index 00000000..a0685836 Binary files /dev/null and b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.CoreCompileInputs.cache b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..d6a49f3a --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +0c8b774a3f611e33ef6e57f637ef00c790b746df34c40fc69f4d2a3a87549f7d diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..7c89cd87 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,12 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\netstandard2.1\StgSharp.Common.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\refint\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\netstandard2.1\ref\StgSharp.Common.dll diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.dll b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.dll new file mode 100644 index 00000000..249a2b5b Binary files /dev/null and b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.dll differ diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.xml b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.xml new file mode 100644 index 00000000..557f4fd6 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/netstandard2.1/StgSharp.Common.xml @@ -0,0 +1,641 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame buffer object with _name frame buffer to the frame buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame buffer object with _name frame buffer to the frame buffer target specified + by target. Target of this frame buffer should be set manually. + + The frame buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame buffer to a frame buffer target Same function as glBindFramebuffer. + + The frame buffer target of the binding operation. + The handle of the frame buffer object to bind. + + + + Delete a render buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/ref/StgSharp.Common.dll b/StgSharp.Common/obj/x64/Release/netstandard2.1/ref/StgSharp.Common.dll new file mode 100644 index 00000000..8762a156 Binary files /dev/null and b/StgSharp.Common/obj/x64/Release/netstandard2.1/ref/StgSharp.Common.dll differ diff --git a/StgSharp.Common/obj/x64/Release/netstandard2.1/refint/StgSharp.Common.dll b/StgSharp.Common/obj/x64/Release/netstandard2.1/refint/StgSharp.Common.dll new file mode 100644 index 00000000..8762a156 Binary files /dev/null and b/StgSharp.Common/obj/x64/Release/netstandard2.1/refint/StgSharp.Common.dll differ diff --git a/StgSharp.Model/STEP/FileStructure/IStepObject.cs b/StgSharp.Model/STEP/FileStructure/IStepObject.cs new file mode 100644 index 00000000..bdf1a443 --- /dev/null +++ b/StgSharp.Model/STEP/FileStructure/IStepObject.cs @@ -0,0 +1,21 @@ +using StgSharp.Blueprint; +using StgSharp.Geometries; +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Modeling.STEP +{ + public abstract class IStepObject: StepExpressionBase , IGeometry + { + public abstract Point this[int index] { get; set; } + + public abstract Vec4[] VertexStream { get; } + public abstract CoordinationBase Coordination { get; } + public abstract int VertexCount { get; } + public abstract ReadOnlySpan VertexIndices { get; } + + } +} diff --git a/StgSharp.Model/STEP/FileStructure/StepExpression.cs b/StgSharp.Model/STEP/FileStructure/StepExpression.cs new file mode 100644 index 00000000..cd41f880 --- /dev/null +++ b/StgSharp.Model/STEP/FileStructure/StepExpression.cs @@ -0,0 +1,135 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepExpression.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; + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Modeling.STEP +{ + public abstract class StepExpressionBase + { + public abstract List ParameterList { get; set; } + + public int ID { get; internal set; } + } + + public abstract class StepExpressionParameter : StepExpressionBase + { + public abstract object Value { get; set; } + } + + public class StepObjectConstructor + { + + private static Regex regex = new Regex( + @"(?.+?(\)|'\s?\)|'))\s?(?,)\s?(?(.|\(|\(\s?').+)", + RegexOptions.Compiled ); + + private readonly int _id; + private readonly List _paramList; + private string _caller; + + public StepObjectConstructor( int id, string caller, string parameters ) + { + _caller = caller; + _paramList = new List(); + SplitParameter( parameters ); + } + + public string this[ int paramIndex ] + { + get => _paramList[ paramIndex ]; + } + + public ReadOnlyCollection ParamList + { + get => _paramList.AsReadOnly(); + } + + public static string TempCallerName + { + get => "TEMPCALLER"; + } + + public string Caller + { + get => _caller; + internal set => _caller = value; + } + + public static StepObjectConstructor CreateTempExpression( int id ) + { + return new StepObjectConstructor( id, "TEMPCALLER", string.Empty ); + } + + private void SplitParameter( string parameters ) + { + if( string.IsNullOrEmpty( parameters ) || string.IsNullOrWhiteSpace( + parameters ) ) { + return; + } + Match match = regex.Match( parameters ); + while( match.Success ) { + _paramList.Add( match.Groups[ "param1" ].Value ); + parameters = match.Groups[ "other" ].Value; + match = regex.Match( parameters ); + } + _paramList.Add( parameters ); + } + + } + + public record class StepCodeLine + { + public StepCodeLine( int id, string codeLine ) + { + ID = id; + CodeLine = codeLine; + } + + public int ID + { + get; + set; + } + + public string CodeLine + { + get; + set; + } + } +} diff --git a/StgSharp.Model/STEP/FileStructure/StepHeader.cs b/StgSharp.Model/STEP/FileStructure/StepHeader.cs new file mode 100644 index 00000000..58720acf --- /dev/null +++ b/StgSharp.Model/STEP/FileStructure/StepHeader.cs @@ -0,0 +1,227 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="STEPHeader.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.Text; + +namespace StgSharp.Modeling.STEP +{ + /// + /// C# implementation of HEADER part in STEP file. + /// + public struct StepInfo + { + + private STEPFileDescriptor _header; + private STEPFileName _name; + private STEPSchema _schema; + + public (int mainLevel, int? subLevel) Level + { + get => _header.Level; + internal set => _header.Level = value; + } + + public DateTime TimeStamp + { + get => _name.TimeStamp; + internal set => _name.TimeStamp = value; + } + + public STEPFileDescriptor Descriptor + { + get => _header; + internal set => _header = value; + } + + public STEPFileName FileName + { + get => _name; + internal set => _name = value; + } + + public STEPSchema Schema + { + get => _schema; + internal set => _schema = value; + } + + public string Description + { + get => _header.Description; + internal set => _header.Description = value; + } + + public string Name + { + get => _name.Name; + internal set => _name.Name = value; + } + + public string Author + { + get => _name.Author; + internal set => _name.Author = value; + } + + public string Organization + { + get => _name.Organization; + internal set => _name.Organization = value; + } + + public string OriginatingSystem + { + get => _name.OriginatingSystem; + internal set => _name.OriginatingSystem = value; + } + + public string Authorization + { + get => _name.Authorization; + internal set => _name.Authorization = value; + } + + public string PreprocessorVersion + { + get => _name.PreprocessorVersion; + internal set => _name.PreprocessorVersion = value; + } + + public string Version + { + get => _name.Version; + internal set => _name.Version = value; + } + + public string SchemaString + { + get => _schema.Data; + internal set => _schema.Data = value; + } + + } + + /// + /// C# implementation of FILE_NAME part in header of STEP file. + /// + public struct STEPFileName + { + + public DateTime TimeStamp + { + get; + internal set; + } + + public string Name + { + get; + internal set; + } + + public string Author + { + get; + internal set; + } + + public string Description + { + get; + internal set; + } + + public string PreprocessorVersion + { + get; + internal set; + } + + public string Version + { + get; + internal set; + } + + public string Organization + { + get; + internal set; + } + + public string OriginatingSystem + { + get; + internal set; + } + + public string Authorization + { + get; + internal set; + } + + } + + public struct STEPSchema + { + + private List _schema; + + public string Data + { + get; + internal set; + } + + } + + /// + /// C# implementation of FILE_NAME part in header of STEP file. + /// + public struct STEPFileDescriptor + { + + public (int mainLevel,int? subLevel) Level + { + get; + internal set; + } + + public string Description + { + get; + internal set; + } + + } +} diff --git a/StgSharp.Model/STEP/FileStructure/StepModel.cs b/StgSharp.Model/STEP/FileStructure/StepModel.cs new file mode 100644 index 00000000..d7eabc58 --- /dev/null +++ b/StgSharp.Model/STEP/FileStructure/StepModel.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="STEP.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.Blueprint; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Modeling.STEP +{ + public class StepModel + { + private Dictionary _node + = new Dictionary( ); + private BlueprintSchedueler _builder; + private StepInfo _header; + + internal StepModel( + StepInfo header, + Dictionary nodeSource) + { + _header = header; + _node = nodeSource; + _builder = new BlueprintSchedueler(); + } + + public void OrganizeNode() + { + foreach (var node in _node) + { + + } + } + + public void BuildGeometry() + { + + } + } +} diff --git a/StgSharp.Model/STEP/Reader/StepDataReader.cs b/StgSharp.Model/STEP/Reader/StepDataReader.cs new file mode 100644 index 00000000..7ed3ad6e --- /dev/null +++ b/StgSharp.Model/STEP/Reader/StepDataReader.cs @@ -0,0 +1,91 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepDataReader.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.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Modeling.STEP +{ + public partial class StepReader + { + private Regex expressionSpilitter = new Regex( + @"^#(?[0-9]+)\s*?=\s*?(?\S.*?)\s*;$", + RegexOptions.Compiled ); + + private ThreadLocal> _codeLineQueue + = new ThreadLocal>(); + + public ConcurrentQueue DataSectionPool + { + get => _codeLineQueue.Value; + } + + public void ReadDataSection() + { + if (_codeLineQueue.Value == null) + { + _codeLineQueue.Value = new ConcurrentQueue(); + } + using (MemoryMappedViewStream ms = _memoryFile.CreateViewStream( + 0, _size, MemoryMappedFileAccess.Read)) + { + using (StreamReader sr = new StreamReader(ms)) + { + long pos = _headStart; + string line; + while (string.IsNullOrEmpty(line = sr.ReadLine())) + { + switch (line) + { + default: + break; + } + Match match = expressionSpilitter.Match(line); + if (match.Success) + { + int id = int.Parse(match.Groups["id"].Value); + string expression = match.Groups["expression"].Value; + StepCodeLine stepExpression = new StepCodeLine(id, expression); + _codeLineQueue.Value.Enqueue(stepExpression); + } + } + } + } + } + } +} diff --git a/StgSharp.Model/STEP/Reader/StepHeadReader.cs b/StgSharp.Model/STEP/Reader/StepHeadReader.cs new file mode 100644 index 00000000..93e836ae --- /dev/null +++ b/StgSharp.Model/STEP/Reader/StepHeadReader.cs @@ -0,0 +1,112 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepHeadReader.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.IO; +using System.IO.MemoryMappedFiles; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace StgSharp.Modeling.STEP +{ + public partial class StepReader + { + /**/ + + private static Regex expressionSplitter = new Regex( + @"^(?[A-Z_]+)\s?\((?.+)\)\;", + RegexOptions.Compiled ); + + public StepInfo GetInfo() + { + StepInfo info = new StepInfo(); + List constructorList = new List(); + using( MemoryMappedViewStream ms = _memoryFile.CreateViewStream( + 0, _size, MemoryMappedFileAccess.Read ) ) { + using( StreamReader sr = new StreamReader( ms ) ) { + long pos = _headStart; + ms.Seek( _headStart, SeekOrigin.Begin ); + while( pos <= _headEnd ) { + string token = ReadToken( sr, ref pos ); + if( token == "HEADER;" ) { + continue; + } + + if( token == "ENDSEC;" ) { + break; + } + + GroupCollection match = expressionSplitter.Match( + token ) + .Groups; + constructorList.Add( + new StepObjectConstructor( + 0, match[ "CALLER" ].ToString(), + match[ "PARAM" ].ToString() ) ); + } + foreach( StepObjectConstructor constructor in constructorList ) { + switch( constructor.Caller ) { + case "FILE_DESCRIPTION": + info.Description = StepDataParser.ToString( + constructor[ 0 ] ); + info.Level = StepDataParser.ToVersion( + constructor[ 1 ] ); + break; + case "FILE_NAME": + info.Name = StepDataParser.ToString( + constructor[ 0 ] ); + info.TimeStamp = StepDataParser.ToDateTime( + constructor[ 1 ] ); + info.Author = StepDataParser.ToString( + constructor[ 2 ] ); + info.Organization = StepDataParser.ToString( + constructor[ 3 ] ); + info.PreprocessorVersion = StepDataParser.ToString( + constructor[ 4 ] ); + info.OriginatingSystem = StepDataParser.ToString( + constructor[ 5 ] ); + info.Authorization = StepDataParser.ToString( + constructor[ 6 ] ); + break; + default: + break; + } + } + } + } + return info; + } + /**/ + + } +} \ No newline at end of file diff --git a/StgSharp.Model/STEP/Reader/StepReader.cs b/StgSharp.Model/STEP/Reader/StepReader.cs new file mode 100644 index 00000000..4966d9f1 --- /dev/null +++ b/StgSharp.Model/STEP/Reader/StepReader.cs @@ -0,0 +1,158 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepReader.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; + +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.MemoryMappedFiles; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Modeling.STEP +{ + public partial class StepReader : IDisposable + { + + private const string fileLabel = "ISO-10303-21;"; + + private bool disposedValue; + private FileStream _fileStream; + private long _headStart = -1, _headEnd = -1, _dataStart = -1, _size; + private MemoryMappedFile _memoryFile; + + private StepReader() { } + + private StepReader( FileStream stream, long size ) + { + _fileStream = stream; + _size = size; + _memoryFile = MemoryMappedFile.CreateFromFile( + stream, mapName: null, size, MemoryMappedFileAccess.Read, + HandleInheritability.None, leaveOpen: true ); + } + + // ~StepReader() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + public static bool FromFile( string path, out StepReader reader ) + { + FileInfo info = new FileInfo( path ); + if( !info.Exists ) { + reader = null!; + return false; + } + FileStream stream = new FileStream( + path, FileMode.Open, FileAccess.Read, FileShare.Read, + bufferSize: 4096, useAsync: true ); + byte[] fileHead = new byte[40]; + stream.Read( fileHead, 0, fileLabel.Length ); + if( !Encoding.UTF8.GetString( fileHead ).Contains( fileLabel ) ) { + throw new InvalidDataException( + "The given file is not a STEP file" ); + } + reader = new StepReader( stream, info.Length ); + reader.LocateSection(); + return reader != null; + } + + private void LocateSection() + { + long startPos = 0; + byte[] buffer = new byte[1024]; + Span bufferSpan = buffer, + headerSec = Encoding.UTF8.GetBytes( "HEADER;" ), + endsecSec = Encoding.UTF8.GetBytes( "ENDSEC;" ), + dataSec = Encoding.UTF8.GetBytes( "DATA;" ); + _fileStream.Position = 0; + for( ; startPos < _size; startPos += 1000 ) { + _fileStream.Read( buffer ); + if( _headStart == -1 ) { + long pos = bufferSpan.IndexOf( headerSec ); + if( pos >= 0 ) { + _headStart = startPos + pos; + } + } + if( _headEnd == -1 ) { + long pos = bufferSpan.IndexOf( endsecSec ); + if( pos >= 0 ) { + _headEnd = startPos + pos; + } + } + if( _dataStart == -1 ) { + long pos = bufferSpan.IndexOf( dataSec ); + if( pos >= 0 ) { + _dataStart = startPos + pos; + } + } else { + break; + } + _fileStream.Seek( 1000, SeekOrigin.Current ); + } + } + + private string ReadToken( StreamReader reader, ref long posCache ) + { + StringBuilder token = new StringBuilder( 100 ); + while( token.Length == 0 || token[ token.Length - 1 ] != ';' ) { + string subString = reader.ReadLine(); + if( subString == null ) { + break; + } + token.Append( subString.TrimStart() ); + } + posCache += token.Length; + return token.ToString(); + } + + private protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + _fileStream.Dispose(); + _memoryFile.Dispose(); + } + + disposedValue = true; + } + } + + } +} diff --git a/StgSharp.Model/STEP/StepDataParser.cs b/StgSharp.Model/STEP/StepDataParser.cs new file mode 100644 index 00000000..56d73e43 --- /dev/null +++ b/StgSharp.Model/STEP/StepDataParser.cs @@ -0,0 +1,94 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepDataParser.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.Math; + +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Modeling.STEP +{ + public static class StepDataParser + { + + private static Regex _stringParser = new Regex( + @"(\(\s?'|')\s*(?.+)\s*('\s*\)|')", RegexOptions.Compiled ); + private static Regex _vectorParser = new Regex( + @"^\(\s+(?-?[0-9]+\.[0-9]+),\s+(?-?[0-9]+\.[0-9]+),\s+(?-?[0-9]+\.[0-9]+)\s+\)$", + RegexOptions.Compiled ); + + public static DateTime ToDateTime( string source ) + { + Match match = _stringParser.Match( source ); + if( match.Success ) { + return DateTime.Parse( match.Groups[ "value" ].Value ); + } + throw new InvalidCastException(); + } + + public static string ToString( string source ) + { + Match match = _stringParser.Match( source ); + if( match.Success ) { + return match.Groups[ "value" ].Value; + } + return string.Empty; + } + + public static Vec3 ToVector3D( string source ) + { + Match match = _vectorParser.Match( source ); + if( match.Success ) { + return new Vec3( + float.Parse( match.Groups[ "x" ].Value ), + float.Parse( match.Groups[ "y" ].Value ), + float.Parse( match.Groups[ "z" ].Value ) ); + } + return Vec3.Zero; + } + + public static (int, int?) ToVersion( string source ) + { + Match match = _stringParser.Match( source ); + if( match.Success ) { + string data = match.Groups[ "value" ].Value; + if( data.Contains( ';' ) ) { + string[] subData = data.Split( ';' ); + return (int.Parse( subData[ 0 ] ), int.Parse( subData[ 1 ] )); + } + return (int.Parse( data ), null); + } + return (-1,-1); + } + + } +} diff --git a/StgSharp.Model/StgSharp.Model.csproj b/StgSharp.Model/StgSharp.Model.csproj new file mode 100644 index 00000000..4147ac04 --- /dev/null +++ b/StgSharp.Model/StgSharp.Model.csproj @@ -0,0 +1,15 @@ + + + + net8.0 + enable + preview + AnyCPU;x64 + + + + + + + + diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.dll b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.dll new file mode 100644 index 00000000..94382a18 Binary files /dev/null and b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.dll differ diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.pdb b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.pdb new file mode 100644 index 00000000..94f21d32 Binary files /dev/null and b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.pdb differ diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.xml b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.xml new file mode 100644 index 00000000..3f8a0030 --- /dev/null +++ b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Common.xml @@ -0,0 +1,648 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Part of a collection. This contains a direct reference to origin collection, + so all change to origin collection will be reflected in this object. + + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL Buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a Buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to Buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. Target of this frame Buffer should be set manually. + + The frame Buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame Buffer to a frame Buffer target Same function as glBindFramebuffer. + + The frame Buffer target of the binding operation. + The handle of the frame Buffer object to bind. + + + + Delete a render Buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to Buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.deps.json b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.deps.json new file mode 100644 index 00000000..2af06d97 --- /dev/null +++ b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.deps.json @@ -0,0 +1,92 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Model/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "runtime": { + "StgSharp.Model.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {}, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.Model/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.dll b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.dll new file mode 100644 index 00000000..1d9b5146 Binary files /dev/null and b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.dll differ diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.pdb b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.pdb new file mode 100644 index 00000000..7daf1b2d Binary files /dev/null and b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Model.pdb differ diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Script.dll b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Script.dll new file mode 100644 index 00000000..0afecbd3 Binary files /dev/null and b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Script.dll differ diff --git a/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Script.pdb b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Script.pdb new file mode 100644 index 00000000..4e5727ce Binary files /dev/null and b/StgSharp.Model/bin/x64/Debug/net8.0/StgSharp.Script.pdb differ diff --git a/StgSharp.Model/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Model/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Model/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..17640bef --- /dev/null +++ b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfoInputs.cache b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfoInputs.cache new file mode 100644 index 00000000..2d0121df --- /dev/null +++ b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +40ac764002b04bd8e56e23f1a664417c131da35a481fcdb6a5d15fdf3feebea2 diff --git a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..1e21cd39 --- /dev/null +++ b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Model +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.assets.cache b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.assets.cache new file mode 100644 index 00000000..bab96118 Binary files /dev/null and b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.assets.cache differ diff --git a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.csproj.AssemblyReference.cache b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.csproj.AssemblyReference.cache new file mode 100644 index 00000000..b2f7c860 Binary files /dev/null and b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Model/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Model/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Model/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..832b21a6 --- /dev/null +++ b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache new file mode 100644 index 00000000..27ce462e --- /dev/null +++ b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +abf07b2e35262c3cd0803343b75421705dafd659347da275d51988c6cb04d83a diff --git a/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..87441c66 --- /dev/null +++ b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,5 @@ +is_global = true +build_property.RootNamespace = StgSharp.Model +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.assets.cache b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.assets.cache new file mode 100644 index 00000000..c12204db Binary files /dev/null and b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.assets.cache differ diff --git a/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache new file mode 100644 index 00000000..908b70b7 Binary files /dev/null and b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt b/StgSharp.Model/obj/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Model/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Model/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Model/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..55060e53 --- /dev/null +++ b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache new file mode 100644 index 00000000..c2e49fb1 --- /dev/null +++ b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +289bf3decf082cbda41fda0ab24365904fb90d0d573ac7075cba0e0883ba8f6f diff --git a/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..87441c66 --- /dev/null +++ b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,5 @@ +is_global = true +build_property.RootNamespace = StgSharp.Model +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.assets.cache b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.assets.cache new file mode 100644 index 00000000..93260d13 Binary files /dev/null and b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.assets.cache differ diff --git a/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache new file mode 100644 index 00000000..4fbcfa56 Binary files /dev/null and b/StgSharp.Model/obj/Release/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.dgspec.json b/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.dgspec.json new file mode 100644 index 00000000..780fdedd --- /dev/null +++ b/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.dgspec.json @@ -0,0 +1,233 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.g.props b/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.g.props new file mode 100644 index 00000000..7226a4fb --- /dev/null +++ b/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.11.0 + + + + + + \ No newline at end of file diff --git a/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.g.targets b/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.g.targets new file mode 100644 index 00000000..3dc06ef3 --- /dev/null +++ b/StgSharp.Model/obj/StgSharp.Model.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/StgSharp.Model/obj/project.assets.json b/StgSharp.Model/obj/project.assets.json new file mode 100644 index 00000000..60337496 --- /dev/null +++ b/StgSharp.Model/obj/project.assets.json @@ -0,0 +1,281 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "compile": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/net7.0/_._": {} + }, + "runtime": { + "lib/net7.0/_._": {} + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "bin/placeholder/StgSharp.Common.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Common.dll": {} + } + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Script.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Script.dll": {} + } + } + } + }, + "libraries": { + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "type": "package", + "path": "communitytoolkit.highperformance/8.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "path": "../StgSharp.Script/StgSharp.Script.csproj", + "msbuildProject": "../StgSharp.Script/StgSharp.Script.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "StgSharp.Common >= 1.0.0", + "StgSharp.Script >= 1.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/StgSharp.Model/obj/project.nuget.cache b/StgSharp.Model/obj/project.nuget.cache new file mode 100644 index 00000000..0c81699c --- /dev/null +++ b/StgSharp.Model/obj/project.nuget.cache @@ -0,0 +1,12 @@ +{ + "version": 2, + "dgSpecHash": "61LxCP8cAvM=", + "success": true, + "projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Youmu\\.nuget\\packages\\communitytoolkit.highperformance\\8.4.0\\communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Model/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.BC99943D.Up2Date b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.BC99943D.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..11fec859 --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c23b640cae59b9ee7dcfd8f026b8970a084ddbd7")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfoInputs.cache b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfoInputs.cache new file mode 100644 index 00000000..4faaeaf6 --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +72889ffe4399f1c35824bee0195137209197f809535c5d4e706a50bc1163a935 diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..1e21cd39 --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Model +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.assets.cache b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.assets.cache new file mode 100644 index 00000000..28e2552e Binary files /dev/null and b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.assets.cache differ diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.AssemblyReference.cache b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.AssemblyReference.cache new file mode 100644 index 00000000..65a1fe29 Binary files /dev/null and b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.BuildWithSkipAnalyzers b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.CoreCompileInputs.cache b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..fc52f223 --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +41cab0e9477cfb412058bfb54b7922f3dfe397e97a95aeb6e254cae869ffccac diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..b2e8f833 --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt @@ -0,0 +1,19 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Model.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Debug\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.BC99943D.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\refint\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Debug\net8.0\ref\StgSharp.Model.dll diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.dll b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.dll new file mode 100644 index 00000000..1d9b5146 Binary files /dev/null and b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.dll differ diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.pdb b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.pdb new file mode 100644 index 00000000..7daf1b2d Binary files /dev/null and b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.pdb differ diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json new file mode 100644 index 00000000..5cb7415b --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/c23b640cae59b9ee7dcfd8f026b8970a084ddbd7/*"}} \ No newline at end of file diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/ref/StgSharp.Model.dll b/StgSharp.Model/obj/x64/Debug/net8.0/ref/StgSharp.Model.dll new file mode 100644 index 00000000..41ac7412 Binary files /dev/null and b/StgSharp.Model/obj/x64/Debug/net8.0/ref/StgSharp.Model.dll differ diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/refint/StgSharp.Model.dll b/StgSharp.Model/obj/x64/Debug/net8.0/refint/StgSharp.Model.dll new file mode 100644 index 00000000..41ac7412 Binary files /dev/null and b/StgSharp.Model/obj/x64/Debug/net8.0/refint/StgSharp.Model.dll differ diff --git a/StgSharp.Model/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Model/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Model/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.assets.cache b/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.assets.cache new file mode 100644 index 00000000..d531d7a8 Binary files /dev/null and b/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.assets.cache differ diff --git a/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.csproj.BuildWithSkipAnalyzers b/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt b/StgSharp.Model/obj/x64/Debug/netstandard2.1/StgSharp.Model.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Model/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Model/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..55060e53 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache new file mode 100644 index 00000000..c2e49fb1 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +289bf3decf082cbda41fda0ab24365904fb90d0d573ac7075cba0e0883ba8f6f diff --git a/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..87441c66 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,5 @@ +is_global = true +build_property.RootNamespace = StgSharp.Model +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.assets.cache b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.assets.cache new file mode 100644 index 00000000..59a54f18 Binary files /dev/null and b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.assets.cache differ diff --git a/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache new file mode 100644 index 00000000..07f7483c Binary files /dev/null and b/StgSharp.Model/obj/x64/Release/netstandard2.1/StgSharp.Model.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Script/AbstractSyntaxTree.cs b/StgSharp.Script/AbstractSyntaxTree.cs new file mode 100644 index 00000000..f0089730 --- /dev/null +++ b/StgSharp.Script/AbstractSyntaxTree.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="AbstractSyntaxTree.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.Collections; + +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml.Schema; + +namespace StgSharp.Script +{ + public sealed class AbstractSyntaxTree + where TNode: IASTNode + where TType: ITypeSource + { + + private List _allToken = new(); + private TNode _root; + + public int Count + { + get { return _allToken.Count; } + } + + public TNode Root => _root; + + public bool Contains( TNode node ) + { + return _allToken.Contains( node ); + } + + } +} diff --git a/StgSharp.Script/CodeLineHelper.cs b/StgSharp.Script/CodeLineHelper.cs new file mode 100644 index 00000000..49309174 --- /dev/null +++ b/StgSharp.Script/CodeLineHelper.cs @@ -0,0 +1,108 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CodeLineHelper.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.Text; + +namespace StgSharp.Script +{ + public static class CodeLineHelper + { + + public static string SliceAndTrim( this string line, int startIndex ) + { + if( line == null ) { + throw new ArgumentNullException( nameof( line ) ); + } + + if( startIndex < 0 || startIndex >= line.Length ) { + throw new ArgumentOutOfRangeException( nameof( startIndex ) ); + } + + ReadOnlySpan sourceSpan = line.AsSpan(); + ReadOnlySpan subSpan = sourceSpan.Slice( startIndex ); + + int start = 0; + while( start < subSpan.Length && char.IsWhiteSpace( + subSpan[ start ] ) ) { + start++; + } + int end = subSpan.Length - 1; + while( end >= start && char.IsWhiteSpace( subSpan[ end ] ) ) { + end--; + } + if( start > end ) { + return string.Empty; + } + int finalLength = end - start + 1; + + return new string( subSpan.Slice( start, finalLength ) ); + } + + public static string SliceAndTrim( + this string line, + int startIndex, + int length ) + { + if( line == null ) { + throw new ArgumentNullException( nameof( line ) ); + } + + if( startIndex < 0 || startIndex >= line.Length ) { + throw new ArgumentOutOfRangeException( nameof( startIndex ) ); + } + + if( length < 0 || startIndex + length > line.Length ) { + throw new ArgumentOutOfRangeException( nameof( length ) ); + } + + ReadOnlySpan sourceSpan = line.AsSpan(); + ReadOnlySpan subSpan = sourceSpan.Slice( startIndex, length ); + + int start = 0; + while( start < subSpan.Length && char.IsWhiteSpace( + subSpan[ start ] ) ) { + start++; + } + int end = subSpan.Length - 1; + while( end >= start && char.IsWhiteSpace( subSpan[ end ] ) ) { + end--; + } + if( start > end ) { + return string.Empty; + } + int finalLength = end - start + 1; + + return new string( subSpan.Slice( start, finalLength ) ); + } + + } +} diff --git a/StgSharp.Script/Express/Builtin/ExpBuiltinConstant.cs b/StgSharp.Script/Express/Builtin/ExpBuiltinConstant.cs new file mode 100644 index 00000000..918e6007 --- /dev/null +++ b/StgSharp.Script/Express/Builtin/ExpBuiltinConstant.cs @@ -0,0 +1,42 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpBuiltinConstant.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; + +namespace StgSharp.Script.Express +{ + public class ExpBuiltinConstant : ExpLiteralGenericNode + { + + internal ExpBuiltinConstant( string name, T value ) + : base( name, null!, value ) { } + + } +} \ No newline at end of file diff --git a/StgSharp.Script/Express/Builtin/ExpBuiltinType.cs b/StgSharp.Script/Express/Builtin/ExpBuiltinType.cs new file mode 100644 index 00000000..c1f79391 --- /dev/null +++ b/StgSharp.Script/Express/Builtin/ExpBuiltinType.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpBuiltinType.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.Data; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public sealed class ExpBuiltinType : ExpTypeSource + { + + private Type _marshalType; + + internal ExpBuiltinType( string name, Type origin ) + : base( name, ScriptSourceTransmitter.Empty ) + { + _marshalType = origin; + } + + public override void Analyse() + { + return; + } + + //A method convert value to CLR type + //Used for direct running rather than compiling to C# code. + } +} diff --git a/StgSharp.Script/Express/Builtin/ExpCollection.cs b/StgSharp.Script/Express/Builtin/ExpCollection.cs new file mode 100644 index 00000000..e99a7cb5 --- /dev/null +++ b/StgSharp.Script/Express/Builtin/ExpCollection.cs @@ -0,0 +1,203 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpCollection.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; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace StgSharp.Script.Express +{ + public abstract class ExpCollectionBase : IExpElementSource, IEnumerable + { + + protected internal string _accurateType; + + protected ExpCollectionBase( string accurateType ) + { + _accurateType = accurateType; + } + + public ExpElementType ElementType => ExpElementType.Collection; + + public abstract int Count + { + get; + } + + public string MemberType + { + get => _accurateType; + } + + public abstract string Name + { + get; + } + + public void Analyse() + { + return; + } + + public abstract IEnumerator GetEnumerator(); + + public abstract bool IsConvertable( IExpElementSource targetType ); + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + IScriptSourceProvider IExpElementSource.SourceProvider => null!; + + } + + public class ExpArray : ExpCollectionBase + { + + private ExpElementInstanceBase[] _collection; + + public ExpArray( string accurateType ) : base( accurateType ) { } + + public ExpElementInstanceBase this[ int index ] + { + get { return _collection[ index ]; } + set + { + if( value.TypeName != MemberType ) { + throw new ExpInvalidCollectionMemberTypeException( + value, this ); + } + _collection[ index ] = value; + } + } + + public override int Count => _collection.Length; + + public override string Name => ExpCompile.PoolString( "ARRAY" ); + + public override IEnumerator GetEnumerator() + { + return ( ( IEnumerable )_collection ) + .GetEnumerator(); + } + + public override bool IsConvertable( IExpElementSource targetType ) + { + throw new NotImplementedException(); + } + + } + + public class ExpBag : ExpCollectionBase + { + + private ConcurrentBag _collection = new ConcurrentBag( + ); + + public ExpBag( string accurateType ) : base( accurateType ) { } + + public override int Count => _collection.Count; + + public override string Name => ExpCompile.PoolString( "BAG" ); + + public override IEnumerator GetEnumerator() + { + return _collection.GetEnumerator(); + } + + public override bool IsConvertable( IExpElementSource targetType ) + { + throw new NotImplementedException(); + } + + } + + public sealed class ExpList : ExpCollectionBase + { + + private List _collection = new List( + ); + + public ExpList( string accurateType ) : base( accurateType ) { } + + public override int Count => _collection.Count; + + public override string Name => ExpCompile.PoolString( "LIST" ); + + public override IEnumerator GetEnumerator() + { + return _collection.GetEnumerator(); + } + + public override bool IsConvertable( IExpElementSource targetType ) + { + throw new NotImplementedException(); + } + + } + + public class ExpSet : ExpCollectionBase + { + + private HashSet _collection = new(); + + public ExpSet( string accurateType ) : base( accurateType ) { } + + public override int Count => _collection.Count; + + public override string Name => ExpCompile.PoolString( "SET" ); + + public void Add( ExpElementInstanceBase token ) + { + if( token.TypeName != MemberType ) { + throw new ExpInvalidCollectionMemberTypeException( token, + this ); + } + _collection.Add( token ); + } + + public override sealed IEnumerator GetEnumerator( + ) + { + return ( ( IEnumerable )_collection ) + .GetEnumerator(); + } + + public override bool IsConvertable( IExpElementSource targetType ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Script/Express/Builtin/ExpCollectionInstance.cs b/StgSharp.Script/Express/Builtin/ExpCollectionInstance.cs new file mode 100644 index 00000000..a83964d5 --- /dev/null +++ b/StgSharp.Script/Express/Builtin/ExpCollectionInstance.cs @@ -0,0 +1,139 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpCollectionInstance.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.Text; + +namespace StgSharp.Script.Express +{ + public abstract class ExpCollectionInstanceBase : ExpBaseNode + { + + protected internal (int min, int max) _range; + protected internal ExpElementType _memberType; + + protected ExpCollectionInstanceBase( string name, ExpSchema context ) + : base( name, context ) { } + + public override ExpBaseNode Left => null!; + + public override ExpBaseNode Right => null!; + + public abstract ExpCollectionBase CollectionValue + { + get; + } + + public ExpElementType MemberType + { + get => _memberType; + } + + public int MinCapacity => _range.min; + + public int MaxCapacity => _range.max; + + } + + public sealed class ExpSetInstance : ExpCollectionInstanceBase + { + + private ExpSet _collection; + + public ExpSetInstance( string name, ExpSet set, ExpSchema context ) + : base( name, context ) + { + _collection = set; + } + + public override ExpCollectionBase CollectionValue => _collection; + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + } + + public sealed class ExpBagInstance : ExpCollectionInstanceBase + { + + private ExpBag _collection; + + public ExpBagInstance( string name, ExpBag bag, ExpSchema context ) + : base( name, context ) + { + _collection = bag; + } + + public override ExpCollectionBase CollectionValue => _collection; + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + } + + public sealed class ExpListInstance : ExpCollectionInstanceBase + { + + private ExpList _collection; + + public ExpListInstance( string name, ExpList list, ExpSchema context ) + : base( name, context ) + { + _collection = list; + } + + public override ExpCollectionBase CollectionValue => _collection; + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + } + + public sealed class ExpArrayInstance : ExpCollectionInstanceBase + { + + private ExpArray _collection; + + public ExpArrayInstance( + string name, + ExpArray array, + ExpSchema context ) + : base( name, context ) + { + _collection = array; + } + + public override ExpCollectionBase CollectionValue => _collection; + + public override IExpElementSource EqualityTypeConvert => _collection; + + } +} diff --git a/StgSharp.Script/Express/Builtin/ExpLogic.cs b/StgSharp.Script/Express/Builtin/ExpLogic.cs new file mode 100644 index 00000000..885ee00a --- /dev/null +++ b/StgSharp.Script/Express/Builtin/ExpLogic.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpLogic.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.Text; + +namespace StgSharp.Script.Express +{ + public enum ExpLogic + { + + Unknown = 0, + False = 1, + True = 2, + + } + + public static class LogicConverter + { + public static bool? AsNullableBool(this ExpLogic l) + { + switch (l) + { + case ExpLogic.Unknown: + return null; + case ExpLogic.False: + return false; + case ExpLogic.True: + return true; + default: + throw new ArgumentException(); + } + } + + public static ExpLogic AsNullableInt(this bool? b) + { + return b switch + { + null => ExpLogic.Unknown, + true => ExpLogic.True, + false => ExpLogic.False, + }; + } + } +} diff --git a/StgSharp.Script/Express/CompileEnv/DefaultSchema.cs b/StgSharp.Script/Express/CompileEnv/DefaultSchema.cs new file mode 100644 index 00000000..ed4f005c --- /dev/null +++ b/StgSharp.Script/Express/CompileEnv/DefaultSchema.cs @@ -0,0 +1,142 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="DefaultSchema.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; +using System.Collections.Frozen; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +using static StgSharp.Script.Express.ExpCompile; + +namespace StgSharp.Script.Express +{ + internal partial class ExpSchema_Nitload : ExpSchema + { + + private static readonly ExpSchema_Nitload _onlyInstance = new ExpSchema_Nitload( + ); + + private ExpSchema_Nitload() + : base() + { + Name = "Nitload"; + } + + public static ExpSchema Only + { + get => _onlyInstance; + } + + public override void LoadFromSource( ExpSchemaSource source ) + { + return; + } + + public override bool TryGetConst( + string name, + out ExpElementInstanceBase c ) + { + return ConstDict.TryGetValue( name, out c ); + } + + public override bool TryGetEntity( string name, out ExpEntitySource e ) + { + e = null; + return false; + } + + public override bool TryGetFunction( + string name, + out ExpFunctionSource f ) + { + throw new NotImplementedException(); + } + + public override bool TryGetRule( string name, out ExpRuleSource r ) + { + r = null!; + return false; + } + + public override bool TryGetSchemaInclude( + string name, + out ExpSchema include ) + { + include = null!; + return false; + } + + public override bool TryGetType( string name, out ExpTypeSource t ) + { + return TypeDict.TryGetValue( name, out t ); + } + + internal void Init() + { + IEnumerable> builtinTypeSource = [ + new KeyValuePair( + PoolString( KeyWord.Int ), + new ExpBuiltinType( KeyWord.Int, typeof( int ) ) ), + new KeyValuePair( + PoolString( KeyWord.Real ), + new ExpBuiltinType( KeyWord.Real, typeof( float ) ) ), + new KeyValuePair( + PoolString( KeyWord.Bool ), + new ExpBuiltinType( KeyWord.Bool, typeof( bool ) ) ), + new KeyValuePair( + PoolString( KeyWord.Logic ), + new ExpBuiltinType( KeyWord.Logic, typeof( ExpLogic ) ) ), + new KeyValuePair( + PoolString( KeyWord.String ), + new ExpBuiltinType( KeyWord.String, typeof( string ) ) ), + new KeyValuePair( + PoolString( KeyWord.Binary ), + new ExpBuiltinType( KeyWord.Binary, typeof( BitArray ) ) ), + + ]; + TypeDict = new Dictionary( + builtinTypeSource, Multiplexer ).ToFrozenDictionary(); + + + ConstDict = new Dictionary( + Multiplexer ) { + { PoolString( "PI" ), new ExpBuiltinConstant( + PoolString( "PI" ), MathF.PI ) }, + { PoolString( "E" ), new ExpBuiltinConstant( + PoolString( "E" ), MathF.E ) }, + }.ToFrozenDictionary(); + } + + } +} diff --git a/StgSharp.Script/Express/CompileEnv/ExpCompile.cs b/StgSharp.Script/Express/CompileEnv/ExpCompile.cs new file mode 100644 index 00000000..654679d7 --- /dev/null +++ b/StgSharp.Script/Express/CompileEnv/ExpCompile.cs @@ -0,0 +1,120 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpCompile.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 CommunityToolkit.HighPerformance.Buffers; + +using StgSharp.Collections; + +using System; +using System.Collections; +using System.Collections.Frozen; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Text; + +namespace StgSharp.Script.Express +{ + public static partial class ExpCompile + { + + private static string[] _operatorsWithLetter; + private static ConcurrentStringHashMultiplexer _multiplexer; + private static FrozenDictionary _builtinConst; + private static FrozenDictionary _builtinType; + private static FrozenDictionary _operators; + private static StringPool _compileStringCache; + + internal static ConcurrentStringHashMultiplexer Multiplexer + { + get + { + if( _multiplexer == null ) { + throw new ExpCompileNotInitializedException(); + } + return _multiplexer; + } + } + + public static void ClearStringCache() + { + _compileStringCache.Reset(); + } + + public static void DeinitCompile() + { + _compileStringCache.Reset(); + _compileStringCache = null!; + + _multiplexer.Dispose(); + _multiplexer = null!; + } + + public static void InitCompile() + { + _compileStringCache = new StringPool(); + _multiplexer = new ConcurrentStringHashMultiplexer(); + + PoolKeywords(); + InitPrecedence(); + + _operatorsWithLetter = [ + KeyWord.ADD, + KeyWord.SUB, + KeyWord.MUL, + KeyWord.DIV, + KeyWord.AND, + KeyWord.OR, + KeyWord.XOR, + KeyWord.ANDOR, + KeyWord.NOT, + ]; + } + + public static bool LetterIsOperator( string str ) + { + if( char.IsLetter( str[ 0 ] ) ) { + return Array.IndexOf( _operatorsWithLetter, str ) != -1; + } + return true; + } + + public static string PoolString( string str ) + { + return _compileStringCache.GetOrAdd( str ); + } + + public static string PoolString( ReadOnlySpan str ) + { + return _compileStringCache.GetOrAdd( str ); + } + + } +} diff --git a/StgSharp.Script/Express/CompileEnv/ExpOperatorPrecedence.cs b/StgSharp.Script/Express/CompileEnv/ExpOperatorPrecedence.cs new file mode 100644 index 00000000..6731afe2 --- /dev/null +++ b/StgSharp.Script/Express/CompileEnv/ExpOperatorPrecedence.cs @@ -0,0 +1,106 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpOperatorPrecedence.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.Frozen; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public static partial class ExpCompile + { + + public static bool TryGetOperatorPrecedence( + string operatorName, + out int precedence ) + { + return _operatorPrecedence.TryGetValue( + operatorName, out precedence ); + } + + public static bool TryGetSuperTypeOperatorPrecedence( + string operatorName, + out int precedence ) + { + return _superTypeOperatorPrecedent.TryGetValue( + operatorName, out precedence ); + } + + private static void InitPrecedence() + { + KeyValuePair[] source = [ + new KeyValuePair( PoolString( "[" ), 1 ), + new KeyValuePair( PoolString( "." ), 1 ), + new KeyValuePair( PoolString( "\\" ), 1 ), + new KeyValuePair( PoolString( "unary+" ), 2 ), + new KeyValuePair( PoolString( "unary-" ), 2 ), + new KeyValuePair( PoolString( "NOT" ), 2 ), + new KeyValuePair( PoolString( "**" ), 3 ), + new KeyValuePair( PoolString( "*" ), 4 ), + new KeyValuePair( PoolString( "/" ), 4 ), + new KeyValuePair( PoolString( "AND" ), 4 ), + new KeyValuePair( PoolString( "MOD" ), 4 ), + new KeyValuePair( PoolString( "DIV" ), 4 ), + new KeyValuePair( PoolString( "||" ), 4 ), + new KeyValuePair( PoolString( "+" ), 5 ), + new KeyValuePair( PoolString( "-" ), 5 ), + new KeyValuePair( PoolString( "OR" ), 5 ), + new KeyValuePair( PoolString( "XOR" ), 5 ), + new KeyValuePair( PoolString( "=" ), 6 ), + new KeyValuePair( PoolString( "<>" ), 6 ), + new KeyValuePair( PoolString( "<=" ), 6 ), + new KeyValuePair( PoolString( ">=" ), 6 ), + new KeyValuePair( PoolString( ">" ), 6 ), + new KeyValuePair( PoolString( "<" ), 6 ), + new KeyValuePair( PoolString( ":=:" ), 6 ), + new KeyValuePair( PoolString( ":<>:" ), 6 ), + new KeyValuePair( PoolString( "IN" ), 6 ), + new KeyValuePair( PoolString( "LIKE" ), 6 ), + ]; + _operatorPrecedence = new Dictionary( + source, _multiplexer ).ToFrozenDictionary(); + source = [ + new KeyValuePair( "ONEOF", 1 ), + new KeyValuePair( "AND", 2 ), + new KeyValuePair( "ANDOR", 3 ), + ]; + _superTypeOperatorPrecedent = new Dictionary( + source, _multiplexer ).ToFrozenDictionary(); + } + + #pragma warning disable CS8618 + private static FrozenDictionary _superTypeOperatorPrecedent; + private static FrozenDictionary _operatorPrecedence; + #pragma warning restore CS8618 + } +} diff --git a/StgSharp.Script/Express/CompileEnv/KeyWord.cs b/StgSharp.Script/Express/CompileEnv/KeyWord.cs new file mode 100644 index 00000000..fe54b5ee --- /dev/null +++ b/StgSharp.Script/Express/CompileEnv/KeyWord.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyWord.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.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public static partial class ExpCompile + { + + private static void PoolKeywords() + { + FieldInfo[] fields = typeof( KeyWord ).GetFields( + BindingFlags.Public ); + ParallelLoopResult result = Parallel.ForEach( + fields, static( field ) => { + if( field.FieldType == typeof( string ) && field.GetValue( + null ) is string str ) { + _compileStringCache.GetOrAdd( str ); + } + } ); + while( !result.IsCompleted ) { } + } + + public static class KeyWord + { + + public const string Int = "INTAGER", + Real = "REAL", + Bool = "BOOLEAN", + String = "STRING", + Logic = "LOGIC", + Binary = "BINARY", + Constant = "CONSTANT", + AND = "AND", + OR = "OR", + XOR = "XOR", + ADD = "+", + SUB = "-", + MUL = "*", + DIV = "/", + NOT = "NOT", + Assignment = ":=", + Equal = "=", + Mod = "MOD", + Self = "SELF", + Pi = "PI", + True = "TRUE", + False = "FALSE", + Insert = "INSERT", + Remove = "REMOVE", + ANDOR = "ANDOR", + GetIndex = "[", + UnaryAdd = "+", + UnarySub = "-", + Exp = "**"; + + } + + } +} diff --git a/StgSharp.Script/Express/Element/ExpConst.cs b/StgSharp.Script/Express/Element/ExpConst.cs new file mode 100644 index 00000000..42803106 --- /dev/null +++ b/StgSharp.Script/Express/Element/ExpConst.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpConst.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; +using System.Collections.Frozen; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Script.Express +{ + public sealed class ExpConstantCollectionSource : ExpImmutableElementBase + { + + private Dictionary _constants; + private IScriptSourceProvider _sourceProvider; + + public ExpConstantCollectionSource( + IScriptSourceProvider sourceProvider ) + { + _sourceProvider = sourceProvider; + _constants = new Dictionary( + ExpCompile.Multiplexer ); + } + + public override ExpElementType ElementType => ExpElementType.Const; + + public override IScriptSourceProvider SourceProvider => _sourceProvider; + + public override string Name + { + get => ExpCompile.KeyWord.Constant; + } + + public override void Analyse() + { + throw new NotImplementedException(); + } + + public override ExpBaseNode MakeReference( params object[] options ) + { + if( options.Length == 0 || options[ 0 ] is not string str ) { + return null!; + } + if( _constants.Count == 0 ) { + return null!; + } + if( _constants.TryGetValue( str, + out ExpElementInstanceBase? token ) ) { + return token; + } + return null!; + } + + public bool TryGetConstant( + string name, + out ExpElementInstanceBase instance ) + { + return _constants.TryGetValue( name, out instance ); + } + + internal void AddConstant( string name, ExpElementInstanceBase value ) + { + _constants.Add( name, value ); + } + + } +} diff --git a/StgSharp.Script/Express/Element/ExpEntity.cs b/StgSharp.Script/Express/Element/ExpEntity.cs new file mode 100644 index 00000000..ae68ab53 --- /dev/null +++ b/StgSharp.Script/Express/Element/ExpEntity.cs @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpEntity.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.Text; + +namespace StgSharp.Script.Express +{ + public class ExpEntity : ExpBaseNode + { + + public ExpEntity( string name, ExpSchema context ) + : base( name, context ) { } + + public override ExpBaseNode Left => throw new NotImplementedException(); + + public override ExpBaseNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + } + + public class ExpEntitySource : ExpInstantiableElementBase + { + + private AbstractSyntaxTree _expressionTree; + private ScriptSourceTransmitter _source; + private string _name; + + public ExpEntitySource( string name, ScriptSourceTransmitter provider ) + { + _name = name; + _source = provider; + } + + public override ExpElementType ElementType => ExpElementType.Entity; + + public override IScriptSourceProvider SourceProvider => _source; + + public override string Name => _name; + + public override void Analyse() + { + throw new NotImplementedException(); + } + + public override ExpBaseNode CreateInstanceToken() + { + throw new NotImplementedException(); + } + + public override bool IsConvertable( IExpElementSource targetType ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Script/Express/Element/ExpFunction.cs b/StgSharp.Script/Express/Element/ExpFunction.cs new file mode 100644 index 00000000..75d4a8b2 --- /dev/null +++ b/StgSharp.Script/Express/Element/ExpFunction.cs @@ -0,0 +1,104 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpFunction.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.Text; + +namespace StgSharp.Script.Express +{ + public class ExpFunction : ExpBaseNode + { + + private readonly ExpBaseNode _return; + + private ExpFunctionSource _source; + private readonly List> _parameterList + = new List>(); + + public ExpFunction( string name, ExpSchema context ) + : base( name, context ) { } + + public override ExpBaseNode Left => throw new NotImplementedException(); + + public override ExpBaseNode Right => throw new NotImplementedException(); + + public ExpElementType ElementType => ExpElementType.Function; + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + public void CallThisFunction( params ExpBaseNode[] parameters ) { } + + } + + public class ExpFunctionSource : ExpImmutableElementBase + { + + private ScriptSourceTransmitter _transmitter; + private string _name; + + public ExpFunctionSource( + string name, + ScriptSourceTransmitter transmitter ) + { + _name = name; + _transmitter = transmitter; + } + + public override ExpElementType ElementType => ExpElementType.Function; + + public override IScriptSourceProvider SourceProvider => _transmitter; + + public override string Name => _name; + + public string CallingFormat + { + get; + private set; + } + + public override void Analyse() + { + throw new NotImplementedException(); + /* + * generate parameter list, + * generate C# code + * generate calling syntax + */ + } + + public override ExpBaseNode MakeReference( params object[] options ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Script/Express/Element/ExpRule.cs b/StgSharp.Script/Express/Element/ExpRule.cs new file mode 100644 index 00000000..4f552d46 --- /dev/null +++ b/StgSharp.Script/Express/Element/ExpRule.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpRule.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.Data; +using System.Reflection.Metadata.Ecma335; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpRule : ExpElementInstanceBase + { + + private ExpRuleSource _source; + + public ExpRule( string name, ExpSchema context ) + : base( name, context ) { } + + public object? value => throw new NotImplementedException(); + + public override ExpBaseNode Left => throw new NotImplementedException(); + + public override ExpBaseNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + public override string TypeName => _source.Name; + + } + + public class ExpRuleSource : ExpImmutableElementBase + { + + private ScriptSourceTransmitter _transmitter; + private string _name; + + public ExpRuleSource( string name, ScriptSourceTransmitter transmitter ) + { + _name = name; + _transmitter = transmitter; + } + + public override ExpElementType ElementType => ExpElementType.Rule; + + public override IScriptSourceProvider SourceProvider => _transmitter; + + public override string Name => _name; + + public override void Analyse() + { + throw new NotImplementedException(); + } + + public override ExpBaseNode MakeReference( params object[] options ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Script/Express/Element/ExpType.cs b/StgSharp.Script/Express/Element/ExpType.cs new file mode 100644 index 00000000..236869a9 --- /dev/null +++ b/StgSharp.Script/Express/Element/ExpType.cs @@ -0,0 +1,98 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpType.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.Script; + +using System; +using System.Collections.Generic; + +namespace StgSharp.Script.Express +{ + public class ExpType : ExpElementInstanceBase + { + + public ExpType( string name, ExpSchema context ) + : base( name, context ) { } + + public override ExpBaseNode Left => throw new NotImplementedException(); + + public override ExpBaseNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + public override string TypeName => throw new NotImplementedException(); + + } + + public class ExpTypeSource : IExpElementSource + { + + private ScriptSourceTransmitter _transmitter; + private string _name; + protected bool _isBuiltinType; + + protected ExpTypeSource( string name ) + { + _name = name; + _transmitter = ScriptSourceTransmitter.Empty; + _isBuiltinType = true; + } + + public ExpTypeSource( string name, ScriptSourceTransmitter transmitter ) + { + _name = name; + _transmitter = transmitter; + _isBuiltinType = false; + } + + public bool IsLanguageBuiltinType + { + get => _isBuiltinType; + } + + public ExpElementType ElementType => ExpElementType.Type; + + public IScriptSourceProvider SourceProvider => _transmitter; + + public string Name => _name; + + public virtual void Analyse() + { + throw new NotImplementedException(); + } + + public bool IsConvertable( IExpElementSource targetType ) + { + throw new NotImplementedException(); + } + + } +} \ No newline at end of file diff --git a/StgSharp.Script/Express/ExpAstNode/ExpBaseNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpBaseNode.cs new file mode 100644 index 00000000..abafb2ae --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpBaseNode.cs @@ -0,0 +1,158 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpBaseNode.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 CommunityToolkit.HighPerformance.Buffers; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public abstract class ExpBaseNode : IASTNode + { + + protected internal ExpNodeFlag _nodeFlag; + protected internal string _name; + + protected ExpBaseNode( string name, ExpSchema context ) + { + _name = name; + NameSpace = context; + Next = this; + Previous = this; + } + + public bool IsNumber + { + get { return ( _nodeFlag | ExpNodeFlag.BuiltinType_Number ) != 0; } + } + + public abstract ExpBaseNode Left + { + get; + } + + public static ExpBaseNode Empty + { + get => ExpEmptyNode._only; + } + + public ExpBaseNode Next + { + get; + set; + } + + public abstract ExpBaseNode Right + { + get; + } + + public ExpBaseNode Previous + { + get; + set; + } + + public ExpSchema NameSpace + { + get; + private set; + } + + public abstract IExpElementSource EqualityTypeConvert + { + get; + } + + public long NodeFlag => ( long )_nodeFlag; + + public string CodeConvertTemplate + { + get; + internal set; + } + + public string Name => _name; + + public virtual void AppendNode( ExpBaseNode nextToken ) + { + Next.Previous = nextToken; + nextToken.Next = Next; + Next = nextToken; + Next.Previous = this; + } + + public ExpNodeNextEnumerator GetEnumerator() + { + return new ExpNodeNextEnumerator( this ); + } + + public static bool VerifyTypeConvertable( + ExpBaseNode left, + ExpBaseNode right ) + { + IExpElementSource tLeft = left.EqualityTypeConvert, + tRight = right.EqualityTypeConvert; + if( tLeft == null || tRight == null ) { + return false; + } + return tLeft.IsConvertable( tRight ); + } + + protected void AssertSchemaInclude( ExpBaseNode expressionRoot ) + { + if( expressionRoot.NameSpace != NameSpace && NameSpace.TryGetSchemaInclude( + expressionRoot.NameSpace.Name, out _ ) ) { + throw new ExpInvalidSchemaIncludeException( + NameSpace, expressionRoot.NameSpace ); + } + } + + private class ExpEmptyNode : ExpBaseNode + { + + internal static readonly ExpEmptyNode _only = new(); + + public ExpEmptyNode() + : base( string.Empty, ExpSchema.BuiltinSchema ) { } + + public override ExpBaseNode Left => _only; + + public override ExpBaseNode Right => _only; + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + } + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs new file mode 100644 index 00000000..5cd0ce95 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs @@ -0,0 +1,148 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpBinaryOperatorNode.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.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public class ExpBinaryOperatorNode : ExpBaseNode + { + + private ExpBaseNode _left; + private ExpBaseNode _right; + private ExpTypeSource _returnType; + + public ExpBinaryOperatorNode( string name ) : base( name, null! ) { } + + public ExpBinaryOperatorNode( + string source, + ExpSchema context, + ExpBaseNode left, + ExpBaseNode right ) + : base( source, context ) + { + if( !left.EqualityTypeConvert + .IsConvertable( right.EqualityTypeConvert ) ) { + throw new InvalidCastException( + $"Cannot convert element {left.EqualityTypeConvert} to {right.EqualityTypeConvert}" ); + } + _left = left; + _right = right; + } + + public override ExpBaseNode Left => _left; + + public override ExpBaseNode Right => _right; + + public override IExpElementSource EqualityTypeConvert => _returnType; + + public static ExpBinaryOperatorNode Add( + ExpBaseNode left, + ExpBaseNode right ) + { + if( !left.IsNumber && !right.IsNumber ) { + throw new ExpInvalidTypeException( + "Number", left.EqualityTypeConvert.Name ); + } + bool isFloat = + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == + 0; + return new ExpBinaryOperatorNode( ExpCompile.KeyWord.ADD ) + { + _returnType = isFloat ? null : null, + _nodeFlag = ExpNodeFlag.Operator_Binary | ExpNodeFlag.BuiltinType_Number, + CodeConvertTemplate = "{0} + {1}", + }; + } + + public static ExpBinaryOperatorNode Div( + ExpBaseNode left, + ExpBaseNode right ) + { + if( !left.IsNumber && !right.IsNumber ) { + throw new ExpInvalidTypeException( + "Number", left.EqualityTypeConvert.Name ); + } + bool isFloat = + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == + 0; + return new ExpBinaryOperatorNode( ExpCompile.KeyWord.DIV ) + { + _returnType = isFloat ? null : null, + _nodeFlag = ExpNodeFlag.Operator_Binary | ExpNodeFlag.BuiltinType_Number, + CodeConvertTemplate = "{0} / {1}", + }; + } + + public static ExpBinaryOperatorNode Mul( + ExpBaseNode left, + ExpBaseNode right ) + { + if( !left.IsNumber && !right.IsNumber ) { + throw new ExpInvalidTypeException( + "Number", left.EqualityTypeConvert.Name ); + } + bool isFloat = + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == + 0; + return new ExpBinaryOperatorNode( ExpCompile.KeyWord.MUL ) + { + _returnType = isFloat ? null : null, + _nodeFlag = ExpNodeFlag.Operator_Binary | ExpNodeFlag.BuiltinType_Number, + CodeConvertTemplate = "{0} * {1}", + }; + } + + public static ExpBinaryOperatorNode Sub( + ExpBaseNode left, + ExpBaseNode right ) + { + if( !left.IsNumber && !right.IsNumber ) { + throw new ExpInvalidTypeException( + "Number", left.EqualityTypeConvert.Name ); + } + bool isFloat = + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Float ) == + 0; + return new ExpBinaryOperatorNode( ExpCompile.KeyWord.SUB ) + { + _returnType = isFloat ? : null, + _nodeFlag = ExpNodeFlag.Operator_Binary | ExpNodeFlag.BuiltinType_Number, + CodeConvertTemplate = "{0} - {1}", + }; + } + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpFunctionCallingNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpFunctionCallingNode.cs new file mode 100644 index 00000000..e602d863 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpFunctionCallingNode.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpFunctionCallingNode.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.Script.Express +{ + internal class ExpFunctionCallingNode : ExpBaseNode + { + + private ExpBaseNode _parameter; + private ExpFunctionSource _function; + + public ExpFunctionCallingNode( + string functionName, + int line, + int column, + ExpSchema context, + ExpBaseNode firstParameter ) + : base( $"{functionName}_{line}_{column}", context ) + { + _parameter = firstParameter; + if( !context.TryGetFunction( functionName, out _function ) ) { + foreach( var item in context. ) { } + } + } + + public override ExpBaseNode Left => throw new NotImplementedException(); + + public override ExpBaseNode Right => _parameter; + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpIfNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpIfNode.cs new file mode 100644 index 00000000..48bedde9 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpIfNode.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpIfNode.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.Script.Express; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public sealed class ExpIfNode : ExpBaseNode + { + + private ExpBaseNode _falseOpBegin; + private ExpBaseNode _rule; + private ExpBaseNode _trueOpBegin ; + + public ExpIfNode( + string name, + ExpSchema context, + ExpBaseNode rule, + ExpBaseNode rootOperationIfTrue, + ExpBaseNode rootOperationIfFalse ) + : base( name, context ) + { + _rule = rule; + _trueOpBegin = rootOperationIfFalse; + _falseOpBegin = rootOperationIfFalse; + } + + public override ExpBaseNode Left => _trueOpBegin; + + public override ExpBaseNode Right => _falseOpBegin; + + public override IExpElementSource EqualityTypeConvert => null!; + + public void AppendFalseOperation( ExpBaseNode expressionRoot ) + { + AssertSchemaInclude( expressionRoot ); + _falseOpBegin.AppendNode( expressionRoot ); + } + + public void AppendTrueOperation( ExpBaseNode expressionRoot ) + { + AssertSchemaInclude( expressionRoot ); + _trueOpBegin.AppendNode( expressionRoot ); + } + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpIndexOfNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpIndexOfNode.cs new file mode 100644 index 00000000..589fba48 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpIndexOfNode.cs @@ -0,0 +1,64 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpIndexOfNode.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.Script.Express +{ + public class ExpIndexOfNode : ExpBaseNode + { + + private ExpBaseNode _indexExpression; + + private ExpCollectionInstanceBase _collection; + + public ExpIndexOfNode( + ExpSchema context, + ExpCollectionInstanceBase instance, + ExpBaseNode indexExpression ) + : base( ExpCompile.PoolString( "[" ), context ) + { + _collection = instance; + _indexExpression = indexExpression; + } + + public override ExpBaseNode Left => _collection; + + public override ExpBaseNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException( + ); + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpLiteralGenericNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpLiteralGenericNode.cs new file mode 100644 index 00000000..fa1b6da7 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpLiteralGenericNode.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpLiteralGenericNode.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.Data; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpLiteralNode + { + + private readonly IValueBox box; + + } + + public class ExpLiteralGenericNode : ExpElementInstanceBase + { + + private readonly ExpBuiltinType _type; + private readonly T _value; + + public ExpLiteralGenericNode( string name, ExpSchema context, T value ) + : base( name, context ) + { + _value = value; + switch( value ) { + case float f: + ExpSchema.BuiltinSchema + .TryGetType( + ExpCompile.KeyWord.Real, + out ExpTypeSource? type ); + _type = ( type as ExpBuiltinType )!; + _nodeFlag = ExpNodeFlag.BuiltinType_Float | ExpNodeFlag.Element_Const; + break; + case int i: + ExpSchema.BuiltinSchema + .TryGetType( ExpCompile.KeyWord.Int, out type ); + _type = ( type as ExpBuiltinType )!; + _nodeFlag = ExpNodeFlag.BuiltinType_Int | ExpNodeFlag.Element_Const; + break; + case BitArray b: + ExpSchema.BuiltinSchema + .TryGetType( ExpCompile.KeyWord.Binary, out type ); + _type = ( type as ExpBuiltinType )!; + _nodeFlag = ExpNodeFlag.BuiltinType_Binary | ExpNodeFlag.Element_Const; + break; + case string s: + ExpSchema.BuiltinSchema + .TryGetType( ExpCompile.KeyWord.String, out type ); + _type = ( type as ExpBuiltinType )!; + _nodeFlag = ExpNodeFlag.BuiltinType_Int | ExpNodeFlag.Element_Const; + break; + case ExpLogic l: + ExpSchema.BuiltinSchema + .TryGetType( ExpCompile.KeyWord.Logic, out type ); + _type = ( type as ExpBuiltinType )!; + _nodeFlag = ExpNodeFlag.BuiltinType_Int | ExpNodeFlag.Element_Const; + break; + default: + throw new ExpInvalidTypeException( + "Builtin Type", value!.GetType().Name ); + } + } + + public override ExpBaseNode Left => ExpBaseNode; + + public override ExpBaseNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => _type; + + public override string TypeName => _type.Name; + + public T value => _value; + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs new file mode 100644 index 00000000..e6fe62bb --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs @@ -0,0 +1,96 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpRepeatNode.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.Runtime.Serialization; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpRepeatToken : ExpBaseNode + { + + private ExpBaseNode _operationBegin; + + private ExpElementInstanceBase _variable, _begin, _end, _increment; + + public ExpRepeatToken( + string name, + ExpSchema context, + ExpBaseNode operationBegin, + ExpElementInstanceBase variable, + ExpElementInstanceBase begin, + ExpElementInstanceBase end, + ExpElementInstanceBase increment ) + : base( name, context ) + { + if( variable.NodeFlag != begin.NodeFlag || begin.NodeFlag != + end.NodeFlag || ( increment != null && end.NodeFlag != + increment.NodeFlag ) ) { + throw new InvalidCastException(); + } + if( increment == null ) { + switch( ( ExpNodeFlag )variable.NodeFlag | ExpNodeFlag.BuiltinType_Any ) { + case ExpNodeFlag.BuiltinType_Float: + increment = new ExpLiteralGenericNode( + $"{name}_defaultIncrement", context, 1.0f ); + break; + case ExpNodeFlag.BuiltinType_Int: + increment = new ExpLiteralGenericNode( + $"{name}_defaultIncrement", context, 1 ); + break; + default: + throw new ExpInvalidTypeException( + "Int or Real", "otherwise" ); + } + } + _begin = begin; + _variable = variable; + _end = end; + _increment = increment; + _nodeFlag = ExpNodeFlag.Branch_Repeat; + _operationBegin = operationBegin; + } + + public override ExpBaseNode Left => throw new NotImplementedException(); + + public override ExpBaseNode Right => _operationBegin; + + public override IExpElementSource EqualityTypeConvert => null!; + + public void AppendRepeatedOperation( ExpBaseNode node ) + { + _operationBegin.AppendNode( node ); + } + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpSwitchNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpSwitchNode.cs new file mode 100644 index 00000000..25cbdc28 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpSwitchNode.cs @@ -0,0 +1,113 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSwitchNode.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.Text; + +namespace StgSharp.Script.Express +{ + public class ExpSwitchNode : ExpBaseNode + { + + private Dictionary _cases; + private ExpBaseNode _default; + private ExpBaseNode _target; + + public ExpSwitchNode( + string name, + ExpSchema context, + ExpBaseNode target, + ExpBaseNode defaultCase, + params (ExpBaseNode label, ExpBaseNode op)[] cases ) + : base( name, context ) + { + _target = target; + _default = defaultCase; + _cases = new Dictionary(); + foreach( (ExpBaseNode label, ExpBaseNode op ) item in cases ) { + if( item.op == null ) { + _cases.Add( item.label, null! ); + } else { + _cases.Add( item.label, item.op ); + } + } + } + + public ExpBaseNode this[ ExpBaseNode index ] + { + get + { + if( _cases.TryGetValue( index, out ExpBaseNode? ret ) ) { + return ret; + } + return _default; + } + } + + public override ExpBaseNode Left => throw new NotImplementedException(); + + public override ExpBaseNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => null!; + + public void AddOperationToDefault( ExpBaseNode expressionRoot ) + { + if( expressionRoot != null ) { + _default.AppendNode( expressionRoot ); + } + } + + /// + /// Adds an expression to certain . The added expression will be run + /// at last. + /// + /// Label of case to add operation + /// Root token of the expression to be added. + /// Cannot fine the case label in current witch expression. + public void AppendOperationToCase( + ExpBaseNode label, + ExpBaseNode expressionRoot ) + { + AssertSchemaInclude( expressionRoot ); + if( _cases.TryGetValue( label, out ExpBaseNode? op ) ) { + op.AppendNode( expressionRoot ); + } else { + throw new ExpCaseNotFoundException( this, label ); + } + } + + public bool ContainsCase( ExpBaseNode token ) + { + return _cases.ContainsKey( token ); + } + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpUnaryOperatorNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpUnaryOperatorNode.cs new file mode 100644 index 00000000..56adb556 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpUnaryOperatorNode.cs @@ -0,0 +1,60 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpUnaryOperatorNode.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.Script.Express +{ + public class ExpUnaryOperatorNode : ExpBaseNode + { + + private ExpBaseNode _operand; + + public ExpUnaryOperatorNode( + string name, + ExpBaseNode operand, + ExpSchema context ) + : base( name, context ) + { + _operand = operand; + } + + public override ExpBaseNode Left => null!; + + public override ExpBaseNode Right => _operand; + + public override IExpElementSource EqualityTypeConvert => _operand.EqualityTypeConvert; + + } +} diff --git a/StgSharp.Script/Express/ExpElementInstanceBase.cs b/StgSharp.Script/Express/ExpElementInstanceBase.cs new file mode 100644 index 00000000..d64a86d9 --- /dev/null +++ b/StgSharp.Script/Express/ExpElementInstanceBase.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpElementInstanceBase.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.IO; +using System.Runtime.CompilerServices; +using System.Text; + +namespace StgSharp.Script.Express +{ + [Flags] + public enum ExpElementType : int + { + + Const = 0, + Entity = 1, + Type = 2, + Function = 4, + Section = 8, + Expression = 16, + Rule = 32, + Procedure = 64, + Collection = 128 | Type, + + } + + public abstract class ExpElementInstanceBase : ExpBaseNode + { + + protected ExpElementInstanceBase( string name, ExpSchema context ) + : base( name, context ) { } + + public ExpElementType ElementType + { + get; + } + + public abstract string TypeName + { + get; + } + + } +} diff --git a/StgSharp.Script/Express/ExpElmentSource.cs b/StgSharp.Script/Express/ExpElmentSource.cs new file mode 100644 index 00000000..f4bf3018 --- /dev/null +++ b/StgSharp.Script/Express/ExpElmentSource.cs @@ -0,0 +1,115 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpElmentSource.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.Script.Express +{ + public interface IExpElementSource : ITypeSource + { + + public ExpElementType ElementType + { + get; + } + + IScriptSourceProvider SourceProvider + { + get; + } + + string Name + { + get; + } + + public void Analyse(); + + } + + public abstract class ExpInstantiableElementBase : IExpElementSource + { + + public abstract ExpElementType ElementType + { + get; + } + + public abstract IScriptSourceProvider SourceProvider + { + get; + } + + public abstract string Name + { + get; + } + + public abstract void Analyse(); + + public abstract ExpBaseNode CreateInstanceToken(); + + public abstract bool IsConvertable( IExpElementSource targetType ); + + } + + public abstract class ExpImmutableElementBase : IExpElementSource + { + + public abstract ExpElementType ElementType + { + get; + } + + public abstract IScriptSourceProvider SourceProvider + { + get; + } + + public abstract string Name + { + get; + } + + public abstract void Analyse(); + + public bool IsConvertable( IExpElementSource targetType ) + { + return false; + } + + public abstract ExpBaseNode MakeReference( params object[] options ); + + } +} diff --git a/StgSharp.Script/Express/ExpExceptions.cs b/StgSharp.Script/Express/ExpExceptions.cs new file mode 100644 index 00000000..8299e596 --- /dev/null +++ b/StgSharp.Script/Express/ExpExceptions.cs @@ -0,0 +1,135 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpExceptions.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.IO; +using System.Text; + +namespace StgSharp.Script.Express +{ + public class ExpCompileNotInitializedException : InvalidOperationException + { + + public ExpCompileNotInitializedException() + : base( + "Attempt to compile an EXPRESS script before the init of compiler." ) { } + + } + + public class ExpInvalidCharException : Exception + { + + public ExpInvalidCharException( char c ) + : base( $"An unknown char {c} occurred." ) { } + + } + + public class ExpInvalidTokenException : Exception + { + + public ExpInvalidTokenException( int index ) + : base( $"Cannot read a token from line at {index}" ) { } + + } + + public class ExpInvalidTypeDeclareEndingExceptions : Exception + { + + public ExpInvalidTypeDeclareEndingExceptions( + string declaredName, + string endedName ) + : base( + $"The datatype is declared with name {declaredName} but ended with {endedName}" ) { } + + } + + public class ExpInvalidElementNameException : Exception + { + + public ExpInvalidElementNameException( + string elementName, + ExpSchema schema ) + : base( + $"Cannot find any element named {elementName} in {schema.Name}" ) { } + + } + + public class ExpInvalidTypeException : InvalidCastException + { + + public ExpInvalidTypeException( string required, string provided ) + : base( + $"Type {required} is required at position, but a {provided} instance is provided." ) { } + + } + + public class ExpInvalidCollectionMemberTypeException : InvalidCastException + { + + public ExpInvalidCollectionMemberTypeException( + ExpElementInstanceBase elementInstance, + ExpCollectionBase collection ) + : base( + $"Attempt to add or remove an element of type: {elementInstance.ElementType} from a collection collects {collection.MemberType}" ) { } + + } + + public class ExpInvalidSchemaIncludeException : InvalidOperationException + { + + public ExpInvalidSchemaIncludeException( + ExpSchema context, + ExpSchema source ) + : base( + $"Attempted to reference an EXPRESS language expression in the current schema context '{context.Name}', " + $"but this expression comes from another schema '{source.Name}' that has not been included." ) { } + + } + + public class ExpCaseNotFoundException : ArgumentOutOfRangeException + { + + public ExpCaseNotFoundException( + ExpSwitchNode token, + ExpBaseNode label ) + : base( + $"Attempt to read or write the label {label.Name} not exist in SWITCH expression {token.Name}" ) { } + + } + + public class ExpTypeNotFoundException : Exception + { + + public ExpTypeNotFoundException( string typeName, ExpSchema context ) + : base( + $"Cannot find the type {typeName} in schema {context.Name} and its included schemas" ) { } + + } +} diff --git a/StgSharp.Script/Express/ExpSchemaBase.cs b/StgSharp.Script/Express/ExpSchemaBase.cs new file mode 100644 index 00000000..b9c68ca8 --- /dev/null +++ b/StgSharp.Script/Express/ExpSchemaBase.cs @@ -0,0 +1,113 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSchemaBase.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.Collections; + +using System; +using System.Collections.Frozen; +using System.Linq; + +namespace StgSharp.Script.Express +{ + public abstract class ExpSchema + { + + public static ExpSchema BuiltinSchema + { + get => ExpSchema_Nitload.Only; + } + + public string Name + { + get; + internal set; + } + + public abstract void LoadFromSource( ExpSchemaSource source ); + + public abstract bool TryGetConst( + string name, + out ExpElementInstanceBase c ); + + public abstract bool TryGetEntity( string name, out ExpEntitySource e ); + + public abstract bool TryGetFunction( + string name, + out ExpFunctionSource f ); + + public abstract bool TryGetRule( string name, out ExpRuleSource r ); + + public abstract bool TryGetSchemaInclude( + string name, + out ExpSchema include ); + + public abstract bool TryGetType( string name, out ExpTypeSource t ); + + #pragma warning disable CS8618 + protected FrozenDictionary ConstDict + { + get; + set; + } + + protected FrozenDictionary EntityDict + { + get; + set; + } + + protected FrozenDictionary FunctionDict + { + get; + set; + } + + protected ConcurrentStringHashMultiplexer StringMultiplexer => ExpCompile.Multiplexer; + + protected FrozenDictionary RuleDict + { + get; + set; + } + + protected FrozenDictionary SchemaInclude + { + get; + set; + } + + protected FrozenDictionary TypeDict + { + get; + set; + } +#pragma warning restore CS8618 + } +} diff --git a/StgSharp.Script/Express/ExpSchemaSource.cs b/StgSharp.Script/Express/ExpSchemaSource.cs new file mode 100644 index 00000000..f5198c8e --- /dev/null +++ b/StgSharp.Script/Express/ExpSchemaSource.cs @@ -0,0 +1,357 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSchemaSource.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.Collections; +using StgSharp.Graphics.OpenGL; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.Tracing; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Script.Express +{ + public partial class ExpSchemaSource + { + + private static Regex + _constDefineBegin = GetConstDefineBegin(), + _constDefineEnd = GetConstDefineEnd(), + _schemaBegin = GetSchemaBegin(), + _schemaEnd = GetSchemaEnd(), + _entityDefineBegin = GetEntityDefineBegin(), + _entityDefineEnd = GetEntityDefineEnd(), + _typeDefineBegin = GetTypeDefineBegin(), + _typeDefineEnd = GetTypeDefineEnd(), + _functionDefineBegin = GetFunctionDefineBegin(), + _functionDefineEnd = GetFunctionDefineEnd(), + _ruleDefineBegin = GetRuleDefineBegin(), + _ruleDefineEnd = GetRuleDefineEnd(); + + private readonly GeneratedExpSchema _compileResult = new GeneratedExpSchema( + ); + + private List _sourceCache = []; + + private string name; + + public ExpSchemaSource() { } + + public List Cache + { + get => _sourceCache; + } + + public string Name + { + get => _compileResult.Name; + internal set => _compileResult.Name = value; + } + + public ExpSchema Organize() + { + _compileResult.LoadFromSource( this ); + return _compileResult; + } + + public void ReadSchema( ExpFileSource reader ) + { + string line = reader.ReadLine(); + while( !_schemaBegin.IsMatch( line ) ) { + line = reader.ReadLine(); + } + name = _schemaBegin.Match( line ).Groups[ "namespace" ].Value; + + while( !_schemaEnd.IsMatch( line ) ) { + if( TryReadConst( line, reader, + out IExpElementSource source ) ) { + _sourceCache.Add( source ); + } else if( TryReadType( line, reader, out source ) ) { + _sourceCache.Add( source ); + } else if( TryReadEntity( line, reader, out source ) ) { + _sourceCache.Add( source ); + } else if( TryReadRule( line, reader, out source ) ) { + _sourceCache.Add( source ); + } else if( TryReadFunction( line, reader, out source ) ) { + _sourceCache.Add( source ); + } + line = reader.ReadLine(); + } + } + + public static bool TryReadSchema( + string firstLine, + ExpFileSource reader, + out ExpSchemaSource source ) + { + if( !_schemaBegin.IsMatch( firstLine ) ) { + source = null!; + return false; + } + ExpSchemaSource _source = new ExpSchemaSource(); + _source.name = _schemaBegin.Match( firstLine ).Groups[ "namespace" ].Value; + + while( !_schemaEnd.IsMatch( firstLine ) ) { + if( _source.TryReadConst( + firstLine, reader, + out IExpElementSource _elementSource ) ) { + _source._sourceCache.Add( _elementSource ); + } else if( _source.TryReadType( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache.Add( _elementSource ); + } else if( _source.TryReadEntity( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache.Add( _elementSource ); + } else if( _source.TryReadRule( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache.Add( _elementSource ); + } else if( _source.TryReadFunction( + firstLine, reader, out _elementSource ) ) { + _source._sourceCache.Add( _elementSource ); + } + firstLine = reader.ReadLine(); + } + source = _source; + return true; + } + + [GeneratedRegex( @"\s*CONSTANT" )] + private static partial Regex GetConstDefineBegin(); + + [GeneratedRegex( @"\s*END_CONSTANT;" )] + private static partial Regex GetConstDefineEnd(); + + [GeneratedRegex( + @"\s*ENTITY\s*(?[A-Za-z0-9_]+)\s*", + RegexOptions.Compiled )] + private static partial Regex GetEntityDefineBegin(); + + [GeneratedRegex( + @"\s*END_ENTITY;\s*--\s*(?[A-Za-z0-9_]+)\s*", + RegexOptions.Compiled )] + private static partial Regex GetEntityDefineEnd(); + + [GeneratedRegex( + @"\s*FUNCTION\s*\s*(?[a-zA-Z0-9_]+)\s*(?.*)", + RegexOptions.Compiled )] + private static partial Regex GetFunctionDefineBegin(); + + [GeneratedRegex( + @"\s*END_FUNCTION\s*;\s*--\s*(?[a-zA-Z0-9_]+)", + RegexOptions.Compiled )] + private static partial Regex GetFunctionDefineEnd(); + + [GeneratedRegex( + @"\s*RULE\s*(?[a-zA-Z0-9_]+)\s*FOR\s*\((?[a-zA-Z0-9_]*(?:\s*\)\s*;)?)", + RegexOptions.Compiled )] + private static partial Regex GetRuleDefineBegin(); + + [GeneratedRegex( + @"\s*END_RULE\s*;\s*--\s*(?[A-Za-z0-9_]+)", + RegexOptions.Compiled )] + private static partial Regex GetRuleDefineEnd(); + + [GeneratedRegex( @"\s*SCHEMA\s*(?[A-Za-z0-9_]+)\s?;" )] + private static partial Regex GetSchemaBegin(); + + [GeneratedRegex( + @"END_SCHEMA;\s*--\s*(?[A-Za-z0-9_]+)", + RegexOptions.Compiled )] + private static partial Regex GetSchemaEnd(); + + [GeneratedRegex( + @"\s*TYPE\s+(?[A-Za-z0-9_]+)\s*=\s*(?[A-Z]+)", + RegexOptions.Compiled )] + private static partial Regex GetTypeDefineBegin(); + + [GeneratedRegex( + @"\s*END_TYPE\s*;\s*--\s*(?[a-zA-Z0-9_]+)", + RegexOptions.Compiled )] + private static partial Regex GetTypeDefineEnd(); + + private bool TryReadConst( + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) + { + Match match = _constDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_CONSTANT", reader.Location ); + ExpConstantCollectionSource _source = new ExpConstantCollectionSource( + transmitter ); + string line = reader.ReadLine(); + while( !_constDefineEnd.IsMatch( line ) ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + } + transmitter.WriteLine( "END_CONSTANT" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadEntity( + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) + { + Match match = _entityDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_ENTITY", reader.Location ); + ExpEntitySource _source = new ExpEntitySource( + match.Groups[ "TypeName" ].ToString(), transmitter ); + string line = reader.ReadLine(); + match = _entityDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _entityDefineEnd.Match( line ); + } + string endedName = match.Groups[ "TypeName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_ENTITY" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadFunction( + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) + { + Match match = _functionDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_FUNCTION", reader.Location ); + ExpFunctionSource _source = new ExpFunctionSource( + match.Groups[ "FunctionName" ].ToString(), transmitter ); + transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); + string line = reader.ReadLine(); + match = _functionDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _functionDefineEnd.Match( line ); + } + string endedName = match.Groups[ "FunctionName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_FUNCTION" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadRule( + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) + { + Match match = _ruleDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_RULE", reader.Location ); + ExpRuleSource _source = new ExpRuleSource( + match.Groups[ "RuleName" ].ToString(), transmitter ); + string target = match.Groups[ "Target" ].ToString(); + if( !string.IsNullOrEmpty( target ) ) { + transmitter.WriteLine( target ); + } + string line = reader.ReadLine(); + match = _ruleDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _ruleDefineEnd.Match( line ); + } + string endedName = match.Groups[ "RuleName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_RULE" ); + source = _source; + return true; + } + source = null!; + return false; + } + + private bool TryReadType( + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) + { + Match match = _typeDefineBegin.Match( firstLine ); + if( match.Success ) { + ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( + "END_ENTITY", reader.Location ); + ExpTypeSource _source = new ExpTypeSource( + match.Groups[ "TypeName" ].ToString(), transmitter ); + transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); + string line = reader.ReadLine(); + match = _typeDefineEnd.Match( line ); + while( !match.Success ) { + transmitter.WriteLine( line ); + line = reader.ReadLine(); + match = _typeDefineEnd.Match( line ); + } + string endedName = match.Groups[ "TypeName" ].ToString(); + if( !string.Equals( endedName, _source.Name ) ) { + throw new ExpInvalidTypeDeclareEndingExceptions( + _source.Name, endedName ); + } + transmitter.WriteLine( "END_ENTITY" ); + source = _source; + return true; + } + source = null!; + return false; + } + + } +} diff --git a/StgSharp.Script/Express/ExpSource.cs b/StgSharp.Script/Express/ExpSource.cs new file mode 100644 index 00000000..1aee1a0c --- /dev/null +++ b/StgSharp.Script/Express/ExpSource.cs @@ -0,0 +1,127 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSource.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.IO; +using System.IO.MemoryMappedFiles; +using System.Text; +using System.Threading; + +namespace StgSharp.Script.Express +{ + public class ExpFileSource : IDisposable, IScriptSourceProvider + { + + private bool disposedValue; + private FileStream _expFileStream; + private int _location; + private MemoryMappedFile _expMemoryMappedFile; + private MemoryMappedViewStream _expMemoryMappedStream; + + private SemaphoreSlim readLineSemaphore = new SemaphoreSlim( 1, 1 ); + private StreamReader _memoryReader; + + public ExpFileSource( string path ) + { + if ( !File.Exists( path ) ) { + throw new FileNotFoundException(); + } + _expFileStream = new FileStream( + path, FileMode.Open, FileAccess.Read ); + _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( + _expFileStream, null, 0, MemoryMappedFileAccess.Read, + HandleInheritability.None, true ); + _expMemoryMappedStream = _expMemoryMappedFile.CreateViewStream( + offset: 0, size: 0, access: MemoryMappedFileAccess.Read ); + _memoryReader = new StreamReader( _expMemoryMappedStream ); + } + + public bool IsEmpty => _memoryReader.EndOfStream; + + public int Location => _location; + + // ~ExpFileSource() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + + public void EndWriting() + { + } + + public string ReadLine() + { + readLineSemaphore.Wait(); + string line = _memoryReader.ReadLine()!; + _location++; + readLineSemaphore.Release(); + return line; + } + + public string ReadLine(out int position) + { + throw new NotImplementedException(); + } + + public void ResetToBegin() + { + readLineSemaphore.Wait(); + _expMemoryMappedStream.Seek( 0, SeekOrigin.Begin ); + _location = 0; + readLineSemaphore.Release(); + } + + IScriptSourceProvider IScriptSourceProvider.Slice(int location, int count) + { + throw new NotSupportedException(); + } + + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) { + if( disposing ) { + _expFileStream.Dispose(); + _expMemoryMappedFile.Dispose(); + _expMemoryMappedStream.Dispose(); + _memoryReader.Dispose(); + } + disposedValue = true; + } + } + + } +} diff --git a/StgSharp.Script/Express/ExpSourceReader.cs b/StgSharp.Script/Express/ExpSourceReader.cs new file mode 100644 index 00000000..b6420ce6 --- /dev/null +++ b/StgSharp.Script/Express/ExpSourceReader.cs @@ -0,0 +1,313 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSourceReader.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 CommunityToolkit.HighPerformance; + +using StgSharp.HighPerformance; + +using System; +using System.Linq; +using System.Text.RegularExpressions; + +namespace StgSharp.Script.Express +{ + public partial class ExpSourceReader + { + + private const int + MultiLineEnd = 0x0029002A; // *) + + private const string Token = "token", End = "end", Rest = "rest"; + + private bool _isReadingMultiLineComment; + private int _current, _lineNum; + private IScriptSourceProvider _provider; + + private Regex _nextWordTokenPattern = GetNextWordTokenPattern(), + _nextStringLiteralPattern = GetStringLiteralPattern(), + _nextNumberLiteralPattern = GetNumberLiteralPattern(), + _skipBlankPattern = GetSkipBlankPattern(); + private string _lineCache; + private Token _last; + + public ExpSourceReader( IScriptSourceProvider provider ) + { + _provider = provider; + _current = 0; + _lineCache = string.Empty; + _isReadingMultiLineComment = false; + } + + public bool IsEmpty + { + get => ( ( string.IsNullOrEmpty( _lineCache ) || _current >= + _lineCache.Length ) ) && _provider.IsEmpty; + } + + public int LineNumber + { + get => _provider.Location; + } + + /// + /// Read code until end of a line. Lines in multi-line comment will be ignored. Line + /// begins with part of multi-line comment will automatically remove the comment part, but + /// beginning with a full multi-line comment will not causing removing. (*Just + /// Like The Comment Here*) Will Not Be Removed + /// + /// + public unsafe ReadOnlySpan ReadLine() + { + bool lineOver = string.IsNullOrEmpty( _lineCache ) || _current >= + _lineCache.Length; + while( lineOver || _isReadingMultiLineComment ) { + if( lineOver ) { + do { + _lineCache = _provider.ReadLine( out _lineNum ); + } while (string.IsNullOrEmpty( _lineCache )); + _current = 0; + } + if( _isReadingMultiLineComment ) { + int index; + fixed( char* cPtr = _lineCache.AsSpan( _current ) ) { + index = UnsafeCompute.IndexOfCharPair( + cPtr, MultiLineEnd, _lineCache.Length ); + } + if( index == -1 ) { + _lineCache = string.Empty; + } else { + _isReadingMultiLineComment = false; + _current += index + 2; + } + } + lineOver = string.IsNullOrEmpty( _lineCache ) || _current >= + _lineCache.Length; + } + return _lineCache.AsSpan().Slice( _current ); + } + + public unsafe Token ReadToken() + { + int begin, end, rest; + readLine: + ReadOnlySpan source = ReadLine(); + char c = source[ 0 ]; + + if( char.IsLetter( c ) ) { + Match match = _nextWordTokenPattern.Match( + _lineCache, _current ); + if( match.Success ) { + begin = match.Groups[ Token ].Index; + end = match.Groups[ End ].Index; + rest = match.Groups[ Rest ].Index; + _current = rest; + _last = new( + ExpCompile.PoolString( source[ .. ( end - begin ) ] ), + _lineNum, begin, TokenFlag.Member ); + return _last; + } else { + throw new ExpInvalidTokenException( _current ); + } + } else if( char.IsPunctuation( c ) || char.IsSymbol( c ) ) { + switch( c ) { + case '"': + char cNext = source[ 1 ]; + if( cNext == '\"' ) //empty string + { + begin = _current; + _current += 2; + return new( + string.Empty, _lineNum, begin, + TokenFlag.String ); + } + Match match = _nextStringLiteralPattern.Match( + _lineCache, _current ); + if( match.Success ) { + begin = match.Groups[ "token" ].Index; + end = match.Groups[ "end" ].Index; + rest = match.Groups[ "rest" ].Index; + _current = rest; + _last = new( + ExpCompile.PoolString( + source[ 1..( end - begin ) ] ), + _lineNum, begin, TokenFlag.String ); + return _last; + } else { + throw new ExpInvalidCharException( '\"' ); + } + case '(': + cNext = source[ 1 ]; + if( cNext == '*' ) { + _isReadingMultiLineComment = true; + _current += 2; + goto readLine; + } else { + begin = _current; + _current++; + _last = new( + ExpCompile.PoolString( source[ ..1 ] ), + _lineNum, begin, TokenFlag.Separator_Left ); + return _last; + } + case ')' or '}': + begin = _current; + _current++; + _last = new Token( + ExpCompile.PoolString( ")" ), _lineNum, begin, + TokenFlag.Separator_Right ); + return _last; + case '-': + + // 1. -number + // 2. -- comment + // 3. - number type param(UNARY) + // 4. param - param(BINARY) + cNext = source[ 1 ]; + if( char.IsNumber( cNext ) ) { + match = _nextNumberLiteralPattern.Match( + _lineCache, _current ); + if( match.Success ) { + begin = match.Groups[ Token ].Index; + end = match.Groups[ End ].Index; + rest = match.Groups[ Rest ].Index; + _current = rest; + return new( + ExpCompile.PoolString( + source[ ..( end - begin ) ] ), + _lineNum, begin, TokenFlag.Number ); + } else { + throw new ExpInvalidTokenException( _current ); + } + } else if( cNext == '-' ) { + _lineCache = string.Empty; + _current = 0; + goto readLine; + } else { + begin = _current; + _current++; + if( _last.Flag != TokenFlag.Member ) { + _last = new( + ExpCompile.PoolString( source[ ..1 ] ), + _lineNum, begin, TokenFlag.Symbol_Unary ); + } else { + _last = new( + ExpCompile.PoolString( source[ ..1 ] ), + _lineNum, begin, TokenFlag.Symbol_Binary ); + } + return _last; + } + case '{': + begin = _current; + _current++; + return new Token( + ExpCompile.PoolString( "{" ), _lineNum, begin, + TokenFlag.Separator_Left ); + case '[': + begin = _current; + _current++; + return new Token( + ExpCompile.PoolString( "[" ), _lineNum, begin, + TokenFlag.Index_Left ); + case ']': + begin = _current; + _current++; + return new Token( + ExpCompile.PoolString( "]" ), _lineNum, begin, + TokenFlag.Index_Right ); + case ';' or ',': + begin = _current; + _current++; + return new Token( + ExpCompile.PoolString( source[ ..1 ] ), _lineNum, + begin, TokenFlag.Separator_Single ); + case ':' or '+' or '/' or '\\' or '*' or '.': + begin = _current; + _current++; + return new( + ExpCompile.PoolString( source[ ..1 ] ), _lineNum, + begin, TokenFlag.Symbol_Binary ); + default: + throw new ExpInvalidCharException( c ); + } + } else if( char.IsNumber( c ) ) { + Match match = _nextNumberLiteralPattern.Match( + _lineCache, _current ); + if( match.Success ) { + begin = match.Groups[ Token ].Index; + end = match.Groups[ End ].Index; + rest = match.Groups[ Rest ].Index; + _current = rest; + string str = ExpCompile.PoolString( + source[ ..( end - begin ) ] ); + TokenFlag flag; + if( ReferenceEquals( str, ExpCompile.KeyWord.NOT ) ) { + flag = TokenFlag.Symbol_Unary; + } else { + flag = ExpCompile.LetterIsOperator( str ) ? + TokenFlag.Symbol_Binary : TokenFlag.Member; + } + return new( str, _lineNum, begin, flag ); + } else { + throw new ExpInvalidTokenException( _current ); + } + } else if( char.IsWhiteSpace( c ) ) { + Match match = _skipBlankPattern.Match( _lineCache, _current ); + if( match.Success ) { + rest = match.Groups[ Rest ].Index; + _current = rest; + goto readLine; + } else { + throw new ExpInvalidTokenException( _current ); + } + } else { + throw new ExpInvalidCharException( c ); + } + } + + [GeneratedRegex( + @"(?[a-zA-Z][a-zA-Z0-9_]*)(?\s*?)(?\S|$)", + RegexOptions.Singleline )] + private static partial Regex GetNextWordTokenPattern(); + + [GeneratedRegex( + @"(?-?\s*?[0-9]+(?:\.[0-9]*)?)(?\s*?)(?\S|$)", + RegexOptions.Singleline )] + private static partial Regex GetNumberLiteralPattern(); + + [GeneratedRegex( @"(?:\s+?)(?\S|$)", RegexOptions.Singleline )] + private static partial Regex GetSkipBlankPattern(); + + [GeneratedRegex( + @"(?"")(?:.*?[^\\](?:\\\\)*?)(?"")\s*?(?\S|$)", + RegexOptions.Singleline )] + private static partial Regex GetStringLiteralPattern(); + + } +} diff --git a/StgSharp.Script/Express/GeneratedExpSchema.cs b/StgSharp.Script/Express/GeneratedExpSchema.cs new file mode 100644 index 00000000..7d4cb111 --- /dev/null +++ b/StgSharp.Script/Express/GeneratedExpSchema.cs @@ -0,0 +1,118 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GeneratedExpSchema.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 CommunityToolkit.HighPerformance.Helpers; + +using StgSharp.Collections; + +using System; +using System.Collections.Frozen; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script.Express +{ + internal class GeneratedExpSchema : ExpSchema + { + + public GeneratedExpSchema() { } + + public static ExpSchema DefaultSchema + { + get => ExpSchema_Nitload.Only; + } + + public ExpTypeSource GetExpType( string typeName ) + { + if( ExpCompile.TryGetBuiltinType( typeName, + out ExpTypeSource? ret ) ) { + return ret; + } + if( TypeDict.TryGetValue( typeName, out ret ) ) { + return ret; + } + foreach( GeneratedExpSchema item in SchemaInclude.Values ) { + if( item.TypeDict.TryGetValue( typeName, out ret ) ) { + return ret; + } + } + throw new ExpTypeNotFoundException( typeName, this ); + } + + public bool HasSchemaInclude( GeneratedExpSchema schema ) + { + return SchemaInclude.ContainsKey( schema.Name ); + } + + public override void LoadFromSource( ExpSchemaSource source ) + { + throw new NotImplementedException(); + } + + public override bool TryGetConst( + string name, + out ExpElementInstanceBase c ) + { + return ConstDict.TryGetValue( name, out c ); + } + + public override bool TryGetEntity( string name, out ExpEntitySource e ) + { + return EntityDict.TryGetValue( name, out e ); + } + + public override bool TryGetFunction( + string name, + out ExpFunctionSource f ) + { + return FunctionDict.TryGetValue( name, out f ); + } + + public override bool TryGetRule( string name, out ExpRuleSource r ) + { + throw new NotImplementedException(); + } + + public override bool TryGetSchemaInclude( + string name, + out ExpSchema include ) + { + throw new NotImplementedException(); + } + + public override bool TryGetType( + string name, + out ExpTypeSource element ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Script/Express/NodeGenerator/ExpErrorThrow.cs b/StgSharp.Script/Express/NodeGenerator/ExpErrorThrow.cs new file mode 100644 index 00000000..39182ea8 --- /dev/null +++ b/StgSharp.Script/Express/NodeGenerator/ExpErrorThrow.cs @@ -0,0 +1,55 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpErrorThrow.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.Script.Express +{ + public partial class ExpNodeGenerator + { + + public void ThrowCompileException( int errorCode ) + { + switch( errorCode ) { + case 0 or 1: + return; + case TokenTypeNotMatch: + throw new Exception(); + default: + break; + } + } + + } +} diff --git a/StgSharp.Script/Express/NodeGenerator/ExpNodeGenerator.cs b/StgSharp.Script/Express/NodeGenerator/ExpNodeGenerator.cs new file mode 100644 index 00000000..a6bfedeb --- /dev/null +++ b/StgSharp.Script/Express/NodeGenerator/ExpNodeGenerator.cs @@ -0,0 +1,155 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpNodeGenerator.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.Threading; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public partial class ExpNodeGenerator + { + + private const int EndLine = 1; + private const int TokenGenerated = 0; + private const int TokenTypeNotMatch = -1; + + private ExpBaseNode _lastStatement; + + private GeneratedExpSchema _context; + private IExpElementSource _local; + private List _cache; + private Stack _operandsNode; + private Stack _operandsToken; + private Stack _operators; + + public ExpNodeGenerator() + { + _operators = new Stack(); + _operandsToken = new Stack(); + } + + /// + /// Append a token to top of cache. This method will automatically convert token to node if + /// meets separators or operators. + /// + /// + public void AppendToken( Token expToken ) + { + switch( expToken.Flag ) { + case TokenFlag.Symbol_Unary or TokenFlag.Symbol_Binary: + + _operandsToken.Push( expToken ); + break; + case TokenFlag.Number or TokenFlag.String or TokenFlag.Member: + break; + case TokenFlag.Separator_Single: + break; + case TokenFlag.Separator_Left: + break; + case TokenFlag.Separator_Right: + break; + case TokenFlag.Index_Left: + break; + case TokenFlag.Index_Right: + break; + default: + break; + } + } + + public void CacheNextOperandNode( ExpBaseNode node ) + { + _operandsNode.Push( node ); + } + + public AbstractSyntaxTree CloseAndDispose( + ) + { + if( _operandsToken.Count != 0 ) { + // convert rest to AST + } + return new AbstractSyntaxTree(); + } + + public ExpBaseNode GenerateNode( Token t ) + { + switch( t.Flag ) { + case TokenFlag.Symbol_Unary: + break; + case TokenFlag.Symbol_Binary: + break; + case TokenFlag.Number: + break; + case TokenFlag.String: + break; + case TokenFlag.Member: + break; + case TokenFlag.Separator_Single: + break; + case TokenFlag.Separator_Left: + break; + case TokenFlag.Separator_Right: + break; + case TokenFlag.Index_Left: + break; + case TokenFlag.Index_Right: + break; + default: + break; + } + } + + public int GetNextOperandCache( + out Token? token, + out ExpBaseNode? node ) + { + if( _operandsNode.Count != 0 ) { + node = _operandsNode.Pop(); + token = null!; + return 2; + } + if( _operandsToken.Count != 0 ) { + token = _operandsToken.Pop(); + node = null!; + return 1; + } + token = null; + node = null!; + return 0; + } + + } +} diff --git a/StgSharp.Script/Express/NodeGenerator/GenerateUnaryToken.cs b/StgSharp.Script/Express/NodeGenerator/GenerateUnaryToken.cs new file mode 100644 index 00000000..e6f658cf --- /dev/null +++ b/StgSharp.Script/Express/NodeGenerator/GenerateUnaryToken.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="GenerateUnaryToken.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.Script.Express +{ + public partial class ExpNodeGenerator + { + + public ExpBaseNode GenerateUnaryToken( Token t ) + { + switch( t.Value ) { + case ExpCompile.KeyWord.UnaryAdd: + break; + case ExpCompile.KeyWord.UnarySub: + break; + case ExpCompile.KeyWord.NOT: + break; + default: + break; + } + } + + } +} diff --git a/StgSharp.Script/Express/NodeGenerator/LeftSperatorProcess.cs b/StgSharp.Script/Express/NodeGenerator/LeftSperatorProcess.cs new file mode 100644 index 00000000..09e4b01d --- /dev/null +++ b/StgSharp.Script/Express/NodeGenerator/LeftSperatorProcess.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="LeftSperatorProcess.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.Frozen; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public partial class ExpNodeGenerator + { + + private int _lbToken = 0; // [ count + private int _lcbCount = 0; // { count + private int _lpCount = 0; // ( count + + private void ProcessLeftSeparator( Token t ) + { + switch( t.Value ) { + case "[": + _lbToken++; + break; + case "{": + _lcbCount++; + break; + case "(": + _lpCount++; + break; + default: + break; + } + } + + } +} diff --git a/StgSharp.Script/Express/NodeHelper/ExpNodeFlag.cs b/StgSharp.Script/Express/NodeHelper/ExpNodeFlag.cs new file mode 100644 index 00000000..b9d15b3b --- /dev/null +++ b/StgSharp.Script/Express/NodeHelper/ExpNodeFlag.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpNodeFlag.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.Script.Express +{ + [Flags] + public enum ExpNodeFlag : long + { + + //string as name of non-builtin variables + None = 0, + Name_Element = 1, + Name_Param = 2, + Name_Block = 4, + Name_Keyword = 8, + Name_Operator = 16, + Name_Any = Name_Block | Name_Element | Name_Keyword | Name_Param | Name_Operator, + + //any type of collections, also has NAME flag + Collection_Set = 32, + Collection_Bag = 64, + Collection_Array = 128, + Collection_List = 256, + Collection_Any = Collection_Set | Collection_Bag | Collection_Array | Collection_List, + + //the variable is type of element, both builtin and non-builtin has this flag + Element_Const = 512, + Element_Entity = 1024, + Element_Type = 2048, + Element_Rule = 4096, + Element_Function = 8192, + Element_Any = Element_Entity | Element_Const | Element_Function | Element_Rule | Element_Type, + + //variable is one of these builtin type + BuiltinType_Int = 16384, + BuiltinType_Float = 32768, + BuiltinType_String = 65536, + BuiltinType_Boolean = 0x2000, + BuiltinType_Binary = 0x4000, + BuiltinType_Logic = 0x8000, + BuiltinType_Number = BuiltinType_Float | BuiltinType_Int, + BuiltinType_Any = BuiltinType_Int | BuiltinType_Float | BuiltinType_String | BuiltinType_Boolean | BuiltinType_Binary | BuiltinType_Logic, + + //the token is root of a branch + Branch_If = 0x1_000, + Branch_Switch = 0x2_0000, + Branch_Repeat = 0x4_0000, + Branch_Any = Branch_If | Branch_Repeat | Branch_Switch, + + //the token is one of separators + Separator_Inline = 0x8_0000, //, or sth else + Separator_Line = 0x10_0000, //; or eth else + Separator_Block = 0x20_0000, //{}or sth else + Separator_Range = 0x40_0000, //()or sth else + Separator_Any = Separator_Inline | Separator_Line | Separator_Block | Separator_Range, + + //the token is a kind of operator + Operator_Unary = 0x40_0000, + Operator_Binary = 0x80_0000, + Operator_SuperType = 0x100_0000, + Operator_Any = Operator_Unary | Operator_Binary | Operator_SuperType, + + } +} diff --git a/StgSharp.Script/Express/NodeHelper/ExpNodeNextEnumerator.cs b/StgSharp.Script/Express/NodeHelper/ExpNodeNextEnumerator.cs new file mode 100644 index 00000000..5b289ebe --- /dev/null +++ b/StgSharp.Script/Express/NodeHelper/ExpNodeNextEnumerator.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpNodeNextEnumerator.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; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public class ExpNodeNextEnumerator : IEnumerator + { + + private ExpBaseNode _begin; + private ExpBaseNode _current; + + public ExpNodeNextEnumerator( ExpBaseNode token ) + { + _begin = token; + _current = token; + } + + void IDisposable.Dispose() + { + return; + } + + bool IEnumerator.MoveNext() + { + ExpBaseNode next = _current.Next; + if( ReferenceEquals( next, _begin ) || next == null ) { + return false; + } + _current = next; + return true; + } + + void IEnumerator.Reset() + { + _current = _begin; + } + + object IEnumerator.Current => throw new NotImplementedException(); + + ExpBaseNode IEnumerator.Current => throw new NotImplementedException( + ); + + } +} diff --git a/StgSharp.Script/IASTNode.cs b/StgSharp.Script/IASTNode.cs new file mode 100644 index 00000000..23d6ead8 --- /dev/null +++ b/StgSharp.Script/IASTNode.cs @@ -0,0 +1,90 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IASTNode.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.Collections; +using StgSharp.Script.Express; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Script +{ + public interface IASTNode where TNode: IASTNode + where TType: ITypeSource + { + + long NodeFlag + { + get; + } + + string Name + { + get; + } + + string CodeConvertTemplate + { + get; + } + + TNode Previous + { + get; + set; + } + + TNode Next + { + get; + set; + } + + TNode Left + { + get; + } + + TNode Right + { + get; + } + + TType EqualityTypeConvert + { + get; + } + + void AppendNode( TNode nextToken ); + + } +} diff --git a/StgSharp.Script/IScriptSourceProvider.cs b/StgSharp.Script/IScriptSourceProvider.cs new file mode 100644 index 00000000..dfe2bcd4 --- /dev/null +++ b/StgSharp.Script/IScriptSourceProvider.cs @@ -0,0 +1,64 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IScriptSourceProvider.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.Text; + +namespace StgSharp.Script +{ + public interface IScriptSourceProvider + { + + bool IsEmpty + { + get; + } + + int Location + { + get; + } + + void EndWriting(); + + string ReadLine(); + + string ReadLine( out int position ); + + /// + /// Return part of current provider. + /// + /// Count of lines to be sliced + /// + public IScriptSourceProvider Slice( int location, int count ); + + } +} diff --git a/StgSharp.Script/ITypeSource.cs b/StgSharp.Script/ITypeSource.cs new file mode 100644 index 00000000..ea1daaba --- /dev/null +++ b/StgSharp.Script/ITypeSource.cs @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ITypeSource.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.Script +{ + public interface ITypeSource + where TConvert: ITypeSource + { + + bool IsConvertable( TConvert targetType ); + + } +} diff --git a/StgSharp.Script/ScriptSourceTransmitter.cs b/StgSharp.Script/ScriptSourceTransmitter.cs new file mode 100644 index 00000000..efa9287c --- /dev/null +++ b/StgSharp.Script/ScriptSourceTransmitter.cs @@ -0,0 +1,159 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ScriptSourceTransmitter.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; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace StgSharp.Script +{ + /// + /// Transmit a continuous part of script code to interpreter or compiler. This transmitter is + /// designed for single-thread-write and single-thread read. Any multi thread operation will + /// cause undefined behaviour. + /// + public class ScriptSourceTransmitter : IScriptSourceProvider + { + + private static ScriptSourceTransmitter _empty = new ScriptSourceTransmitter( + string.Empty, 0, 0 ) + { + _cache = [], + _buffer = [] + }; + + private string[] _buffer; + private bool _isWriting = true; + private int _begin, _index; + private List _cache; + private readonly string _completeMark; + + internal ScriptSourceTransmitter( string[] buffer, int start ) + { + _buffer = buffer; + _begin = start; + _isWriting = false; + } + + public ScriptSourceTransmitter( string endMark, int start ) + { + _cache = new List(); + _completeMark = endMark; + _begin = start; + _index = 0; + } + + public ScriptSourceTransmitter( + string endMark, + int start, + int capacity ) + { + _cache = new List( capacity ); + _completeMark = endMark; + _begin = start; + _index = 0; + } + + public bool IsEmpty => _isWriting ? + ( _cache.Count == 0 ) : ( _buffer.Length == 0 ) || ( _index >= + _buffer.Length ); + + public bool IsFrozen => !_isWriting; + + public int Location => _begin + _index; + + public static ScriptSourceTransmitter Empty => _empty; + + public void EndWriting() + { + if( !_isWriting ) { + return; + } + _isWriting = false; + _buffer = _cache.ToArray(); + _cache = null!; + } + + public string ReadLine() + { + if( _isWriting ) { + throw new InvalidOperationException( + "Cannot read before all writing operation." ); + } + if( _index >= _buffer.Length ) { + return string.Empty; + } + string str = _buffer[ _index ]; + _index++; + return str; + } + + public string ReadLine( out int position ) + { + if( _isWriting ) { + throw new InvalidOperationException( + "Cannot read before all writing operation." ); + } + if( _index >= _buffer.Length ) { + position = -1; + return string.Empty; + } + position = _begin + _index; + string str = _buffer[ _index ]; + _index++; + return str; + } + + public IScriptSourceProvider Slice( int location, int count ) + { + ArgumentOutOfRangeException.ThrowIfLessThan( location, _begin ); + ArgumentOutOfRangeException.ThrowIfGreaterThan( + location + count, _begin + _buffer.Length ); + return new ScriptSourceTransmitter( + _buffer.AsSpan().Slice( location, count ).ToArray(), location ); + } + + public void WriteLine( string line ) + { + if( !_isWriting ) { + return; + } + if( string.Equals( _completeMark, line ) ) { + EndWriting(); + return; + } + _cache.Add( line ); + } + + } +} diff --git a/StgSharp.Script/StgSharp.Script.csproj b/StgSharp.Script/StgSharp.Script.csproj new file mode 100644 index 00000000..26fefb72 --- /dev/null +++ b/StgSharp.Script/StgSharp.Script.csproj @@ -0,0 +1,19 @@ + + + + net8.0 + enable + preview + True + AnyCPU;x64 + + + + + + + + + + + diff --git a/StgSharp.Script/Token.cs b/StgSharp.Script/Token.cs new file mode 100644 index 00000000..299bbaa4 --- /dev/null +++ b/StgSharp.Script/Token.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Token.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.Script +{ + public readonly struct Token + { + + public readonly int Column; + public readonly int Line; + public readonly string Value; + public readonly TokenFlag Flag; + + public Token( + string chars, + int lineNumber, + int columnNumber, + TokenFlag flag ) + { + Value = chars; + Line = lineNumber; + Column = columnNumber; + Flag = flag; + } + + } + + public enum TokenFlag : int + { + + Symbol_Unary = 1, + Symbol_Binary = 2, + Number = 3, + String = 4, + Member = 5, + Separator_Single = 6, + Separator_Left = 7, + Separator_Right = 8, + Index_Left = 9, + Index_Right = 10, + + } +} diff --git a/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.dll b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.dll new file mode 100644 index 00000000..94382a18 Binary files /dev/null and b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.dll differ diff --git a/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.pdb b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.pdb new file mode 100644 index 00000000..94f21d32 Binary files /dev/null and b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.pdb differ diff --git a/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.xml b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.xml new file mode 100644 index 00000000..3f8a0030 --- /dev/null +++ b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Common.xml @@ -0,0 +1,648 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Part of a collection. This contains a direct reference to origin collection, + so all change to origin collection will be reflected in this object. + + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL Buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a Buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to Buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. Target of this frame Buffer should be set manually. + + The frame Buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame Buffer to a frame Buffer target Same function as glBindFramebuffer. + + The frame Buffer target of the binding operation. + The handle of the frame Buffer object to bind. + + + + Delete a render Buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to Buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.deps.json b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.deps.json new file mode 100644 index 00000000..43c047e3 --- /dev/null +++ b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.deps.json @@ -0,0 +1,75 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {}, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.dll b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.dll new file mode 100644 index 00000000..0afecbd3 Binary files /dev/null and b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.dll differ diff --git a/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.pdb b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.pdb new file mode 100644 index 00000000..4e5727ce Binary files /dev/null and b/StgSharp.Script/bin/x64/Debug/net8.0/StgSharp.Script.pdb differ diff --git a/StgSharp.Script/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Script/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Script/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..c0cd0726 --- /dev/null +++ b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfoInputs.cache b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfoInputs.cache new file mode 100644 index 00000000..795ad703 --- /dev/null +++ b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +561c9de4ecc1d80fa1ee7dae0ef96e18e41fffd68e906958beb6a297a11ca74c diff --git a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..5dbc7a22 --- /dev/null +++ b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Script +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.assets.cache b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.assets.cache new file mode 100644 index 00000000..c1bf6a69 Binary files /dev/null and b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.assets.cache differ diff --git a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.csproj.AssemblyReference.cache b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.csproj.AssemblyReference.cache new file mode 100644 index 00000000..b2f7c860 Binary files /dev/null and b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Script/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Script/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Script/obj/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..2aaf10e7 --- /dev/null +++ b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache new file mode 100644 index 00000000..95637d7d --- /dev/null +++ b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +4c7f817069768658fd11e2f809ae41e403d5cd4106134072df87718bc9fed9f4 diff --git a/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..01e5c4ae --- /dev/null +++ b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,5 @@ +is_global = true +build_property.RootNamespace = StgSharp.Script +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.assets.cache b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.assets.cache new file mode 100644 index 00000000..2fa735d6 Binary files /dev/null and b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.assets.cache differ diff --git a/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache new file mode 100644 index 00000000..908b70b7 Binary files /dev/null and b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt b/StgSharp.Script/obj/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Script/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Script/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Script/obj/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..de56a633 --- /dev/null +++ b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache new file mode 100644 index 00000000..aa17efe4 --- /dev/null +++ b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +763989be4fc1c0038f6ed3f9723e1b5dc4f3d10b1809f46a2fcbee31212930ff diff --git a/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..01e5c4ae --- /dev/null +++ b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,5 @@ +is_global = true +build_property.RootNamespace = StgSharp.Script +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.assets.cache b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.assets.cache new file mode 100644 index 00000000..c62d42e6 Binary files /dev/null and b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.assets.cache differ diff --git a/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache new file mode 100644 index 00000000..07f7483c Binary files /dev/null and b/StgSharp.Script/obj/Release/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.dgspec.json b/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.dgspec.json new file mode 100644 index 00000000..7c1148b3 --- /dev/null +++ b/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.dgspec.json @@ -0,0 +1,160 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.g.props b/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.g.props new file mode 100644 index 00000000..7226a4fb --- /dev/null +++ b/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.11.0 + + + + + + \ No newline at end of file diff --git a/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.g.targets b/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.g.targets new file mode 100644 index 00000000..3dc06ef3 --- /dev/null +++ b/StgSharp.Script/obj/StgSharp.Script.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/StgSharp.Script/obj/project.assets.json b/StgSharp.Script/obj/project.assets.json new file mode 100644 index 00000000..059b8e3a --- /dev/null +++ b/StgSharp.Script/obj/project.assets.json @@ -0,0 +1,265 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "compile": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/net7.0/_._": {} + }, + "runtime": { + "lib/net7.0/_._": {} + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "bin/placeholder/StgSharp.Common.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Common.dll": {} + } + } + } + }, + "libraries": { + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "type": "package", + "path": "communitytoolkit.highperformance/8.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "CommunityToolkit.HighPerformance >= 8.4.0", + "StgSharp.Common >= 1.0.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/StgSharp.Script/obj/project.nuget.cache b/StgSharp.Script/obj/project.nuget.cache new file mode 100644 index 00000000..24f058a0 --- /dev/null +++ b/StgSharp.Script/obj/project.nuget.cache @@ -0,0 +1,12 @@ +{ + "version": 2, + "dgSpecHash": "zG4VQdi6zL8=", + "success": true, + "projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Youmu\\.nuget\\packages\\communitytoolkit.highperformance\\8.4.0\\communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..aaa8c7dd --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file=".NETCoreApp,Version=v8.0.AssemblyAttributes.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.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute( + ".NETCoreApp,Version=v8.0", + FrameworkDisplayName = ".NET 8.0" )] diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.D39FE6B0.Up2Date b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.D39FE6B0.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..fef68e80 --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+83bde12d2227bf32a3b939e94849bbd7273bad21")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfoInputs.cache b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfoInputs.cache new file mode 100644 index 00000000..b303ba6f --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +967c2e069112d5dabd8cab52d62d12eab04edfe539a43f99c3504fda5cb70b49 diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..5dbc7a22 --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.Script +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.assets.cache b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.assets.cache new file mode 100644 index 00000000..c3151d9e Binary files /dev/null and b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.assets.cache differ diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.AssemblyReference.cache b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.AssemblyReference.cache new file mode 100644 index 00000000..9d8dad38 Binary files /dev/null and b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.AssemblyReference.cache differ diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.BuildWithSkipAnalyzers b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.CoreCompileInputs.cache b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..5124ed38 --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +7e53934ec725e63bf76ab4e118210f46257ab2e0ae5460f70569be713b225c54 diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..2e556d77 --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt @@ -0,0 +1,17 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\net8.0\StgSharp.Script.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\net8.0\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Debug\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.D39FE6B0.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\refint\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Debug\net8.0\ref\StgSharp.Script.dll diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.dll b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.dll new file mode 100644 index 00000000..0afecbd3 Binary files /dev/null and b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.dll differ diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.pdb b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.pdb new file mode 100644 index 00000000..4e5727ce Binary files /dev/null and b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.pdb differ diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json new file mode 100644 index 00000000..12551908 --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/ccef0de6f686f94da655b0e7d854d0acaf907d04/*"}} \ No newline at end of file diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/ref/StgSharp.Script.dll b/StgSharp.Script/obj/x64/Debug/net8.0/ref/StgSharp.Script.dll new file mode 100644 index 00000000..cf587cfe Binary files /dev/null and b/StgSharp.Script/obj/x64/Debug/net8.0/ref/StgSharp.Script.dll differ diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/refint/StgSharp.Script.dll b/StgSharp.Script/obj/x64/Debug/net8.0/refint/StgSharp.Script.dll new file mode 100644 index 00000000..cf587cfe Binary files /dev/null and b/StgSharp.Script/obj/x64/Debug/net8.0/refint/StgSharp.Script.dll differ diff --git a/StgSharp.Script/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Script/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Script/obj/x64/Debug/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.assets.cache b/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.assets.cache new file mode 100644 index 00000000..eb50b4b2 Binary files /dev/null and b/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.assets.cache differ diff --git a/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.csproj.BuildWithSkipAnalyzers b/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt b/StgSharp.Script/obj/x64/Debug/netstandard2.1/StgSharp.Script.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.Script/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs b/StgSharp.Script/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs new file mode 100644 index 00000000..348b87f0 --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/netstandard2.1/.NETStandard,Version=v2.1.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] diff --git a/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..de56a633 --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache new file mode 100644 index 00000000..aa17efe4 --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +763989be4fc1c0038f6ed3f9723e1b5dc4f3d10b1809f46a2fcbee31212930ff diff --git a/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..01e5c4ae --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,5 @@ +is_global = true +build_property.RootNamespace = StgSharp.Script +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.assets.cache b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.assets.cache new file mode 100644 index 00000000..8818820d Binary files /dev/null and b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.assets.cache differ diff --git a/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache new file mode 100644 index 00000000..07f7483c Binary files /dev/null and b/StgSharp.Script/obj/x64/Release/netstandard2.1/StgSharp.Script.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/DialogueView.cs b/StgSharp.TerminalDialogue/DialogueView.cs new file mode 100644 index 00000000..5843aa3c --- /dev/null +++ b/StgSharp.TerminalDialogue/DialogueView.cs @@ -0,0 +1,105 @@ + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using Terminal.Gui; + +namespace StgSharpTerminalDialogue +{ + internal class DialogueView:Window + { + TextView tittle = new TextView() + { + Text = """" + + ███████╗████████╗ ██████╗ ███████╗██╗ ██╗ █████╗ ██████╗ ██████╗ + ██╔════╝╚══██╔══╝██╔════╝ ██╔════╝██║ ██║██╔══██╗██╔══██╗██╔══██╗ + ███████╗ ██║ ██║ ███╗███████╗███████║███████║██████╔╝██████╔╝ + ╚════██║ ██║ ██║ ██║╚════██║██╔══██║██╔══██║██╔══██╗██╔═══╝ + ███████║ ██║ ╚██████╔╝███████║██║ ██║██║ ██║██║ ██║██║ + ╚══════╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ + + """", + //generate from site: https://www.asciiart.eu/text-to-ascii-art + //font: ANSI shadow + TextAlignment = Alignment.Start, + Width = 8 * 9, + Height = 1 * 8, + X = 0, + Y = 0, + ColorScheme = common + }; + + static readonly Terminal.Gui.Attribute + commonColor = Application.Driver!.MakeColor( + new Color(92, 180, 225), Color.Cyan), + errorColor = Application.Driver!.MakeColor( + Color.White, Color.BrightRed); + + static ColorScheme common = new ColorScheme(){ + Focus = commonColor, + Normal = commonColor + }, + error = new ColorScheme() + { + Focus = errorColor, + Normal = errorColor + }; + + public static DialogueView Single + { + get => new DialogueView(); + } + + private DialogueView() + { + Init(); + } + + private void Init() + { + ColorScheme = common; + + this.Width = Dim.Fill(0); + this.Height = Dim.Fill(0); + this.X = 0; + this.Y = 0; + this.Title = "StgSharp Framework Dialogue"; + this.Add(this.tittle); + } + + public void ShowError(string message) + { + this.Remove(this.tittle); + this.ColorScheme = error; + this.Text = + """ + + ██╗ ███████╗██████╗ ██████╗ ██████╗ ██████╗ + ██╗ ██╔╝ ██╔════╝██╔══██╗██╔══██╗██╔═══██╗██╔══██╗ + ╚═╝ ██║ █████╗ ██████╔╝██████╔╝██║ ██║██████╔╝ + ██╗ ██║ ██╔══╝ ██╔══██╗██╔══██╗██║ ██║██╔══██╗ + ╚═╝ ╚██╗ ███████╗██║ ██║██║ ██║╚██████╔╝██║ ██║ + ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ + + """ + "\n"+ + message; + + Button button = new Button() + { + Text = "Click to quit." + }; + button.Accept += (sender,e) => { + Application.RequestStop(); + }; + + this.Add(button); + this.SetNeedsDisplay(); + } + + } +} diff --git a/StgSharp.TerminalDialogue/PostOpration.cs b/StgSharp.TerminalDialogue/PostOpration.cs new file mode 100644 index 00000000..07b16038 --- /dev/null +++ b/StgSharp.TerminalDialogue/PostOpration.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PostOpration.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; + +using Terminal.Gui; + +namespace StgSharpTerminalDialogue +{ + internal static partial class Program + { + + private static DialogueView _dv; + + internal static void PostOperation( string instruction, string operand ) + { + switch( instruction ) { + case "posterror": + _dv.ShowError( operand ); + using( StreamWriter sw = new StreamWriter( + _callerServerPipe ) ) { + sw.WriteLine( "ERRORGET" ); + } + break; + default: + break; + } + } + + } +} diff --git a/StgSharp.TerminalDialogue/Program.cs b/StgSharp.TerminalDialogue/Program.cs new file mode 100644 index 00000000..cf274745 --- /dev/null +++ b/StgSharp.TerminalDialogue/Program.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Program.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.Globalization; +using System.IO.Pipes; + +using Terminal.Gui; + +namespace StgSharpTerminalDialogue +{ + internal static partial class Program + { + + private static AnonymousPipeClientStream _callerClientPipe, _callerServerPipe; + + private static void Main( string[] args ) + { + Application.Init(); + + Console.CancelKeyPress += ( sender, e ) => { + e.Cancel = true; + Application.RequestStop(); + }; + + Task renderTask = Task.Factory + .StartNew( + () => { + _dv = DialogueView.Single; + Application.Run( view: _dv ); + } ); + + /**/ + if( args.Length != 2 ) { + Console.ReadLine(); + Application.RequestStop(); + } + /**/ + + _callerClientPipe = new AnonymousPipeClientStream( + PipeDirection.In, args[ 0 ] ); + _callerServerPipe = new AnonymousPipeClientStream( + PipeDirection.Out, args[ 1 ] ); + + + 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 ) { + temp = clientReader.ReadLine()!; + temp = temp ?? string.Empty; + if( string.IsNullOrEmpty( temp ) ) { + continue; + } + + int index = temp.IndexOf( ' ' ); + if( index == -1 ) { + continue; + } + + string command = temp.Substring( 0, index ); + string operand = temp.Substring( index + 1 ); + + PostOperation( command, operand ); + } + } + } + } + } +} diff --git a/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj b/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj new file mode 100644 index 00000000..4c24308c --- /dev/null +++ b/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj @@ -0,0 +1,37 @@ + + + + Exe + net8.0 + enable + enable + build\StgSharpTerminalDialogue + $(BaseOutputPath) + false + false + True + True + x64 + none + AnyCPU;x64 + + + + False + + + + + + + + + + + + + + + + + diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/ColorHelper.dll b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/ColorHelper.dll new file mode 100644 index 00000000..9251e005 Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/ColorHelper.dll differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..633a0935 Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe new file mode 100644 index 00000000..081260ab Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb new file mode 100644 index 00000000..5e45d0b3 Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/System.IO.Abstractions.dll b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/System.IO.Abstractions.dll new file mode 100644 index 00000000..f008c6bf Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/System.IO.Abstractions.dll differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/Terminal.Gui.dll b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/Terminal.Gui.dll new file mode 100644 index 00000000..3739678f Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/Terminal.Gui.dll differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll new file mode 100644 index 00000000..bc202d87 Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll new file mode 100644 index 00000000..ee3ad392 Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll differ diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/Wcwidth.dll b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/Wcwidth.dll new file mode 100644 index 00000000..7c50bbcd Binary files /dev/null and b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/Wcwidth.dll differ diff --git a/StgSharp.TerminalDialogue/obj/ARM32/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.TerminalDialogue/obj/ARM32/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/ARM32/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..e3afbc1c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..5fb147e9 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +0b8c0114a5ae95d8209300e7c3a9427e1594ca573a356a63fa1f7d7d1c4503ed diff --git a/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..0e6aec10 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.TerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.assets.cache new file mode 100644 index 00000000..6230fdc5 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/ARM32/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.TerminalDialogue/obj/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..a73d1a1c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file=".NETCoreApp,Version=v8.0.AssemblyAttributes.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.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute( + ".NETCoreApp,Version=v8.0", + FrameworkDisplayName = ".NET 8.0" )] diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.A8FD039C.Up2Date b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.A8FD039C.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..434e588d --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..ef88cbf3 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +8db01d3ff4dfe22e4f1b09b6ec64c7c0ca2053988d80c5b042f50962d3321c6d diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..0e6aec10 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.TerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.assets.cache new file mode 100644 index 00000000..4130c183 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.BuildWithSkipAnalyzers b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..5dde2b06 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..a2145b38 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +40bdcb4cd3eee5996073a10ab2c1e809099cad9dd08f785515d34e67b7c7274d diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..fc218f2a --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.assets.cache new file mode 100644 index 00000000..322bfc75 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.BuildWithSkipAnalyzers b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..627dd90c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +163dd4f24cf804586c139bfa74eba7fbb2a719bf23befb59d7b30238ef392aab diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..5c812fae --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,23 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharp.A8FD039C.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\refint\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\StgSharpTerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Debug\ref\StgSharpTerminalDialogue.dll diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..47c1a9f0 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.genruntimeconfig.cache b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.genruntimeconfig.cache new file mode 100644 index 00000000..95e6509b --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.genruntimeconfig.cache @@ -0,0 +1 @@ +8ee2e9b7243dc8eceac1962e6fe3c123faf4d030047493e2ecec6723f2a539c9 diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.pdb b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.pdb new file mode 100644 index 00000000..a8e1ed03 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.pdb differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.sourcelink.json b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.sourcelink.json new file mode 100644 index 00000000..53bd9bd6 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharpTerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/63c3cd17e2188771886daeb4046edf28633fa949/*"}} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/Debug/apphost.exe b/StgSharp.TerminalDialogue/obj/Debug/apphost.exe new file mode 100644 index 00000000..e65eff4f Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/apphost.exe differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.TerminalDialogue/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..8570a44b --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7c8d462ca5da46abdfb0e7278f81d25abe890887")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..ec673df3 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +7b9306e56887598282f1db15dadcc74151cc63918217fcb41989b5b8886f3acc diff --git a/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..a0e07e76 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Debug/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/Debug/ref/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Debug/ref/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..ebfac668 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/ref/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Debug/refint/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Debug/refint/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..ebfac668 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Debug/refint/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.TerminalDialogue/obj/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharp.A8FD039C.Up2Date b/StgSharp.TerminalDialogue/obj/Release/StgSharp.A8FD039C.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..11a748e4 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..94787cba --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +ce9842b93fa642947402f0b47334e9cf31d54fe15b667c0610e4cc6c66d2d97b diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..0e6aec10 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.TerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.assets.cache new file mode 100644 index 00000000..9dd41df8 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..709b8326 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+592ad55d57752262ac1a710ef11425da83ef4676")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..ac82de47 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +75cd1207a752e0eb1cad7f230a9c072939f588a43f987ef02d1851fec986714c diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..a0e07e76 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.assets.cache new file mode 100644 index 00000000..b22834b6 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..1fccb642 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +376e3ec46b7376685cb2ec1f4d615681b018cbf44c7511adc08a8edb05ddda3f diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..a559dc47 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,23 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharp.A8FD039C.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\refint\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\StgSharpTerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\ref\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\build\StgSharpTerminalDialogue\Wcwidth.dll diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..7a95a7ed Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.genruntimeconfig.cache b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.genruntimeconfig.cache new file mode 100644 index 00000000..ec7e6789 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.genruntimeconfig.cache @@ -0,0 +1 @@ +5635379e5f2f8f5aed30090f961d43bddb21c388a1943df4588d3c3bde5a14d8 diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.pdb b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.pdb new file mode 100644 index 00000000..fced810a Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.pdb differ diff --git a/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.sourcelink.json b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.sourcelink.json new file mode 100644 index 00000000..c280d932 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/StgSharpTerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/7c8d462ca5da46abdfb0e7278f81d25abe890887/*"}} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/Release/apphost.exe b/StgSharp.TerminalDialogue/obj/Release/apphost.exe new file mode 100644 index 00000000..b2db86fd Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/apphost.exe differ diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.TerminalDialogue/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharp.A8FD039C.Up2Date b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharp.A8FD039C.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..f4c838d1 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7c8d462ca5da46abdfb0e7278f81d25abe890887")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpTerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..ef3db4e1 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +4e6cc3f5a16f3845d8a32364070b452c13cb638d24c735a92fbfcc6f2722633a diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..a0e07e76 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpTerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.assets.cache new file mode 100644 index 00000000..595b6f88 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..368c3e78 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +99f01619e7e341f08d66baddf6de97e50665114e3146e5dcd6ee1f639d7d7e43 diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..7867aafe --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,27 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\fr-FR\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\ja-JP\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\pt-PT\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\bin\Release\net8.0\zh-Hans\Terminal.Gui.resources.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharp.A8FD039C.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\refint\StgSharpTerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\StgSharpTerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpTerminalDialogue\obj\Release\net8.0\ref\StgSharpTerminalDialogue.dll diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..f5adcf42 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.genruntimeconfig.cache b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.genruntimeconfig.cache new file mode 100644 index 00000000..ec7e6789 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.genruntimeconfig.cache @@ -0,0 +1 @@ +5635379e5f2f8f5aed30090f961d43bddb21c388a1943df4588d3c3bde5a14d8 diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.pdb b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.pdb new file mode 100644 index 00000000..3eaa70ba Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.pdb differ diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.sourcelink.json b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.sourcelink.json new file mode 100644 index 00000000..c280d932 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/Release/net8.0/StgSharpTerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/7c8d462ca5da46abdfb0e7278f81d25abe890887/*"}} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/apphost.exe b/StgSharp.TerminalDialogue/obj/Release/net8.0/apphost.exe new file mode 100644 index 00000000..b2db86fd Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/net8.0/apphost.exe differ diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/ref/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Release/net8.0/ref/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..d403ff50 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/net8.0/ref/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Release/net8.0/refint/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Release/net8.0/refint/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..d403ff50 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/net8.0/refint/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Release/ref/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Release/ref/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..b1080cbe Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/ref/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/Release/refint/StgSharpTerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/Release/refint/StgSharpTerminalDialogue.dll new file mode 100644 index 00000000..b1080cbe Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/Release/refint/StgSharpTerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.dgspec.json b/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.dgspec.json new file mode 100644 index 00000000..e3fa3f24 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.dgspec.json @@ -0,0 +1,80 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "projectName": "StgSharp.TerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Terminal.Gui": { + "target": "Package", + "version": "[2.0.0-v2-develop.2329, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.g.props b/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.g.props new file mode 100644 index 00000000..7226a4fb --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.11.0 + + + + + + \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.g.targets b/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.g.targets new file mode 100644 index 00000000..5c30481e --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/StgSharp.TerminalDialogue.csproj.nuget.g.targets @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.dgspec.json b/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.dgspec.json new file mode 100644 index 00000000..a859f8d1 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.dgspec.json @@ -0,0 +1,75 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj", + "projectName": "StgSharpTerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharpTerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Terminal.Gui": { + "target": "Package", + "version": "[2.0.0-v2-develop.2329, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.g.props b/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.g.props new file mode 100644 index 00000000..0a424da7 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\ + PackageReference + 6.11.0 + + + + + \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.g.targets b/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.g.targets new file mode 100644 index 00000000..5c30481e --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/StgSharpTerminalDialogue.csproj.nuget.g.targets @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/project.assets.json b/StgSharp.TerminalDialogue/obj/project.assets.json new file mode 100644 index 00000000..3ba0b81e --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/project.assets.json @@ -0,0 +1,466 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "ColorHelper/1.8.1": { + "type": "package", + "compile": { + "lib/netstandard2.0/ColorHelper.dll": {} + }, + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": {} + } + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "compile": { + "lib/net8.0/System.IO.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "related": ".xml" + } + } + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Encodings.Web.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": { + "assetType": "runtime", + "rid": "browser" + } + } + }, + "System.Text.Json/8.0.4": { + "type": "package", + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "dependencies": { + "ColorHelper": "[1.8.1, 2.0.0)", + "System.IO.Abstractions": "[21.0.22, 22.0.0)", + "System.Text.Json": "[8.0.4, 9.0.0)", + "Wcwidth": "[2.0.0, 3.0.0)" + }, + "compile": { + "lib/net8.0/Terminal.Gui.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "related": ".xml" + } + }, + "resource": { + "lib/net8.0/fr-FR/Terminal.Gui.resources.dll": { + "locale": "fr-FR" + }, + "lib/net8.0/ja-JP/Terminal.Gui.resources.dll": { + "locale": "ja-JP" + }, + "lib/net8.0/pt-PT/Terminal.Gui.resources.dll": { + "locale": "pt-PT" + }, + "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll": { + "locale": "zh-Hans" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "compile": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "related": ".xml" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "compile": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "related": ".xml" + } + } + }, + "Wcwidth/2.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Wcwidth.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "related": ".xml" + } + } + } + } + }, + "libraries": { + "ColorHelper/1.8.1": { + "sha512": "rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "type": "package", + "path": "colorhelper/1.8.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "colorhelper.1.8.1.nupkg.sha512", + "colorhelper.nuspec", + "lib/netstandard2.0/ColorHelper.dll", + "logo.jpg" + ] + }, + "System.IO.Abstractions/21.0.22": { + "sha512": "DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "type": "package", + "path": "system.io.abstractions/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/System.IO.Abstractions.dll", + "lib/net462/System.IO.Abstractions.xml", + "lib/net6.0/System.IO.Abstractions.dll", + "lib/net6.0/System.IO.Abstractions.xml", + "lib/net7.0/System.IO.Abstractions.dll", + "lib/net7.0/System.IO.Abstractions.xml", + "lib/net8.0/System.IO.Abstractions.dll", + "lib/net8.0/System.IO.Abstractions.xml", + "lib/netstandard2.0/System.IO.Abstractions.dll", + "lib/netstandard2.0/System.IO.Abstractions.xml", + "lib/netstandard2.1/System.IO.Abstractions.dll", + "lib/netstandard2.1/System.IO.Abstractions.xml", + "system.io.abstractions.21.0.22.nupkg.sha512", + "system.io.abstractions.nuspec" + ] + }, + "System.Text.Encodings.Web/8.0.0": { + "sha512": "yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "type": "package", + "path": "system.text.encodings.web/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Text.Encodings.Web.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets", + "lib/net462/System.Text.Encodings.Web.dll", + "lib/net462/System.Text.Encodings.Web.xml", + "lib/net6.0/System.Text.Encodings.Web.dll", + "lib/net6.0/System.Text.Encodings.Web.xml", + "lib/net7.0/System.Text.Encodings.Web.dll", + "lib/net7.0/System.Text.Encodings.Web.xml", + "lib/net8.0/System.Text.Encodings.Web.dll", + "lib/net8.0/System.Text.Encodings.Web.xml", + "lib/netstandard2.0/System.Text.Encodings.Web.dll", + "lib/netstandard2.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net6.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net7.0/System.Text.Encodings.Web.xml", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll", + "runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml", + "system.text.encodings.web.8.0.0.nupkg.sha512", + "system.text.encodings.web.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.4": { + "sha512": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "type": "package", + "path": "system.text.json/8.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.4.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "sha512": "1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "type": "package", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net8.0/Terminal.Gui.dll", + "lib/net8.0/Terminal.Gui.xml", + "lib/net8.0/fr-FR/Terminal.Gui.resources.dll", + "lib/net8.0/ja-JP/Terminal.Gui.resources.dll", + "lib/net8.0/pt-PT/Terminal.Gui.resources.dll", + "lib/net8.0/zh-Hans/Terminal.Gui.resources.dll", + "logo.png", + "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512", + "terminal.gui.nuspec" + ] + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "sha512": "yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "type": "package", + "path": "testableio.system.io.abstractions/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/TestableIO.System.IO.Abstractions.dll", + "lib/net462/TestableIO.System.IO.Abstractions.xml", + "lib/net6.0/TestableIO.System.IO.Abstractions.dll", + "lib/net6.0/TestableIO.System.IO.Abstractions.xml", + "lib/net7.0/TestableIO.System.IO.Abstractions.dll", + "lib/net7.0/TestableIO.System.IO.Abstractions.xml", + "lib/net8.0/TestableIO.System.IO.Abstractions.dll", + "lib/net8.0/TestableIO.System.IO.Abstractions.xml", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.dll", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.xml", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.dll", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.xml", + "testableio.system.io.abstractions.21.0.22.nupkg.sha512", + "testableio.system.io.abstractions.nuspec" + ] + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "sha512": "ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "type": "package", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon_256x256.png", + "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net462/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net6.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net7.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/netstandard2.0/TestableIO.System.IO.Abstractions.Wrappers.xml", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.dll", + "lib/netstandard2.1/TestableIO.System.IO.Abstractions.Wrappers.xml", + "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512", + "testableio.system.io.abstractions.wrappers.nuspec" + ] + }, + "Wcwidth/2.0.0": { + "sha512": "eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "type": "package", + "path": "wcwidth/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net6.0/Wcwidth.dll", + "lib/net6.0/Wcwidth.xml", + "lib/net7.0/Wcwidth.dll", + "lib/net7.0/Wcwidth.xml", + "lib/net8.0/Wcwidth.dll", + "lib/net8.0/Wcwidth.xml", + "lib/netstandard2.0/Wcwidth.dll", + "lib/netstandard2.0/Wcwidth.xml", + "wcwidth.2.0.0.nupkg.sha512", + "wcwidth.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "Terminal.Gui >= 2.0.0-v2-develop.2329" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "projectName": "StgSharp.TerminalDialogue", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Terminal.Gui": { + "target": "Package", + "version": "[2.0.0-v2-develop.2329, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/project.nuget.cache b/StgSharp.TerminalDialogue/obj/project.nuget.cache new file mode 100644 index 00000000..01aff3e8 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/project.nuget.cache @@ -0,0 +1,17 @@ +{ + "version": 2, + "dgSpecHash": "LQm0mGXQqHE=", + "success": true, + "projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.TerminalDialogue\\StgSharp.TerminalDialogue.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Youmu\\.nuget\\packages\\colorhelper\\1.8.1\\colorhelper.1.8.1.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io.abstractions\\21.0.22\\system.io.abstractions.21.0.22.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.json\\8.0.4\\system.text.json.8.0.4.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\terminal.gui\\2.0.0-v2-develop.2329\\terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\testableio.system.io.abstractions\\21.0.22\\testableio.system.io.abstractions.21.0.22.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\testableio.system.io.abstractions.wrappers\\21.0.22\\testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\wcwidth\\2.0.0\\wcwidth.2.0.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.TerminalDialogue/obj/x64/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.7B22D5CB.Up2Date b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.7B22D5CB.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs new file mode 100644 index 00000000..cca941c4 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache new file mode 100644 index 00000000..ef88cbf3 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +8db01d3ff4dfe22e4f1b09b6ec64c7c0ca2053988d80c5b042f50962d3321c6d diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..0e6aec10 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.TerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.assets.cache new file mode 100644 index 00000000..14757fef Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.BuildWithSkipAnalyzers b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.CoreCompileInputs.cache b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..9c83ceb2 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +e77229b7a0f4769b88b171ce11d8921a13c86f2a397e37ade7a7558563910126 diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..8e428413 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,23 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.7B22D5CB.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\refint\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\StgSharp.TerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Debug\ref\StgSharp.TerminalDialogue.dll diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..633a0935 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.genruntimeconfig.cache b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.genruntimeconfig.cache new file mode 100644 index 00000000..0ecd2da6 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.genruntimeconfig.cache @@ -0,0 +1 @@ +29f436ff4f6528c60a02949d6a16d251bb529fcbc074783180e08af1aaaaee41 diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.pdb b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.pdb new file mode 100644 index 00000000..5e45d0b3 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.pdb differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.sourcelink.json b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.sourcelink.json new file mode 100644 index 00000000..0d22314c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/ae94c265ae77870ea6498b624b6f71b78fb94e51/*"}} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/apphost.exe b/StgSharp.TerminalDialogue/obj/x64/Debug/apphost.exe new file mode 100644 index 00000000..081260ab Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Debug/apphost.exe differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/ref/StgSharp.TerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/x64/Debug/ref/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..4b878e13 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Debug/ref/StgSharp.TerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/refint/StgSharp.TerminalDialogue.dll b/StgSharp.TerminalDialogue/obj/x64/Debug/refint/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..4b878e13 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Debug/refint/StgSharp.TerminalDialogue.dll differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.TerminalDialogue/obj/x64/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Release/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..0e6aec10 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharp.TerminalDialogue +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.assets.cache b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.assets.cache new file mode 100644 index 00000000..a7c49dd4 Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.assets.cache differ diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache new file mode 100644 index 00000000..69dbecaa Binary files /dev/null and b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.AssemblyReference.cache differ diff --git a/StgSharp.nuspec b/StgSharp.nuspec new file mode 100644 index 00000000..6e923b1a --- /dev/null +++ b/StgSharp.nuspec @@ -0,0 +1,22 @@ + + + + StgSharp + 1.0.0 + StgSharp + Nitload + false + MIT + + https://github.com/Nitload-NSI/StgSharp + No des right now + Summary of changes made in this release of the package. + Nitload reserve + OpenGL C# + + + + + + + \ No newline at end of file diff --git a/StgSharpDebug/Control b/StgSharpDebug/Control new file mode 100644 index 00000000..b27a1407 --- /dev/null +++ b/StgSharpDebug/Control @@ -0,0 +1 @@ +D:/NitloadIndustry/研究项目/1-Flagship/TH2020/ProjectFile/源代码/StgSharp/Control \ No newline at end of file diff --git a/StgSharpDebug/NativeMethods.txt b/StgSharpDebug/NativeMethods.txt new file mode 100644 index 00000000..1b11e1c0 --- /dev/null +++ b/StgSharpDebug/NativeMethods.txt @@ -0,0 +1,43 @@ +WNDCLASSA +AdjustWindowRect +ChoosePixelFormat +CreateWindowEx +DefWindowProc +DescribePixelFormat +DestroyWindow +DispatchMessage +FreeLibrary +GetDC +GetEnhMetaFilePixelFormat +GetModuleHandle +GetPixelFormat +GetProcAddress +LoadCursor +LoadLibrary +PeekMessage +PostQuitMessage +RegisterClass +RegisterClassA +ReleaseDC +SetPixelFormat +ShowWindow +SwapBuffers +TranslateMessage +UpdateWindow +wglGetProcAddress +wglCreateContext +wglCreateLayerContext +wglCopyContext +wglDeleteContext +wglDescribeLayerPlane +wglGetCurrentContext +wglGetCurrentDC +wglGetLayerPaletteEntries +wglGetProcAddress +wglMakeCurrent +wglRealizeLayerPalette +wglSetLayerPaletteEntries +wglShareLists +wglSwapLayerBuffers +wglUseFontBitmaps +wglUseFontOutlines \ No newline at end of file diff --git a/StgSharpDebug/Program.cs b/StgSharpDebug/Program.cs new file mode 100644 index 00000000..705056d0 --- /dev/null +++ b/StgSharpDebug/Program.cs @@ -0,0 +1,142 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Program.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.Collections; +using StgSharp.Controlling.UsrActivity; +using StgSharp.Geometries; +using StgSharp.Graphics; + +using StgSharp.Math; +using StgSharp.MVVM; +using StgSharp.MVVM.ViewModel; +using StgSharp.Script; +using StgSharp.Script.Express; + +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; +using System.Xml.XPath; + +namespace StgSharp +{ + internal static class Program + { + + private static string testExpPath = @"D:\Programmer\stepcode\data\ap203\ap203.exp"; + + internal static unsafe void Main( string[] args ) + { + try { + StgSharp.Init(); + + + ExpCompile.InitCompile(); + ExpFileSource reader = new ExpFileSource( testExpPath ); + ExpSchemaSource schemaSource = new ExpSchemaSource(); + schemaSource.ReadSchema( reader ); + + ScriptSourceTransmitter st = new ScriptSourceTransmitter( + "end", 0 ); + for( int i = 0; i < 10; i++ ) { + string str = $"rawCode () (\"\") {i}"; + Console.WriteLine( str ); + st.WriteLine( str ); + } + for( int i = 0; i < 10; i++ ) { + string str = $"Code{i} {new string(' ', i + 1)}-- Comment{i}"; + Console.WriteLine( str ); + st.WriteLine( str ); + } + st.WriteLine( "CodeBef (* comment" ); + st.WriteLine( $"comment *) codeAft" ); + Console.WriteLine( "CodeBef (* comment_" ); + Console.WriteLine( $"_comment *) codeAft" ); + for( int i = 0; i < 10; i++ ) { + string str = $" Code{i} (* (* Comment{i} *) *) Code{i}"; + Console.WriteLine( str ); + st.WriteLine( str ); + } + st.WriteLine( "end" ); + ExpSourceReader sr = new ExpSourceReader( st ); + int count = 0; + while( !sr.IsEmpty ) { + count++; + Token str = sr.ReadToken(); + Console.WriteLine( + $"{count}\t{str.Flag}\t\t{str.Value.ToString()}" ); + } + IScriptSourceProvider slice = st.Slice( 5, 2 ); + + /* + + StgSharp.InitGL( 4, 6 ); + StgSharp.GlobalSetting.VSyncActivated = false; + + ViewPort vp = new ViewPort(800,600,"Hello StgSharp!",IntPtr.Zero); + //throw new NotImplementedException(); + + var mul = new StringHashMultiplexer(); + IEqualityComparer com = (IEqualityComparer)mul; + string str = "1234567012345670"; + for (int i = 1; i < 100; i++) + { + str += $"{(i%8)}"; + int hash = mul.ForceComputeHash(str); + Thread.Sleep(20); + } + + ViewModelBase mainModel = new ViewModelMain( vp ); + mainModel.CreateAndBindView( "MainView", (1, 1, 1) ); + + mainModel.UseViewModel( "MainView" ); + + StgSharp.Terminate(); + /**/ + + return; + } + catch( Exception ) { + throw; + /* + StgSharp.WriteLog($"{ex}", LogType.Error); + if( true ) { } + Dialogue.PostError( ex ); + /**/ + Environment.Exit( -1 ); + /**/ + } + finally { } + } + + } +} \ No newline at end of file diff --git a/StgSharpDebug/Properties/launchSettings.json b/StgSharpDebug/Properties/launchSettings.json new file mode 100644 index 00000000..32cd25bd --- /dev/null +++ b/StgSharpDebug/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "StgSharpDebug": { + "commandName": "Project", + "nativeDebugging": true + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/RenderStream/Partical.cs b/StgSharpDebug/RenderStream/Partical.cs new file mode 100644 index 00000000..051f993a --- /dev/null +++ b/StgSharpDebug/RenderStream/Partical.cs @@ -0,0 +1,428 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Partical.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.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; +using StgSharp.Internal.OpenGL; +using StgSharp.Math; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class ParticleRenderStream : glRender + { + + private AutoTextureGL autoT; + + private ElementBuffer ebo; + private ElementBuffer f_ebo; + private FrameBuffer fbo; + private Image i; + + private int temp = 0; + private PlainInstancingBuffer buffer; + private RenderBuffer rbo; + private ShaderProgram frameMainShader; + private ShaderProgram s; + private TextureGL f_t; + private TextureGL t; + private Uniform texUniform; + private Uniform time; + private VertexArray f_vao; + private VertexArray vao; + + private VertexBuffer f_vbo; + private VertexBuffer vbo; + + public ParticleRenderStream() { } + + public override bool IsContextSharable => true; + + public Rectangle ButtonBounding + { + get; + private set; + } + + public TextureProvider ButtonTextureProvider + { + get; + private set; + } + + //render a controlling item + public void ButtonMain( IEnumerable items ) + { + //Console.WriteLine("Render Button Itself"); + + GL.BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); /*GL.Assert(true);/**/ + GL.ClearColor( 0.4f, TimePassed % 1.0f, 0f, 1.0f ); /*GL.Assert(true);/**/ + GL.Clear( MaskBufferBit.COLOR /**/ | MaskBufferBit.DEPTH/**/ ); /*GL.Assert(true);/**/ + + f_vao.Bind( 0 ); //GL.Assert(true); + + foreach( PlainGeometryMesh mesh in items ) { + //autoT.SelectTextureAndBind(mesh.TextureImage); + f_t.LoadTexture( 0, mesh.TextureImage ); + + //GL.Assert(true); + + frameMainShader.Use(); //GL.Assert(true); + + GL.DrawElements( + GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero ); + } + + //GL.ClearError(); + //GL.Assert(true); + } + + public void Main() + { + temp++; + + //GL.ClearError(); + GL.Viewport( 0, 0, ( uint )Width, ( uint )Height ); + + //Console.Clear(); + buffer.UpdateAllParticles(); + + //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); + + fbo.Bind( 0 ); //GL.Assert(true); + vao.Bind( 0 ); //GL.Assert(true); + t.Bind2D( 0 ); //GL.Assert(false); + + GL.Viewport( 0, 0, ( uint )Width, ( uint )Height ); + + /**/ + + GL.TextureImage2d( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, null ); + /**/ + + //GL.Assert(false); + //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); + + GL.ClearColor( ( 0.6f + TimePassed ) % 1.0f, 0.1f, 0.3f, 1 ); + //GL.Assert( false ); + + //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); + GL.Clear( MaskBufferBit.COLOR /**/ | MaskBufferBit.DEPTH /**/ ); + + + //GL.Assert(false); + + vbo.Bind( 1 ); + vbo.WriteVectorData( + 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + + + s.Use(); + NativeCamera.SetAllUniforms(); + GL.SetUniformValue( time, TimePassed ); + + GL.DrawElementsInstanced( + GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero, 100 ); + + //Console.WriteLine(TimePassed); + //GL.Assert(true); + + GL.WaitAccomplishment(); + GL.BindVertexArray( GlHandle.Zero ); + /**/ + + //GL.Assert(true); + + ImageHelper.Resize( i, Width, Height, ImageMovement.Discard ); + + //GL.ClearError(); + //Console.Write($"size set to {Height},{Width}"); + //Console.WriteLine($"Image resized to {i.Height} {i.Width}"); + GL.GetTextureImage( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, i.PixelBuffer ); + /* + for (int num = 0; num < i.PixelBuffer.Length; num+=10000) + { + Console.Write($"{i.PixelBuffer[num]}\t"); + } + /**/ + + //GL.Assert(true); + //Array.Fill(i.PixelBuffer, 24); + + GL.BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); + + //GL.Assert(true); + /**/ + } + + public void NothingMain() + { + GL.ClearError(); + + //GL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); + GL.ClearColor( 0.5f, 0.2f, 0.3f, 1.0f ); + GL.Assert( false ); + } + + public void RenderButton( + ButtonStatus status, + float statusBegin, + in TextureProvider provider ) + { + provider.UpdateFromImage( i ); + } + + internal static Vec3 DefaultRotation( + TimeSpanProvider provider, + out float rotation ) + { + rotation = provider.SpanLengthLowPrecession; + float angle = provider.CurrentSecond * 2; + return ( new Vec3( Scaler.Cos( angle ), Scaler.Sin( angle ), + 0 ) ) * provider.SpanLengthLowPrecession; + } + + protected override void CustomizeDeinit() { } + + protected override void CustomizeInit() + { + //GL.ClearError(); + //GL.Assert(true); + + buffer = new PlainInstancingBuffer(); + for( int i = 0; i < 10; i++ ) { + float ai = Scaler.Abs( i - 5.0f ); + for( int t = 0; t < 10; t++ ) { + float at = Scaler.Abs( t - 5.0f ); + + ParticleOnPlain p = new ParticleOnPlain( buffer ); + ( ( IInstancing )p ).Coord = new Vec3( + ( ( ( -5 ) + i ) * 0.2f ) + 0.1f, + ( ( ( -5 ) + t ) * 0.2f ) + 0.1f, 0 ); + ( ( IInstancing )p ).Scale = + Scaler.MinOf( i, t ) * 0.15f; + ( ( IInstancing )p ).Motion = new GeometryMotion( + true, TimeProvider, DefaultRotation ); + } + } + + //GL.Assert(true); + + //SetSizeLimit(800, 800, 800, 800); + + s = CreateShaderProgram(); + frameMainShader = CreateShaderProgram(); + Shader pvs = CreateShaderSegment( ShaderType.Vertex, 2 ); + Shader pfs = CreateShaderSegment( ShaderType.Fragment, 2 ); + + //GL.Assert(true); + pvs.Compile( 0, Shader.FromCodeFile( "Shader\\particle.vert" ) ); + + //GL.Assert(true); + pvs.AttachTo( 0, s ); + + //GL.Assert(true); + pfs.Compile( 0, Shader.FromCodeFile( "Shader\\particle.frag" ) ); + pfs.AttachTo( 0, s ); + s.Link(); + + //GL.Assert(true); + + pvs.Compile( 1, Shader.FromCodeFile( "Shader\\fbo.vert" ) ); + pvs.AttachTo( 1, frameMainShader ); + pfs.Compile( 1, Shader.FromCodeFile( "Shader\\fbo.frag" ) ); + pfs.AttachTo( 1, frameMainShader ); + frameMainShader.Link(); + + //GL.Assert(true); + vbo = CreateVertexBuffer( 3 ); + vao = CreateVertexArray( 1 ); + ebo = CreateElementBuffer( 1 ); + vbo.Bind( 0 ); + + Rectangle rec = new Rectangle( + 0.05f, 0.05f, 0.05f, -0.05f, -0.05f, -0.05f, -0.05f, 0.05f ); + + //GL.Assert(true); + vao.Bind( 0 ); + vbo.WriteVectorData( 0, rec.VertexStream, BufferUsage.StaticDraw ); + ebo.SetValue( 0, rec.VertexIndices, BufferUsage.StaticDraw ); + vao.SetVertexAttribute( + 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + + vbo.WriteVectorData( + 1, buffer.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 ) ); + + GL.VertexAttributeDivisor( 1, 1 ); + GL.VertexAttributeDivisor( 2, 1 ); + + vbo.WriteScalerData( + 2, buffer.ScalingSpan, BufferUsage.StaticDraw ); + vao.SetVertexAttribute( + 3, 1, TypeCode.Single, false, sizeof( float ), 0 ); + + GL.VertexAttributeDivisor( 3, 1 ); + + vbo.Unbind(); + GL.BindVertexArray( GlHandle.Zero ); + + NativeCameraViewTarget( (0, 0, -100), (0, 0, 0), (0, 1, 0) ); + NativeCameraViewRange( new Degree( 1.5f ), Vec2.Zero, (50, 50) ); + NativeCameraUniform( s, "Camera" ); + + s.Use(); + + fbo = CreateFrameBuffer( 1 ); + rbo = CreateRenderBuffer( 1 ); + fbo.Bind( 0 ); + rbo.Bind( 0 ); + + //GL.Assert(true); + t = CreateTexture( 1 ); + t.Bind2D( 0 ); + GL.TextureImage2d( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, null! ); + t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); + t.Set2dFilterProperty( + 0, TextureFilter.Linear, TextureFilter.Linear ); + + //GL.Assert(true); + GL.FrameBufferTexture2d( + FrameBufferTarget.All, glAttachment.Color( 0 ), + Texture2DTarget.Texture2D, t[ 0 ], 0 ); + + GL.SetRenderBufferStorage( + RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); + GL.CombineFrameBufferRenderBuffer( + FrameBufferAttachment.DepthAndStencil, rbo[ 0 ] ); + + Console.WriteLine( + GL.CheckFrameBufferStatus( FrameBufferTarget.All ) ); + + FrameBuffer.BindNull(); + + //GL.Assert(true); + int streamLength = this.Width * this.Height * 4; + byte[] imageStream = new byte[streamLength]; + i = Image.FromMemory( + this.Size, ImageChannel.WithAlphaChannel, imageStream ); + + + time = s.GetUniform( "time" ); + + Vec2[] buttonTextureCoordArray = { + (0f, 1f), + (1f, 1f), + (1f, 0f), + (0f, 0f) + }; + ButtonBounding = new Rectangle( + -0.9f, 0.9f, 0.9f, 0.9f, 0.9f, -0.9f, -0.9f, -0.9f ); + + //GL.Assert(true); + ButtonTextureProvider = new TextureProvider( + i, buttonTextureCoordArray ); + + f_vao = CreateVertexArray( 1 ); + f_vbo = CreateVertexBuffer( 2 ); + f_ebo = CreateElementBuffer( 1 ); + + //GL.Assert(true); + f_vao.Bind( 0 ); + + f_ebo.Bind( 0 ); + f_ebo.SetValue( + 0, ButtonBounding.VertexIndices, BufferUsage.StaticDraw ); + + //GL.Assert(true); + f_vbo.Bind( 0 ); + f_vbo.WriteVectorData( + 0, ButtonBounding.VertexStream, BufferUsage.StaticDraw ); + f_vao.SetVertexAttribute( + 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + + //GL.Assert(true); + f_vbo.Bind( 1 ); + f_vbo.WriteVectorData( + 1, buttonTextureCoordArray, BufferUsage.StaticDraw ); + f_vao.SetVertexAttribute( + 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + + //GL.Assert(true); + + autoT = CreateAutoTexture( 4 ); + autoT.DefaultTextureProperty = new TextureProperty( + TextureFilter.Nearest, TextureFilter.Nearest, + TextureWrap.Repeat, TextureWrap.Repeat ); + + f_t = CreateTexture( 1 ); + f_t.Bind2D( 0 ); + f_t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); + f_t.Set2dFilterProperty( + 0, TextureFilter.Nearest, TextureFilter.Nearest ); + + //GL.Assert(true); + f_t.ActivateAs( TextureUnit.Unit1 ); + + //GL.Assert(true); + frameMainShader.Use(); + texUniform = frameMainShader.GetUniform( "tex" ); + + //GL.Assert(true); + GL.SetUniformValue( texUniform, 1 ); + + //GL.Assert(true); + + GL.ClearError(); + GL.Assert( true ); + } + + } +} diff --git a/StgSharpDebug/SSG_errorlog.log b/StgSharpDebug/SSG_errorlog.log new file mode 100644 index 00000000..e69de29b diff --git a/StgSharpDebug/Shader/ControlItemRender.frag b/StgSharpDebug/Shader/ControlItemRender.frag new file mode 100644 index 00000000..74a2e504 --- /dev/null +++ b/StgSharpDebug/Shader/ControlItemRender.frag @@ -0,0 +1,12 @@ +#version 430 core + +in vec3 texCoord; + +out vec4 fragColor; + +uniform sampler2D tex; + +void main() +{ + fragColor = texture(tex, texCoord.xy); +} \ No newline at end of file diff --git a/StgSharpDebug/Shader/ControlItemRender.vert b/StgSharpDebug/Shader/ControlItemRender.vert new file mode 100644 index 00000000..f3dc2319 --- /dev/null +++ b/StgSharpDebug/Shader/ControlItemRender.vert @@ -0,0 +1,12 @@ +#version 430 core + +layout(location = 0)in vec3 coord; +layout(location = 1)in vec3 tCoord; + +out vec3 texCoord; + +void main() +{ + gl_Position = vec4(coord.xyz,1.0f); + texCoord = tCoord; +} \ No newline at end of file diff --git a/StgSharpDebug/Shader/Image1.png b/StgSharpDebug/Shader/Image1.png new file mode 100644 index 00000000..5e95b072 Binary files /dev/null and b/StgSharpDebug/Shader/Image1.png differ diff --git a/StgSharpDebug/Shader/awesomeface.png b/StgSharpDebug/Shader/awesomeface.png new file mode 100644 index 00000000..c7bfec66 Binary files /dev/null and b/StgSharpDebug/Shader/awesomeface.png differ diff --git a/StgSharpDebug/Shader/fbo.frag b/StgSharpDebug/Shader/fbo.frag new file mode 100644 index 00000000..50cefd8b --- /dev/null +++ b/StgSharpDebug/Shader/fbo.frag @@ -0,0 +1,13 @@ +#version 430 core + +in vec3 texCoord; + +out vec4 fragColor; + +uniform sampler2D tex; + +void main() +{ + fragColor = texture(tex, texCoord.xy); + //fragColor = vec4(0.099f,0.226f,0.335f,0.0f); +} \ No newline at end of file diff --git a/StgSharpDebug/Shader/fbo.vert b/StgSharpDebug/Shader/fbo.vert new file mode 100644 index 00000000..bb5c00c5 --- /dev/null +++ b/StgSharpDebug/Shader/fbo.vert @@ -0,0 +1,13 @@ +#version 330 core + +layout(location = 0)in vec3 coord; +layout(location = 1)in vec3 tCoord; + +out vec3 texCoord; + +void main() +{ + gl_Position = vec4(coord.xyz,1.0f); + texCoord = tCoord; +} + diff --git a/StgSharpDebug/Shader/main.frag b/StgSharpDebug/Shader/main.frag new file mode 100644 index 00000000..6f8c1558 --- /dev/null +++ b/StgSharpDebug/Shader/main.frag @@ -0,0 +1,17 @@ +#version 330 core + +in vec2 TexCoord; + +out vec4 FragColor; + +uniform vec4 color; +uniform sampler2D ourTexture; +uniform sampler2D ourTexture2; + +void main() +{ + vec4 tex1 = texture(ourTexture, TexCoord); + vec4 tex2 = texture(ourTexture2,TexCoord); + FragColor = mix(tex1 * vec4( color.xyz, 1.0), tex2, 0.2) /* *vec4( TexColor,1.0) /**/; +} + diff --git a/StgSharpDebug/Shader/main.vert b/StgSharpDebug/Shader/main.vert new file mode 100644 index 00000000..a3a23d5e --- /dev/null +++ b/StgSharpDebug/Shader/main.vert @@ -0,0 +1,22 @@ +#version 330 core + +layout(location = 0) in vec3 aPos; +layout(location = 1) in vec3 aColor; +layout(location = 2) in vec2 aTextCoord; + +out vec2 TexCoord; + +uniform mat4x4 camera; + +void main() +{ + + TexCoord = aTextCoord; + vec4 temp = vec4(aPos.xyz,1.0); + gl_Position = /**/ camera * /**/ temp; +} + +//struct + + + diff --git a/StgSharpDebug/Shader/particle.frag b/StgSharpDebug/Shader/particle.frag new file mode 100644 index 00000000..d2eb95fd --- /dev/null +++ b/StgSharpDebug/Shader/particle.frag @@ -0,0 +1,12 @@ +#version 460 core + +uniform float time; + +out vec3 fragColor; + +void main() +{ + + fragColor = vec3( 0.5f,0.336f,mod( (0.9961f + time),1.0f) ); + +} \ No newline at end of file diff --git a/StgSharpDebug/Shader/particle.vert b/StgSharpDebug/Shader/particle.vert new file mode 100644 index 00000000..83adda21 --- /dev/null +++ b/StgSharpDebug/Shader/particle.vert @@ -0,0 +1,36 @@ +#version 460 core + + +layout(location = 0) in vec3 singleCoord; +layout(location = 1) in vec3 locations; +layout(location = 2) in float rotation; +layout(location = 3) in float scale; + +uniform mat4x4 Camera; + +void main() +{ + /**/ + mat4x4 scalingMat = mat4x4 + ( + scale,0,0,0, + 0,scale,0,0, + 0,0,scale,0, + 0,0,0,1 + ); + /**/ + /**/ + + mat4x4 rotationMat = mat4x4 + ( + cos(rotation),-sin(rotation),0,0, + sin(rotation),cos(rotation),0,0, + 0,0,1,0, + 0,0,0,1 + ); + + /**/ + + gl_Position = Camera * ( rotationMat * scalingMat * vec4( singleCoord.xyz , 1) + vec4( locations.xyz , 0)); + +} diff --git a/StgSharpDebug/StgSharpDebug.csproj b/StgSharpDebug/StgSharpDebug.csproj new file mode 100644 index 00000000..8b4c3630 --- /dev/null +++ b/StgSharpDebug/StgSharpDebug.csproj @@ -0,0 +1,108 @@ + + + + Exe + net8.0 + enable + Preview + warnings + StgSharp.Program + x64 + True + True + none + False + False + MIT + False + AnyCPU;x64 + Always + Debug;Release; + + + + False + False + + + + + False + False + + + + True + False + + + + True + False + + + + true + true + true + True + + + + Windows + + + OSX + + + Linux + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + + + + + diff --git a/StgSharpDebug/View/Control.cs b/StgSharpDebug/View/Control.cs new file mode 100644 index 00000000..c5b8cb66 --- /dev/null +++ b/StgSharpDebug/View/Control.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Control.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.Controlling.UsrActivity; +using StgSharp.MVVM.View; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public partial class ViewMain + { + + protected class Control : ViewResponder + { + + public Control( ViewMain view ) : base( view ) { } + + public override void CustomizedInitialize( + Func keyRegister ) { } + + public override bool ValidateInitializing() + { + return true; + } + + } + + } +} diff --git a/StgSharpDebug/View/Design.cs b/StgSharpDebug/View/Design.cs new file mode 100644 index 00000000..b174c17e --- /dev/null +++ b/StgSharpDebug/View/Design.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Design.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.Controlling; +using StgSharp.Controlling.UsrActivity; +using StgSharp.Controls; + +using StgSharp.Geometries; +using StgSharp.Graphics; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace StgSharp +{ + public partial class ViewMain + { + + internal DemoButtonGroup Group + { + get; + set; + } + + internal TriggerButton OnlyButton + { + get; + set; + } + + internal class Design : ViewDesigner + { + + public Design( ViewMain view ) : base( view ) { } + + public override sealed void CustomizedInitialize() + { + Binding.Group = CreateKeyboardButtonGroup( + new KeyTrigger( KeyboardKey.Left, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Right, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Up, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Down, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Enter, KeyStatus.PRESS ) ); + Binding.OnlyButton = CreateKeyboardButton( + Binding.Stream.ButtonBounding, + Binding.Stream.ButtonTextureProvider, true ); + Binding.OnlyButton.RenderButtonTexture += Binding.Stream.RenderButton; + } + + public override bool ValidateInitializing() + { + return true; + } + + } + + } + + public class DemoButtonGroup : KeyboardButtonGroup + { + + public override sealed void Confirm() + { + return; + } + + } +} diff --git a/StgSharpDebug/View/NewRender.cs b/StgSharpDebug/View/NewRender.cs new file mode 100644 index 00000000..0d9d55c0 --- /dev/null +++ b/StgSharpDebug/View/NewRender.cs @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="NewRender.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.Linq; + +namespace StgSharp +{ + public partial class ViewMain + { + + public ParticleRenderStream Stream + { + get; + set; + } + + } +} diff --git a/StgSharpDebug/View/ViewMain.cs b/StgSharpDebug/View/ViewMain.cs new file mode 100644 index 00000000..b057a8b9 --- /dev/null +++ b/StgSharpDebug/View/ViewMain.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewMain.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.Graphics; +using StgSharp.MVVM; +using StgSharp.MVVM.View; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public partial class ViewMain : ViewBase + { + + private Dictionary _databindingIndexMap; + + public ViewMain() + { + _databindingIndexMap = new Dictionary(); + } + + public override void CustomizedInitialize( + [NotNull]ViewModelBase viewModelBinding ) + { + Designer = new Design( this ); + Responder = new Control( this ); + Render = new NewRender( this ); + + Render.Initialize(); + Designer.Initialize(); + Responder.Initialize( viewModelBinding.MethodLookup ); + } + + public override bool TryGetObjectReference( + string name, + out DataBindingEntry entry ) + { + if( _databindingIndexMap.TryGetValue( name, out entry ) ) { + return true; + } + try { + entry = name switch + { + _ => default( DataBindingEntry ), + }; + return !entry.ExactEqual( default( DataBindingEntry ) ); + } + catch( Exception ) { + entry = default( DataBindingEntry ); + return false; + } + } + + protected override void Show() + { + Stream.RenderStart(); + + //Stream.NothingMain(); + + Stream.Main(); + Stream.ButtonMain( OnlyButton ); + Stream.RenderEnd(); + } + + } +} diff --git a/StgSharpDebug/ViewModelMain.cs b/StgSharpDebug/ViewModelMain.cs new file mode 100644 index 00000000..1b321862 --- /dev/null +++ b/StgSharpDebug/ViewModelMain.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewModelMain.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.Graphics; + +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 +{ + public class ViewModelMain : ViewModelBase + { + + private Dictionary dataBindingEntryIndexMap; + + public ViewModelMain( ViewPort vp ) + : base( vp, 60 ) + { + dataBindingEntryIndexMap = new Dictionary( + ); + } + + public override void CustomizeInitialize() { } + + public override bool TryGetObjectReference( + string name, + out DataBindingEntry entry ) + { + if( dataBindingEntryIndexMap.TryGetValue( name, out entry ) ) { + return true; + } + entry = name switch + { + _ => DataBindingEntry.NullBinding, + }; + + if( entry.ExactEqual( DataBindingEntry.NullBinding ) ) { + return false; + } + dataBindingEntryIndexMap.Add( name, entry ); + return true; + } + + }//------------------------------------- End of Class ------------------------------------------ +} diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/SS_errorlog.log b/StgSharpDebug/bin/x64/Debug/net6.0/SS_errorlog.log new file mode 100644 index 00000000..66004c9e --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net6.0/SS_errorlog.log @@ -0,0 +1,168 @@ + + + + +Info 2025-02-01T23:23:15.7998448+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-01T23:23:55.7397384+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-02T09:07:35.3328583+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-02T09:08:41.4155028+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. +Info 2025-02-02T09:08:45.4566099+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info 2025-02-02T09:08:45.5474718+08:00 +Find OpenGL extensions: +GL_3DFX_texture_compression_FXT1;GL_AMD_depth_clamp_separate;GL_AMD_vertex_shader_layer;GL_AMD_vertex_shader_viewport_index;GL_ARB_ES2_compatibility;GL_ARB_ES3_1_compatibility;GL_ARB_ES3_compatibility;GL_ARB_arrays_of_arrays;GL_ARB_base_instance;GL_ARB_bindless_texture;GL_ARB_blend_func_extended;GL_ARB_buffer_storage;GL_ARB_cl_event;GL_ARB_clear_buffer_object;GL_ARB_clear_texture;GL_ARB_clip_control;GL_ARB_color_buffer_float;GL_ARB_compressed_texture_pixel_storage;GL_ARB_compute_shader;GL_ARB_conditional_render_inverted;GL_ARB_conservative_depth;GL_ARB_copy_buffer;GL_ARB_copy_image;GL_ARB_cull_distance;GL_ARB_debug_output;GL_ARB_depth_buffer_float;GL_ARB_depth_clamp;GL_ARB_depth_texture;GL_ARB_derivative_control;GL_ARB_direct_state_access;GL_ARB_draw_buffers;GL_ARB_draw_buffers_blend;GL_ARB_draw_elements_base_vertex;GL_ARB_draw_indirect;GL_ARB_draw_instanced;GL_ARB_enhanced_layouts;GL_ARB_explicit_attrib_location;GL_ARB_explicit_uniform_location;GL_ARB_fragment_coord_conventions;GL_ARB_fragment_layer_viewport;GL_ARB_fragment_program;GL_ARB_fragment_program_shadow;GL_ARB_fragment_shader;GL_ARB_fragment_shader_interlock;GL_ARB_framebuffer_no_attachments;GL_ARB_framebuffer_object;GL_ARB_framebuffer_sRGB;GL_ARB_geometry_shader4;GL_ARB_get_program_binary;GL_ARB_get_texture_sub_image;GL_ARB_gl_spirv;GL_ARB_gpu_shader5;GL_ARB_gpu_shader_fp64;GL_ARB_half_float_pixel;GL_ARB_half_float_vertex;GL_ARB_indirect_parameters;GL_ARB_instanced_arrays;GL_ARB_internalformat_query;GL_ARB_internalformat_query2;GL_ARB_invalidate_subdata;GL_ARB_map_buffer_alignment;GL_ARB_map_buffer_range;GL_ARB_multi_bind;GL_ARB_multi_draw_indirect;GL_ARB_multisample;GL_ARB_multitexture;GL_ARB_occlusion_query;GL_ARB_occlusion_query2;GL_ARB_pipeline_statistics_query;GL_ARB_pixel_buffer_object;GL_ARB_point_parameters;GL_ARB_point_sprite;GL_ARB_polygon_offset_clamp;GL_ARB_post_depth_coverage;GL_ARB_program_interface_query;GL_ARB_provoking_vertex;GL_ARB_query_buffer_object;GL_ARB_robust_buffer_access_behavior;GL_ARB_robustness;GL_ARB_robustness_isolation;GL_ARB_sample_shading;GL_ARB_sampler_objects;GL_ARB_seamless_cube_map;GL_ARB_seamless_cubemap_per_texture;GL_ARB_separate_shader_objects;GL_ARB_shader_atomic_counter_ops;GL_ARB_shader_atomic_counters;GL_ARB_shader_bit_encoding;GL_ARB_shader_draw_parameters;GL_ARB_shader_group_vote;GL_ARB_shader_image_load_store;GL_ARB_shader_image_size;GL_ARB_shader_objects;GL_ARB_shader_precision;GL_ARB_shader_stencil_export;GL_ARB_shader_storage_buffer_object;GL_ARB_shader_subroutine;GL_ARB_shader_texture_image_samples;GL_ARB_shading_language_100;GL_ARB_shading_language_420pack;GL_ARB_shading_language_packing;GL_ARB_shadow;GL_ARB_spirv_extensions;GL_ARB_stencil_texturing;GL_ARB_sync;GL_ARB_tessellation_shader;GL_ARB_texture_barrier;GL_ARB_texture_border_clamp;GL_ARB_texture_buffer_object;GL_ARB_texture_buffer_object_rgb32;GL_ARB_texture_buffer_range;GL_ARB_texture_compression;GL_ARB_texture_compression_bptc;GL_ARB_texture_compression_rgtc;GL_ARB_texture_cube_map;GL_ARB_texture_cube_map_array;GL_ARB_texture_env_add;GL_ARB_texture_env_combine;GL_ARB_texture_env_crossbar;GL_ARB_texture_env_dot3;GL_ARB_texture_filter_anisotropic;GL_ARB_texture_float;GL_ARB_texture_gather;GL_ARB_texture_mirror_clamp_to_edge;GL_ARB_texture_mirrored_repeat;GL_ARB_texture_multisample;GL_ARB_texture_non_power_of_two;GL_ARB_texture_query_levels;GL_ARB_texture_query_lod;GL_ARB_texture_rectangle;GL_ARB_texture_rg;GL_ARB_texture_rgb10_a2ui;GL_ARB_texture_stencil8;GL_ARB_texture_storage;GL_ARB_texture_storage_multisample;GL_ARB_texture_swizzle;GL_ARB_texture_view;GL_ARB_timer_query;GL_ARB_transform_feedback2;GL_ARB_transform_feedback3;GL_ARB_transform_feedback_instanced;GL_ARB_transform_feedback_overflow_query;GL_ARB_transpose_matrix;GL_ARB_uniform_buffer_object;GL_ARB_vertex_array_bgra;GL_ARB_vertex_array_object;GL_ARB_vertex_attrib_64bit;GL_ARB_vertex_attrib_binding;GL_ARB_vertex_buffer_object;GL_ARB_vertex_program;GL_ARB_vertex_shader;GL_ARB_vertex_type_10f_11f_11f_rev;GL_ARB_vertex_type_2_10_10_10_rev;GL_ARB_viewport_array;GL_ARB_window_pos;GL_ATI_separate_stencil;GL_EXT_abgr;GL_EXT_bgra;GL_EXT_blend_color;GL_EXT_blend_equation_separate;GL_EXT_blend_func_separate;GL_EXT_blend_minmax;GL_EXT_blend_subtract;GL_EXT_clip_volume_hint;GL_EXT_compiled_vertex_array;GL_EXT_depth_bounds_test;GL_EXT_direct_state_access;GL_EXT_draw_buffers2;GL_EXT_draw_range_elements;GL_EXT_fog_coord;GL_EXT_framebuffer_blit;GL_EXT_framebuffer_multisample;GL_EXT_framebuffer_object;GL_EXT_geometry_shader4;GL_EXT_gpu_program_parameters;GL_EXT_gpu_shader4;GL_EXT_memory_object;GL_EXT_memory_object_win32;GL_EXT_multi_draw_arrays;GL_EXT_packed_depth_stencil;GL_EXT_packed_float;GL_EXT_packed_pixels;GL_EXT_polygon_offset_clamp;GL_EXT_rescale_normal;GL_EXT_secondary_color;GL_EXT_semaphore;GL_EXT_semaphore_win32;GL_EXT_separate_specular_color;GL_EXT_shader_framebuffer_fetch;GL_EXT_shader_integer_mix;GL_EXT_shadow_funcs;GL_EXT_stencil_two_side;GL_EXT_stencil_wrap;GL_EXT_texture3D;GL_EXT_texture_array;GL_EXT_texture_compression_s3tc;GL_EXT_texture_edge_clamp;GL_EXT_texture_env_add;GL_EXT_texture_env_combine;GL_EXT_texture_filter_anisotropic;GL_EXT_texture_integer;GL_EXT_texture_lod_bias;GL_EXT_texture_rectangle;GL_EXT_texture_sRGB;GL_EXT_texture_sRGB_decode;GL_EXT_texture_shared_exponent;GL_EXT_texture_snorm;GL_EXT_texture_storage;GL_EXT_texture_swizzle;GL_EXT_timer_query;GL_EXT_transform_feedback;GL_IBM_texture_mirrored_repeat;GL_INTEL_conservative_rasterization;GL_INTEL_fragment_shader_ordering;GL_INTEL_framebuffer_CMAA;GL_INTEL_map_texture;GL_INTEL_multi_rate_fragment_shader;GL_INTEL_performance_query;GL_KHR_blend_equation_advanced;GL_KHR_blend_equation_advanced_coherent;GL_KHR_context_flush_control;GL_KHR_debug;GL_KHR_no_error;GL_KHR_shader_subgroup;GL_KHR_shader_subgroup_arithmetic;GL_KHR_shader_subgroup_ballot;GL_KHR_shader_subgroup_basic;GL_KHR_shader_subgroup_clustered;GL_KHR_shader_subgroup_quad;GL_KHR_shader_subgroup_shuffle;GL_KHR_shader_subgroup_shuffle_relative;GL_KHR_shader_subgroup_vote;GL_KHR_texture_compression_astc_ldr;GL_NV_blend_square;GL_NV_conditional_render;GL_NV_primitive_restart;GL_NV_texgen_reflection;GL_NV_timeline_semaphore;GL_OVR_multiview;GL_SGIS_generate_mipmap;GL_SGIS_texture_edge_clamp;GL_SGIS_texture_lod;GL_SUN_multi_draw_arrays;GL_WIN_swap_hint;WGL_EXT_swap_control + + + + +Info 2025-02-02T12:41:24.3811371+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-02T12:44:54.7517434+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-02T12:46:45.6609968+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. +Info 2025-02-02T12:46:53.2629773+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info 2025-02-02T12:46:53.3456697+08:00 +Find OpenGL extensions: +GL_3DFX_texture_compression_FXT1;GL_AMD_depth_clamp_separate;GL_AMD_vertex_shader_layer;GL_AMD_vertex_shader_viewport_index;GL_ARB_ES2_compatibility;GL_ARB_ES3_1_compatibility;GL_ARB_ES3_compatibility;GL_ARB_arrays_of_arrays;GL_ARB_base_instance;GL_ARB_bindless_texture;GL_ARB_blend_func_extended;GL_ARB_buffer_storage;GL_ARB_cl_event;GL_ARB_clear_buffer_object;GL_ARB_clear_texture;GL_ARB_clip_control;GL_ARB_color_buffer_float;GL_ARB_compressed_texture_pixel_storage;GL_ARB_compute_shader;GL_ARB_conditional_render_inverted;GL_ARB_conservative_depth;GL_ARB_copy_buffer;GL_ARB_copy_image;GL_ARB_cull_distance;GL_ARB_debug_output;GL_ARB_depth_buffer_float;GL_ARB_depth_clamp;GL_ARB_depth_texture;GL_ARB_derivative_control;GL_ARB_direct_state_access;GL_ARB_draw_buffers;GL_ARB_draw_buffers_blend;GL_ARB_draw_elements_base_vertex;GL_ARB_draw_indirect;GL_ARB_draw_instanced;GL_ARB_enhanced_layouts;GL_ARB_explicit_attrib_location;GL_ARB_explicit_uniform_location;GL_ARB_fragment_coord_conventions;GL_ARB_fragment_layer_viewport;GL_ARB_fragment_program;GL_ARB_fragment_program_shadow;GL_ARB_fragment_shader;GL_ARB_fragment_shader_interlock;GL_ARB_framebuffer_no_attachments;GL_ARB_framebuffer_object;GL_ARB_framebuffer_sRGB;GL_ARB_geometry_shader4;GL_ARB_get_program_binary;GL_ARB_get_texture_sub_image;GL_ARB_gl_spirv;GL_ARB_gpu_shader5;GL_ARB_gpu_shader_fp64;GL_ARB_half_float_pixel;GL_ARB_half_float_vertex;GL_ARB_indirect_parameters;GL_ARB_instanced_arrays;GL_ARB_internalformat_query;GL_ARB_internalformat_query2;GL_ARB_invalidate_subdata;GL_ARB_map_buffer_alignment;GL_ARB_map_buffer_range;GL_ARB_multi_bind;GL_ARB_multi_draw_indirect;GL_ARB_multisample;GL_ARB_multitexture;GL_ARB_occlusion_query;GL_ARB_occlusion_query2;GL_ARB_pipeline_statistics_query;GL_ARB_pixel_buffer_object;GL_ARB_point_parameters;GL_ARB_point_sprite;GL_ARB_polygon_offset_clamp;GL_ARB_post_depth_coverage;GL_ARB_program_interface_query;GL_ARB_provoking_vertex;GL_ARB_query_buffer_object;GL_ARB_robust_buffer_access_behavior;GL_ARB_robustness;GL_ARB_robustness_isolation;GL_ARB_sample_shading;GL_ARB_sampler_objects;GL_ARB_seamless_cube_map;GL_ARB_seamless_cubemap_per_texture;GL_ARB_separate_shader_objects;GL_ARB_shader_atomic_counter_ops;GL_ARB_shader_atomic_counters;GL_ARB_shader_bit_encoding;GL_ARB_shader_draw_parameters;GL_ARB_shader_group_vote;GL_ARB_shader_image_load_store;GL_ARB_shader_image_size;GL_ARB_shader_objects;GL_ARB_shader_precision;GL_ARB_shader_stencil_export;GL_ARB_shader_storage_buffer_object;GL_ARB_shader_subroutine;GL_ARB_shader_texture_image_samples;GL_ARB_shading_language_100;GL_ARB_shading_language_420pack;GL_ARB_shading_language_packing;GL_ARB_shadow;GL_ARB_spirv_extensions;GL_ARB_stencil_texturing;GL_ARB_sync;GL_ARB_tessellation_shader;GL_ARB_texture_barrier;GL_ARB_texture_border_clamp;GL_ARB_texture_buffer_object;GL_ARB_texture_buffer_object_rgb32;GL_ARB_texture_buffer_range;GL_ARB_texture_compression;GL_ARB_texture_compression_bptc;GL_ARB_texture_compression_rgtc;GL_ARB_texture_cube_map;GL_ARB_texture_cube_map_array;GL_ARB_texture_env_add;GL_ARB_texture_env_combine;GL_ARB_texture_env_crossbar;GL_ARB_texture_env_dot3;GL_ARB_texture_filter_anisotropic;GL_ARB_texture_float;GL_ARB_texture_gather;GL_ARB_texture_mirror_clamp_to_edge;GL_ARB_texture_mirrored_repeat;GL_ARB_texture_multisample;GL_ARB_texture_non_power_of_two;GL_ARB_texture_query_levels;GL_ARB_texture_query_lod;GL_ARB_texture_rectangle;GL_ARB_texture_rg;GL_ARB_texture_rgb10_a2ui;GL_ARB_texture_stencil8;GL_ARB_texture_storage;GL_ARB_texture_storage_multisample;GL_ARB_texture_swizzle;GL_ARB_texture_view;GL_ARB_timer_query;GL_ARB_transform_feedback2;GL_ARB_transform_feedback3;GL_ARB_transform_feedback_instanced;GL_ARB_transform_feedback_overflow_query;GL_ARB_transpose_matrix;GL_ARB_uniform_buffer_object;GL_ARB_vertex_array_bgra;GL_ARB_vertex_array_object;GL_ARB_vertex_attrib_64bit;GL_ARB_vertex_attrib_binding;GL_ARB_vertex_buffer_object;GL_ARB_vertex_program;GL_ARB_vertex_shader;GL_ARB_vertex_type_10f_11f_11f_rev;GL_ARB_vertex_type_2_10_10_10_rev;GL_ARB_viewport_array;GL_ARB_window_pos;GL_ATI_separate_stencil;GL_EXT_abgr;GL_EXT_bgra;GL_EXT_blend_color;GL_EXT_blend_equation_separate;GL_EXT_blend_func_separate;GL_EXT_blend_minmax;GL_EXT_blend_subtract;GL_EXT_clip_volume_hint;GL_EXT_compiled_vertex_array;GL_EXT_depth_bounds_test;GL_EXT_direct_state_access;GL_EXT_draw_buffers2;GL_EXT_draw_range_elements;GL_EXT_fog_coord;GL_EXT_framebuffer_blit;GL_EXT_framebuffer_multisample;GL_EXT_framebuffer_object;GL_EXT_geometry_shader4;GL_EXT_gpu_program_parameters;GL_EXT_gpu_shader4;GL_EXT_memory_object;GL_EXT_memory_object_win32;GL_EXT_multi_draw_arrays;GL_EXT_packed_depth_stencil;GL_EXT_packed_float;GL_EXT_packed_pixels;GL_EXT_polygon_offset_clamp;GL_EXT_rescale_normal;GL_EXT_secondary_color;GL_EXT_semaphore;GL_EXT_semaphore_win32;GL_EXT_separate_specular_color;GL_EXT_shader_framebuffer_fetch;GL_EXT_shader_integer_mix;GL_EXT_shadow_funcs;GL_EXT_stencil_two_side;GL_EXT_stencil_wrap;GL_EXT_texture3D;GL_EXT_texture_array;GL_EXT_texture_compression_s3tc;GL_EXT_texture_edge_clamp;GL_EXT_texture_env_add;GL_EXT_texture_env_combine;GL_EXT_texture_filter_anisotropic;GL_EXT_texture_integer;GL_EXT_texture_lod_bias;GL_EXT_texture_rectangle;GL_EXT_texture_sRGB;GL_EXT_texture_sRGB_decode;GL_EXT_texture_shared_exponent;GL_EXT_texture_snorm;GL_EXT_texture_storage;GL_EXT_texture_swizzle;GL_EXT_timer_query;GL_EXT_transform_feedback;GL_IBM_texture_mirrored_repeat;GL_INTEL_conservative_rasterization;GL_INTEL_fragment_shader_ordering;GL_INTEL_framebuffer_CMAA;GL_INTEL_map_texture;GL_INTEL_multi_rate_fragment_shader;GL_INTEL_performance_query;GL_KHR_blend_equation_advanced;GL_KHR_blend_equation_advanced_coherent;GL_KHR_context_flush_control;GL_KHR_debug;GL_KHR_no_error;GL_KHR_shader_subgroup;GL_KHR_shader_subgroup_arithmetic;GL_KHR_shader_subgroup_ballot;GL_KHR_shader_subgroup_basic;GL_KHR_shader_subgroup_clustered;GL_KHR_shader_subgroup_quad;GL_KHR_shader_subgroup_shuffle;GL_KHR_shader_subgroup_shuffle_relative;GL_KHR_shader_subgroup_vote;GL_KHR_texture_compression_astc_ldr;GL_NV_blend_square;GL_NV_conditional_render;GL_NV_primitive_restart;GL_NV_texgen_reflection;GL_NV_timeline_semaphore;GL_OVR_multiview;GL_SGIS_generate_mipmap;GL_SGIS_texture_edge_clamp;GL_SGIS_texture_lod;GL_SUN_multi_draw_arrays;GL_WIN_swap_hint;WGL_EXT_swap_control +Info 2025-02-02T12:47:01.2328469+08:00 +Awaiting token 0 has been removed. +Info 2025-02-02T12:47:01.2948135+08:00 +Awaiting token 1 has been removed. +Info 2025-02-02T12:47:01.2951173+08:00 +Time subscriber StgSharp.Timing.TimeSpanProvider is to be removed. + + + + +Info 2025-02-02T12:56:31.1573607+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-02T13:00:17.2763006+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-02T13:02:20.2050199+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-02T15:56:20.8558744+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-03T11:24:52.3585021+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. +Info 2025-02-03T11:24:56.3332570+08:00 +Find core OpenGL version. +Successfully load all OpenGL 1.0 APIs +Successfully load all OpenGL 1.1 APIs +Successfully load all OpenGL 1.2 APIs +Successfully load all OpenGL 1.3 APIs +Successfully load all OpenGL 1.4 APIs +Successfully load all OpenGL 1.5 APIs +Successfully load all OpenGL 2.0 APIs +Successfully load all OpenGL 2.1 APIs +Successfully load all OpenGL 3.0 APIs +Successfully load all OpenGL 3.1 APIs +Successfully load all OpenGL 3.2 APIs +Successfully load all OpenGL 3.3 APIs +Successfully load all OpenGL 4.0 APIs +Successfully load all OpenGL 4.1 APIs +Successfully load all OpenGL 4.2 APIs +Successfully load all OpenGL 4.3 APIs +Successfully load all OpenGL 4.4 APIs +Successfully load all OpenGL 4.5 APIs +Successfully load all OpenGL 4.6 APIs +Info 2025-02-03T11:24:56.4306439+08:00 +Find OpenGL extensions: +GL_3DFX_texture_compression_FXT1;GL_AMD_depth_clamp_separate;GL_AMD_vertex_shader_layer;GL_AMD_vertex_shader_viewport_index;GL_ARB_ES2_compatibility;GL_ARB_ES3_1_compatibility;GL_ARB_ES3_compatibility;GL_ARB_arrays_of_arrays;GL_ARB_base_instance;GL_ARB_bindless_texture;GL_ARB_blend_func_extended;GL_ARB_buffer_storage;GL_ARB_cl_event;GL_ARB_clear_buffer_object;GL_ARB_clear_texture;GL_ARB_clip_control;GL_ARB_color_buffer_float;GL_ARB_compressed_texture_pixel_storage;GL_ARB_compute_shader;GL_ARB_conditional_render_inverted;GL_ARB_conservative_depth;GL_ARB_copy_buffer;GL_ARB_copy_image;GL_ARB_cull_distance;GL_ARB_debug_output;GL_ARB_depth_buffer_float;GL_ARB_depth_clamp;GL_ARB_depth_texture;GL_ARB_derivative_control;GL_ARB_direct_state_access;GL_ARB_draw_buffers;GL_ARB_draw_buffers_blend;GL_ARB_draw_elements_base_vertex;GL_ARB_draw_indirect;GL_ARB_draw_instanced;GL_ARB_enhanced_layouts;GL_ARB_explicit_attrib_location;GL_ARB_explicit_uniform_location;GL_ARB_fragment_coord_conventions;GL_ARB_fragment_layer_viewport;GL_ARB_fragment_program;GL_ARB_fragment_program_shadow;GL_ARB_fragment_shader;GL_ARB_fragment_shader_interlock;GL_ARB_framebuffer_no_attachments;GL_ARB_framebuffer_object;GL_ARB_framebuffer_sRGB;GL_ARB_geometry_shader4;GL_ARB_get_program_binary;GL_ARB_get_texture_sub_image;GL_ARB_gl_spirv;GL_ARB_gpu_shader5;GL_ARB_gpu_shader_fp64;GL_ARB_half_float_pixel;GL_ARB_half_float_vertex;GL_ARB_indirect_parameters;GL_ARB_instanced_arrays;GL_ARB_internalformat_query;GL_ARB_internalformat_query2;GL_ARB_invalidate_subdata;GL_ARB_map_buffer_alignment;GL_ARB_map_buffer_range;GL_ARB_multi_bind;GL_ARB_multi_draw_indirect;GL_ARB_multisample;GL_ARB_multitexture;GL_ARB_occlusion_query;GL_ARB_occlusion_query2;GL_ARB_pipeline_statistics_query;GL_ARB_pixel_buffer_object;GL_ARB_point_parameters;GL_ARB_point_sprite;GL_ARB_polygon_offset_clamp;GL_ARB_post_depth_coverage;GL_ARB_program_interface_query;GL_ARB_provoking_vertex;GL_ARB_query_buffer_object;GL_ARB_robust_buffer_access_behavior;GL_ARB_robustness;GL_ARB_robustness_isolation;GL_ARB_sample_shading;GL_ARB_sampler_objects;GL_ARB_seamless_cube_map;GL_ARB_seamless_cubemap_per_texture;GL_ARB_separate_shader_objects;GL_ARB_shader_atomic_counter_ops;GL_ARB_shader_atomic_counters;GL_ARB_shader_bit_encoding;GL_ARB_shader_draw_parameters;GL_ARB_shader_group_vote;GL_ARB_shader_image_load_store;GL_ARB_shader_image_size;GL_ARB_shader_objects;GL_ARB_shader_precision;GL_ARB_shader_stencil_export;GL_ARB_shader_storage_buffer_object;GL_ARB_shader_subroutine;GL_ARB_shader_texture_image_samples;GL_ARB_shading_language_100;GL_ARB_shading_language_420pack;GL_ARB_shading_language_packing;GL_ARB_shadow;GL_ARB_spirv_extensions;GL_ARB_stencil_texturing;GL_ARB_sync;GL_ARB_tessellation_shader;GL_ARB_texture_barrier;GL_ARB_texture_border_clamp;GL_ARB_texture_buffer_object;GL_ARB_texture_buffer_object_rgb32;GL_ARB_texture_buffer_range;GL_ARB_texture_compression;GL_ARB_texture_compression_bptc;GL_ARB_texture_compression_rgtc;GL_ARB_texture_cube_map;GL_ARB_texture_cube_map_array;GL_ARB_texture_env_add;GL_ARB_texture_env_combine;GL_ARB_texture_env_crossbar;GL_ARB_texture_env_dot3;GL_ARB_texture_filter_anisotropic;GL_ARB_texture_float;GL_ARB_texture_gather;GL_ARB_texture_mirror_clamp_to_edge;GL_ARB_texture_mirrored_repeat;GL_ARB_texture_multisample;GL_ARB_texture_non_power_of_two;GL_ARB_texture_query_levels;GL_ARB_texture_query_lod;GL_ARB_texture_rectangle;GL_ARB_texture_rg;GL_ARB_texture_rgb10_a2ui;GL_ARB_texture_stencil8;GL_ARB_texture_storage;GL_ARB_texture_storage_multisample;GL_ARB_texture_swizzle;GL_ARB_texture_view;GL_ARB_timer_query;GL_ARB_transform_feedback2;GL_ARB_transform_feedback3;GL_ARB_transform_feedback_instanced;GL_ARB_transform_feedback_overflow_query;GL_ARB_transpose_matrix;GL_ARB_uniform_buffer_object;GL_ARB_vertex_array_bgra;GL_ARB_vertex_array_object;GL_ARB_vertex_attrib_64bit;GL_ARB_vertex_attrib_binding;GL_ARB_vertex_buffer_object;GL_ARB_vertex_program;GL_ARB_vertex_shader;GL_ARB_vertex_type_10f_11f_11f_rev;GL_ARB_vertex_type_2_10_10_10_rev;GL_ARB_viewport_array;GL_ARB_window_pos;GL_ATI_separate_stencil;GL_EXT_abgr;GL_EXT_bgra;GL_EXT_blend_color;GL_EXT_blend_equation_separate;GL_EXT_blend_func_separate;GL_EXT_blend_minmax;GL_EXT_blend_subtract;GL_EXT_clip_volume_hint;GL_EXT_compiled_vertex_array;GL_EXT_depth_bounds_test;GL_EXT_direct_state_access;GL_EXT_draw_buffers2;GL_EXT_draw_range_elements;GL_EXT_fog_coord;GL_EXT_framebuffer_blit;GL_EXT_framebuffer_multisample;GL_EXT_framebuffer_object;GL_EXT_geometry_shader4;GL_EXT_gpu_program_parameters;GL_EXT_gpu_shader4;GL_EXT_memory_object;GL_EXT_memory_object_win32;GL_EXT_multi_draw_arrays;GL_EXT_packed_depth_stencil;GL_EXT_packed_float;GL_EXT_packed_pixels;GL_EXT_polygon_offset_clamp;GL_EXT_rescale_normal;GL_EXT_secondary_color;GL_EXT_semaphore;GL_EXT_semaphore_win32;GL_EXT_separate_specular_color;GL_EXT_shader_framebuffer_fetch;GL_EXT_shader_integer_mix;GL_EXT_shadow_funcs;GL_EXT_stencil_two_side;GL_EXT_stencil_wrap;GL_EXT_texture3D;GL_EXT_texture_array;GL_EXT_texture_compression_s3tc;GL_EXT_texture_edge_clamp;GL_EXT_texture_env_add;GL_EXT_texture_env_combine;GL_EXT_texture_filter_anisotropic;GL_EXT_texture_integer;GL_EXT_texture_lod_bias;GL_EXT_texture_rectangle;GL_EXT_texture_sRGB;GL_EXT_texture_sRGB_decode;GL_EXT_texture_shared_exponent;GL_EXT_texture_snorm;GL_EXT_texture_storage;GL_EXT_texture_swizzle;GL_EXT_timer_query;GL_EXT_transform_feedback;GL_IBM_texture_mirrored_repeat;GL_INTEL_conservative_rasterization;GL_INTEL_fragment_shader_ordering;GL_INTEL_framebuffer_CMAA;GL_INTEL_map_texture;GL_INTEL_multi_rate_fragment_shader;GL_INTEL_performance_query;GL_KHR_blend_equation_advanced;GL_KHR_blend_equation_advanced_coherent;GL_KHR_context_flush_control;GL_KHR_debug;GL_KHR_no_error;GL_KHR_shader_subgroup;GL_KHR_shader_subgroup_arithmetic;GL_KHR_shader_subgroup_ballot;GL_KHR_shader_subgroup_basic;GL_KHR_shader_subgroup_clustered;GL_KHR_shader_subgroup_quad;GL_KHR_shader_subgroup_shuffle;GL_KHR_shader_subgroup_shuffle_relative;GL_KHR_shader_subgroup_vote;GL_KHR_texture_compression_astc_ldr;GL_NV_blend_square;GL_NV_conditional_render;GL_NV_primitive_restart;GL_NV_texgen_reflection;GL_NV_timeline_semaphore;GL_OVR_multiview;GL_SGIS_generate_mipmap;GL_SGIS_texture_edge_clamp;GL_SGIS_texture_lod;GL_SUN_multi_draw_arrays;GL_WIN_swap_hint;WGL_EXT_swap_control + + + + +Info 2025-02-03T13:35:24.4831436+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-03T13:46:56.7985226+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-03T15:03:38.1660159+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.bsc b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.bsc new file mode 100644 index 00000000..b3a5ecc6 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.bsc differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.dll new file mode 100644 index 00000000..8b1ed813 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.exp b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.exp new file mode 100644 index 00000000..676ba294 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.exp differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.lib b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.lib new file mode 100644 index 00000000..8d346e87 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.lib differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.pdb b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.pdb new file mode 100644 index 00000000..b4e08928 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.C.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.Common.deps.json b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..38d2e8b4 --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharp.Common.deps.json @@ -0,0 +1,58 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.1/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.1": {}, + ".NETStandard,Version=v2.1/": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": { + "runtime": { + "lib/netstandard2.0/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.5.0", + "fileVersion": "4.700.19.56404" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "runtime": { + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.100.24.56208" + } + } + } + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/ColorHelper.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/ColorHelper.dll new file mode 100644 index 00000000..9251e005 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/ColorHelper.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..72f1e1c1 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe new file mode 100644 index 00000000..e65eff4f Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb new file mode 100644 index 00000000..afa39545 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll new file mode 100644 index 00000000..f008c6bf Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/Terminal.Gui.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/Terminal.Gui.dll new file mode 100644 index 00000000..3739678f Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/Terminal.Gui.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll new file mode 100644 index 00000000..bc202d87 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll new file mode 100644 index 00000000..ee3ad392 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/Wcwidth.dll b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/Wcwidth.dll new file mode 100644 index 00000000..7c50bbcd Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net6.0/StgSharpTerminalDialogue/Wcwidth.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/CommunityToolkit.HighPerformance.dll b/StgSharpDebug/bin/x64/Debug/net8.0/CommunityToolkit.HighPerformance.dll new file mode 100644 index 00000000..177ba2f6 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/CommunityToolkit.HighPerformance.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/SS_errorlog.log b/StgSharpDebug/bin/x64/Debug/net8.0/SS_errorlog.log new file mode 100644 index 00000000..fda2c7cf --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/SS_errorlog.log @@ -0,0 +1,930 @@ + + + + +Info 2025-02-08T09:48:20.0250518+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T09:49:00.7889832+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T09:50:20.5568219+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T09:52:30.6701933+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T09:54:12.4207400+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T09:58:12.5637707+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T09:59:02.6508807+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T09:59:18.7254757+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:01:34.0564518+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:02:28.6009643+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:03:38.1218120+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:04:20.3040075+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:05:38.5763463+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:06:07.2340689+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:08:58.2591383+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:10:17.0335668+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:14:19.2506849+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:15:13.7212760+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:26:03.1144073+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:26:54.7321855+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:28:17.9672753+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:29:36.1146284+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:30:25.6632442+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:32:30.5751638+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:35:02.2901339+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:37:32.7632106+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:38:01.5884161+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:38:37.5872535+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:38:53.0708515+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:41:40.8513674+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:42:56.4180556+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T10:45:49.5138013+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T11:19:13.7767133+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T11:50:40.9027411+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T12:27:05.0758657+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T12:47:26.9072082+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T12:50:40.6871790+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T12:52:03.4121356+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T12:53:42.0860584+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T13:14:23.3537535+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T13:15:58.6369914+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T15:22:24.8796298+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T15:43:42.5772785+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T16:08:35.1436652+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T16:11:38.2008786+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T16:21:52.1580127+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T16:33:49.7006942+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T17:11:25.5281283+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T17:31:30.7469065+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T18:14:05.3639601+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T18:18:01.9446078+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:29:34.4937824+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:29:49.7562648+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:30:09.3355645+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:32:49.9250662+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:34:13.7324398+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:36:29.3544691+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:38:11.5532515+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:39:04.3385493+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:50:13.5539302+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:50:50.4098966+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:54:17.3408600+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T19:54:54.4105578+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:05:08.8711722+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:15:45.7098270+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:16:05.4148820+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:16:27.5407335+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:17:40.9982527+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:21:08.7737658+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:22:08.2288920+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:22:52.8916277+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:26:44.1075510+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:26:57.5946167+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:28:31.5832605+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:30:01.5283461+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:33:22.0133622+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:34:26.1848817+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:35:00.8692960+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:35:27.0486326+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:36:05.1900990+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:38:38.6958457+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:38:58.9124959+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:40:01.7375546+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:40:36.7217050+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:40:53.3916454+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:41:05.7709166+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:43:29.3343464+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:44:49.0058910+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:46:34.8142280+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:47:56.0982167+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:50:39.2761574+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:51:00.8944556+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:51:23.5488991+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:51:52.3885321+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:54:13.8831870+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:54:30.2013926+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:55:01.0019819+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:58:53.1321907+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T22:59:15.6156048+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T23:01:03.8835351+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T23:01:13.0193710+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T23:03:28.9044768+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T23:08:26.0262887+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T23:09:27.2138117+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-08T23:09:55.0454841+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T08:34:32.6870132+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T08:36:04.0681114+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T08:38:27.9449512+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T08:45:36.1775619+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T08:46:50.4234498+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T08:50:40.6927135+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T08:50:52.1232452+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-09T12:05:47.5685806+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T11:20:00.1638409+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T11:21:44.2383303+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T11:22:18.6882669+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T11:22:50.6041254+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T11:23:14.3401683+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T11:46:55.2790184+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T11:47:20.6574070+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:03:11.4195214+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:03:54.9880786+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:07:41.1536833+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:08:28.6938148+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:22:07.2840940+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:22:27.1402903+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:24:00.3126352+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:24:24.8884357+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T12:25:03.0013889+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:33:05.4593442+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:35:35.5902138+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:37:35.1555259+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:38:21.9479709+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:50:36.7433088+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:51:08.2738948+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:52:03.0104046+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:53:56.8032818+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:56:04.1489022+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:56:46.2550774+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T19:57:23.2363789+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:00:50.5201866+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:09:42.8984020+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:10:24.0715698+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:35:52.3883174+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:36:02.0557115+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:36:31.0538502+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:37:00.8293725+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:37:14.6834702+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:42:27.3676063+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:44:47.8600835+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:46:07.9190601+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:46:29.4379574+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:46:40.8245022+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:47:13.4631312+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. + + + + +Info 2025-02-10T20:47:47.8657218+08:00 +Program StgSharpDebug, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null Started. diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/Image1.png b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/Image1.png new file mode 100644 index 00000000..5e95b072 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/Image1.png differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/awesomeface.png b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/awesomeface.png new file mode 100644 index 00000000..c7bfec66 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/awesomeface.png differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/fbo.frag b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/fbo.frag new file mode 100644 index 00000000..50cefd8b --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/fbo.frag @@ -0,0 +1,13 @@ +#version 430 core + +in vec3 texCoord; + +out vec4 fragColor; + +uniform sampler2D tex; + +void main() +{ + fragColor = texture(tex, texCoord.xy); + //fragColor = vec4(0.099f,0.226f,0.335f,0.0f); +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/fbo.vert b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/fbo.vert new file mode 100644 index 00000000..bb5c00c5 --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/fbo.vert @@ -0,0 +1,13 @@ +#version 330 core + +layout(location = 0)in vec3 coord; +layout(location = 1)in vec3 tCoord; + +out vec3 texCoord; + +void main() +{ + gl_Position = vec4(coord.xyz,1.0f); + texCoord = tCoord; +} + diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/main.frag b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/main.frag new file mode 100644 index 00000000..6f8c1558 --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/main.frag @@ -0,0 +1,17 @@ +#version 330 core + +in vec2 TexCoord; + +out vec4 FragColor; + +uniform vec4 color; +uniform sampler2D ourTexture; +uniform sampler2D ourTexture2; + +void main() +{ + vec4 tex1 = texture(ourTexture, TexCoord); + vec4 tex2 = texture(ourTexture2,TexCoord); + FragColor = mix(tex1 * vec4( color.xyz, 1.0), tex2, 0.2) /* *vec4( TexColor,1.0) /**/; +} + diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/main.vert b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/main.vert new file mode 100644 index 00000000..a3a23d5e --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/main.vert @@ -0,0 +1,22 @@ +#version 330 core + +layout(location = 0) in vec3 aPos; +layout(location = 1) in vec3 aColor; +layout(location = 2) in vec2 aTextCoord; + +out vec2 TexCoord; + +uniform mat4x4 camera; + +void main() +{ + + TexCoord = aTextCoord; + vec4 temp = vec4(aPos.xyz,1.0); + gl_Position = /**/ camera * /**/ temp; +} + +//struct + + + diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/particle.frag b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/particle.frag new file mode 100644 index 00000000..d2eb95fd --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/particle.frag @@ -0,0 +1,12 @@ +#version 460 core + +uniform float time; + +out vec3 fragColor; + +void main() +{ + + fragColor = vec3( 0.5f,0.336f,mod( (0.9961f + time),1.0f) ); + +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/Shader/particle.vert b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/particle.vert new file mode 100644 index 00000000..83adda21 --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/Shader/particle.vert @@ -0,0 +1,36 @@ +#version 460 core + + +layout(location = 0) in vec3 singleCoord; +layout(location = 1) in vec3 locations; +layout(location = 2) in float rotation; +layout(location = 3) in float scale; + +uniform mat4x4 Camera; + +void main() +{ + /**/ + mat4x4 scalingMat = mat4x4 + ( + scale,0,0,0, + 0,scale,0,0, + 0,0,scale,0, + 0,0,0,1 + ); + /**/ + /**/ + + mat4x4 rotationMat = mat4x4 + ( + cos(rotation),-sin(rotation),0,0, + sin(rotation),cos(rotation),0,0, + 0,0,1,0, + 0,0,0,1 + ); + + /**/ + + gl_Position = Camera * ( rotationMat * scalingMat * vec4( singleCoord.xyz , 1) + vec4( locations.xyz , 0)); + +} diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.bsc b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.bsc new file mode 100644 index 00000000..078fe949 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.bsc differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.dll new file mode 100644 index 00000000..6249747b Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.exp b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.exp new file mode 100644 index 00000000..676ba294 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.exp differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.lib b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.lib new file mode 100644 index 00000000..8d346e87 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.lib differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.pdb b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.pdb new file mode 100644 index 00000000..df2170fa Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.C.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.deps.json b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..4c755f05 --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.deps.json @@ -0,0 +1,43 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {} + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.dll new file mode 100644 index 00000000..94382a18 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.pdb b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.pdb new file mode 100644 index 00000000..94f21d32 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.xml b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.xml new file mode 100644 index 00000000..3f8a0030 --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Common.xml @@ -0,0 +1,648 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Part of a collection. This contains a direct reference to origin collection, + so all change to origin collection will be reflected in this object. + + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL Buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a Buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to Buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. Target of this frame Buffer should be set manually. + + The frame Buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame Buffer to a frame Buffer target Same function as glBindFramebuffer. + + The frame Buffer target of the binding operation. + The handle of the frame Buffer object to bind. + + + + Delete a render Buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to Buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Generator.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Generator.dll new file mode 100644 index 00000000..57aa3041 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Generator.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Generator.pdb b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Generator.pdb new file mode 100644 index 00000000..c52f1a3e Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Generator.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Model.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Model.dll new file mode 100644 index 00000000..1d9b5146 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Model.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Model.pdb b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Model.pdb new file mode 100644 index 00000000..7daf1b2d Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Model.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Script.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Script.dll new file mode 100644 index 00000000..0afecbd3 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Script.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Script.pdb b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Script.pdb new file mode 100644 index 00000000..4e5727ce Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharp.Script.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.deps.json b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.deps.json new file mode 100644 index 00000000..d491ae8f --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.deps.json @@ -0,0 +1,348 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharpDebug/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Generator": "1.0.0", + "StgSharp.Model": "1.0.0", + "StgSharp.Script": "1.0.0", + "System.Collections.Concurrent": "4.3.0" + }, + "runtime": { + "StgSharpDebug.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "Microsoft.NETCore.Targets/1.1.0": {}, + "System.Collections/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Diagnostics.Debug/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.IO/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Reflection/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {}, + "System.Runtime.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Generator/1.0.0": { + "runtime": { + "StgSharp.Generator.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Model/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "runtime": { + "StgSharp.Model.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharpDebug/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "path": "microsoft.netcore.targets/1.1.0", + "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" + }, + "System.Collections/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "path": "system.collections/4.3.0", + "hashPath": "system.collections.4.3.0.nupkg.sha512" + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "path": "system.collections.concurrent/4.3.0", + "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "path": "system.diagnostics.debug/4.3.0", + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "path": "system.diagnostics.tracing/4.3.0", + "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" + }, + "System.Globalization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "path": "system.globalization/4.3.0", + "hashPath": "system.globalization.4.3.0.nupkg.sha512" + }, + "System.IO/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "path": "system.io/4.3.0", + "hashPath": "system.io.4.3.0.nupkg.sha512" + }, + "System.Reflection/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "path": "system.reflection/4.3.0", + "hashPath": "system.reflection.4.3.0.nupkg.sha512" + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "path": "system.reflection.primitives/4.3.0", + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "path": "system.resources.resourcemanager/4.3.0", + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" + }, + "System.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "path": "system.runtime/4.3.0", + "hashPath": "system.runtime.4.3.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "path": "system.runtime.extensions/4.3.0", + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "path": "system.text.encoding/4.3.0", + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" + }, + "System.Threading/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "path": "system.threading/4.3.0", + "hashPath": "system.threading.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "path": "system.threading.tasks/4.3.0", + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Generator/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.dll new file mode 100644 index 00000000..900fd745 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.exe b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.exe new file mode 100644 index 00000000..58aa52fc Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.exe differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.pdb b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.pdb new file mode 100644 index 00000000..5e740cd0 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.runtimeconfig.json b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.xml b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.xml new file mode 100644 index 00000000..a7750374 --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpDebug.xml @@ -0,0 +1,8 @@ + + + + StgSharpDebug + + + + diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/ColorHelper.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/ColorHelper.dll new file mode 100644 index 00000000..9251e005 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/ColorHelper.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..633a0935 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe new file mode 100644 index 00000000..081260ab Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb new file mode 100644 index 00000000..5e45d0b3 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll new file mode 100644 index 00000000..f008c6bf Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/System.IO.Abstractions.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Terminal.Gui.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Terminal.Gui.dll new file mode 100644 index 00000000..3739678f Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Terminal.Gui.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll new file mode 100644 index 00000000..bc202d87 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll new file mode 100644 index 00000000..ee3ad392 Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll differ diff --git a/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Wcwidth.dll b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Wcwidth.dll new file mode 100644 index 00000000..7c50bbcd Binary files /dev/null and b/StgSharpDebug/bin/x64/Debug/net8.0/StgSharpTerminalDialogue/Wcwidth.dll differ diff --git a/StgSharpDebug/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs b/StgSharpDebug/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs new file mode 100644 index 00000000..ed926950 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] diff --git a/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs new file mode 100644 index 00000000..3afbd352 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfoInputs.cache b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfoInputs.cache new file mode 100644 index 00000000..0cd4db23 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +c7a54cf0c9346b1d2303832f2bdfcd0cc63200860984ee6a3865dcaab5f056d8 diff --git a/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..75c4e946 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net6.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpDebug +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.GlobalUsings.g.cs b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.assets.cache b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.assets.cache new file mode 100644 index 00000000..b5598a00 Binary files /dev/null and b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.assets.cache differ diff --git a/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.csproj.AssemblyReference.cache b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.csproj.AssemblyReference.cache new file mode 100644 index 00000000..b07f4b63 Binary files /dev/null and b/StgSharpDebug/obj/Debug/net6.0/StgSharpDebug.csproj.AssemblyReference.cache differ diff --git a/StgSharpDebug/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharpDebug/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharpDebug/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs new file mode 100644 index 00000000..a81f3255 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.AssemblyInfoInputs.cache b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.AssemblyInfoInputs.cache new file mode 100644 index 00000000..93e8b430 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +861cc9ff367c93a327af39b5055bdc269a75193aa982e56fea3406d53e5a652c diff --git a/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..44bf3d49 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpDebug +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.GlobalUsings.g.cs b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.assets.cache b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.assets.cache new file mode 100644 index 00000000..31260234 Binary files /dev/null and b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.assets.cache differ diff --git a/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.csproj.AssemblyReference.cache b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.csproj.AssemblyReference.cache new file mode 100644 index 00000000..b2f7c860 Binary files /dev/null and b/StgSharpDebug/obj/Debug/net8.0/StgSharpDebug.csproj.AssemblyReference.cache differ diff --git a/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json b/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json new file mode 100644 index 00000000..707c460c --- /dev/null +++ b/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json @@ -0,0 +1,391 @@ +{ + "format": 1, + "restore": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj": {} + }, + "projects": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "projectName": "StgSharp.Generator", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": { + "suppressParent": "All", + "target": "Package", + "version": "[4.12.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "projectName": "StgSharp.Common", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "Microsoft.CSharp": { + "target": "Package", + "version": "[4.7.0, )" + }, + "System.Runtime.CompilerServices.Unsafe": { + "target": "Package", + "version": "[6.1.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "projectName": "StgSharp.Model", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "projectName": "StgSharp.Script", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": { + "target": "Package", + "version": "[8.4.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", + "projectName": "StgSharpDebug", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "System.Collections.Concurrent": { + "target": "Package", + "version": "[4.3.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.g.props b/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.g.props new file mode 100644 index 00000000..7226a4fb --- /dev/null +++ b/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Youmu\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.11.0 + + + + + + \ No newline at end of file diff --git a/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.g.targets b/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.g.targets new file mode 100644 index 00000000..3dc06ef3 --- /dev/null +++ b/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/StgSharpDebug/obj/project.assets.json b/StgSharpDebug/obj/project.assets.json new file mode 100644 index 00000000..05690e11 --- /dev/null +++ b/StgSharpDebug/obj/project.assets.json @@ -0,0 +1,1595 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "compile": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} + } + }, + "System.Collections/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": {} + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.IO/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, + "System.Reflection/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": { + "related": ".xml" + } + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "compile": { + "lib/net7.0/_._": {} + }, + "runtime": { + "lib/net7.0/_._": {} + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Threading/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": { + "related": ".xml" + } + } + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "compile": { + "bin/placeholder/StgSharp.Common.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Common.dll": {} + } + }, + "StgSharp.Generator/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/StgSharp.Generator.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Generator.dll": {} + } + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Model.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Model.dll": {} + } + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "StgSharp.Common": "1.0.0" + }, + "compile": { + "bin/placeholder/StgSharp.Script.dll": {} + }, + "runtime": { + "bin/placeholder/StgSharp.Script.dll": {} + } + } + } + }, + "libraries": { + "CommunityToolkit.HighPerformance/8.4.0": { + "sha512": "flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "type": "package", + "path": "communitytoolkit.highperformance/8.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "License.md", + "ThirdPartyNotices.txt", + "communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "communitytoolkit.highperformance.nuspec", + "lib/net7.0/CommunityToolkit.HighPerformance.dll", + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", + "lib/net7.0/CommunityToolkit.HighPerformance.xml", + "lib/net8.0/CommunityToolkit.HighPerformance.dll", + "lib/net8.0/CommunityToolkit.HighPerformance.pdb", + "lib/net8.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" + ] + }, + "Microsoft.CSharp/4.7.0": { + "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "type": "package", + "path": "microsoft.csharp/4.7.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/Microsoft.CSharp.dll", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.3/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.dll", + "lib/netstandard2.0/Microsoft.CSharp.xml", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "microsoft.csharp.4.7.0.nupkg.sha512", + "microsoft.csharp.nuspec", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/Microsoft.CSharp.dll", + "ref/netcore50/Microsoft.CSharp.xml", + "ref/netcore50/de/Microsoft.CSharp.xml", + "ref/netcore50/es/Microsoft.CSharp.xml", + "ref/netcore50/fr/Microsoft.CSharp.xml", + "ref/netcore50/it/Microsoft.CSharp.xml", + "ref/netcore50/ja/Microsoft.CSharp.xml", + "ref/netcore50/ko/Microsoft.CSharp.xml", + "ref/netcore50/ru/Microsoft.CSharp.xml", + "ref/netcore50/zh-hans/Microsoft.CSharp.xml", + "ref/netcore50/zh-hant/Microsoft.CSharp.xml", + "ref/netcoreapp2.0/_._", + "ref/netstandard1.0/Microsoft.CSharp.dll", + "ref/netstandard1.0/Microsoft.CSharp.xml", + "ref/netstandard1.0/de/Microsoft.CSharp.xml", + "ref/netstandard1.0/es/Microsoft.CSharp.xml", + "ref/netstandard1.0/fr/Microsoft.CSharp.xml", + "ref/netstandard1.0/it/Microsoft.CSharp.xml", + "ref/netstandard1.0/ja/Microsoft.CSharp.xml", + "ref/netstandard1.0/ko/Microsoft.CSharp.xml", + "ref/netstandard1.0/ru/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml", + "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml", + "ref/netstandard2.0/Microsoft.CSharp.dll", + "ref/netstandard2.0/Microsoft.CSharp.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "type": "package", + "path": "microsoft.netcore.platforms/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json" + ] + }, + "Microsoft.NETCore.Targets/1.1.0": { + "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "type": "package", + "path": "microsoft.netcore.targets/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.targets.1.1.0.nupkg.sha512", + "microsoft.netcore.targets.nuspec", + "runtime.json" + ] + }, + "System.Collections/4.3.0": { + "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "type": "package", + "path": "system.collections/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.4.3.0.nupkg.sha512", + "system.collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.3.0": { + "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "type": "package", + "path": "system.collections.concurrent/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.concurrent.4.3.0.nupkg.sha512", + "system.collections.concurrent.nuspec" + ] + }, + "System.Diagnostics.Debug/4.3.0": { + "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "type": "package", + "path": "system.diagnostics.debug/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.debug.4.3.0.nupkg.sha512", + "system.diagnostics.debug.nuspec" + ] + }, + "System.Diagnostics.Tracing/4.3.0": { + "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "type": "package", + "path": "system.diagnostics.tracing/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tracing.4.3.0.nupkg.sha512", + "system.diagnostics.tracing.nuspec" + ] + }, + "System.Globalization/4.3.0": { + "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "type": "package", + "path": "system.globalization/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.4.3.0.nupkg.sha512", + "system.globalization.nuspec" + ] + }, + "System.IO/4.3.0": { + "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "type": "package", + "path": "system.io/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.4.3.0.nupkg.sha512", + "system.io.nuspec" + ] + }, + "System.Reflection/4.3.0": { + "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "type": "package", + "path": "system.reflection/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.4.3.0.nupkg.sha512", + "system.reflection.nuspec" + ] + }, + "System.Reflection.Primitives/4.3.0": { + "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "type": "package", + "path": "system.reflection.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.primitives.4.3.0.nupkg.sha512", + "system.reflection.primitives.nuspec" + ] + }, + "System.Resources.ResourceManager/4.3.0": { + "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "type": "package", + "path": "system.resources.resourcemanager/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.resources.resourcemanager.4.3.0.nupkg.sha512", + "system.resources.resourcemanager.nuspec" + ] + }, + "System.Runtime/4.3.0": { + "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "type": "package", + "path": "system.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.nuspec" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "sha512": "5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net461/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "lib/net462/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net462/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net7.0/_._", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec" + ] + }, + "System.Runtime.Extensions/4.3.0": { + "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "type": "package", + "path": "system.runtime.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.nuspec" + ] + }, + "System.Text.Encoding/4.3.0": { + "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "type": "package", + "path": "system.text.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.4.3.0.nupkg.sha512", + "system.text.encoding.nuspec" + ] + }, + "System.Threading/4.3.0": { + "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "type": "package", + "path": "system.threading/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll", + "system.threading.4.3.0.nupkg.sha512", + "system.threading.nuspec" + ] + }, + "System.Threading.Tasks/4.3.0": { + "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "type": "package", + "path": "system.threading.tasks/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.4.3.0.nupkg.sha512", + "system.threading.tasks.nuspec" + ] + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "path": "../StgSharp.Common/StgSharp.Common.csproj", + "msbuildProject": "../StgSharp.Common/StgSharp.Common.csproj" + }, + "StgSharp.Generator/1.0.0": { + "type": "project", + "path": "../StgSgharp.Generator/StgSharp.Generator.csproj", + "msbuildProject": "../StgSgharp.Generator/StgSharp.Generator.csproj" + }, + "StgSharp.Model/1.0.0": { + "type": "project", + "path": "../StgSharp.Model/StgSharp.Model.csproj", + "msbuildProject": "../StgSharp.Model/StgSharp.Model.csproj" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "path": "../StgSharp.Script/StgSharp.Script.csproj", + "msbuildProject": "../StgSharp.Script/StgSharp.Script.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "StgSharp.Common >= 1.0.0", + "StgSharp.Generator >= 1.0.0", + "StgSharp.Model >= 1.0.0", + "StgSharp.Script >= 1.0.0", + "System.Collections.Concurrent >= 4.3.0" + ] + }, + "packageFolders": { + "C:\\Users\\Youmu\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", + "projectName": "StgSharpDebug", + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", + "packagesPath": "C:\\Users\\Youmu\\.nuget\\packages\\", + "outputPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\Youmu\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "C:\\Program Files\\dotnet\\library-packs": {}, + "D:\\Programmer\\NugetLocal": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSgharp.Generator\\StgSharp.Generator.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Common\\StgSharp.Common.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Model\\StgSharp.Model.csproj" + }, + "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj": { + "projectPath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharp.Script\\StgSharp.Script.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "System.Collections.Concurrent": { + "target": "Package", + "version": "[4.3.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.400/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/obj/project.nuget.cache b/StgSharpDebug/obj/project.nuget.cache new file mode 100644 index 00000000..5234fbff --- /dev/null +++ b/StgSharpDebug/obj/project.nuget.cache @@ -0,0 +1,28 @@ +{ + "version": 2, + "dgSpecHash": "brar3ohGFIk=", + "success": true, + "projectFilePath": "D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\StgSharpDebug\\StgSharpDebug.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Youmu\\.nuget\\packages\\communitytoolkit.highperformance\\8.4.0\\communitytoolkit.highperformance.8.4.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.netcore.platforms\\1.1.0\\microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\microsoft.netcore.targets\\1.1.0\\microsoft.netcore.targets.1.1.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.collections\\4.3.0\\system.collections.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.collections.concurrent\\4.3.0\\system.collections.concurrent.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.diagnostics.debug\\4.3.0\\system.diagnostics.debug.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.diagnostics.tracing\\4.3.0\\system.diagnostics.tracing.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.globalization\\4.3.0\\system.globalization.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.io\\4.3.0\\system.io.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection\\4.3.0\\system.reflection.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.reflection.primitives\\4.3.0\\system.reflection.primitives.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.resources.resourcemanager\\4.3.0\\system.resources.resourcemanager.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime\\4.3.0\\system.runtime.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.1.0\\system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.runtime.extensions\\4.3.0\\system.runtime.extensions.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.text.encoding\\4.3.0\\system.text.encoding.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.threading\\4.3.0\\system.threading.4.3.0.nupkg.sha512", + "C:\\Users\\Youmu\\.nuget\\packages\\system.threading.tasks\\4.3.0\\system.threading.tasks.4.3.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/StgSharpDebug/obj/x64/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs b/StgSharpDebug/obj/x64/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs new file mode 100644 index 00000000..ed926950 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] diff --git a/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.GlobalUsings.g.cs b/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.assets.cache b/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.assets.cache new file mode 100644 index 00000000..f53578a3 Binary files /dev/null and b/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.assets.cache differ diff --git a/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.BuildWithSkipAnalyzers b/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt b/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e69de29b diff --git a/StgSharpDebug/obj/x64/Debug/net6.0/apphost.exe b/StgSharpDebug/obj/x64/Debug/net6.0/apphost.exe new file mode 100644 index 00000000..38c8805c Binary files /dev/null and b/StgSharpDebug/obj/x64/Debug/net6.0/apphost.exe differ diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharpDebug/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharp.D6C465D7.Up2Date b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharp.D6C465D7.Up2Date new file mode 100644 index 00000000..e69de29b diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs new file mode 100644 index 00000000..1dce9e6b --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ccef0de6f686f94da655b0e7d854d0acaf907d04")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfoInputs.cache b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfoInputs.cache new file mode 100644 index 00000000..93e8b430 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +861cc9ff367c93a327af39b5055bdc269a75193aa982e56fea3406d53e5a652c diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..44bf3d49 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpDebug +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.GlobalUsings.g.cs b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.assets.cache b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.assets.cache new file mode 100644 index 00000000..c0e6d2a4 Binary files /dev/null and b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.assets.cache differ diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.AssemblyReference.cache b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.AssemblyReference.cache new file mode 100644 index 00000000..d20c0d28 Binary files /dev/null and b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.AssemblyReference.cache differ diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.BuildWithSkipAnalyzers b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.BuildWithSkipAnalyzers new file mode 100644 index 00000000..e69de29b diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.CoreCompileInputs.cache b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.CoreCompileInputs.cache new file mode 100644 index 00000000..80f8e55c --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +330e9bccd237342f2f07df801b204d9d54f66d971a5f7072b039ff5e72939825 diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.FileListAbsolute.txt b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..bea8f187 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.csproj.FileListAbsolute.txt @@ -0,0 +1,35 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharpDebug.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\awesomeface.png +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\fbo.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\fbo.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\Image1.png +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\main.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\main.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\particle.frag +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\Shader\particle.vert +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharpDebug.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharpDebug.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharpDebug.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharpDebug.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharpDebug.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\CommunityToolkit.HighPerformance.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Generator.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Generator.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Common.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\bin\x64\Debug\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharp.D6C465D7.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\obj\x64\Debug\net8.0\StgSharpDebug.genruntimeconfig.cache diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.dll b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.dll new file mode 100644 index 00000000..900fd745 Binary files /dev/null and b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.dll differ diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.genruntimeconfig.cache b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.genruntimeconfig.cache new file mode 100644 index 00000000..6b8ee2a5 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.genruntimeconfig.cache @@ -0,0 +1 @@ +bf703e4c7b9525bbcea847f25e3ab7655f2f073d9e23026492c04241185efa18 diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.pdb b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.pdb new file mode 100644 index 00000000..5e740cd0 Binary files /dev/null and b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.pdb differ diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json new file mode 100644 index 00000000..5cb7415b --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/c23b640cae59b9ee7dcfd8f026b8970a084ddbd7/*"}} \ No newline at end of file diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.xml b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.xml new file mode 100644 index 00000000..a7750374 --- /dev/null +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.xml @@ -0,0 +1,8 @@ + + + + StgSharpDebug + + + + diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/apphost.exe b/StgSharpDebug/obj/x64/Debug/net8.0/apphost.exe new file mode 100644 index 00000000..58aa52fc Binary files /dev/null and b/StgSharpDebug/obj/x64/Debug/net8.0/apphost.exe differ diff --git a/StgSharpDebug/obj/x64/Release/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs b/StgSharpDebug/obj/x64/Release/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs new file mode 100644 index 00000000..ed926950 --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] diff --git a/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfo.cs new file mode 100644 index 00000000..8b6da536 --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e687473132786f419a48170313782d6779890c3d")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfoInputs.cache b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfoInputs.cache new file mode 100644 index 00000000..c393e784 --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +79436111a4fa0958e5864821cac53f1d8585ab322ba339fcce67e9ceac450f67 diff --git a/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..75c4e946 --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,13 @@ +is_global = true +build_property.TargetFramework = net6.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = StgSharpDebug +build_property.ProjectDir = D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharpDebug\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = diff --git a/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.GlobalUsings.g.cs b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.assets.cache b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.assets.cache new file mode 100644 index 00000000..a4bad289 Binary files /dev/null and b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.assets.cache differ diff --git a/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.csproj.AssemblyReference.cache b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.csproj.AssemblyReference.cache new file mode 100644 index 00000000..02ff346d Binary files /dev/null and b/StgSharpDebug/obj/x64/Release/net6.0/StgSharpDebug.csproj.AssemblyReference.cache differ diff --git a/StgSharpDevelop.sln b/StgSharpDevelop.sln new file mode 100644 index 00000000..7b47e7fd --- /dev/null +++ b/StgSharpDevelop.sln @@ -0,0 +1,117 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32825.248 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Common", "StgSharp.Common\StgSharp.Common.csproj", "{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}" + ProjectSection(ProjectDependencies) = postProject + {20CBFF26-6746-402E-992C-7B643E9423EB} = {20CBFF26-6746-402E-992C-7B643E9423EB} + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharpDebug", "StgSharpDebug\StgSharpDebug.csproj", "{610B992B-BB34-49C3-9993-676C595FC12E}" + ProjectSection(ProjectDependencies) = postProject + {10B5819F-2A62-41B6-980A-EB9E76A0E95C} = {10B5819F-2A62-41B6-980A-EB9E76A0E95C} + {20CBFF26-6746-402E-992C-7B643E9423EB} = {20CBFF26-6746-402E-992C-7B643E9423EB} + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} = {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StgSharp.C", "StgSharp.C\StgSharpC.vcxproj", "{20CBFF26-6746-402E-992C-7B643E9423EB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0961B2BE-415C-45EA-8607-5B83623B2EF7}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.TerminalDialogue", "StgSharp.TerminalDialogue\StgSharp.TerminalDialogue.csproj", "{10B5819F-2A62-41B6-980A-EB9E76A0E95C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Script", "StgSharp.Script\StgSharp.Script.csproj", "{5B51F5EA-138C-46B5-B36F-1D389968B6CF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharpTest", "STgSharpTest\StgSharpTest.csproj", "{A74EABDE-B94D-4F8B-9305-F9D3850D4C70}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Generator", "StgSgharp.Generator\StgSharp.Generator.csproj", "{9A678884-081A-4E28-8439-B08F4BC05791}" + ProjectSection(ProjectDependencies) = postProject + {20CBFF26-6746-402E-992C-7B643E9423EB} = {20CBFF26-6746-402E-992C-7B643E9423EB} + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} = {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Model", "StgSharp.Model\StgSharp.Model.csproj", "{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.ActiveCfg = Debug|x64 + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.Build.0 = Debug|x64 + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|Any CPU.Build.0 = Release|Any CPU + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x64.ActiveCfg = Release|x64 + {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x64.Build.0 = Release|x64 + {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|Any CPU.ActiveCfg = Debug|x64 + {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|Any CPU.Build.0 = Debug|x64 + {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x64.ActiveCfg = Debug|x64 + {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x64.Build.0 = Debug|x64 + {610B992B-BB34-49C3-9993-676C595FC12E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {610B992B-BB34-49C3-9993-676C595FC12E}.Release|Any CPU.Build.0 = Release|Any CPU + {610B992B-BB34-49C3-9993-676C595FC12E}.Release|x64.ActiveCfg = Release|x64 + {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|Any CPU.ActiveCfg = Release|x64 + {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|Any CPU.Build.0 = Release|x64 + {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}.Release|Any CPU.ActiveCfg = Release|x64 + {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|Any CPU.Build.0 = Release|x64 + {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x64.ActiveCfg = Release|x64 + {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x64.Build.0 = Release|x64 + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {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}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|Any CPU.Build.0 = Release|Any CPU + {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|Any CPU.ActiveCfg = Debug|Any CPU + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {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}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|Any CPU.Build.0 = Release|Any CPU + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.ActiveCfg = Release|x64 + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.Build.0 = Release|x64 + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x64.ActiveCfg = Debug|x64 + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Debug|x64.Build.0 = Debug|x64 + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|Any CPU.Build.0 = Release|Any CPU + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x64.ActiveCfg = Release|x64 + {A74EABDE-B94D-4F8B-9305-F9D3850D4C70}.Release|x64.Build.0 = Release|x64 + {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.ActiveCfg = Debug|x64 + {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.Build.0 = Debug|x64 + {9A678884-081A-4E28-8439-B08F4BC05791}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9A678884-081A-4E28-8439-B08F4BC05791}.Release|Any CPU.Build.0 = Release|Any CPU + {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.ActiveCfg = Release|x64 + {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.Build.0 = Release|x64 + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {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}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|Any CPU.Build.0 = Release|Any CPU + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.ActiveCfg = Release|x64 + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E13615C2-4C8D-4072-95A1-124440983818} + EndGlobalSection +EndGlobal diff --git a/build/StgSharp.C.bsc b/build/StgSharp.C.bsc new file mode 100644 index 00000000..99252757 Binary files /dev/null and b/build/StgSharp.C.bsc differ diff --git a/build/StgSharp.C.dll b/build/StgSharp.C.dll new file mode 100644 index 00000000..732f3c8b Binary files /dev/null and b/build/StgSharp.C.dll differ diff --git a/build/StgSharp.C.exp b/build/StgSharp.C.exp new file mode 100644 index 00000000..676ba294 Binary files /dev/null and b/build/StgSharp.C.exp differ diff --git a/build/StgSharp.C.lib b/build/StgSharp.C.lib new file mode 100644 index 00000000..8d346e87 Binary files /dev/null and b/build/StgSharp.C.lib differ diff --git a/build/StgSharp.C.pdb b/build/StgSharp.C.pdb new file mode 100644 index 00000000..61700e38 Binary files /dev/null and b/build/StgSharp.C.pdb differ diff --git a/build/StgSharp.Common.deps.json b/build/StgSharp.Common.deps.json new file mode 100644 index 00000000..4c755f05 --- /dev/null +++ b/build/StgSharp.Common.deps.json @@ -0,0 +1,43 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {} + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/build/StgSharp.Common.dll b/build/StgSharp.Common.dll new file mode 100644 index 00000000..5b110a77 Binary files /dev/null and b/build/StgSharp.Common.dll differ diff --git a/build/StgSharp.Common.pdb b/build/StgSharp.Common.pdb new file mode 100644 index 00000000..92d03eb8 Binary files /dev/null and b/build/StgSharp.Common.pdb differ diff --git a/build/StgSharp.Common.xml b/build/StgSharp.Common.xml new file mode 100644 index 00000000..f7f3186f --- /dev/null +++ b/build/StgSharp.Common.xml @@ -0,0 +1,648 @@ + + + + StgSharp.Common + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Determines whether the contains + the specified key. + + The value to locate in the . + + true if the contains an element + with the specified key; otherwise, false. + + + + + Part of a collection. This contains a direct reference to origin collection, + so all change to origin collection will be reflected in this object. + + + + + + CustomizeInit an instance of OpenGL program, This method should be called before any + other StgSharp api. + + + + + Version of current StgSharp platform. Main version represent in hundred's digit, and sub + version represent in ten's digit. + + + + + Write a log message to log file, and mark the _level of this message. + + A string contains information of how current evironment runs. + The severity of current message. + + + + A class contains a sets of methods to serialize several types + + + + + An independent storage area, used as the only folder type in root folder. Contains several + files reference as virtual disc. Data is actually stored in s in certain RAID mode. + + + + + OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. + + + + + OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + [0,1]. + + + + + X position of an enenmy entity + + + + + Y position of an enemy entity + + + + + A sensor used for checking out if a bullet hit a player or something else + + + + + A 2D vector presenting the position of an enemy entity, position can also be visited by + X, Y + + + + + 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + + + + + The origin of this coordinate. + + + + + The horizontial axis of the coordinate. Point to the right direction. + + + + + The vertical axis of the coordinate. Point to the top direction. + + + + + Plain geometry only contains straight sides. + + + + + Calculate movement to center + + CurrentBlueprint time tick + + + + + A square + + + + + A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + vector. + + + + + Orthogonalize two s, let their length be 1 and perpendicular to each + other. + + + + + + + Reurns the value of ArcSin(x) + + The sine value of the angle + + + + + + Get the value of E ^ x; + + + + + + + + + + + Returns the value of ln(x). + + + + + calculate the value of x^y + + + + Returns the value of x^y + + + + returns a random float number between 0 and 1. + + + + + + + + + + + + Generates a random seed in int value. + + + + + + Interface of all kinds OpenGL Buffer objects + + + + + Get the only handle to one of the Object instance + + + + + + + Bind a Buffer instance to OpenGL + + Index of handle of the object in this instance to be bind + + + + + + + Function handler to load an opengl function by searching its _name. + + the _name of the Opengl function + An Intptr value representing the pointer to the function + + + + Hash code of time pixels updated last time. + + + + + A collection of a sets of OpenGL textures. The collection can automatically select one of + the texture with minimum costs to upgrade pixels to Buffer. Usually is used for loading, but not for + target of . + + + + + A collection of handle to Element Buffer Object in OpenglFunc. Each + value indexed from instance of this class this is the only handle to one Element Buffer + Object. + + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. will be set as default target. + + Index of object to be binded in handle set + + + + Bind the frame Buffer object with _name frame Buffer to the frame Buffer target specified + by target. Target of this frame Buffer should be set manually. + + The frame Buffer target of the binding operation. + Index of object to be binded in handle set + + + + Load an to certain texture. + + + + + + + + + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + Data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A of _data to write in + How OpenGL use these _data, defined by + + + + Set _data to current vertex Buffer object + + Type of bufferData + Index to find certain VBO in this instance + A array of _data to write in + How OpenGL use these _data, defined by + + + + Get the function pointer of given OpenGL api _name + + ContextName of the OpenGL api + The funtion pointer of the api in stream of + + + + Load all supported OpenGL APIs and bind them to given . + + The handle to current OpenGL viewPortDisplay + + + + Bind a frame Buffer to a frame Buffer target Same function as glBindFramebuffer. + + The frame Buffer target of the binding operation. + The handle of the frame Buffer object to bind. + + + + Delete a render Buffer object Very simlilar function as glDeleteRenderbuffers. The only + deifference is that this mehtod can only delete one renderbuffer at the same time. + + Handle to Buffer to delete. + + + + Create a set of . + + Amount of EBO to be created. + + + + + Create a sets of + + Amount of textures to be created. + + + + + Create a set of . + + Amount of VAO to be created. + + + + + Create a set of . + + Amount of Object to be created. + + + + + Initialize an opengl context and load all opengl functions. + + + + + Initialize an OpenGl viewPortDisplay if current form has not been binded to any + viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + viewPortDisplay. + + + Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. + + + + + + + + + + + Create an instance of program + + New instance of instance. + + + + Attach one shader code to a shader program. + + Shader program to attach + Index of shader code in current shader code set. + + + + CustomizeInit a program with no shader attached. + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Get a uniform form current shader, the value type of the uniform should be provided. + + ContextName of the Uniform in shader code + + + + + Link the shader to current viewPortDisplay. + + + + + Let the current viewPortDisplay use this shader. + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + Get (TView is ) uniform from a shader. + This uniform will be used as projection matrix of this camera. Additionally, for multi- + shader rendering, each shader requires a uniform, so do not ignore return value of this + method. + + Shader using this camera + ContextName of projection camera named in shader + + (TView is ) representing projection + matrix in shader program. + + + + + Marking the start of current render operations, and set this renser context as current. + + + + + Marking the end of current render operations, and release the binding of this renser + context to current, making it available for another thread as current. + + + + + Get all uniform related to this . + + Shader program requires this camera. + + ContextName of all related uniforms. If you fallow form from + + + + + + An individual thread doing nothing, and its always returns false. + + + + + A sets of complex logic designed for running in multi threads environment. Warning: do not + run a instance in multi threads more than once. + + + + + + + + Reset pipeline has risk, this operation is a direct operation to port in current node, the + port on the other node cannot get the change. + + + + + Only the fallowing occasions of calling are valid: + 1. no bp is running or the only bp is quitting. + 2. calling from the main thread and the current running bp. + + + + + A microsecond-accuracy timer. It will refresh every a certain time span. + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in seconds. + + + + + + + Create a new and define the length of time span. Length + of a single time span is defined in microseconds. + + + + + + + + Time source provider provided in internal framework. + + + + + CustomizeInit this form and render it on screen, and respond with operation + + + + + Height of this form, represent in + + + + + Width of this form, represent in + + + + + Width of this form, represent in + + + + + 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) + + + + + 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 + + + + 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 . + + + + + Get the status of a certain key on the keyboard. + + + representing if a key is pressed or released. + + + + 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. + + + + diff --git a/build/StgSharpTerminalDialogue/ColorHelper.dll b/build/StgSharpTerminalDialogue/ColorHelper.dll new file mode 100644 index 00000000..9251e005 Binary files /dev/null and b/build/StgSharpTerminalDialogue/ColorHelper.dll differ diff --git a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json new file mode 100644 index 00000000..08e44e6f --- /dev/null +++ b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.deps.json @@ -0,0 +1,149 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.TerminalDialogue/1.0.0": { + "dependencies": { + "Terminal.Gui": "2.0.0-v2-develop.2329" + }, + "runtime": { + "StgSharp.TerminalDialogue.dll": {} + } + }, + "ColorHelper/1.8.1": { + "runtime": { + "lib/netstandard2.0/ColorHelper.dll": { + "assemblyVersion": "1.8.1.0", + "fileVersion": "1.8.1.0" + } + } + }, + "System.IO.Abstractions/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22", + "TestableIO.System.IO.Abstractions.Wrappers": "21.0.22" + }, + "runtime": { + "lib/net8.0/System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "System.Text.Encodings.Web/8.0.0": {}, + "System.Text.Json/8.0.4": { + "dependencies": { + "System.Text.Encodings.Web": "8.0.0" + } + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "dependencies": { + "ColorHelper": "1.8.1", + "System.IO.Abstractions": "21.0.22", + "System.Text.Json": "8.0.4", + "Wcwidth": "2.0.0" + }, + "runtime": { + "lib/net8.0/Terminal.Gui.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "dependencies": { + "TestableIO.System.IO.Abstractions": "21.0.22" + }, + "runtime": { + "lib/net8.0/TestableIO.System.IO.Abstractions.Wrappers.dll": { + "assemblyVersion": "21.0.0.0", + "fileVersion": "21.0.22.62509" + } + } + }, + "Wcwidth/2.0.0": { + "runtime": { + "lib/net8.0/Wcwidth.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.TerminalDialogue/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "ColorHelper/1.8.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rblWXd/02TfwJjX53xEfQnbnDRKxCm09VtavV8JaIcmIFWt9efNf6xTQ3WeXgy/she5R31eRTtnizFoUoDrs5w==", + "path": "colorhelper/1.8.1", + "hashPath": "colorhelper.1.8.1.nupkg.sha512" + }, + "System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-DRnFyMIjO1KG9fqUPKV7XDPgECEwrNpsb3OLD0mImViVpRZ5747o7vqrOYbn9AMaQ8eajLeKH0fXQglgH7v42A==", + "path": "system.io.abstractions/21.0.22", + "hashPath": "system.io.abstractions.21.0.22.nupkg.sha512" + }, + "System.Text.Encodings.Web/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yev/k9GHAEGx2Rg3/tU6MQh4HGBXJs70y7j1LaM1i/ER9po+6nnQ6RRqTJn1E7Xu0fbIFK80Nh5EoODxrbxwBQ==", + "path": "system.text.encodings.web/8.0.0", + "hashPath": "system.text.encodings.web.8.0.0.nupkg.sha512" + }, + "System.Text.Json/8.0.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==", + "path": "system.text.json/8.0.4", + "hashPath": "system.text.json.8.0.4.nupkg.sha512" + }, + "Terminal.Gui/2.0.0-v2-develop.2329": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1WRHeZKN5tnF8DUu0vHz5pGZIY9ETwufKbUHCoH3UTcIeOlduhRCpBhTyJWri/fePsUkij2euFMGX2yHfk4h/A==", + "path": "terminal.gui/2.0.0-v2-develop.2329", + "hashPath": "terminal.gui.2.0.0-v2-develop.2329.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yq3I8rUjNoo4JTOT3jbGfTM5VfowaSYiooDO2bfvQe6XGVyZiSIzaKyCmSnuUEyuktw6zzuVE1lJnUeDhJWtyQ==", + "path": "testableio.system.io.abstractions/21.0.22", + "hashPath": "testableio.system.io.abstractions.21.0.22.nupkg.sha512" + }, + "TestableIO.System.IO.Abstractions.Wrappers/21.0.22": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETpw1B6VOsQ5zbfqxqLKjITnMvB9M0K5/bK8qJc6jih+tnlKQmtnnOPSS+OeKCqsZDYeHxPNp4ytQPJS3R+WXA==", + "path": "testableio.system.io.abstractions.wrappers/21.0.22", + "hashPath": "testableio.system.io.abstractions.wrappers.21.0.22.nupkg.sha512" + }, + "Wcwidth/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eGZYH/V+X1DwEXrPUlUcAp8pU5a38d8IvaQzq4pclJxF1x8bizssIo4uWc3qxmS64BNGK5WnDxyBYJz84+Msqg==", + "path": "wcwidth/2.0.0", + "hashPath": "wcwidth.2.0.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll new file mode 100644 index 00000000..633a0935 Binary files /dev/null and b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.dll differ diff --git a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe new file mode 100644 index 00000000..081260ab Binary files /dev/null and b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.exe differ diff --git a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb new file mode 100644 index 00000000..5e45d0b3 Binary files /dev/null and b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.pdb differ diff --git a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json new file mode 100644 index 00000000..becfaeac --- /dev/null +++ b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/build/StgSharpTerminalDialogue/System.IO.Abstractions.dll b/build/StgSharpTerminalDialogue/System.IO.Abstractions.dll new file mode 100644 index 00000000..f008c6bf Binary files /dev/null and b/build/StgSharpTerminalDialogue/System.IO.Abstractions.dll differ diff --git a/build/StgSharpTerminalDialogue/Terminal.Gui.dll b/build/StgSharpTerminalDialogue/Terminal.Gui.dll new file mode 100644 index 00000000..3739678f Binary files /dev/null and b/build/StgSharpTerminalDialogue/Terminal.Gui.dll differ diff --git a/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll b/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll new file mode 100644 index 00000000..bc202d87 Binary files /dev/null and b/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.Wrappers.dll differ diff --git a/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll b/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll new file mode 100644 index 00000000..ee3ad392 Binary files /dev/null and b/build/StgSharpTerminalDialogue/TestableIO.System.IO.Abstractions.dll differ diff --git a/build/StgSharpTerminalDialogue/Wcwidth.dll b/build/StgSharpTerminalDialogue/Wcwidth.dll new file mode 100644 index 00000000..7c50bbcd Binary files /dev/null and b/build/StgSharpTerminalDialogue/Wcwidth.dll differ diff --git a/cache.txt b/cache.txt new file mode 100644 index 00000000..c5e7fe66 --- /dev/null +++ b/cache.txt @@ -0,0 +1,9 @@ +public const uint GL_ACTIVE_SUBROUTINES = 0x8DE5 +public const uint GL_ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6 +public const uint GL_MAX_SUBROUTINES = 0x8DE7 +public const uint GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8 +public const uint GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47 +public const uint GL_ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48 +public const uint GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49 +public const uint GL_NUM_COMPATIBLE_SUBROUTINES = 0x8E4A +public const uint GL_COMPATIBLE_SUBROUTINES = 0x8E4B \ No newline at end of file diff --git a/errorIDarrange.xlsx b/errorIDarrange.xlsx new file mode 100644 index 00000000..fbb6e0b7 Binary files /dev/null and b/errorIDarrange.xlsx differ