- Visual Chart Diff
- Metadata
- Deleted
- Added
- Modified
- TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun
- std::__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash,std::equal_to,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to,std::hash,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>::erase
- TDescriptorSource::CopyAllDescriptorsInternal
- TGlyphComposer::ComposeGlyphs
- OTL::GCommon::GetFeatureVariationsTable
- TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun
- OTL::GCommon::IterateScriptTables
- EnumerateKnownUrduSequencesInString
- TDescriptorSource::IsOnlySearchableAttributeInRequest
- TDescriptorSource::CopyDescriptorsForRequest
- TDescriptorSource::AddSystemVisibleFontDescriptors
- TAATMorphSubtableMorx::Process
- OTL::GCommon::IgnoreScriptAnalysis
- TDescriptorSource::CopySplicedDescriptorsForRequest
- TOpenTypePositioningEngine::PositionRuns
- TAttributes::ApplyFont
- OTL::GPOS::ApplyPairPosAccelerated
- CopySecondaryScaleRecipeInternal
- FUN_183418d94
- FUN_183417830
- FUN_1834146f8
- FUN_183414430
- FUN_1834163e0
- FUN_183416114
- FUN_183415b1c
- FUN_1834192c4
- ___swift_instantiateConcreteTypeFromMangledNameV2
- FUN_183415e50
- ___swift_instantiateConcreteTypeFromMangledNameAbstractV2
- FUN_1834199bc
- ZeroMarkWidths
- TCFMutableDictionary::TCFMutableDictionary
- Modified (No Code Changes)
flowchart LR
TAATKerxEngineKerxOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-old<--Match 98%-->TAATKerxEngineKerxOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-new
std__hash_tablestd__hash_value_typelongCGPointstd__unordered_map_hasherlongstd__hash_value_typelongCGPointstdhashlongstdequal_tolongtruestd__unordered_map_equallongstd__hash_value_typelongCGPointstdequal_tolongstdhashlongtruestdallocatorstd__hash_value_typelongCGPointerase-2-old<--Match 99%-->std__hash_tablestd__hash_value_typelongCGPointstd__unordered_map_hasherlongstd__hash_value_typelongCGPointstdhashlongstdequal_tolongtruestd__unordered_map_equallongstd__hash_value_typelongCGPointstdequal_tolongstdhashlongtruestdallocatorstd__hash_value_typelongCGPointerase-2-new
TDescriptorSourceCopyAllDescriptorsInternal-2-old<--Match 96%-->TDescriptorSourceCopyAllDescriptorsInternal-2-new
TGlyphComposerComposeGlyphs-3-old<--Match 90%-->TGlyphComposerComposeGlyphs-3-new
OTLGCommonGetFeatureVariationsTable-2-old<--Match 76%-->OTLGCommonGetFeatureVariationsTable-2-new
TAATKernEngineKernOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-old<--Match 98%-->TAATKernEngineKernOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-new
OTLGCommonIterateScriptTables-3-old<--Match 88%-->OTLGCommonIterateScriptTables-3-new
EnumerateKnownUrduSequencesInString-4-old<--Match 25%-->EnumerateKnownUrduSequencesInString-4-new
TDescriptorSourceIsOnlySearchableAttributeInRequest-2-old<--Match 74%-->TDescriptorSourceIsOnlySearchableAttributeInRequest-2-new
TDescriptorSourceCopyDescriptorsForRequest-6-old<--Match 99%-->TDescriptorSourceCopyDescriptorsForRequest-6-new
TDescriptorSourceAddSystemVisibleFontDescriptors-3-old<--Match 90%-->TDescriptorSourceAddSystemVisibleFontDescriptors-3-new
TAATMorphSubtableMorxProcess-2-old<--Match 98%-->TAATMorphSubtableMorxProcess-2-new
OTLGCommonIgnoreScriptAnalysis-2-old<--Match 95%-->OTLGCommonIgnoreScriptAnalysis-2-new
TDescriptorSourceCopySplicedDescriptorsForRequest-7-old<--Match 50%-->TDescriptorSourceCopySplicedDescriptorsForRequest-7-new
TOpenTypePositioningEnginePositionRuns-3-old<--Match 88%-->TOpenTypePositioningEnginePositionRuns-3-new
TAttributesApplyFont-5-old<--Match 99%-->TAttributesApplyFont-5-new
OTLGPOSApplyPairPosAccelerated-4-old<--Match 91%-->OTLGPOSApplyPairPosAccelerated-4-new
CopySecondaryScaleRecipeInternal-4-old<--Match 85%-->CopySecondaryScaleRecipeInternal-4-new
FUN_183418d94-0-old<--Match 81%-->FUN_1833efa88-0-new
FUN_183417830-0-old<--Match 98%-->FUN_1833ee558-0-new
FUN_1834146f8-0-old<--Match 99%-->FUN_1833eb474-0-new
FUN_183414430-0-old<--Match 99%-->FUN_1833eb1b0-0-new
FUN_1834163e0-0-old<--Match 57%-->FUN_1833ed134-0-new
FUN_183416114-0-old<--Match 98%-->FUN_1833ece6c-0-new
FUN_183415b1c-0-old<--Match 96%-->FUN_1833ec888-0-new
FUN_1834192c4-0-old<--Match 68%-->FUN_1833effa8-0-new
CoreText_26_1<--7ommited-->CoreText_26_0_1
subgraph CoreText_26_0_1
TAATKerxEngineKerxOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-new
std__hash_tablestd__hash_value_typelongCGPointstd__unordered_map_hasherlongstd__hash_value_typelongCGPointstdhashlongstdequal_tolongtruestd__unordered_map_equallongstd__hash_value_typelongCGPointstdequal_tolongstdhashlongtruestdallocatorstd__hash_value_typelongCGPointerase-2-new
TDescriptorSourceCopyAllDescriptorsInternal-2-new
TGlyphComposerComposeGlyphs-3-new
OTLGCommonGetFeatureVariationsTable-2-new
TAATKernEngineKernOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-new
OTLGCommonIterateScriptTables-3-new
EnumerateKnownUrduSequencesInString-4-new
TDescriptorSourceIsOnlySearchableAttributeInRequest-2-new
TDescriptorSourceCopyDescriptorsForRequest-6-new
TDescriptorSourceAddSystemVisibleFontDescriptors-3-new
TAATMorphSubtableMorxProcess-2-new
OTLGCommonIgnoreScriptAnalysis-2-new
TDescriptorSourceCopySplicedDescriptorsForRequest-7-new
TOpenTypePositioningEnginePositionRuns-3-new
TAttributesApplyFont-5-new
OTLGPOSApplyPairPosAccelerated-4-new
CopySecondaryScaleRecipeInternal-4-new
FUN_1833efa88-0-new
FUN_1833ee558-0-new
FUN_1833eb474-0-new
FUN_1833eb1b0-0-new
FUN_1833ed134-0-new
FUN_1833ece6c-0-new
FUN_1833ec888-0-new
FUN_1833effa8-0-new
subgraph Added
direction LR
ZeroCombiningMarkWidths
FUN_1833ec6e8
FUN_1833ec7d4
FUN_1833ec90c
FUN_1833ef554
FUN_1833ef640
FUN_1833ef798
SoftLinked__ISEnumerateKnownUrduSequencesInString
end
end
subgraph CoreText_26_1
TAATKerxEngineKerxOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-old
std__hash_tablestd__hash_value_typelongCGPointstd__unordered_map_hasherlongstd__hash_value_typelongCGPointstdhashlongstdequal_tolongtruestd__unordered_map_equallongstd__hash_value_typelongCGPointstdequal_tolongstdhashlongtruestdallocatorstd__hash_value_typelongCGPointerase-2-old
TDescriptorSourceCopyAllDescriptorsInternal-2-old
TGlyphComposerComposeGlyphs-3-old
OTLGCommonGetFeatureVariationsTable-2-old
TAATKernEngineKernOrderedListProcessGlyphsTTRunGlueTGlyphInSingleRun-2-old
OTLGCommonIterateScriptTables-3-old
EnumerateKnownUrduSequencesInString-4-old
TDescriptorSourceIsOnlySearchableAttributeInRequest-2-old
TDescriptorSourceCopyDescriptorsForRequest-6-old
TDescriptorSourceAddSystemVisibleFontDescriptors-3-old
TAATMorphSubtableMorxProcess-2-old
OTLGCommonIgnoreScriptAnalysis-2-old
TDescriptorSourceCopySplicedDescriptorsForRequest-7-old
TOpenTypePositioningEnginePositionRuns-3-old
TAttributesApplyFont-5-old
OTLGPOSApplyPairPosAccelerated-4-old
CopySecondaryScaleRecipeInternal-4-old
FUN_183418d94-0-old
FUN_183417830-0-old
FUN_1834146f8-0-old
FUN_183414430-0-old
FUN_1834163e0-0-old
FUN_183416114-0-old
FUN_183415b1c-0-old
FUN_1834192c4-0-old
subgraph Deleted
direction LR
FUN_18341596c
FUN_183415a60
FUN_183415ba8
FUN_183418848
FUN_18341893c
FUN_183418a9c
GetNextUrduSequenceFromString__CFString_constCFRangebool-_0-operator
ZeroMarkWidths
ZeroMarkWidthsTRunGlueOTL-GDEF_const-_0-__invokevoidTRunGlue-TGlyph
end
end
pie showData
title Function Matches - 99.8892%
"unmatched_funcs_len" : 17
"matched_funcs_len" : 15322
pie showData
title Matched Function Similarity - 99.5888%
"matched_funcs_with_code_changes_len" : 32
"matched_funcs_with_non_code_changes_len" : 31
"matched_funcs_no_changes_len" : 15259
ghidriff --project-location ghidra_projects --project-name ghidriff --symbols-path symbols --gzfs-path gzfs --threaded --log-level INFO --file-log-level INFO --log-path ghidriff.log --min-func-len 10 --gdt [] --bsim --max-ram-percent 60.0 --max-section-funcs 200 CoreText_26_1 CoreText_26_0_1
Details
--old ['CoreText_26_1'] --new [['CoreText_26_0_1']] --engine VersionTrackingDiff --output-path ghidriffs --summary False --project-location ghidra_projects --project-name ghidriff --symbols-path symbols --gzfs-path gzfs --base-address None --program-options None --threaded True --force-analysis False --force-diff False --no-symbols False --log-level INFO --file-log-level INFO --log-path ghidriff.log --va False --min-func-len 10 --use-calling-counts False --gdt [] --bsim True --bsim-full False --max-ram-percent 60.0 --print-flags False --jvm-args None --side-by-side False --max-section-funcs 200 --md-title None
--- CoreText_26_1 Meta
+++ CoreText_26_0_1 Meta
@@ -1,65 +1,65 @@
-Program Name: CoreText_26_1
+Program Name: CoreText_26_0_1
Language ID: AARCH64:LE:64:AppleSilicon (1.5)
Compiler ID: swift
Processor: AARCH64
Endian: Little
Address Size: 64
-Minimum Address: 1833b3000
-Maximum Address: 1ff9cd697
-# of Bytes: 3374092
+Minimum Address: 183389000
+Maximum Address: 1ff9c0697
+# of Bytes: 3368076
# of Memory Blocks: 64
-# of Instructions: 386075
-# of Defined Data: 35427
-# of Functions: 7670
-# of Symbols: 49941
-# of Data Types: 1515
-# of Data Type Categories: 167
+# of Instructions: 385848
+# of Defined Data: 35405
+# of Functions: 7669
+# of Symbols: 49944
+# of Data Types: 1513
+# of Data Type Categories: 166
Analyzed: true
Created With Ghidra Version: 12.0
-Date Created: Fri Dec 19 20:07:17 MSK 2025
+Date Created: Fri Dec 19 20:07:19 MSK 2025
Executable Format: Mac OS X Mach-O
-Executable Location: /Users/mikhail/Desktop/crtxt/CoreText_26_1
-Executable MD5: 0f122f52fadd80771406e7f601235d39
-Executable SHA256: 5a54df0f50c82e3a955f062b4965d06833903af267106aeeac179e0b84df2b6e
-FSRL: file:///Users/mikhail/Desktop/crtxt/CoreText_26_1?MD5=0f122f52fadd80771406e7f601235d39
+Executable Location: /Users/mikhail/Desktop/crtxt/CoreText_26_0_1
+Executable MD5: 500c573a6c7e86a4892a2de9decc771b
+Executable SHA256: 88852840bc893e033a58ebafefaac83446668898005054272204470a444044f0
+FSRL: file:///Users/mikhail/Desktop/crtxt/CoreText_26_0_1?MD5=500c573a6c7e86a4892a2de9decc771b
Mach-O File Type: DYLIB
Mach-O File Type Description: Dynamically Bound Shared Library
Mach-O Flag 0: NOUNDEFS
Mach-O Flag 1: DYLDLINK
Mach-O Flag 2: TWOLEVEL
Mach-O Flag 3: BINDS_TO_WEAK
Mach-O Flag 4: NO_REEXPORTED_DYLIBS
Mach-O Flag 5: APP_EXTENSION_SAFE
Mach-O Flag 6: NLIST_OUTOFSYNC_WITH_DYLDINFO
Preferred Root Namespace Category: /Demangler
Relocatable: true
Required Library [ 0]: /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport
Required Library [ 1]: /System/Library/PrivateFrameworks/MobileAsset.framework/Versions/A/MobileAsset
Required Library [ 2]: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
Required Library [ 3]: /System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices
Required Library [ 4]: /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
Required Library [ 5]: /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
Required Library [ 6]: /usr/lib/libcompression.dylib
Required Library [ 7]: /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
Required Library [ 8]: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
Required Library [ 9]: /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
Required Library [ 10]: /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
Required Library [ 11]: /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
Required Library [ 12]: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Required Library [ 13]: /usr/lib/libicucore.A.dylib
Required Library [ 14]: /usr/lib/libobjc.A.dylib
Required Library [ 15]: /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib
Required Library [ 16]: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
Required Library [ 17]: /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking
Required Library [ 18]: /usr/lib/libc++.1.dylib
Required Library [ 19]: /usr/lib/libSystem.B.dylib
Required Library [ 20]: /usr/lib/swift/libswiftCore.dylib
Required Library [ 21]: /usr/lib/swift/libswiftCoreFoundation.dylib
Required Library [ 22]: /usr/lib/swift/libswiftDispatch.dylib
Required Library [ 23]: /usr/lib/swift/libswiftIOKit.dylib
Required Library [ 24]: /usr/lib/swift/libswiftObjectiveC.dylib
Required Library [ 25]: /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib
Required Library [ 26]: /usr/lib/swift/libswiftXPC.dylib
Required Library [ 27]: /usr/lib/swift/libswift_Builtin_float.dylib
Required Library [ 28]: /usr/lib/swift/libswiftos.dylib
Should Ask To Analyze: false
Ghidra CoreText_26_1 Decompiler Options
| Decompiler Option | Value |
|---|---|
| Prototype Evaluation | __swiftcall |
Ghidra CoreText_26_1 Specification extensions Options
| Specification extensions Option | Value |
|---|---|
| FormatVersion | 0 |
| VersionCounter | 0 |
Ghidra CoreText_26_1 Analyzers Options
| Analyzers Option | Value |
|---|---|
| AARCH64 ELF PLT Thunks | true |
| ASCII Strings | true |
| ASCII Strings.Create Strings Containing Existing Strings | true |
| ASCII Strings.Create Strings Containing References | true |
| ASCII Strings.Force Model Reload | false |
| ASCII Strings.Minimum String Length | LEN_5 |
| ASCII Strings.Model File | StringModel.sng |
| ASCII Strings.Require Null Termination for String | true |
| ASCII Strings.Search Only in Accessible Memory Blocks | true |
| ASCII Strings.String Start Alignment | ALIGN_1 |
| ASCII Strings.String end alignment | 4 |
| Aggressive Instruction Finder | false |
| Aggressive Instruction Finder.Create Analysis Bookmarks | true |
| Apply Data Archives | true |
| Apply Data Archives.Archive Chooser | [Auto-Detect] |
| Apply Data Archives.Create Analysis Bookmarks | true |
| Apply Data Archives.GDT User File Archive Path | None |
| Apply Data Archives.User Project Archive Path | None |
| Basic Constant Reference Analyzer | true |
| Basic Constant Reference Analyzer.Create Data from pointer | false |
| Basic Constant Reference Analyzer.Function parameter/return Pointer analysis | true |
| Basic Constant Reference Analyzer.Max Threads | 2 |
| Basic Constant Reference Analyzer.Min absolute reference | 4 |
| Basic Constant Reference Analyzer.Require pointer param data type | false |
| Basic Constant Reference Analyzer.Speculative reference max | 512 |
| Basic Constant Reference Analyzer.Speculative reference min | 1024 |
| Basic Constant Reference Analyzer.Stored Value Pointer analysis | true |
| Basic Constant Reference Analyzer.Trust values read from writable memory | true |
| CFStrings | true |
| Call Convention ID | true |
| Call Convention ID.Analysis Decompiler Timeout (sec) | 60 |
| Call-Fixup Installer | true |
| Condense Filler Bytes | false |
| Condense Filler Bytes.Filler Value | Auto |
| Condense Filler Bytes.Minimum number of sequential bytes | 1 |
| Create Address Tables | true |
| Create Address Tables.Allow Offcut References | false |
| Create Address Tables.Auto Label Table | false |
| Create Address Tables.Create Analysis Bookmarks | true |
| Create Address Tables.Maxmimum Pointer Distance | 16777215 |
| Create Address Tables.Minimum Pointer Address | 4132 |
| Create Address Tables.Minimum Table Size | 2 |
| Create Address Tables.Pointer Alignment | 1 |
| Create Address Tables.Relocation Table Guide | true |
| Create Address Tables.Table Alignment | 4 |
| Data Reference | true |
| Data Reference.Address Table Alignment | 1 |
| Data Reference.Address Table Minimum Size | 2 |
| Data Reference.Align End of Strings | false |
| Data Reference.Ascii String References | true |
| Data Reference.Create Address Tables | false |
| Data Reference.Minimum String Length | 5 |
| Data Reference.References to Pointers | true |
| Data Reference.Relocation Table Guide | true |
| Data Reference.Respect Execute Flag | true |
| Data Reference.Subroutine References | true |
| Data Reference.Switch Table References | false |
| Data Reference.Unicode String References | true |
| Decompiler Parameter ID | false |
| Decompiler Parameter ID.Analysis Clear Level | ANALYSIS |
| Decompiler Parameter ID.Analysis Decompiler Timeout (sec) | 60 |
| Decompiler Parameter ID.Commit Data Types | true |
| Decompiler Parameter ID.Commit Void Return Values | false |
| Decompiler Parameter ID.Prototype Evaluation | __swiftcall |
| Decompiler Switch Analysis | true |
| Decompiler Switch Analysis.Analysis Decompiler Timeout (sec) | 60 |
| Demangler GNU | true |
| Demangler GNU.Apply Function Calling Conventions | true |
| Demangler GNU.Apply Function Signatures | true |
| Demangler GNU.Demangle Only Known Mangled Symbols | false |
| Demangler GNU.Demangler Format | AUTO |
| Demangler GNU.Use Deprecated Demangler | false |
| Demangler GNU.Use Standard Text Replacements | true |
| Demangler Swift | true |
| Demangler Swift.Swift binary directory | None |
| Demangler Swift.Use incomplete demangle label prefix ($) | true |
| Demangler Swift.Use unsupported demangle label prefix ($$) | true |
| Disassemble Entry Points | true |
| Disassemble Entry Points.Respect Execute Flag | true |
| Embedded Media | true |
| Embedded Media.Create Analysis Bookmarks | true |
| External Entry References | true |
| External Symbol Resolver | true |
| Function ID | true |
| Function ID.Always Apply FID Labels | false |
| Function ID.Create Analysis Bookmarks | true |
| Function ID.Instruction Count Threshold | 14.6 |
| Function ID.Multiple Match Threshold | 30.0 |
| Function Start Search | true |
| Function Start Search After Code | true |
| Function Start Search After Code.Bookmark Functions | false |
| Function Start Search After Code.Search Data Blocks | false |
| Function Start Search After Data | true |
| Function Start Search After Data.Bookmark Functions | false |
| Function Start Search After Data.Search Data Blocks | false |
| Function Start Search.Bookmark Functions | false |
| Function Start Search.Search Data Blocks | false |
| Mach-O Function Starts | true |
| Mach-O Function Starts.Bookmark failed functions | false |
| Mach-O Function Starts.Bookmark new functions | false |
| Mach-O Function Starts.Bookmark skipped functions | false |
| Mach-O Function Starts.Use PseudoDisassembler | true |
| Non-Returning Functions - Discovered | true |
| Non-Returning Functions - Discovered.Create Analysis Bookmarks | true |
| Non-Returning Functions - Discovered.Function Non-return Threshold | 3 |
| Non-Returning Functions - Discovered.Repair Flow Damage | true |
| Non-Returning Functions - Known | true |
| Non-Returning Functions - Known.Create Analysis Bookmarks | true |
| Objective-C 2 Class | true |
| Objective-C 2 Decompiler Message | true |
| Objective-C 2 Message | false |
| Reference | true |
| Reference.Address Table Alignment | 1 |
| Reference.Address Table Minimum Size | 2 |
| Reference.Align End of Strings | false |
| Reference.Ascii String References | true |
| Reference.Create Address Tables | false |
| Reference.Minimum String Length | 5 |
| Reference.References to Pointers | true |
| Reference.Relocation Table Guide | true |
| Reference.Respect Execute Flag | true |
| Reference.Subroutine References | true |
| Reference.Switch Table References | false |
| Reference.Unicode String References | true |
| Scalar Operand References | false |
| Scalar Operand References.Relocation Table Guide | true |
| Shared Return Calls | true |
| Shared Return Calls.Allow Conditional Jumps | false |
| Shared Return Calls.Assume Contiguous Functions Only | true |
| Stack | true |
| Stack.Create Local Variables | true |
| Stack.Create Param Variables | false |
| Stack.Max Threads | 2 |
| Subroutine References | true |
| Subroutine References.Create Thunks Early | true |
| Swift Type Metadata Analyzer | true |
| Variadic Function Signature Override | false |
| Variadic Function Signature Override.Create Analysis Bookmarks | false |
Ghidra CoreText_26_0_1 Decompiler Options
| Decompiler Option | Value |
|---|---|
| Prototype Evaluation | __swiftcall |
Ghidra CoreText_26_0_1 Specification extensions Options
| Specification extensions Option | Value |
|---|---|
| FormatVersion | 0 |
| VersionCounter | 0 |
Ghidra CoreText_26_0_1 Analyzers Options
| Analyzers Option | Value |
|---|---|
| AARCH64 ELF PLT Thunks | true |
| ASCII Strings | true |
| ASCII Strings.Create Strings Containing Existing Strings | true |
| ASCII Strings.Create Strings Containing References | true |
| ASCII Strings.Force Model Reload | false |
| ASCII Strings.Minimum String Length | LEN_5 |
| ASCII Strings.Model File | StringModel.sng |
| ASCII Strings.Require Null Termination for String | true |
| ASCII Strings.Search Only in Accessible Memory Blocks | true |
| ASCII Strings.String Start Alignment | ALIGN_1 |
| ASCII Strings.String end alignment | 4 |
| Aggressive Instruction Finder | false |
| Aggressive Instruction Finder.Create Analysis Bookmarks | true |
| Apply Data Archives | true |
| Apply Data Archives.Archive Chooser | [Auto-Detect] |
| Apply Data Archives.Create Analysis Bookmarks | true |
| Apply Data Archives.GDT User File Archive Path | None |
| Apply Data Archives.User Project Archive Path | None |
| Basic Constant Reference Analyzer | true |
| Basic Constant Reference Analyzer.Create Data from pointer | false |
| Basic Constant Reference Analyzer.Function parameter/return Pointer analysis | true |
| Basic Constant Reference Analyzer.Max Threads | 2 |
| Basic Constant Reference Analyzer.Min absolute reference | 4 |
| Basic Constant Reference Analyzer.Require pointer param data type | false |
| Basic Constant Reference Analyzer.Speculative reference max | 512 |
| Basic Constant Reference Analyzer.Speculative reference min | 1024 |
| Basic Constant Reference Analyzer.Stored Value Pointer analysis | true |
| Basic Constant Reference Analyzer.Trust values read from writable memory | true |
| CFStrings | true |
| Call Convention ID | true |
| Call Convention ID.Analysis Decompiler Timeout (sec) | 60 |
| Call-Fixup Installer | true |
| Condense Filler Bytes | false |
| Condense Filler Bytes.Filler Value | Auto |
| Condense Filler Bytes.Minimum number of sequential bytes | 1 |
| Create Address Tables | true |
| Create Address Tables.Allow Offcut References | false |
| Create Address Tables.Auto Label Table | false |
| Create Address Tables.Create Analysis Bookmarks | true |
| Create Address Tables.Maxmimum Pointer Distance | 16777215 |
| Create Address Tables.Minimum Pointer Address | 4132 |
| Create Address Tables.Minimum Table Size | 2 |
| Create Address Tables.Pointer Alignment | 1 |
| Create Address Tables.Relocation Table Guide | true |
| Create Address Tables.Table Alignment | 4 |
| Data Reference | true |
| Data Reference.Address Table Alignment | 1 |
| Data Reference.Address Table Minimum Size | 2 |
| Data Reference.Align End of Strings | false |
| Data Reference.Ascii String References | true |
| Data Reference.Create Address Tables | false |
| Data Reference.Minimum String Length | 5 |
| Data Reference.References to Pointers | true |
| Data Reference.Relocation Table Guide | true |
| Data Reference.Respect Execute Flag | true |
| Data Reference.Subroutine References | true |
| Data Reference.Switch Table References | false |
| Data Reference.Unicode String References | true |
| Decompiler Parameter ID | false |
| Decompiler Parameter ID.Analysis Clear Level | ANALYSIS |
| Decompiler Parameter ID.Analysis Decompiler Timeout (sec) | 60 |
| Decompiler Parameter ID.Commit Data Types | true |
| Decompiler Parameter ID.Commit Void Return Values | false |
| Decompiler Parameter ID.Prototype Evaluation | __swiftcall |
| Decompiler Switch Analysis | true |
| Decompiler Switch Analysis.Analysis Decompiler Timeout (sec) | 60 |
| Demangler GNU | true |
| Demangler GNU.Apply Function Calling Conventions | true |
| Demangler GNU.Apply Function Signatures | true |
| Demangler GNU.Demangle Only Known Mangled Symbols | false |
| Demangler GNU.Demangler Format | AUTO |
| Demangler GNU.Use Deprecated Demangler | false |
| Demangler GNU.Use Standard Text Replacements | true |
| Demangler Swift | true |
| Demangler Swift.Swift binary directory | None |
| Demangler Swift.Use incomplete demangle label prefix ($) | true |
| Demangler Swift.Use unsupported demangle label prefix ($$) | true |
| Disassemble Entry Points | true |
| Disassemble Entry Points.Respect Execute Flag | true |
| Embedded Media | true |
| Embedded Media.Create Analysis Bookmarks | true |
| External Entry References | true |
| External Symbol Resolver | true |
| Function ID | true |
| Function ID.Always Apply FID Labels | false |
| Function ID.Create Analysis Bookmarks | true |
| Function ID.Instruction Count Threshold | 14.6 |
| Function ID.Multiple Match Threshold | 30.0 |
| Function Start Search | true |
| Function Start Search After Code | true |
| Function Start Search After Code.Bookmark Functions | false |
| Function Start Search After Code.Search Data Blocks | false |
| Function Start Search After Data | true |
| Function Start Search After Data.Bookmark Functions | false |
| Function Start Search After Data.Search Data Blocks | false |
| Function Start Search.Bookmark Functions | false |
| Function Start Search.Search Data Blocks | false |
| Mach-O Function Starts | true |
| Mach-O Function Starts.Bookmark failed functions | false |
| Mach-O Function Starts.Bookmark new functions | false |
| Mach-O Function Starts.Bookmark skipped functions | false |
| Mach-O Function Starts.Use PseudoDisassembler | true |
| Non-Returning Functions - Discovered | true |
| Non-Returning Functions - Discovered.Create Analysis Bookmarks | true |
| Non-Returning Functions - Discovered.Function Non-return Threshold | 3 |
| Non-Returning Functions - Discovered.Repair Flow Damage | true |
| Non-Returning Functions - Known | true |
| Non-Returning Functions - Known.Create Analysis Bookmarks | true |
| Objective-C 2 Class | true |
| Objective-C 2 Decompiler Message | true |
| Objective-C 2 Message | false |
| Reference | true |
| Reference.Address Table Alignment | 1 |
| Reference.Address Table Minimum Size | 2 |
| Reference.Align End of Strings | false |
| Reference.Ascii String References | true |
| Reference.Create Address Tables | false |
| Reference.Minimum String Length | 5 |
| Reference.References to Pointers | true |
| Reference.Relocation Table Guide | true |
| Reference.Respect Execute Flag | true |
| Reference.Subroutine References | true |
| Reference.Switch Table References | false |
| Reference.Unicode String References | true |
| Scalar Operand References | false |
| Scalar Operand References.Relocation Table Guide | true |
| Shared Return Calls | true |
| Shared Return Calls.Allow Conditional Jumps | false |
| Shared Return Calls.Assume Contiguous Functions Only | true |
| Stack | true |
| Stack.Create Local Variables | true |
| Stack.Create Param Variables | false |
| Stack.Max Threads | 2 |
| Subroutine References | true |
| Subroutine References.Create Thunks Early | true |
| Swift Type Metadata Analyzer | true |
| Variadic Function Signature Override | false |
| Variadic Function Signature Override.Create Analysis Bookmarks | false |
| Stat | Value |
|---|---|
| added_funcs_len | 8 |
| deleted_funcs_len | 9 |
| modified_funcs_len | 63 |
| added_symbols_len | 1 |
| deleted_symbols_len | 1 |
| diff_time | 30.275381088256836 |
| deleted_strings_len | 6 |
| added_strings_len | 5 |
| match_types | Counter({'SymbolsHash': 7060, 'StructuralGraphHash': 4756, 'ExternalsName': 711, 'ExactInstructionsFunctionHasher': 79, 'ExactBytesFunctionHasher': 59, 'BulkBasicBlockMnemonicHash': 58, 'BSIM': 30, 'SigCallingCalledHasher': 29, 'StringsRefsHasher': 10, 'StructuralGraphExactHash': 7, 'Implied Match': 2, 'ExactMnemonicsFunctionHasher': 1}) |
| items_to_process | 82 |
| diff_types | Counter({'address': 63, 'calling': 41, 'refcount': 32, 'code': 32, 'length': 32, 'called': 18, 'sig': 18, 'name': 16, 'fullname': 16}) |
| unmatched_funcs_len | 17 |
| total_funcs_len | 15339 |
| matched_funcs_len | 15322 |
| matched_funcs_with_code_changes_len | 32 |
| matched_funcs_with_non_code_changes_len | 31 |
| matched_funcs_no_changes_len | 15259 |
| match_func_similarity_percent | 99.5888% |
| func_match_overall_percent | 99.8892% |
| first_matches | Counter({'SymbolsHash': 7060, 'StructuralGraphHash': 4756, 'ExactInstructionsFunctionHasher': 79, 'ExactBytesFunctionHasher': 59, 'BulkBasicBlockMnemonicHash': 58, 'SigCallingCalledHasher': 29, 'BSIM': 25, 'StringsRefsHasher': 10, 'StructuralGraphExactHash': 7, 'Implied Match': 2, 'ExactMnemonicsFunctionHasher': 1}) |
pie showData
title All Matches
"SymbolsHash" : 7060
"ExternalsName" : 711
"BSIM" : 30
"ExactBytesFunctionHasher" : 59
"ExactInstructionsFunctionHasher" : 79
"StructuralGraphExactHash" : 7
"ExactMnemonicsFunctionHasher" : 1
"SigCallingCalledHasher" : 29
"StringsRefsHasher" : 10
"StructuralGraphHash" : 4756
"BulkBasicBlockMnemonicHash" : 58
"Implied-Match" : 2
pie showData
title First Matches
"SymbolsHash" : 7060
"ExactBytesFunctionHasher" : 59
"ExactInstructionsFunctionHasher" : 79
"StructuralGraphExactHash" : 7
"ExactMnemonicsFunctionHasher" : 1
"BSIM" : 25
"SigCallingCalledHasher" : 29
"StringsRefsHasher" : 10
"StructuralGraphHash" : 4756
"BulkBasicBlockMnemonicHash" : 58
"Implied-Match" : 2
pie showData
title Diff Stats
"added_funcs_len" : 8
"deleted_funcs_len" : 9
"modified_funcs_len" : 63
pie showData
title Symbols
"added_symbols_len" : 1
"deleted_symbols_len" : 1
pie showData
title Strings
"deleted_strings_len" : 6
"added_strings_len" : 5
--- deleted strings
+++ added strings
@@ -1,6 +1,5 @@
-s___MergedGlobals.161
-s___ZL14ZeroMarkWidthsR8TRunGluePv
-s___ZZL14ZeroMarkWidthsR8TRunGlueR
-s___ZZL23ZeroCombiningMarkWidthsR8
-s___ZZL29GetNextUrduSequenceFromSt
-s_____ZZL29GetNextUrduSequenceFrom
+s___MergedGlobals.163
+s___ZL23ZeroCombiningMarkWidthsR8T
+s___ZL49SoftLinked__ISEnumerateKno
+s___ZN20TCFMutableDictionaryC2EP14
+s_____ZL29GetNextUrduSequenceFromS
| String | Ref Count | Ref Func |
|---|---|---|
| s_____ZZL29GetNextUrduSequenceFrom_1ff97308b | 1 | |
| s___MergedGlobals.161_1ff9bd818 | 1 | |
| s___ZZL29GetNextUrduSequenceFromSt_1ff973009 | 1 | |
| s___ZL14ZeroMarkWidthsR8TRunGluePv_1ff98604b | 1 | |
| s___ZZL14ZeroMarkWidthsR8TRunGlueR_1ff98607e | 1 | |
| s___ZZL23ZeroCombiningMarkWidthsR8_1ff9860fc | 1 |
| String | Ref Count | Ref Func |
|---|---|---|
| s___ZN20TCFMutableDictionaryC2EP14_1ff937391 | 1 | |
| s___ZL23ZeroCombiningMarkWidthsR8T_1ff93fd36 | 1 | |
| s___MergedGlobals.163_1ff9b2a47 | 1 | |
| s_____ZL29GetNextUrduSequenceFromS_1ff96715a | 1 | |
| s___ZL49SoftLinked__ISEnumerateKno_1ff9670aa | 1 |
| Key | CoreText_26_1 |
|---|---|
| name | FUN_18341596c |
| fullname | FUN_18341596c |
| refcount | 3 |
| length | 244 |
| called | FUN_18352f8f0 ___swift_allocate_value_buffer ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_value_buffer |
| calling | |
| paramcount | 0 |
| address | 18341596c |
| sig | undefined FUN_18341596c(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_18341596c
+++ FUN_18341596c
@@ -1,34 +0,0 @@
-
-/* WARNING: Removing unreachable block (ram,0x0001834159f4) */
-/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-
-void FUN_18341596c(void)
-
-{
- undefined4 uVar1;
- code *pcVar2;
- undefined *puVar3;
- long lVar4;
- long lVar5;
- ulong unaff_x30;
-
- puVar3 = &DAT_1eae88d50;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_1eae88d50,&DAT_1835341e0);
- ___swift_allocate_value_buffer();
- ___swift_project_value_buffer(puVar3,&DAT_1eae88d38);
- uVar1 = *_DAT_1e6aebd88;
- lVar4 = 0;
- FUN_18352f8f0();
- lVar5 = *(long *)(lVar4 + -8);
- (**(code **)(lVar5 + 0x68))(puVar3,uVar1,lVar4);
- if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) == 0) {
- /* WARNING: Could not recover jumptable at 0x000183415a5c. Too many branches */
- /* WARNING: Treating indirect jump as call */
- (**(code **)(lVar5 + 0x38))(puVar3,0,1,lVar4);
- return;
- }
- /* WARNING: Does not return */
- pcVar2 = (code *)SoftwareBreakpoint(0xc471,0x183415a54);
- (*pcVar2)();
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | FUN_183415a60 |
| fullname | FUN_183415a60 |
| refcount | 1 |
| length | 132 |
| called | FUN_183415b1c ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 183415a60 |
| sig | undefined FUN_183415a60(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_183415a60
+++ FUN_183415a60
@@ -1,21 +0,0 @@
-
-void FUN_183415a60(void)
-
-{
- code *pcVar1;
- ulong unaff_x30;
-
- if (DAT_1eae88ce0 != -1) {
- _swift_once(&DAT_1eae88ce0,FUN_18341596c);
- }
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_1eae88d50,&DAT_1835341e0);
- ___swift_project_value_buffer();
- if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
- /* WARNING: Does not return */
- pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x183415ac0);
- (*pcVar1)();
- }
- FUN_183415b1c();
- return;
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | FUN_183415ba8 |
| fullname | FUN_183415ba8 |
| refcount | 1 |
| length | 132 |
| called | FUN_183415b1c ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 183415ba8 |
| sig | undefined FUN_183415ba8(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_183415ba8
+++ FUN_183415ba8
@@ -1,21 +0,0 @@
-
-void FUN_183415ba8(void)
-
-{
- code *pcVar1;
- ulong unaff_x30;
-
- if (DAT_1eae88ce0 != -1) {
- _swift_once(&DAT_1eae88ce0,FUN_18341596c);
- }
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_1eae88d50,&DAT_1835341e0);
- ___swift_project_value_buffer();
- if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
- /* WARNING: Does not return */
- pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x183415c08);
- (*pcVar1)();
- }
- FUN_183415b1c();
- return;
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | FUN_183418848 |
| fullname | FUN_183418848 |
| refcount | 3 |
| length | 244 |
| called | FUN_18352f8f0 ___swift_allocate_value_buffer ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_value_buffer |
| calling | |
| paramcount | 0 |
| address | 183418848 |
| sig | undefined FUN_183418848(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_183418848
+++ FUN_183418848
@@ -1,34 +0,0 @@
-
-/* WARNING: Removing unreachable block (ram,0x0001834188d0) */
-/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-
-void FUN_183418848(void)
-
-{
- undefined4 uVar1;
- code *pcVar2;
- undefined *puVar3;
- long lVar4;
- long lVar5;
- ulong unaff_x30;
-
- puVar3 = &DAT_1eae88d50;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_1eae88d50,&DAT_1835341e0);
- ___swift_allocate_value_buffer();
- ___swift_project_value_buffer(puVar3,&DAT_1eae88eb0);
- uVar1 = *_DAT_1e6aebd88;
- lVar4 = 0;
- FUN_18352f8f0();
- lVar5 = *(long *)(lVar4 + -8);
- (**(code **)(lVar5 + 0x68))(puVar3,uVar1,lVar4);
- if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) == 0) {
- /* WARNING: Could not recover jumptable at 0x000183418938. Too many branches */
- /* WARNING: Treating indirect jump as call */
- (**(code **)(lVar5 + 0x38))(puVar3,0,1,lVar4);
- return;
- }
- /* WARNING: Does not return */
- pcVar2 = (code *)SoftwareBreakpoint(0xc471,0x183418930);
- (*pcVar2)();
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | FUN_18341893c |
| fullname | FUN_18341893c |
| refcount | 1 |
| length | 132 |
| called | FUN_183415b1c ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 18341893c |
| sig | undefined FUN_18341893c(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_18341893c
+++ FUN_18341893c
@@ -1,21 +0,0 @@
-
-void FUN_18341893c(void)
-
-{
- code *pcVar1;
- ulong unaff_x30;
-
- if (DAT_1eae88ce8 != -1) {
- _swift_once(&DAT_1eae88ce8,FUN_183418848);
- }
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_1eae88d50,&DAT_1835341e0);
- ___swift_project_value_buffer();
- if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
- /* WARNING: Does not return */
- pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x18341899c);
- (*pcVar1)();
- }
- FUN_183415b1c();
- return;
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | FUN_183418a9c |
| fullname | FUN_183418a9c |
| refcount | 1 |
| length | 132 |
| called | FUN_183415b1c ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 183418a9c |
| sig | undefined FUN_183418a9c(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_183418a9c
+++ FUN_183418a9c
@@ -1,21 +0,0 @@
-
-void FUN_183418a9c(void)
-
-{
- code *pcVar1;
- ulong unaff_x30;
-
- if (DAT_1eae88ce8 != -1) {
- _swift_once(&DAT_1eae88ce8,FUN_183418848);
- }
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_1eae88d50,&DAT_1835341e0);
- ___swift_project_value_buffer();
- if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
- /* WARNING: Does not return */
- pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x183418afc);
- (*pcVar1)();
- }
- FUN_183415b1c();
- return;
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | operator() |
| fullname | GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator() |
| refcount | 3 |
| length | 360 |
| called | __Block_object_dispose _dlerror _objc_msgSend$currentHandler _objc_msgSend$handleFailureInFunction:file:lineNumber:description: _objc_msgSend$stringWithUTF8String: getISEnumerateKnownUrduSequencesInStringSymbolLoc |
| calling | EnumerateKnownUrduSequencesInString |
| paramcount | 1 |
| address | 183480e38 |
| sig | undefined __thiscall operator()($_0 * this) |
| sym_type | Function |
| sym_source | ANALYSIS |
| external | False |
--- GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator()
+++ GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator()
@@ -1,62 +0,0 @@
-
-/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-/* GetNextUrduSequenceFromString(__CFString const*, CFRange, bool)::$_0::TEMPNAMEPLACEHOLDERVALUE()
- const */
-
-undefined1 [16] __thiscall
-GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator()(__0 *this)
-
-{
- undefined8 uVar1;
- undefined1 auVar2 [16];
- code *pcVar3;
- code *in_x0;
- undefined8 uVar4;
- undefined8 uVar5;
- undefined8 local_98;
- undefined8 local_90;
- code *local_88;
- undefined *puStack_80;
- undefined8 *local_78;
- undefined8 local_70;
- undefined8 *local_68;
- undefined8 local_60;
- code *local_58;
- code *local_50;
- char *pcStack_48;
- undefined8 local_40;
- undefined8 uStack_38;
-
- local_78 = &local_70;
- local_70 = 0;
- local_60 = 0x4012000000;
- local_58 = ___Block_byref_object_copy_;
- local_50 = ___Block_byref_object_dispose_;
- pcStack_48 = "";
- local_40 = **(undefined8 **)in_x0;
- uStack_38 = 0;
- uVar5 = **(undefined8 **)(in_x0 + 8);
- uVar4 = **(undefined8 **)(in_x0 + 0x10);
- uVar1 = (*(undefined8 **)(in_x0 + 0x10))[1];
- local_98 = _DAT_1e6b5cd90;
- local_90 = 0xc2000000;
- local_88 = ____ZZL29GetNextUrduSequenceFromStringPK10__CFString7CFRangebENK3__0clEv_block_invoke;
- puStack_80 = &___block_descriptor_40_8_32r_e17_v32__0___qq_8_B24l;
- local_68 = local_78;
- getISEnumerateKnownUrduSequencesInStringSymbolLoc();
- if (in_x0 != (code *)0x0) {
- (*in_x0)(uVar5,uVar4,uVar1,&local_98);
- auVar2 = *(undefined1 (*) [16])(local_68 + 6);
- __Block_object_dispose(&local_70,8);
- return auVar2;
- }
- uVar4 = _DAT_1e6aeda38;
- _objc_msgSend_currentHandler(_DAT_1e6aeda38);
- _objc_msgSend_stringWithUTF8String_();
- _dlerror();
- _objc_msgSend_handleFailureInFunction_file_lineNumber_description_(uVar4);
- /* WARNING: Does not return */
- pcVar3 = (code *)SoftwareBreakpoint(1,0x183480fa0);
- (*pcVar3)();
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | ZeroMarkWidths |
| fullname | ZeroMarkWidths |
| refcount | 4 |
| length | 504 |
| called | TRunGlue::GetAdvance TRunGlue::GetGlyphProps TRunGlue::GetOrigin TRunGlue::IsDeleted TRunGlue::SetAdvance TRunGlue::SetOrigin TRunGlue::TGlyph::glyphID TRunGlue::length |
| calling | TOpenTypePositioningEngine::PositionRuns ZeroMarkWidths |
| paramcount | 3 |
| address | 1834be794 |
| sig | undefined __swiftcall ZeroMarkWidths(TRunGlue * param_1, void * param_2, _func_bool_void_ptr_TGlyph * param_3) |
| sym_type | Function |
| sym_source | ANALYSIS |
| external | False |
--- ZeroMarkWidths
+++ ZeroMarkWidths
@@ -1,125 +0,0 @@
-
-/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-/* ZeroMarkWidths(TRunGlue&, void*, bool (*)(void*, TRunGlue::TGlyph)) */
-
-undefined8 ZeroMarkWidths(TRunGlue *param_1,void *param_2,_func_bool_void_ptr_TGlyph *param_3)
-
-{
- double *pdVar1;
- bool bVar2;
- int iVar3;
- TRunGlue *pTVar4;
- undefined8 uVar5;
- TRunGlue *pTVar6;
- double in_d0;
- double dVar7;
- double in_d1;
- double dVar8;
- double dVar9;
- TRunGlue *local_80;
- TRunGlue *local_78;
-
- if (*(int *)(param_1 + 0x18) < 0) {
- pTVar6 = param_1;
- TRunGlue::length(param_2);
- pdVar1 = _DAT_1e6ae1bf8;
- uVar5 = 0;
- if (pTVar6 != (TRunGlue *)0x0) {
- pTVar6 = pTVar6 + -1;
- dVar9 = 0.0;
- do {
- local_80 = param_1;
- local_78 = pTVar6;
- iVar3 = (int)&local_80;
- TRunGlue::TGlyph::glyphID(param_2);
- if ((iVar3 != 0xffff) &&
- (pTVar4 = local_80, TRunGlue::IsDeleted(param_2,(long)local_80), ((ulong)pTVar4 & 1) == 0
- )) {
- pTVar4 = param_2;
- (*param_3)(param_2,(char)local_80);
- if ((int)pTVar4 == 0) {
- dVar9 = 0.0;
- }
- else {
- TRunGlue::GetAdvance(param_2,(long)local_80);
- dVar9 = dVar9 + in_d0;
- if ((dVar9 != 0.0) &&
- (pTVar4 = local_80, dVar7 = in_d0, TRunGlue::GetGlyphProps(param_2,(long)local_80),
- ((uint)pTVar4 >> 0xe & 1) != 0)) {
- TRunGlue::GetOrigin((long)local_80);
- TRunGlue::SetOrigin(dVar7 - dVar9,local_80,local_78);
- }
- dVar7 = *pdVar1;
- dVar8 = pdVar1[1];
- bVar2 = false;
- if ((in_d0 == dVar7) && (bVar2 = false, !NAN(in_d1) && !NAN(dVar8))) {
- bVar2 = in_d1 == dVar8;
- }
- in_d0 = dVar7;
- in_d1 = dVar8;
- if (!bVar2) {
- TRunGlue::SetAdvance(local_80,local_78);
- uVar5 = 1;
- in_d0 = dVar7;
- in_d1 = dVar8;
- }
- }
- }
- pTVar6 = pTVar6 + -1;
- } while (pTVar6 != (TRunGlue *)0xffffffffffffffff);
- }
- }
- else {
- local_78 = (TRunGlue *)0x0;
- local_80 = param_1;
- TRunGlue::length(param_2);
- pdVar1 = _DAT_1e6ae1bf8;
- if (param_1 == (TRunGlue *)0x0) {
- uVar5 = 0;
- }
- else {
- uVar5 = 0;
- dVar9 = 0.0;
- do {
- iVar3 = (int)&local_80;
- TRunGlue::TGlyph::glyphID(param_2);
- if ((iVar3 != 0xffff) &&
- (pTVar6 = local_80, TRunGlue::IsDeleted(param_2,(long)local_80), ((ulong)pTVar6 & 1) == 0
- )) {
- pTVar6 = param_2;
- (*param_3)(param_2,(char)local_80);
- if ((int)pTVar6 == 0) {
- dVar9 = 0.0;
- }
- else {
- TRunGlue::GetAdvance(param_2,(long)local_80);
- if ((dVar9 != 0.0) &&
- (pTVar6 = local_80, dVar7 = in_d0, TRunGlue::GetGlyphProps(param_2,(long)local_80),
- ((uint)pTVar6 >> 0xe & 1) != 0)) {
- TRunGlue::GetOrigin((long)local_80);
- TRunGlue::SetOrigin(dVar9 + dVar7,local_80,local_78);
- }
- dVar9 = dVar9 + in_d0;
- dVar7 = *pdVar1;
- dVar8 = pdVar1[1];
- bVar2 = false;
- if ((in_d0 == dVar7) && (bVar2 = false, !NAN(in_d1) && !NAN(dVar8))) {
- bVar2 = in_d1 == dVar8;
- }
- in_d0 = dVar7;
- in_d1 = dVar8;
- if (!bVar2) {
- TRunGlue::SetAdvance(local_80,local_78);
- uVar5 = 1;
- in_d0 = dVar7;
- in_d1 = dVar8;
- }
- }
- }
- local_78 = local_78 + 1;
- } while (local_78 != param_1);
- }
- }
- return uVar5;
-}
-
| Key | CoreText_26_1 |
|---|---|
| name | TGlyph) |
| fullname | ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph) |
| refcount | 2 |
| length | 92 |
| called | TRunGlue::TGlyph::glyphID |
| calling | |
| paramcount | 0 |
| address | 1834be98c |
| sig | undefined TGlyph)(void) |
| sym_type | Function |
| sym_source | ANALYSIS |
| external | False |
--- ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph)
+++ ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph)
@@ -1,29 +0,0 @@
-
-/* ZeroMarkWidths(TRunGlue&, OTL::GDEF const&)::$_0::__invoke(void*, TRunGlue::TGlyph) */
-
-byte ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph_
- (long *param_1,undefined8 param_2,undefined8 param_3)
-
-{
- long lVar1;
- byte bVar2;
- undefined8 *puVar3;
- TGlyph *this;
- undefined8 local_30;
- undefined8 uStack_28;
-
- puVar3 = &local_30;
- lVar1 = *param_1;
- this = (TGlyph *)param_1[1];
- local_30 = param_2;
- uStack_28 = param_3;
- TRunGlue::TGlyph::glyphID(this);
- if ((TGlyph *)(((ulong)puVar3 & 0xffffffff) >> 3) < this) {
- bVar2 = *(byte *)(lVar1 + (((ulong)puVar3 & 0xffffffff) >> 3)) >> (ulong)((uint)puVar3 & 7) & 1;
- }
- else {
- bVar2 = 0;
- }
- return bVar2;
-}
-
| Key | CoreText_26_0_1 |
|---|---|
| name | ZeroCombiningMarkWidths |
| fullname | ZeroCombiningMarkWidths |
| refcount | 3 |
| length | 176 |
| called | TRunGlue::GetAdvance TRunGlue::GetGlyphProps TRunGlue::SetAdvance TRunGlue::length |
| calling | TOpenTypePositioningEngine::PositionRuns ZeroMarkWidths |
| paramcount | 1 |
| address | 1833d6bc4 |
| sig | undefined __swiftcall ZeroCombiningMarkWidths(TRunGlue * param_1) |
| sym_type | Function |
| sym_source | ANALYSIS |
| external | False |
--- ZeroCombiningMarkWidths
+++ ZeroCombiningMarkWidths
@@ -0,0 +1,54 @@
+
+/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
+/* ZeroCombiningMarkWidths(TRunGlue&) */
+
+undefined8 ZeroCombiningMarkWidths(TRunGlue *param_1)
+
+{
+ double *pdVar1;
+ bool bVar2;
+ TRunGlue *this;
+ TRunGlue *pTVar3;
+ TRunGlue *unaff_x20;
+ TRunGlue *pTVar4;
+ undefined8 uVar5;
+ double in_d0;
+ double dVar6;
+ double in_d1;
+ double dVar7;
+
+ this = param_1;
+ TRunGlue::length(unaff_x20);
+ pdVar1 = _DAT_1e6aa5c78;
+ if (this == (TRunGlue *)0x0) {
+ uVar5 = 0;
+ }
+ else {
+ uVar5 = 0;
+ pTVar4 = (TRunGlue *)0x0;
+ do {
+ pTVar3 = param_1;
+ TRunGlue::GetGlyphProps(this,(long)param_1);
+ dVar6 = in_d0;
+ dVar7 = in_d1;
+ if (((ulong)pTVar3 & 0x1040) != 0) {
+ TRunGlue::GetAdvance(this,(long)param_1);
+ dVar6 = *pdVar1;
+ dVar7 = pdVar1[1];
+ bVar2 = false;
+ if ((in_d0 == dVar6) && (bVar2 = false, !NAN(in_d1) && !NAN(dVar7))) {
+ bVar2 = in_d1 == dVar7;
+ }
+ if (!bVar2) {
+ TRunGlue::SetAdvance(param_1,pTVar4);
+ uVar5 = 1;
+ }
+ }
+ pTVar4 = pTVar4 + 1;
+ in_d0 = dVar6;
+ in_d1 = dVar7;
+ } while (this != pTVar4);
+ }
+ return uVar5;
+}
+
| Key | CoreText_26_0_1 |
|---|---|
| name | FUN_1833ec6e8 |
| fullname | FUN_1833ec6e8 |
| refcount | 3 |
| length | 236 |
| called | FUN_183505564 ___swift_allocate_value_buffer ___swift_instantiateConcreteTypeFromMangledName ___swift_project_value_buffer |
| calling | |
| paramcount | 0 |
| address | 1833ec6e8 |
| sig | undefined FUN_1833ec6e8(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_1833ec6e8
+++ FUN_1833ec6e8
@@ -0,0 +1,34 @@
+
+/* WARNING: Removing unreachable block (ram,0x0001833ec768) */
+/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
+
+void FUN_1833ec6e8(void)
+
+{
+ undefined4 uVar1;
+ code *pcVar2;
+ undefined *puVar3;
+ long lVar4;
+ long lVar5;
+ ulong unaff_x30;
+
+ puVar3 = &DAT_1eae60820;
+ ___swift_instantiateConcreteTypeFromMangledName(&DAT_1eae60820);
+ ___swift_allocate_value_buffer();
+ ___swift_project_value_buffer(puVar3,&DAT_1eae60808);
+ uVar1 = *_DAT_1e6aafe20;
+ lVar4 = 0;
+ FUN_183505564();
+ lVar5 = *(long *)(lVar4 + -8);
+ (**(code **)(lVar5 + 0x68))(puVar3,uVar1,lVar4);
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) == 0) {
+ /* WARNING: Could not recover jumptable at 0x0001833ec7d0. Too many branches */
+ /* WARNING: Treating indirect jump as call */
+ (**(code **)(lVar5 + 0x38))(puVar3,0,1,lVar4);
+ return;
+ }
+ /* WARNING: Does not return */
+ pcVar2 = (code *)SoftwareBreakpoint(0xc471,0x1833ec7c8);
+ (*pcVar2)();
+}
+
| Key | CoreText_26_0_1 |
|---|---|
| name | FUN_1833ec7d4 |
| fullname | FUN_1833ec7d4 |
| refcount | 1 |
| length | 124 |
| called | FUN_1833ec888 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 1833ec7d4 |
| sig | undefined FUN_1833ec7d4(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_1833ec7d4
+++ FUN_1833ec7d4
@@ -0,0 +1,21 @@
+
+void FUN_1833ec7d4(void)
+
+{
+ code *pcVar1;
+ ulong unaff_x30;
+
+ if (DAT_1eae607b0 != -1) {
+ _swift_once(&DAT_1eae607b0,FUN_1833ec6e8);
+ }
+ ___swift_instantiateConcreteTypeFromMangledName(&DAT_1eae60820);
+ ___swift_project_value_buffer();
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
+ /* WARNING: Does not return */
+ pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x1833ec82c);
+ (*pcVar1)();
+ }
+ FUN_1833ec888();
+ return;
+}
+
| Key | CoreText_26_0_1 |
|---|---|
| name | FUN_1833ec90c |
| fullname | FUN_1833ec90c |
| refcount | 1 |
| length | 124 |
| called | FUN_1833ec888 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 1833ec90c |
| sig | undefined FUN_1833ec90c(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_1833ec90c
+++ FUN_1833ec90c
@@ -0,0 +1,21 @@
+
+void FUN_1833ec90c(void)
+
+{
+ code *pcVar1;
+ ulong unaff_x30;
+
+ if (DAT_1eae607b0 != -1) {
+ _swift_once(&DAT_1eae607b0,FUN_1833ec6e8);
+ }
+ ___swift_instantiateConcreteTypeFromMangledName(&DAT_1eae60820);
+ ___swift_project_value_buffer();
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
+ /* WARNING: Does not return */
+ pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x1833ec964);
+ (*pcVar1)();
+ }
+ FUN_1833ec888();
+ return;
+}
+
| Key | CoreText_26_0_1 |
|---|---|
| name | FUN_1833ef554 |
| fullname | FUN_1833ef554 |
| refcount | 3 |
| length | 236 |
| called | FUN_183505564 ___swift_allocate_value_buffer ___swift_instantiateConcreteTypeFromMangledName ___swift_project_value_buffer |
| calling | |
| paramcount | 0 |
| address | 1833ef554 |
| sig | undefined FUN_1833ef554(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_1833ef554
+++ FUN_1833ef554
@@ -0,0 +1,34 @@
+
+/* WARNING: Removing unreachable block (ram,0x0001833ef5d4) */
+/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
+
+void FUN_1833ef554(void)
+
+{
+ undefined4 uVar1;
+ code *pcVar2;
+ undefined *puVar3;
+ long lVar4;
+ long lVar5;
+ ulong unaff_x30;
+
+ puVar3 = &DAT_1eae60820;
+ ___swift_instantiateConcreteTypeFromMangledName(&DAT_1eae60820);
+ ___swift_allocate_value_buffer();
+ ___swift_project_value_buffer(puVar3,&DAT_1eae60980);
+ uVar1 = *_DAT_1e6aafe20;
+ lVar4 = 0;
+ FUN_183505564();
+ lVar5 = *(long *)(lVar4 + -8);
+ (**(code **)(lVar5 + 0x68))(puVar3,uVar1,lVar4);
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) == 0) {
+ /* WARNING: Could not recover jumptable at 0x0001833ef63c. Too many branches */
+ /* WARNING: Treating indirect jump as call */
+ (**(code **)(lVar5 + 0x38))(puVar3,0,1,lVar4);
+ return;
+ }
+ /* WARNING: Does not return */
+ pcVar2 = (code *)SoftwareBreakpoint(0xc471,0x1833ef634);
+ (*pcVar2)();
+}
+
| Key | CoreText_26_0_1 |
|---|---|
| name | FUN_1833ef640 |
| fullname | FUN_1833ef640 |
| refcount | 1 |
| length | 124 |
| called | FUN_1833ec888 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 1833ef640 |
| sig | undefined FUN_1833ef640(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_1833ef640
+++ FUN_1833ef640
@@ -0,0 +1,21 @@
+
+void FUN_1833ef640(void)
+
+{
+ code *pcVar1;
+ ulong unaff_x30;
+
+ if (DAT_1eae607b8 != -1) {
+ _swift_once(&DAT_1eae607b8,FUN_1833ef554);
+ }
+ ___swift_instantiateConcreteTypeFromMangledName(&DAT_1eae60820);
+ ___swift_project_value_buffer();
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
+ /* WARNING: Does not return */
+ pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x1833ef698);
+ (*pcVar1)();
+ }
+ FUN_1833ec888();
+ return;
+}
+
| Key | CoreText_26_0_1 |
|---|---|
| name | FUN_1833ef798 |
| fullname | FUN_1833ef798 |
| refcount | 1 |
| length | 124 |
| called | FUN_1833ec888 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_value_buffer _swift_once |
| calling | |
| paramcount | 0 |
| address | 1833ef798 |
| sig | undefined FUN_1833ef798(void) |
| sym_type | Function |
| sym_source | DEFAULT |
| external | False |
--- FUN_1833ef798
+++ FUN_1833ef798
@@ -0,0 +1,21 @@
+
+void FUN_1833ef798(void)
+
+{
+ code *pcVar1;
+ ulong unaff_x30;
+
+ if (DAT_1eae607b8 != -1) {
+ _swift_once(&DAT_1eae607b8,FUN_1833ef554);
+ }
+ ___swift_instantiateConcreteTypeFromMangledName(&DAT_1eae60820);
+ ___swift_project_value_buffer();
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
+ /* WARNING: Does not return */
+ pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x1833ef7f0);
+ (*pcVar1)();
+ }
+ FUN_1833ec888();
+ return;
+}
+
| Key | CoreText_26_0_1 |
|---|---|
| name | SoftLinked__ISEnumerateKnownUrduSequencesInString |
| fullname | SoftLinked__ISEnumerateKnownUrduSequencesInString |
| refcount | 3 |
| length | 188 |
| called | _dlerror _objc_msgSend$currentHandler _objc_msgSend$handleFailureInFunction:file:lineNumber:description: _objc_msgSend$stringWithUTF8String: getISEnumerateKnownUrduSequencesInStringSymbolLoc |
| calling | EnumerateKnownUrduSequencesInString |
| paramcount | 3 |
| address | 183457974 |
| sig | undefined __swiftcall SoftLinked__ISEnumerateKnownUrduSequencesInString(__CFString * param_1, CFRange param_2, _func_void_CFRange_bool_ptr * param_3) |
| sym_type | Function |
| sym_source | ANALYSIS |
| external | False |
--- SoftLinked__ISEnumerateKnownUrduSequencesInString
+++ SoftLinked__ISEnumerateKnownUrduSequencesInString
@@ -0,0 +1,36 @@
+
+/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
+/* SoftLinked__ISEnumerateKnownUrduSequencesInString(__CFString const*, CFRange, void (
+ block_pointer)(CFRange, bool*)) */
+
+void SoftLinked__ISEnumerateKnownUrduSequencesInString
+ (code *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
+
+{
+ code *UNRECOVERED_JUMPTABLE;
+ undefined8 uVar1;
+ ulong unaff_x30;
+
+ UNRECOVERED_JUMPTABLE = param_1;
+ getISEnumerateKnownUrduSequencesInStringSymbolLoc();
+ if (UNRECOVERED_JUMPTABLE == (code *)0x0) {
+ uVar1 = _DAT_1e6ab1b40;
+ _objc_msgSend_currentHandler(_DAT_1e6ab1b40);
+ _objc_msgSend_stringWithUTF8String_();
+ _dlerror();
+ _objc_msgSend_handleFailureInFunction_file_lineNumber_description_(uVar1);
+ /* WARNING: Does not return */
+ UNRECOVERED_JUMPTABLE = (code *)SoftwareBreakpoint(1,0x183457a30);
+ (*UNRECOVERED_JUMPTABLE)();
+ }
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
+ /* WARNING: Does not return */
+ UNRECOVERED_JUMPTABLE = (code *)SoftwareBreakpoint(0xc471,0x1834579d8);
+ (*UNRECOVERED_JUMPTABLE)();
+ }
+ /* WARNING: Could not recover jumptable at 0x0001834579d8. Too many branches */
+ /* WARNING: Treating indirect jump as call */
+ (*UNRECOVERED_JUMPTABLE)(param_1,param_2,param_3,param_4);
+ return;
+}
+
Modified functions contain code changes
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.4 |
| i_ratio | 0.69 |
| m_ratio | 1.0 |
| b_ratio | 0.98 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | ProcessGlyphsTTRunGlue::TGlyphInSingleRun | ProcessGlyphsTTRunGlue::TGlyphInSingleRun |
| fullname | TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun | TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun |
| refcount | 3 | 3 |
length |
896 | 904 |
| called | ::operator.delete TRunGlue::IsDeleted TRunGlue::length _memcpy std::__tree<std::__value_type<long,TAATDeltaYListEntry>,std::__map_value_compare<long,std::__value_type<long,TAATDeltaYListEntry>,std::less,true>,std::allocator<std::__value_type<long,TAATDeltaYListEntry>>>::__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long&&>,std::tuple<>> std::allocator<std::pair<long,TAATDeltaXListEntry>>::allocate_at_least[abi:fn200100] std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100] |
::operator.delete TRunGlue::IsDeleted TRunGlue::length _memcpy std::__tree<std::__value_type<long,TAATDeltaYListEntry>,std::__map_value_compare<long,std::__value_type<long,TAATDeltaYListEntry>,std::less,true>,std::allocator<std::__value_type<long,TAATDeltaYListEntry>>>::__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long&&>,std::tuple<>> std::allocator<std::pair<long,TAATDeltaXListEntry>>::allocate_at_least[abi:fn200100] std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100] |
| calling | TAATKerxEngine::KernRuns | TAATKerxEngine::KernRuns |
| paramcount | 2 | 2 |
address |
18342f050 | 183405d24 |
| sig | void __thiscall ProcessGlyphsTTRunGlue::TGlyphInSingleRun(KerxOrderedList * this, SyncState * param_1) | void __thiscall ProcessGlyphsTTRunGlue::TGlyphInSingleRun(KerxOrderedList * this, SyncState * param_1) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TAATKerxEngine::KerxOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>
+++ TAATKerxEngine::KerxOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>
@@ -1,221 +1,223 @@
/* void TAATKerxEngine::KerxOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>(SyncState&) */
void __thiscall
TAATKerxEngine::KerxOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>
(KerxOrderedList *this,SyncState *param_1)
{
ushort *puVar1;
- ulong *puVar2;
- ushort uVar3;
- short sVar4;
- uint uVar5;
- ulong uVar6;
- long *plVar7;
+ ushort *puVar2;
+ ulong *puVar3;
+ ushort uVar4;
+ short sVar5;
+ uint uVar6;
+ ulong uVar7;
+ long *plVar8;
undefined1 *in_x1;
- void *pvVar8;
- size_t sVar9;
- double *pdVar10;
- ulong uVar11;
- uint uVar12;
- long lVar13;
- ushort *puVar14;
- ulong uVar15;
- ushort *puVar16;
- long lVar17;
- long lVar18;
- ulong uVar19;
- long lVar20;
- ulong uVar21;
- ulong uVar22;
+ void *pvVar9;
+ size_t sVar10;
+ double *pdVar11;
+ ulong uVar12;
+ uint uVar13;
+ long lVar14;
+ ushort *puVar15;
+ ulong uVar16;
+ ushort *puVar17;
+ ulong uVar18;
+ long lVar19;
+ ulong uVar20;
+ long lVar21;
+ long lVar22;
ulong uVar23;
- ushort *puVar24;
+ ulong uVar24;
uint uVar25;
ulong *puVar26;
ulong local_78 [2];
ulong *local_68;
if (*(long *)(param_1 + 0x40) != 0) {
- lVar20 = *(long *)(param_1 + 0x10);
- uVar19 = **(ulong **)param_1;
- puVar24 = *(ushort **)(uVar19 + 0xa8);
- uVar6 = uVar19;
+ lVar19 = *(long *)(param_1 + 0x10);
+ uVar18 = **(ulong **)param_1;
+ lVar21 = *(long *)(uVar18 + 0xa8);
+ lVar22 = *(long *)(uVar18 + 0x98);
+ uVar7 = uVar18;
TRunGlue::length((TRunGlue *)param_1);
- if (1 < (long)uVar6) {
- uVar21 = 1;
- uVar15 = (ulong)*puVar24;
+ if (1 < (long)uVar7) {
+ puVar1 = (ushort *)(lVar21 + lVar22 * 2);
+ uVar20 = 1;
+ uVar16 = (ulong)*puVar1;
do {
- uVar3 = puVar24[uVar21];
- uVar22 = (ulong)uVar3;
- uVar23 = uVar15;
- if ((((uVar3 != 0xffff) &&
- (uVar11 = uVar19, TRunGlue::IsDeleted((TRunGlue *)param_1,uVar19), (uVar11 & 1) == 0))
- && (uVar25 = (uint)uVar15, uVar23 = uVar22,
+ uVar4 = puVar1[uVar20];
+ uVar23 = (ulong)uVar4;
+ uVar24 = uVar16;
+ if ((((uVar4 != 0xffff) &&
+ (uVar12 = uVar18, TRunGlue::IsDeleted((TRunGlue *)param_1,uVar18), (uVar12 & 1) == 0))
+ && (uVar25 = (uint)uVar16, uVar24 = uVar23,
uVar25 <= *(ushort *)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x3a))) &&
- (sVar4 = *(short *)(*(long *)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 +
- 0x40) + uVar15 * 2), sVar4 != 0)) {
- if ((ushort)(sVar4 - 1U) <
+ (sVar5 = *(short *)(*(long *)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 +
+ 0x40) + uVar16 * 2), sVar5 != 0)) {
+ if ((ushort)(sVar5 - 1U) <
*(ushort *)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x38)) {
- uVar12 = (uint)(ushort)(sVar4 - 1);
- puVar14 = (ushort *)(lVar20 + 0x12 + (ulong)uVar12 * 6);
+ uVar13 = (uint)(ushort)(sVar5 - 1);
+ puVar15 = (ushort *)(lVar19 + 0x12 + (ulong)uVar13 * 6);
do {
- uVar5 = (uint)(puVar14[-1] >> 8) | (puVar14[-1] & 0xff00ff) << 8;
- if (uVar5 == uVar25) {
- if (uVar3 <= (ushort)(*puVar14 >> 8 | *puVar14 << 8)) {
+ uVar6 = (uint)(puVar15[-1] >> 8) | (puVar15[-1] & 0xff00ff) << 8;
+ if (uVar6 == uVar25) {
+ if (uVar4 <= (ushort)(*puVar15 >> 8 | *puVar15 << 8)) {
LAB_0:
- puVar14 = (ushort *)(lVar20 + 0x10 + (ulong)(uVar12 & 0xffff) * 6);
- if ((uVar25 == ((uint)(*puVar14 >> 8) | (*puVar14 & 0xff00ff) << 8)) &&
- (uVar3 == (ushort)(puVar14[1] >> 8 | puVar14[1] << 8))) {
- pdVar10 = *(double **)
+ puVar15 = (ushort *)(lVar19 + 0x10 + (ulong)(uVar13 & 0xffff) * 6);
+ if ((uVar25 == ((uint)(*puVar15 >> 8) | (*puVar15 & 0xff00ff) << 8)) &&
+ (uVar4 == (ushort)(puVar15[1] >> 8 | puVar15[1] << 8))) {
+ pdVar11 = *(double **)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x48);
- uVar25 = (uint)(puVar14[2] >> 8) | (puVar14[2] & 0xff00ff) << 8;
- if (pdVar10 !=
+ uVar25 = (uint)(puVar15[2] >> 8) | (puVar15[2] & 0xff00ff) << 8;
+ if (pdVar11 !=
*(double **)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x50)) {
- puVar14 = (ushort *)
+ puVar15 = (ushort *)
(*(long *)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1
+ 8) + (ulong)uVar25);
- lVar18 = (long)*(double **)
+ lVar21 = (long)*(double **)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 +
- 0x50) - (long)pdVar10;
- uVar15 = lVar18 >> 3;
- puVar16 = *(ushort **)
+ 0x50) - (long)pdVar11;
+ uVar16 = lVar21 >> 3;
+ puVar17 = *(ushort **)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x18);
- puVar1 = (ushort *)((long)puVar14 + (lVar18 >> 2));
- if ((puVar14 < *(ushort **)
+ puVar2 = (ushort *)((long)puVar15 + (lVar21 >> 2));
+ if ((puVar15 < *(ushort **)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 +
- 0x10) || puVar1 < puVar14) || puVar16 < puVar1) {
- uVar22 = (ulong)((long)puVar16 - (long)puVar14) >> 1;
- if (puVar16 < puVar14 + 1 ||
- puVar14 < *(ushort **)
+ 0x10) || puVar2 < puVar15) || puVar17 < puVar2) {
+ uVar23 = (ulong)((long)puVar17 - (long)puVar15) >> 1;
+ if (puVar17 < puVar15 + 1 ||
+ puVar15 < *(ushort **)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 +
0x10)) {
- uVar22 = 0;
- }
- if (uVar22 != uVar15) {
+ uVar23 = 0;
+ }
+ if (uVar23 != uVar16) {
return;
}
}
uVar25 = 0;
- if (uVar15 < 2) {
- uVar15 = 1;
+ if (uVar16 < 2) {
+ uVar16 = 1;
}
do {
- uVar25 = (uint)((double)(long)(*pdVar10 *
- (double)(int)(short)(*puVar14 >> 8 |
- *puVar14 << 8)) +
+ uVar25 = (uint)((double)(long)(*pdVar11 *
+ (double)(int)(short)(*puVar15 >> 8 |
+ *puVar15 << 8)) +
(double)(int)(short)uVar25);
- uVar15 = uVar15 - 1;
- pdVar10 = pdVar10 + 1;
- puVar14 = puVar14 + 1;
- } while (uVar15 != 0);
+ uVar16 = uVar16 - 1;
+ pdVar11 = pdVar11 + 1;
+ puVar15 = puVar15 + 1;
+ } while (uVar16 != 0);
}
if ((uVar25 & 0xffff) != 0) {
- lVar18 = *(long *)param_1;
- sVar4 = (short)uVar25;
+ lVar21 = *(long *)param_1;
+ sVar5 = (short)uVar25;
if (((byte)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1)[0x23]
>> 6 & 1) == 0) {
- puVar26 = *(ulong **)(lVar18 + 0x20);
- if (puVar26 < *(ulong **)(lVar18 + 0x28)) {
- *puVar26 = uVar21;
- *(short *)(puVar26 + 1) = sVar4;
+ puVar26 = *(ulong **)(lVar21 + 0x20);
+ if (puVar26 < *(ulong **)(lVar21 + 0x28)) {
+ *puVar26 = uVar20;
+ *(short *)(puVar26 + 1) = sVar5;
puVar26 = puVar26 + 2;
}
else {
- pvVar8 = *(void **)(lVar18 + 0x18);
- sVar9 = (long)puVar26 - (long)pvVar8;
- lVar17 = (long)sVar9 >> 4;
- uVar15 = lVar17 + 1;
- if (uVar15 >> 0x3c != 0) {
+ pvVar9 = *(void **)(lVar21 + 0x18);
+ sVar10 = (long)puVar26 - (long)pvVar9;
+ lVar22 = (long)sVar10 >> 4;
+ uVar16 = lVar22 + 1;
+ if (uVar16 >> 0x3c != 0) {
/* WARNING: Subroutine does not return */
std::
vector<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,TInlineBufferAllocator<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,4ul>>
::__throw_length_error_abi_fn200100_();
}
- uVar11 = (long)*(ulong **)(lVar18 + 0x28) - (long)pvVar8;
- uVar22 = (long)uVar11 >> 3;
- if (uVar22 <= uVar15) {
- uVar22 = uVar15;
- }
- if (0x7fffffffffffffef < uVar11) {
- uVar22 = 0xfffffffffffffff;
- }
- if (uVar22 == 0) {
- uVar15 = 0;
- lVar13 = lVar17;
+ uVar12 = (long)*(ulong **)(lVar21 + 0x28) - (long)pvVar9;
+ uVar23 = (long)uVar12 >> 3;
+ if (uVar23 <= uVar16) {
+ uVar23 = uVar16;
+ }
+ if (0x7fffffffffffffef < uVar12) {
+ uVar23 = 0xfffffffffffffff;
+ }
+ if (uVar23 == 0) {
+ uVar16 = 0;
+ lVar14 = lVar22;
}
else {
- uVar15 = lVar18 + 0x18;
+ uVar16 = lVar21 + 0x18;
std::allocator<std::pair<long,TAATDeltaXListEntry>>::
allocate_at_least_abi_fn200100_
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1,
- uVar15);
- pvVar8 = *(void **)(lVar18 + 0x18);
- sVar9 = *(long *)(lVar18 + 0x20) - (long)pvVar8;
- lVar13 = (long)sVar9 >> 4;
- }
- puVar2 = (ulong *)(uVar15 + lVar17 * 0x10);
- *puVar2 = uVar21;
- *(short *)(puVar2 + 1) = sVar4;
- puVar26 = puVar2 + 2;
- _memcpy(puVar2 + lVar13 * -2,pvVar8,sVar9);
- pvVar8 = *(void **)(lVar18 + 0x18);
- *(ulong **)(lVar18 + 0x18) = puVar2 + lVar13 * -2;
- *(ulong **)(lVar18 + 0x20) = puVar26;
- *(ulong *)(lVar18 + 0x28) = uVar15 + uVar22 * 0x10;
- if (pvVar8 != (void *)0x0) {
- operator_delete(pvVar8);
- }
- }
- *(ulong **)(lVar18 + 0x20) = puVar26;
+ uVar16);
+ pvVar9 = *(void **)(lVar21 + 0x18);
+ sVar10 = *(long *)(lVar21 + 0x20) - (long)pvVar9;
+ lVar14 = (long)sVar10 >> 4;
+ }
+ puVar3 = (ulong *)(uVar16 + lVar22 * 0x10);
+ *puVar3 = uVar20;
+ *(short *)(puVar3 + 1) = sVar5;
+ puVar26 = puVar3 + 2;
+ _memcpy(puVar3 + lVar14 * -2,pvVar9,sVar10);
+ pvVar9 = *(void **)(lVar21 + 0x18);
+ *(ulong **)(lVar21 + 0x18) = puVar3 + lVar14 * -2;
+ *(ulong **)(lVar21 + 0x20) = puVar26;
+ *(ulong *)(lVar21 + 0x28) = uVar16 + uVar23 * 0x10;
+ if (pvVar9 != (void *)0x0) {
+ operator_delete(pvVar9);
+ }
+ }
+ *(ulong **)(lVar21 + 0x20) = puVar26;
}
else {
- local_78[0] = uVar21;
+ local_78[0] = uVar20;
if ((uVar25 & 0xffff) == 0x8000) {
local_68 = local_78;
- plVar7 = (long *)(lVar18 + 0x30);
+ plVar8 = (long *)(lVar21 + 0x30);
std::
__tree<std::__value_type<long,TAATDeltaYListEntry>,std::__map_value_compare<long,std::__value_type<long,TAATDeltaYListEntry>,std::less<long>,true>,std::allocator<std::__value_type<long,TAATDeltaYListEntry>>>
::
__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long&&>,std::tuple<>>
- (plVar7,(piecewise_construct_t *)local_78,
+ (plVar8,(piecewise_construct_t *)local_78,
(tuple *)&std::piecewise_construct,(tuple *)&local_68);
- *(undefined1 *)((long)plVar7 + 0x2a) = 1;
- *(undefined2 *)(plVar7 + 5) = 0;
+ *(undefined1 *)((long)plVar8 + 0x2a) = 1;
+ *(undefined2 *)(plVar8 + 5) = 0;
}
else {
local_68 = local_78;
- plVar7 = (long *)(lVar18 + 0x30);
+ plVar8 = (long *)(lVar21 + 0x30);
std::
__tree<std::__value_type<long,TAATDeltaYListEntry>,std::__map_value_compare<long,std::__value_type<long,TAATDeltaYListEntry>,std::less<long>,true>,std::allocator<std::__value_type<long,TAATDeltaYListEntry>>>
::
__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long&&>,std::tuple<>>
- (plVar7,(piecewise_construct_t *)local_78,
+ (plVar8,(piecewise_construct_t *)local_78,
(tuple *)&std::piecewise_construct,(tuple *)&local_68);
- *(short *)(plVar7 + 5) = (short)plVar7[5] + sVar4;
+ *(short *)(plVar8 + 5) = (short)plVar8[5] + sVar5;
}
}
*in_x1 = 1;
}
}
break;
}
}
- else if (uVar25 <= uVar5) goto LAB_0;
- uVar12 = uVar12 + 1;
- puVar14 = puVar14 + 3;
+ else if (uVar25 <= uVar6) goto LAB_0;
+ uVar13 = uVar13 + 1;
+ puVar15 = puVar15 + 3;
} while ((uint)*(ushort *)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x38) !=
- (uVar12 & 0xffff));
+ (uVar13 & 0xffff));
}
}
- uVar21 = uVar21 + 1;
- uVar15 = uVar23;
- } while (uVar21 != uVar6);
+ uVar20 = uVar20 + 1;
+ uVar16 = uVar24;
+ } while (uVar20 != uVar7);
}
}
return;
}
std::__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash,std::equal_to,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to,std::hash,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>::erase
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.37 |
| i_ratio | 0.72 |
| m_ratio | 0.99 |
| b_ratio | 0.99 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | erase | erase |
| fullname | std::__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash,std::equal_to,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to,std::hash,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>::erase | std::__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash,std::equal_to,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to,std::hash,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>::erase |
| refcount | 2 | 2 |
length |
296 | 304 |
| called | ::operator.delete | ::operator.delete |
| calling | TGlyphComposer::ComposeGlyphs | TGlyphComposer::ComposeGlyphs |
| paramcount | 2 | 2 |
address |
18349bf9c | 183472a40 |
| sig | undefined __thiscall erase(__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash,std::equal_to,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to,std::hash,true>,std::allocator<std::__hash_value_type<long,CGPoint>>> * this, __hash_const_iterator param_1) | undefined __thiscall erase(__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash,std::equal_to,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to,std::hash,true>,std::allocator<std::__hash_value_type<long,CGPoint>>> * this, __hash_const_iterator param_1) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
std::__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash,std::equal_to,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to,std::hash,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>::erase Diff
--- std::__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>::erase
+++ std::__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>::erase
@@ -1,115 +1,121 @@
/* std::__hash_table<std::__hash_value_type<long, CGPoint>, std::__unordered_map_hasher<long,
std::__hash_value_type<long, CGPoint>, std::hash<long>, std::equal_to<long>, true>,
std::__unordered_map_equal<long, std::__hash_value_type<long, CGPoint>, std::equal_to<long>,
std::hash<long>, true>, std::allocator<std::__hash_value_type<long, CGPoint> >
>::erase(std::__hash_const_iterator<std::__hash_node<std::__hash_value_type<long, CGPoint>,
void*>*>) */
void __thiscall
std::
__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
::erase(undefined8 param_1,long *param_2,long *param_3)
{
ulong uVar1;
long *plVar2;
- long lVar3;
- ulong uVar4;
+ code *pcVar3;
+ long lVar4;
ulong uVar5;
ulong uVar6;
- long *plVar7;
- ulong uVar8;
- undefined2 uVar9;
- undefined8 uVar10;
+ ulong uVar7;
+ long *plVar8;
+ ulong uVar9;
+ undefined2 uVar10;
+ undefined8 uVar11;
- uVar5 = param_2[1];
- lVar3 = *param_3;
- uVar4 = param_3[1];
- uVar10 = CONCAT17(POPCOUNT((char)(uVar5 >> 0x38)),
- CONCAT16(POPCOUNT((char)(uVar5 >> 0x30)),
- CONCAT15(POPCOUNT((char)(uVar5 >> 0x28)),
- CONCAT14(POPCOUNT((char)(uVar5 >> 0x20)),
- CONCAT13(POPCOUNT((char)(uVar5 >> 0x18)),
- CONCAT12(POPCOUNT((char)(uVar5 >> 0x10)),
- CONCAT11(POPCOUNT((char)(uVar5 >> 8
+ if (param_3 == (long *)0x0) {
+ /* WARNING: Does not return */
+ pcVar3 = (code *)SoftwareBreakpoint(1,0x183472b70);
+ (*pcVar3)();
+ }
+ uVar6 = param_2[1];
+ lVar4 = *param_3;
+ uVar5 = param_3[1];
+ uVar11 = CONCAT17(POPCOUNT((char)(uVar6 >> 0x38)),
+ CONCAT16(POPCOUNT((char)(uVar6 >> 0x30)),
+ CONCAT15(POPCOUNT((char)(uVar6 >> 0x28)),
+ CONCAT14(POPCOUNT((char)(uVar6 >> 0x20)),
+ CONCAT13(POPCOUNT((char)(uVar6 >> 0x18)),
+ CONCAT12(POPCOUNT((char)(uVar6 >> 0x10)),
+ CONCAT11(POPCOUNT((char)(uVar6 >> 8
)),
- POPCOUNT((char)uVar5))))))
+ POPCOUNT((char)uVar6))))))
));
- uVar9 = NEON_uaddlv(uVar10,1);
- uVar6 = CONCAT62((int6)((ulong)uVar10 >> 0x10),uVar9) & 0xffffffff;
- if (uVar6 < 2) {
- uVar4 = uVar5 - 1 & uVar4;
+ uVar10 = NEON_uaddlv(uVar11,1);
+ uVar7 = CONCAT62((int6)((ulong)uVar11 >> 0x10),uVar10) & 0xffffffff;
+ if (uVar7 < 2) {
+ uVar5 = uVar6 - 1 & uVar5;
}
- else if (uVar5 <= uVar4) {
- uVar8 = 0;
- if (uVar5 != 0) {
- uVar8 = uVar4 / uVar5;
+ else if (uVar6 <= uVar5) {
+ uVar9 = 0;
+ if (uVar6 != 0) {
+ uVar9 = uVar5 / uVar6;
}
- uVar4 = uVar4 - uVar8 * uVar5;
+ uVar5 = uVar5 - uVar9 * uVar6;
}
- plVar2 = *(long **)(*param_2 + uVar4 * 8);
+ plVar2 = *(long **)(*param_2 + uVar5 * 8);
do {
- plVar7 = plVar2;
- plVar2 = (long *)*plVar7;
- } while ((long *)*plVar7 != param_3);
- if (plVar7 == param_2 + 2) {
+ plVar8 = plVar2;
+ plVar2 = (long *)*plVar8;
+ } while ((long *)*plVar8 != param_3);
+ if (plVar8 == param_2 + 2) {
LAB_0:
- if (lVar3 == 0) {
+ if (lVar4 == 0) {
LAB_1:
- *(undefined8 *)(*param_2 + uVar4 * 8) = 0;
- lVar3 = *param_3;
+ *(undefined8 *)(*param_2 + uVar5 * 8) = 0;
+ lVar4 = *param_3;
goto LAB_2;
}
- uVar8 = *(ulong *)(lVar3 + 8);
- if (uVar6 < 2) {
- uVar8 = uVar8 & uVar5 - 1;
+ uVar9 = *(ulong *)(lVar4 + 8);
+ if (uVar7 < 2) {
+ uVar9 = uVar9 & uVar6 - 1;
}
- else if (uVar5 <= uVar8) {
+ else if (uVar6 <= uVar9) {
uVar1 = 0;
- if (uVar5 != 0) {
- uVar1 = uVar8 / uVar5;
+ if (uVar6 != 0) {
+ uVar1 = uVar9 / uVar6;
}
- uVar8 = uVar8 - uVar1 * uVar5;
+ uVar9 = uVar9 - uVar1 * uVar6;
}
- if (uVar8 != uVar4) goto LAB_1;
+ if (uVar9 != uVar5) goto LAB_1;
}
else {
- uVar8 = plVar7[1];
- if (uVar6 < 2) {
- uVar8 = uVar8 & uVar5 - 1;
+ uVar9 = plVar8[1];
+ if (uVar7 < 2) {
+ uVar9 = uVar9 & uVar6 - 1;
}
- else if (uVar5 <= uVar8) {
+ else if (uVar6 <= uVar9) {
uVar1 = 0;
- if (uVar5 != 0) {
- uVar1 = uVar8 / uVar5;
+ if (uVar6 != 0) {
+ uVar1 = uVar9 / uVar6;
}
- uVar8 = uVar8 - uVar1 * uVar5;
+ uVar9 = uVar9 - uVar1 * uVar6;
}
- if (uVar8 != uVar4) goto LAB_0;
+ if (uVar9 != uVar5) goto LAB_0;
LAB_2:
- if (lVar3 == 0) goto LAB_3;
+ if (lVar4 == 0) goto LAB_3;
}
- uVar8 = *(ulong *)(lVar3 + 8);
- if (uVar6 < 2) {
- uVar8 = uVar8 & uVar5 - 1;
+ uVar9 = *(ulong *)(lVar4 + 8);
+ if (uVar7 < 2) {
+ uVar9 = uVar9 & uVar6 - 1;
}
- else if (uVar5 <= uVar8) {
- uVar6 = 0;
- if (uVar5 != 0) {
- uVar6 = uVar8 / uVar5;
+ else if (uVar6 <= uVar9) {
+ uVar7 = 0;
+ if (uVar6 != 0) {
+ uVar7 = uVar9 / uVar6;
}
- uVar8 = uVar8 - uVar6 * uVar5;
+ uVar9 = uVar9 - uVar7 * uVar6;
}
- if (uVar8 != uVar4) {
- *(long **)(*param_2 + uVar8 * 8) = plVar7;
- lVar3 = *param_3;
+ if (uVar9 != uVar5) {
+ *(long **)(*param_2 + uVar9 * 8) = plVar8;
+ lVar4 = *param_3;
}
LAB_3:
- *plVar7 = lVar3;
+ *plVar8 = lVar4;
*param_3 = 0;
param_2[3] = param_2[3] + -1;
operator_delete(param_3);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.93 |
| i_ratio | 0.7 |
| m_ratio | 0.98 |
| b_ratio | 0.96 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | CopyAllDescriptorsInternal | CopyAllDescriptorsInternal |
| fullname | TDescriptorSource::CopyAllDescriptorsInternal | TDescriptorSource::CopyAllDescriptorsInternal |
| refcount | 5 | 5 |
length |
460 | 440 |
| called | AddDescriptorsForFontURLsToArray TBaseFont::PreloadFamilyNames TDescriptorSource::AddSystemVisibleFontDescriptors _CFArrayCreateMutable _CFArrayGetCount _CFArraySortValues _CFDictionaryCreate _XTCopyAvailableFontURLs2 _XTCopyFontsWithProperties _objc_release |
AddDescriptorsForFontURLsToArray TBaseFont::PreloadFamilyNames TDescriptorSource::AddSystemVisibleFontDescriptors _CFArrayCreateMutable _CFArrayGetCount _CFArraySortValues _CFDictionaryCreate _XTCopyAvailableFontURLs2 _XTCopyFontsWithProperties _objc_release |
| calling | TCollection::CopyMatchingFontDescriptorsUnlocked TDescriptor::CreateMatchingDescriptors TDescriptorSource::CopyAllDescriptorsSorted TDescriptorSource::CopyDescriptorsForRequest |
TCollection::CopyMatchingFontDescriptorsUnlocked TDescriptor::CreateMatchingDescriptors TDescriptorSource::CopyAllDescriptorsSorted TDescriptorSource::CopyDescriptorsForRequest |
| paramcount | 2 | 2 |
address |
183476004 | 18344ccb8 |
| sig | undefined __swiftcall CopyAllDescriptorsInternal(ulong param_1, _func_CFComparisonResult_void_ptr_void_ptr_void_ptr * param_2) | undefined __swiftcall CopyAllDescriptorsInternal(ulong param_1, _func_CFComparisonResult_void_ptr_void_ptr_void_ptr * param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TDescriptorSource::CopyAllDescriptorsInternal
+++ TDescriptorSource::CopyAllDescriptorsInternal
@@ -1,77 +1,75 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* TDescriptorSource::CopyAllDescriptorsInternal(unsigned long, CFComparisonResult (*)(void const*,
void const*, void*)) const */
void TDescriptorSource::CopyAllDescriptorsInternal
(ulong param_1,_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *param_2)
{
uint uVar1;
__CFArray *in_tmp_ldXn;
__CFArray *p_Var2;
__CFArray *p_Var3;
TDescriptorSource *in_x2;
undefined8 *in_x8;
__CFArray *p_Var4;
__CFArray *in_xzr;
__CFArray *local_70;
__CFArray *local_68;
undefined8 local_60;
__CFArray *local_58;
p_Var4 = (__CFArray *)*_DAT_0;
p_Var2 = p_Var4;
_CFArrayCreateMutable(p_Var4,0,_DAT_1);
uVar1 = (uint)param_2 >> 2 & 3 | 4;
if (((ulong)param_2 & 2) != 0) {
uVar1 = (uint)param_2 >> 2 & 3;
}
if (((ulong)param_2 & 1) != 0) {
uVar1 = uVar1 | 0x30000;
}
p_Var3 = (__CFArray *)0x7;
local_68 = p_Var2;
_XTCopyAvailableFontURLs2
(7,(uint)((ulong)param_2 >> 2) & 0x20 | ((uint)((ulong)param_2 >> 0xb) & 1) << 0x13 |
((uint)((ulong)param_2 >> 9) & 1) << 0x16 | (uint)((ulong)param_2 >> 0xd) & 0x10 |
uVar1);
AddDescriptorsForFontURLsToArray(in_tmp_ldXn,(TCFMutableArray *)&local_68);
local_70 = p_Var3;
if (((ulong)param_2 >> 2 & 0x20) != 0) {
local_58 = (__CFArray *)*_DAT_2;
local_60 = *_DAT_3;
- _CFDictionaryCreate(p_Var4,&local_58,&local_60,1,_DAT_4,_DAT_1e6ae14b8);
+ _CFDictionaryCreate(p_Var4,&local_58,&local_60,1,_DAT_4,_DAT_1e6aa5520);
local_70 = p_Var4;
_XTCopyFontsWithProperties();
LOAcquire();
LORelease();
LOAcquire();
LORelease();
local_58 = in_xzr;
_objc_release(p_Var3);
_objc_release(local_58);
AddDescriptorsForFontURLsToArray(p_Var3,(TCFMutableArray *)&local_68);
_objc_release(p_Var4);
in_tmp_ldXn = p_Var3;
}
- if (gVisibleSystemFontsEnabled == '\x01') {
- AddSystemVisibleFontDescriptors
- (in_x2,(TCFMutableArray *)param_1,
- (_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)&local_68);
- }
+ AddSystemVisibleFontDescriptors
+ (in_x2,(TCFMutableArray *)param_1,
+ (_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)&local_68);
if (in_x2 != (TDescriptorSource *)0x0) {
TBaseFont::PreloadFamilyNames(in_tmp_ldXn);
p_Var2 = in_tmp_ldXn;
_CFArrayGetCount(in_tmp_ldXn);
_CFArraySortValues(in_tmp_ldXn,0,p_Var2,in_x2,0);
}
LOAcquire();
LORelease();
*in_x8 = local_68;
local_68 = in_xzr;
_objc_release(local_70);
_objc_release(local_68);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.46 |
| i_ratio | 0.58 |
| m_ratio | 1.0 |
| b_ratio | 0.9 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | ComposeGlyphs | ComposeGlyphs |
| fullname | TGlyphComposer::ComposeGlyphs | TGlyphComposer::ComposeGlyphs |
| refcount | 2 | 2 |
length |
4544 | 4588 |
| called | Expand for full list:TFont::GetBoundingBoxesForGlyphs |
Expand for full list:TFont::GetBoundingBoxesForGlyphs |
| calling | TCombiningEngine::ResolveCombiningMarks | TCombiningEngine::ResolveCombiningMarks |
| paramcount | 3 | 3 |
address |
18340995c | 1833e06b0 |
| sig | undefined __swiftcall ComposeGlyphs(long param_1, TInlineVector * param_2, TInlineVector * param_3) | undefined __swiftcall ComposeGlyphs(long param_1, TInlineVector * param_2, TInlineVector * param_3) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TGlyphComposer::ComposeGlyphs
+++ TGlyphComposer::ComposeGlyphs
@@ -1,932 +1,934 @@
-/* WARNING: Removing unreachable block (ram,0x000183409a9c) */
-/* WARNING: Heritage AFTER dead removal. Example location: x0 : 0x00018340a6a4 */
-/* WARNING: Removing unreachable block (ram,0x000183409c80) */
-/* WARNING: Removing unreachable block (ram,0x000183409c84) */
-/* WARNING: Removing unreachable block (ram,0x000183409ca0) */
-/* WARNING: Removing unreachable block (ram,0x000183409c90) */
-/* WARNING: Removing unreachable block (ram,0x000183409c9c) */
-/* WARNING: Removing unreachable block (ram,0x000183409ca8) */
-/* WARNING: Type propagation algorithm not settling */
+/* WARNING: Removing unreachable block (ram,0x0001833e07f0) */
+/* WARNING: Heritage AFTER dead removal. Example location: x0 : 0x0001833e1430 */
+/* WARNING: Removing unreachable block (ram,0x0001833e09d4) */
+/* WARNING: Removing unreachable block (ram,0x0001833e09d8) */
+/* WARNING: Removing unreachable block (ram,0x0001833e09f4) */
+/* WARNING: Removing unreachable block (ram,0x0001833e09e4) */
+/* WARNING: Removing unreachable block (ram,0x0001833e09f0) */
+/* WARNING: Removing unreachable block (ram,0x0001833e09fc) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: register */
/* TGlyphComposer::ComposeGlyphs(long, TInlineVector<unsigned short, 30ul> const&,
TInlineVector<long, 30ul> const&) */
bool TGlyphComposer::ComposeGlyphs(long param_1,TInlineVector *param_2,TInlineVector *param_3)
{
TInlineVector *pTVar1;
ushort *puVar2;
uint uVar3;
double *pdVar4;
ushort *puVar5;
undefined8 *puVar6;
undefined8 *puVar7;
TInlineVector TVar8;
- ushort uVar9;
- double *pdVar10;
- code *pcVar11;
- bool bVar12;
+ short sVar9;
+ ushort uVar10;
+ double *pdVar11;
+ code *pcVar12;
bool bVar13;
bool bVar14;
+ bool bVar15;
long in_tmp_ldXn;
- uint uVar15;
- ulong uVar16;
- long lVar17;
+ uint uVar16;
+ ulong uVar17;
long lVar18;
- long *plVar19;
- long *******ppppppplVar20;
- long lVar21;
- piecewise_construct_t *ppVar22;
- long *******ppppppplVar23;
+ long lVar19;
+ long *plVar20;
+ long **pplVar21;
+ long lVar22;
+ long *plVar23;
piecewise_construct_t *ppVar24;
- TBaseFont *pTVar25;
- size_t sVar26;
+ TStorageRange *pTVar25;
+ piecewise_construct_t *ppVar26;
+ TBaseFont *pTVar27;
+ size_t sVar28;
long *in_x3;
- tuple *ptVar27;
- long lVar28;
- TBaseFont *pTVar29;
+ tuple *ptVar29;
long lVar30;
- piecewise_construct_t *ppVar31;
- TInlineVector *pTVar32;
- ulong uVar33;
- TLine *pTVar34;
+ TBaseFont *pTVar31;
+ long lVar32;
+ piecewise_construct_t *ppVar33;
+ TInlineVector *pTVar34;
+ ulong uVar35;
+ TLine *pTVar36;
TLine *unaff_x20;
- TRun *pTVar35;
+ TRun *pTVar37;
TFont *this;
- piecewise_construct_t *ppVar36;
- TLine *pTVar37;
+ piecewise_construct_t *ppVar38;
+ TLine *pTVar39;
__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
- *p_Var38;
- long lVar39;
- undefined8 *puVar40;
- TInlineVector *pTVar41;
- TBaseFont *pTVar42;
- TBaseFont *pTVar43;
- long ******pppppplVar44;
- double dVar45;
- double dVar46;
- TStorageRange *pTVar47;
- TStorageRange *pTVar48;
+ *p_Var40;
+ long lVar41;
+ TStorageRange *pTVar42;
+ undefined8 *puVar43;
+ TInlineVector *pTVar44;
+ TBaseFont *pTVar45;
+ TBaseFont *pTVar46;
+ double dVar47;
+ double dVar48;
TStorageRange *pTVar49;
- double dVar50;
+ TStorageRange *pTVar50;
+ double dVar51;
double in_d1;
- TStorageRange *pTVar51;
TStorageRange *pTVar52;
+ TStorageRange *pTVar53;
TStorageRange *in_d2;
double in_d3;
- TStorageRange *pTVar53;
- double dVar54;
+ TStorageRange *pTVar54;
TStorageRange *pTVar55;
- double dVar56;
+ TStorageRange *pTVar56;
double dVar57;
- TStorageRange *local_478;
- TStorageRange *local_470;
- double local_458;
- double local_428;
- TStorageRange *local_420;
+ double dVar58;
+ TStorageRange *pTVar59;
+ double dVar60;
+ TStorageRange *local_488;
+ TStorageRange *local_480;
+ double local_450;
+ double local_420;
TStorageRange *local_400;
TStorageRange *local_3f8;
TStorageRange *local_3f0;
int local_3b4;
piecewise_construct_t *local_3b0;
undefined1 *puStack_3a8;
TStorageRange *pTStack_3a0;
undefined1 *puStack_398;
undefined1 *local_390;
undefined1 *puStack_388;
undefined1 *puStack_380;
undefined1 *puStack_378;
undefined1 *local_370;
undefined1 *puStack_368;
undefined1 *local_360;
TInlineVector *local_358;
- long *******local_350;
+ long *local_350;
undefined8 uStack_348;
TLine *local_340;
long local_338;
undefined8 local_330;
piecewise_construct_t *local_320;
undefined1 *puStack_318;
TStorageRange *local_310;
undefined1 *puStack_308;
undefined1 *local_300;
undefined1 *puStack_2f8;
undefined1 *local_2f0;
undefined1 *puStack_2e8;
undefined1 *local_2e0;
undefined1 *puStack_2d8;
undefined1 *local_2d0;
piecewise_construct_t *local_2c0;
piecewise_construct_t *ppStack_2b8;
piecewise_construct_t *local_2b0;
undefined1 *local_2a8;
undefined1 *puStack_2a0;
undefined1 *local_298;
undefined1 *puStack_290;
undefined1 *local_288;
undefined1 *puStack_280;
undefined1 *local_278;
undefined1 *puStack_270;
undefined1 *local_268;
undefined1 *puStack_260;
undefined1 *local_258;
undefined1 *puStack_250;
undefined1 *local_248;
undefined1 *puStack_240;
undefined1 *local_238;
undefined1 *puStack_230;
undefined1 *local_228;
undefined1 *puStack_220;
undefined1 *local_218;
undefined1 *puStack_210;
undefined1 *local_208;
undefined1 *puStack_200;
undefined1 *local_1f8;
undefined1 *puStack_1f0;
undefined1 *local_1e8;
undefined1 *puStack_1e0;
undefined1 *local_1d8;
undefined1 *puStack_1d0;
undefined1 *local_1c8;
undefined1 *puStack_1c0;
undefined1 *local_1b8;
undefined1 *puStack_1b0;
undefined1 *local_1a8;
undefined1 *puStack_1a0;
undefined1 *puStack_198;
undefined1 *puStack_190;
undefined1 *local_188;
undefined1 *puStack_180;
undefined1 *puStack_178;
undefined1 *puStack_170;
undefined1 *local_168;
undefined1 *puStack_160;
undefined1 *puStack_158;
undefined1 *puStack_150;
undefined1 *local_148;
undefined1 *puStack_140;
undefined1 *puStack_138;
undefined1 *puStack_130;
undefined1 *local_128;
undefined1 *puStack_120;
undefined1 *puStack_118;
undefined1 *puStack_110;
undefined1 *local_108;
undefined1 *puStack_100;
undefined1 *puStack_f8;
undefined1 *puStack_f0;
undefined1 *local_e8;
undefined1 *puStack_e0;
undefined1 *puStack_d8;
undefined1 *puStack_d0;
piecewise_construct_t *local_c8 [2];
long local_b8;
local_b8 = *_DAT_0;
- uVar16 = *(ulong *)param_1;
- TLine::FindRunWithCharIndex(unaff_x20,uVar16,(int)param_2);
- lVar21 = *(long *)(*(long *)param_1 + 0x10);
- if ((ulong)(*(long *)(*(long *)param_1 + 0x18) - lVar21 >> 3) <= uVar16) {
+ uVar17 = *(ulong *)param_1;
+ TLine::FindRunWithCharIndex(unaff_x20,uVar17,(int)param_2);
+ lVar22 = *(long *)(*(long *)param_1 + 0x10);
+ if ((ulong)(*(long *)(*(long *)param_1 + 0x18) - lVar22 >> 3) <= uVar17) {
LAB_1:
/* WARNING: Does not return */
- pcVar11 = (code *)SoftwareBreakpoint(1,0x18340ab10);
- (*pcVar11)();
+ pcVar12 = (code *)SoftwareBreakpoint(1,0x1833e1890);
+ (*pcVar12)();
}
- pTVar32 = *(TInlineVector **)(*(long *)(lVar21 + uVar16 * 8) + 0x30);
- TVar8 = pTVar32[0xe0];
- pTVar35 = *(TRun **)(pTVar32 + 8);
- lVar21 = *(long *)(pTVar32 + 0x10);
- lVar17 = TRun::GetGlyphIndexForCharIndex<false>(pTVar35,(long)pTVar32);
- ptVar27 = (tuple *)(*(long *)(pTVar32 + 200) + lVar17);
+ pTVar34 = *(TInlineVector **)(*(long *)(lVar22 + uVar17 * 8) + 0x30);
+ TVar8 = pTVar34[0xe0];
+ pTVar37 = *(TRun **)(pTVar34 + 8);
+ lVar22 = *(long *)(pTVar34 + 0x10);
+ lVar18 = TRun::GetGlyphIndexForCharIndex<false>(pTVar37,(long)pTVar34);
+ ptVar29 = (tuple *)(*(long *)(pTVar34 + 200) + lVar18);
_objc_msgSend_setProps_atIndex_();
- lVar39 = *(long *)(in_tmp_ldXn + 0x28);
- lVar18 = *(long *)(lVar39 + 0x198);
- TBaseFont::GetGlyphCount((TBaseFont *)pTVar35);
+ lVar41 = *(long *)(in_tmp_ldXn + 0x28);
+ lVar19 = *(long *)(lVar41 + 0x198);
+ TBaseFont::GetGlyphCount((TBaseFont *)pTVar37);
local_2d0 = &SUB_2;
puStack_2e8 = &SUB_2;
local_2f0 = &SUB_2;
puStack_2d8 = &SUB_2;
local_2e0 = &SUB_2;
puStack_308 = &SUB_2;
local_310 = (TStorageRange *)&SUB_2;
puStack_2f8 = &SUB_2;
local_300 = &SUB_2;
puStack_318 = &SUB_2;
local_320 = (piecewise_construct_t *)&SUB_2;
TBaseFont::GetCommonTable
- ((TBaseFont *)pTVar35,(uint)*(undefined8 *)(lVar39 + 0x198),(uint *)0x47444546);
- OTL::GDEF::GDEF((GDEF *)pTVar35,(__CFData *)&local_320);
+ ((TBaseFont *)pTVar37,(uint)*(undefined8 *)(lVar41 + 0x198),(uint *)0x47444546);
+ OTL::GDEF::GDEF((GDEF *)pTVar37,(__CFData *)&local_320);
puVar5 = *(ushort **)param_3;
- lVar28 = *(long *)(param_3 + 8);
- plVar19 = *(long **)(lVar39 + 0x198);
- (**(code **)(*plVar19 + 0x2e8))(*plVar19 + 0x2e8);
- if (((ulong)plVar19 & 1) == 0) {
- ppppppplVar20 = *(long ********)(lVar39 + 0x198);
- (*(code *)(*ppppppplVar20)[0x5a])();
- if (((ulong)ppppppplVar20 & 1) == 0) {
- p_Var38 = (__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
- *)pTVar35 + lVar21;
- pTVar42 = (TBaseFont *)0x1;
- if ((((*puVar5 & 0xfc00) == 0xd800) && (lVar28 - (long)puVar5 != 2)) &&
- (pTVar42 = (TBaseFont *)0x1, (puVar5[1] & 0xfc00) == 0xdc00)) {
- pTVar42 = (TBaseFont *)0x2;
+ lVar30 = *(long *)(param_3 + 8);
+ plVar20 = *(long **)(lVar41 + 0x198);
+ (**(code **)(*plVar20 + 0x2e8))(*plVar20 + 0x2e8);
+ if (((ulong)plVar20 & 1) == 0) {
+ pplVar21 = *(long ***)(lVar41 + 0x198);
+ (*(code *)(*pplVar21)[0x5a])();
+ if (((ulong)pplVar21 & 1) == 0) {
+ p_Var40 = (__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
+ *)pTVar37 + lVar22;
+ pTVar45 = (TBaseFont *)0x1;
+ if ((((*puVar5 & 0xfc00) == 0xd800) && (lVar30 - (long)puVar5 != 2)) &&
+ (pTVar45 = (TBaseFont *)0x1, (puVar5[1] & 0xfc00) == 0xdc00)) {
+ pTVar45 = (TBaseFont *)0x2;
}
- pTVar25 = (TBaseFont *)(lVar28 - (long)puVar5 >> 1);
- if (pTVar32[0x5a] != (TInlineVector)0x1) {
- pppppplVar44 = (long ******)0x0;
+ pTVar27 = (TBaseFont *)(lVar30 - (long)puVar5 >> 1);
+ if (pTVar34[0x5a] != (TInlineVector)0x1) {
+ plVar20 = (long *)0x0;
uStack_348 = 0;
- local_350 = (long *******)0x0;
+ local_350 = (long *)0x0;
local_338 = 0;
local_340 = (TLine *)0x0;
local_330 = 0xaaaaaaaa3f800000;
std::
__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
::__rehash<true>((__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
- *)pTVar35,(ulong)&local_350);
- pTVar29 = pTVar25;
- if (pTVar42 < pTVar25) {
- pTVar35 = (TRun *)&IsPossiblyAcceptable(UScriptCode)::kExcludedScripts;
- pTVar43 = pTVar42;
+ *)pTVar37,(ulong)&local_350);
+ pTVar31 = pTVar27;
+ if (pTVar45 < pTVar27) {
+ pTVar37 = (TRun *)&IsPossiblyAcceptable(UScriptCode)::kExcludedScripts;
+ pTVar46 = pTVar45;
do {
- pTVar42 = pTVar43 + 1;
- uVar9 = puVar5[(long)pTVar43];
- uVar15 = (uint)uVar9;
- if ((pTVar42 != pTVar25) && ((uVar9 & 0xfc00) == 0xd800)) {
- puVar2 = puVar5 + (long)pTVar42;
- pTVar42 = pTVar43 + 2;
- uVar15 = (uint)uVar9 * 0x400 + -0x35fdc00 + (uint)*puVar2;
+ pTVar45 = pTVar46 + 1;
+ uVar10 = puVar5[(long)pTVar46];
+ uVar16 = (uint)uVar10;
+ if ((pTVar45 != pTVar27) && ((uVar10 & 0xfc00) == 0xd800)) {
+ puVar2 = puVar5 + (long)pTVar45;
+ pTVar45 = pTVar46 + 2;
+ uVar16 = (uint)uVar10 * 0x400 + -0x35fdc00 + (uint)*puVar2;
if ((*puVar2 & 0xfc00) != 0xdc00) {
- pTVar42 = pTVar43 + 1;
- uVar15 = (uint)uVar9;
+ pTVar45 = pTVar46 + 1;
+ uVar16 = (uint)uVar10;
}
}
- _u_hasBinaryProperty(uVar15,5);
- pTVar29 = pTVar43;
- if ((int)ppppppplVar20 != 0) break;
- if (0x58f < uVar15) {
- if (uVar15 < 0x700) break;
- ScriptCodeForLongCharacter(uVar15);
- }
- if ((TBaseFont *)(in_x3[1] - *in_x3 >> 3) <= pTVar43) goto LAB_1;
- local_3b0 = *(piecewise_construct_t **)(*in_x3 + (long)pTVar43 * 8);
+ _u_hasBinaryProperty(uVar16,5);
+ pTVar31 = pTVar46;
+ if ((int)pplVar21 != 0) break;
+ if (0x58f < uVar16) {
+ if (uVar16 < 0x700) break;
+ ScriptCodeForLongCharacter(uVar16);
+ }
+ if ((TBaseFont *)(in_x3[1] - *in_x3 >> 3) <= pTVar46) goto LAB_1;
+ local_3b0 = *(piecewise_construct_t **)(*in_x3 + (long)pTVar46 * 8);
local_2c0 = (piecewise_construct_t *)&local_3b0;
- ppppppplVar20 = (long *******)&local_350;
+ pplVar21 = &local_350;
std::
__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
::
__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long_const&>,std::tuple<>>
- ((long *)ppppppplVar20,local_3b0,(tuple *)&local_2c0,ptVar27);
- pppppplVar44 = (long ******)*_DAT_3;
- ppppppplVar20[4] = (long ******)_DAT_3[1];
- ppppppplVar20[3] = pppppplVar44;
- pTVar29 = pTVar25;
- pTVar43 = pTVar42;
- } while (pTVar42 < pTVar25);
+ ((long *)pplVar21,local_3b0,(tuple *)&local_2c0,ptVar29);
+ plVar20 = (long *)*_DAT_3;
+ pplVar21[4] = (long *)_DAT_3[1];
+ pplVar21[3] = plVar20;
+ pTVar31 = pTVar27;
+ pTVar46 = pTVar45;
+ } while (pTVar45 < pTVar27);
}
if (local_338 == 0) {
LAB_4:
- bVar14 = false;
- ppppppplVar20 = local_350;
- pTVar37 = local_340;
+ bVar15 = false;
+ plVar20 = local_350;
+ pTVar39 = local_340;
}
else {
- lVar21 = TRun::GetGlyphIndexForCharIndex<false>(pTVar35,(long)pTVar32);
- if ((*(uint *)(*(long *)(*(long *)(pTVar32 + 0xd8) + 0x28) + *(long *)(pTVar32 + 200) * 4
- + lVar21 * 4) & 0x380) != 0) goto LAB_4;
- uVar9 = *(ushort *)
- (*(long *)(*(long *)(pTVar32 + 0xd8) + 0x10) + *(long *)(pTVar32 + 200) * 2 +
- lVar21 * 2);
- this = (TFont *)(ulong)uVar9;
- if (((byte)pTVar32[0xe1] >> 4 & 1) == 0) {
- pppppplVar44 = (long ******)*_DAT_3;
- dVar46 = _DAT_3[1];
+ lVar22 = TRun::GetGlyphIndexForCharIndex<false>(pTVar37,(long)pTVar34);
+ if ((*(uint *)(*(long *)(*(long *)(pTVar34 + 0xd8) + 0x28) + *(long *)(pTVar34 + 200) * 4
+ + lVar22 * 4) & 0x380) != 0) goto LAB_4;
+ uVar10 = *(ushort *)
+ (*(long *)(*(long *)(pTVar34 + 0xd8) + 0x10) + *(long *)(pTVar34 + 200) * 2 +
+ lVar22 * 2);
+ this = (TFont *)(ulong)uVar10;
+ if (((byte)pTVar34[0xe1] >> 4 & 1) == 0) {
+ plVar20 = (long *)*_DAT_3;
+ dVar48 = _DAT_3[1];
}
else {
_objc_msgSend_originAtIndex_();
- dVar46 = in_d1;
- }
- local_3b0 = (piecewise_construct_t *)CONCAT62(local_3b0._2_6_,uVar9);
- dVar45 = -NAN;
+ dVar48 = in_d1;
+ }
+ local_3b0 = (piecewise_construct_t *)CONCAT62(local_3b0._2_6_,uVar10);
+ dVar47 = -NAN;
ppStack_2b8 = (piecewise_construct_t *)0xffffffffffffffff;
local_2c0 = (piecewise_construct_t *)0xffffffffffffffff;
local_2a8 = (undefined1 *)0xffffffffffffffff;
local_2b0 = (piecewise_construct_t *)0xffffffffffffffff;
- TFont::GetBoundingBoxesForGlyphs(lVar39,&local_3b0,&local_2c0,1,0);
- lVar28 = *(long *)(*(long *)(pTVar32 + 0xd8) + 0x20);
- if ((lVar28 == 0) && (lVar30 = *(long *)(*(long *)(pTVar32 + 0xd8) + 0x18), lVar30 != 0))
+ TFont::GetBoundingBoxesForGlyphs(lVar41,&local_3b0,&local_2c0,1,0);
+ lVar30 = *(long *)(*(long *)(pTVar34 + 0xd8) + 0x20);
+ if ((lVar30 == 0) && (lVar32 = *(long *)(*(long *)(pTVar34 + 0xd8) + 0x18), lVar32 != 0))
{
- puVar40 = (undefined8 *)(lVar30 + *(long *)(pTVar32 + 200) * 8 + lVar21 * 8);
- dVar57 = 0.0;
+ puVar43 = (undefined8 *)(lVar32 + *(long *)(pTVar34 + 200) * 8 + lVar22 * 8);
+ dVar58 = 0.0;
}
else {
- puVar40 = (undefined8 *)(lVar28 + *(long *)(pTVar32 + 200) * 0x10 + lVar21 * 0x10);
- dVar57 = (double)puVar40[1];
- }
- pTVar55 = (TStorageRange *)((double)pppppplVar44 + dVar45);
- local_3f0 = (TStorageRange *)(dVar46 + in_d1);
- local_420 = (TStorageRange *)*puVar40;
- dVar56 = *_DAT_3;
- dVar45 = _DAT_3[1];
- local_400 = local_420;
+ puVar43 = (undefined8 *)(lVar30 + *(long *)(pTVar34 + 200) * 0x10 + lVar22 * 0x10);
+ dVar58 = (double)puVar43[1];
+ }
+ pTVar55 = (TStorageRange *)((double)plVar20 + dVar47);
+ local_3f0 = (TStorageRange *)(dVar48 + in_d1);
+ local_400 = (TStorageRange *)*puVar43;
+ dVar60 = *_DAT_3;
+ dVar47 = _DAT_3[1];
+ local_3f8 = local_400;
if ((double)in_d2 != 0.0) {
- local_400 = in_d2;
- }
- pTVar42 = pTVar42 + (long)param_2;
- pTVar51 = (TStorageRange *)0xffffffffffffffff;
- local_458 = -NAN;
- pTVar41 = pTVar32;
- dVar54 = in_d3;
+ local_3f8 = in_d2;
+ }
+ pTVar45 = pTVar45 + (long)param_2;
+ pTVar52 = (TStorageRange *)0xffffffffffffffff;
+ local_450 = -NAN;
+ pTVar44 = pTVar34;
+ dVar57 = in_d3;
local_358 = param_2;
- if ((long)pTVar42 <
+ if ((long)pTVar45 <
*(long *)(*(long *)param_1 + 0x50) + *(long *)(*(long *)param_1 + 0x48)) {
do {
- lVar21 = *(long *)(pTVar41 + 8);
- if ((lVar21 <= (long)pTVar42 &&
- (TBaseFont *)(*(long *)(pTVar41 + 0x10) + lVar21) != pTVar42) &&
- ((long)pTVar42 < lVar21 || (long)pTVar42 <= *(long *)(pTVar41 + 0x10) + lVar21)) {
- if (pTVar32 != pTVar41) {
- if ((pTVar32[0xe0] != pTVar41[0xe0]) || (pTVar32[0x5a] != pTVar41[0x5a])) break;
- dVar50 = 0.0;
- pTVar51 = (TStorageRange *)0x0;
- if (*(long *)(pTVar32 + 0xa0) != 0) {
- pTVar51 = *(TStorageRange **)(*(long *)(pTVar32 + 0xa0) + 0x30);
- }
- if (*(long *)(pTVar41 + 0xa0) != 0) {
- dVar50 = *(double *)(*(long *)(pTVar41 + 0xa0) + 0x30);
- }
- if ((double)pTVar51 != dVar50) break;
+ lVar22 = *(long *)(pTVar44 + 8);
+ if ((lVar22 <= (long)pTVar45 &&
+ (TBaseFont *)(*(long *)(pTVar44 + 0x10) + lVar22) != pTVar45) &&
+ ((long)pTVar45 < lVar22 || (long)pTVar45 <= *(long *)(pTVar44 + 0x10) + lVar22)) {
+ if (pTVar34 != pTVar44) {
+ if ((pTVar34[0xe0] != pTVar44[0xe0]) || (pTVar34[0x5a] != pTVar44[0x5a])) break;
+ dVar51 = 0.0;
+ pTVar52 = (TStorageRange *)0x0;
+ if (*(long *)(pTVar34 + 0xa0) != 0) {
+ pTVar52 = *(TStorageRange **)(*(long *)(pTVar34 + 0xa0) + 0x30);
+ }
+ if (*(long *)(pTVar44 + 0xa0) != 0) {
+ dVar51 = *(double *)(*(long *)(pTVar44 + 0xa0) + 0x30);
+ }
+ if ((double)pTVar52 != dVar51) break;
}
- pTVar48 = (TStorageRange *)0xffffffffffffff00;
- lVar21 = TRun::GetGlyphIndexForCharIndex<false>((TRun *)this,(long)pTVar41);
- pTVar47 = pTVar55;
- pTVar52 = local_400;
- local_478 = local_3f0;
- local_470 = local_400;
- local_458 = in_d3;
- if (*(long *)(in_tmp_ldXn + 0x28) != lVar39 ||
+ pTVar42 = (TStorageRange *)0xffffffffffffff00;
+ lVar22 = TRun::GetGlyphIndexForCharIndex<false>((TRun *)this,(long)pTVar44);
+ pTVar49 = pTVar55;
+ pTVar53 = local_3f8;
+ local_488 = local_3f0;
+ local_480 = local_3f8;
+ local_450 = in_d3;
+ if (*(long *)(in_tmp_ldXn + 0x28) != lVar41 ||
(uint)*(ushort *)
- (*(long *)(*(long *)(pTVar41 + 0xd8) + 0x10) +
- *(long *)(pTVar41 + 200) * 2 + lVar21 * 2) != (uint)this) {
+ (*(long *)(*(long *)(pTVar44 + 0xd8) + 0x10) +
+ *(long *)(pTVar44 + 200) * 2 + lVar22 * 2) != (uint)this) {
TFont::GetBoundingBoxForGlyph(this,(ushort)*(long *)(in_tmp_ldXn + 0x28));
- pTVar47 = pTVar48;
- pTVar52 = pTVar51;
- local_478 = pTVar51;
- local_470 = in_d2;
- local_458 = dVar54;
+ pTVar49 = pTVar42;
+ pTVar53 = pTVar52;
+ local_488 = pTVar52;
+ local_480 = in_d2;
+ local_450 = dVar57;
}
- bVar14 = true;
+ bVar15 = true;
goto LAB_5;
}
- pTVar1 = pTVar41 + 0x18;
- pTVar41 = *(TInlineVector **)pTVar1;
+ pTVar1 = pTVar44 + 0x18;
+ pTVar44 = *(TInlineVector **)pTVar1;
} while (*(TInlineVector **)pTVar1 != (TInlineVector *)0x0);
}
- pTVar52 = (TStorageRange *)0xffffffffffffffff;
- pTVar47 = (TStorageRange *)0xffffffffffffff00;
- bVar14 = false;
- local_478 = (TStorageRange *)0xffffffffffffffff;
- local_470 = (TStorageRange *)0xffffffffffffffff;
+ pTVar53 = (TStorageRange *)0xffffffffffffffff;
+ pTVar49 = (TStorageRange *)0xffffffffffffff00;
+ bVar15 = false;
+ local_488 = (TStorageRange *)0xffffffffffffffff;
+ local_480 = (TStorageRange *)0xffffffffffffffff;
LAB_5:
- pTVar42 = (TBaseFont *)0x1;
- if (((pTVar29 != (TBaseFont *)0x1) && ((*puVar5 & 0xfc00) == 0xd800)) &&
- (pTVar42 = (TBaseFont *)0x1, (puVar5[1] & 0xfc00) == 0xdc00)) {
- pTVar42 = (TBaseFont *)0x2;
+ pTVar45 = (TBaseFont *)0x1;
+ if (((pTVar31 != (TBaseFont *)0x1) && ((*puVar5 & 0xfc00) == 0xd800)) &&
+ (pTVar45 = (TBaseFont *)0x1, (puVar5[1] & 0xfc00) == 0xdc00)) {
+ pTVar45 = (TBaseFont *)0x2;
}
puStack_e0 = &SUB_2;
local_e8 = &SUB_2;
puStack_d0 = &SUB_2;
puStack_d8 = &SUB_2;
puStack_100 = &SUB_2;
local_108 = &SUB_2;
puStack_f0 = &SUB_2;
puStack_f8 = &SUB_2;
puStack_120 = &SUB_2;
local_128 = &SUB_2;
puStack_110 = &SUB_2;
puStack_118 = &SUB_2;
puStack_140 = &SUB_2;
local_148 = &SUB_2;
puStack_130 = &SUB_2;
puStack_138 = &SUB_2;
puStack_160 = &SUB_2;
local_168 = &SUB_2;
puStack_150 = &SUB_2;
puStack_158 = &SUB_2;
puStack_180 = &SUB_2;
local_188 = &SUB_2;
puStack_170 = &SUB_2;
puStack_178 = &SUB_2;
puStack_1a0 = &SUB_2;
local_1a8 = &SUB_2;
puStack_190 = &SUB_2;
puStack_198 = &SUB_2;
puStack_1b0 = &SUB_2;
local_1b8 = &SUB_2;
puStack_1c0 = &SUB_2;
local_1c8 = &SUB_2;
puStack_1d0 = &SUB_2;
local_1d8 = &SUB_2;
puStack_1e0 = &SUB_2;
local_1e8 = &SUB_2;
puStack_1f0 = &SUB_2;
local_1f8 = &SUB_2;
puStack_200 = &SUB_2;
local_208 = &SUB_2;
puStack_210 = &SUB_2;
local_218 = &SUB_2;
puStack_220 = &SUB_2;
local_228 = &SUB_2;
puStack_230 = &SUB_2;
local_238 = &SUB_2;
puStack_240 = &SUB_2;
local_248 = &SUB_2;
puStack_250 = &SUB_2;
local_258 = &SUB_2;
puStack_260 = &SUB_2;
local_268 = &SUB_2;
puStack_270 = &SUB_2;
local_278 = &SUB_2;
puStack_280 = &SUB_2;
local_288 = &SUB_2;
puStack_290 = &SUB_2;
local_298 = &SUB_2;
puStack_2a0 = &SUB_2;
local_2a8 = &SUB_2;
local_2c0 = (piecewise_construct_t *)0x0;
ppStack_2b8 = (piecewise_construct_t *)0x0;
local_2b0 = (piecewise_construct_t *)0x0;
local_c8[0] = (piecewise_construct_t *)&local_2a8;
- if (pTVar42 < pTVar29) {
- bVar12 = false;
- local_3f8 = (TStorageRange *)0x0;
- pTVar41 = pTVar32;
- local_428 = in_d3;
+ if (pTVar45 < pTVar31) {
+ bVar13 = false;
+ pTVar52 = (TStorageRange *)0x0;
+ pTVar44 = pTVar34;
+ local_420 = in_d3;
do {
- pTVar25 = pTVar42 + 1;
- uVar9 = puVar5[(long)pTVar42];
- ppppppplVar20 = (long *******)(ulong)uVar9;
- if ((pTVar25 != pTVar29) && ((uVar9 & 0xfc00) == 0xd800)) {
- puVar2 = puVar5 + (long)pTVar25;
- pTVar25 = pTVar42 + 2;
- bVar13 = (*puVar2 & 0xfc00) == 0xdc00;
- uVar15 = (uint)uVar9;
- if (bVar13) {
- uVar15 = (uint)*puVar2 + (uint)uVar9 * 0x400 + 0xfca02400;
+ pTVar27 = pTVar45 + 1;
+ uVar10 = puVar5[(long)pTVar45];
+ pTVar42 = (TStorageRange *)(ulong)uVar10;
+ if ((pTVar27 != pTVar31) && ((uVar10 & 0xfc00) == 0xd800)) {
+ puVar2 = puVar5 + (long)pTVar27;
+ pTVar27 = pTVar45 + 2;
+ bVar14 = (*puVar2 & 0xfc00) == 0xdc00;
+ uVar16 = (uint)uVar10;
+ if (bVar14) {
+ uVar16 = (uint)*puVar2 + (uint)uVar10 * 0x400 + 0xfca02400;
}
- ppppppplVar20 = (long *******)(ulong)uVar15;
- if (!bVar13) {
- pTVar25 = pTVar42 + 1;
+ pTVar42 = (TStorageRange *)(ulong)uVar16;
+ if (!bVar14) {
+ pTVar27 = pTVar45 + 1;
}
}
- if ((TBaseFont *)(in_x3[1] - *in_x3 >> 3) <= pTVar42) goto LAB_1;
- local_358 = *(TInlineVector **)(*in_x3 + (long)pTVar42 * 8);
- pTVar42 = pTVar25;
- if ((long)p_Var38 <= (long)local_358) {
+ if ((TBaseFont *)(in_x3[1] - *in_x3 >> 3) <= pTVar45) goto LAB_1;
+ local_358 = *(TInlineVector **)(*in_x3 + (long)pTVar45 * 8);
+ if ((long)p_Var40 <= (long)local_358) {
do {
- pTVar41 = *(TInlineVector **)(pTVar41 + 0x18);
- if (pTVar41 == (TInlineVector *)0x0) goto LAB_6;
- p_Var38 = (__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
- *)(*(long *)(pTVar41 + 0x10) + *(long *)(pTVar41 + 8));
- lVar39 = *(long *)(in_tmp_ldXn + 0x28);
- lVar18 = *(long *)(lVar39 + 0x198);
- TBaseFont::GetGlyphCount(pTVar25);
+ pTVar44 = *(TInlineVector **)(pTVar44 + 0x18);
+ if (pTVar44 == (TInlineVector *)0x0) goto LAB_6;
+ p_Var40 = (__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
+ *)(*(long *)(pTVar44 + 0x10) + *(long *)(pTVar44 + 8));
+ lVar41 = *(long *)(in_tmp_ldXn + 0x28);
+ lVar19 = *(long *)(lVar41 + 0x198);
+ TBaseFont::GetGlyphCount(pTVar27);
TBaseFont::GetCommonTable
- (pTVar25,(uint)*(undefined8 *)(lVar39 + 0x198),(uint *)0x47444546);
- OTL::GDEF::GDEF((GDEF *)pTVar25,(__CFData *)&local_3b0);
+ (pTVar27,(uint)*(undefined8 *)(lVar41 + 0x198),(uint *)0x47444546);
+ OTL::GDEF::GDEF((GDEF *)pTVar27,(__CFData *)&local_3b0);
puStack_2f8 = puStack_388;
local_300 = local_390;
puStack_2e8 = puStack_378;
local_2f0 = puStack_380;
puStack_2d8 = puStack_368;
local_2e0 = local_370;
local_2d0 = local_360;
puStack_318 = puStack_3a8;
local_320 = local_3b0;
puStack_308 = puStack_398;
local_310 = pTStack_3a0;
- } while ((long)p_Var38 <= (long)local_358);
- plVar19 = *(long **)(lVar39 + 0x198);
- pTVar52 = pTStack_3a0;
- (**(code **)(*plVar19 + 0x2e8))();
- if (((ulong)plVar19 & 1) != 0) break;
- plVar19 = *(long **)(lVar39 + 0x198);
- (**(code **)(*plVar19 + 0x2d0))();
- if (((((ulong)plVar19 & 1) != 0) || (pTVar41[0xe0] != TVar8)) ||
- (pTVar42 = pTVar25, ((byte)pTVar41[0x5a] & 1) != 0)) break;
+ } while ((long)p_Var40 <= (long)local_358);
+ plVar23 = *(long **)(lVar41 + 0x198);
+ pTVar53 = pTStack_3a0;
+ (**(code **)(*plVar23 + 0x2e8))();
+ if (((ulong)plVar23 & 1) != 0) break;
+ plVar23 = *(long **)(lVar41 + 0x198);
+ (**(code **)(*plVar23 + 0x2d0))();
+ if (((((ulong)plVar23 & 1) != 0) || (pTVar44[0xe0] != TVar8)) ||
+ (((byte)pTVar44[0x5a] & 1) != 0)) break;
+ lVar22 = TRun::GetGlyphIndexForCharIndex<false>((TRun *)pTVar27,(long)pTVar44);
+ local_358 = *(TInlineVector **)
+ (*(long *)(*(long *)(pTVar44 + 0xd8) + 0x30) +
+ *(long *)(pTVar44 + 200) * 8 + lVar22 * 8);
}
- ppVar22 = (piecewise_construct_t *)
- TRun::GetGlyphIndexForCharIndex<false>((TRun *)pTVar42,(long)pTVar41);
- uVar9 = *(ushort *)
- (*(long *)(*(long *)(pTVar41 + 0xd8) + 0x10) + *(long *)(pTVar41 + 200) * 2 +
- (long)ppVar22 * 2);
- ppVar36 = local_2c0;
- ppVar24 = local_2b0;
- if ((long)(ulong)uVar9 < lVar18) {
- local_3b4 = CONCAT22(local_3b4._2_2_,uVar9);
- pTVar48 = (TStorageRange *)0xffffffffffffffff;
+ ppVar24 = (piecewise_construct_t *)
+ TRun::GetGlyphIndexForCharIndex<false>((TRun *)pTVar27,(long)pTVar44);
+ uVar10 = *(ushort *)
+ (*(long *)(*(long *)(pTVar44 + 0xd8) + 0x10) + *(long *)(pTVar44 + 200) * 2
+ + (long)ppVar24 * 2);
+ pTVar45 = pTVar27;
+ ppVar38 = local_2c0;
+ ppVar26 = local_2b0;
+ if ((long)(ulong)uVar10 < lVar19) {
+ local_3b4 = CONCAT22(local_3b4._2_2_,uVar10);
+ pTVar50 = (TStorageRange *)0xffffffffffffffff;
puStack_3a8 = (undefined1 *)0xffffffffffffffff;
local_3b0 = (piecewise_construct_t *)0xffffffffffffffff;
puStack_398 = (undefined1 *)0xffffffffffffffff;
pTStack_3a0 = (TStorageRange *)0xffffffffffffffff;
- ptVar27 = (tuple *)0x1;
- TFont::GetBoundingBoxesForGlyphs(lVar39,&local_3b4,&local_3b0,1,0);
+ ptVar29 = (tuple *)0x1;
+ TFont::GetBoundingBoxesForGlyphs(lVar41,&local_3b4,&local_3b0,1,0);
local_3b4 = 1;
- pTVar51 = local_310;
- OTL::ClassDefTable::ClassOf((ClassDefTable *)pTVar42,(ushort)local_310);
- if ((int)pTVar51 == 0 || (int)pTVar51 == 3) {
- ppppppplVar23 = ppppppplVar20;
+ pTVar25 = local_310;
+ OTL::ClassDefTable::ClassOf((ClassDefTable *)pTVar27,(ushort)local_310);
+ if ((int)pTVar25 == 0 || (int)pTVar25 == 3) {
+ pTVar25 = pTVar42;
_u_getCombiningClass();
- uVar15 = (uint)ppppppplVar23;
- if (uVar15 == 0) {
- uVar3 = (int)ppppppplVar20 - 0x20dd;
- pTVar25 = pTVar42;
+ uVar16 = (uint)pTVar25;
+ if (uVar16 == 0) {
+ uVar3 = (int)pTVar42 - 0x20dd;
+ pTVar45 = pTVar27;
if ((uVar3 < 8) && (uVar3 != 4)) {
- pTVar25 = (TBaseFont *)0x1;
+ pTVar45 = (TBaseFont *)0x1;
goto LAB_7;
}
LAB_8:
- _u_getIntPropertyValue(ppppppplVar20,0x1012);
- if (uVar15 == 10) {
+ _u_getIntPropertyValue(pTVar42,0x1012);
+ if (uVar16 == 10) {
local_3b4 = 0;
- pTVar51 = (TStorageRange *)*_DAT_3;
+ pTVar59 = (TStorageRange *)*_DAT_3;
goto LAB_9;
}
- _CFUniCharIsMemberOf(ppppppplVar20,8);
- pTVar51 = pTVar55;
- pTVar53 = local_3f0;
- if (((ulong)ppppppplVar20 & 1) == 0) {
- _CGRectGetMaxX(pTVar55,local_3f0,local_400,local_428);
- pTVar53 = (TStorageRange *)0x0;
+ _CFUniCharIsMemberOf(pTVar42,8);
+ pTVar59 = pTVar55;
+ pTVar56 = local_3f0;
+ if (((ulong)pTVar42 & 1) == 0) {
+ _CGRectGetMaxX(pTVar55,local_3f0,local_3f8,local_420);
+ pTVar56 = (TStorageRange *)0x0;
}
LAB_10:
- pTVar49 = pTVar51;
- if ((double)pTVar51 <= (double)local_3f8) {
- pTVar49 = local_3f8;
+ pTVar54 = pTVar59;
+ if ((double)pTVar59 <= (double)pTVar52) {
+ pTVar54 = pTVar52;
}
local_3b0 = (piecewise_construct_t *)&local_358;
- ppppppplVar23 = (long *******)&local_350;
+ pTVar25 = (TStorageRange *)&local_350;
std::
__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
::
__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long_const&>,std::tuple<>>
- ((long *)ppppppplVar23,(piecewise_construct_t *)local_358,
- (tuple *)&local_3b0,ptVar27);
- ppppppplVar23[3] = (long ******)pTVar51;
- ppppppplVar23[4] = (long ******)pTVar53;
+ ((long *)pTVar25,(piecewise_construct_t *)local_358,
+ (tuple *)&local_3b0,ptVar29);
+ *(TStorageRange **)(pTVar25 + 0x18) = pTVar59;
+ *(TStorageRange **)(pTVar25 + 0x20) = pTVar56;
TStorageRange::SetAdvance((TStorageRange *)*_DAT_11,_DAT_11[1]);
- TRun::NoteCrossStreamPosition((TRun *)pTVar25,(double)pTVar53);
- pTVar48 = (TStorageRange *)((double)pTVar48 + (double)pTVar51);
- pTVar53 = (TStorageRange *)((double)pTVar52 + (double)pTVar53);
- local_3f8 = pTVar49;
+ TRun::NoteCrossStreamPosition((TRun *)pTVar45,(double)pTVar56);
+ pTVar50 = (TStorageRange *)((double)pTVar50 + (double)pTVar59);
+ pTVar56 = (TStorageRange *)((double)pTVar53 + (double)pTVar56);
if (local_3b4 == 1) {
- pTVar51 = pTVar48;
- _CGRectGetMaxX(pTVar48,pTVar53,in_d2,dVar54);
- _CGRectGetMaxX(pTVar55,local_3f0,local_400,local_428);
- dVar50 = 0.0;
- if (0.0 <= (double)pTVar51 - (double)pTVar55) {
- dVar50 = (double)pTVar51 - (double)pTVar55;
+ pTVar52 = pTVar50;
+ _CGRectGetMaxX(pTVar50,pTVar56,in_d2,dVar57);
+ _CGRectGetMaxX(pTVar55,local_3f0,local_3f8,local_420);
+ dVar51 = 0.0;
+ if (0.0 <= (double)pTVar52 - (double)pTVar55) {
+ dVar51 = (double)pTVar52 - (double)pTVar55;
}
- local_420 = (TStorageRange *)((double)local_420 + dVar50);
- pTVar55 = pTVar48;
- _CGRectGetMinX(pTVar48,pTVar53,in_d2,dVar54);
- dVar50 = dVar56 + (double)pTVar55;
- if (dVar50 < 0.0) {
- local_420 = (TStorageRange *)((double)local_420 - dVar50);
- dVar56 = dVar56 - dVar50;
+ local_400 = (TStorageRange *)((double)local_400 + dVar51);
+ pTVar55 = pTVar50;
+ _CGRectGetMinX(pTVar50,pTVar56,in_d2,dVar57);
+ dVar51 = dVar60 + (double)pTVar55;
+ if (dVar51 < 0.0) {
+ local_400 = (TStorageRange *)((double)local_400 - dVar51);
+ dVar60 = dVar60 - dVar51;
}
}
goto LAB_12;
}
- if (uVar15 < 0x85) {
- pTVar25 = (TBaseFont *)
+ if (uVar16 < 0x85) {
+ pTVar45 = (TBaseFont *)
(ulong)(byte)(&GetResolvedCombiningClass(unsigned_int)::
kCombiningClassResolveTable)
- [(ulong)ppppppplVar23 & 0xffffffff];
+ [(ulong)pTVar25 & 0xffffffff];
if ((&GetResolvedCombiningClass(unsigned_int)::kCombiningClassResolveTable)
- [(ulong)ppppppplVar23 & 0xffffffff] == 0) goto LAB_8;
+ [(ulong)pTVar25 & 0xffffffff] == 0) goto LAB_8;
}
else {
uVar3 = 0xffffffdc;
- if (uVar15 != 0xf0) {
- uVar3 = uVar15;
+ if (uVar16 != 0xf0) {
+ uVar3 = uVar16;
}
- pTVar25 = (TBaseFont *)(ulong)uVar3;
- }
- if (((int)pTVar25 + 0x17U & 0xff) < 2) {
- if (bVar14) {
- pTVar51 = pTVar55;
- _CGRectGetMaxY(pTVar55,local_3f0,local_400,local_428);
- pTVar53 = pTVar47;
- _CGRectGetMaxY(pTVar47,local_478,local_470,local_458);
- if ((double)pTVar53 <= (double)pTVar51) {
- pTVar53 = pTVar51;
+ pTVar45 = (TBaseFont *)(ulong)uVar3;
+ }
+ if (((int)pTVar45 + 0x17U & 0xff) < 2) {
+ if (bVar15) {
+ pTVar42 = pTVar55;
+ _CGRectGetMaxY(pTVar55,local_3f0,local_3f8,local_420);
+ pTVar59 = pTVar49;
+ _CGRectGetMaxY(pTVar49,local_488,local_480,local_450);
+ if ((double)pTVar59 <= (double)pTVar42) {
+ pTVar59 = pTVar42;
}
- pTVar51 = local_478;
- if ((double)local_3f0 <= (double)local_478) {
- pTVar51 = local_3f0;
+ pTVar42 = local_488;
+ if ((double)local_3f0 <= (double)local_488) {
+ pTVar42 = local_3f0;
}
- local_428 = (double)pTVar53 - (double)pTVar51;
- local_3f0 = pTVar51;
+ local_420 = (double)pTVar59 - (double)pTVar42;
+ local_3f0 = pTVar42;
}
local_3b0 = (piecewise_construct_t *)0xffffffffffffffff;
TAttributes::GetKernSetting
- ((TAttributes *)pTVar25,(double *)(pTVar32 + 0x28),(bool *)&local_3b0)
+ ((TAttributes *)pTVar45,(double *)(pTVar34 + 0x28),(bool *)&local_3b0)
;
}
LAB_7:
- pTVar51 = pTVar48;
- pTVar53 = pTVar52;
- pTVar49 = in_d2;
- dVar50 = dVar54;
- GetPositionForGlyph(lVar39,(uint)pTVar25 & 0xff,&local_3b4);
+ pTVar59 = pTVar50;
+ pTVar56 = pTVar53;
+ pTVar42 = in_d2;
+ GetPositionForGlyph(lVar41,(uint)pTVar45 & 0xff,&local_3b4);
if (local_3b4 != 3) {
if (local_3b4 == 0) goto LAB_9;
goto LAB_10;
}
}
else {
- ppppppplVar23 = local_350;
+ local_3b4 = 0;
+ pTVar59 = (TStorageRange *)*_DAT_3;
std::
__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
- ::find<long>((long *)local_350);
- if (ppppppplVar23 == (long *******)0x0) break;
- pTVar51 = (TStorageRange *)*_DAT_3;
+ ::find<long>(local_350);
std::
__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
::erase();
- bVar12 = true;
+ bVar13 = true;
LAB_9:
- pTVar55 = (TStorageRange *)((double)local_420 + (double)pTVar51);
- if ((double)local_420 + (double)pTVar51 <= (double)local_3f8) {
- pTVar55 = local_3f8;
- }
- pTVar48 = (TStorageRange *)((double)local_420 + (double)pTVar48);
- pTVar53 = (TStorageRange *)(dVar57 + (double)pTVar52);
- local_3f8 = pTVar55;
+ pTVar54 = (TStorageRange *)((double)local_400 + (double)pTVar59);
+ if ((double)local_400 + (double)pTVar59 <= (double)pTVar52) {
+ pTVar54 = pTVar52;
+ }
+ pTVar56 = (TStorageRange *)(dVar58 + (double)pTVar53);
+ pTVar50 = (TStorageRange *)((double)local_400 + (double)pTVar50);
LAB_12:
+ pTVar55 = pTVar50;
_CGRectUnion();
- pTVar49 = in_d2;
- dVar50 = dVar54;
- local_428 = dVar54;
- pTVar55 = pTVar48;
- local_400 = in_d2;
- local_3f0 = pTVar53;
+ pTVar42 = in_d2;
+ local_420 = dVar57;
+ pTVar52 = pTVar54;
+ local_3f8 = in_d2;
+ local_3f0 = pTVar56;
}
- dVar54 = dVar50;
- in_d2 = pTVar49;
- pTVar52 = pTVar53;
+ in_d2 = pTVar42;
+ pTVar53 = pTVar56;
+ pTVar45 = pTVar27;
+ dVar57 = local_420;
if (ppStack_2b8 < local_2b0) {
- *(piecewise_construct_t **)ppStack_2b8 = (piecewise_construct_t *)(pTVar41 + 0xc0)
+ *(piecewise_construct_t **)ppStack_2b8 = (piecewise_construct_t *)(pTVar44 + 0xc0)
;
- *(piecewise_construct_t **)(ppStack_2b8 + 8) = ppVar22;
- ppVar36 = local_2c0;
+ *(piecewise_construct_t **)(ppStack_2b8 + 8) = ppVar24;
+ ppVar38 = local_2c0;
ppStack_2b8 = ppStack_2b8 + 0x10;
- ppVar24 = local_2b0;
+ ppVar26 = local_2b0;
}
else {
- sVar26 = (long)ppStack_2b8 - (long)local_2c0;
- lVar21 = (long)sVar26 >> 4;
- uVar16 = lVar21 + 1;
- if (uVar16 >> 0x3c != 0) {
+ sVar28 = (long)ppStack_2b8 - (long)local_2c0;
+ lVar22 = (long)sVar28 >> 4;
+ uVar17 = lVar22 + 1;
+ if (uVar17 >> 0x3c != 0) {
/* WARNING: Subroutine does not return */
std::
vector<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,TInlineBufferAllocator<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,4ul>>
::__throw_length_error_abi_fn200100_();
}
- uVar33 = (long)local_2b0 - (long)local_2c0 >> 3;
- if (uVar33 <= uVar16) {
- uVar33 = uVar16;
+ uVar35 = (long)local_2b0 - (long)local_2c0 >> 3;
+ if (uVar35 <= uVar17) {
+ uVar35 = uVar17;
}
if (0x7fffffffffffffef < (ulong)((long)local_2b0 - (long)local_2c0)) {
- uVar33 = 0xfffffffffffffff;
- }
- lVar28 = lVar21;
- if (uVar33 == 0) {
- ppVar24 = (piecewise_construct_t *)0x0;
- ppVar36 = local_c8[0];
+ uVar35 = 0xfffffffffffffff;
+ }
+ lVar30 = lVar22;
+ if (uVar35 == 0) {
+ ppVar26 = (piecewise_construct_t *)0x0;
+ ppVar38 = local_c8[0];
}
else {
- ppVar24 = local_c8[0];
- ppVar36 = local_c8[0] + uVar33 * 0x10;
- if ((piecewise_construct_t *)local_c8 < local_c8[0] + uVar33 * 0x10) {
- if (uVar33 >> 0x3c != 0) {
+ ppVar26 = local_c8[0];
+ ppVar38 = local_c8[0] + uVar35 * 0x10;
+ if ((piecewise_construct_t *)local_c8 < local_c8[0] + uVar35 * 0x10) {
+ if (uVar35 >> 0x3c != 0) {
/* WARNING: Subroutine does not return */
std::
vector<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,TInlineBufferAllocator<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,4ul>>
::__throw_length_error_abi_fn200100_();
}
- ppVar24 = operator_new(ppppppplVar23,0x1020c00eded9539);
- sVar26 = (long)ppStack_2b8 - (long)local_2c0;
- lVar28 = (long)sVar26 >> 4;
- ppVar36 = local_c8[0];
+ ppVar26 = operator_new(pTVar25,0x1020c00eded9539);
+ sVar28 = (long)ppStack_2b8 - (long)local_2c0;
+ lVar30 = (long)sVar28 >> 4;
+ ppVar38 = local_c8[0];
}
}
- local_c8[0] = ppVar36;
- ppVar36 = ppVar24 + lVar21 * 0x10;
- ppVar24 = ppVar24 + uVar33 * 0x10;
- *(piecewise_construct_t **)ppVar36 = (piecewise_construct_t *)(pTVar41 + 0xc0);
- *(piecewise_construct_t **)(ppVar36 + 8) = ppVar22;
- ppVar22 = ppVar36 + 0x10;
- ppVar36 = ppVar36 + lVar28 * -0x10;
- _memcpy(ppVar36,local_2c0,sVar26);
- ppVar31 = local_2c0;
- ppStack_2b8 = ppVar22;
+ local_c8[0] = ppVar38;
+ ppVar38 = ppVar26 + lVar22 * 0x10;
+ ppVar26 = ppVar26 + uVar35 * 0x10;
+ *(piecewise_construct_t **)ppVar38 = (piecewise_construct_t *)(pTVar44 + 0xc0);
+ *(piecewise_construct_t **)(ppVar38 + 8) = ppVar24;
+ ppVar24 = ppVar38 + 0x10;
+ ppVar38 = ppVar38 + lVar30 * -0x10;
+ _memcpy(ppVar38,local_2c0,sVar28);
+ ppVar33 = local_2c0;
+ ppStack_2b8 = ppVar24;
if (local_2c0 != (piecewise_construct_t *)0x0) {
if ((local_2c0 < (piecewise_construct_t *)&local_2a8) ||
((piecewise_construct_t *)local_c8 <= local_2c0)) {
- local_2c0 = ppVar36;
- local_2b0 = ppVar24;
- operator_delete(ppVar31);
- ppVar36 = local_2c0;
- ppStack_2b8 = ppVar22;
- ppVar24 = local_2b0;
+ local_2c0 = ppVar38;
+ local_2b0 = ppVar26;
+ operator_delete(ppVar33);
+ ppVar38 = local_2c0;
+ ppStack_2b8 = ppVar24;
+ ppVar26 = local_2b0;
}
else if (local_2b0 == local_c8[0]) {
local_c8[0] = local_2c0;
}
}
}
}
- local_2b0 = ppVar24;
- local_2c0 = ppVar36;
- } while (pTVar42 < pTVar29);
+ local_2b0 = ppVar26;
+ local_2c0 = ppVar38;
+ } while (pTVar45 < pTVar31);
}
else {
- bVar12 = false;
- local_3f8 = (TStorageRange *)0x0;
+ bVar13 = false;
+ pTVar52 = (TStorageRange *)0x0;
}
LAB_6:
- ppVar24 = ppStack_2b8;
- pdVar10 = _DAT_3;
- ppVar22 = ppStack_2b8 + -0x10;
- ppVar36 = local_2c0;
- if (local_2c0 != ppStack_2b8 && local_2c0 < ppVar22) {
+ ppVar26 = ppStack_2b8;
+ pdVar11 = _DAT_3;
+ ppVar24 = ppStack_2b8 + -0x10;
+ ppVar38 = local_2c0;
+ if (local_2c0 != ppStack_2b8 && local_2c0 < ppVar24) {
do {
- ppVar31 = *(piecewise_construct_t **)ppVar36;
- *(piecewise_construct_t **)ppVar36 = *(piecewise_construct_t **)ppVar22;
- *(piecewise_construct_t **)ppVar22 = ppVar31;
- ppVar31 = *(piecewise_construct_t **)(ppVar36 + 8);
- *(piecewise_construct_t **)(ppVar36 + 8) = *(piecewise_construct_t **)(ppVar22 + 8);
- *(piecewise_construct_t **)(ppVar22 + 8) = ppVar31;
- ppVar36 = ppVar36 + 0x10;
- ppVar22 = ppVar22 + -0x10;
- } while (ppVar36 < ppVar22);
+ ppVar33 = *(piecewise_construct_t **)ppVar38;
+ *(piecewise_construct_t **)ppVar38 = *(piecewise_construct_t **)ppVar24;
+ *(piecewise_construct_t **)ppVar24 = ppVar33;
+ ppVar33 = *(piecewise_construct_t **)(ppVar38 + 8);
+ *(piecewise_construct_t **)(ppVar38 + 8) = *(piecewise_construct_t **)(ppVar24 + 8);
+ *(piecewise_construct_t **)(ppVar24 + 8) = ppVar33;
+ ppVar38 = ppVar38 + 0x10;
+ ppVar24 = ppVar24 + -0x10;
+ } while (ppVar38 < ppVar24);
}
if (local_2c0 != ppStack_2b8) {
- bVar14 = false;
- ppVar36 = local_2c0;
+ bVar15 = false;
+ ppVar38 = local_2c0;
do {
- if (bVar14) {
+ if (bVar15) {
_objc_msgSend_setProps_atIndex_();
}
- ppVar36 = ppVar36 + 0x10;
- bVar14 = true;
- } while (ppVar36 != ppVar24);
- }
- bVar14 = local_338 != 0;
+ ppVar38 = ppVar38 + 0x10;
+ bVar15 = true;
+ } while (ppVar38 != ppVar26);
+ }
+ bVar15 = local_338 != 0;
if (local_338 != 0) {
- if ((double)local_3f8 <= (double)local_420) {
- local_3f8 = local_420;
+ if ((double)pTVar52 <= (double)local_400) {
+ pTVar52 = local_400;
}
if (local_358 ==
(TInlineVector *)
(*(long *)(*(long *)param_1 + 0x48) + *(long *)(*(long *)param_1 + 0x50) + -1) &&
- !bVar12) {
- local_420 = local_3f8;
- }
- TStorageRange::SetAdvance(local_420,dVar57,lVar17,pTVar32 + 0xc0,lVar17);
- dVar46 = dVar46 + dVar45;
+ !bVar13) {
+ local_400 = pTVar52;
+ }
+ TStorageRange::SetAdvance(local_400,dVar58,lVar18,pTVar34 + 0xc0,lVar18);
+ dVar48 = dVar48 + dVar47;
_objc_msgSend_setOrigin_atIndex_
- ((double)pppppplVar44 + dVar56,dVar46,*(undefined8 *)(pTVar32 + 0xd8));
- bVar12 = false;
- if (((double)pppppplVar44 + dVar56 == *pdVar10) &&
- (bVar12 = false, !NAN(dVar46) && !NAN(pdVar10[1]))) {
- bVar12 = dVar46 == pdVar10[1];
- }
- if (!bVar12) {
- pTVar32[0xe1] = (TInlineVector)((byte)pTVar32[0xe1] | 0x10);
- }
- pTVar37 = local_340;
+ ((double)plVar20 + dVar60,dVar48,*(undefined8 *)(pTVar34 + 0xd8));
+ bVar13 = false;
+ if (((double)plVar20 + dVar60 == *pdVar11) &&
+ (bVar13 = false, !NAN(dVar48) && !NAN(pdVar11[1]))) {
+ bVar13 = dVar48 == pdVar11[1];
+ }
+ if (!bVar13) {
+ pTVar34[0xe1] = (TInlineVector)((byte)pTVar34[0xe1] | 0x10);
+ }
+ pTVar39 = local_340;
if (((byte)TVar8 & 1) != 0) {
- local_420 = (TStorageRange *)*_DAT_11;
- dVar57 = _DAT_11[1];
- }
- for (; pTVar37 != (TLine *)0x0; pTVar37 = *(TLine **)pTVar37) {
- dVar46 = *(double *)(pTVar37 + 0x18);
- dVar54 = *(double *)(pTVar37 + 0x20);
- uVar33 = *(ulong *)param_1;
- uVar16 = uVar33;
- TLine::FindRunWithCharIndex(pTVar37,uVar33,(int)*(undefined8 *)(pTVar37 + 0x10));
- if ((ulong)(*(long *)(uVar33 + 0x18) - *(long *)(uVar33 + 0x10) >> 3) <= uVar16)
+ local_400 = (TStorageRange *)*_DAT_11;
+ dVar58 = _DAT_11[1];
+ }
+ for (; pTVar39 != (TLine *)0x0; pTVar39 = *(TLine **)pTVar39) {
+ dVar48 = *(double *)(pTVar39 + 0x18);
+ dVar57 = *(double *)(pTVar39 + 0x20);
+ uVar35 = *(ulong *)param_1;
+ uVar17 = uVar35;
+ TLine::FindRunWithCharIndex(pTVar39,uVar35,(int)*(undefined8 *)(pTVar39 + 0x10));
+ if ((ulong)(*(long *)(uVar35 + 0x18) - *(long *)(uVar35 + 0x10) >> 3) <= uVar17)
goto LAB_1;
- dVar46 = dVar56 + (dVar46 - (double)local_420);
- dVar54 = dVar45 + (dVar54 - dVar57);
- lVar21 = *(long *)(*(long *)(*(long *)(uVar33 + 0x10) + uVar16 * 8) + 0x30);
- TRun::GetGlyphIndexForCharIndex<false>((TRun *)pTVar37,lVar21);
- _objc_msgSend_setOrigin_atIndex_(dVar46,dVar54,*(undefined8 *)(lVar21 + 0xd8));
- bVar12 = false;
- if ((dVar46 == *pdVar10) && (bVar12 = false, !NAN(dVar54) && !NAN(pdVar10[1]))) {
- bVar12 = dVar54 == pdVar10[1];
+ dVar48 = dVar60 + (dVar48 - (double)local_400);
+ dVar57 = dVar47 + (dVar57 - dVar58);
+ lVar22 = *(long *)(*(long *)(*(long *)(uVar35 + 0x10) + uVar17 * 8) + 0x30);
+ TRun::GetGlyphIndexForCharIndex<false>((TRun *)pTVar39,lVar22);
+ _objc_msgSend_setOrigin_atIndex_(dVar48,dVar57,*(undefined8 *)(lVar22 + 0xd8));
+ bVar13 = false;
+ if ((dVar48 == *pdVar11) && (bVar13 = false, !NAN(dVar57) && !NAN(pdVar11[1]))) {
+ bVar13 = dVar57 == pdVar11[1];
}
- if (!bVar12) {
- *(byte *)(lVar21 + 0xe1) = *(byte *)(lVar21 + 0xe1) | 0x10;
+ if (!bVar13) {
+ *(byte *)(lVar22 + 0xe1) = *(byte *)(lVar22 + 0xe1) | 0x10;
}
}
}
- ppppppplVar20 = local_350;
- pTVar37 = local_340;
+ plVar20 = local_350;
+ pTVar39 = local_340;
if ((local_2c0 != (piecewise_construct_t *)0x0) &&
((ppStack_2b8 = local_2c0, local_2c0 < (piecewise_construct_t *)&local_2a8 ||
((piecewise_construct_t *)local_c8 <= local_2c0)))) {
operator_delete(local_2c0);
- ppppppplVar20 = local_350;
- pTVar37 = local_340;
+ plVar20 = local_350;
+ pTVar39 = local_340;
}
}
- while (pTVar37 != (TLine *)0x0) {
- pTVar34 = *(TLine **)pTVar37;
- local_350 = ppppppplVar20;
- operator_delete(pTVar37);
- ppppppplVar20 = local_350;
- pTVar37 = pTVar34;
+ while (pTVar39 != (TLine *)0x0) {
+ pTVar36 = *(TLine **)pTVar39;
+ local_350 = plVar20;
+ operator_delete(pTVar39);
+ plVar20 = local_350;
+ pTVar39 = pTVar36;
}
- local_350 = (long *******)0x0;
- if (ppppppplVar20 != (long *******)0x0) {
- operator_delete(ppppppplVar20);
+ local_350 = (long *)0x0;
+ if (plVar20 != (long *)0x0) {
+ operator_delete(plVar20);
}
goto LAB_13;
}
puVar6 = (undefined8 *)*in_x3;
puVar7 = (undefined8 *)in_x3[1];
- puVar40 = puVar6;
+ puVar43 = puVar6;
if (puVar6 == puVar7) {
LAB_14:
- if (puVar40 != puVar7) {
- lVar21 = TRun::GetGlyphIndexForCharIndex<false>(pTVar35,(long)pTVar32);
- pdVar10 = _DAT_11;
- lVar28 = *(long *)(*(long *)(pTVar32 + 0xd8) + 0x20);
- if ((lVar28 == 0) && (lVar17 = *(long *)(*(long *)(pTVar32 + 0xd8) + 0x18), lVar17 != 0))
+ if (puVar43 != puVar7) {
+ lVar22 = TRun::GetGlyphIndexForCharIndex<false>(pTVar37,(long)pTVar34);
+ pdVar11 = _DAT_11;
+ lVar30 = *(long *)(*(long *)(pTVar34 + 0xd8) + 0x20);
+ if ((lVar30 == 0) && (lVar18 = *(long *)(*(long *)(pTVar34 + 0xd8) + 0x18), lVar18 != 0))
{
- pdVar4 = (double *)(lVar17 + *(long *)(pTVar32 + 200) * 8 + lVar21 * 8);
+ pdVar4 = (double *)(lVar18 + *(long *)(pTVar34 + 200) * 8 + lVar22 * 8);
}
else {
- pdVar4 = (double *)(lVar28 + *(long *)(pTVar32 + 200) * 0x10 + lVar21 * 0x10);
- }
- bVar14 = false;
- dVar46 = *pdVar4;
+ pdVar4 = (double *)(lVar30 + *(long *)(pTVar34 + 200) * 0x10 + lVar22 * 0x10);
+ }
+ bVar15 = false;
+ dVar48 = *pdVar4;
while( true ) {
- pTVar35 = (TRun *)0xd800;
+ pTVar37 = (TRun *)0xd800;
local_2c0 = (piecewise_construct_t *)
- TRun::GetGlyphIndexForCharIndex<false>((TRun *)0xd800,(long)pTVar32);
- pTVar41 = pTVar32;
- TRun::GetNextChar(pTVar35,(long)pTVar32,(long *)param_2);
- if (puVar40 != puVar7) {
- while ((TInlineVector *)*puVar40 != pTVar41) {
- puVar40 = puVar40 + 1;
- if (puVar40 == puVar7) goto LAB_13;
+ TRun::GetGlyphIndexForCharIndex<false>((TRun *)0xd800,(long)pTVar34);
+ pTVar44 = pTVar34;
+ TRun::GetNextChar(pTVar37,(long)pTVar34,(long *)param_2);
+ if (puVar43 != puVar7) {
+ while ((TInlineVector *)*puVar43 != pTVar44) {
+ puVar43 = puVar43 + 1;
+ if (puVar43 == puVar7) goto LAB_13;
}
}
- if ((puVar40 == puVar7) ||
- (uVar9 = *(ushort *)((long)puVar5 + ((long)puVar40 - (long)puVar6 >> 2)),
- _u_charType(), uVar9 != 7)) break;
- if ((long)p_Var38 <= (long)pTVar41) {
+ if ((puVar43 == puVar7) ||
+ (sVar9 = *(short *)((long)puVar5 + ((long)puVar43 - (long)puVar6 >> 2)),
+ _u_charType(), sVar9 != 7)) break;
+ if ((long)p_Var40 <= (long)pTVar44) {
do {
- pTVar32 = *(TInlineVector **)(pTVar32 + 0x18);
- if (pTVar32 == (TInlineVector *)0x0) goto LAB_13;
- p_Var38 = (__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
- *)(*(long *)(pTVar32 + 0x10) + *(long *)(pTVar32 + 8));
- } while ((long)p_Var38 <= (long)pTVar41);
- if (pTVar32[0x5a] != (TInlineVector)0x1) break;
- }
- lVar21 = TRun::GetGlyphIndexForCharIndex<false>(pTVar35,(long)pTVar32);
+ pTVar34 = *(TInlineVector **)(pTVar34 + 0x18);
+ if (pTVar34 == (TInlineVector *)0x0) goto LAB_13;
+ p_Var40 = (__hash_table<std::__hash_value_type<long,CGPoint>,std::__unordered_map_hasher<long,std::__hash_value_type<long,CGPoint>,std::hash<long>,std::equal_to<long>,true>,std::__unordered_map_equal<long,std::__hash_value_type<long,CGPoint>,std::equal_to<long>,std::hash<long>,true>,std::allocator<std::__hash_value_type<long,CGPoint>>>
+ *)(*(long *)(pTVar34 + 0x10) + *(long *)(pTVar34 + 8));
+ } while ((long)p_Var40 <= (long)pTVar44);
+ if (pTVar34[0x5a] != (TInlineVector)0x1) break;
+ }
+ lVar22 = TRun::GetGlyphIndexForCharIndex<false>(pTVar37,(long)pTVar34);
TStorageRange::SetAdvance
- ((TStorageRange *)*pdVar10,pdVar10[1],lVar21,pTVar32 + 0xc0,lVar21);
- _objc_msgSend_setOrigin_atIndex_(-dVar46,0,*(undefined8 *)(pTVar32 + 0xd8));
- param_2 = pTVar41;
- if ((*_DAT_3 != -dVar46) || (bVar14 = true, _DAT_3[1] != 0.0)) {
- pTVar32[0xe1] = (TInlineVector)((byte)pTVar32[0xe1] | 0x10);
- bVar14 = true;
+ ((TStorageRange *)*pdVar11,pdVar11[1],lVar22,pTVar34 + 0xc0,lVar22);
+ _objc_msgSend_setOrigin_atIndex_(-dVar48,0,*(undefined8 *)(pTVar34 + 0xd8));
+ param_2 = pTVar44;
+ if ((*_DAT_3 != -dVar48) || (bVar15 = true, _DAT_3[1] != 0.0)) {
+ pTVar34[0xe1] = (TInlineVector)((byte)pTVar34[0xe1] | 0x10);
+ bVar15 = true;
}
}
goto LAB_13;
}
}
else {
do {
- if ((TInlineVector *)*puVar40 == param_2) goto LAB_14;
- puVar40 = puVar40 + 1;
- } while (puVar40 != puVar7);
+ if ((TInlineVector *)*puVar43 == param_2) goto LAB_14;
+ puVar43 = puVar43 + 1;
+ } while (puVar43 != puVar7);
}
}
}
- bVar14 = false;
+ bVar15 = false;
LAB_13:
if (*_DAT_0 != local_b8) {
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
- return bVar14;
+ return bVar15;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.39 |
| i_ratio | 0.51 |
| m_ratio | 0.81 |
| b_ratio | 0.76 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | GetFeatureVariationsTable | GetFeatureVariationsTable |
| fullname | OTL::GCommon::GetFeatureVariationsTable | OTL::GCommon::GetFeatureVariationsTable |
| refcount | 3 | 3 |
length |
176 | 120 |
| called | ||
| calling | CopyConvertedMorxFromGSUB OTL::GCommon::FeatureTableSubstitutionsForFont |
CopyConvertedMorxFromGSUB OTL::GCommon::FeatureTableSubstitutionsForFont |
| paramcount | 2 | 2 |
address |
1833c88d0 | 18339e920 |
| sig | undefined __swiftcall GetFeatureVariationsTable(Header * param_1, void * param_2) | undefined __swiftcall GetFeatureVariationsTable(Header * param_1, void * param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- OTL::GCommon::GetFeatureVariationsTable
+++ OTL::GCommon::GetFeatureVariationsTable
@@ -1,42 +1,35 @@
/* OTL::GCommon::GetFeatureVariationsTable(OTL::GCommon::Header const*, void const*) */
Header * OTL::GCommon::GetFeatureVariationsTable(Header *param_1,void *param_2)
{
Header *pHVar1;
Header *pHVar2;
ulong uVar3;
uint uVar4;
- ushort uVar5;
- ulong uVar6;
+ ulong uVar5;
- if ((param_1 + 10 <= param_2) &&
- (uVar5 = *(ushort *)param_1, (ushort)(uVar5 >> 8 | uVar5 << 8) < 2)) {
- if ((*(short *)(param_1 + 2) == 0) || (uVar5 != 0x100 || param_2 < param_1 + 0xe)) {
- return (Header *)0x0;
- }
- uVar4 = *(uint *)(param_1 + 10);
- if (uVar4 != 0) {
- uVar4 = (uVar4 & 0xff00ff00) >> 8 | (uVar4 & 0xff00ff) << 8;
- pHVar2 = param_1 + (uVar4 >> 0x10 | uVar4 << 0x10);
- pHVar1 = pHVar2 + 8;
- if (pHVar1 <= param_2) {
- uVar4 = (*(uint *)(pHVar2 + 4) & 0xff00ff00) >> 8 | (*(uint *)(pHVar2 + 4) & 0xff00ff) << 8;
- uVar6 = (ulong)(uVar4 >> 0x10 | uVar4 << 0x10);
- uVar3 = 0;
- if (pHVar2 + 0x10 <= param_2) {
- uVar3 = (ulong)((long)param_2 - (long)pHVar1) >> 3;
+ if (((*(short *)param_1 == 0x100) && (*(short *)(param_1 + 2) != 0)) &&
+ (uVar4 = *(uint *)(param_1 + 10), uVar4 != 0)) {
+ uVar4 = (uVar4 & 0xff00ff00) >> 8 | (uVar4 & 0xff00ff) << 8;
+ pHVar2 = param_1 + (uVar4 >> 0x10 | uVar4 << 0x10);
+ pHVar1 = pHVar2 + 8;
+ if (pHVar1 <= param_2) {
+ uVar4 = (*(uint *)(pHVar2 + 4) & 0xff00ff00) >> 8 | (*(uint *)(pHVar2 + 4) & 0xff00ff) << 8;
+ uVar5 = (ulong)(uVar4 >> 0x10 | uVar4 << 0x10);
+ uVar3 = 0;
+ if (pHVar2 + 0x10 <= param_2) {
+ uVar3 = (ulong)((long)param_2 - (long)pHVar1) >> 3;
+ }
+ if (pHVar1 + uVar5 * 8 <= param_2 && pHVar1 <= pHVar1 + uVar5 * 8 || uVar3 == uVar5) {
+ if (*(short *)pHVar2 != 0x100) {
+ pHVar2 = (Header *)0x0;
}
- if (pHVar1 + uVar6 * 8 <= param_2 && pHVar1 <= pHVar1 + uVar6 * 8 || uVar3 == uVar6) {
- if (*(short *)pHVar2 != 0x100) {
- pHVar2 = (Header *)0x0;
- }
- return pHVar2;
- }
+ return pHVar2;
}
}
}
return (Header *)0x0;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.33 |
| i_ratio | 0.68 |
| m_ratio | 1.0 |
| b_ratio | 0.98 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | ProcessGlyphsTTRunGlue::TGlyphInSingleRun | ProcessGlyphsTTRunGlue::TGlyphInSingleRun |
| fullname | TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun | TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun |
| refcount | 3 | 3 |
length |
928 | 936 |
| called | ::operator.delete TRunGlue::IsDeleted TRunGlue::length _memcpy std::__tree<std::__value_type<long,TAATDeltaYListEntry>,std::__map_value_compare<long,std::__value_type<long,TAATDeltaYListEntry>,std::less,true>,std::allocator<std::__value_type<long,TAATDeltaYListEntry>>>::__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long&&>,std::tuple<>> std::allocator<std::pair<long,TAATDeltaXListEntry>>::allocate_at_least[abi:fn200100] std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100] |
::operator.delete TRunGlue::IsDeleted TRunGlue::length _memcpy std::__tree<std::__value_type<long,TAATDeltaYListEntry>,std::__map_value_compare<long,std::__value_type<long,TAATDeltaYListEntry>,std::less,true>,std::allocator<std::__value_type<long,TAATDeltaYListEntry>>>::__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long&&>,std::tuple<>> std::allocator<std::pair<long,TAATDeltaXListEntry>>::allocate_at_least[abi:fn200100] std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100] |
| calling | TAATKernEngine::KernRuns | TAATKernEngine::KernRuns |
| paramcount | 2 | 2 |
address |
18351ba74 | 1834f16e0 |
| sig | void __thiscall ProcessGlyphsTTRunGlue::TGlyphInSingleRun(KernOrderedList * this, SyncState * param_1) | void __thiscall ProcessGlyphsTTRunGlue::TGlyphInSingleRun(KernOrderedList * this, SyncState * param_1) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TAATKernEngine::KernOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>
+++ TAATKernEngine::KernOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>
@@ -1,209 +1,211 @@
-/* WARNING: Removing unreachable block (ram,0x00018351bcc8) */
-/* WARNING: Removing unreachable block (ram,0x00018351bccc) */
+/* WARNING: Removing unreachable block (ram,0x0001834f193c) */
+/* WARNING: Removing unreachable block (ram,0x0001834f1940) */
/* void TAATKernEngine::KernOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>(SyncState&) */
void __thiscall
TAATKernEngine::KernOrderedList::ProcessGlyphsT<TRunGlue::TGlyphInSingleRun>
(KernOrderedList *this,SyncState *param_1)
{
- long lVar1;
- ushort uVar2;
+ ushort *puVar1;
+ long lVar2;
ushort uVar3;
- short sVar4;
- uint uVar5;
- ulong *puVar6;
- code *pcVar7;
- ulong uVar8;
- long *plVar9;
- ulong uVar10;
+ ushort uVar4;
+ short sVar5;
+ uint uVar6;
+ ulong *puVar7;
+ code *pcVar8;
+ ulong uVar9;
+ long *plVar10;
+ ulong uVar11;
undefined1 *in_x1;
- void *pvVar11;
- size_t sVar12;
- ulong *puVar13;
- uint uVar14;
- ulong *puVar15;
- ulong uVar16;
- long lVar17;
- ushort *puVar18;
- ulong *puVar19;
- long lVar20;
- long lVar21;
- int iVar22;
+ void *pvVar12;
+ size_t sVar13;
+ ulong *puVar14;
+ uint uVar15;
+ ulong *puVar16;
+ ulong uVar17;
+ long lVar18;
+ ushort *puVar19;
+ ulong *puVar20;
+ int iVar21;
+ ulong uVar22;
ulong uVar23;
- ulong uVar24;
- ulong uVar25;
+ long lVar24;
+ long lVar25;
ulong uVar26;
- ushort *puVar27;
+ ulong uVar27;
uint uVar28;
ulong local_78 [2];
ulong *local_68;
if (*(long *)(param_1 + 0x38) != 0) {
- lVar1 = *(long *)(param_1 + 8);
- uVar23 = **(ulong **)param_1;
- puVar27 = *(ushort **)(uVar23 + 0xa8);
- uVar8 = uVar23;
+ lVar2 = *(long *)(param_1 + 8);
+ uVar22 = **(ulong **)param_1;
+ lVar24 = *(long *)(uVar22 + 0xa8);
+ lVar25 = *(long *)(uVar22 + 0x98);
+ uVar9 = uVar22;
TRunGlue::length((TRunGlue *)param_1);
- if (1 < (long)uVar8) {
- uVar24 = 1;
- uVar10 = (ulong)*puVar27;
+ if (1 < (long)uVar9) {
+ puVar1 = (ushort *)(lVar24 + lVar25 * 2);
+ uVar23 = 1;
+ uVar11 = (ulong)*puVar1;
do {
- uVar3 = puVar27[uVar24];
- uVar25 = (ulong)uVar3;
- uVar26 = uVar10;
- if ((((uVar3 != 0xffff) &&
- (uVar16 = uVar23, TRunGlue::IsDeleted((TRunGlue *)param_1,uVar23), (uVar16 & 1) == 0))
- && (uVar28 = (uint)uVar10, uVar26 = uVar25,
+ uVar4 = puVar1[uVar23];
+ uVar26 = (ulong)uVar4;
+ uVar27 = uVar11;
+ if ((((uVar4 != 0xffff) &&
+ (uVar17 = uVar22, TRunGlue::IsDeleted((TRunGlue *)param_1,uVar22), (uVar17 & 1) == 0))
+ && (uVar28 = (uint)uVar11, uVar27 = uVar26,
uVar28 <= *(ushort *)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x32))) &&
- (sVar4 = *(short *)(*(long *)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 +
- 0x38) + uVar10 * 2), sVar4 != 0)) {
- if ((ushort)(sVar4 - 1U) <
+ (sVar5 = *(short *)(*(long *)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 +
+ 0x38) + uVar11 * 2), sVar5 != 0)) {
+ if ((ushort)(sVar5 - 1U) <
*(ushort *)((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x30)) {
- uVar14 = (uint)(ushort)(sVar4 - 1);
- puVar18 = (ushort *)(lVar1 + 10 + (ulong)uVar14 * 6);
+ uVar15 = (uint)(ushort)(sVar5 - 1);
+ puVar19 = (ushort *)(lVar2 + 10 + (ulong)uVar15 * 6);
do {
- uVar5 = (uint)(puVar18[-1] >> 8) | (puVar18[-1] & 0xff00ff) << 8;
- if (uVar5 == uVar28) {
- if (uVar3 <= (ushort)(*puVar18 >> 8 | *puVar18 << 8)) {
+ uVar6 = (uint)(puVar19[-1] >> 8) | (puVar19[-1] & 0xff00ff) << 8;
+ if (uVar6 == uVar28) {
+ if (uVar4 <= (ushort)(*puVar19 >> 8 | *puVar19 << 8)) {
LAB_0:
- puVar18 = (ushort *)(lVar1 + 8 + (ulong)(uVar14 & 0xffff) * 6);
- if (((uVar28 == ((uint)(*puVar18 >> 8) | (*puVar18 & 0xff00ff) << 8)) &&
- (uVar3 == (ushort)(puVar18[1] >> 8 | puVar18[1] << 8))) &&
- (uVar3 = puVar18[2], uVar3 != 0)) {
- lVar21 = *(long *)param_1;
- uVar2 = *(ushort *)
+ puVar19 = (ushort *)(lVar2 + 8 + (ulong)(uVar15 & 0xffff) * 6);
+ if (((uVar28 == ((uint)(*puVar19 >> 8) | (*puVar19 & 0xff00ff) << 8)) &&
+ (uVar4 == (ushort)(puVar19[1] >> 8 | puVar19[1] << 8))) &&
+ (uVar4 = puVar19[2], uVar4 != 0)) {
+ lVar24 = *(long *)param_1;
+ uVar3 = *(ushort *)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x18);
- iVar22 = (int)(*(double *)(lVar21 + 0x18) *
- (double)(int)(short)(uVar3 >> 8 | uVar3 << 8));
- if ((uVar2 >> 0xe & 1) == 0) {
- if ((uVar2 >> 0xb & 1) == 0) {
- puVar13 = *(ulong **)(lVar21 + 0x28);
+ iVar21 = (int)(*(double *)(lVar24 + 0x18) *
+ (double)(int)(short)(uVar4 >> 8 | uVar4 << 8));
+ if ((uVar3 >> 0xe & 1) == 0) {
+ if ((uVar3 >> 0xb & 1) == 0) {
+ puVar14 = *(ulong **)(lVar24 + 0x28);
goto LAB_1;
}
- puVar15 = *(ulong **)(lVar21 + 0x20);
- puVar13 = *(ulong **)(lVar21 + 0x28);
- if (puVar15 != puVar13) goto LAB_2;
+ puVar16 = *(ulong **)(lVar24 + 0x20);
+ puVar14 = *(ulong **)(lVar24 + 0x28);
+ if (puVar16 != puVar14) goto LAB_2;
goto LAB_3;
}
local_68 = local_78;
- plVar9 = (long *)(lVar21 + 0x38);
- local_78[0] = uVar24;
+ plVar10 = (long *)(lVar24 + 0x38);
+ local_78[0] = uVar23;
std::
__tree<std::__value_type<long,TAATDeltaYListEntry>,std::__map_value_compare<long,std::__value_type<long,TAATDeltaYListEntry>,std::less<long>,true>,std::allocator<std::__value_type<long,TAATDeltaYListEntry>>>
::
__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long&&>,std::tuple<>>
- (plVar9,(piecewise_construct_t *)local_78,
+ (plVar10,(piecewise_construct_t *)local_78,
(tuple *)&std::piecewise_construct,(tuple *)&local_68);
- if (iVar22 == -0x8000) {
- iVar22 = 0;
- *(undefined1 *)((long)plVar9 + 0x2a) = 1;
+ if (iVar21 == -0x8000) {
+ iVar21 = 0;
+ *(undefined1 *)((long)plVar10 + 0x2a) = 1;
}
- else if ((uVar2 >> 0xb & 1) == 0) {
- iVar22 = (uint)*(ushort *)(plVar9 + 5) + iVar22;
+ else if ((uVar3 >> 0xb & 1) == 0) {
+ iVar21 = (uint)*(ushort *)(plVar10 + 5) + iVar21;
}
- *(short *)(plVar9 + 5) = (short)iVar22;
+ *(short *)(plVar10 + 5) = (short)iVar21;
goto LAB_4;
}
break;
}
}
- else if (uVar28 <= uVar5) goto LAB_0;
- uVar14 = uVar14 + 1;
- puVar18 = puVar18 + 3;
+ else if (uVar28 <= uVar6) goto LAB_0;
+ uVar15 = uVar15 + 1;
+ puVar19 = puVar19 + 3;
} while ((uint)*(ushort *)
((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1 + 0x30) !=
- (uVar14 & 0xffff));
+ (uVar15 & 0xffff));
}
}
LAB_5:
- uVar24 = uVar24 + 1;
- uVar10 = uVar26;
- } while (uVar24 != uVar8);
+ uVar23 = uVar23 + 1;
+ uVar11 = uVar27;
+ } while (uVar23 != uVar9);
}
}
return;
LAB_2:
- if (*puVar15 != uVar24) goto code_r0x00018351bc58;
- puVar19 = puVar15;
- if (puVar15 != puVar13) {
- while (puVar6 = puVar19, puVar19 = puVar6 + 2, puVar19 != puVar13) {
- if (*puVar19 != uVar24) {
- *puVar15 = *puVar19;
- *(short *)(puVar15 + 1) = (short)puVar6[3];
- puVar15 = puVar15 + 2;
+ if (*puVar16 != uVar23) goto code_r0x0001834f18cc;
+ puVar20 = puVar16;
+ if (puVar16 != puVar14) {
+ while (puVar7 = puVar20, puVar20 = puVar7 + 2, puVar20 != puVar14) {
+ if (*puVar20 != uVar23) {
+ *puVar16 = *puVar20;
+ *(short *)(puVar16 + 1) = (short)puVar7[3];
+ puVar16 = puVar16 + 2;
}
}
}
LAB_3:
- if (puVar13 < puVar15) {
+ if (puVar14 < puVar16) {
/* WARNING: Does not return */
- pcVar7 = (code *)SoftwareBreakpoint(1,0x18351be10);
- (*pcVar7)();
- }
- if (puVar15 != puVar13) {
- *(ulong **)(lVar21 + 0x28) = puVar15;
- puVar13 = puVar15;
+ pcVar8 = (code *)SoftwareBreakpoint(1,0x1834f1a84);
+ (*pcVar8)();
+ }
+ if (puVar16 != puVar14) {
+ *(ulong **)(lVar24 + 0x28) = puVar16;
+ puVar14 = puVar16;
}
LAB_1:
- if (puVar13 < *(ulong **)(lVar21 + 0x30)) {
- *puVar13 = uVar24;
- *(short *)(puVar13 + 1) = (short)iVar22;
- puVar13 = puVar13 + 2;
+ if (puVar14 < *(ulong **)(lVar24 + 0x30)) {
+ *puVar14 = uVar23;
+ *(short *)(puVar14 + 1) = (short)iVar21;
+ puVar14 = puVar14 + 2;
}
else {
- pvVar11 = *(void **)(lVar21 + 0x20);
- sVar12 = (long)puVar13 - (long)pvVar11;
- lVar20 = (long)sVar12 >> 4;
- uVar10 = lVar20 + 1;
- if (uVar10 >> 0x3c != 0) {
+ pvVar12 = *(void **)(lVar24 + 0x20);
+ sVar13 = (long)puVar14 - (long)pvVar12;
+ lVar25 = (long)sVar13 >> 4;
+ uVar11 = lVar25 + 1;
+ if (uVar11 >> 0x3c != 0) {
/* WARNING: Subroutine does not return */
std::
vector<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,TInlineBufferAllocator<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,4ul>>
::__throw_length_error_abi_fn200100_();
}
- uVar16 = (long)*(ulong **)(lVar21 + 0x30) - (long)pvVar11;
- uVar25 = (long)uVar16 >> 3;
- if (uVar25 <= uVar10) {
- uVar25 = uVar10;
- }
- if (0x7fffffffffffffef < uVar16) {
- uVar25 = 0xfffffffffffffff;
- }
- if (uVar25 == 0) {
- uVar10 = 0;
- lVar17 = lVar20;
+ uVar17 = (long)*(ulong **)(lVar24 + 0x30) - (long)pvVar12;
+ uVar26 = (long)uVar17 >> 3;
+ if (uVar26 <= uVar11) {
+ uVar26 = uVar11;
+ }
+ if (0x7fffffffffffffef < uVar17) {
+ uVar26 = 0xfffffffffffffff;
+ }
+ if (uVar26 == 0) {
+ uVar11 = 0;
+ lVar18 = lVar25;
}
else {
- uVar10 = lVar21 + 0x20;
+ uVar11 = lVar24 + 0x20;
std::allocator<std::pair<long,TAATDeltaXListEntry>>::allocate_at_least_abi_fn200100_
- ((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1,uVar10);
- pvVar11 = *(void **)(lVar21 + 0x20);
- sVar12 = *(long *)(lVar21 + 0x28) - (long)pvVar11;
- lVar17 = (long)sVar12 >> 4;
- }
- puVar15 = (ulong *)(uVar10 + lVar20 * 0x10);
- *puVar15 = uVar24;
- *(short *)(puVar15 + 1) = (short)iVar22;
- puVar13 = puVar15 + 2;
- _memcpy(puVar15 + lVar17 * -2,pvVar11,sVar12);
- pvVar11 = *(void **)(lVar21 + 0x20);
- *(ulong **)(lVar21 + 0x20) = puVar15 + lVar17 * -2;
- *(ulong **)(lVar21 + 0x28) = puVar13;
- *(ulong *)(lVar21 + 0x30) = uVar10 + uVar25 * 0x10;
- if (pvVar11 != (void *)0x0) {
- operator_delete(pvVar11);
- }
- }
- *(ulong **)(lVar21 + 0x28) = puVar13;
+ ((allocator<std::pair<long,TAATDeltaXListEntry>> *)param_1,uVar11);
+ pvVar12 = *(void **)(lVar24 + 0x20);
+ sVar13 = *(long *)(lVar24 + 0x28) - (long)pvVar12;
+ lVar18 = (long)sVar13 >> 4;
+ }
+ puVar16 = (ulong *)(uVar11 + lVar25 * 0x10);
+ *puVar16 = uVar23;
+ *(short *)(puVar16 + 1) = (short)iVar21;
+ puVar14 = puVar16 + 2;
+ _memcpy(puVar16 + lVar18 * -2,pvVar12,sVar13);
+ pvVar12 = *(void **)(lVar24 + 0x20);
+ *(ulong **)(lVar24 + 0x20) = puVar16 + lVar18 * -2;
+ *(ulong **)(lVar24 + 0x28) = puVar14;
+ *(ulong *)(lVar24 + 0x30) = uVar11 + uVar26 * 0x10;
+ if (pvVar12 != (void *)0x0) {
+ operator_delete(pvVar12);
+ }
+ }
+ *(ulong **)(lVar24 + 0x28) = puVar14;
LAB_4:
*in_x1 = 1;
goto LAB_5;
-code_r0x00018351bc58:
- puVar15 = puVar15 + 2;
- if (puVar15 == puVar13) goto LAB_1;
+code_r0x0001834f18cc:
+ puVar16 = puVar16 + 2;
+ if (puVar16 == puVar14) goto LAB_1;
goto LAB_2;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.34 |
| i_ratio | 0.74 |
| m_ratio | 0.92 |
| b_ratio | 0.88 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | IterateScriptTables | IterateScriptTables |
| fullname | OTL::GCommon::IterateScriptTables | OTL::GCommon::IterateScriptTables |
| refcount | 6 | 6 |
length |
336 | 284 |
| called | std::function<bool(unsigned_int,OTL::ScriptTable_const*,bool&)>::operator() | std::function<bool(unsigned_int,OTL::ScriptTable_const*,bool&)>::operator() |
| calling | CopyConvertedMorxFromGSUB TOpenTypeMorph::AddCoveredGlyphs TOpenTypeMorph::AddShapingGlyphs TOpenTypeMorph::AddShapingLanguages TOpenTypeMorph::FindScriptForVerticalGlyphs |
CopyConvertedMorxFromGSUB TOpenTypeMorph::AddCoveredGlyphs TOpenTypeMorph::AddShapingGlyphs TOpenTypeMorph::AddShapingLanguages TOpenTypeMorph::FindScriptForVerticalGlyphs |
| paramcount | 3 | 3 |
address |
1833c7a8c | 18339db10 |
| sig | undefined __swiftcall IterateScriptTables(Header * param_1, void * param_2, function param_3) | undefined __swiftcall IterateScriptTables(Header * param_1, void * param_2, function param_3) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- OTL::GCommon::IterateScriptTables
+++ OTL::GCommon::IterateScriptTables
@@ -1,70 +1,66 @@
/* OTL::GCommon::IterateScriptTables(OTL::GCommon::Header const*, void const*, std::function<bool
(unsigned int, OTL::ScriptTable const*, bool&)>) */
-bool OTL::GCommon::IterateScriptTables(ushort *param_1,bool *param_2,ulong param_3)
+bool OTL::GCommon::IterateScriptTables(long param_1,bool *param_2,ulong param_3)
{
bool bVar1;
bool *pbVar2;
ushort *puVar3;
bool *pbVar4;
ushort uVar5;
uint uVar6;
ushort *puVar7;
ulong uVar8;
ulong uVar9;
- if (((param_1 + 5 <= param_2) && ((ushort)(*param_1 >> 8 | *param_1 << 8) < 2)) &&
- (param_1[1] == 0 || param_1 + 7 <= param_2)) {
- uVar5 = param_1[2];
- if (uVar5 != 0) {
- uVar8 = (ulong)((uint)(uVar5 >> 8) | (uVar5 & 0xff00ff) << 8);
- puVar3 = (ushort *)((long)param_1 + uVar8);
- pbVar2 = (bool *)(puVar3 + 1);
- if (pbVar2 <= param_2) {
- uVar5 = *puVar3;
- uVar6 = (uint)(uVar5 >> 8) | (uVar5 & 0xff00ff) << 8;
- if (pbVar2 + (ulong)uVar6 * 6 < pbVar2 || param_2 < pbVar2 + (ulong)uVar6 * 6) {
- uVar9 = 0;
- if (puVar3 + 4 <= param_2) {
- uVar9 = (ulong)((long)param_2 - (long)pbVar2) / 6;
- }
- if (uVar9 != uVar6) {
- return false;
- }
+ uVar5 = *(ushort *)(param_1 + 4);
+ if (uVar5 != 0) {
+ uVar8 = (ulong)((uint)(uVar5 >> 8) | (uVar5 & 0xff00ff) << 8);
+ puVar3 = (ushort *)(param_1 + uVar8);
+ pbVar2 = (bool *)(puVar3 + 1);
+ if (pbVar2 <= param_2) {
+ uVar5 = *puVar3;
+ uVar6 = (uint)(uVar5 >> 8) | (uVar5 & 0xff00ff) << 8;
+ if (pbVar2 + (ulong)uVar6 * 6 < pbVar2 || param_2 < pbVar2 + (ulong)uVar6 * 6) {
+ uVar9 = 0;
+ if (puVar3 + 4 <= param_2) {
+ uVar9 = (ulong)((long)param_2 - (long)pbVar2) / 6;
}
- if (uVar5 == 0) {
- return true;
+ if (uVar9 != uVar6) {
+ return false;
}
- if (uVar6 < 2) {
- uVar6 = 1;
+ }
+ if (uVar5 == 0) {
+ return true;
+ }
+ if (uVar6 < 2) {
+ uVar6 = 1;
+ }
+ uVar9 = (ulong)uVar6;
+ puVar7 = (ushort *)(uVar8 + param_1);
+ while( true ) {
+ uVar9 = uVar9 - 1;
+ uVar5 = puVar7[3];
+ pbVar4 = (bool *)((long)puVar3 + (ulong)((uint)(uVar5 >> 8) | (uVar5 & 0xff00ff) << 8));
+ pbVar2 = pbVar4 + 4;
+ bVar1 = param_2 > pbVar2 || pbVar2 == param_2;
+ if (param_2 <= pbVar2 && pbVar2 != param_2) {
+ return bVar1;
}
- uVar9 = (ulong)uVar6;
- puVar7 = (ushort *)(uVar8 + (long)param_1);
- while( true ) {
- uVar9 = uVar9 - 1;
- uVar5 = puVar7[3];
- pbVar4 = (bool *)((long)puVar3 + (ulong)((uint)(uVar5 >> 8) | (uVar5 & 0xff00ff) << 8));
- pbVar2 = pbVar4 + 4;
- bVar1 = param_2 > pbVar2 || pbVar2 == param_2;
- if (param_2 <= pbVar2 && pbVar2 != param_2) {
- return bVar1;
- }
- uVar6 = (*(uint *)(puVar7 + 1) & 0xff00ff00) >> 8 |
- (*(uint *)(puVar7 + 1) & 0xff00ff) << 8;
- uVar8 = param_3;
- std::function<bool(unsigned_int,OTL::ScriptTable_const*,bool&)>::operator()
- ((uint)param_3,(ScriptTable *)(ulong)(uVar6 >> 0x10 | uVar6 << 0x10),pbVar4);
- if ((uVar8 & 1) == 0) break;
- puVar7 = puVar7 + 3;
- if (uVar9 == 0) {
- return bVar1;
- }
+ uVar6 = (*(uint *)(puVar7 + 1) & 0xff00ff00) >> 8 | (*(uint *)(puVar7 + 1) & 0xff00ff) << 8;
+ uVar8 = param_3;
+ std::function<bool(unsigned_int,OTL::ScriptTable_const*,bool&)>::operator()
+ ((uint)param_3,(ScriptTable *)(ulong)(uVar6 >> 0x10 | uVar6 << 0x10),pbVar4);
+ if ((uVar8 & 1) == 0) break;
+ puVar7 = puVar7 + 3;
+ if (uVar9 == 0) {
+ return bVar1;
}
}
}
}
return false;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address,called |
| ratio | 0.09 |
| i_ratio | 0.08 |
| m_ratio | 0.81 |
| b_ratio | 0.25 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | EnumerateKnownUrduSequencesInString | EnumerateKnownUrduSequencesInString |
| fullname | EnumerateKnownUrduSequencesInString | EnumerateKnownUrduSequencesInString |
| refcount | 4 | 4 |
length |
1148 | 788 |
called |
GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator() InternationalSupportLibraryCore _CFStringGetCStringPtr _CFStringGetCharacters _CFStringGetCharactersPtr _CFStringGetLength getISEnumerateKnownUrduSequencesInStringSymbolLoc |
InternationalSupportLibraryCore SoftLinked__ISEnumerateKnownUrduSequencesInString _CFStringGetCharacterAtIndex __Block_object_dispose getISEnumerateKnownUrduSequencesInStringSymbolLoc |
| calling | StringContainsKnownUrduSequences TTypesetterAttrString::Initialize _CTEnumerateKnownUrduSequencesInString |
StringContainsKnownUrduSequences TTypesetterAttrString::Initialize _CTEnumerateKnownUrduSequencesInString |
| paramcount | 4 | 4 |
address |
1834804d4 | 183457168 |
| sig | undefined __swiftcall EnumerateKnownUrduSequencesInString(__CFString * param_1, CFRange param_2, bool param_3, _func_void_CFRange_bool_ptr * param_4) | undefined __swiftcall EnumerateKnownUrduSequencesInString(__CFString * param_1, CFRange param_2, bool param_3, _func_void_CFRange_bool_ptr * param_4) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- EnumerateKnownUrduSequencesInString called
+++ EnumerateKnownUrduSequencesInString called
@@ -1 +0,0 @@
-GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator()
@@ -3,4 +2,3 @@
-_CFStringGetCStringPtr
-_CFStringGetCharacters
-_CFStringGetCharactersPtr
-_CFStringGetLength
+SoftLinked__ISEnumerateKnownUrduSequencesInString
+_CFStringGetCharacterAtIndex
+__Block_object_dispose--- EnumerateKnownUrduSequencesInString
+++ EnumerateKnownUrduSequencesInString
@@ -1,273 +1,134 @@
+/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* EnumerateKnownUrduSequencesInString(__CFString const*, CFRange, bool, void (
block_pointer)(CFRange, bool*)) */
void EnumerateKnownUrduSequencesInString
- (__0 *param_1,__0 *param_2,long param_3,int param_4,long param_5)
+ (undefined8 param_1,long param_2,long param_3,int param_4,long param_5)
{
- __0 *p_Var1;
- __0 *p_Var2;
- long lVar3;
- __0 *p_Var4;
- __0 *p_Var5;
- __0 *p_Var6;
- __0 *p_Var7;
- __0 *p_Var8;
- __0 *p_Var9;
- ushort uVar10;
- __0 *p_Var11;
- __0 *p_Var12;
- __0 *p_Var13;
- __0 *p_Var14;
- __0 *p_Var15;
- __0 *this;
- undefined1 *local_160;
- undefined1 *puStack_158;
- undefined1 *puStack_150;
- undefined1 *puStack_148;
- undefined1 *local_140;
- undefined1 *puStack_138;
- undefined1 *puStack_130;
- undefined1 *puStack_128;
- undefined1 *local_120;
- undefined1 *puStack_118;
- undefined1 *puStack_110;
- undefined1 *puStack_108;
- undefined1 *local_100;
- undefined1 *puStack_f8;
- undefined1 *puStack_f0;
- undefined1 *puStack_e8;
- __0 *local_e0;
- __0 *local_d8;
- __0 *local_d0;
- long local_c8;
- __0 *local_c0;
- __0 *local_b8;
- __0 *local_b0;
- __0 **local_a0;
- __0 **pp_Stack_98;
- __0 **local_90;
- __0 *local_88;
- __0 *local_80;
- __0 *local_78;
- long lStack_70;
+ ulong uVar1;
+ undefined8 uVar2;
+ undefined8 uVar3;
+ long lVar4;
+ undefined8 uVar5;
+ long lVar6;
+ ulong uVar7;
+ ulong uVar8;
+ long lVar9;
+ undefined8 local_148;
+ undefined8 local_140;
+ code *local_138;
+ undefined *puStack_130;
+ undefined8 *local_128;
+ undefined8 local_120;
+ undefined8 *local_118;
+ undefined8 local_110;
+ code *local_108;
+ code *pcStack_100;
+ char *local_f8;
+ undefined8 local_f0;
+ undefined8 local_e8;
+ undefined8 local_e0;
+ undefined8 local_d8;
+ code *local_d0;
+ undefined *puStack_c8;
+ ulong *local_c0;
+ ulong local_b8;
+ ulong *local_b0;
+ undefined8 local_a8;
+ code *local_a0;
+ code *pcStack_98;
+ char *local_90;
+ long local_88;
+ undefined8 local_80;
- lVar3 = 0;
- p_Var8 = param_2;
+ lVar4 = 0;
InternationalSupportLibraryCore((char **)0x0);
- if (((lVar3 != 0) && (getISEnumerateKnownUrduSequencesInStringSymbolLoc(), lVar3 != 0)) &&
+ if (((lVar4 != 0) &&
+ (getISEnumerateKnownUrduSequencesInStringSymbolLoc(), uVar2 = _DAT_0, lVar4 != 0)) &&
(0 < param_3)) {
- p_Var1 = param_2 + param_3;
- this = p_Var1;
+ lVar4 = param_2 + param_3;
do {
- local_90 = &local_78;
- pp_Stack_98 = &local_80;
- local_a0 = &local_88;
+ local_c0 = &local_b8;
+ local_b8 = 0;
+ local_a8 = 0x4012000000;
+ local_a0 = ___Block_byref_object_copy_;
+ pcStack_98 = ___Block_byref_object_dispose_;
+ local_90 = "";
+ local_80 = 0;
+ local_e0 = uVar2;
+ local_d8 = 0xc2000000;
+ local_d0 = ____ZL29GetNextUrduSequenceFromStringPK10__CFString7CFRangeb_block_invoke;
+ puStack_c8 = &___block_descriptor_40_8_32r_e17_v32__0___qq_8_B24l;
+ local_b0 = local_c0;
local_88 = param_2 + param_3;
- p_Var4 = (__0 *)&local_a0;
- local_80 = param_1;
- local_78 = param_2;
- lStack_70 = param_3;
- GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator()(this);
- p_Var6 = local_80;
- p_Var11 = this;
- param_2 = p_Var8;
- if ((0 < (long)p_Var8) && (param_4 != 0)) {
- puStack_f8 = &SUB_0;
- local_100 = &SUB_0;
- puStack_e8 = &SUB_0;
- puStack_f0 = &SUB_0;
- puStack_118 = &SUB_0;
- local_120 = &SUB_0;
- puStack_108 = &SUB_0;
- puStack_110 = &SUB_0;
- puStack_138 = &SUB_0;
- local_140 = &SUB_0;
- puStack_128 = &SUB_0;
- puStack_130 = &SUB_0;
- puStack_158 = &SUB_0;
- local_160 = &SUB_0;
- puStack_148 = &SUB_0;
- puStack_150 = &SUB_0;
- p_Var11 = local_80;
- p_Var9 = p_Var8;
- _CFStringGetLength();
- local_e0 = p_Var6;
- local_c8 = 0;
- p_Var5 = p_Var6;
- local_c0 = p_Var11;
- _CFStringGetCharactersPtr();
- local_d8 = p_Var5;
- p_Var11 = (__0 *)0x0;
- if (p_Var5 == (__0 *)0x0) {
- p_Var9 = (__0 *)0x600;
- _CFStringGetCStringPtr();
- p_Var11 = p_Var6;
+ SoftLinked__ISEnumerateKnownUrduSequencesInString(param_1,param_2,param_3,&local_e0);
+ uVar3 = _DAT_0;
+ uVar8 = local_b0[7];
+ if (0 < (long)uVar8 && param_4 != 0) {
+ while( true ) {
+ lVar9 = local_b0[6] + uVar8;
+ local_120 = 0;
+ local_110 = 0x4012000000;
+ local_108 = ___Block_byref_object_copy_;
+ pcStack_100 = ___Block_byref_object_dispose_;
+ local_f8 = "";
+ local_f0 = 0;
+ local_e8 = 0;
+ local_148 = uVar3;
+ local_140 = 0xc2000000;
+ local_138 = ____ZL29GetNextUrduSequenceFromStringPK10__CFString7CFRangeb_block_invoke_2;
+ puStack_130 = &___block_descriptor_40_8_32r_e17_v32__0___qq_8_B24l;
+ local_128 = &local_120;
+ local_118 = &local_120;
+ SoftLinked__ISEnumerateKnownUrduSequencesInString
+ (param_1,lVar9,(param_2 + param_3) - lVar9,&local_148);
+ lVar6 = local_118[7];
+ if (lVar6 == 0) break;
+ uVar8 = local_118[6];
+ if (lVar9 < (long)uVar8) {
+ do {
+ uVar5 = param_1;
+ _CFStringGetCharacterAtIndex(param_1,lVar9);
+ if ((int)uVar5 != 0x20) goto LAB_1;
+ lVar9 = lVar9 + 1;
+ uVar8 = local_118[6];
+ } while (lVar9 < (long)uVar8);
+ lVar6 = local_118[7];
+ }
+ uVar1 = local_b0[6];
+ uVar7 = uVar8;
+ if ((long)uVar1 <= (long)uVar8) {
+ uVar7 = uVar1;
+ }
+ lVar9 = local_b0[7] + uVar1;
+ if ((long)(local_b0[7] + uVar1) <= (long)(uVar8 + lVar6)) {
+ lVar9 = uVar8 + lVar6;
+ }
+ local_b0[6] = uVar7;
+ local_b0[7] = lVar9 - uVar7;
+ __Block_object_dispose(&local_120,8);
+ uVar8 = local_b0[7];
}
- p_Var5 = local_88;
- local_d0 = p_Var11;
- local_b8 = (__0 *)0x0;
- local_b0 = (__0 *)0x0;
- p_Var6 = p_Var4 + (long)p_Var8;
- if (((long)p_Var6 < (long)local_88) && (-1 < (long)p_Var6)) {
- p_Var11 = (__0 *)0x0;
- this = local_88 + -(long)p_Var4;
- do {
- param_2 = p_Var8;
- if ((long)local_c0 <= (long)p_Var6) break;
- if (local_d8 == (__0 *)0x0) {
- if (local_d0 != (__0 *)0x0) break;
- if ((long)local_b0 <= (long)p_Var6 || (long)p_Var6 < (long)p_Var11) {
- local_b8 = (__0 *)0x0;
- if ((__0 *)0x3 < p_Var6) {
- local_b8 = p_Var6 + -4;
- }
- local_b0 = local_b8 + 0x40;
- if (local_c0 <= local_b8 + 0x40) {
- local_b0 = local_c0;
- }
- p_Var9 = local_b8 + local_c8;
- _CFStringGetCharacters(local_e0,p_Var9,(long)local_b0 - (long)local_b8,&local_160);
- p_Var11 = local_b8;
- }
- p_Var7 = (__0 *)((long)&local_160 + ((long)p_Var6 - (long)p_Var11) * 2);
- }
- else {
- p_Var7 = local_d8 + (long)p_Var6 * 2 + local_c8 * 2;
- }
- if (*(short *)p_Var7 != 0x2026) break;
- p_Var8 = p_Var8 + 1;
- p_Var6 = p_Var6 + 1;
- param_2 = this;
- } while ((long)p_Var6 < (long)p_Var5);
- }
- do {
- p_Var8 = param_2 + (long)p_Var4;
- lStack_70 = (long)local_88 - (long)p_Var8;
- p_Var7 = (__0 *)&local_a0;
- local_78 = p_Var8;
- GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator()(this);
- p_Var11 = p_Var1;
- p_Var6 = p_Var9;
- if ((long)p_Var9 < 1) {
- if (p_Var9 == (__0 *)0x0) break;
- }
- else {
- p_Var14 = p_Var7 + (long)p_Var9;
- if (((long)p_Var14 < (long)p_Var5) && (-1 < (long)p_Var14)) {
- this = (__0 *)-(long)p_Var14;
- p_Var15 = p_Var9 + (long)p_Var7 + 0x40;
- lVar3 = (long)&local_160 + (long)p_Var14 * 2;
- p_Var13 = p_Var9;
- do {
- p_Var12 = p_Var14;
- if ((__0 *)0x3 < p_Var14) {
- p_Var12 = (__0 *)0x4;
- }
- p_Var2 = p_Var7 + (long)p_Var13;
- p_Var6 = p_Var13;
- if ((long)local_c0 <= (long)p_Var2) break;
- if (local_d8 == (__0 *)0x0) {
- if (local_d0 != (__0 *)0x0) break;
- if (((long)local_b0 <= (long)p_Var2) || ((long)p_Var2 < (long)local_b8)) {
- local_b8 = p_Var7 + ((long)p_Var13 - (long)p_Var12);
- local_b0 = local_b8 + 0x40;
- if (local_c0 <= local_b8 + 0x40) {
- local_b0 = local_c0;
- }
- p_Var2 = local_c0;
- if (p_Var15 + -(long)p_Var12 <= local_c0) {
- p_Var2 = p_Var15 + -(long)p_Var12;
- }
- p_Var9 = p_Var7 + (long)p_Var13 + (local_c8 - (long)p_Var12);
- _CFStringGetCharacters
- (local_e0,p_Var9,p_Var2 + (long)(p_Var12 + (long)this),&local_160);
- }
- p_Var12 = (__0 *)(lVar3 + (long)local_b8 * -2);
- }
- else {
- p_Var12 = local_d8 + (long)p_Var14 * 2 + local_c8 * 2;
- }
- if (*(short *)p_Var12 != 0x2026) break;
- p_Var13 = p_Var13 + 1;
- p_Var14 = p_Var14 + 1;
- this = this + -1;
- p_Var15 = p_Var15 + 1;
- lVar3 = lVar3 + 2;
- p_Var6 = p_Var5 + -(long)p_Var7;
- } while ((long)(p_Var7 + (long)p_Var13) < (long)p_Var5);
- }
- }
- if ((long)local_78 < (long)p_Var7) {
- if ((long)local_78 < 0) break;
- this = (__0 *)-(long)local_78;
- p_Var14 = local_78 + 0x40;
- p_Var15 = local_78;
- do {
- p_Var13 = p_Var15;
- if ((__0 *)0x3 < p_Var15) {
- p_Var13 = (__0 *)0x4;
- }
- if ((long)local_c0 <= (long)p_Var15) goto LAB_1;
- if (local_d8 == (__0 *)0x0) {
- if (local_d0 == (__0 *)0x0) {
- if ((long)local_b0 <= (long)p_Var15 || (long)p_Var15 < (long)local_b8) {
- local_b8 = p_Var15 + -(long)p_Var13;
- local_b0 = local_b8 + 0x40;
- if (local_c0 <= local_b8 + 0x40) {
- local_b0 = local_c0;
- }
- p_Var12 = local_c0;
- if (p_Var14 + -(long)p_Var13 <= local_c0) {
- p_Var12 = p_Var14 + -(long)p_Var13;
- }
- p_Var9 = local_b8 + local_c8;
- _CFStringGetCharacters
- (local_e0,p_Var9,p_Var12 + (long)(p_Var13 + (long)this),&local_160);
- }
- p_Var13 = (__0 *)((long)&local_160 + (long)local_b8 * -2);
- goto LAB_2;
- }
- uVar10 = (ushort)(char)(local_d0 + local_c8)[(long)p_Var15];
- }
- else {
- p_Var13 = local_d8 + local_c8 * 2;
-LAB_2:
- uVar10 = *(ushort *)(p_Var13 + (long)p_Var15 * 2);
- }
- if ((uVar10 & 0xff7f) != 0x20) goto LAB_1;
- p_Var15 = p_Var15 + 1;
- this = this + -1;
- p_Var14 = p_Var14 + 1;
- } while (p_Var7 != p_Var15);
- }
- p_Var11 = p_Var7;
- if ((long)p_Var4 <= (long)p_Var7) {
- p_Var11 = p_Var4;
- }
- if ((long)p_Var8 <= (long)(p_Var6 + (long)p_Var7)) {
- p_Var8 = p_Var6 + (long)p_Var7;
- }
- p_Var4 = p_Var11;
- param_2 = p_Var8 + -(long)p_Var11;
- } while( true );
+LAB_1:
+ __Block_object_dispose(&local_120,8);
+ uVar8 = local_b0[7];
}
-LAB_1:
- local_160 = (undefined1 *)((ulong)local_160 & 0xffffffffffffff00);
- p_Var8 = p_Var4;
- (**(code **)(param_5 + 0x10))(param_5,p_Var4,param_2,&local_160);
- if (((ulong)local_160 & 1) != 0) {
+ uVar7 = local_b0[6];
+ __Block_object_dispose(&local_b8,8);
+ local_b8 = local_b8 & 0xffffffffffffff00;
+ (**(code **)(param_5 + 0x10))(param_5,uVar7,uVar8,&local_b8);
+ if ((local_b8 & 1) != 0) {
return;
}
- if ((long)param_2 < 1) {
+ if ((long)uVar8 < 1) {
return;
}
- param_2 = param_2 + (long)p_Var4;
- param_3 = (long)p_Var11 - (long)param_2;
- this = p_Var11;
+ param_2 = uVar7 + uVar8;
+ param_3 = lVar4 - param_2;
} while (0 < param_3);
}
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address,called |
| ratio | 0.19 |
| i_ratio | 0.19 |
| m_ratio | 0.95 |
| b_ratio | 0.74 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | IsOnlySearchableAttributeInRequest | IsOnlySearchableAttributeInRequest |
| fullname | TDescriptorSource::IsOnlySearchableAttributeInRequest | TDescriptorSource::IsOnlySearchableAttributeInRequest |
| refcount | 2 | 2 |
length |
380 | 424 |
called |
TDescriptorSource::IsSearchableAttribute _CFDictionaryContainsKey _CFDictionaryGetCount _CFEqual ___stack_chk_fail _objc_enumerationMutation _objc_msgSend$countByEnumeratingWithState:objects:count: _objc_msgSend$keyEnumerator |
TDescriptorSource::IsSearchableAttribute _CFDictionaryContainsKey _CFDictionaryGetCount _CFDictionaryGetKeysAndValues _CFEqual ___stack_chk_fail _bzero std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100] std::vector<void_const*,TInlineBufferAllocator<void_const*,30ul>>::__vallocate[abi:fn200100] |
| calling | TDescriptorSource::CopyDescriptorsForRequest | TDescriptorSource::CopyDescriptorsForRequest |
| paramcount | 2 | 2 |
address |
1833b6d90 | 18338cd90 |
| sig | undefined __swiftcall IsOnlySearchableAttributeInRequest(__CFDictionary * param_1, __CFString * param_2) | undefined __swiftcall IsOnlySearchableAttributeInRequest(__CFDictionary * param_1, __CFString * param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TDescriptorSource::IsOnlySearchableAttributeInRequest called
+++ TDescriptorSource::IsOnlySearchableAttributeInRequest called
@@ -3,0 +4 @@
+_CFDictionaryGetKeysAndValues
@@ -6,3 +7,3 @@
-_objc_enumerationMutation
-_objc_msgSend$countByEnumeratingWithState:objects:count:
-_objc_msgSend$keyEnumerator
+_bzero
+std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100]
+std::vector<void_const*,TInlineBufferAllocator<void_const*,30ul>>::__vallocate[abi:fn200100]--- TDescriptorSource::IsOnlySearchableAttributeInRequest
+++ TDescriptorSource::IsOnlySearchableAttributeInRequest
@@ -1,56 +1,126 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* TDescriptorSource::IsOnlySearchableAttributeInRequest(__CFDictionary const*, __CFString const*)
*/
void TDescriptorSource::IsOnlySearchableAttributeInRequest
(__CFDictionary *param_1,__CFString *param_2)
{
- long lVar1;
+ void *pvVar1;
__CFString *p_Var2;
- __CFDictionary *p_Var3;
- long lVar4;
- __CFString *p_Var5;
- __CFDictionary *p_Var6;
+ __destroy_vector *this;
+ __CFString *p_Var3;
+ undefined8 *puVar4;
+ undefined8 *local_158;
+ void *local_150;
+ undefined8 uStack_148;
+ undefined1 *local_140;
+ undefined1 *puStack_138;
+ undefined1 *puStack_130;
+ undefined1 *puStack_128;
+ undefined1 *local_120;
+ undefined1 *puStack_118;
+ undefined1 *puStack_110;
+ undefined1 *puStack_108;
+ undefined1 *local_100;
+ undefined1 *puStack_f8;
+ undefined1 *puStack_f0;
+ undefined1 *puStack_e8;
+ undefined1 *local_e0;
+ undefined1 *puStack_d8;
+ undefined1 *local_d0;
+ undefined1 *puStack_c8;
+ undefined1 *local_c0;
+ undefined1 *puStack_b8;
+ undefined1 *local_b0;
+ undefined1 *puStack_a8;
+ undefined1 *local_a0;
+ undefined1 *puStack_98;
+ undefined1 *local_90;
+ undefined1 *puStack_88;
+ undefined1 *local_80;
+ undefined1 *puStack_78;
+ undefined1 *local_70;
+ undefined1 *puStack_68;
+ undefined1 *local_60;
+ undefined1 *puStack_58;
+ undefined1 **local_50;
+ long local_48;
- lVar4 = *_DAT_0;
- if (((param_2 == (__CFString *)0x1000006e7d38c0 || param_2 == (__CFString *)0x1000006e7d38e0) ||
+ local_48 = *_DAT_0;
+ if (((param_2 == (__CFString *)0x1000006e7d9b00 || param_2 == (__CFString *)0x1000006e7d9b20) ||
(p_Var2 = param_2, IsSearchableAttribute(param_2), (int)p_Var2 != 0)) &&
(param_1 != (__CFDictionary *)0x0)) {
- p_Var3 = param_1;
+ this = (__destroy_vector *)param_1;
_CFDictionaryGetCount();
- if (p_Var3 == (__CFDictionary *)0x1) {
+ if (this == (__destroy_vector *)0x1) {
_CFDictionaryContainsKey(param_1,param_2);
}
- else if (0 < (long)p_Var3) {
- _objc_msgSend_keyEnumerator();
- p_Var3 = param_1;
- _objc_msgSend_countByEnumeratingWithState_objects_count_();
- lVar1 = lRam0000000000000000;
- while (p_Var3 != (__CFDictionary *)0x0) {
- p_Var6 = (__CFDictionary *)0x0;
- do {
- if (lRam0000000000000000 != lVar1) {
- _objc_enumerationMutation(param_1);
- }
- p_Var5 = *(__CFString **)((long)p_Var6 * 8);
- p_Var2 = p_Var5;
- IsSearchableAttribute(p_Var5);
- if (((int)p_Var2 != 0) && (_CFEqual(p_Var5,param_2), (int)p_Var5 == 0))
- goto LAB_1;
- p_Var6 = p_Var6 + 1;
- } while (p_Var3 != p_Var6);
- p_Var3 = param_1;
- _objc_msgSend_countByEnumeratingWithState_objects_count_();
- }
+ else if (0 < (long)this) {
+ puStack_58 = &SUB_1;
+ local_60 = &SUB_1;
+ puStack_68 = &SUB_1;
+ local_70 = &SUB_1;
+ local_50 = &local_140;
+ puStack_78 = &SUB_1;
+ local_80 = &SUB_1;
+ puStack_88 = &SUB_1;
+ local_90 = &SUB_1;
+ puStack_98 = &SUB_1;
+ local_a0 = &SUB_1;
+ puStack_a8 = &SUB_1;
+ local_b0 = &SUB_1;
+ puStack_b8 = &SUB_1;
+ local_c0 = &SUB_1;
+ puStack_c8 = &SUB_1;
+ local_d0 = &SUB_1;
+ puStack_d8 = &SUB_1;
+ local_e0 = &SUB_1;
+ puStack_f8 = &SUB_1;
+ local_100 = &SUB_1;
+ puStack_e8 = &SUB_1;
+ puStack_f0 = &SUB_1;
+ puStack_118 = &SUB_1;
+ local_120 = &SUB_1;
+ puStack_108 = &SUB_1;
+ puStack_110 = &SUB_1;
+ puStack_138 = &SUB_1;
+ local_140 = &SUB_1;
+ puStack_128 = &SUB_1;
+ puStack_130 = &SUB_1;
+ local_150 = (void *)0x0;
+ uStack_148 = 0;
+ local_158 = (undefined8 *)0x0;
+ std::vector<void_const*,TInlineBufferAllocator<void_const*,30ul>>::__vallocate_abi_fn200100_
+ ((vector<void_const*,TInlineBufferAllocator<void_const*,30ul>> *)this,
+ (ulong)&local_158);
+ pvVar1 = local_150;
+ _bzero(local_150,(long)this << 3);
+ puVar4 = local_158;
+ local_150 = (void *)((long)pvVar1 + (long)this * 8);
+ _CFDictionaryGetKeysAndValues(param_1,local_158,0);
+ do {
+ p_Var3 = (__CFString *)*puVar4;
+ p_Var2 = p_Var3;
+ IsSearchableAttribute(p_Var3);
+ if (((int)p_Var2 != 0) && (_CFEqual(p_Var3,param_2), (int)p_Var3 == 0)) {
+ std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::
+ operator()[abi_fn200100_(this);
+ goto LAB_2;
+ }
+ puVar4 = puVar4 + 1;
+ this = this + -1;
+ } while (this != (__destroy_vector *)0x0);
+ std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::
+ operator()[abi_fn200100_((__destroy_vector *)0x0);
}
}
-LAB_1:
- if (*_DAT_0 == lVar4) {
+LAB_2:
+ if (*_DAT_0 == local_48) {
return;
}
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.98 |
| i_ratio | 0.62 |
| m_ratio | 1.0 |
| b_ratio | 0.99 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | CopyDescriptorsForRequest | CopyDescriptorsForRequest |
| fullname | TDescriptorSource::CopyDescriptorsForRequest | TDescriptorSource::CopyDescriptorsForRequest |
| refcount | 5 | 5 |
length |
3824 | 3812 |
| called | Expand for full list:TDescriptorSource::CopyDescriptor |
Expand for full list:TDescriptorSource::CopyDescriptor |
| calling | TDescriptor::CreateMatchingDescriptors TDescriptorSource::CopyDescriptorForRequest TDescriptorSource::CopyDescriptorsForRequest TDescriptorSource::CopyMatchingDescriptorsForFamily |
TDescriptor::CreateMatchingDescriptors TDescriptorSource::CopyDescriptorForRequest TDescriptorSource::CopyDescriptorsForRequest TDescriptorSource::CopyMatchingDescriptorsForFamily |
| paramcount | 6 | 6 |
address |
183476fac | 18344dc4c |
| sig | undefined __thiscall CopyDescriptorsForRequest(TDescriptorSource * this, __CFDictionary * param_1, __CFSet * param_2, _func_CFComparisonResult_void_ptr_void_ptr_void_ptr * param_3, ulong param_4, TCFRef * param_5) | undefined __thiscall CopyDescriptorsForRequest(TDescriptorSource * this, __CFDictionary * param_1, __CFSet * param_2, _func_CFComparisonResult_void_ptr_void_ptr_void_ptr * param_3, ulong param_4, TCFRef * param_5) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TDescriptorSource::CopyDescriptorsForRequest
+++ TDescriptorSource::CopyDescriptorsForRequest
@@ -1,737 +1,736 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* TDescriptorSource::CopyDescriptorsForRequest(__CFDictionary const*, __CFSet const*,
CFComparisonResult (*)(void const*, void const*, void*), unsigned long, TCFRef<__CFArray
const*>*) const */
void __thiscall
TDescriptorSource::CopyDescriptorsForRequest
(TDescriptorSource *this,__CFDictionary *param_1,__CFSet *param_2,
_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *param_3,ulong param_4,TCFRef *param_5
)
{
bool bVar1;
uint uVar2;
bool bVar3;
code *pcVar4;
__CFDictionary *in_tmp_ldXn;
__CFSet *p_Var5;
__CFString *p_Var6;
__CFDictionary *p_Var7;
int iVar8;
_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *p_Var9;
void *pvVar10;
undefined8 uVar11;
__CFDictionary **pp_Var12;
__CFSet *p_Var13;
__CFString *p_Var14;
__CFSet *p_Var15;
long lVar16;
__CFSet *p_Var17;
__CFSet *p_Var18;
__CFDictionary *p_Var19;
__CFDictionary *p_Var20;
__CFDictionary *p_Var21;
TDescriptor *pTVar22;
undefined1 *puVar23;
__CFString *p_Var24;
TCFMutableDictionary *in_x8;
__CFSet *p_Var25;
uint uVar26;
__CFSet *p_Var27;
__CFDictionary *p_Var28;
__CFSet *in_xzr;
__CFSet *local_1b8;
__CFSet *local_1b0;
int local_1a4;
undefined1 *local_1a0;
undefined8 local_198;
__CFSet *local_190;
__CFDictionary *local_188;
__CFSet *local_180;
void *local_178;
undefined8 uStack_170;
undefined1 *local_168;
undefined1 *puStack_160;
undefined1 *local_158;
undefined1 *puStack_150;
undefined1 *local_148;
undefined1 *puStack_140;
undefined1 *local_138;
undefined1 *puStack_130;
undefined1 *local_128;
undefined1 *puStack_120;
undefined1 *local_118;
undefined1 *puStack_110;
undefined1 *local_108;
undefined1 *puStack_100;
undefined1 *local_f8;
undefined1 *puStack_f0;
undefined1 *local_e8;
undefined1 *puStack_e0;
undefined1 *local_d8;
undefined1 *puStack_d0;
undefined1 *local_c8;
undefined1 *puStack_c0;
undefined1 *local_b8;
undefined1 *puStack_b0;
undefined1 *local_a8;
undefined1 *puStack_a0;
undefined1 *local_98;
undefined1 *puStack_90;
undefined1 *local_88;
undefined1 *puStack_80;
undefined1 **local_78;
long local_70;
local_70 = *_DAT_0;
p_Var5 = param_2;
_CFGetTypeID();
p_Var27 = p_Var5;
_CFDictionaryGetTypeID();
if (p_Var5 != p_Var27) {
*(undefined8 *)in_x8 = 0;
goto LAB_1;
}
p_Var5 = param_2;
- _CFDictionaryContainsKey(param_2,0x1000006e7d3f20);
+ _CFDictionaryContainsKey(param_2,0x1000006e7da160);
if ((int)p_Var5 == 0) {
*(undefined8 *)in_x8 = 0;
local_1a0 = &SUB_2;
CopyMandatoryMatchableRequest
((TDescriptorSource *)in_x8,(__CFDictionary *)param_2,(__CFSet *)param_3);
if (((uint)param_5 >> 5 & 1) == 0) {
pvVar10 = _dispatch_get_specific(DoNotCacheKey);
if (pvVar10 != (void *)0x0) {
bVar3 = false;
param_5 = (TCFRef *)((ulong)param_5 | 0x20);
goto LAB_3;
}
LOAcquire();
p_Var6 = *(__CFString **)in_x8;
*(__CFSet **)in_x8 = in_xzr;
LORelease();
_objc_release(&local_1a0,p_Var6);
p_Var5 = (__CFSet *)in_tmp_ldXn;
HasMissedRequest(in_tmp_ldXn,(ulong)param_5,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)param_4);
puVar23 = local_1a0;
if (((ulong)p_Var5 & 1) != 0) goto LAB_4;
local_180 = (__CFSet *)0x0;
TPerThreadLRUCache<TRequestCacheNode,(ThreadSpecificKey)3,16ul>::TPerThreadLRUCache
((TPerThreadLRUCache<TRequestCacheNode,(ThreadSpecificKey)3,16ul> *)in_x8);
pp_Var12 = &local_188;
TRequestCache::CopyResultForRequest
((TRequestCache *)in_x8,pp_Var12,(ulong)in_tmp_ldXn,param_5,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)&local_180);
if (((ulong)pp_Var12 & 1) == 0) {
_objc_release(local_180);
bVar3 = true;
in_tmp_ldXn = (__CFDictionary *)p_Var6;
goto LAB_3;
}
if (p_Var6 != (__CFString *)0x0) {
p_Var27 = (__CFSet *)*_DAT_5;
_CFArrayCreateMutable(p_Var27,0,_DAT_6);
p_Var5 = (__CFSet *)p_Var6;
local_188 = (__CFDictionary *)p_Var27;
_CFGetTypeID();
p_Var27 = p_Var5;
_CFArrayGetTypeID();
if (p_Var5 == p_Var27) {
p_Var24 = p_Var6;
_objc_retain();
if ((p_Var24 != (__CFString *)0x0) &&
(p_Var5 = (__CFSet *)p_Var24, _CFArrayGetCount(), p_Var5 != (__CFSet *)0x0)) {
p_Var27 = (__CFSet *)0x0;
do {
p_Var13 = (__CFSet *)p_Var24;
_CFArrayGetValueAtIndex(p_Var24,p_Var27);
local_190 = (__CFSet *)&SUB_2;
CopyDescriptor((__CFURL *)param_1,(__CFString *)p_Var13,(__CFString *)0x0);
local_198 = &SUB_2;
CopyFontDescriptorWithOptions
((TDescriptorSource *)in_x8,(TCFRef *)&local_190,(ulong)param_5,
(__CFNumber *)0x0);
if (p_Var6 != (__CFString *)0x0) {
p_Var14 = p_Var6;
_objc_retain(p_Var6);
_CFArrayAppendValue(p_Var6,p_Var14);
_objc_release(p_Var14);
}
_objc_release(local_198);
_objc_release(local_190);
p_Var27 = p_Var27 + 1;
} while (p_Var5 != p_Var27);
}
}
else {
local_190 = (__CFSet *)&SUB_2;
CopyDescriptor((__CFURL *)param_1,p_Var6,(__CFString *)0x0);
local_198 = &SUB_2;
CopyFontDescriptorWithOptions
((TDescriptorSource *)in_x8,(TCFRef *)&local_190,(ulong)param_5,
(__CFNumber *)0x0);
if (p_Var6 != (__CFString *)0x0) {
p_Var24 = p_Var6;
_objc_retain(p_Var6);
_CFArrayAppendValue(&local_188,p_Var6,p_Var24);
_objc_release(p_Var24);
}
_objc_release(local_198);
p_Var24 = (__CFString *)local_190;
}
_objc_release(p_Var24);
_CFArrayGetCount();
if (p_Var6 != (__CFString *)0x0) {
LOAcquire();
LORelease();
LOAcquire();
uVar11 = *(undefined8 *)in_x8;
*(__CFDictionary **)in_x8 = local_188;
LORelease();
local_188 = (__CFDictionary *)in_xzr;
_objc_release(uVar11);
}
_objc_release(local_188);
}
LAB_7:
_objc_release(local_180);
puVar23 = local_1a0;
}
else {
bVar3 = false;
LAB_3:
p_Var5 = (__CFSet *)in_tmp_ldXn;
_objc_retain();
if (p_Var5 == (__CFSet *)0x0) {
p_Var27 = (__CFSet *)0x0;
}
else {
p_Var27 = p_Var5;
_CFDictionaryGetCount();
}
_objc_release(p_Var5);
local_1a4 = 0;
p_Var5 = param_2;
- _CFDictionaryGetValue(param_2,0x1000006e7d3b00);
+ _CFDictionaryGetValue(param_2,0x1000006e7d9d40);
if (p_Var5 != (__CFSet *)0x0) {
p_Var13 = p_Var5;
_CFGetTypeID();
p_Var15 = p_Var13;
_CFNumberGetTypeID();
if ((p_Var13 == p_Var15) || (_CFBooleanGetTypeID(), p_Var13 == p_Var15)) {
_CFNumberGetValue(p_Var5,9,&local_1a4);
}
else {
_CFStringGetTypeID();
if (p_Var13 == p_Var15) {
_CFStringGetIntValue();
local_1a4 = (int)p_Var5;
}
}
}
uVar26 = (uint)param_5;
if (((long)p_Var27 < 1) && (local_1a4 == 0)) {
local_188 = (__CFDictionary *)&SUB_2;
CreateDefaultDescriptor(&local_188);
LAB_8:
p_Var5 = (__CFSet *)0x0;
if (in_tmp_ldXn != (__CFDictionary *)0x0) {
uVar11 = *_DAT_5;
local_180 = (__CFSet *)in_tmp_ldXn;
_CFArrayCreate(uVar11,&local_180,1,_DAT_6);
LOAcquire();
LORelease();
LOAcquire();
p_Var5 = *(__CFSet **)in_x8;
*(undefined8 *)in_x8 = uVar11;
LORelease();
local_190 = in_xzr;
_objc_release(p_Var5);
_objc_release(local_190);
}
in_tmp_ldXn = (__CFDictionary *)p_Var5;
_objc_release(local_188);
}
else {
if ((uVar26 >> 4 & 1) == 0) {
local_180 = (__CFSet *)&SUB_2;
CopySplicedDescriptorsForRequest
(&local_180,param_1,param_2,param_5,0,0,0,0xffffffffffffffff,*_DAT_9);
CopySortedDescriptorsForRequest
((TCFRef *)&local_188,(__CFDictionary *)&local_180,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)param_2);
_objc_release(local_180);
LOAcquire();
LORelease();
LOAcquire();
lVar16 = *(long *)in_x8;
*(__CFDictionary **)in_x8 = local_188;
LORelease();
local_188 = (__CFDictionary *)in_xzr;
_objc_release(lVar16);
_objc_release(local_188);
puVar23 = local_1a0;
if (lVar16 != 0) goto LAB_4;
in_tmp_ldXn = (__CFDictionary *)0x0;
}
if (((uVar26 >> 9 & 1) == 0) && (local_1a4 != 0)) {
CopyDownloadableDescriptorsForRequest
((TDescriptorSource *)in_x8,in_tmp_ldXn,(ulong)param_5);
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)in_x8;
*(__CFSet **)in_x8 = local_180;
LORelease();
local_180 = in_xzr;
_objc_release(in_tmp_ldXn);
_objc_release(local_180);
bVar3 = false;
}
else {
local_198 = (undefined1 *)CONCAT44(local_198._4_4_,0xaaaaaaaa);
local_180 = (__CFSet *)&SUB_2;
p_Var7 = in_tmp_ldXn;
CopyXTypeRequestProperties
((TDescriptorSource *)in_x8,in_tmp_ldXn,(ulong)param_5,(uint *)&local_198);
p_Var19 = p_Var7;
_objc_retain();
if (p_Var19 == (__CFDictionary *)0x0) {
_objc_release();
LAB_10:
local_190 = (__CFSet *)0x0;
}
else {
p_Var20 = p_Var19;
_CFDictionaryGetCount();
_objc_release(p_Var19);
if (p_Var20 == (__CFDictionary *)0x0) goto LAB_10;
p_Var19 = p_Var7;
- _CFDictionaryGetValue(p_Var7,0x1000006e7d3ae0);
+ _CFDictionaryGetValue(p_Var7,0x1000006e7d9d20);
local_1b0 = (__CFSet *)((ulong)local_1b0 & 0xffffffff00000000);
if (p_Var19 != (__CFDictionary *)0x0) {
p_Var20 = p_Var19;
_CFGetTypeID();
p_Var28 = p_Var20;
_CFNumberGetTypeID();
if ((p_Var20 == p_Var28) || (_CFBooleanGetTypeID(), p_Var20 == p_Var28)) {
_CFNumberGetValue(p_Var19,9,&local_1b0);
iVar8 = (int)local_1b0;
}
else {
_CFStringGetTypeID();
if (p_Var20 != p_Var28) goto LAB_11;
_CFStringGetIntValue();
iVar8 = (int)p_Var19;
local_1b0 = (__CFSet *)CONCAT44(local_1b0._4_4_,iVar8);
}
if (iVar8 != 0) {
local_198._4_4_ = (undefined4)((ulong)local_198 >> 0x20);
local_198 = (undefined1 *)CONCAT44(local_198._4_4_,0x400000);
}
}
LAB_11:
uVar2 = (uint)local_198 | 0x80;
local_198 = (undefined1 *)((ulong)local_198 | 0x80);
p_Var19 = p_Var7;
_XTCopyFontsWithProperties(p_Var7,7,uVar2);
p_Var20 = p_Var19;
_objc_retain();
if (p_Var20 == (__CFDictionary *)0x0) {
LAB_12:
_objc_release();
LAB_13:
_objc_release(p_Var19);
goto LAB_10;
}
p_Var28 = p_Var20;
_CFArrayGetCount();
_objc_release(p_Var20);
if ((long)p_Var28 < 1) goto LAB_13;
p_Var5 = (__CFSet *)*_DAT_5;
_CFArrayCreateMutable(p_Var5,0,_DAT_6);
local_188 = (__CFDictionary *)p_Var5;
if ((p_Var19 != (__CFDictionary *)0x0) &&
(p_Var20 = p_Var19, _CFArrayGetCount(), p_Var20 != (__CFDictionary *)0x0)) {
p_Var28 = (__CFDictionary *)0x0;
do {
p_Var21 = p_Var19;
_CFArrayGetValueAtIndex(p_Var19,p_Var28);
local_190 = (__CFSet *)&SUB_2;
CopyDescriptor((__CFURL *)param_1,(__CFString *)p_Var21,(__CFString *)0x0);
if (p_Var7 != (__CFDictionary *)0x0) {
p_Var21 = p_Var7;
_objc_retain(p_Var7);
_CFArrayAppendValue(&local_188,p_Var7,p_Var21);
_objc_release(p_Var21);
}
_objc_release(local_190);
p_Var28 = p_Var28 + 1;
} while (p_Var20 != p_Var28);
}
- if (((gVisibleSystemFontsEnabled & 1) != 0) &&
- (IsOnlySearchableAttributeInRequest(in_tmp_ldXn,(__CFString *)0x1000006e7d3a40),
- (int)in_tmp_ldXn != 0)) {
+ IsOnlySearchableAttributeInRequest(in_tmp_ldXn,(__CFString *)0x1000006e7d9c80);
+ if (((ulong)in_tmp_ldXn & 1) != 0) {
AddSystemVisibleFontDescriptors
((TDescriptorSource *)in_x8,(TCFMutableArray *)param_1,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)&local_188);
}
_CFArrayGetCount();
if ((long)p_Var7 < 1) goto LAB_12;
LOAcquire();
LORelease();
local_190 = (__CFSet *)local_188;
local_188 = (__CFDictionary *)in_xzr;
_objc_release(in_xzr);
_objc_release(p_Var19);
}
_objc_release(local_180);
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)in_x8;
*(__CFSet **)in_x8 = local_190;
LORelease();
local_190 = in_xzr;
_objc_release(in_tmp_ldXn);
_objc_release(local_190);
if (in_tmp_ldXn == (__CFDictionary *)0x0 && ((ulong)param_5 & 0x10) == 0) {
_os_unfair_lock_lock_with_options(&sSplicedFontsLock,0x50000);
EnsureUserSplicedFontStash();
CopyDescriptorsForRequestFromArray
((TDescriptorSource *)in_x8,(__CFArray *)&local_180,DAT_14,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)param_2,0,
SUB81(param_5,0));
LOAcquire();
LORelease();
LOAcquire();
uVar11 = *(undefined8 *)in_x8;
*(__CFSet **)in_x8 = local_180;
LORelease();
local_180 = in_xzr;
_objc_release(uVar11);
_objc_release(local_180);
CopySortedDescriptorsForRequest
((TCFRef *)&local_180,(__CFDictionary *)in_x8,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)param_2);
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)in_x8;
*(__CFSet **)in_x8 = local_180;
LORelease();
local_180 = in_xzr;
_objc_release(in_tmp_ldXn);
_objc_release(local_180);
_os_unfair_lock_unlock(&sSplicedFontsLock);
}
if (((((uVar26 >> 9 & 1) == 0) && (in_tmp_ldXn == (__CFDictionary *)0x0)) &&
(p_Var27 == (__CFSet *)0x1)) &&
(p_Var5 = (__CFSet *)in_tmp_ldXn, GetPostScriptNameAndAttribute((__CFDictionary *)0x0),
p_Var5 != (__CFSet *)0x0)) {
local_188 = (__CFDictionary *)&SUB_2;
CopyFontDescriptorPerPostScriptName
(&local_188,param_1,p_Var5,param_5,0,0,0,0,0xffffffffffffffff,*_DAT_9)
;
goto LAB_8;
}
}
}
p_Var5 = (__CFSet *)in_tmp_ldXn;
_objc_retain();
if (p_Var5 == (__CFSet *)0x0) {
bVar1 = false;
}
else {
p_Var27 = p_Var5;
_CFArrayGetCount();
bVar1 = 1 < (long)p_Var27;
}
iVar8 = local_1a4;
_objc_release(p_Var5);
if ((bVar1) && (iVar8 == 0)) {
if ((uVar26 >> 3 & 1) == 0) {
if ((param_4 == 0) ||
- (p_Var5 = param_2, _CFDictionaryGetValue(param_2,0x1000006e7d3920),
+ (p_Var5 = param_2, _CFDictionaryGetValue(param_2,0x1000006e7d9b60),
p_Var5 == (__CFSet *)0x0)) goto LAB_15;
local_180 = (__CFSet *)&SUB_2;
TCFMutableArray::TCFMutableArray((TCFMutableArray *)in_x8,(__CFArray *)&local_180);
pcVar4 = CompareDescriptorsByTraitsAndPrecedenceForSingleFamily;
if ((code *)param_4 != CompareDescriptorsByTraitsAndPrecedence) {
pcVar4 = (code *)param_4;
}
p_Var5 = (__CFSet *)in_tmp_ldXn;
_CFArrayGetCount(in_tmp_ldXn);
_CFArraySortValues(in_tmp_ldXn,0,p_Var5,pcVar4,0);
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)in_x8;
*(__CFSet **)in_x8 = local_180;
LORelease();
local_180 = in_xzr;
_objc_release(in_tmp_ldXn);
p_Var5 = local_180;
}
else {
p_Var5 = (__CFSet *)*_DAT_5;
_CFArrayCreateMutable(p_Var5,0,_DAT_6);
CreateDescriptorArrayFilteringDuplicates
((__CFArray *)&local_180,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)in_tmp_ldXn);
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)in_x8;
*(__CFSet **)in_x8 = local_180;
LORelease();
local_180 = in_xzr;
_objc_release(in_tmp_ldXn);
_objc_release(local_180);
}
_objc_release(p_Var5);
}
LAB_15:
if (((param_2 != (__CFSet *)0x0) && ((uVar26 >> 8 & 1) != 0)) &&
(p_Var5 = param_2, _CFDictionaryGetCount(), 0 < (long)p_Var5)) {
puStack_80 = &SUB_2;
local_88 = &SUB_2;
puStack_90 = &SUB_2;
local_98 = &SUB_2;
local_78 = &local_168;
puStack_a0 = &SUB_2;
local_a8 = &SUB_2;
puStack_b0 = &SUB_2;
local_b8 = &SUB_2;
puStack_c0 = &SUB_2;
local_c8 = &SUB_2;
puStack_d0 = &SUB_2;
local_d8 = &SUB_2;
puStack_e0 = &SUB_2;
local_e8 = &SUB_2;
puStack_f0 = &SUB_2;
local_f8 = &SUB_2;
puStack_100 = &SUB_2;
local_108 = &SUB_2;
puStack_110 = &SUB_2;
local_118 = &SUB_2;
puStack_120 = &SUB_2;
local_128 = &SUB_2;
puStack_130 = &SUB_2;
local_138 = &SUB_2;
puStack_140 = &SUB_2;
local_148 = &SUB_2;
puStack_150 = &SUB_2;
local_158 = &SUB_2;
puStack_160 = &SUB_2;
local_168 = &SUB_2;
local_178 = (void *)0x0;
uStack_170 = 0;
local_180 = (__CFSet *)0x0;
std::vector<void_const*,TInlineBufferAllocator<void_const*,30ul>>::__vallocate_abi_fn200100_
((vector<void_const*,TInlineBufferAllocator<void_const*,30ul>> *)in_x8,
(ulong)&local_180);
pvVar10 = local_178;
_bzero(local_178,(long)p_Var5 << 3);
local_178 = (void *)((long)pvVar10 + (long)p_Var5 * 8);
_CFDictionaryGetKeysAndValues(param_2,local_180,0);
p_Var15 = (__CFSet *)*_DAT_5;
p_Var13 = p_Var15;
_CFSetCreateMutable(p_Var15,0,_DAT_16);
p_Var27 = (__CFSet *)0x0;
do {
p_Var25 = (__CFSet *)((long)local_178 - (long)local_180 >> 3);
if (p_Var25 <= p_Var27) goto LAB_17;
lVar16 = *(long *)(local_180 + (long)p_Var27 * 8);
- if (lVar16 == 0x1000006e7d3bc0) {
+ if (lVar16 == 0x1000006e7d9e00) {
LAB_18:
if (p_Var25 <= p_Var27) goto LAB_17;
p_Var25 = param_2;
_CFDictionaryGetValue(param_2,*(undefined8 *)(local_180 + (long)p_Var27 * 8));
if (p_Var25 == (__CFSet *)0x0) goto LAB_19;
p_Var17 = p_Var25;
_CFGetTypeID();
p_Var18 = p_Var17;
_CFNumberGetTypeID();
if (p_Var17 == p_Var18) {
local_188 = (__CFDictionary *)0xffffffffffffffff;
_CFNumberGetValue(p_Var25,0xd,&local_188);
if ((double)local_188 != 0.0) goto LAB_19;
}
}
else {
- if ((lVar16 != 0) && (_CFEqual(lVar16,0x1000006e7d3bc0), (int)lVar16 != 0)) {
+ if ((lVar16 != 0) && (_CFEqual(lVar16,0x1000006e7d9e00), (int)lVar16 != 0)) {
p_Var25 = (__CFSet *)((long)local_178 - (long)local_180 >> 3);
goto LAB_18;
}
LAB_19:
if ((__CFSet *)((long)local_178 - (long)local_180 >> 3) <= p_Var27) {
LAB_17:
/* WARNING: Does not return */
- pcVar4 = (code *)SoftwareBreakpoint(1,0x183477e6c);
+ pcVar4 = (code *)SoftwareBreakpoint(1,0x18344eb00);
(*pcVar4)();
}
_CFSetAddValue(p_Var13,*(undefined8 *)(local_180 + (long)p_Var27 * 8));
}
p_Var27 = p_Var27 + 1;
} while (p_Var5 != p_Var27);
if (DAT_20 != -1) {
_dispatch_once_f(&DAT_20,(void *)0x0,GetMatchableAttributes()::$_0::__invoke);
}
if (DAT_21 != 0) {
_objc_msgSend_minusSet_(p_Var13);
}
p_Var5 = p_Var13;
_CFSetGetCount();
if (p_Var5 != (__CFSet *)0x0) {
local_188 = (__CFDictionary *)&SUB_2;
CreateCopyOfDictionaryFilteredByKeys((__CFDictionary *)param_2,p_Var13);
p_Var5 = (__CFSet *)in_tmp_ldXn;
_objc_retain();
if (p_Var5 == (__CFSet *)0x0) {
_objc_release();
}
else {
p_Var27 = p_Var5;
_CFDictionaryGetCount();
_objc_release(p_Var5);
if (0 < (long)p_Var27) {
_CFArrayCreateMutable(p_Var15,0,_DAT_6);
local_190 = p_Var15;
if ((in_tmp_ldXn != (__CFDictionary *)0x0) &&
(p_Var5 = (__CFSet *)in_tmp_ldXn, p_Var27 = (__CFSet *)in_tmp_ldXn,
_CFArrayGetCount(), p_Var27 != (__CFSet *)0x0)) {
p_Var15 = (__CFSet *)0x0;
do {
p_Var25 = (__CFSet *)in_tmp_ldXn;
_CFArrayGetValueAtIndex(in_tmp_ldXn,p_Var15);
local_198 = &SUB_2;
local_1b8 = p_Var5;
local_1b0 = p_Var25;
TCFBase_NEW<CTFontDescriptor,CTFontDescriptor*,__CFDictionary_const*>
((CTFontDescriptor **)&local_1b0,(__CFDictionary **)&local_1b8);
p_Var25 = p_Var5;
_objc_retain(p_Var5);
_CFArrayAppendValue(p_Var5,p_Var25);
_objc_release(p_Var25);
_objc_release(local_198);
p_Var15 = p_Var15 + 1;
} while (p_Var27 != p_Var15);
}
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)in_x8;
*(__CFSet **)in_x8 = local_190;
LORelease();
local_190 = in_xzr;
_objc_release(in_tmp_ldXn);
_objc_release(local_190);
}
}
_objc_release(local_188);
}
_objc_release(p_Var13);
local_188 = (__CFDictionary *)&local_180;
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::
operator()[abi_fn200100_((__destroy_vector *)in_x8);
}
puVar23 = local_1a0;
if (bVar3) {
if ((in_tmp_ldXn != (__CFDictionary *)0x0) &&
(p_Var5 = (__CFSet *)in_tmp_ldXn, p_Var27 = (__CFSet *)in_tmp_ldXn,
_CFArrayGetCount(&local_1a0), p_Var27 != (__CFSet *)0x0)) {
local_180 = (__CFSet *)0x0;
local_178 = (void *)0x0;
p_Var27 = (__CFSet *)in_tmp_ldXn;
_CFArrayGetCount();
p_Var13 = (__CFSet *)in_tmp_ldXn;
if (p_Var27 != (__CFSet *)0x0) {
p_Var15 = (__CFSet *)0x0;
do {
pTVar22 = (TDescriptor *)p_Var13;
_CFArrayGetValueAtIndex(p_Var13,p_Var15);
if (-1 < *(int *)(*(ulong *)(pTVar22 + 0x28) + 0x10)) {
TDescriptor::InitBaseFont((TDescriptor *)p_Var13,*(ulong *)(pTVar22 + 0x28),0.0);
}
if (p_Var5 != (__CFSet *)0x0) {
local_188 = (__CFDictionary *)&SUB_2;
(**(code **)(*(__CFSet **)p_Var5 + 200))(&local_188);
if (p_Var5 != (__CFSet *)0x0) {
p_Var25 = p_Var5;
_objc_retain(p_Var5);
TCFLazyMutableArray::LazyCreate((TCFLazyMutableArray *)p_Var13);
_CFArrayAppendValue(p_Var5,p_Var25);
_objc_release(p_Var25);
}
_objc_release(local_188);
}
p_Var15 = p_Var15 + 1;
} while (p_Var27 != p_Var15);
}
TPerThreadLRUCache<TRequestCacheNode,(ThreadSpecificKey)3,16ul>::TPerThreadLRUCache
((TPerThreadLRUCache<TRequestCacheNode,(ThreadSpecificKey)3,16ul> *)p_Var13);
TRequestCache::AddResultForRequest
((TRequestCache *)p_Var13,&local_188,p_Var5,(ulong)in_tmp_ldXn,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)param_5);
goto LAB_7;
}
AddMissedRequest(in_tmp_ldXn,(ulong)param_5,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)param_4);
puVar23 = local_1a0;
}
}
}
else {
local_180 = (__CFSet *)&SUB_2;
TCFMutableDictionary::TCFMutableDictionary(in_x8,(__CFDictionary *)&local_180);
- _CFDictionaryRemoveValue(in_tmp_ldXn,0x1000006e7d3f20);
+ _CFDictionaryRemoveValue(in_tmp_ldXn,0x1000006e7da160);
p_Var9 = (_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)*_DAT_5;
- _CFDictionaryCreateMutable(p_Var9,0,_DAT_22,_DAT_1e6ae14b8);
- _CFDictionaryGetValue(param_2,0x1000006e7d3f20);
- _CFDictionaryAddValue(p_Var9,0x1000006e7d3f20,param_2);
+ _CFDictionaryCreateMutable(p_Var9,0,_DAT_22,_DAT_1e6aa5520);
+ _CFDictionaryGetValue(param_2,0x1000006e7da160);
+ _CFDictionaryAddValue(p_Var9,0x1000006e7da160,param_2);
local_188 = (__CFDictionary *)0x0;
if ((in_tmp_ldXn == (__CFDictionary *)0x0) ||
(p_Var5 = (__CFSet *)in_tmp_ldXn, _CFDictionaryGetCount(), (long)p_Var5 < 1)) {
CopyAllDescriptorsInternal
((ulong)param_1,(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)param_5);
}
else {
CopyDescriptorsForRequest
((TDescriptorSource *)in_x8,param_1,(__CFSet *)in_tmp_ldXn,param_3,param_4,param_5);
}
p_Var7 = local_188;
LOAcquire();
LORelease();
LOAcquire();
local_188 = (__CFDictionary *)local_190;
LORelease();
local_190 = in_xzr;
_objc_release(p_Var7);
_objc_release(local_190);
CopyDescriptorsForRequestFromArray
((TDescriptorSource *)in_x8,(__CFArray *)&local_190,p_Var7,p_Var9,param_4,
SUB81(param_5,0));
LOAcquire();
LORelease();
*(__CFSet **)in_x8 = local_190;
local_190 = in_xzr;
_objc_release(in_xzr);
_objc_release(local_188);
_objc_release(p_Var9);
_objc_release(local_180);
puVar23 = (undefined1 *)0x0;
}
LAB_4:
_objc_release(puVar23);
LAB_1:
if (*_DAT_0 != local_70) {
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.54 |
| i_ratio | 0.42 |
| m_ratio | 0.99 |
| b_ratio | 0.9 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | AddSystemVisibleFontDescriptors | AddSystemVisibleFontDescriptors |
| fullname | TDescriptorSource::AddSystemVisibleFontDescriptors | TDescriptorSource::AddSystemVisibleFontDescriptors |
| refcount | 3 | 3 |
length |
280 | 288 |
| called | TCFMutableArray::AppendArray<__CFArray_const*> TCFMutableArray::TCFMutableArray TDescriptorSource::CopyMatchingDescriptorsForFamily TDescriptorSource::GetUIFontFamilyNameForDesign _CFArrayGetCount _CFArraySortValues _objc_release |
TCFMutableArray::AppendArray<__CFArray_const*> TCFMutableArray::TCFMutableArray TDescriptorSource::CopyMatchingDescriptorsForFamily TDescriptorSource::GetUIFontFamilyNameForDesign _CFArrayGetCount _CFArraySortValues _objc_release |
| calling | TDescriptorSource::CopyAllDescriptorsInternal TDescriptorSource::CopyDescriptorsForRequest |
TDescriptorSource::CopyAllDescriptorsInternal TDescriptorSource::CopyDescriptorsForRequest |
| paramcount | 3 | 3 |
address |
183475eec | 18344cb98 |
| sig | undefined __thiscall AddSystemVisibleFontDescriptors(TDescriptorSource * this, TCFMutableArray * param_1, _func_CFComparisonResult_void_ptr_void_ptr_void_ptr * param_2) | undefined __thiscall AddSystemVisibleFontDescriptors(TDescriptorSource * this, TCFMutableArray * param_1, _func_CFComparisonResult_void_ptr_void_ptr_void_ptr * param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TDescriptorSource::AddSystemVisibleFontDescriptors
+++ TDescriptorSource::AddSystemVisibleFontDescriptors
@@ -1,46 +1,46 @@
/* TDescriptorSource::AddSystemVisibleFontDescriptors(TCFMutableArray&, CFComparisonResult (*)(void
const*, void const*, void*)) const */
void __thiscall
TDescriptorSource::AddSystemVisibleFontDescriptors
(TDescriptorSource *this,TCFMutableArray *param_1,
_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *param_2)
{
TCFMutableArray *this_00;
- long in_tmp_ldXn;
+ undefined8 in_tmp_ldXn;
ulong uVar1;
- long lVar2;
+ undefined8 uVar2;
TCFMutableArray *in_x2;
- undefined1 *local_40;
- undefined1 *local_38;
+ undefined1 *local_50;
+ undefined1 *local_48;
- local_38 = &SUB_0;
- uVar1 = 0x1000006e7c1b40;
- GetUIFontFamilyNameForDesign((__CFString *)0x1000006e7c1b40);
- CopyMatchingDescriptorsForFamily
- ((__CFString *)param_1,uVar1,(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)0x0)
- ;
- if (in_tmp_ldXn != 0) {
+ if (gVisibleSystemFontsEnabled == '\x01') {
+ local_48 = &SUB_0;
+ uVar1 = 0x1000006e7c7d80;
+ GetUIFontFamilyNameForDesign((__CFString *)0x1000006e7c7d80);
+ CopyMatchingDescriptorsForFamily
+ ((__CFString *)param_1,uVar1,
+ (_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)0x0);
if (in_x2 == (TCFMutableArray *)0x0) {
TCFMutableArray::AppendArray<__CFArray_const*>((TCFMutableArray *)0x0,(__CFArray *)param_2);
}
else {
- local_40 = &SUB_0;
- TCFMutableArray::TCFMutableArray(in_x2,(__CFArray *)&local_40);
+ local_50 = &SUB_0;
+ TCFMutableArray::TCFMutableArray(in_x2,(__CFArray *)&local_50);
this_00 = (TCFMutableArray *)CompareDescriptorsByTraitsAndPrecedenceForSingleFamily;
if (in_x2 != (TCFMutableArray *)CompareDescriptorsByTraitsAndPrecedence) {
this_00 = in_x2;
}
- lVar2 = in_tmp_ldXn;
+ uVar2 = in_tmp_ldXn;
_CFArrayGetCount(in_tmp_ldXn);
- _CFArraySortValues(in_tmp_ldXn,0,lVar2,this_00,0);
+ _CFArraySortValues(in_tmp_ldXn,0,uVar2,this_00,0);
TCFMutableArray::AppendArray<__CFArray_const*>(this_00,(__CFArray *)param_2);
- _objc_release(local_40);
+ _objc_release(local_50);
}
+ _objc_release(local_48);
}
- _objc_release(local_38);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.41 |
| i_ratio | 0.78 |
| m_ratio | 1.0 |
| b_ratio | 0.98 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | Process | Process |
| fullname | TAATMorphSubtableMorx::Process | TAATMorphSubtableMorx::Process |
| refcount | 1 | 1 |
length |
9200 | 9204 |
| called | Expand for full list:TAATMorphSubtableMorx::InitLigatureState |
Expand for full list:TAATMorphSubtableMorx::InitLigatureState |
| calling | ||
| paramcount | 2 | 2 |
address |
1833eef58 | 1833c5bf8 |
| sig | undefined __swiftcall Process(TRunGlue * param_1, CFRange param_2) | undefined __swiftcall Process(TRunGlue * param_1, CFRange param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TAATMorphSubtableMorx::Process
+++ TAATMorphSubtableMorx::Process
@@ -1,1516 +1,1525 @@
-/* WARNING: Removing unreachable block (ram,0x0001833f00f0) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0154) */
-/* WARNING: Removing unreachable block (ram,0x0001833f015c) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0164) */
-/* WARNING: Removing unreachable block (ram,0x0001833f016c) */
-/* WARNING: Removing unreachable block (ram,0x0001833efde8) */
-/* WARNING: Removing unreachable block (ram,0x0001833efe40) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0c78) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0cec) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0cf4) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0f9c) */
-/* WARNING: Removing unreachable block (ram,0x0001833f1018) */
-/* WARNING: Removing unreachable block (ram,0x0001833f1020) */
-/* WARNING: Removing unreachable block (ram,0x0001833f1028) */
-/* WARNING: Removing unreachable block (ram,0x0001833f1030) */
-/* WARNING: Removing unreachable block (ram,0x0001833f07c8) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0834) */
-/* WARNING: Removing unreachable block (ram,0x0001833f083c) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0844) */
-/* WARNING: Removing unreachable block (ram,0x0001833f084c) */
-/* WARNING: Removing unreachable block (ram,0x0001833f04cc) */
-/* WARNING: Removing unreachable block (ram,0x0001833f0524) */
-/* WARNING: Removing unreachable block (ram,0x0001833f052c) */
-/* WARNING: Removing unreachable block (ram,0x0001833ef9c0) */
-/* WARNING: Removing unreachable block (ram,0x0001833efa1c) */
-/* WARNING: Removing unreachable block (ram,0x0001833efa24) */
-/* WARNING: Removing unreachable block (ram,0x0001833ef318) */
-/* WARNING: Removing unreachable block (ram,0x0001833ef36c) */
-/* WARNING: Removing unreachable block (ram,0x0001833ef374) */
-/* WARNING: Removing unreachable block (ram,0x0001833ef678) */
-/* WARNING: Removing unreachable block (ram,0x0001833ef6cc) */
-/* WARNING: Removing unreachable block (ram,0x0001833ef6d4) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6d98) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6dfc) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6e04) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6e0c) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6e14) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6a90) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6ae8) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7924) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7994) */
+/* WARNING: Removing unreachable block (ram,0x0001833c799c) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7c40) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7cbc) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7cc4) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7ccc) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7cd4) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7480) */
+/* WARNING: Removing unreachable block (ram,0x0001833c74f0) */
+/* WARNING: Removing unreachable block (ram,0x0001833c74f8) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7500) */
+/* WARNING: Removing unreachable block (ram,0x0001833c7508) */
+/* WARNING: Removing unreachable block (ram,0x0001833c717c) */
+/* WARNING: Removing unreachable block (ram,0x0001833c71d4) */
+/* WARNING: Removing unreachable block (ram,0x0001833c71dc) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6668) */
+/* WARNING: Removing unreachable block (ram,0x0001833c66c4) */
+/* WARNING: Removing unreachable block (ram,0x0001833c66cc) */
+/* WARNING: Removing unreachable block (ram,0x0001833c5fb8) */
+/* WARNING: Removing unreachable block (ram,0x0001833c600c) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6014) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6320) */
+/* WARNING: Removing unreachable block (ram,0x0001833c6374) */
+/* WARNING: Removing unreachable block (ram,0x0001833c637c) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* TAATMorphSubtableMorx::Process(TRunGlue&, CFRange) */
TRunGlue *
TAATMorphSubtableMorx::Process
(TRunGlue *param_1,TAATMorphSubtableMorx *param_2,long param_3,long param_4)
{
bool bVar1;
uint *puVar2;
- ulong uVar3;
- uint *puVar4;
+ ushort *puVar3;
+ ulong uVar4;
uint *puVar5;
- ushort uVar6;
- uint uVar7;
- uint uVar8;
+ uint *puVar6;
+ ushort uVar7;
+ short sVar8;
uint uVar9;
- undefined8 uVar10;
- ushort uVar11;
- uint uVar12;
- int iVar13;
- ushort *puVar14;
- ushort **ppuVar15;
- TRunGlue *pTVar16;
- ulong uVar17;
- long lVar18;
- long lVar19;
- ulong uVar20;
- ulong uVar21;
+ uint uVar10;
+ uint uVar11;
+ _lambda___1_ *p_Var12;
+ undefined8 uVar13;
+ ushort uVar14;
+ uint uVar15;
+ int iVar16;
+ _lambda___1_ **pp_Var17;
+ TRunGlue *pTVar18;
+ ulong uVar19;
+ long lVar20;
+ long lVar21;
ulong uVar22;
- uint uVar23;
- _lambda___1_ *p_Var24;
- uint uVar25;
+ ushort **ppuVar23;
+ ulong uVar24;
+ ulong uVar25;
uint uVar26;
- TAATMorphSubtableMorx *pTVar27;
+ _lambda___1_ *p_Var27;
uint uVar28;
- TRunGlue *pTVar29;
- ushort *puVar30;
- uint *puVar31;
- ushort *puVar32;
- uint uVar33;
+ _lambda___1_ *p_Var29;
+ uint uVar30;
+ TAATMorphSubtableMorx *pTVar32;
+ TRunGlue *pTVar33;
uint uVar34;
- long lVar35;
- ushort uVar36;
+ ushort *puVar35;
+ uint *puVar36;
uint uVar37;
- ushort *puVar38;
- ushort *local_1300;
- ushort *local_12f8;
- ushort *local_12f0;
+ uint uVar38;
+ long lVar39;
+ ushort uVar40;
+ uint uVar41;
+ _lambda___1_ *p_Var42;
+ _lambda___1_ *local_1300;
+ _lambda___1_ *local_12f8;
+ _lambda___1_ *local_12f0;
ushort *local_12e8;
ulong local_12e0;
TRunGlue *local_12d8;
TRunGlue *local_12d0;
TRunGlue *local_12c8;
- ushort *local_12b0;
- ushort *local_12a8;
+ _lambda___1_ *local_12b0;
+ _lambda___1_ *local_12a8;
uint local_128c;
- ushort *local_1288;
- ushort *local_1280;
- ushort *puStack_1278;
+ _lambda___1_ *local_1288;
+ _lambda___1_ *local_1280;
+ _lambda___1_ *p_Stack_1278;
long local_1270 [256];
uint local_a70;
uint local_a6c;
long local_a68;
long local_a60;
long local_a58;
- ushort *local_a50;
- ushort *puStack_a48;
- ushort *local_a28 [3];
- ushort *local_a10;
- ushort *puStack_a08;
+ _lambda___1_ *local_a50;
+ _lambda___1_ *p_Stack_a48;
+ _lambda___1_ *local_a28 [3];
+ _lambda___1_ *local_a10;
+ _lambda___1_ *p_Stack_a08;
TRunGlue *local_9f8;
vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
*local_9f0;
undefined8 *local_9e8;
- ushort **local_9e0;
- ushort **local_9d8;
+ _lambda___1_ **local_9e0;
+ _lambda___1_ **local_9d8;
ushort local_9ca;
- ushort *local_9c8;
- ushort *local_9c0;
- ushort *puStack_9b8;
+ _lambda___1_ *local_9c8;
+ _lambda___1_ *local_9c0;
+ _lambda___1_ *p_Stack_9b8;
undefined8 local_9b0;
undefined1 *local_9a8;
undefined1 *local_9a0;
undefined1 *local_998;
undefined1 **local_990;
undefined8 local_988;
undefined8 local_980;
undefined8 local_978;
undefined1 *local_970;
undefined1 *puStack_968;
undefined1 *local_960;
undefined1 *puStack_958;
undefined1 *puStack_950;
undefined1 *puStack_948;
undefined1 *local_940;
undefined1 *puStack_938;
undefined1 *puStack_930;
undefined1 *puStack_928;
undefined1 *local_920;
undefined1 *puStack_918;
undefined1 *puStack_910;
undefined1 *puStack_908;
undefined1 *local_900;
undefined1 *puStack_8f8;
undefined1 *puStack_8f0;
undefined1 *puStack_8e8;
undefined1 *local_8e0;
undefined1 *puStack_8d8;
undefined1 *puStack_8d0;
undefined1 *puStack_8c8;
undefined1 *local_8c0;
undefined1 *puStack_8b8;
undefined1 *puStack_8b0;
undefined1 *puStack_8a8;
undefined1 *local_8a0;
undefined1 *puStack_898;
undefined1 *puStack_890;
undefined1 *local_888;
undefined1 **local_880;
undefined8 local_878;
ushort *local_870 [4];
undefined1 *local_850;
ushort **local_848;
long local_78;
- _lambda___1_ *this;
+ _lambda___1_ *p_Var31;
(*_DAT_0)();
local_78 = *_DAT_1;
- lVar35 = *(long *)(param_1 + 0x68);
- uVar12 = *(uint *)(lVar35 + 4);
- uVar25 = (uVar12 & 0xff00ff) << 8;
- uVar33 = (uVar12 & 0xff00ff00) >> 8 | uVar25;
- if (((uVar25 & 0x2000) == 0) &&
- ((uint)(byte)param_1[0x50] != -((int)(uVar33 >> 0x10 | uVar33 << 0x10) >> 0x1f)))
+ lVar39 = *(long *)(param_1 + 0x68);
+ uVar15 = *(uint *)(lVar39 + 4);
+ uVar28 = (uVar15 & 0xff00ff) << 8;
+ uVar37 = (uVar15 & 0xff00ff00) >> 8 | uVar28;
+ if (((uVar28 & 0x2000) == 0) &&
+ ((uint)(byte)param_1[0x50] != -((int)(uVar37 >> 0x10 | uVar37 << 0x10) >> 0x1f)))
goto LAB_2;
- iVar13 = -1;
- if ((uVar25 & 0x4000) == 0) {
- iVar13 = 1;
+ iVar16 = -1;
+ if ((uVar28 & 0x4000) == 0) {
+ iVar16 = 1;
}
- *(int *)(param_1 + 0xc) = iVar13;
- if ((uVar25 & 0x1000) != 0) {
- *(int *)(param_1 + 0xc) = *(int *)(param_2 + 0x18) * iVar13;
+ *(int *)(param_1 + 0xc) = iVar16;
+ if ((uVar28 & 0x1000) != 0) {
+ *(int *)(param_1 + 0xc) = *(int *)(param_2 + 0x18) * iVar16;
}
- uVar11 = (ushort)param_1;
- uVar33 = (uint)param_1;
- p_Var24 = (_lambda___1_ *)param_2;
+ uVar14 = (ushort)param_1;
+ uVar37 = (uint)param_1;
+ p_Var27 = (_lambda___1_ *)param_2;
if (*(long *)(param_2 + 0x10) == 1) {
_memset(local_1270,0xaa,0x820);
- puStack_a08 = (ushort *)&SUB_3;
- local_a10 = (ushort *)&SUB_3;
- local_1280 = (ushort *)&SUB_3;
- local_9c8 = (ushort *)CONCAT44(local_9c8._4_4_,0xaaaaaaaa);
- uVar25 = uVar12 >> 0x18;
- if (uVar25 < 2) {
- if (uVar25 == 0) {
+ p_Stack_a08 = (_lambda___1_ *)&SUB_3;
+ local_a10 = (_lambda___1_ *)&SUB_3;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ local_9c8 = (_lambda___1_ *)CONCAT44(local_9c8._4_4_,0xaaaaaaaa);
+ uVar28 = uVar15 >> 0x18;
+ if (uVar28 < 2) {
+ if (uVar28 == 0) {
LAB_4:
- puStack_a08 = (ushort *)&SUB_3;
- local_a10 = (ushort *)&SUB_3;
- local_1280 = (ushort *)&SUB_3;
- if ((lVar35 + 0x1cU <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1,
+ p_Stack_a08 = (_lambda___1_ *)&SUB_3;
+ local_a10 = (_lambda___1_ *)&SUB_3;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ if ((lVar39 + 0x1cU <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1,
InitRearrangementState(param_2,param_1,(MorxRearrangementState *)param_2),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
FetchInitialClass(param_1,param_2,param_3,param_4,&local_a10,&local_1280,&local_9c8);
- if ((int)pTVar29 != 0) {
- puVar32 = local_a10;
- puVar38 = puStack_a08;
- puVar30 = local_1280;
- uVar12 = (uint)local_9c8;
+ if ((int)pTVar33 != 0) {
+ p_Var27 = local_a10;
+ p_Var29 = p_Stack_a08;
+ p_Var42 = local_1280;
+ uVar15 = (uint)local_9c8;
LAB_5:
- DoRearrangementSubtable(param_1,param_2,local_1270,puVar32,puVar38,puVar30,uVar12);
- pTVar29 = param_1;
+ DoRearrangementSubtable(param_1,param_2,local_1270,p_Var27,p_Var29,p_Var42,uVar15);
+ pTVar33 = param_1;
goto LAB_6;
}
goto LAB_2;
}
}
else {
- pTVar29 = (TRunGlue *)0x0;
- if (uVar25 != 1) goto LAB_6;
- if ((lVar35 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
+ pTVar33 = (TRunGlue *)0x0;
+ if (uVar28 != 1) goto LAB_6;
+ if ((lVar39 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
FetchInitialClass(param_1,param_2,param_3,param_4,&local_a10,&local_1280,&local_9c8);
- puVar32 = local_a10;
- if ((int)pTVar29 != 0) {
+ p_Var29 = local_a10;
+ if ((int)pTVar33 != 0) {
local_12d0 = (TRunGlue *)0x0;
local_12d8 = (TRunGlue *)((ulong)local_9c8 & 0xffff);
- uVar17 = (ulong)local_9c8 >> 0x10 & 0xffff;
- lVar35 = *(long *)(local_a10 + 0x54);
- uVar36 = *(ushort *)(lVar35 + (long)puStack_a08 * 2);
+ uVar19 = (ulong)local_9c8 >> 0x10 & 0xffff;
+ lVar39 = *(long *)(local_a10 + 0xa8) + *(long *)(local_a10 + 0x98) * 2;
+ uVar40 = *(ushort *)(lVar39 + (long)p_Stack_a08 * 2);
local_848 = local_870 + 2;
local_850 = &SUB_3;
local_870[3] = (ushort *)&SUB_3;
local_870[2] = (ushort *)&SUB_3;
local_878 = (ushort *)0x0;
local_870[1] = (ushort *)0x0;
local_870[0] = (ushort *)0x0;
- puVar30 = local_1280;
- puVar38 = puStack_a08;
+ p_Var31 = local_1280;
+ p_Var42 = p_Stack_a08;
LAB_7:
do {
- uVar20 = uVar17;
+ uVar22 = uVar19;
do {
- if ((puVar30 != (ushort *)0x0) &&
- ((uVar36 == 0xffff ||
- (puVar14 = puVar32, TRunGlue::IsDeleted((TRunGlue *)param_2,(long)puVar32),
- ((ulong)puVar14 & 1) != 0)))) {
- uVar17 = uVar20;
+ if ((p_Var31 != (_lambda___1_ *)0x0) &&
+ ((uVar40 == 0xffff ||
+ (p_Var27 = p_Var29, TRunGlue::IsDeleted((TRunGlue *)param_2,(long)p_Var29),
+ ((ulong)p_Var27 & 1) != 0)))) {
+ uVar19 = uVar22;
LAB_8:
local_12d0 = (TRunGlue *)(ulong)(uint)local_12d0;
local_870[0] = local_878;
- puVar14 = (ushort *)((long)puVar30 + -1);
- if (puVar14 == (ushort *)0x0 || (long)puVar30 < 1) {
+ p_Var12 = p_Var31 + -1;
+ if (p_Var12 == (_lambda___1_ *)0x0 || (long)p_Var31 < 1) {
local_12d8 = (TRunGlue *)0x0;
- puVar30 = (ushort *)0x0;
- p_Var24 = (_lambda___1_ *)param_2;
- pTVar29 = local_12d0;
- if (puVar14 != (ushort *)0x0) goto LAB_9;
+ p_Var31 = (_lambda___1_ *)0x0;
+ p_Var27 = (_lambda___1_ *)param_2;
+ pTVar33 = local_12d0;
+ if (p_Var12 != (_lambda___1_ *)0x0) goto LAB_9;
goto LAB_7;
}
- puVar38 = (ushort *)((long)puVar38 + (long)*(int *)(param_1 + 0xc));
- puVar30 = puVar14;
+ p_Var42 = p_Var42 + *(int *)(param_1 + 0xc);
+ p_Var31 = p_Var12;
break;
}
- puVar14 = (ushort *)
- (local_1270[2] + (long)local_12d8 * 2 + local_1270[1] * uVar20 * 2);
- if ((puVar14 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar14 + 1) ||
- (puVar14 = (ushort *)
+ puVar35 = (ushort *)
+ (local_1270[2] + (long)local_12d8 * 2 + local_1270[1] * uVar22 * 2);
+ if ((puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 1) ||
+ (puVar35 = (ushort *)
(local_1270[3] +
- (ulong)((uint)(*puVar14 >> 8) | (*puVar14 & 0xff00ff) << 8) * 8),
- puVar14 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar14 + 4)) goto LAB_10;
- uVar12 = (uint)(*puVar14 >> 8) | (*puVar14 & 0xff00ff) << 8;
- uVar17 = (ulong)uVar12;
+ (ulong)((uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8) * 8),
+ puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 4)) goto LAB_10;
+ uVar15 = (uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8;
+ uVar19 = (ulong)uVar15;
param_2 = (TAATMorphSubtableMorx *)
- (ulong)(uint)(int)(short)(puVar14[1] >> 8 | puVar14[1] << 8);
- uVar6 = puVar14[3];
- if (puVar14[2] != 0xffff) {
- pTVar29 = param_1;
+ (ulong)(uint)(int)(short)(puVar35[1] >> 8 | puVar35[1] << 8);
+ uVar7 = puVar35[3];
+ if (puVar35[2] != 0xffff) {
+ pTVar33 = param_1;
DoContextualAction();
- if (((int)pTVar29 != 0) &&
- (local_12d0 = (TRunGlue *)((ulong)pTVar29 & 0xffffffff),
- p_Var24 = (_lambda___1_ *)param_2, (int)pTVar29 < 1)) goto LAB_9;
- }
- if (uVar6 != 0xffff) {
- pTVar29 = param_1;
+ if (((int)pTVar33 != 0) &&
+ (local_12d0 = (TRunGlue *)((ulong)pTVar33 & 0xffffffff),
+ p_Var27 = (_lambda___1_ *)param_2, (int)pTVar33 < 1)) goto LAB_9;
+ }
+ if (uVar7 != 0xffff) {
+ pTVar33 = param_1;
DoContextualAction();
- if (((int)pTVar29 != 0) &&
- (local_12d0 = (TRunGlue *)((ulong)pTVar29 & 0xffffffff), (int)pTVar29 < 1))
+ if (((int)pTVar33 != 0) &&
+ (local_12d0 = (TRunGlue *)((ulong)pTVar33 & 0xffffffff), (int)pTVar33 < 1))
goto LAB_10;
}
- uVar10 = local_988;
+ uVar13 = local_988;
if (((uint)param_2 >> 0xe & 1) == 0) goto LAB_8;
- local_988._0_4_ = CONCAT22((short)uVar20,uVar36);
- local_988._6_2_ = SUB82(uVar10,6);
- local_988._0_6_ = CONCAT24((short)uVar12,(undefined4)local_988);
- puVar14 = local_878;
+ local_988._0_4_ = CONCAT22((short)uVar22,uVar40);
+ local_988._6_2_ = SUB82(uVar13,6);
+ local_988._0_6_ = CONCAT24((short)uVar15,(undefined4)local_988);
+ puVar35 = local_878;
if (local_878 == local_870[0]) {
LAB_11:
- if (puVar14 != local_870[0]) goto LAB_8;
+ if (puVar35 != local_870[0]) goto LAB_8;
}
else {
do {
- if (((*puVar14 == uVar36) && ((uint)puVar14[1] == (uint)uVar20)) &&
- (puVar14[2] == uVar12)) goto LAB_11;
- puVar14 = puVar14 + 3;
- } while (puVar14 != local_870[0]);
+ if (((*puVar35 == uVar40) && ((uint)puVar35[1] == (uint)uVar22)) &&
+ (puVar35[2] == uVar15)) goto LAB_11;
+ puVar35 = puVar35 + 3;
+ } while (puVar35 != local_870[0]);
}
std::
vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
::push_back_abi_fn200100_
((vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
*)param_2,(tuple *)&local_878);
- uVar20 = uVar17;
- } while ((long)puVar30 < 1);
- uVar36 = *(ushort *)(lVar35 + (long)puVar38 * 2);
- uVar12 = uVar33;
- FetchClass(param_2,uVar11);
- local_12d8 = (TRunGlue *)(ulong)uVar12;
+ uVar22 = uVar19;
+ } while ((long)p_Var31 < 1);
+ uVar40 = *(ushort *)(lVar39 + (long)p_Var42 * 2);
+ uVar15 = uVar37;
+ FetchClass(param_2,uVar14);
+ local_12d8 = (TRunGlue *)(ulong)uVar15;
} while( true );
}
goto LAB_2;
}
}
}
- else if (uVar25 == 2) {
- if ((lVar35 + 0x28U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, InitLigatureState(param_2,(MorxLigatureState *)param_1),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
- FetchInitialClass(param_1,p_Var24,param_3,param_4,&local_a10,&local_1280,&local_9c8);
- puVar32 = local_a10;
- if ((int)pTVar29 != 0) {
- pTVar29 = (TRunGlue *)0x0;
- uVar33 = 0;
- puVar38 = (ushort *)0x0;
+ else if (uVar28 == 2) {
+ if ((lVar39 + 0x28U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, InitLigatureState(param_2,(MorxLigatureState *)param_1),
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
+ FetchInitialClass(param_1,p_Var27,param_3,param_4,&local_a10,&local_1280,&local_9c8);
+ p_Var29 = local_a10;
+ if ((int)pTVar33 != 0) {
+ pTVar33 = (TRunGlue *)0x0;
+ uVar37 = 0;
+ puVar35 = (ushort *)0x0;
local_1300 = local_1280;
- local_12f8 = (ushort *)0x0;
- pTVar16 = (TRunGlue *)(ulong)((uint)local_9c8 & 0xffff);
- lVar35 = *(long *)(local_a10 + 0x54);
- local_12f0 = puStack_a08;
- uVar36 = *(ushort *)(lVar35 + (long)puStack_a08 * 2);
- uVar17 = (ulong)((uint)local_9c8 >> 0x10);
+ local_12f8 = (_lambda___1_ *)0x0;
+ pTVar18 = (TRunGlue *)(ulong)((uint)local_9c8 & 0xffff);
+ lVar39 = *(long *)(local_a10 + 0xa8) + *(long *)(local_a10 + 0x98) * 2;
+ local_12f0 = p_Stack_a08;
+ sVar8 = *(short *)(lVar39 + (long)p_Stack_a08 * 2);
+ uVar19 = (ulong)((uint)local_9c8 >> 0x10);
local_990 = &local_9a8;
local_998 = &SUB_3;
local_9a0 = &SUB_3;
local_9a8 = &SUB_3;
- local_9c0 = (ushort *)0x0;
+ local_9c0 = (_lambda___1_ *)0x0;
local_9b0 = 0;
- puStack_9b8 = (ushort *)0x0;
+ p_Stack_9b8 = (_lambda___1_ *)0x0;
local_12d8 = (TRunGlue *)0xffff;
- uVar12 = local_a70;
+ uVar15 = local_a70;
LAB_12:
do {
do {
- if ((local_1300 != (ushort *)0x0) &&
- ((uVar36 == 0xffff ||
- (puVar30 = puVar32, TRunGlue::IsDeleted((TRunGlue *)p_Var24,(long)puVar32),
- ((ulong)puVar30 & 1) != 0)))) {
+ if ((local_1300 != (_lambda___1_ *)0x0) &&
+ ((sVar8 == -1 ||
+ (p_Var42 = p_Var29, TRunGlue::IsDeleted((TRunGlue *)p_Var27,(long)p_Var29),
+ ((ulong)p_Var42 & 1) != 0)))) {
LAB_13:
- puStack_9b8 = local_9c0;
- puVar30 = (ushort *)((long)local_1300 + -1);
- if (puVar30 == (ushort *)0x0 || (long)local_1300 < 1) {
- pTVar16 = (TRunGlue *)0x0;
- local_1300 = (ushort *)0x0;
- if (puVar30 != (ushort *)0x0) goto LAB_9;
+ p_Stack_9b8 = local_9c0;
+ p_Var42 = local_1300 + -1;
+ if (p_Var42 == (_lambda___1_ *)0x0 || (long)local_1300 < 1) {
+ pTVar18 = (TRunGlue *)0x0;
+ local_1300 = (_lambda___1_ *)0x0;
+ if (p_Var42 != (_lambda___1_ *)0x0) goto LAB_9;
goto LAB_12;
}
- local_12f0 = (ushort *)((long)local_12f0 + (long)*(int *)(param_1 + 0xc));
- local_1300 = puVar30;
+ local_12f0 = local_12f0 + *(int *)(param_1 + 0xc);
+ local_1300 = p_Var42;
break;
}
- puVar30 = (ushort *)
- (local_a60 + local_a68 * uVar17 * 2 + ((ulong)pTVar16 & 0xffffffff) * 2);
- if (puVar30 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar30 + 1) goto LAB_14;
- uVar20 = uVar17;
- if (local_12f8 != puVar30) {
- puVar38 = (ushort *)
- (local_a58 +
- (ulong)((uint)(*puVar30 >> 8) | (*puVar30 & 0xff00ff) << 8) * 6);
- if (puVar38 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar38 + 3) goto LAB_14;
- uVar33 = (uint)(puVar38[1] >> 8) | (puVar38[1] & 0xff00ff) << 8;
- uVar20 = (ulong)((uint)(*puVar38 >> 8) | (*puVar38 & 0xff00ff) << 8);
- local_12f8 = puVar30;
- local_12d8 = (TRunGlue *)uVar17;
- }
- uVar17 = uVar20;
- if (uVar33 < 0x2000) goto LAB_13;
- if (uVar33 >> 0xf != 0) {
- local_a70 = uVar12 + 1;
- if ((int)uVar12 < 0x7f) {
- uVar12 = local_a70;
+ puVar3 = (ushort *)
+ (local_a60 + local_a68 * uVar19 * 2 + ((ulong)pTVar18 & 0xffffffff) * 2);
+ if (puVar3 < *(ushort **)(param_1 + 0x68) || *(ushort **)(param_1 + 0x70) < puVar3 + 1
+ ) goto LAB_14;
+ uVar22 = uVar19;
+ if (local_12f8 != (_lambda___1_ *)puVar3) {
+ puVar35 = (ushort *)
+ (local_a58 + (ulong)((uint)(*puVar3 >> 8) | (*puVar3 & 0xff00ff) << 8) * 6
+ );
+ if (puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 3) goto LAB_14;
+ uVar37 = (uint)(puVar35[1] >> 8) | (puVar35[1] & 0xff00ff) << 8;
+ uVar22 = (ulong)((uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8);
+ local_12f8 = (_lambda___1_ *)puVar3;
+ local_12d8 = (TRunGlue *)uVar19;
+ }
+ uVar19 = uVar22;
+ if (uVar37 < 0x2000) goto LAB_13;
+ if (uVar37 >> 0xf != 0) {
+ local_a70 = uVar15 + 1;
+ if ((int)uVar15 < 0x7f) {
+ uVar15 = local_a70;
if ((int)local_a70 <= (int)local_a6c) {
- uVar12 = local_a6c;
+ uVar15 = local_a6c;
}
- lVar19 = (long)(int)local_a70;
- local_a6c = uVar12;
+ lVar21 = (long)(int)local_a70;
+ local_a6c = uVar15;
}
else {
- lVar19 = 0;
+ lVar21 = 0;
local_a70 = 0;
}
- uVar12 = local_a70;
- local_1270[lVar19 * 2] = (long)puVar32;
- local_1270[lVar19 * 2 + 1] = (long)local_12f0;
- }
- if ((uVar33 >> 0xd & 1) != 0) {
- if ((int)uVar12 < 0) goto LAB_14;
- uVar6 = puVar38[2];
+ uVar15 = local_a70;
+ local_1270[lVar21 * 2] = (long)p_Var29;
+ local_1270[lVar21 * 2 + 1] = (long)local_12f0;
+ }
+ if ((uVar37 >> 0xd & 1) != 0) {
+ if ((int)uVar15 < 0) goto LAB_14;
+ uVar40 = puVar35[2];
_memset(&local_878,0xaa,0x800);
- uVar28 = local_a6c;
- lVar18 = *(long *)(param_1 + 0x68);
- lVar19 = lVar18 + 0xc;
- uVar23 = (*(uint *)(lVar18 + 0x1c) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar18 + 0x1c) & 0xff00ff) << 8;
- uVar26 = (*(uint *)(lVar18 + 0x20) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar18 + 0x20) & 0xff00ff) << 8;
- uVar37 = (*(uint *)(lVar18 + 0x24) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar18 + 0x24) & 0xff00ff) << 8;
- uVar25 = 0;
- local_a50 = (ushort *)0xffffffffffffffff;
- local_1288 = (ushort *)CONCAT62(local_1288._2_6_,0xffff);
+ uVar34 = local_a6c;
+ lVar20 = *(long *)(param_1 + 0x68);
+ lVar21 = lVar20 + 0xc;
+ uVar26 = (*(uint *)(lVar20 + 0x1c) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar20 + 0x1c) & 0xff00ff) << 8;
+ uVar30 = (*(uint *)(lVar20 + 0x20) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar20 + 0x20) & 0xff00ff) << 8;
+ uVar41 = (*(uint *)(lVar20 + 0x24) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar20 + 0x24) & 0xff00ff) << 8;
+ uVar28 = 0;
+ local_a50 = (_lambda___1_ *)0xffffffffffffffff;
+ local_1288 = (_lambda___1_ *)CONCAT62(local_1288._2_6_,0xffff);
puStack_898 = &SUB_3;
local_8a0 = &SUB_3;
local_888 = &SUB_3;
puStack_890 = &SUB_3;
puStack_8b8 = &SUB_3;
local_8c0 = &SUB_3;
puStack_8a8 = &SUB_3;
puStack_8b0 = &SUB_3;
puStack_8d8 = &SUB_3;
local_8e0 = &SUB_3;
puStack_8c8 = &SUB_3;
puStack_8d0 = &SUB_3;
puStack_8f8 = &SUB_3;
local_900 = &SUB_3;
puStack_8e8 = &SUB_3;
puStack_8f0 = &SUB_3;
puStack_918 = &SUB_3;
local_920 = &SUB_3;
puStack_908 = &SUB_3;
puStack_910 = &SUB_3;
puStack_938 = &SUB_3;
local_940 = &SUB_3;
puStack_928 = &SUB_3;
puStack_930 = &SUB_3;
puStack_958 = &SUB_3;
local_960 = &SUB_3;
puStack_948 = &SUB_3;
puStack_950 = &SUB_3;
puStack_968 = &SUB_3;
local_970 = &SUB_3;
local_988 = 0;
local_978 = 0;
local_980 = 0;
local_880 = &local_970;
local_9f8 = param_1;
local_9f0 = (vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
- *)p_Var24;
+ *)p_Var27;
local_9e8 = &local_988;
local_9e0 = &local_a50;
local_9d8 = &local_1288;
- local_12b0 = (ushort *)0xffffffff;
- puVar31 = (uint *)(lVar19 + (ulong)(uVar23 >> 0x10 | uVar23 << 0x10) +
- (ulong)((uint)(uVar6 >> 8) | (uVar6 & 0xff00ff) << 8) * 4);
+ local_12b0 = (_lambda___1_ *)0xffffffff;
+ puVar36 = (uint *)(lVar21 + (ulong)(uVar26 >> 0x10 | uVar26 << 0x10) +
+ (ulong)((uint)(uVar40 >> 8) | (uVar40 & 0xff00ff) << 8) * 4);
do {
- puVar4 = *(uint **)(param_1 + 0x68);
- puVar5 = *(uint **)(param_1 + 0x70);
- if (puVar31 < puVar4 || puVar5 < puVar31 + 1) goto LAB_15;
- uVar23 = (*puVar31 & 0xff00ff00) >> 8 | (*puVar31 & 0xff00ff) << 8;
- uVar8 = uVar23 << 0x10;
- uVar23 = uVar23 >> 0x10 | uVar8;
- p_Var24 = (_lambda___1_ *)local_1270[(long)(int)uVar12 * 2];
- puVar30 = (ushort *)local_1270[(long)(int)uVar12 * 2 + 1];
- puVar2 = (uint *)(lVar19 + (ulong)(uVar26 >> 0x10 | uVar26 << 0x10) +
+ puVar5 = *(uint **)(param_1 + 0x68);
+ puVar6 = *(uint **)(param_1 + 0x70);
+ if (puVar36 < puVar5 || puVar6 < puVar36 + 1) goto LAB_15;
+ uVar26 = (*puVar36 & 0xff00ff00) >> 8 | (*puVar36 & 0xff00ff) << 8;
+ uVar10 = uVar26 << 0x10;
+ uVar26 = uVar26 >> 0x10 | uVar10;
+ lVar20 = local_1270[(long)(int)uVar15 * 2];
+ p_Var27 = (_lambda___1_ *)local_1270[(long)(int)uVar15 * 2 + 1];
+ puVar2 = (uint *)(lVar21 + (ulong)(uVar30 >> 0x10 | uVar30 << 0x10) +
(long)(int)((uint)*(ushort *)
- (*(long *)(p_Var24 + 0xa8) + (long)puVar30 * 2
- ) + ((int)(uVar23 << 2) >> 2)) * 2);
- if (puVar2 < puVar4 || puVar5 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
- uVar25 = uVar25 + ((uint)(ushort)((ushort)*puVar2 >> 8) |
+ (*(long *)(lVar20 + 0xa8) +
+ *(long *)(lVar20 + 0x98) * 2 +
+ (long)p_Var27 * 2) + ((int)(uVar26 << 2) >> 2)
+ ) * 2);
+ if (puVar2 < puVar5 || puVar6 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
+ uVar28 = uVar28 + ((uint)(ushort)((ushort)*puVar2 >> 8) |
((ushort)*puVar2 & 0xff00ff) << 8);
- if (uVar8 >> 0x1e == 0) {
- local_a28[0] = puVar30;
+ if (uVar10 >> 0x1e == 0) {
+ local_a28[0] = p_Var27;
std::vector<long,TInlineBufferAllocator<long,30ul>>::insert
- ((vector<long,TInlineBufferAllocator<long,30ul>> *)p_Var24,&local_988,
+ ((vector<long,TInlineBufferAllocator<long,30ul>> *)p_Var27,&local_988,
local_988,local_a28);
- uVar23 = 1;
+ uVar26 = 1;
}
else {
- puVar2 = (uint *)(lVar19 + (ulong)(uVar37 >> 0x10 | uVar37 << 0x10) +
- (ulong)uVar25 * 2);
- if (puVar2 < puVar4 || puVar5 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
- if (local_a50 != (ushort *)0xffffffffffffffff) {
+ puVar2 = (uint *)(lVar21 + (ulong)(uVar41 >> 0x10 | uVar41 << 0x10) +
+ (ulong)uVar28 * 2);
+ if (puVar2 < puVar5 || puVar6 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
+ if (local_a50 != (_lambda___1_ *)0xffffffffffffffff) {
DoLigatureAction<TRunGlue::TGlyphInSingleRun>(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)
- ::{lambda()#1}::operator()(p_Var24);
+ ::{lambda()#1}::operator()(p_Var27);
local_980 = local_988;
}
- local_a50 = puVar30;
- local_1288 = (ushort *)
+ local_a50 = p_Var27;
+ local_1288 = (_lambda___1_ *)
CONCAT62(local_1288._2_6_,
(ushort)*puVar2 >> 8 | (ushort)*puVar2 << 8);
if (0x7e < (int)local_12b0) goto LAB_15;
- local_12b0 = (ushort *)((long)(int)local_12b0 + 1);
- (&local_878)[(long)local_12b0 * 2] = p_Var24;
- local_870[(long)local_12b0 * 2] = puVar30;
- uVar23 = ~uVar23 >> 0x1f;
+ local_12b0 = (_lambda___1_ *)((long)(int)local_12b0 + 1);
+ (&local_878)[(long)local_12b0 * 2] = lVar20;
+ local_870[(long)local_12b0 * 2] = (ushort *)p_Var27;
+ uVar26 = ~uVar26 >> 0x1f;
}
- uVar8 = uVar12 - 1;
- bVar1 = 0 < (int)uVar12;
- uVar12 = uVar28;
+ uVar10 = uVar15 - 1;
+ bVar1 = 0 < (int)uVar15;
+ uVar15 = uVar34;
if (bVar1) {
- uVar12 = uVar8;
+ uVar15 = uVar10;
}
- puVar31 = puVar31 + 1;
- } while (uVar23 != 0);
- local_a70 = uVar12;
+ puVar36 = puVar36 + 1;
+ } while (uVar26 != 0);
+ local_a70 = uVar15;
DoLigatureAction<TRunGlue::TGlyphInSingleRun>(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)
- ::{lambda()#1}::operator()(p_Var24);
+ ::{lambda()#1}::operator()(p_Var27);
if (-1 < (int)local_12b0) {
- lVar19 = ((ulong)local_12b0 & 0xffffffff) + 1;
- ppuVar15 = local_870 + ((ulong)local_12b0 & 0xffffffff) * 2;
- uVar25 = uVar12;
- uVar23 = uVar28;
+ lVar21 = ((ulong)local_12b0 & 0xffffffff) + 1;
+ ppuVar23 = local_870 + ((ulong)local_12b0 & 0xffffffff) * 2;
+ uVar28 = uVar15;
+ uVar26 = uVar34;
do {
- uVar26 = uVar23;
- if ((int)uVar23 < (int)(uVar25 + 1)) {
- uVar26 = uVar25 + 1;
+ uVar30 = uVar26;
+ if ((int)uVar26 < (int)(uVar28 + 1)) {
+ uVar30 = uVar28 + 1;
}
- uVar12 = uVar26;
- if (0x7e < (int)uVar25) {
- uVar26 = uVar23;
- uVar12 = uVar28;
+ uVar15 = uVar30;
+ if (0x7e < (int)uVar28) {
+ uVar30 = uVar26;
+ uVar15 = uVar34;
}
- uVar28 = uVar12;
- uVar12 = 0;
- if ((int)uVar25 < 0x7f) {
- uVar12 = uVar25 + 1;
+ uVar34 = uVar15;
+ uVar15 = 0;
+ if ((int)uVar28 < 0x7f) {
+ uVar15 = uVar28 + 1;
}
- puVar30 = *ppuVar15;
- local_1270[(long)(int)uVar12 * 2] = (long)ppuVar15[-1];
- local_1270[(long)(int)uVar12 * 2 + 1] = (long)puVar30;
- ppuVar15 = ppuVar15 + -2;
- lVar19 = lVar19 + -1;
- uVar25 = uVar12;
- uVar23 = uVar26;
- local_a70 = uVar12;
- local_a6c = uVar28;
- } while (lVar19 != 0);
+ puVar3 = *ppuVar23;
+ local_1270[(long)(int)uVar15 * 2] = (long)ppuVar23[-1];
+ local_1270[(long)(int)uVar15 * 2 + 1] = (long)puVar3;
+ ppuVar23 = ppuVar23 + -2;
+ lVar21 = lVar21 + -1;
+ uVar28 = uVar15;
+ uVar26 = uVar30;
+ local_a70 = uVar15;
+ local_a6c = uVar34;
+ } while (lVar21 != 0);
}
local_9f8 = (TRunGlue *)&local_988;
- p_Var24 = (_lambda___1_ *)param_2;
+ p_Var27 = (_lambda___1_ *)param_2;
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::
operator()[abi_fn200100_((__destroy_vector *)param_2);
- pTVar29 = (TRunGlue *)0x1;
- }
- puVar30 = local_878;
- if ((uVar33 >> 0xe & 1) == 0) goto LAB_13;
- local_878._0_4_ = CONCAT22((short)local_12d8,uVar36);
- local_878._6_2_ = SUB82(puVar30,6);
- local_878._0_6_ = CONCAT24((short)uVar17,(undefined4)local_878);
- puVar30 = local_9c0;
- if (local_9c0 == puStack_9b8) {
+ pTVar33 = (TRunGlue *)0x1;
+ }
+ puVar3 = local_878;
+ if ((uVar37 >> 0xe & 1) == 0) goto LAB_13;
+ local_878._0_4_ = CONCAT22((short)local_12d8,sVar8);
+ local_878._6_2_ = SUB82(puVar3,6);
+ local_878._0_6_ = CONCAT24((short)uVar19,(undefined4)local_878);
+ p_Var42 = local_9c0;
+ if (local_9c0 == p_Stack_9b8) {
LAB_16:
- if (puVar30 != puStack_9b8) goto LAB_13;
+ if (p_Var42 != p_Stack_9b8) goto LAB_13;
}
else {
do {
- if (((*puVar30 == uVar36) && (puVar30[1] == (uint)local_12d8)) &&
- ((uint)puVar30[2] == (uint)uVar17)) goto LAB_16;
- puVar30 = puVar30 + 3;
- } while (puVar30 != puStack_9b8);
+ if (((*(short *)p_Var42 == sVar8) &&
+ (*(ushort *)(p_Var42 + 2) == (uint)local_12d8)) &&
+ ((uint)*(ushort *)(p_Var42 + 4) == (uint)uVar19)) goto LAB_16;
+ p_Var42 = p_Var42 + 6;
+ } while (p_Var42 != p_Stack_9b8);
}
std::
vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
::push_back_abi_fn200100_
((vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
- *)p_Var24,(tuple *)&local_9c0);
+ *)p_Var27,(tuple *)&local_9c0);
} while ((long)local_1300 < 1);
- uVar36 = *(ushort *)(lVar35 + (long)local_12f0 * 2);
- pTVar16 = param_1;
- FetchClass((TAATMorphSubtableMorx *)p_Var24,uVar11);
+ sVar8 = *(short *)(lVar39 + (long)local_12f0 * 2);
+ pTVar18 = param_1;
+ FetchClass((TAATMorphSubtableMorx *)p_Var27,uVar14);
} while( true );
}
goto LAB_2;
}
}
- else if (uVar25 == 4) {
- uVar17 = *(ulong *)(param_1 + 0x70);
- if (lVar35 + 0xeU <= uVar17) {
- uVar11 = *(ushort *)(lVar35 + 0xc) >> 8 | *(ushort *)(lVar35 + 0xc) << 8;
- if (5 < uVar11) goto LAB_17;
- if (uVar11 != 0) {
- pTVar29 = (TRunGlue *)0xffffffff;
- if (uVar11 != 2 && uVar11 != 4) goto LAB_6;
+ else if (uVar28 == 4) {
+ uVar19 = *(ulong *)(param_1 + 0x70);
+ if (lVar39 + 0xeU <= uVar19) {
+ uVar14 = *(ushort *)(lVar39 + 0xc) >> 8 | *(ushort *)(lVar39 + 0xc) << 8;
+ if (5 < uVar14) goto LAB_17;
+ if (uVar14 != 0) {
+ pTVar33 = (TRunGlue *)0xffffffff;
+ if (uVar14 != 2 && uVar14 != 4) goto LAB_6;
goto LAB_18;
}
goto LAB_19;
}
}
else {
LAB_20:
- puStack_a08 = (ushort *)&SUB_3;
- local_a10 = (ushort *)&SUB_3;
- local_1280 = (ushort *)&SUB_3;
- pTVar29 = (TRunGlue *)0x0;
- if (uVar12 >> 0x18 != 5) goto LAB_6;
- if ((lVar35 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
+ p_Stack_a08 = (_lambda___1_ *)&SUB_3;
+ local_a10 = (_lambda___1_ *)&SUB_3;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ pTVar33 = (TRunGlue *)0x0;
+ if (uVar15 >> 0x18 != 5) goto LAB_6;
+ if ((lVar39 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
FetchInitialClass(param_1,param_2,param_3,param_4,&local_a10,&local_1280,&local_9c8);
- if ((int)pTVar29 != 0) {
- puVar32 = local_a10;
- puVar38 = puStack_a08;
- puVar30 = local_1280;
- uVar12 = (uint)local_9c8;
+ if ((int)pTVar33 != 0) {
+ p_Var27 = local_a10;
+ p_Var29 = p_Stack_a08;
+ p_Var42 = local_1280;
+ uVar15 = (uint)local_9c8;
LAB_21:
- DoInsertionSubtable(param_1,param_2,local_1270,puVar32,puVar38,puVar30,uVar12);
- pTVar29 = param_1;
+ DoInsertionSubtable(param_1,param_2,local_1270,p_Var27,p_Var29,p_Var42,uVar15);
+ pTVar33 = param_1;
goto LAB_6;
}
goto LAB_2;
}
}
}
else if (*(long *)(param_2 + 0x10) == 0) {
_memset(local_1270,0xaa,0x820);
- puStack_a08 = (ushort *)&SUB_3;
- local_a10 = (ushort *)&SUB_3;
- local_1280 = (ushort *)&SUB_3;
- local_9c8 = (ushort *)CONCAT44(local_9c8._4_4_,0xaaaaaaaa);
- uVar25 = uVar12 >> 0x18;
- if (uVar25 < 2) {
- if (uVar25 == 0) goto LAB_4;
- pTVar29 = (TRunGlue *)0x0;
- if (uVar25 != 1) goto LAB_6;
- if ((lVar35 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
+ p_Stack_a08 = (_lambda___1_ *)&SUB_3;
+ local_a10 = (_lambda___1_ *)&SUB_3;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ local_9c8 = (_lambda___1_ *)CONCAT44(local_9c8._4_4_,0xaaaaaaaa);
+ uVar28 = uVar15 >> 0x18;
+ if (uVar28 < 2) {
+ if (uVar28 == 0) goto LAB_4;
+ pTVar33 = (TRunGlue *)0x0;
+ if (uVar28 != 1) goto LAB_6;
+ if ((lVar39 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
FetchInitialClass(param_1,param_2,param_3,param_4,&local_a10,&local_1280,&local_9c8);
- if ((int)pTVar29 != 0) {
+ if ((int)pTVar33 != 0) {
local_12d8 = (TRunGlue *)0x0;
local_12b0 = local_1280;
- local_12a8 = puStack_a08;
+ local_12a8 = p_Stack_a08;
local_12e0 = (ulong)local_9c8 & 0xffff;
- uVar17 = (ulong)local_9c8 >> 0x10 & 0xffff;
- lVar35 = *(long *)(local_a10 + 0x54) + *(long *)(local_a10 + 0x4c) * 2;
- uVar36 = *(ushort *)(lVar35 + (long)puStack_a08 * 2);
+ uVar19 = (ulong)local_9c8 >> 0x10 & 0xffff;
+ lVar39 = *(long *)(local_a10 + 0xa8) + *(long *)(local_a10 + 0x98) * 2;
+ uVar40 = *(ushort *)(lVar39 + (long)p_Stack_a08 * 2);
local_848 = local_870 + 2;
local_850 = &SUB_3;
local_870[3] = (ushort *)&SUB_3;
local_870[2] = (ushort *)&SUB_3;
local_878 = (ushort *)0x0;
local_870[1] = (ushort *)0x0;
local_870[0] = (ushort *)0x0;
LAB_22:
do {
- uVar20 = uVar17;
+ uVar22 = uVar19;
do {
- if (local_12b0 != (ushort *)0x0 && uVar36 == 0xffff) {
- uVar17 = uVar20;
+ if (local_12b0 != (_lambda___1_ *)0x0 && uVar40 == 0xffff) {
+ uVar19 = uVar22;
LAB_23:
local_12d8 = (TRunGlue *)(ulong)(uint)local_12d8;
- puVar32 = (ushort *)((long)local_12b0 + -1);
+ p_Var29 = local_12b0 + -1;
local_870[0] = local_878;
- if (puVar32 == (ushort *)0x0 || (long)local_12b0 < 1) {
+ if (p_Var29 == (_lambda___1_ *)0x0 || (long)local_12b0 < 1) {
local_12e0 = 0;
- local_12b0 = (ushort *)0x0;
- p_Var24 = (_lambda___1_ *)param_2;
- pTVar29 = local_12d8;
- if (puVar32 != (ushort *)0x0) goto LAB_9;
+ local_12b0 = (_lambda___1_ *)0x0;
+ p_Var27 = (_lambda___1_ *)param_2;
+ pTVar33 = local_12d8;
+ if (p_Var29 != (_lambda___1_ *)0x0) goto LAB_9;
goto LAB_22;
}
- local_12a8 = (ushort *)((long)local_12a8 + (long)*(int *)(param_1 + 0xc));
- local_12b0 = puVar32;
+ local_12a8 = local_12a8 + *(int *)(param_1 + 0xc);
+ local_12b0 = p_Var29;
break;
}
- puVar32 = (ushort *)(local_1270[2] + local_12e0 * 2 + local_1270[1] * uVar20 * 2);
- if ((puVar32 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar32 + 1) ||
- (puVar32 = (ushort *)
+ puVar35 = (ushort *)(local_1270[2] + local_12e0 * 2 + local_1270[1] * uVar22 * 2);
+ if ((puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 1) ||
+ (puVar35 = (ushort *)
(local_1270[3] +
- (ulong)((uint)(*puVar32 >> 8) | (*puVar32 & 0xff00ff) << 8) * 8),
- puVar32 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar32 + 4)) goto LAB_10;
- uVar12 = (uint)(*puVar32 >> 8) | (*puVar32 & 0xff00ff) << 8;
- uVar17 = (ulong)uVar12;
+ (ulong)((uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8) * 8),
+ puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 4)) goto LAB_10;
+ uVar15 = (uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8;
+ uVar19 = (ulong)uVar15;
param_2 = (TAATMorphSubtableMorx *)
- (ulong)(uint)(int)(short)(puVar32[1] >> 8 | puVar32[1] << 8);
- uVar6 = puVar32[3];
- if (puVar32[2] != 0xffff) {
- pTVar29 = param_1;
+ (ulong)(uint)(int)(short)(puVar35[1] >> 8 | puVar35[1] << 8);
+ uVar7 = puVar35[3];
+ if (puVar35[2] != 0xffff) {
+ pTVar33 = param_1;
DoContextualAction();
- if (((int)pTVar29 != 0) &&
- (local_12d8 = (TRunGlue *)((ulong)pTVar29 & 0xffffffff),
- p_Var24 = (_lambda___1_ *)param_2, (int)pTVar29 < 1)) goto LAB_9;
- }
- if (uVar6 != 0xffff) {
- pTVar29 = param_1;
+ if (((int)pTVar33 != 0) &&
+ (local_12d8 = (TRunGlue *)((ulong)pTVar33 & 0xffffffff),
+ p_Var27 = (_lambda___1_ *)param_2, (int)pTVar33 < 1)) goto LAB_9;
+ }
+ if (uVar7 != 0xffff) {
+ pTVar33 = param_1;
DoContextualAction();
- if (((int)pTVar29 != 0) &&
- (local_12d8 = (TRunGlue *)((ulong)pTVar29 & 0xffffffff), (int)pTVar29 < 1))
+ if (((int)pTVar33 != 0) &&
+ (local_12d8 = (TRunGlue *)((ulong)pTVar33 & 0xffffffff), (int)pTVar33 < 1))
goto LAB_10;
}
- uVar10 = local_988;
+ uVar13 = local_988;
if (((uint)param_2 >> 0xe & 1) == 0) goto LAB_23;
- local_988._0_4_ = CONCAT22((short)uVar20,uVar36);
- local_988._6_2_ = SUB82(uVar10,6);
- local_988._0_6_ = CONCAT24((short)uVar12,(undefined4)local_988);
- puVar32 = local_878;
+ local_988._0_4_ = CONCAT22((short)uVar22,uVar40);
+ local_988._6_2_ = SUB82(uVar13,6);
+ local_988._0_6_ = CONCAT24((short)uVar15,(undefined4)local_988);
+ puVar35 = local_878;
if (local_878 == local_870[0]) {
LAB_24:
- if (puVar32 != local_870[0]) goto LAB_23;
+ if (puVar35 != local_870[0]) goto LAB_23;
}
else {
do {
- if (((*puVar32 == uVar36) && ((uint)puVar32[1] == (uint)uVar20)) &&
- (puVar32[2] == uVar12)) goto LAB_24;
- puVar32 = puVar32 + 3;
- } while (puVar32 != local_870[0]);
+ if (((*puVar35 == uVar40) && ((uint)puVar35[1] == (uint)uVar22)) &&
+ (puVar35[2] == uVar15)) goto LAB_24;
+ puVar35 = puVar35 + 3;
+ } while (puVar35 != local_870[0]);
}
std::
vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
::push_back_abi_fn200100_
((vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
*)param_2,(tuple *)&local_878);
- uVar20 = uVar17;
+ uVar22 = uVar19;
} while ((long)local_12b0 < 1);
- uVar36 = *(ushort *)(lVar35 + (long)local_12a8 * 2);
- uVar12 = uVar33;
- FetchClass(param_2,uVar11);
- local_12e0 = (ulong)uVar12;
+ uVar40 = *(ushort *)(lVar39 + (long)local_12a8 * 2);
+ uVar15 = uVar37;
+ FetchClass(param_2,uVar14);
+ local_12e0 = (ulong)uVar15;
} while( true );
}
goto LAB_2;
}
}
- else if (uVar25 == 2) {
- if ((lVar35 + 0x28U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, InitLigatureState(param_2,(MorxLigatureState *)param_1),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
- FetchInitialClass(param_1,p_Var24,param_3,param_4,&local_a10,&local_1280,&local_9c8);
- puVar32 = local_a10;
- if ((int)pTVar29 != 0) {
- pTVar29 = (TRunGlue *)0x0;
- uVar33 = 0;
- puVar30 = (ushort *)0x0;
+ else if (uVar28 == 2) {
+ if ((lVar39 + 0x28U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, InitLigatureState(param_2,(MorxLigatureState *)param_1),
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
+ FetchInitialClass(param_1,p_Var27,param_3,param_4,&local_a10,&local_1280,&local_9c8);
+ p_Var29 = local_a10;
+ if ((int)pTVar33 != 0) {
+ pTVar33 = (TRunGlue *)0x0;
+ uVar37 = 0;
+ puVar35 = (ushort *)0x0;
local_12d0 = (TRunGlue *)0x0;
- pTVar16 = (TRunGlue *)(ulong)((uint)local_9c8 & 0xffff);
- lVar35 = *(long *)(local_a10 + 0x54) + *(long *)(local_a10 + 0x4c) * 2;
- local_12f8 = puStack_a08;
- uVar36 = *(ushort *)(lVar35 + (long)puStack_a08 * 2);
- uVar17 = (ulong)((uint)local_9c8 >> 0x10);
+ pTVar18 = (TRunGlue *)(ulong)((uint)local_9c8 & 0xffff);
+ lVar39 = *(long *)(local_a10 + 0xa8) + *(long *)(local_a10 + 0x98) * 2;
+ local_12f8 = p_Stack_a08;
+ sVar8 = *(short *)(lVar39 + (long)p_Stack_a08 * 2);
+ uVar19 = (ulong)((uint)local_9c8 >> 0x10);
local_990 = &local_9a8;
local_998 = &SUB_3;
local_9a0 = &SUB_3;
local_9a8 = &SUB_3;
- local_9c0 = (ushort *)0x0;
+ local_9c0 = (_lambda___1_ *)0x0;
local_9b0 = 0;
- puStack_9b8 = (ushort *)0x0;
+ p_Stack_9b8 = (_lambda___1_ *)0x0;
local_12d8 = (TRunGlue *)0xffff;
- puVar38 = local_1280;
- uVar12 = local_a70;
+ p_Var42 = local_1280;
+ uVar15 = local_a70;
LAB_25:
do {
do {
- if (puVar38 != (ushort *)0x0 && uVar36 == 0xffff) {
+ if (p_Var42 != (_lambda___1_ *)0x0 && sVar8 == -1) {
LAB_26:
local_12d8 = (TRunGlue *)(ulong)(uint)local_12d8;
- puStack_9b8 = local_9c0;
- puVar14 = (ushort *)((long)puVar38 + -1);
- if (puVar14 == (ushort *)0x0 || (long)puVar38 < 1) {
- pTVar16 = (TRunGlue *)0x0;
- puVar38 = (ushort *)0x0;
- if (puVar14 != (ushort *)0x0) goto LAB_9;
+ p_Stack_9b8 = local_9c0;
+ p_Var31 = p_Var42 + -1;
+ if (p_Var31 == (_lambda___1_ *)0x0 || (long)p_Var42 < 1) {
+ pTVar18 = (TRunGlue *)0x0;
+ p_Var42 = (_lambda___1_ *)0x0;
+ if (p_Var31 != (_lambda___1_ *)0x0) goto LAB_9;
goto LAB_25;
}
- local_12f8 = (ushort *)((long)local_12f8 + (long)*(int *)(param_1 + 0xc));
- puVar38 = puVar14;
+ local_12f8 = local_12f8 + *(int *)(param_1 + 0xc);
+ p_Var42 = p_Var31;
break;
}
- puVar14 = (ushort *)
- (local_a60 + local_a68 * uVar17 * 2 + ((ulong)pTVar16 & 0xffffffff) * 2);
- if (puVar14 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar14 + 1) goto LAB_14;
- uVar20 = uVar17;
- if (local_12d0 != (TRunGlue *)puVar14) {
- puVar30 = (ushort *)
- (local_a58 +
- (ulong)((uint)(*puVar14 >> 8) | (*puVar14 & 0xff00ff) << 8) * 6);
- if (puVar30 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar30 + 3) goto LAB_14;
- uVar33 = (uint)(puVar30[1] >> 8) | (puVar30[1] & 0xff00ff) << 8;
- uVar20 = (ulong)((uint)(*puVar30 >> 8) | (*puVar30 & 0xff00ff) << 8);
- local_12d8 = (TRunGlue *)uVar17;
- local_12d0 = (TRunGlue *)puVar14;
- }
- uVar17 = uVar20;
- p_Var24 = (_lambda___1_ *)(ulong)uVar33;
- if (uVar33 < 0x2000) goto LAB_26;
- if (uVar33 >> 0xf != 0) {
- local_a70 = uVar12 + 1;
- if ((int)uVar12 < 0x7f) {
- uVar12 = local_a70;
+ puVar3 = (ushort *)
+ (local_a60 + local_a68 * uVar19 * 2 + ((ulong)pTVar18 & 0xffffffff) * 2);
+ if (puVar3 < *(ushort **)(param_1 + 0x68) || *(ushort **)(param_1 + 0x70) < puVar3 + 1
+ ) goto LAB_14;
+ uVar22 = uVar19;
+ if (local_12d0 != (TRunGlue *)puVar3) {
+ puVar35 = (ushort *)
+ (local_a58 + (ulong)((uint)(*puVar3 >> 8) | (*puVar3 & 0xff00ff) << 8) * 6
+ );
+ if (puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 3) goto LAB_14;
+ uVar37 = (uint)(puVar35[1] >> 8) | (puVar35[1] & 0xff00ff) << 8;
+ uVar22 = (ulong)((uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8);
+ local_12d8 = (TRunGlue *)uVar19;
+ local_12d0 = (TRunGlue *)puVar3;
+ }
+ uVar19 = uVar22;
+ p_Var27 = (_lambda___1_ *)(ulong)uVar37;
+ if (uVar37 < 0x2000) goto LAB_26;
+ if (uVar37 >> 0xf != 0) {
+ local_a70 = uVar15 + 1;
+ if ((int)uVar15 < 0x7f) {
+ uVar15 = local_a70;
if ((int)local_a70 <= (int)local_a6c) {
- uVar12 = local_a6c;
+ uVar15 = local_a6c;
}
- lVar19 = (long)(int)local_a70;
- local_a6c = uVar12;
+ lVar21 = (long)(int)local_a70;
+ local_a6c = uVar15;
}
else {
- lVar19 = 0;
+ lVar21 = 0;
local_a70 = 0;
}
- uVar12 = local_a70;
- local_1270[lVar19 * 2] = (long)puVar32;
- local_1270[lVar19 * 2 + 1] = (long)local_12f8;
- }
- puVar14 = local_878;
- if ((uVar33 >> 0xd & 1) != 0) {
- if ((int)uVar12 < 0) goto LAB_14;
- uVar6 = puVar30[2];
+ uVar15 = local_a70;
+ local_1270[lVar21 * 2] = (long)p_Var29;
+ local_1270[lVar21 * 2 + 1] = (long)local_12f8;
+ }
+ puVar3 = local_878;
+ if ((uVar37 >> 0xd & 1) != 0) {
+ if ((int)uVar15 < 0) goto LAB_14;
+ uVar40 = puVar35[2];
_memset(&local_878,0xaa,0x800);
- uVar28 = local_a6c;
- lVar18 = *(long *)(param_1 + 0x68);
- lVar19 = lVar18 + 0xc;
- uVar23 = (*(uint *)(lVar18 + 0x1c) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar18 + 0x1c) & 0xff00ff) << 8;
- uVar26 = (*(uint *)(lVar18 + 0x20) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar18 + 0x20) & 0xff00ff) << 8;
- uVar37 = (*(uint *)(lVar18 + 0x24) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar18 + 0x24) & 0xff00ff) << 8;
- uVar25 = 0;
- local_a50 = (ushort *)0xffffffffffffffff;
- local_1288 = (ushort *)CONCAT62(local_1288._2_6_,0xffff);
+ uVar34 = local_a6c;
+ lVar20 = *(long *)(param_1 + 0x68);
+ lVar21 = lVar20 + 0xc;
+ uVar26 = (*(uint *)(lVar20 + 0x1c) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar20 + 0x1c) & 0xff00ff) << 8;
+ uVar30 = (*(uint *)(lVar20 + 0x20) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar20 + 0x20) & 0xff00ff) << 8;
+ uVar41 = (*(uint *)(lVar20 + 0x24) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar20 + 0x24) & 0xff00ff) << 8;
+ uVar28 = 0;
+ local_a50 = (_lambda___1_ *)0xffffffffffffffff;
+ local_1288 = (_lambda___1_ *)CONCAT62(local_1288._2_6_,0xffff);
puStack_898 = &SUB_3;
local_8a0 = &SUB_3;
local_888 = &SUB_3;
puStack_890 = &SUB_3;
puStack_8b8 = &SUB_3;
local_8c0 = &SUB_3;
puStack_8a8 = &SUB_3;
puStack_8b0 = &SUB_3;
puStack_8d8 = &SUB_3;
local_8e0 = &SUB_3;
puStack_8c8 = &SUB_3;
puStack_8d0 = &SUB_3;
puStack_8f8 = &SUB_3;
local_900 = &SUB_3;
puStack_8e8 = &SUB_3;
puStack_8f0 = &SUB_3;
puStack_918 = &SUB_3;
local_920 = &SUB_3;
puStack_908 = &SUB_3;
puStack_910 = &SUB_3;
puStack_938 = &SUB_3;
local_940 = &SUB_3;
puStack_928 = &SUB_3;
puStack_930 = &SUB_3;
puStack_958 = &SUB_3;
local_960 = &SUB_3;
puStack_948 = &SUB_3;
puStack_950 = &SUB_3;
puStack_968 = &SUB_3;
local_970 = &SUB_3;
local_988 = 0;
local_978 = 0;
local_980 = 0;
local_880 = &local_970;
local_9f8 = param_1;
local_9f0 = (vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
*)param_2;
local_9e8 = &local_988;
local_9e0 = &local_a50;
local_9d8 = &local_1288;
- local_12b0 = (ushort *)0xffffffff;
- puVar31 = (uint *)(lVar19 + (ulong)(uVar23 >> 0x10 | uVar23 << 0x10) +
- (ulong)((uint)(uVar6 >> 8) | (uVar6 & 0xff00ff) << 8) * 4);
+ local_12b0 = (_lambda___1_ *)0xffffffff;
+ puVar36 = (uint *)(lVar21 + (ulong)(uVar26 >> 0x10 | uVar26 << 0x10) +
+ (ulong)((uint)(uVar40 >> 8) | (uVar40 & 0xff00ff) << 8) * 4);
do {
- p_Var24 = (_lambda___1_ *)(ulong)uVar28;
- puVar4 = *(uint **)(param_1 + 0x68);
- puVar5 = *(uint **)(param_1 + 0x70);
- if (puVar31 < puVar4 || puVar5 < puVar31 + 1) goto LAB_15;
- uVar23 = (*puVar31 & 0xff00ff00) >> 8 | (*puVar31 & 0xff00ff) << 8;
- uVar8 = uVar23 << 0x10;
- uVar23 = uVar23 >> 0x10 | uVar8;
- p_Var24 = (_lambda___1_ *)local_1270[(long)(int)uVar12 * 2];
- puVar14 = (ushort *)local_1270[(long)(int)uVar12 * 2 + 1];
- puVar2 = (uint *)(lVar19 + (ulong)(uVar26 >> 0x10 | uVar26 << 0x10) +
+ p_Var27 = (_lambda___1_ *)(ulong)uVar34;
+ puVar5 = *(uint **)(param_1 + 0x68);
+ puVar6 = *(uint **)(param_1 + 0x70);
+ if (puVar36 < puVar5 || puVar6 < puVar36 + 1) goto LAB_15;
+ uVar26 = (*puVar36 & 0xff00ff00) >> 8 | (*puVar36 & 0xff00ff) << 8;
+ uVar10 = uVar26 << 0x10;
+ uVar26 = uVar26 >> 0x10 | uVar10;
+ p_Var27 = (_lambda___1_ *)local_1270[(long)(int)uVar15 * 2];
+ p_Var31 = (_lambda___1_ *)local_1270[(long)(int)uVar15 * 2 + 1];
+ puVar2 = (uint *)(lVar21 + (ulong)(uVar30 >> 0x10 | uVar30 << 0x10) +
(long)(int)((uint)*(ushort *)
- (*(long *)(p_Var24 + 0xa8) +
- *(long *)(p_Var24 + 0x98) * 2 +
- (long)puVar14 * 2) + ((int)(uVar23 << 2) >> 2)
+ (*(long *)(p_Var27 + 0xa8) +
+ *(long *)(p_Var27 + 0x98) * 2 +
+ (long)p_Var31 * 2) + ((int)(uVar26 << 2) >> 2)
) * 2);
- if (puVar2 < puVar4 || puVar5 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
- uVar25 = uVar25 + ((uint)(ushort)((ushort)*puVar2 >> 8) |
+ if (puVar2 < puVar5 || puVar6 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
+ uVar28 = uVar28 + ((uint)(ushort)((ushort)*puVar2 >> 8) |
((ushort)*puVar2 & 0xff00ff) << 8);
- if (uVar8 >> 0x1e == 0) {
- local_a28[0] = puVar14;
+ if (uVar10 >> 0x1e == 0) {
+ local_a28[0] = p_Var31;
std::vector<long,TInlineBufferAllocator<long,30ul>>::insert
- ((vector<long,TInlineBufferAllocator<long,30ul>> *)p_Var24,&local_988,
+ ((vector<long,TInlineBufferAllocator<long,30ul>> *)p_Var27,&local_988,
local_988,local_a28);
- uVar23 = 1;
+ uVar26 = 1;
}
else {
- puVar2 = (uint *)(lVar19 + (ulong)(uVar37 >> 0x10 | uVar37 << 0x10) +
- (ulong)uVar25 * 2);
- if (puVar2 < puVar4 || puVar5 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
- if (local_a50 != (ushort *)0xffffffffffffffff) {
+ puVar2 = (uint *)(lVar21 + (ulong)(uVar41 >> 0x10 | uVar41 << 0x10) +
+ (ulong)uVar28 * 2);
+ if (puVar2 < puVar5 || puVar6 < (uint *)((long)puVar2 + 2U)) goto LAB_15;
+ if (local_a50 != (_lambda___1_ *)0xffffffffffffffff) {
DoLigatureAction<TRunGlue::TGlyphInSingleRun>(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)
- ::{lambda()#1}::operator()(p_Var24);
+ ::{lambda()#1}::operator()(p_Var27);
local_980 = local_988;
}
- local_a50 = puVar14;
- local_1288 = (ushort *)
+ local_a50 = p_Var31;
+ local_1288 = (_lambda___1_ *)
CONCAT62(local_1288._2_6_,
(ushort)*puVar2 >> 8 | (ushort)*puVar2 << 8);
if (0x7e < (int)local_12b0) goto LAB_15;
- local_12b0 = (ushort *)((long)(int)local_12b0 + 1);
- (&local_878)[(long)local_12b0 * 2] = p_Var24;
- local_870[(long)local_12b0 * 2] = puVar14;
- uVar23 = ~uVar23 >> 0x1f;
+ local_12b0 = (_lambda___1_ *)((long)(int)local_12b0 + 1);
+ (&local_878)[(long)local_12b0 * 2] = p_Var27;
+ local_870[(long)local_12b0 * 2] = (ushort *)p_Var31;
+ uVar26 = ~uVar26 >> 0x1f;
}
- uVar8 = uVar12 - 1;
- p_Var24 = (_lambda___1_ *)(ulong)uVar28;
- bVar1 = 0 < (int)uVar12;
- uVar12 = uVar28;
+ uVar10 = uVar15 - 1;
+ p_Var27 = (_lambda___1_ *)(ulong)uVar34;
+ bVar1 = 0 < (int)uVar15;
+ uVar15 = uVar34;
if (bVar1) {
- uVar12 = uVar8;
+ uVar15 = uVar10;
}
- puVar31 = puVar31 + 1;
- } while (uVar23 != 0);
- local_a70 = uVar12;
+ puVar36 = puVar36 + 1;
+ } while (uVar26 != 0);
+ local_a70 = uVar15;
DoLigatureAction<TRunGlue::TGlyphInSingleRun>(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)
- ::{lambda()#1}::operator()(p_Var24);
- this = p_Var24;
+ ::{lambda()#1}::operator()(p_Var27);
+ p_Var31 = p_Var27;
if (-1 < (int)local_12b0) {
- lVar19 = ((ulong)local_12b0 & 0xffffffff) + 1;
- ppuVar15 = local_870 + ((ulong)local_12b0 & 0xffffffff) * 2;
- uVar25 = uVar12;
+ lVar21 = ((ulong)local_12b0 & 0xffffffff) + 1;
+ ppuVar23 = local_870 + ((ulong)local_12b0 & 0xffffffff) * 2;
+ uVar28 = uVar15;
do {
- uVar23 = (uint)p_Var24;
- uVar12 = uVar23;
- if ((int)uVar23 < (int)(uVar25 + 1)) {
- uVar12 = uVar25 + 1;
+ uVar26 = (uint)p_Var27;
+ uVar15 = uVar26;
+ if ((int)uVar26 < (int)(uVar28 + 1)) {
+ uVar15 = uVar28 + 1;
}
- uVar26 = uVar12;
- if (0x7e < (int)uVar25) {
- uVar26 = (uint)this;
+ uVar30 = uVar15;
+ if (0x7e < (int)uVar28) {
+ uVar30 = (uint)p_Var31;
}
- this = (_lambda___1_ *)(ulong)uVar26;
- if (0x7e < (int)uVar25) {
- uVar12 = uVar23;
+ p_Var31 = (_lambda___1_ *)(ulong)uVar30;
+ if (0x7e < (int)uVar28) {
+ uVar15 = uVar26;
}
- p_Var24 = (_lambda___1_ *)(ulong)uVar12;
- uVar12 = 0;
- if ((int)uVar25 < 0x7f) {
- uVar12 = uVar25 + 1;
+ p_Var27 = (_lambda___1_ *)(ulong)uVar15;
+ uVar15 = 0;
+ if ((int)uVar28 < 0x7f) {
+ uVar15 = uVar28 + 1;
}
- puVar14 = *ppuVar15;
- local_1270[(long)(int)uVar12 * 2] = (long)ppuVar15[-1];
- local_1270[(long)(int)uVar12 * 2 + 1] = (long)puVar14;
- ppuVar15 = ppuVar15 + -2;
- lVar19 = lVar19 + -1;
- uVar25 = uVar12;
- local_a70 = uVar12;
- local_a6c = uVar26;
- } while (lVar19 != 0);
+ puVar3 = *ppuVar23;
+ local_1270[(long)(int)uVar15 * 2] = (long)ppuVar23[-1];
+ local_1270[(long)(int)uVar15 * 2 + 1] = (long)puVar3;
+ ppuVar23 = ppuVar23 + -2;
+ lVar21 = lVar21 + -1;
+ uVar28 = uVar15;
+ local_a70 = uVar15;
+ local_a6c = uVar30;
+ } while (lVar21 != 0);
}
local_9f8 = (TRunGlue *)&local_988;
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::
- operator()[abi_fn200100_((__destroy_vector *)this);
- pTVar29 = (TRunGlue *)0x1;
- puVar14 = local_878;
- }
- p_Var24 = (_lambda___1_ *)(ulong)uVar33;
- local_878 = puVar14;
- if ((uVar33 >> 0xe & 1) == 0) goto LAB_26;
- p_Var24 = (_lambda___1_ *)(ulong)uVar33;
- local_878._0_4_ = CONCAT22((short)local_12d8,uVar36);
- local_878._6_2_ = (undefined2)((ulong)puVar14 >> 0x30);
- local_878._0_6_ = CONCAT24((short)uVar17,(undefined4)local_878);
- puVar14 = local_9c0;
- if (local_9c0 == puStack_9b8) {
+ operator()[abi_fn200100_((__destroy_vector *)p_Var31);
+ pTVar33 = (TRunGlue *)0x1;
+ puVar3 = local_878;
+ }
+ p_Var27 = (_lambda___1_ *)(ulong)uVar37;
+ local_878 = puVar3;
+ if ((uVar37 >> 0xe & 1) == 0) goto LAB_26;
+ p_Var27 = (_lambda___1_ *)(ulong)uVar37;
+ local_878._0_4_ = CONCAT22((short)local_12d8,sVar8);
+ local_878._6_2_ = (undefined2)((ulong)puVar3 >> 0x30);
+ local_878._0_6_ = CONCAT24((short)uVar19,(undefined4)local_878);
+ p_Var31 = local_9c0;
+ if (local_9c0 == p_Stack_9b8) {
LAB_27:
- if (puVar14 != puStack_9b8) goto LAB_26;
+ if (p_Var31 != p_Stack_9b8) goto LAB_26;
}
else {
do {
- if (((*puVar14 == uVar36) && (puVar14[1] == (uint)local_12d8)) &&
- ((uint)puVar14[2] == (uint)uVar17)) goto LAB_27;
- puVar14 = puVar14 + 3;
- } while (puVar14 != puStack_9b8);
+ if (((*(short *)p_Var31 == sVar8) &&
+ (*(ushort *)(p_Var31 + 2) == (uint)local_12d8)) &&
+ ((uint)*(ushort *)(p_Var31 + 4) == (uint)uVar19)) goto LAB_27;
+ p_Var31 = p_Var31 + 6;
+ } while (p_Var31 != p_Stack_9b8);
}
std::
vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
::push_back_abi_fn200100_
((vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
- *)p_Var24,(tuple *)&local_9c0);
- } while ((long)puVar38 < 1);
- uVar36 = *(ushort *)(lVar35 + (long)local_12f8 * 2);
- pTVar16 = param_1;
- FetchClass((TAATMorphSubtableMorx *)p_Var24,uVar11);
+ *)p_Var27,(tuple *)&local_9c0);
+ } while ((long)p_Var42 < 1);
+ sVar8 = *(short *)(lVar39 + (long)local_12f8 * 2);
+ pTVar18 = param_1;
+ FetchClass((TAATMorphSubtableMorx *)p_Var27,uVar14);
} while( true );
}
goto LAB_2;
}
}
else {
- if (uVar25 != 4) goto LAB_20;
+ if (uVar28 != 4) goto LAB_20;
LAB_28:
- local_1280 = (ushort *)&SUB_3;
- uVar17 = *(ulong *)(param_1 + 0x70);
- if (lVar35 + 0xeU <= uVar17) {
- uVar11 = *(ushort *)(lVar35 + 0xc) >> 8 | *(ushort *)(lVar35 + 0xc) << 8;
- if (uVar11 < 6) {
- if (uVar11 == 0) goto LAB_19;
- if ((uVar11 != 2) && (pTVar29 = (TRunGlue *)0xffffffff, uVar11 != 4)) goto LAB_6;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ uVar19 = *(ulong *)(param_1 + 0x70);
+ if (lVar39 + 0xeU <= uVar19) {
+ uVar14 = *(ushort *)(lVar39 + 0xc) >> 8 | *(ushort *)(lVar39 + 0xc) << 8;
+ if (uVar14 < 6) {
+ if (uVar14 == 0) goto LAB_19;
+ if ((uVar14 != 2) && (pTVar33 = (TRunGlue *)0xffffffff, uVar14 != 4)) goto LAB_6;
}
else {
LAB_17:
- local_1280 = (ushort *)&SUB_3;
- pTVar29 = (TRunGlue *)0xffffffff;
- if (uVar11 != 6) {
- if (uVar11 == 10) {
- uVar20 = lVar35 + 0x14;
- if (((uVar17 < uVar20) ||
- (uVar22 = uVar20 + (ulong)((uint)(*(ushort *)(lVar35 + 0x12) >> 8) |
- (*(ushort *)(lVar35 + 0x12) & 0xff00ff) << 8) *
- (ulong)((uint)(*(ushort *)(lVar35 + 0xe) >> 8) |
- (*(ushort *)(lVar35 + 0xe) & 0xff00ff) << 8),
- uVar22 < uVar20)) || (uVar17 < uVar22)) goto LAB_6;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ pTVar33 = (TRunGlue *)0xffffffff;
+ if (uVar14 != 6) {
+ if (uVar14 == 10) {
+ uVar22 = lVar39 + 0x14;
+ if (((uVar19 < uVar22) ||
+ (uVar25 = uVar22 + (ulong)((uint)(*(ushort *)(lVar39 + 0x12) >> 8) |
+ (*(ushort *)(lVar39 + 0x12) & 0xff00ff) << 8) *
+ (ulong)((uint)(*(ushort *)(lVar39 + 0xe) >> 8) |
+ (*(ushort *)(lVar39 + 0xe) & 0xff00ff) << 8),
+ uVar25 < uVar22)) || (uVar19 < uVar25)) goto LAB_6;
}
else {
- if ((uVar11 != 8) || (uVar20 = lVar35 + 0x12, uVar17 < uVar20)) goto LAB_6;
- uVar21 = (ulong)((uint)(*(ushort *)(lVar35 + 0x10) >> 8) |
- (*(ushort *)(lVar35 + 0x10) & 0xff00ff) << 8);
- uVar22 = uVar20 + uVar21 * 2;
- uVar3 = 0;
- if (lVar35 + 0x14U <= uVar17) {
- uVar3 = uVar17 - uVar20 >> 1;
- }
- if ((uVar17 < uVar22 || uVar22 < uVar20) && (uVar3 != uVar21)) goto LAB_6;
+ if ((uVar14 != 8) || (uVar22 = lVar39 + 0x12, uVar19 < uVar22)) goto LAB_6;
+ uVar24 = (ulong)((uint)(*(ushort *)(lVar39 + 0x10) >> 8) |
+ (*(ushort *)(lVar39 + 0x10) & 0xff00ff) << 8);
+ uVar25 = uVar22 + uVar24 * 2;
+ uVar4 = 0;
+ if (lVar39 + 0x14U <= uVar19) {
+ uVar4 = uVar19 - uVar22 >> 1;
+ }
+ if ((uVar19 < uVar25 || uVar25 < uVar22) && (uVar4 != uVar24)) goto LAB_6;
}
goto LAB_19;
}
}
LAB_18:
- local_1280 = (ushort *)&SUB_3;
- pTVar29 = (TRunGlue *)0xffffffff;
- if ((uVar17 < lVar35 + 0x12U) ||
- ((uVar20 = lVar35 + 0x18U +
- (ulong)((uint)(*(ushort *)(lVar35 + 0x10) >> 8) |
- (*(ushort *)(lVar35 + 0x10) & 0xff00ff) << 8) *
- (ulong)((uint)(*(ushort *)(lVar35 + 0xe) >> 8) |
- (*(ushort *)(lVar35 + 0xe) & 0xff00ff) << 8), uVar20 < lVar35 + 0x18U
- || (uVar17 < uVar20)))) goto LAB_6;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ pTVar33 = (TRunGlue *)0xffffffff;
+ if ((uVar19 < lVar39 + 0x12U) ||
+ ((uVar22 = lVar39 + 0x18U +
+ (ulong)((uint)(*(ushort *)(lVar39 + 0x10) >> 8) |
+ (*(ushort *)(lVar39 + 0x10) & 0xff00ff) << 8) *
+ (ulong)((uint)(*(ushort *)(lVar39 + 0xe) >> 8) |
+ (*(ushort *)(lVar39 + 0xe) & 0xff00ff) << 8), uVar22 < lVar39 + 0x18U
+ || (uVar19 < uVar22)))) goto LAB_6;
LAB_19:
- local_1280 = (ushort *)&SUB_3;
+ local_1280 = (_lambda___1_ *)&SUB_3;
TAATLookupTable::SetTable
((TAATLookupTable *)param_2,(SFNTLookupTable *)(param_1 + 0x18),
- (void *)(lVar35 + 0xc));
+ (void *)(lVar39 + 0xc));
TAATMorphSubtable::DoSwashSubtable
(param_1,param_2,param_3,param_2,param_3 + param_4,*(undefined8 *)(param_1 + 0x68)
);
- pTVar29 = param_1;
+ pTVar33 = param_1;
goto LAB_6;
}
}
}
else {
_memset(local_1270,0xaa,0x820);
- local_1280 = (ushort *)&SUB_3;
- puStack_1278 = (ushort *)&SUB_3;
- local_1288 = (ushort *)&SUB_3;
+ local_1280 = (_lambda___1_ *)&SUB_3;
+ p_Stack_1278 = (_lambda___1_ *)&SUB_3;
+ local_1288 = (_lambda___1_ *)&SUB_3;
local_128c = 0xaaaaaaaa;
- uVar12 = uVar12 >> 0x18;
- pTVar29 = (TRunGlue *)0x0;
- if (uVar12 < 2) {
- if (uVar12 == 0) {
- if ((lVar35 + 0x1cU <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1,
+ uVar15 = uVar15 >> 0x18;
+ pTVar33 = (TRunGlue *)0x0;
+ if (uVar15 < 2) {
+ if (uVar15 == 0) {
+ if ((lVar39 + 0x1cU <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1,
InitRearrangementState(param_2,param_1,(MorxRearrangementState *)param_2),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
FetchInitialClass(param_1,param_2,param_3,param_4,&local_1280,&local_1288,&local_128c);
- puVar32 = local_1280;
- puVar38 = puStack_1278;
- puVar30 = local_1288;
- uVar12 = local_128c;
- if ((int)pTVar29 != 0) goto LAB_5;
+ p_Var27 = local_1280;
+ p_Var29 = p_Stack_1278;
+ p_Var42 = local_1288;
+ uVar15 = local_128c;
+ if ((int)pTVar33 != 0) goto LAB_5;
LAB_2:
- pTVar29 = (TRunGlue *)0x0;
+ pTVar33 = (TRunGlue *)0x0;
goto LAB_6;
}
}
else {
- if (uVar12 != 1) goto LAB_6;
- if ((lVar35 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
+ if (uVar15 != 1) goto LAB_6;
+ if ((lVar39 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
FetchInitialClass(param_1,param_2,param_3,param_4,&local_1280,&local_1288,&local_128c);
- puVar32 = local_1288;
- if ((int)pTVar29 != 0) {
+ p_Var29 = local_1288;
+ if ((int)pTVar33 != 0) {
local_12d0 = (TRunGlue *)((ulong)local_128c & 0xffffffff0000ffff);
- uVar17 = (ulong)(local_128c >> 0x10);
- puStack_9b8 = puStack_1278;
+ uVar19 = (ulong)(local_128c >> 0x10);
+ p_Stack_9b8 = p_Stack_1278;
local_9c0 = local_1280;
- ppuVar15 = &local_9c0;
+ pp_Var17 = &local_9c0;
TRunGlue::TGlyph::glyphID((TGlyph *)param_2);
local_12c8 = (TRunGlue *)0x0;
local_850 = &SUB_3;
local_870[3] = (ushort *)&SUB_3;
local_848 = local_870 + 2;
local_870[2] = (ushort *)&SUB_3;
local_878 = (ushort *)0x0;
local_870[1] = (ushort *)0x0;
local_870[0] = (ushort *)0x0;
LAB_29:
do {
- uVar20 = uVar17;
+ uVar22 = uVar19;
do {
- if ((puVar32 != (ushort *)0x0) &&
- (((uint)ppuVar15 == 0xffff ||
- (puVar38 = local_9c0, TRunGlue::IsDeleted((TRunGlue *)param_2,(long)local_9c0),
- ((ulong)puVar38 & 1) != 0)))) {
- uVar17 = uVar20;
+ if ((p_Var29 != (_lambda___1_ *)0x0) &&
+ (((uint)pp_Var17 == 0xffff ||
+ (p_Var27 = local_9c0, TRunGlue::IsDeleted((TRunGlue *)param_2,(long)local_9c0),
+ ((ulong)p_Var27 & 1) != 0)))) {
+ uVar19 = uVar22;
LAB_30:
local_12c8 = (TRunGlue *)(ulong)(uint)local_12c8;
local_870[0] = local_878;
- puVar38 = (ushort *)((long)puVar32 + -1);
- if (puVar38 == (ushort *)0x0 || (long)puVar32 < 1) {
+ p_Var42 = p_Var29 + -1;
+ if (p_Var42 == (_lambda___1_ *)0x0 || (long)p_Var29 < 1) {
local_12d0 = (TRunGlue *)0x0;
- puVar32 = (ushort *)0x0;
- p_Var24 = (_lambda___1_ *)param_2;
- pTVar29 = local_12c8;
- if (puVar38 != (ushort *)0x0) goto LAB_9;
+ p_Var29 = (_lambda___1_ *)0x0;
+ p_Var27 = (_lambda___1_ *)param_2;
+ pTVar33 = local_12c8;
+ if (p_Var42 != (_lambda___1_ *)0x0) goto LAB_9;
goto LAB_29;
}
- puStack_9b8 = (ushort *)((long)puStack_9b8 + (long)*(int *)(param_1 + 0xc));
- puVar32 = puVar38;
+ p_Stack_9b8 = p_Stack_9b8 + *(int *)(param_1 + 0xc);
+ p_Var29 = p_Var42;
break;
}
- puVar38 = (ushort *)
- (local_1270[2] + (long)local_12d0 * 2 + local_1270[1] * uVar20 * 2);
- if ((puVar38 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar38 + 1) ||
- (puVar38 = (ushort *)
+ puVar35 = (ushort *)
+ (local_1270[2] + (long)local_12d0 * 2 + local_1270[1] * uVar22 * 2);
+ if ((puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 1) ||
+ (puVar35 = (ushort *)
(local_1270[3] +
- (ulong)((uint)(*puVar38 >> 8) | (*puVar38 & 0xff00ff) << 8) * 8),
- puVar38 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar38 + 4)) goto LAB_10;
- uVar12 = (uint)(*puVar38 >> 8) | (*puVar38 & 0xff00ff) << 8;
- uVar17 = (ulong)uVar12;
+ (ulong)((uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8) * 8),
+ puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 4)) goto LAB_10;
+ uVar15 = (uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8;
+ uVar19 = (ulong)uVar15;
param_2 = (TAATMorphSubtableMorx *)
- (ulong)(uint)(int)(short)(puVar38[1] >> 8 | puVar38[1] << 8);
- uVar36 = puVar38[3];
- if (puVar38[2] != 0xffff) {
- pTVar29 = param_1;
+ (ulong)(uint)(int)(short)(puVar35[1] >> 8 | puVar35[1] << 8);
+ uVar40 = puVar35[3];
+ if (puVar35[2] != 0xffff) {
+ pTVar33 = param_1;
DoContextualAction();
- if (((int)pTVar29 != 0) &&
- (local_12c8 = (TRunGlue *)((ulong)pTVar29 & 0xffffffff),
- p_Var24 = (_lambda___1_ *)param_2, (int)pTVar29 < 1)) goto LAB_9;
- }
- if (uVar36 != 0xffff) {
- pTVar29 = param_1;
+ if (((int)pTVar33 != 0) &&
+ (local_12c8 = (TRunGlue *)((ulong)pTVar33 & 0xffffffff),
+ p_Var27 = (_lambda___1_ *)param_2, (int)pTVar33 < 1)) goto LAB_9;
+ }
+ if (uVar40 != 0xffff) {
+ pTVar33 = param_1;
DoContextualAction();
- if (((int)pTVar29 != 0) &&
- (local_12c8 = (TRunGlue *)((ulong)pTVar29 & 0xffffffff), (int)pTVar29 < 1))
+ if (((int)pTVar33 != 0) &&
+ (local_12c8 = (TRunGlue *)((ulong)pTVar33 & 0xffffffff), (int)pTVar33 < 1))
goto LAB_10;
}
- uVar10 = local_988;
+ uVar13 = local_988;
if (((uint)param_2 >> 0xe & 1) == 0) goto LAB_30;
- local_988._0_4_ = CONCAT22((short)uVar20,(short)ppuVar15);
- local_988._6_2_ = SUB82(uVar10,6);
- local_988._0_6_ = CONCAT24((short)uVar12,(undefined4)local_988);
- puVar38 = local_878;
+ local_988._0_4_ = CONCAT22((short)uVar22,(short)pp_Var17);
+ local_988._6_2_ = SUB82(uVar13,6);
+ local_988._0_6_ = CONCAT24((short)uVar15,(undefined4)local_988);
+ puVar35 = local_878;
if (local_878 == local_870[0]) {
LAB_31:
- if (puVar38 != local_870[0]) goto LAB_30;
+ if (puVar35 != local_870[0]) goto LAB_30;
}
else {
do {
- if ((((uint)*puVar38 == (uint)ppuVar15) && ((uint)puVar38[1] == (uint)uVar20))
- && (puVar38[2] == uVar12)) goto LAB_31;
- puVar38 = puVar38 + 3;
- } while (puVar38 != local_870[0]);
+ if ((((uint)*puVar35 == (uint)pp_Var17) && ((uint)puVar35[1] == (uint)uVar22))
+ && (puVar35[2] == uVar15)) goto LAB_31;
+ puVar35 = puVar35 + 3;
+ } while (puVar35 != local_870[0]);
}
std::
vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
::push_back_abi_fn200100_
((vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
*)param_2,(tuple *)&local_878);
- uVar20 = uVar17;
- } while ((long)puVar32 < 1);
- ppuVar15 = &local_9c0;
+ uVar22 = uVar19;
+ } while ((long)p_Var29 < 1);
+ pp_Var17 = &local_9c0;
TRunGlue::TGlyph::glyphID((TGlyph *)param_2);
- uVar12 = uVar33;
- FetchClass(param_2,uVar11);
- local_12d0 = (TRunGlue *)(ulong)uVar12;
+ uVar15 = uVar37;
+ FetchClass(param_2,uVar14);
+ local_12d0 = (TRunGlue *)(ulong)uVar15;
} while( true );
}
goto LAB_2;
}
}
}
- else if (uVar12 == 2) {
- if ((lVar35 + 0x28U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, pTVar27 = param_2,
- InitLigatureState(param_2,(MorxLigatureState *)param_1), (int)pTVar29 != 0)) {
- pTVar29 = param_1;
- FetchInitialClass(param_1,pTVar27,param_3,param_4,&local_1280,&local_1288,&local_128c);
- puVar32 = local_1288;
- if ((int)pTVar29 != 0) {
- pTVar16 = (TRunGlue *)(ulong)(local_128c & 0xffff);
- p_Var24 = (_lambda___1_ *)(ulong)(local_128c >> 0x10);
- puStack_a48 = puStack_1278;
+ else if (uVar15 == 2) {
+ if ((lVar39 + 0x28U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, pTVar32 = param_2,
+ InitLigatureState(param_2,(MorxLigatureState *)param_1), (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
+ FetchInitialClass(param_1,pTVar32,param_3,param_4,&local_1280,&local_1288,&local_128c);
+ p_Var29 = local_1288;
+ if ((int)pTVar33 != 0) {
+ pTVar18 = (TRunGlue *)(ulong)(local_128c & 0xffff);
+ p_Var27 = (_lambda___1_ *)(ulong)(local_128c >> 0x10);
+ p_Stack_a48 = p_Stack_1278;
local_a50 = local_1280;
- uVar12 = (uint)&local_a50;
- TRunGlue::TGlyph::glyphID((TGlyph *)p_Var24);
- pTVar29 = (TRunGlue *)0x0;
- uVar25 = 0;
- puVar38 = (ushort *)0x0;
+ uVar15 = (uint)&local_a50;
+ TRunGlue::TGlyph::glyphID((TGlyph *)p_Var27);
+ pTVar33 = (TRunGlue *)0x0;
+ uVar28 = 0;
+ puVar35 = (ushort *)0x0;
local_12e8 = (ushort *)0x0;
local_998 = &SUB_3;
local_9a0 = &SUB_3;
local_990 = &local_9a8;
local_9a8 = &SUB_3;
- local_9c0 = (ushort *)0x0;
+ local_9c0 = (_lambda___1_ *)0x0;
local_9b0 = 0;
- puStack_9b8 = (ushort *)0x0;
- uVar23 = 0xffff;
- uVar33 = local_a70;
+ p_Stack_9b8 = (_lambda___1_ *)0x0;
+ uVar26 = 0xffff;
+ uVar37 = local_a70;
LAB_32:
do {
do {
- if ((puVar32 != (ushort *)0x0) &&
- ((uVar12 == 0xffff ||
- (puVar30 = local_a50, TRunGlue::IsDeleted((TRunGlue *)p_Var24,(long)local_a50),
- ((ulong)puVar30 & 1) != 0)))) {
+ if ((p_Var29 != (_lambda___1_ *)0x0) &&
+ ((uVar15 == 0xffff ||
+ (p_Var42 = local_a50, TRunGlue::IsDeleted((TRunGlue *)p_Var27,(long)local_a50),
+ ((ulong)p_Var42 & 1) != 0)))) {
LAB_33:
- puStack_9b8 = local_9c0;
- puVar30 = (ushort *)((long)puVar32 + -1);
- if (puVar30 == (ushort *)0x0 || (long)puVar32 < 1) {
- pTVar16 = (TRunGlue *)0x0;
- puVar32 = (ushort *)0x0;
- if (puVar30 != (ushort *)0x0) goto LAB_9;
+ p_Stack_9b8 = local_9c0;
+ p_Var42 = p_Var29 + -1;
+ if (p_Var42 == (_lambda___1_ *)0x0 || (long)p_Var29 < 1) {
+ pTVar18 = (TRunGlue *)0x0;
+ p_Var29 = (_lambda___1_ *)0x0;
+ if (p_Var42 != (_lambda___1_ *)0x0) goto LAB_9;
goto LAB_32;
}
- puStack_a48 = (ushort *)((long)puStack_a48 + (long)*(int *)(param_1 + 0xc));
- puVar32 = puVar30;
+ p_Stack_a48 = p_Stack_a48 + *(int *)(param_1 + 0xc);
+ p_Var29 = p_Var42;
break;
}
- puVar14 = puStack_a48;
- puVar30 = (ushort *)
- (local_a60 + local_a68 * ((ulong)p_Var24 & 0xffff) * 2 +
- ((ulong)pTVar16 & 0xffffffff) * 2);
- if (puVar30 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar30 + 1) goto LAB_14;
- uVar26 = (uint)p_Var24;
- if (local_12e8 != puVar30) {
- puVar38 = (ushort *)
- (local_a58 +
- (ulong)((uint)(*puVar30 >> 8) | (*puVar30 & 0xff00ff) << 8) * 6);
- if (puVar38 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar38 + 3) goto LAB_14;
- uVar25 = (uint)(puVar38[1] >> 8) | (puVar38[1] & 0xff00ff) << 8;
- local_12e8 = puVar30;
- uVar26 = (uint)(*puVar38 >> 8) | (*puVar38 & 0xff00ff) << 8;
- uVar23 = (uint)p_Var24;
- }
- p_Var24 = (_lambda___1_ *)(ulong)uVar26;
- if (uVar25 < 0x2000) goto LAB_33;
- if (uVar25 >> 0xf != 0) {
- local_a70 = uVar33 + 1;
- if ((int)uVar33 < 0x7f) {
- uVar33 = local_a70;
+ p_Var42 = p_Stack_a48;
+ puVar3 = (ushort *)
+ (local_a60 + local_a68 * ((ulong)p_Var27 & 0xffff) * 2 +
+ ((ulong)pTVar18 & 0xffffffff) * 2);
+ if (puVar3 < *(ushort **)(param_1 + 0x68) || *(ushort **)(param_1 + 0x70) < puVar3 + 1
+ ) goto LAB_14;
+ uVar30 = (uint)p_Var27;
+ if (local_12e8 != puVar3) {
+ puVar35 = (ushort *)
+ (local_a58 + (ulong)((uint)(*puVar3 >> 8) | (*puVar3 & 0xff00ff) << 8) * 6
+ );
+ if (puVar35 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar35 + 3) goto LAB_14;
+ uVar28 = (uint)(puVar35[1] >> 8) | (puVar35[1] & 0xff00ff) << 8;
+ local_12e8 = puVar3;
+ uVar30 = (uint)(*puVar35 >> 8) | (*puVar35 & 0xff00ff) << 8;
+ uVar26 = (uint)p_Var27;
+ }
+ p_Var27 = (_lambda___1_ *)(ulong)uVar30;
+ if (uVar28 < 0x2000) goto LAB_33;
+ if (uVar28 >> 0xf != 0) {
+ local_a70 = uVar37 + 1;
+ if ((int)uVar37 < 0x7f) {
+ uVar37 = local_a70;
if ((int)local_a70 <= (int)local_a6c) {
- uVar33 = local_a6c;
+ uVar37 = local_a6c;
}
- lVar35 = (long)(int)local_a70;
- local_a6c = uVar33;
+ lVar39 = (long)(int)local_a70;
+ local_a6c = uVar37;
}
else {
- lVar35 = 0;
+ lVar39 = 0;
local_a70 = 0;
}
- uVar33 = local_a70;
- local_1270[lVar35 * 2] = (long)local_a50;
- local_1270[lVar35 * 2 + 1] = (long)puVar14;
- }
- puVar30 = local_878;
- if ((uVar25 >> 0xd & 1) != 0) {
- if ((int)uVar33 < 0) goto LAB_14;
- uVar36 = puVar38[2];
+ uVar37 = local_a70;
+ local_1270[lVar39 * 2] = (long)local_a50;
+ local_1270[lVar39 * 2 + 1] = (long)p_Var42;
+ }
+ puVar3 = local_878;
+ if ((uVar28 >> 0xd & 1) != 0) {
+ if ((int)uVar37 < 0) goto LAB_14;
+ uVar40 = puVar35[2];
_memset(&local_878,0xaa,0x800);
- uVar34 = local_a6c;
- lVar19 = *(long *)(param_1 + 0x68);
- lVar35 = lVar19 + 0xc;
- uVar28 = (*(uint *)(lVar19 + 0x1c) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar19 + 0x1c) & 0xff00ff) << 8;
- uVar8 = (*(uint *)(lVar19 + 0x20) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar19 + 0x20) & 0xff00ff) << 8;
- uVar7 = (*(uint *)(lVar19 + 0x24) & 0xff00ff00) >> 8 |
- (*(uint *)(lVar19 + 0x24) & 0xff00ff) << 8;
- uVar37 = 0;
- local_9c8 = (ushort *)0xffffffffffffffff;
+ uVar38 = local_a6c;
+ lVar21 = *(long *)(param_1 + 0x68);
+ lVar39 = lVar21 + 0xc;
+ uVar34 = (*(uint *)(lVar21 + 0x1c) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar21 + 0x1c) & 0xff00ff) << 8;
+ uVar10 = (*(uint *)(lVar21 + 0x20) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar21 + 0x20) & 0xff00ff) << 8;
+ uVar9 = (*(uint *)(lVar21 + 0x24) & 0xff00ff00) >> 8 |
+ (*(uint *)(lVar21 + 0x24) & 0xff00ff) << 8;
+ uVar41 = 0;
+ local_9c8 = (_lambda___1_ *)0xffffffffffffffff;
local_9ca = 0xffff;
puStack_898 = &SUB_3;
local_8a0 = &SUB_3;
local_888 = &SUB_3;
puStack_890 = &SUB_3;
puStack_8b8 = &SUB_3;
local_8c0 = &SUB_3;
puStack_8a8 = &SUB_3;
puStack_8b0 = &SUB_3;
puStack_8d8 = &SUB_3;
local_8e0 = &SUB_3;
puStack_8c8 = &SUB_3;
puStack_8d0 = &SUB_3;
puStack_8f8 = &SUB_3;
local_900 = &SUB_3;
puStack_8e8 = &SUB_3;
puStack_8f0 = &SUB_3;
puStack_918 = &SUB_3;
local_920 = &SUB_3;
puStack_908 = &SUB_3;
puStack_910 = &SUB_3;
puStack_938 = &SUB_3;
local_940 = &SUB_3;
puStack_928 = &SUB_3;
puStack_930 = &SUB_3;
puStack_958 = &SUB_3;
local_960 = &SUB_3;
puStack_948 = &SUB_3;
puStack_950 = &SUB_3;
puStack_968 = &SUB_3;
local_970 = &SUB_3;
local_988 = 0;
local_978 = 0;
local_980 = 0;
local_880 = &local_970;
local_9f8 = param_1;
local_9f0 = (vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
*)param_2;
local_9e8 = &local_988;
local_9e0 = &local_9c8;
- local_9d8 = (ushort **)&local_9ca;
- local_12a8 = (ushort *)0xffffffff;
- puVar31 = (uint *)(lVar35 + (ulong)(uVar28 >> 0x10 | uVar28 << 0x10) +
- (ulong)((uint)(uVar36 >> 8) | (uVar36 & 0xff00ff) << 8) * 4);
+ local_9d8 = (_lambda___1_ **)&local_9ca;
+ local_12a8 = (_lambda___1_ *)0xffffffff;
+ puVar36 = (uint *)(lVar39 + (ulong)(uVar34 >> 0x10 | uVar34 << 0x10) +
+ (ulong)((uint)(uVar40 >> 8) | (uVar40 & 0xff00ff) << 8) * 4);
do {
- if (puVar31 < *(uint **)(param_1 + 0x68) ||
- *(uint **)(param_1 + 0x70) < puVar31 + 1) goto LAB_15;
- uVar28 = (*puVar31 & 0xff00ff00) >> 8 | (*puVar31 & 0xff00ff) << 8;
- uVar9 = uVar28 << 0x10;
- uVar28 = uVar28 >> 0x10 | uVar9;
- puStack_a08 = (ushort *)local_1270[(long)(int)uVar33 * 2 + 1];
- local_a10 = (ushort *)local_1270[(long)(int)uVar33 * 2];
- p_Var24 = (_lambda___1_ *)(ulong)(uVar28 << 2);
- iVar13 = (int)&local_a10;
- TRunGlue::TGlyph::glyphID((TGlyph *)p_Var24);
- puVar30 = (ushort *)
- (lVar35 + (ulong)(uVar8 >> 0x10 | uVar8 << 0x10) +
- (long)(iVar13 + ((int)p_Var24 >> 2)) * 2);
- if (puVar30 < *(ushort **)(param_1 + 0x68) ||
- *(ushort **)(param_1 + 0x70) < puVar30 + 1) goto LAB_15;
- uVar37 = uVar37 + ((uint)(*puVar30 >> 8) | (*puVar30 & 0xff00ff) << 8);
- TRunGlue::TGlyph::glyphID((TGlyph *)p_Var24);
- if (uVar9 >> 0x1e == 0) {
- local_a28[0] = puStack_a08;
+ if (puVar36 < *(uint **)(param_1 + 0x68) ||
+ *(uint **)(param_1 + 0x70) < puVar36 + 1) goto LAB_15;
+ uVar34 = (*puVar36 & 0xff00ff00) >> 8 | (*puVar36 & 0xff00ff) << 8;
+ uVar11 = uVar34 << 0x10;
+ uVar34 = uVar34 >> 0x10 | uVar11;
+ p_Stack_a08 = (_lambda___1_ *)local_1270[(long)(int)uVar37 * 2 + 1];
+ local_a10 = (_lambda___1_ *)local_1270[(long)(int)uVar37 * 2];
+ p_Var27 = (_lambda___1_ *)(ulong)(uVar34 << 2);
+ iVar16 = (int)&local_a10;
+ TRunGlue::TGlyph::glyphID((TGlyph *)p_Var27);
+ puVar3 = (ushort *)
+ (lVar39 + (ulong)(uVar10 >> 0x10 | uVar10 << 0x10) +
+ (long)(iVar16 + ((int)p_Var27 >> 2)) * 2);
+ if (puVar3 < *(ushort **)(param_1 + 0x68) ||
+ *(ushort **)(param_1 + 0x70) < puVar3 + 1) goto LAB_15;
+ uVar41 = uVar41 + ((uint)(*puVar3 >> 8) | (*puVar3 & 0xff00ff) << 8);
+ TRunGlue::TGlyph::glyphID((TGlyph *)p_Var27);
+ if (uVar11 >> 0x1e == 0) {
+ local_a28[0] = p_Stack_a08;
std::vector<long,TInlineBufferAllocator<long,30ul>>::insert();
- p_Var24 = (_lambda___1_ *)0x1;
+ p_Var27 = (_lambda___1_ *)0x1;
}
else {
- p_Var24 = (_lambda___1_ *)
- (lVar35 + (ulong)(uVar7 >> 0x10 | uVar7 << 0x10) + (ulong)uVar37 * 2);
- if (p_Var24 < *(_lambda___1_ **)(param_1 + 0x68) ||
- *(_lambda___1_ **)(param_1 + 0x70) < p_Var24 + 2) goto LAB_15;
- if (local_9c8 != (ushort *)0xffffffffffffffff) {
+ p_Var27 = (_lambda___1_ *)
+ (lVar39 + (ulong)(uVar9 >> 0x10 | uVar9 << 0x10) + (ulong)uVar41 * 2);
+ if (p_Var27 < *(_lambda___1_ **)(param_1 + 0x68) ||
+ *(_lambda___1_ **)(param_1 + 0x70) < p_Var27 + 2) goto LAB_15;
+ if (local_9c8 != (_lambda___1_ *)0xffffffffffffffff) {
DoLigatureAction<TRunGlue::TGlyphInSingleRun>(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)
- ::{lambda()#1}::operator()(p_Var24);
+ ::{lambda()#1}::operator()(p_Var27);
local_980 = local_988;
}
- local_9c8 = puStack_a08;
- local_9ca = *(ushort *)p_Var24 >> 8 | *(ushort *)p_Var24 << 8;
+ local_9c8 = p_Stack_a08;
+ local_9ca = *(ushort *)p_Var27 >> 8 | *(ushort *)p_Var27 << 8;
if (0x7e < (int)local_12a8) goto LAB_15;
- local_12a8 = (ushort *)((long)(int)local_12a8 + 1);
+ local_12a8 = (_lambda___1_ *)((long)(int)local_12a8 + 1);
(&local_878)[(long)local_12a8 * 2] = local_a10;
- local_870[(long)local_12a8 * 2] = puStack_a08;
- p_Var24 = (_lambda___1_ *)(ulong)(~uVar28 >> 0x1f);
+ local_870[(long)local_12a8 * 2] = (ushort *)p_Stack_a08;
+ p_Var27 = (_lambda___1_ *)(ulong)(~uVar34 >> 0x1f);
}
- uVar28 = uVar33 - 1;
- bVar1 = 0 < (int)uVar33;
- uVar33 = uVar34;
+ uVar34 = uVar37 - 1;
+ bVar1 = 0 < (int)uVar37;
+ uVar37 = uVar38;
if (bVar1) {
- uVar33 = uVar28;
+ uVar37 = uVar34;
}
- local_a70 = uVar33;
- puVar31 = puVar31 + 1;
- } while (p_Var24 != (_lambda___1_ *)0x0);
+ local_a70 = uVar37;
+ puVar36 = puVar36 + 1;
+ } while (p_Var27 != (_lambda___1_ *)0x0);
DoLigatureAction<TRunGlue::TGlyphInSingleRun>(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)
::{lambda()#1}::operator()((_lambda___1_ *)0x0);
if (-1 < (int)local_12a8) {
- lVar35 = ((ulong)local_12a8 & 0xffffffff) + 1;
- ppuVar15 = local_870 + ((ulong)local_12a8 & 0xffffffff) * 2;
- uVar37 = uVar33;
- uVar28 = uVar34;
+ lVar39 = ((ulong)local_12a8 & 0xffffffff) + 1;
+ ppuVar23 = local_870 + ((ulong)local_12a8 & 0xffffffff) * 2;
+ uVar41 = uVar37;
+ uVar34 = uVar38;
do {
- uVar8 = uVar28;
- if ((int)uVar28 < (int)(uVar37 + 1)) {
- uVar8 = uVar37 + 1;
+ uVar10 = uVar34;
+ if ((int)uVar34 < (int)(uVar41 + 1)) {
+ uVar10 = uVar41 + 1;
}
- uVar33 = uVar8;
- if (0x7e < (int)uVar37) {
- uVar8 = uVar28;
- uVar33 = uVar34;
+ uVar37 = uVar10;
+ if (0x7e < (int)uVar41) {
+ uVar10 = uVar34;
+ uVar37 = uVar38;
}
- uVar34 = uVar33;
- uVar33 = 0;
- if ((int)uVar37 < 0x7f) {
- uVar33 = uVar37 + 1;
+ uVar38 = uVar37;
+ uVar37 = 0;
+ if ((int)uVar41 < 0x7f) {
+ uVar37 = uVar41 + 1;
}
- puVar30 = *ppuVar15;
- local_1270[(long)(int)uVar33 * 2] = (long)ppuVar15[-1];
- local_1270[(long)(int)uVar33 * 2 + 1] = (long)puVar30;
- ppuVar15 = ppuVar15 + -2;
- lVar35 = lVar35 + -1;
- uVar37 = uVar33;
- uVar28 = uVar8;
- local_a70 = uVar33;
- local_a6c = uVar34;
- } while (lVar35 != 0);
+ puVar3 = *ppuVar23;
+ local_1270[(long)(int)uVar37 * 2] = (long)ppuVar23[-1];
+ local_1270[(long)(int)uVar37 * 2 + 1] = (long)puVar3;
+ ppuVar23 = ppuVar23 + -2;
+ lVar39 = lVar39 + -1;
+ uVar41 = uVar37;
+ uVar34 = uVar10;
+ local_a70 = uVar37;
+ local_a6c = uVar38;
+ } while (lVar39 != 0);
}
local_9f8 = (TRunGlue *)&local_988;
- p_Var24 = (_lambda___1_ *)(ulong)uVar26;
+ p_Var27 = (_lambda___1_ *)(ulong)uVar30;
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::
- operator()[abi_fn200100_((__destroy_vector *)p_Var24);
- pTVar29 = (TRunGlue *)0x1;
- puVar30 = local_878;
- }
- local_878 = puVar30;
- if ((uVar25 >> 0xe & 1) == 0) goto LAB_33;
- local_878._0_4_ = CONCAT22((short)uVar23,(short)uVar12);
- local_878._6_2_ = (undefined2)((ulong)puVar30 >> 0x30);
- local_878._0_6_ = CONCAT24((short)p_Var24,(undefined4)local_878);
- puVar30 = local_9c0;
- if (local_9c0 == puStack_9b8) {
+ operator()[abi_fn200100_((__destroy_vector *)p_Var27);
+ pTVar33 = (TRunGlue *)0x1;
+ puVar3 = local_878;
+ }
+ local_878 = puVar3;
+ if ((uVar28 >> 0xe & 1) == 0) goto LAB_33;
+ local_878._0_4_ = CONCAT22((short)uVar26,(short)uVar15);
+ local_878._6_2_ = (undefined2)((ulong)puVar3 >> 0x30);
+ local_878._0_6_ = CONCAT24((short)p_Var27,(undefined4)local_878);
+ p_Var42 = local_9c0;
+ if (local_9c0 == p_Stack_9b8) {
LAB_34:
- if (puVar30 != puStack_9b8) goto LAB_33;
+ if (p_Var42 != p_Stack_9b8) goto LAB_33;
}
else {
do {
- if (((*puVar30 == uVar12) && ((uint)puVar30[1] == (uVar23 & 0xffff))) &&
- ((uint)puVar30[2] == ((uint)p_Var24 & 0xffff))) goto LAB_34;
- puVar30 = puVar30 + 3;
- } while (puVar30 != puStack_9b8);
+ if (((*(ushort *)p_Var42 == uVar15) &&
+ ((uint)*(ushort *)(p_Var42 + 2) == (uVar26 & 0xffff))) &&
+ ((uint)*(ushort *)(p_Var42 + 4) == ((uint)p_Var27 & 0xffff)))
+ goto LAB_34;
+ p_Var42 = p_Var42 + 6;
+ } while (p_Var42 != p_Stack_9b8);
}
std::
vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
::push_back_abi_fn200100_
((vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>
- *)p_Var24,(tuple *)&local_9c0);
- } while ((long)puVar32 < 1);
- uVar12 = (uint)&local_a50;
- TRunGlue::TGlyph::glyphID((TGlyph *)p_Var24);
- pTVar16 = param_1;
- FetchClass((TAATMorphSubtableMorx *)p_Var24,uVar11);
+ *)p_Var27,(tuple *)&local_9c0);
+ } while ((long)p_Var29 < 1);
+ uVar15 = (uint)&local_a50;
+ TRunGlue::TGlyph::glyphID((TGlyph *)p_Var27);
+ pTVar18 = param_1;
+ FetchClass((TAATMorphSubtableMorx *)p_Var27,uVar14);
} while( true );
}
goto LAB_2;
}
}
else {
- if (uVar12 == 4) goto LAB_28;
- if (uVar12 != 5) goto LAB_6;
- if ((lVar35 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
- (pTVar29 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
- (int)pTVar29 != 0)) {
- pTVar29 = param_1;
+ if (uVar15 == 4) goto LAB_28;
+ if (uVar15 != 5) goto LAB_6;
+ if ((lVar39 + 0x20U <= *(ulong *)(param_1 + 0x70)) &&
+ (pTVar33 = param_1, InitInsertionState(param_2,param_1,(MorxInsertionState *)param_2),
+ (int)pTVar33 != 0)) {
+ pTVar33 = param_1;
FetchInitialClass(param_1,param_2,param_3,param_4,&local_1280,&local_1288,&local_128c);
- puVar32 = local_1280;
- puVar38 = puStack_1278;
- puVar30 = local_1288;
- uVar12 = local_128c;
- if ((int)pTVar29 != 0) goto LAB_21;
+ p_Var27 = local_1280;
+ p_Var29 = p_Stack_1278;
+ p_Var42 = local_1288;
+ uVar15 = local_128c;
+ if ((int)pTVar33 != 0) goto LAB_21;
goto LAB_2;
}
}
}
- pTVar29 = (TRunGlue *)0xffffffff;
+ pTVar33 = (TRunGlue *)0xffffffff;
goto LAB_6;
LAB_10:
- p_Var24 = (_lambda___1_ *)param_2;
- pTVar29 = (TRunGlue *)0xffffffff;
+ p_Var27 = (_lambda___1_ *)param_2;
+ pTVar33 = (TRunGlue *)0xffffffff;
goto LAB_9;
LAB_15:
local_9f8 = (TRunGlue *)&local_988;
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi_fn200100_
- ((__destroy_vector *)p_Var24);
+ ((__destroy_vector *)p_Var27);
LAB_14:
- pTVar29 = (TRunGlue *)0xffffffff;
+ pTVar33 = (TRunGlue *)0xffffffff;
LAB_9:
std::vector<CTRun*,TInlineBufferAllocator<CTRun*,3ul>>::__destroy_vector::operator()[abi_fn200100_
- ((__destroy_vector *)p_Var24);
+ ((__destroy_vector *)p_Var27);
LAB_6:
if (*_DAT_1 == local_78) {
- return pTVar29;
+ return pTVar33;
}
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address |
| ratio | 0.3 |
| i_ratio | 0.76 |
| m_ratio | 0.98 |
| b_ratio | 0.95 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | IgnoreScriptAnalysis | IgnoreScriptAnalysis |
| fullname | OTL::GCommon::IgnoreScriptAnalysis | OTL::GCommon::IgnoreScriptAnalysis |
| refcount | 2 | 2 |
length |
1164 | 1112 |
| called | OTL::FirstLangSysTable ___stack_chk_fail |
OTL::FirstLangSysTable ___stack_chk_fail |
| calling | IgnoreScriptAnalysisForGCommonTable | IgnoreScriptAnalysisForGCommonTable |
| paramcount | 2 | 2 |
address |
1833d45f4 | 1833ab2c8 |
| sig | undefined __swiftcall IgnoreScriptAnalysis(Header * param_1, void * param_2) | undefined __swiftcall IgnoreScriptAnalysis(Header * param_1, void * param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- OTL::GCommon::IgnoreScriptAnalysis
+++ OTL::GCommon::IgnoreScriptAnalysis
@@ -1,200 +1,194 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* OTL::GCommon::IgnoreScriptAnalysis(OTL::GCommon::Header const*, void const*) */
void OTL::GCommon::IgnoreScriptAnalysis(Header *param_1,void *param_2)
{
Header *pHVar1;
Header *pHVar2;
Header *pHVar3;
Header *pHVar4;
Header *pHVar5;
Header *pHVar6;
ulong uVar7;
uint uVar8;
uint uVar9;
Header HVar10;
Header HVar11;
ushort uVar12;
ushort uVar13;
ushort uVar14;
ushort uVar15;
uint uVar16;
bool bVar17;
bool bVar18;
ScriptTable *pSVar19;
ScriptTable *pSVar20;
ulong uVar21;
ulong uVar22;
ulong uVar23;
Header *pHVar24;
long lVar25;
Header *pHVar26;
ulong uVar27;
ulong uVar28;
uint local_a0 [2];
char acStack_98 [48];
long local_68;
local_68 = *_DAT_0;
- if (((param_1 + 10 <= param_2) &&
- ((ushort)(*(ushort *)param_1 >> 8 | *(ushort *)param_1 << 8) < 2)) &&
- ((*(short *)(param_1 + 2) == 0 || (param_1 + 0xe <= param_2)))) {
- uVar12 = *(ushort *)(param_1 + 4);
- if (uVar12 != 0) {
- pHVar5 = param_1 + ((uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8);
- pHVar3 = pHVar5 + 2;
- if (pHVar3 <= param_2) {
- uVar12 = *(ushort *)pHVar5;
- uVar16 = (uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8;
- uVar28 = (ulong)uVar16;
- if (pHVar3 + uVar28 * 6 < pHVar3 || param_2 < pHVar3 + uVar28 * 6) {
- uVar22 = 0;
- if (pHVar5 + 8 <= param_2) {
- uVar22 = (ulong)((long)param_2 - (long)pHVar3) / 6;
- }
- if ((uVar12 == 0) || (uVar22 != uVar28)) goto LAB_1;
+ uVar12 = *(ushort *)(param_1 + 4);
+ if (uVar12 != 0) {
+ pHVar5 = param_1 + ((uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8);
+ pHVar3 = pHVar5 + 2;
+ if (pHVar3 <= param_2) {
+ uVar12 = *(ushort *)pHVar5;
+ uVar16 = (uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8;
+ uVar28 = (ulong)uVar16;
+ if (pHVar3 + uVar28 * 6 < pHVar3 || param_2 < pHVar3 + uVar28 * 6) {
+ uVar22 = 0;
+ if (pHVar5 + 8 <= param_2) {
+ uVar22 = (ulong)((long)param_2 - (long)pHVar3) / 6;
}
- else if (uVar12 == 0) goto LAB_1;
- pSVar19 = (ScriptTable *)
- (pHVar5 + ((uint)(*(ushort *)(pHVar5 + 6) >> 8) |
- (*(ushort *)(pHVar5 + 6) & 0xff00ff) << 8));
- if (param_1 <= pSVar19 + 2 && pSVar19 + 4 <= param_2) {
- uVar22 = 0;
- builtin_strncpy(acStack_98,"inahanakntalnmrarehcroegrbehrnurmago",0x24);
- local_a0 = (uint [2])0x6772656b6379726c;
- uVar8 = uVar16;
- if (uVar16 < 2) {
- uVar8 = 1;
- }
- do {
- uVar9 = *(uint *)(pHVar3 + uVar22 * 6);
- if (uVar9 != 0x544c4644) {
- lVar25 = 0;
- uVar9 = (uVar9 & 0xff00ff00) >> 8 | (uVar9 & 0xff00ff) << 8;
- while (*(uint *)((long)local_a0 + lVar25) != (uVar9 >> 0x10 | uVar9 << 0x10)) {
- lVar25 = lVar25 + 4;
- if (lVar25 == 0x2c) goto LAB_1;
- }
+ if ((uVar12 == 0) || (uVar22 != uVar28)) goto LAB_1;
+ }
+ else if (uVar12 == 0) goto LAB_1;
+ pSVar19 = (ScriptTable *)
+ (pHVar5 + ((uint)(*(ushort *)(pHVar5 + 6) >> 8) |
+ (*(ushort *)(pHVar5 + 6) & 0xff00ff) << 8));
+ if (param_1 <= pSVar19 + 2 && pSVar19 + 4 <= param_2) {
+ uVar22 = 0;
+ builtin_strncpy(acStack_98,"inahanakntalnmrarehcroegrbehrnurmago",0x24);
+ local_a0 = (uint [2])0x6772656b6379726c;
+ uVar8 = uVar16;
+ if (uVar16 < 2) {
+ uVar8 = 1;
+ }
+ do {
+ uVar9 = *(uint *)(pHVar3 + uVar22 * 6);
+ if (uVar9 != 0x544c4644) {
+ lVar25 = 0;
+ uVar9 = (uVar9 & 0xff00ff00) >> 8 | (uVar9 & 0xff00ff) << 8;
+ while (*(uint *)((long)local_a0 + lVar25) != (uVar9 >> 0x10 | uVar9 << 0x10)) {
+ lVar25 = lVar25 + 4;
if (lVar25 == 0x2c) goto LAB_1;
}
- uVar22 = uVar22 + 1;
- } while (uVar22 != uVar8);
- uVar12 = *(ushort *)(param_1 + 6);
- if (uVar12 != 0) {
- pHVar6 = param_1 + ((uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8);
- pHVar4 = pHVar6 + 2;
- if (pHVar4 <= param_2) {
- uVar22 = (ulong)((uint)(*(ushort *)pHVar6 >> 8) | (*(ushort *)pHVar6 & 0xff00ff) << 8)
- ;
- if (pHVar4 + uVar22 * 6 < pHVar4 || param_2 < pHVar4 + uVar22 * 6) {
- uVar23 = 0;
- if (pHVar6 + 8 <= param_2) {
- uVar23 = (ulong)((long)param_2 - (long)pHVar4) / 6;
- }
- if (uVar23 != uVar22) goto LAB_1;
+ if (lVar25 == 0x2c) goto LAB_1;
+ }
+ uVar22 = uVar22 + 1;
+ } while (uVar22 != uVar8);
+ uVar12 = *(ushort *)(param_1 + 6);
+ if (uVar12 != 0) {
+ pHVar6 = param_1 + ((uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8);
+ pHVar4 = pHVar6 + 2;
+ if (pHVar4 <= param_2) {
+ uVar22 = (ulong)((uint)(*(ushort *)pHVar6 >> 8) | (*(ushort *)pHVar6 & 0xff00ff) << 8);
+ if (pHVar4 + uVar22 * 6 < pHVar4 || param_2 < pHVar4 + uVar22 * 6) {
+ uVar23 = 0;
+ if (pHVar6 + 8 <= param_2) {
+ uVar23 = (ulong)((long)param_2 - (long)pHVar4) / 6;
}
- FirstLangSysTable(pSVar19,param_1,param_2);
- if ((pSVar19 != (ScriptTable *)0x0) && (1 < uVar16)) {
- uVar12 = *(ushort *)(pSVar19 + 4);
- uVar16 = (uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8;
- if (uVar16 < 2) {
- uVar16 = 1;
- }
- uVar22 = 1;
- do {
- pSVar20 = (ScriptTable *)
- (pHVar5 + ((uint)(*(ushort *)(pHVar3 + uVar22 * 6 + 4) >> 8) |
- (*(ushort *)(pHVar3 + uVar22 * 6 + 4) & 0xff00ff) << 8));
- if (((param_2 < pSVar20 + 4) ||
- (FirstLangSysTable(pSVar20,param_1,param_2), pSVar20 == (ScriptTable *)0x0))
- || ((uint)*(ushort *)(pSVar20 + 4) != (uint)uVar12)) break;
- if (uVar12 != 0) {
- uVar23 = 0;
+ if (uVar23 != uVar22) goto LAB_1;
+ }
+ FirstLangSysTable(pSVar19,param_1,param_2);
+ if ((pSVar19 != (ScriptTable *)0x0) && (1 < uVar16)) {
+ uVar12 = *(ushort *)(pSVar19 + 4);
+ uVar16 = (uint)(uVar12 >> 8) | (uVar12 & 0xff00ff) << 8;
+ if (uVar16 < 2) {
+ uVar16 = 1;
+ }
+ uVar22 = 1;
+ do {
+ pSVar20 = (ScriptTable *)
+ (pHVar5 + ((uint)(*(ushort *)(pHVar3 + uVar22 * 6 + 4) >> 8) |
+ (*(ushort *)(pHVar3 + uVar22 * 6 + 4) & 0xff00ff) << 8));
+ if (((param_2 < pSVar20 + 4) ||
+ (FirstLangSysTable(pSVar20,param_1,param_2), pSVar20 == (ScriptTable *)0x0)) ||
+ ((uint)*(ushort *)(pSVar20 + 4) != (uint)uVar12)) break;
+ if (uVar12 != 0) {
+ uVar23 = 0;
+ do {
+ uVar8 = (uint)(*(ushort *)(pSVar19 + uVar23 * 2 + 6) >> 8) |
+ (*(ushort *)(pSVar19 + uVar23 * 2 + 6) & 0xff00ff) << 8;
+ pHVar24 = pHVar4 + (ulong)uVar8 * 6;
+ if (pHVar24 < param_1 || param_2 < pHVar24 + 6) goto LAB_1;
+ uVar9 = (uint)(*(ushort *)(pSVar20 + uVar23 * 2 + 6) >> 8) |
+ (*(ushort *)(pSVar20 + uVar23 * 2 + 6) & 0xff00ff) << 8;
+ pHVar26 = pHVar4 + (ulong)uVar9 * 6;
+ if (pHVar26 < param_1 || param_2 < pHVar26 + 6) goto LAB_1;
+ lVar25 = 0;
do {
- uVar8 = (uint)(*(ushort *)(pSVar19 + uVar23 * 2 + 6) >> 8) |
- (*(ushort *)(pSVar19 + uVar23 * 2 + 6) & 0xff00ff) << 8;
- pHVar24 = pHVar4 + (ulong)uVar8 * 6;
- if (pHVar24 < param_1 || param_2 < pHVar24 + 6) goto LAB_1;
- uVar9 = (uint)(*(ushort *)(pSVar20 + uVar23 * 2 + 6) >> 8) |
- (*(ushort *)(pSVar20 + uVar23 * 2 + 6) & 0xff00ff) << 8;
- pHVar26 = pHVar4 + (ulong)uVar9 * 6;
- if (pHVar26 < param_1 || param_2 < pHVar26 + 6) goto LAB_1;
+ pHVar1 = pHVar24 + lVar25;
+ pHVar2 = pHVar26 + lVar25;
+ bVar17 = lVar25 != 3;
+ lVar25 = lVar25 + 1;
+ } while (*pHVar1 == *pHVar2 && bVar17);
+ if (*pHVar1 != *pHVar2) goto LAB_1;
+ uVar13 = *(ushort *)(pHVar4 + (ulong)uVar8 * 6 + 4);
+ uVar8 = (uint)(uVar13 >> 8) | (uVar13 & 0xff00ff) << 8;
+ pHVar24 = pHVar6 + (ulong)uVar8 + 4;
+ if (pHVar6 + (ulong)uVar8 + 2 < param_1 || param_2 < pHVar24)
+ goto LAB_1;
+ uVar14 = *(ushort *)(pHVar6 + (ulong)uVar8 + 2);
+ uVar27 = (ulong)((uint)(uVar14 >> 8) | (uVar14 & 0xff00ff) << 8);
+ uVar7 = 0;
+ if (pHVar6 + (ulong)uVar8 + 6 <= param_2) {
+ uVar7 = (ulong)((long)param_2 - (long)pHVar24) >> 1;
+ }
+ if ((param_2 < pHVar24 + uVar27 * 2 || pHVar24 + uVar27 * 2 < pHVar24) &&
+ uVar7 != uVar27) goto LAB_1;
+ uVar15 = *(ushort *)(pHVar4 + (ulong)uVar9 * 6 + 4);
+ uVar9 = (uint)(uVar15 >> 8) | (uVar15 & 0xff00ff) << 8;
+ pHVar26 = pHVar6 + (ulong)uVar9 + 4;
+ if (pHVar6 + (ulong)uVar9 + 2 < pHVar6 || param_2 < pHVar26) goto LAB_1;
+ uVar21 = (ulong)((uint)(*(ushort *)(pHVar6 + (ulong)uVar9 + 2) >> 8) |
+ (*(ushort *)(pHVar6 + (ulong)uVar9 + 2) & 0xff00ff) << 8);
+ uVar7 = 0;
+ if (pHVar6 + (ulong)uVar9 + 6 <= param_2) {
+ uVar7 = (ulong)((long)param_2 - (long)pHVar26) >> 1;
+ }
+ if ((param_2 < pHVar26 + uVar21 * 2 || pHVar26 + uVar21 * 2 < pHVar26) &&
+ uVar7 != uVar21) goto LAB_1;
+ if ((uint)uVar13 != (uint)uVar15) {
lVar25 = 0;
do {
- pHVar1 = pHVar24 + lVar25;
- pHVar2 = pHVar26 + lVar25;
- bVar17 = lVar25 != 3;
+ HVar10 = (pHVar6 + (ulong)uVar8 + 2)[lVar25];
+ HVar11 = (pHVar6 + (ulong)uVar9 + 2)[lVar25];
+ bVar17 = lVar25 != 1;
lVar25 = lVar25 + 1;
- } while (*pHVar1 == *pHVar2 && bVar17);
- if (*pHVar1 != *pHVar2) goto LAB_1;
- uVar13 = *(ushort *)(pHVar4 + (ulong)uVar8 * 6 + 4);
- uVar8 = (uint)(uVar13 >> 8) | (uVar13 & 0xff00ff) << 8;
- pHVar24 = pHVar6 + (ulong)uVar8 + 4;
- if (pHVar6 + (ulong)uVar8 + 2 < param_1 || param_2 < pHVar24)
- goto LAB_1;
- uVar14 = *(ushort *)(pHVar6 + (ulong)uVar8 + 2);
- uVar27 = (ulong)((uint)(uVar14 >> 8) | (uVar14 & 0xff00ff) << 8);
- uVar7 = 0;
- if (pHVar6 + (ulong)uVar8 + 6 <= param_2) {
- uVar7 = (ulong)((long)param_2 - (long)pHVar24) >> 1;
+ } while (HVar10 == HVar11 && bVar17);
+ if (HVar10 != HVar11) goto LAB_1;
+ if (uVar14 != 0) {
+ do {
+ lVar25 = 0;
+ do {
+ bVar17 = pHVar24[lVar25] == pHVar26[lVar25];
+ bVar18 = lVar25 != 1;
+ lVar25 = lVar25 + 1;
+ } while (bVar17 && bVar18);
+ pHVar24 = pHVar24 + 2;
+ pHVar26 = pHVar26 + 2;
+ } while (pHVar24 != pHVar6 + uVar27 * 2 + (ulong)uVar8 + 4 && bVar17);
+ if (!bVar17) goto LAB_1;
}
- if ((param_2 < pHVar24 + uVar27 * 2 || pHVar24 + uVar27 * 2 < pHVar24) &&
- uVar7 != uVar27) goto LAB_1;
- uVar15 = *(ushort *)(pHVar4 + (ulong)uVar9 * 6 + 4);
- uVar9 = (uint)(uVar15 >> 8) | (uVar15 & 0xff00ff) << 8;
- pHVar26 = pHVar6 + (ulong)uVar9 + 4;
- if (pHVar6 + (ulong)uVar9 + 2 < pHVar6 || param_2 < pHVar26)
- goto LAB_1;
- uVar21 = (ulong)((uint)(*(ushort *)(pHVar6 + (ulong)uVar9 + 2) >> 8) |
- (*(ushort *)(pHVar6 + (ulong)uVar9 + 2) & 0xff00ff) << 8);
- uVar7 = 0;
- if (pHVar6 + (ulong)uVar9 + 6 <= param_2) {
- uVar7 = (ulong)((long)param_2 - (long)pHVar26) >> 1;
- }
- if ((param_2 < pHVar26 + uVar21 * 2 || pHVar26 + uVar21 * 2 < pHVar26) &&
- uVar7 != uVar21) goto LAB_1;
- if ((uint)uVar13 != (uint)uVar15) {
- lVar25 = 0;
- do {
- HVar10 = (pHVar6 + (ulong)uVar8 + 2)[lVar25];
- HVar11 = (pHVar6 + (ulong)uVar9 + 2)[lVar25];
- bVar17 = lVar25 != 1;
- lVar25 = lVar25 + 1;
- } while (HVar10 == HVar11 && bVar17);
- if (HVar10 != HVar11) goto LAB_1;
- if (uVar14 != 0) {
- do {
- lVar25 = 0;
- do {
- bVar17 = pHVar24[lVar25] == pHVar26[lVar25];
- bVar18 = lVar25 != 1;
- lVar25 = lVar25 + 1;
- } while (bVar17 && bVar18);
- pHVar24 = pHVar24 + 2;
- pHVar26 = pHVar26 + 2;
- } while (pHVar24 != pHVar6 + uVar27 * 2 + (ulong)uVar8 + 4 && bVar17);
- if (!bVar17) goto LAB_1;
- }
- }
- uVar23 = uVar23 + 1;
- } while (uVar23 != uVar16);
- }
- uVar22 = uVar22 + 1;
- } while (uVar22 != uVar28);
- }
+ }
+ uVar23 = uVar23 + 1;
+ } while (uVar23 != uVar16);
+ }
+ uVar22 = uVar22 + 1;
+ } while (uVar22 != uVar28);
}
}
}
}
}
}
LAB_1:
if (*_DAT_0 != local_68) {
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address,called |
| ratio | 0.86 |
| i_ratio | 0.37 |
| m_ratio | 0.98 |
| b_ratio | 0.5 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | CopySplicedDescriptorsForRequest | CopySplicedDescriptorsForRequest |
| fullname | TDescriptorSource::CopySplicedDescriptorsForRequest | TDescriptorSource::CopySplicedDescriptorsForRequest |
| refcount | 3 | 3 |
length |
1564 | 1516 |
called |
Expand for full list:_CFArrayCreate |
Expand for full list:_CFArrayCreate |
| calling | TDescriptorSource::CopyDescriptorsForRequest TDescriptorSource::CreateDescriptorForUIFontDesign |
TDescriptorSource::CopyDescriptorsForRequest TDescriptorSource::CreateDescriptorForUIFontDesign |
| paramcount | 7 | 7 |
address |
1834753bc | 18344c098 |
| sig | undefined __swiftcall CopySplicedDescriptorsForRequest(__CFDictionary * param_1, ulong param_2, __CFString * param_3, __CFNumber * param_4, __CFNumber * param_5, CTFontLegibilityWeight param_6, __CFBoolean * param_7) | undefined __swiftcall CopySplicedDescriptorsForRequest(__CFDictionary * param_1, ulong param_2, __CFString * param_3, __CFNumber * param_4, __CFNumber * param_5, CTFontLegibilityWeight param_6, __CFBoolean * param_7) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TDescriptorSource::CopySplicedDescriptorsForRequest called
+++ TDescriptorSource::CopySplicedDescriptorsForRequest called
@@ -22 +21,0 @@
-_CFStringHasPrefix--- TDescriptorSource::CopySplicedDescriptorsForRequest
+++ TDescriptorSource::CopySplicedDescriptorsForRequest
@@ -1,237 +1,230 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* TDescriptorSource::CopySplicedDescriptorsForRequest(__CFDictionary const*, unsigned long,
__CFString const*, __CFNumber const*, __CFNumber const*, CTFontLegibilityWeight, __CFBoolean
const*) const */
void TDescriptorSource::CopySplicedDescriptorsForRequest
(undefined8 *param_1,__CFString *param_2,__CFDictionary *param_3,ulong param_4,
__CFDictionary *param_5,__CFDictionary *param_6,__CFDictionary *param_7,long param_8,
__CFDictionary *param_9)
{
bool bVar1;
byte bVar2;
ulong uVar3;
__CFDictionary *in_tmp_ldXn;
__CFDictionary *p_Var4;
__CFDictionary *p_Var5;
__CFDictionary *p_Var6;
undefined8 uVar7;
__CFString *p_Var8;
undefined1 *puVar9;
- TDescriptorSource *this;
__CFDictionary *p_Var10;
undefined1 *in_xzr;
- __CFDictionary *local_b0;
+ __CFDictionary *local_a8;
long local_90;
undefined8 local_88;
undefined1 *local_80;
undefined1 *local_78;
undefined8 local_70;
if (param_5 == (__CFDictionary *)0x0) {
param_5 = param_3;
- _CFDictionaryGetValue(param_3,0x1000006e7d3f80);
+ _CFDictionaryGetValue(param_3,0x1000006e7da1c0);
}
if (param_6 == (__CFDictionary *)0x0) {
param_6 = param_3;
- _CFDictionaryGetValue(param_3,0x1000006e7d3ea0);
+ _CFDictionaryGetValue(param_3,0x1000006e7da0e0);
}
if (param_7 == (__CFDictionary *)0x0) {
param_7 = param_3;
- _CFDictionaryGetValue(param_3,0x1000006e7d3ec0);
+ _CFDictionaryGetValue(param_3,0x1000006e7da100);
}
p_Var10 = param_3;
- _CFDictionaryGetValue(param_3,0x1000006e7d3ee0);
+ _CFDictionaryGetValue(param_3,0x1000006e7da120);
if (p_Var10 != (__CFDictionary *)0x0) {
p_Var4 = p_Var10;
_CFGetTypeID();
p_Var5 = p_Var4;
_CFNumberGetTypeID();
if (p_Var4 != p_Var5) {
p_Var10 = (__CFDictionary *)0x0;
}
}
if (param_9 == (__CFDictionary *)0x0) {
param_9 = param_3;
- _CFDictionaryGetValue(param_3,0x1000006e7d3f00);
+ _CFDictionaryGetValue(param_3,0x1000006e7da140);
if (param_9 == (__CFDictionary *)0x0) {
param_9 = (__CFDictionary *)0x0;
}
else {
p_Var4 = param_9;
_CFGetTypeID();
p_Var5 = p_Var4;
_CFBooleanGetTypeID();
if (p_Var4 != p_Var5) {
param_9 = (__CFDictionary *)0x0;
}
}
}
local_90 = param_8;
if (p_Var10 != (__CFDictionary *)0x0) {
uVar3 = (ulong)local_70 >> 0x20;
local_70 = (undefined1 *)CONCAT44((int)uVar3,0xaaaaaaaa);
_CFNumberGetValue(p_Var10,9,&local_70);
local_90 = (long)(int)local_70;
}
p_Var10 = param_3;
- _CFDictionaryGetValue(param_3,0x1000006e7d39a0);
+ _CFDictionaryGetValue(param_3,0x1000006e7d9be0);
if (p_Var10 == (__CFDictionary *)0x0) {
LAB_0:
bVar2 = 0;
- local_b0 = (__CFDictionary *)0x0;
+ local_a8 = (__CFDictionary *)0x0;
}
else {
p_Var4 = p_Var10;
_CFGetTypeID();
p_Var5 = p_Var4;
_CFDictionaryGetTypeID();
if (p_Var4 != p_Var5) {
p_Var10 = (__CFDictionary *)0x0;
goto LAB_0;
}
p_Var4 = p_Var10;
_CFDictionaryGetCount();
if (p_Var4 == (__CFDictionary *)0x0) goto LAB_0;
p_Var5 = p_Var10;
- _CFDictionaryGetValue(p_Var10,0x1000006e7c1aa0);
- _CFDictionaryGetValue(p_Var10,0x1000006e7c1ac0);
- local_b0 = p_Var10;
- _CFDictionaryGetValue(p_Var10,0x1000006e7c1b00);
+ _CFDictionaryGetValue(p_Var10,0x1000006e7c7ce0);
+ _CFDictionaryGetValue(p_Var10,0x1000006e7c7d00);
+ local_a8 = p_Var10;
+ _CFDictionaryGetValue(p_Var10,0x1000006e7c7d40);
p_Var6 = p_Var10;
- _CFDictionaryGetValue(p_Var10,0x1000006e7c1b20);
+ _CFDictionaryGetValue(p_Var10,0x1000006e7c7d60);
if (p_Var4 == (__CFDictionary *)0x1) {
- if (((p_Var5 == (__CFDictionary *)0x0) && (local_b0 == (__CFDictionary *)0x0)) &&
+ if (((p_Var5 == (__CFDictionary *)0x0) && (local_a8 == (__CFDictionary *)0x0)) &&
(p_Var6 == (__CFDictionary *)0x0)) {
- local_b0 = (__CFDictionary *)0x0;
+ local_a8 = (__CFDictionary *)0x0;
}
else {
p_Var10 = (__CFDictionary *)0x0;
}
bVar2 = 1;
}
else {
bVar2 = 0;
}
}
- _CFDictionaryGetValue(param_3,0x1000006e7d4100);
- _CFDictionaryGetValue(param_3,0x1000006e7d3fa0);
+ _CFDictionaryGetValue(param_3,0x1000006e7da340);
+ _CFDictionaryGetValue(param_3,0x1000006e7da1e0);
p_Var4 = param_3;
GetPostScriptNameAndAttribute(param_3);
p_Var5 = param_3;
- _CFDictionaryGetValue(param_3,0x1000006e7d3f40);
+ _CFDictionaryGetValue(param_3,0x1000006e7da180);
if (p_Var5 == (__CFDictionary *)0x0) {
if (p_Var4 == (__CFDictionary *)0x0) {
_os_unfair_lock_lock_with_options(&sSplicedFontsLock,0x50000);
EnsureSplicedFontStash();
- if (local_b0 == (__CFDictionary *)0x0) {
- _CFDictionaryGetValue(param_3,0x1000006e7d3920);
+ if (local_a8 == (__CFDictionary *)0x0) {
+ _CFDictionaryGetValue(param_3,0x1000006e7d9b60);
}
else {
- param_3 = local_b0;
- GetUIFontFamilyNameForDesign((__CFString *)local_b0);
+ param_3 = local_a8;
+ GetUIFontFamilyNameForDesign((__CFString *)local_a8);
}
if (param_3 != (__CFDictionary *)0x0) {
local_70 = &SUB_1;
p_Var8 = (__CFString *)param_3;
FontNamesForFamily((__CFString *)param_3,&local_70);
if (p_Var8 != (__CFString *)0x0) {
puVar9 = (undefined1 *)*_DAT_2;
_CFArrayCreateMutable(puVar9,local_70,_DAT_3);
local_78 = puVar9;
if (local_70 == (undefined1 *)0x0) {
LAB_4:
LOAcquire();
LORelease();
*param_1 = local_78;
local_78 = in_xzr;
}
else {
puVar9 = (undefined1 *)0x0;
do {
local_80 = &SUB_1;
CopySpliceFontForName
(&local_80,*(undefined8 *)(p_Var8 + (long)puVar9 * 8),param_5,param_6,
param_7,local_90,param_9,0,0,0,0,0,0,0);
if (in_tmp_ldXn != (__CFDictionary *)0x0) {
p_Var10 = in_tmp_ldXn;
_objc_retain(in_tmp_ldXn);
_CFArrayAppendValue(in_tmp_ldXn,p_Var10);
_objc_release(p_Var10);
}
_objc_release(local_80);
puVar9 = puVar9 + 1;
} while (puVar9 < local_70);
if (local_70 < (undefined1 *)0x2) goto LAB_4;
local_80 = &SUB_1;
- this = (TDescriptorSource *)&local_80;
TCFMutableDictionary::TCFMutableDictionary
- ((TCFMutableDictionary *)this,(__CFDictionary *)&local_80);
- _CFDictionaryRemoveValue(in_tmp_ldXn,0x1000006e7d3920);
+ ((TCFMutableDictionary *)local_a8,(__CFDictionary *)&local_80);
+ _CFDictionaryRemoveValue(in_tmp_ldXn,0x1000006e7d9b60);
bVar1 = (bool)(bVar2 ^ 1);
- if (local_b0 == (__CFDictionary *)0x0) {
+ if (local_a8 == (__CFDictionary *)0x0) {
bVar1 = true;
}
if (!bVar1) {
- _CFDictionaryRemoveValue(in_tmp_ldXn,0x1000006e7d39a0);
- }
- if ((gVisibleSystemFontsEnabled == '\x01') &&
- ((param_3 == (__CFDictionary *)0x1000006e7c45c0 ||
- (_CFStringHasPrefix(), (int)param_3 != 0)))) {
- _CFDictionaryRemoveValue(&local_80,in_tmp_ldXn,0x1000006e7d3a40);
+ _CFDictionaryRemoveValue(in_tmp_ldXn,0x1000006e7d9be0);
}
p_Var10 = in_tmp_ldXn;
_CFDictionaryGetCount();
if (p_Var10 == (__CFDictionary *)0x0) {
_objc_release(local_80);
goto LAB_4;
}
CopyDescriptorsForRequestFromArray
- (this,(__CFArray *)&local_88,in_tmp_ldXn,
+ ((TDescriptorSource *)local_a8,(__CFArray *)&local_88,in_tmp_ldXn,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)in_tmp_ldXn,0,
(bool)((byte)param_4 | 0x43));
LOAcquire();
LORelease();
*param_1 = local_88;
_objc_release(in_xzr);
_objc_release(local_80);
}
_objc_release(local_78);
goto LAB_5;
}
- if (local_b0 != (__CFDictionary *)0x0) {
+ if (local_a8 != (__CFDictionary *)0x0) {
CopyMatchingDescriptorsForFamily
(param_2,(ulong)param_3,
(_func_CFComparisonResult_void_ptr_void_ptr_void_ptr *)(param_4 | 0x451));
goto LAB_5;
}
}
*param_1 = 0;
LAB_5:
_os_unfair_lock_unlock(&sSplicedFontsLock);
return;
}
}
else {
FindFontNameForTextStyle
((__CFString *)p_Var5,p_Var10,(bool *)0x0,(__CFString **)0x0,(__CFString **)0x0);
p_Var4 = p_Var5;
if (p_Var5 == (__CFDictionary *)0x0) goto LAB_6;
}
local_78 = &SUB_1;
CopySplicedDescriptorForName((TDescriptorSource *)&local_78,&local_78,param_2,p_Var4);
if (in_tmp_ldXn != (__CFDictionary *)0x0) {
uVar7 = *_DAT_2;
_CFArrayCreate(uVar7,&local_70,1,_DAT_3);
*param_1 = uVar7;
_objc_release(local_78);
return;
}
_objc_release(local_78);
LAB_6:
*param_1 = 0;
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address,calling,called |
| ratio | 0.41 |
| i_ratio | 0.62 |
| m_ratio | 0.98 |
| b_ratio | 0.88 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | PositionRuns | PositionRuns |
| fullname | TOpenTypePositioningEngine::PositionRuns | TOpenTypePositioningEngine::PositionRuns |
| refcount | 3 | 3 |
length |
4096 | 3952 |
called |
Expand for full list:OTL::GPOS::ApplyPairPosAccelerated |
Expand for full list:OTL::GPOS::ApplyPairPosAccelerated |
calling |
TKerningEngine::PositionGlyphs TKerningEngine::PositionGlyphs |
TKerningEngine::PositionGlyphs TKerningEngine::PositionGlyphs |
| paramcount | 3 | 3 |
address |
1833ca95c | 1833a0974 |
| sig | undefined __thiscall PositionRuns(TOpenTypePositioningEngine * this, SyncState * param_1, KerningStatus * param_2) | undefined __thiscall PositionRuns(TOpenTypePositioningEngine * this, SyncState * param_1, KerningStatus * param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TOpenTypePositioningEngine::PositionRuns called
+++ TOpenTypePositioningEngine::PositionRuns called
@@ -21,0 +22 @@
+ZeroCombiningMarkWidths
@@ -23,2 +23,0 @@
-ZeroMarkWidths
-_CFStringHasPrefix
@@ -28,2 +26,0 @@
-_objc_release
-_objc_retain--- TOpenTypePositioningEngine::PositionRuns
+++ TOpenTypePositioningEngine::PositionRuns
@@ -1,1038 +1,1020 @@
-/* WARNING: Heritage AFTER dead removal. Example location: x0 : 0x0001833caea4 */
+/* WARNING: Heritage AFTER dead removal. Example location: x0 : 0x0001833a0ea8 */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: register */
/* TOpenTypePositioningEngine::PositionRuns(SyncState&, KerningStatus&) */
undefined8 __thiscall
TOpenTypePositioningEngine::PositionRuns
(TOpenTypePositioningEngine *this,SyncState *param_1,KerningStatus *param_2)
{
- int iVar1;
- uint uVar2;
- short sVar3;
- ushort uVar4;
- bool bVar5;
- byte bVar6;
- double *pdVar7;
- qword qVar8;
- qword qVar9;
- undefined *puVar10;
+ uint uVar1;
+ int iVar2;
+ uint ******ppppppuVar3;
+ uint uVar4;
+ ushort uVar5;
+ bool bVar6;
+ byte bVar7;
+ double *pdVar8;
+ undefined1 *puVar9;
+ uint *******pppppppuVar10;
SyncState *pSVar11;
code *pcVar12;
bool bVar13;
- cfstringStruct *in_tmp_ldXn;
- TRunGlue *pTVar14;
- void *pvVar15;
- void *pvVar16;
- undefined8 uVar17;
- Lookup *pLVar18;
+ undefined8 uVar14;
+ TRunGlue *pTVar15;
+ uint *******pppppppuVar16;
+ void *pvVar17;
+ void *pvVar18;
Lookup *pLVar19;
- FeatureBuffer *pFVar20;
+ Lookup *pLVar20;
+ uint *******pppppppuVar21;
+ FeatureBuffer *pFVar22;
+ undefined8 uVar23;
int *in_x2;
- size_t sVar21;
- SyncState SVar22;
- int iVar23;
- uint uVar24;
- ulong uVar25;
- cfstringStruct *pcVar26;
- long lVar27;
- cfstringStruct *pcVar28;
- undefined1 *puVar29;
- qword *pqVar30;
- GPOS *pGVar31;
- uint uVar32;
- ulong uVar33;
- bool bVar34;
- long *plVar35;
- cfstringStruct *pcVar36;
+ size_t sVar24;
+ SyncState SVar25;
+ short sVar26;
+ int iVar27;
+ ulong uVar28;
+ long *plVar29;
+ long lVar30;
+ long *plVar31;
+ GPOS *pGVar32;
+ uint uVar33;
+ ulong uVar34;
+ bool bVar35;
+ long *plVar36;
long *plVar37;
- ulong uVar38;
- cfstringStruct *pcVar39;
- cfstringStruct *pcVar40;
+ uint ******ppppppuVar38;
+ long *plVar39;
+ long *plVar40;
undefined8 uVar41;
- uint *puVar42;
- uint uVar43;
- ulong uVar44;
- FeatureBuffer *pFVar45;
- SyncState *pSVar46;
+ uint uVar42;
+ ulong uVar43;
+ FeatureBuffer *pFVar44;
+ SyncState *pSVar45;
+ long lVar46;
SyncState *pSVar47;
- cfstringStruct *pcVar48;
- long lVar49;
+ uint *******pppppppuVar48;
+ long *plVar49;
long lVar50;
- long lVar51;
- undefined2 uVar52;
- float fVar53;
- double dVar54;
+ uint ******ppppppuVar51;
+ long lVar52;
+ undefined2 uVar53;
+ float fVar54;
double dVar55;
double dVar56;
double dVar57;
double dVar58;
+ double dVar59;
uint local_f40 [2];
undefined8 uStack_f38;
undefined8 uStack_f30;
undefined8 uStack_f28;
undefined8 local_f20;
undefined8 uStack_f18;
undefined8 uStack_f10;
undefined8 uStack_f08;
- cfstringStruct **local_f00;
- cfstringStruct local_ef8;
+ uint *******local_f00;
+ uint *******local_ef8;
+ uint *******local_ef0;
+ uint *******local_ee8;
+ uint ******local_ee0;
undefined1 *puStack_ed8;
undefined1 *puStack_ed0;
undefined1 *puStack_ec8;
undefined1 *local_ec0;
undefined1 *puStack_eb8;
undefined1 *local_eb0;
undefined1 *puStack_ea8;
undefined1 *local_ea0;
undefined1 *puStack_e98;
undefined1 *local_e90;
undefined1 *puStack_e88;
undefined1 *local_e80;
undefined1 *puStack_e78;
undefined1 *local_e70;
undefined1 *puStack_e68;
undefined1 *local_e60;
undefined1 *puStack_e58;
undefined1 *local_e50;
undefined1 *puStack_e48;
undefined1 *local_e40;
undefined1 *puStack_e38;
undefined1 *local_e30;
undefined1 *puStack_e28;
undefined1 *local_e20;
undefined1 *puStack_e18;
undefined1 *local_e10;
undefined1 *puStack_e08;
undefined1 *local_e00;
undefined1 *puStack_df8;
- cfstringStruct local_df0 [90];
- long *local_2b0;
+ uint *******local_df0 [360];
+ uint ******local_2b0;
undefined *local_2a8;
- cfstringStruct **local_2a0;
+ uint *******local_2a0;
undefined **local_290;
- cfstringStruct local_288;
+ uint ******local_288;
+ uint ******local_280;
+ undefined8 local_278;
+ undefined1 *local_270;
undefined1 *puStack_268;
undefined1 *local_260;
undefined1 *puStack_258;
undefined1 *local_250;
undefined1 *puStack_248;
undefined1 *local_240;
undefined1 *puStack_238;
undefined1 *local_230;
undefined1 *puStack_228;
undefined1 *local_220;
undefined1 *puStack_218;
undefined1 *local_210;
undefined1 *puStack_208;
undefined1 *local_200;
- long *local_1f8;
- cfstringStruct *local_1f0;
- cfstringStruct *pcStack_1e8;
- cfstringStruct *local_1e0;
- cfstringStruct *pcStack_1d8;
- long *local_1d0;
+ undefined1 **local_1f8;
+ uint *******local_1f0;
+ uint *******pppppppuStack_1e8;
+ uint *******local_1e0;
+ uint *******pppppppuStack_1d8;
+ uint *******local_1d0;
int local_158;
- cfstringStruct local_148;
- cfstringStruct *pcStack_128;
- cfstringStruct *local_120;
+ uint *******local_148;
+ undefined8 local_140;
+ undefined1 *puStack_138;
+ undefined1 *local_130;
+ uint *******pppppppuStack_128;
+ uint *******local_120;
undefined1 *puStack_118;
undefined1 *local_110;
undefined1 *puStack_108;
Lookup *local_100;
undefined1 *puStack_f8;
undefined1 *local_f0;
undefined1 *puStack_e8;
undefined1 *local_e0;
undefined1 *puStack_d8;
undefined1 *local_d0;
undefined1 *puStack_c8;
undefined1 *local_c0;
undefined1 *puStack_b8;
undefined1 *local_b0;
undefined1 *puStack_a8;
- long *local_a0;
+ undefined1 **local_a0;
long local_98;
local_98 = *_DAT_0;
uVar41 = *(undefined8 *)(*(long *)param_1 + 0x70);
*(SyncState **)(*(long *)param_1 + 0x70) = param_1 + 0xe8;
uStack_f18 = 0;
local_f20 = 0;
uStack_f08 = 0;
uStack_f10 = 0;
uStack_f38 = 0;
local_f40 = (uint [2])0x0;
uStack_f28 = 0;
uStack_f30 = 0;
if (((byte)param_1[0xd8] & 1) == 0) {
if ((*(uint *)(param_1 + 0x18) | 0x20) == 0x22) {
- local_ef8.field3_0x18 = (long)&DAT_1;
- local_ef8.field1_0x8 = *(qword *)(param_1 + 0xe0);
- local_ef8.field2_0x10 = *(undefined **)param_1;
- local_ef8.field0_0x0 = (qword)&DAT_2;
- if ((cfstringStruct *)local_ef8.field1_0x8 != (cfstringStruct *)0x0) {
+ local_ee0 = (uint ******)&DAT_1;
+ local_ef0 = *(uint ********)(param_1 + 0xe0);
+ local_ee8 = *(uint ********)param_1;
+ local_ef8 = (uint *******)&DAT_2;
+ if (local_ef0 != (uint *******)0x0) {
(*(code *)&SUB_3)(&local_ef8);
}
- uVar17 = 1;
+ uVar14 = 1;
*param_2 = (KerningStatus)0x1;
goto LAB_4;
}
goto LAB_5;
}
- iVar1 = *(int *)(param_1 + 0x18);
- if ((*(uint *)(param_1 + 200) != *(uint *)(param_1 + 0x1c)) || (0x24 < iVar1 - 2U)) {
+ iVar2 = *(int *)(param_1 + 0x18);
+ if ((*(uint *)(param_1 + 200) != *(uint *)(param_1 + 0x1c)) || (0x24 < iVar2 - 2U)) {
LAB_6:
local_f40 = (uint [2])0x626c776d6162766d;
- SVar22 = (SyncState)0x1;
+ SVar25 = (SyncState)0x1;
bVar13 = true;
- if ((iVar1 == -1) || (iVar1 == 0x19)) {
+ if ((iVar2 == -1) || (iVar2 == 0x19)) {
LAB_7:
- bVar5 = bVar13;
- if (((byte)SVar22 & 1) == 0) {
+ bVar6 = bVar13;
+ if (((byte)SVar25 & 1) == 0) {
LAB_8:
std::__throw_bad_optional_access_abi_fn200100_();
goto LAB_9;
}
goto LAB_10;
}
FirstBlockForScript(*(uint *)(param_1 + 0x1c),(bool *)0x0);
- SVar22 = param_1[0xd8];
- if ((cfstringStruct *)local_ef8.field0_0x0 == (cfstringStruct *)0x0) {
+ SVar25 = param_1[0xd8];
+ if (local_ef8 == (uint *******)0x0) {
bVar13 = true;
goto LAB_7;
}
- if (((byte)SVar22 & 1) == 0) goto LAB_8;
- goto code_r0x0001833caaec;
- }
- bVar34 = false;
- SVar22 = (SyncState)0x1;
- bVar5 = true;
+ if (((byte)SVar25 & 1) == 0) goto LAB_8;
+ goto code_r0x0001833a0b04;
+ }
+ bVar35 = false;
+ SVar25 = (SyncState)0x1;
+ bVar6 = true;
bVar13 = false;
- switch(iVar1) {
+ switch(iVar2) {
case 3:
case 5:
case 6:
case 7:
case 8:
case 9:
case 0xb:
case 0xc:
case 0xd:
case 0xe:
case 0x11:
case 0x13:
case 0x14:
case 0x16:
case 0x18:
case 0x19:
case 0x1b:
case 0x1d:
case 0x1e:
case 0x20:
case 0x21:
case 0x25:
goto LAB_6;
case 4:
case 10:
case 0xf:
case 0x10:
case 0x15:
case 0x1a:
case 0x1f:
case 0x23:
case 0x24:
- goto code_r0x0001833caa14;
+ goto code_r0x0001833a0a2c;
case 0x12:
goto LAB_7;
case 0x17:
- bVar5 = false;
+ bVar6 = false;
local_f40[0]._0_1_ = 'm';
local_f40[0]._1_1_ = 'v';
local_f40[0]._2_1_ = 'b';
local_f40[0]._3_1_ = 'a';
local_f40[1]._0_1_ = 'm';
local_f40[1]._1_1_ = 'w';
local_f40[1]._2_1_ = 'l';
local_f40[1]._3_1_ = 'b';
default:
LAB_10:
break;
case 0x1c:
- bVar34 = true;
-code_r0x0001833caa14:
+ bVar35 = true;
+code_r0x0001833a0a2c:
local_f40 = (uint [2])0x626c776d6162766d;
- if (bVar34) {
-code_r0x0001833caaec:
+ if (bVar35) {
+code_r0x0001833a0b04:
if (*(long *)(param_1 + 0x28) == 0) goto LAB_11;
- pTVar14 = *(TRunGlue **)param_1;
- ZeroMarkWidths(pTVar14,(GDEF *)(param_1 + 0x28));
- bVar5 = false;
- *param_2 = (KerningStatus)((byte)*param_2 | (byte)pTVar14);
+ uVar14 = *(undefined8 *)param_1;
+ ZeroMarkWidths(uVar14,param_1 + 0x28);
+ bVar6 = false;
+ *param_2 = (KerningStatus)((byte)*param_2 | (byte)uVar14);
}
else {
LAB_11:
- bVar5 = false;
- }
- }
- pFVar45 = (FeatureBuffer *)(param_1 + 0x80);
+ bVar6 = false;
+ }
+ }
+ pFVar44 = (FeatureBuffer *)(param_1 + 0x80);
if (((*(long *)(param_1 + 0xb0) == 0) || (*(short **)(param_1 + 0xb8) == (short *)0x0)) ||
(**(short **)(param_1 + 0xb8) == 0)) {
- if (bVar5) {
+ if (bVar6) {
if ((*(int *)(param_1 + 0x18) == 0x13) || (*(int *)(param_1 + 0x18) == 2)) {
- pTVar14 = *(TRunGlue **)param_1;
- ZeroMarkWidths(pTVar14,(void *)0x0,
- ZeroCombiningMarkWidths(TRunGlue&)::$_0::__invoke(void*,TRunGlue::TGlyph_);
- bVar6 = (byte)pTVar14;
+ pTVar15 = *(TRunGlue **)param_1;
+ ZeroCombiningMarkWidths(pTVar15);
+ bVar7 = (byte)pTVar15;
}
else {
lVar50 = *(long *)(*(long *)(param_1 + 8) + 0x198);
TBaseFont::GetCommonTable((TBaseFont *)param_2,(uint)lVar50,(uint *)0x6b65726e);
if (lVar50 != 0) goto LAB_5;
- pTVar14 = *(TRunGlue **)param_1;
- ZeroMarkWidths(pTVar14,(GDEF *)(param_1 + 0x28));
- bVar6 = (byte)pTVar14;
- }
- *param_2 = (KerningStatus)((byte)*param_2 | bVar6);
+ uVar14 = *(undefined8 *)param_1;
+ ZeroMarkWidths(uVar14,param_1 + 0x28);
+ bVar7 = (byte)uVar14;
+ }
+ *param_2 = (KerningStatus)((byte)*param_2 | bVar7);
*in_x2 = 2;
}
LAB_5:
- uVar17 = 1;
+ uVar14 = 1;
goto LAB_4;
}
- local_1f8 = &local_288.field3_0x18;
+ local_1f8 = &local_270;
puStack_208 = &SUB_12;
local_210 = &SUB_12;
puStack_218 = &SUB_12;
local_220 = &SUB_12;
puStack_228 = &SUB_12;
local_230 = &SUB_12;
puStack_238 = &SUB_12;
local_240 = &SUB_12;
puStack_248 = &SUB_12;
local_250 = &SUB_12;
puStack_258 = &SUB_12;
local_260 = &SUB_12;
puStack_268 = &SUB_12;
- local_288.field3_0x18 = (long)&SUB_12;
+ local_270 = &SUB_12;
local_200 = &SUB_12;
- local_288.field2_0x10 = (undefined *)0x0;
- local_288.field0_0x0 = 0;
- local_288.field1_0x8 = 0;
+ local_278 = 0;
+ local_288 = (uint ******)0x0;
+ local_280 = (uint ******)0x0;
lVar50 = *(long *)(param_1 + 8);
- uVar25 = (long)*(int *)(param_1 + 0x18) + 0x9e3779b9;
- uVar25 = (ulong)*(uint *)(param_1 + 0x20) + uVar25 * 0x40 + (uVar25 >> 2) + 0x9e3779b9 ^ uVar25;
- pcVar48 = (cfstringStruct *)((long)*in_x2 + uVar25 * 0x40 + (uVar25 >> 2) + 0x9e3779b9 ^ uVar25);
+ uVar28 = (long)*(int *)(param_1 + 0x18) + 0x9e3779b9;
+ uVar28 = (ulong)*(uint *)(param_1 + 0x20) + uVar28 * 0x40 + (uVar28 >> 2) + 0x9e3779b9 ^ uVar28;
+ plVar49 = (long *)((long)*in_x2 + uVar28 * 0x40 + (uVar28 >> 2) + 0x9e3779b9 ^ uVar28);
_os_unfair_lock_lock_with_options(lVar50 + 0xd0,0x50000);
- pcVar26 = *(cfstringStruct **)(lVar50 + 0x108);
- if (pcVar26 != (cfstringStruct *)0x0) {
- uVar17 = CONCAT17(POPCOUNT((char)((ulong)pcVar26 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)pcVar26 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)pcVar26 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)pcVar26 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)pcVar26 >> 0x18)),
- CONCAT12(POPCOUNT((char)((ulong)pcVar26 >>
+ plVar29 = *(long **)(lVar50 + 0x108);
+ if (plVar29 != (long *)0x0) {
+ uVar14 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar29 >> 0x18)),
+ CONCAT12(POPCOUNT((char)((ulong)plVar29 >>
0x10)),
CONCAT11(POPCOUNT((char)((ulong)
- pcVar26 >> 8)),POPCOUNT((char)pcVar26))))))));
- uVar52 = NEON_uaddlv(uVar17,1);
- uVar25 = CONCAT62((int6)((ulong)uVar17 >> 0x10),uVar52) & 0xffffffff;
- if (uVar25 < 2) {
- pcVar28 = (cfstringStruct *)((ulong)pcVar48 & (ulong)((long)&pcVar26[-1].field3_0x18 + 7));
+ plVar29 >> 8)),POPCOUNT((char)plVar29))))))));
+ uVar53 = NEON_uaddlv(uVar14,1);
+ uVar28 = CONCAT62((int6)((ulong)uVar14 >> 0x10),uVar53) & 0xffffffff;
+ if (uVar28 < 2) {
+ plVar31 = (long *)((ulong)plVar49 & (long)plVar29 - 1U);
}
else {
- pcVar28 = pcVar48;
- if (pcVar26 <= pcVar48) {
- uVar44 = 0;
- if (pcVar26 != (cfstringStruct *)0x0) {
- uVar44 = (ulong)pcVar48 / (ulong)pcVar26;
- }
- pcVar28 = (cfstringStruct *)((long)pcVar48 - uVar44 * (long)pcVar26);
- }
- }
- plVar35 = *(long **)(*(long *)(lVar50 + 0x100) + (long)pcVar28 * 8);
- if ((plVar35 != (long *)0x0) && (plVar35 = (long *)*plVar35, plVar35 != (long *)0x0)) {
+ plVar31 = plVar49;
+ if (plVar29 <= plVar49) {
+ uVar43 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar43 = (ulong)plVar49 / (ulong)plVar29;
+ }
+ plVar31 = (long *)((long)plVar49 - uVar43 * (long)plVar29);
+ }
+ }
+ plVar36 = *(long **)(*(long *)(lVar50 + 0x100) + (long)plVar31 * 8);
+ if ((plVar36 != (long *)0x0) && (plVar36 = (long *)*plVar36, plVar36 != (long *)0x0)) {
do {
- pcVar39 = (cfstringStruct *)plVar35[1];
- if (pcVar39 == pcVar48) {
- if ((cfstringStruct *)plVar35[2] == pcVar48) {
+ plVar39 = (long *)plVar36[1];
+ if (plVar39 == plVar49) {
+ if ((long *)plVar36[2] == plVar49) {
std::
vector<std::pair<unsigned_short,unsigned_short>,TInlineBufferAllocator<std::pair<unsigned_short,unsigned_short>,30ul>>
::
__assign_with_size_abi_fn200100_<std::__wrap_iter<std::pair<unsigned_short,unsigned_short>*>,std::__wrap_iter<std::pair<unsigned_short,unsigned_short>*>>
((vector<std::pair<unsigned_short,unsigned_short>,TInlineBufferAllocator<std::pair<unsigned_short,unsigned_short>,30ul>>
- *)param_2,&local_288,plVar35[3],plVar35[4],plVar35[4] - plVar35[3] >> 2);
- *in_x2 = (int)plVar35[0x16];
- pcVar26 = pcVar48;
+ *)param_2,&local_288,plVar36[3],plVar36[4],plVar36[4] - plVar36[3] >> 2);
+ *in_x2 = (int)plVar36[0x16];
goto LAB_13;
}
}
else {
- if (uVar25 < 2) {
- pcVar39 = (cfstringStruct *)
- ((ulong)pcVar39 & (ulong)((long)&pcVar26[-1].field3_0x18 + 7));
+ if (uVar28 < 2) {
+ plVar39 = (long *)((ulong)plVar39 & (long)plVar29 - 1U);
}
- else if (pcVar26 <= pcVar39) {
- uVar44 = 0;
- if (pcVar26 != (cfstringStruct *)0x0) {
- uVar44 = (ulong)pcVar39 / (ulong)pcVar26;
- }
- pcVar39 = (cfstringStruct *)((long)pcVar39 - uVar44 * (long)pcVar26);
+ else if (plVar29 <= plVar39) {
+ uVar43 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar43 = (ulong)plVar39 / (ulong)plVar29;
+ }
+ plVar39 = (long *)((long)plVar39 - uVar43 * (long)plVar29);
}
- if (pcVar39 != pcVar28) break;
- }
- plVar35 = (long *)*plVar35;
- } while (plVar35 != (long *)0x0);
+ if (plVar39 != plVar31) break;
+ }
+ plVar36 = (long *)*plVar36;
+ } while (plVar36 != (long *)0x0);
}
}
puStack_a8 = &SUB_12;
local_b0 = &SUB_12;
- pcVar26 = &local_ef8;
puStack_b8 = &SUB_12;
local_c0 = &SUB_12;
- local_a0 = &local_148.field3_0x18;
+ local_a0 = &local_130;
puStack_c8 = &SUB_12;
local_d0 = &SUB_12;
puStack_d8 = &SUB_12;
local_e0 = &SUB_12;
puStack_e8 = &SUB_12;
local_f0 = &SUB_12;
puStack_f8 = &SUB_12;
local_100 = (Lookup *)&SUB_12;
puStack_108 = &SUB_12;
local_110 = &SUB_12;
puStack_118 = &SUB_12;
- local_120 = (cfstringStruct *)&SUB_12;
- pcStack_128 = (cfstringStruct *)&SUB_12;
- local_148.field3_0x18 = (long)&SUB_12;
- local_148.field0_0x0 = 0;
- local_148.field1_0x8 = 0;
- local_148.field2_0x10 = (undefined1 *)0x0;
- OTL::GCommon::GetFeatures((GCommon *)param_2,(FeatureList *)pFVar45);
+ local_120 = (uint *******)&SUB_12;
+ pppppppuStack_128 = (uint *******)&SUB_12;
+ local_130 = &SUB_12;
+ local_148 = (uint *******)0x0;
+ local_140 = 0;
+ puStack_138 = (undefined1 *)0x0;
+ OTL::GCommon::GetFeatures((GCommon *)param_2,(FeatureList *)pFVar44);
puStack_df8 = &SUB_12;
local_e00 = &SUB_12;
- plVar35 = &local_ef8.field3_0x18;
puStack_e08 = &SUB_12;
local_e10 = &SUB_12;
puStack_e18 = &SUB_12;
local_e20 = &SUB_12;
puStack_e28 = &SUB_12;
local_e30 = &SUB_12;
puStack_e38 = &SUB_12;
local_e40 = &SUB_12;
puStack_e48 = &SUB_12;
local_e50 = &SUB_12;
puStack_e58 = &SUB_12;
local_e60 = &SUB_12;
puStack_e68 = &SUB_12;
local_e70 = &SUB_12;
puStack_e78 = &SUB_12;
local_e80 = &SUB_12;
puStack_e88 = &SUB_12;
local_e90 = &SUB_12;
puStack_e98 = &SUB_12;
local_ea0 = &SUB_12;
puStack_ea8 = &SUB_12;
local_eb0 = &SUB_12;
puStack_eb8 = &SUB_12;
local_ec0 = &SUB_12;
puStack_ed8 = &SUB_12;
- local_ef8.field3_0x18 = (long)&SUB_12;
+ local_ee0 = (uint ******)&SUB_12;
puStack_ec8 = &SUB_12;
puStack_ed0 = &SUB_12;
- local_ef8.field1_0x8 = 0;
- local_ef8.field2_0x10 = (undefined *)0x0;
- local_ef8.field0_0x0 = 0;
- pcVar28 = &local_148;
- local_df0[0].field0_0x0 = (qword)plVar35;
- OTL::FeatureList::StripMissingFeaturesFrom((FeatureList *)param_2,(uint *)pcVar28);
- if ((int)pcVar28 != 0) {
- lVar51 = 0;
- pcVar39 = pcVar28;
+ local_ef0 = (uint *******)0x0;
+ local_ee8 = (uint *******)0x0;
+ local_ef8 = (uint *******)0x0;
+ pppppppuVar16 = (uint *******)&local_148;
+ local_df0[0] = &local_ee0;
+ OTL::FeatureList::StripMissingFeaturesFrom((FeatureList *)param_2,(uint *)pppppppuVar16);
+ if ((int)pppppppuVar16 != 0) {
+ lVar52 = 0;
+ pppppppuVar48 = pppppppuVar16;
do {
- uVar32 = *(uint *)((long)local_f40 + lVar51);
- pcVar28 = pcVar39;
- if (uVar32 == 0) break;
- if (local_ef8.field1_0x8 < local_ef8.field2_0x10) {
- *(uint *)(qword *)local_ef8.field1_0x8 = uVar32;
- *(uint *)((long)(qword *)local_ef8.field1_0x8 + 4) = 1;
- pcVar26 = (cfstringStruct *)(local_ef8.field1_0x8 + 8);
+ uVar33 = *(uint *)((long)local_f40 + lVar52);
+ pppppppuVar16 = pppppppuVar48;
+ if (uVar33 == 0) break;
+ if (local_ef0 < local_ee8) {
+ *(uint *)local_ef0 = uVar33;
+ *(uint *)((long)local_ef0 + 4) = 1;
+ pppppppuVar48 = local_ef0 + 1;
}
else {
- sVar21 = local_ef8.field1_0x8 - local_ef8.field0_0x0;
- lVar49 = (long)sVar21 >> 3;
- uVar25 = lVar49 + 1;
- if (uVar25 >> 0x3d != 0) {
+ sVar24 = (long)local_ef0 - (long)local_ef8;
+ lVar46 = (long)sVar24 >> 3;
+ uVar28 = lVar46 + 1;
+ if (uVar28 >> 0x3d != 0) {
/* WARNING: Subroutine does not return */
std::
vector<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,TInlineBufferAllocator<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,4ul>>
::__throw_length_error_abi_fn200100_();
}
- uVar44 = (long)((long)local_ef8.field2_0x10 - local_ef8.field0_0x0) >> 2;
- if (uVar44 <= uVar25) {
- uVar44 = uVar25;
- }
- if (0x7ffffffffffffff7 < (long)local_ef8.field2_0x10 - local_ef8.field0_0x0) {
- uVar44 = 0x1fffffffffffffff;
- }
- lVar27 = lVar49;
- local_1d0 = plVar35;
- if (uVar44 == 0) {
- pcVar28 = (cfstringStruct *)0x0;
- pcVar26 = (cfstringStruct *)local_df0[0].field0_0x0;
+ uVar43 = (long)local_ee8 - (long)local_ef8 >> 2;
+ if (uVar43 <= uVar28) {
+ uVar43 = uVar28;
+ }
+ if (0x7ffffffffffffff7 < (ulong)((long)local_ee8 - (long)local_ef8)) {
+ uVar43 = 0x1fffffffffffffff;
+ }
+ lVar30 = lVar46;
+ local_1d0 = &local_ee0;
+ if (uVar43 == 0) {
+ pppppppuVar16 = (uint *******)0x0;
+ pppppppuVar21 = local_df0[0];
}
else {
- pcVar28 = (cfstringStruct *)local_df0[0].field0_0x0;
- pcVar26 = (cfstringStruct *)((qword *)local_df0[0].field0_0x0 + uVar44);
- if (local_df0 < (cfstringStruct *)((qword *)local_df0[0].field0_0x0 + uVar44)) {
- if (uVar44 >> 0x3d != 0) goto LAB_9;
- pcVar28 = operator_new(pcVar39,0x1000c0000313f17);
- sVar21 = local_ef8.field1_0x8 - local_ef8.field0_0x0;
- lVar27 = (long)sVar21 >> 3;
- pcVar26 = (cfstringStruct *)local_df0[0].field0_0x0;
+ pppppppuVar16 = local_df0[0];
+ pppppppuVar21 = local_df0[0] + uVar43;
+ if (local_df0 < local_df0[0] + uVar43) {
+ if (uVar43 >> 0x3d != 0) goto LAB_9;
+ pppppppuVar16 = operator_new(pppppppuVar48,0x1000c0000313f17);
+ sVar24 = (long)local_ef0 - (long)local_ef8;
+ lVar30 = (long)sVar24 >> 3;
+ pppppppuVar21 = local_df0[0];
}
}
- local_df0[0].field0_0x0 = (qword)pcVar26;
- pcStack_1d8 = (cfstringStruct *)0x0;
- local_1e0 = (cfstringStruct *)0x0;
- pcStack_1e8 = (cfstringStruct *)0x0;
- local_1f0 = (cfstringStruct *)0x0;
- pqVar30 = &pcVar28->field0_0x0 + lVar49;
- *(uint *)pqVar30 = uVar32;
- *(uint *)((long)pqVar30 + 4) = 1;
- pcVar26 = (cfstringStruct *)(pqVar30 + 1);
- _memcpy((cfstringStruct *)(pqVar30 + -lVar27),(void *)local_ef8.field0_0x0,sVar21);
- local_1e0 = (cfstringStruct *)local_ef8.field0_0x0;
- pcStack_1d8 = (cfstringStruct *)local_ef8.field2_0x10;
- pcStack_1e8 = (cfstringStruct *)local_ef8.field0_0x0;
- local_1f0 = (cfstringStruct *)local_ef8.field0_0x0;
- local_ef8.field0_0x0 = (qword)(pqVar30 + -lVar27);
- local_ef8.field1_0x8 = (qword)pcVar26;
- local_ef8.field2_0x10 = (undefined *)(&pcVar28->field0_0x0 + uVar44);
+ local_df0[0] = pppppppuVar21;
+ pppppppuStack_1d8 = (uint *******)0x0;
+ local_1e0 = (uint *******)0x0;
+ pppppppuStack_1e8 = (uint *******)0x0;
+ local_1f0 = (uint *******)0x0;
+ pppppppuVar21 = pppppppuVar16 + lVar46;
+ *(uint *)pppppppuVar21 = uVar33;
+ *(uint *)((long)pppppppuVar21 + 4) = 1;
+ pppppppuVar48 = pppppppuVar21 + 1;
+ _memcpy(pppppppuVar21 + -lVar30,local_ef8,sVar24);
+ local_1e0 = local_ef8;
+ pppppppuStack_1d8 = local_ee8;
+ pppppppuStack_1e8 = local_ef8;
+ local_1f0 = local_ef8;
+ local_ef8 = pppppppuVar21 + -lVar30;
+ local_ef0 = pppppppuVar48;
+ local_ee8 = pppppppuVar16 + uVar43;
std::__split_buffer<long,TInlineBufferAllocator<long,30ul>&>::~__split_buffer
((__split_buffer<long,TInlineBufferAllocator<long,30ul>&> *)param_2);
}
- lVar51 = lVar51 + 4;
- local_ef8.field1_0x8 = (qword)pcVar26;
- pcVar39 = pcVar28;
- } while (lVar51 != 0x40);
+ lVar52 = lVar52 + 4;
+ local_ef0 = pppppppuVar48;
+ pppppppuVar48 = pppppppuVar16;
+ } while (lVar52 != 0x40);
}
ConvertSettingsToOTFeatures(&local_148,lVar50 + 0xb0,param_1[0x14],&local_ef8,0,in_x2,1);
OTL::GCommon::GetLookups
- ((GCommon *)param_2,pFVar45,(TInlineVector *)&local_ef8,SUB81(&local_288,0));
+ ((GCommon *)param_2,pFVar44,(TInlineVector *)&local_ef8,SUB81(&local_288,0));
TInlineVector<std::pair<unsigned_short,unsigned_short>,30ul>::TInlineVector
((TInlineVector<std::pair<unsigned_short,unsigned_short>,30ul> *)param_2,
(TInlineVector *)&local_1f0);
local_158 = *in_x2;
- pcVar39 = *(cfstringStruct **)(lVar50 + 0x108);
- if (pcVar39 == (cfstringStruct *)0x0) {
- pcVar40 = (cfstringStruct *)&SUB_12;
+ plVar29 = *(long **)(lVar50 + 0x108);
+ if (plVar29 == (long *)0x0) {
+ plVar31 = (long *)&SUB_12;
}
else {
- uVar17 = CONCAT17(POPCOUNT((char)((ulong)pcVar39 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)pcVar39 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)pcVar39 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)pcVar39 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)pcVar39 >> 0x18)),
- CONCAT12(POPCOUNT((char)((ulong)pcVar39 >>
+ uVar14 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar29 >> 0x18)),
+ CONCAT12(POPCOUNT((char)((ulong)plVar29 >>
0x10)),
CONCAT11(POPCOUNT((char)((ulong)
- pcVar39 >> 8)),POPCOUNT((char)pcVar39))))))));
- uVar52 = NEON_uaddlv(uVar17,1);
- uVar25 = CONCAT62((int6)((ulong)uVar17 >> 0x10),uVar52) & 0xffffffff;
- if (uVar25 < 2) {
- pcVar40 = (cfstringStruct *)((ulong)((long)&pcVar39[-1].field3_0x18 + 7) & (ulong)pcVar48);
+ plVar29 >> 8)),POPCOUNT((char)plVar29))))))));
+ uVar53 = NEON_uaddlv(uVar14,1);
+ uVar28 = CONCAT62((int6)((ulong)uVar14 >> 0x10),uVar53) & 0xffffffff;
+ if (uVar28 < 2) {
+ plVar31 = (long *)((long)plVar29 - 1U & (ulong)plVar49);
}
else {
- pcVar40 = pcVar48;
- if (pcVar39 <= pcVar48) {
- uVar44 = 0;
- if (pcVar39 != (cfstringStruct *)0x0) {
- uVar44 = (ulong)pcVar48 / (ulong)pcVar39;
- }
- pcVar40 = (cfstringStruct *)((long)pcVar48 - uVar44 * (long)pcVar39);
- }
- }
- plVar35 = *(long **)(*(long *)(lVar50 + 0x100) + (long)pcVar40 * 8);
- if ((plVar35 != (long *)0x0) && (plVar35 = (long *)*plVar35, plVar35 != (long *)0x0)) {
+ plVar31 = plVar49;
+ if (plVar29 <= plVar49) {
+ uVar43 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar43 = (ulong)plVar49 / (ulong)plVar29;
+ }
+ plVar31 = (long *)((long)plVar49 - uVar43 * (long)plVar29);
+ }
+ }
+ plVar36 = *(long **)(*(long *)(lVar50 + 0x100) + (long)plVar31 * 8);
+ if ((plVar36 != (long *)0x0) && (plVar36 = (long *)*plVar36, plVar36 != (long *)0x0)) {
do {
- pcVar36 = (cfstringStruct *)plVar35[1];
- if (pcVar36 == pcVar48) {
- if ((cfstringStruct *)plVar35[2] == pcVar48) goto LAB_14;
+ plVar39 = (long *)plVar36[1];
+ if (plVar39 == plVar49) {
+ if ((long *)plVar36[2] == plVar49) goto LAB_14;
}
else {
- if (uVar25 < 2) {
- pcVar36 = (cfstringStruct *)
- ((ulong)pcVar36 & (ulong)((long)&pcVar39[-1].field3_0x18 + 7));
+ if (uVar28 < 2) {
+ plVar39 = (long *)((ulong)plVar39 & (long)plVar29 - 1U);
}
- else if (pcVar39 <= pcVar36) {
- uVar44 = 0;
- if (pcVar39 != (cfstringStruct *)0x0) {
- uVar44 = (ulong)pcVar36 / (ulong)pcVar39;
- }
- pcVar36 = (cfstringStruct *)((long)pcVar36 - uVar44 * (long)pcVar39);
+ else if (plVar29 <= plVar39) {
+ uVar43 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar43 = (ulong)plVar39 / (ulong)plVar29;
+ }
+ plVar39 = (long *)((long)plVar39 - uVar43 * (long)plVar29);
}
- if (pcVar36 != pcVar40) break;
- }
- plVar35 = (long *)*plVar35;
- } while (plVar35 != (long *)0x0);
- }
- }
- pcVar26 = operator_new(pcVar28,0x1020c00ff40d6af);
- pcVar26->field0_0x0 = 0;
- pcVar26->field1_0x8 = (qword)pcVar48;
- pcVar26->field2_0x10 = (undefined *)pcVar48;
+ if (plVar39 != plVar31) break;
+ }
+ plVar36 = (long *)*plVar36;
+ } while (plVar36 != (long *)0x0);
+ }
+ }
+ plVar36 = operator_new(pppppppuVar16,0x1020c00ff40d6af);
+ *plVar36 = 0;
+ plVar36[1] = (long)plVar49;
+ plVar36[2] = (long)plVar49;
TInlineVector<std::pair<unsigned_short,unsigned_short>,30ul>::TInlineVector
((TInlineVector<std::pair<unsigned_short,unsigned_short>,30ul> *)param_2,
- (TInlineVector *)&pcVar26->field3_0x18);
- *(int *)&pcVar26[5].field2_0x10 = local_158;
- fVar53 = (float)(*(long *)(lVar50 + 0x118) + 1);
- if ((pcVar39 == (cfstringStruct *)0x0) || (*(float *)(lVar50 + 0x120) * (float)pcVar39 < fVar53))
- {
- uVar25 = 1;
- if ((cfstringStruct *)0x2 < pcVar39) {
- uVar25 = (ulong)(((ulong)pcVar39 & (ulong)((long)&pcVar39[-1].field3_0x18 + 7)) != 0);
- }
- pcVar28 = (cfstringStruct *)(uVar25 | (long)pcVar39 << 1);
- pcVar39 = (cfstringStruct *)(long)(fVar53 / *(float *)(lVar50 + 0x120));
- if (pcVar28 <= pcVar39) {
- pcVar28 = pcVar39;
- }
- puVar29 = (undefined1 *)((long)&pcVar28[-1].field3_0x18 + 7);
- pcVar40 = pcVar26;
- if (puVar29 == (undefined1 *)0x0) {
- pcVar28 = (cfstringStruct *)0x2;
- }
- else if (((ulong)pcVar28 & (ulong)puVar29) != 0) {
- std::__next_prime((ulong)pcVar28);
- pcVar40 = pcVar28;
- }
- pcVar39 = *(cfstringStruct **)(lVar50 + 0x108);
- if (pcVar39 < pcVar28) {
+ (TInlineVector *)(plVar36 + 3));
+ *(int *)(plVar36 + 0x16) = local_158;
+ fVar54 = (float)(*(long *)(lVar50 + 0x118) + 1);
+ if ((plVar29 == (long *)0x0) || (*(float *)(lVar50 + 0x120) * (float)plVar29 < fVar54)) {
+ uVar28 = 1;
+ if ((long *)0x2 < plVar29) {
+ uVar28 = (ulong)(((ulong)plVar29 & (long)plVar29 - 1U) != 0);
+ }
+ plVar31 = (long *)(uVar28 | (long)plVar29 << 1);
+ plVar29 = (long *)(long)(fVar54 / *(float *)(lVar50 + 0x120));
+ if (plVar31 <= plVar29) {
+ plVar31 = plVar29;
+ }
+ plVar39 = plVar36;
+ if ((long)plVar31 - 1U == 0) {
+ plVar31 = (long *)0x2;
+ }
+ else if (((ulong)plVar31 & (long)plVar31 - 1U) != 0) {
+ std::__next_prime((ulong)plVar31);
+ plVar39 = plVar31;
+ }
+ plVar29 = *(long **)(lVar50 + 0x108);
+ if (plVar29 < plVar31) {
LAB_15:
- pcVar39 = pcVar28;
- if ((ulong)pcVar39 >> 0x3d != 0) {
+ plVar29 = plVar31;
+ if ((ulong)plVar29 >> 0x3d != 0) {
LAB_9:
/* WARNING: Subroutine does not return */
std::
vector<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,TInlineBufferAllocator<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,4ul>>
::__throw_length_error_abi_fn200100_();
}
- pvVar15 = operator_new(pcVar40,0x20c0093837f09);
- pvVar16 = *(void **)(lVar50 + 0x100);
- *(void **)(lVar50 + 0x100) = pvVar15;
- if (pvVar16 != (void *)0x0) {
- operator_delete(pvVar16);
- }
- pcVar28 = (cfstringStruct *)0x0;
- *(cfstringStruct **)(lVar50 + 0x108) = pcVar39;
+ pvVar17 = operator_new(plVar39,0x20c0093837f09);
+ pvVar18 = *(void **)(lVar50 + 0x100);
+ *(void **)(lVar50 + 0x100) = pvVar17;
+ if (pvVar18 != (void *)0x0) {
+ operator_delete(pvVar18);
+ }
+ plVar31 = (long *)0x0;
+ *(long **)(lVar50 + 0x108) = plVar29;
do {
- *(undefined8 *)(*(long *)(lVar50 + 0x100) + (long)pcVar28 * 8) = 0;
- pcVar28 = (cfstringStruct *)((long)&pcVar28->field0_0x0 + 1);
- } while (pcVar39 != pcVar28);
- plVar35 = *(long **)(lVar50 + 0x110);
- if (plVar35 != (long *)0x0) {
- pcVar28 = (cfstringStruct *)plVar35[1];
- uVar17 = CONCAT17(POPCOUNT((char)((ulong)pcVar39 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)pcVar39 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)pcVar39 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)pcVar39 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)pcVar39 >> 0x18
+ *(undefined8 *)(*(long *)(lVar50 + 0x100) + (long)plVar31 * 8) = 0;
+ plVar31 = (long *)((long)plVar31 + 1);
+ } while (plVar29 != plVar31);
+ plVar31 = *(long **)(lVar50 + 0x110);
+ if (plVar31 != (long *)0x0) {
+ plVar39 = (long *)plVar31[1];
+ uVar14 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar29 >> 0x18
)),
CONCAT12(POPCOUNT((char)((ulong)
- pcVar39 >> 0x10)),
- CONCAT11(POPCOUNT((char)((ulong)pcVar39 >> 8)),
- POPCOUNT((char)pcVar39))))))));
- uVar52 = NEON_uaddlv(uVar17,1);
- uVar25 = CONCAT62((int6)((ulong)uVar17 >> 0x10),uVar52) & 0xffffffff;
- if (uVar25 < 2) {
- pcVar28 = (cfstringStruct *)((ulong)pcVar28 & (ulong)((long)&pcVar39[-1].field3_0x18 + 7))
- ;
- }
- else if (pcVar39 <= pcVar28) {
- uVar44 = 0;
- if (pcVar39 != (cfstringStruct *)0x0) {
- uVar44 = (ulong)pcVar28 / (ulong)pcVar39;
+ plVar29 >> 0x10)),
+ CONCAT11(POPCOUNT((char)((ulong)plVar29 >> 8)),
+ POPCOUNT((char)plVar29))))))));
+ uVar53 = NEON_uaddlv(uVar14,1);
+ uVar28 = CONCAT62((int6)((ulong)uVar14 >> 0x10),uVar53) & 0xffffffff;
+ if (uVar28 < 2) {
+ plVar39 = (long *)((ulong)plVar39 & (long)plVar29 - 1U);
+ }
+ else if (plVar29 <= plVar39) {
+ uVar43 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar43 = (ulong)plVar39 / (ulong)plVar29;
}
- pcVar28 = (cfstringStruct *)((long)pcVar28 - uVar44 * (long)pcVar39);
- }
- *(long *)(*(long *)(lVar50 + 0x100) + (long)pcVar28 * 8) = lVar50 + 0x110;
- plVar37 = (long *)*plVar35;
+ plVar39 = (long *)((long)plVar39 - uVar43 * (long)plVar29);
+ }
+ *(long *)(*(long *)(lVar50 + 0x100) + (long)plVar39 * 8) = lVar50 + 0x110;
+ plVar37 = (long *)*plVar31;
if (plVar37 != (long *)0x0) {
do {
- pcVar40 = (cfstringStruct *)plVar37[1];
- if (uVar25 < 2) {
- pcVar40 = (cfstringStruct *)
- ((ulong)pcVar40 & (ulong)((long)&pcVar39[-1].field3_0x18 + 7));
- }
- else if (pcVar39 <= pcVar40) {
- uVar44 = 0;
- if (pcVar39 != (cfstringStruct *)0x0) {
- uVar44 = (ulong)pcVar40 / (ulong)pcVar39;
+ plVar40 = (long *)plVar37[1];
+ if (uVar28 < 2) {
+ plVar40 = (long *)((ulong)plVar40 & (long)plVar29 - 1U);
+ }
+ else if (plVar29 <= plVar40) {
+ uVar43 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar43 = (ulong)plVar40 / (ulong)plVar29;
}
- pcVar40 = (cfstringStruct *)((long)pcVar40 - uVar44 * (long)pcVar39);
- }
- if (pcVar40 != pcVar28) {
- lVar51 = *(long *)(lVar50 + 0x100);
- if (*(long *)(lVar51 + (long)pcVar40 * 8) == 0) {
- *(long **)(lVar51 + (long)pcVar40 * 8) = plVar35;
- pcVar28 = pcVar40;
+ plVar40 = (long *)((long)plVar40 - uVar43 * (long)plVar29);
+ }
+ if (plVar40 != plVar39) {
+ lVar52 = *(long *)(lVar50 + 0x100);
+ if (*(long *)(lVar52 + (long)plVar40 * 8) == 0) {
+ *(long **)(lVar52 + (long)plVar40 * 8) = plVar31;
+ plVar39 = plVar40;
}
else {
- *plVar35 = *plVar37;
- *plVar37 = **(long **)(lVar51 + (long)pcVar40 * 8);
- **(undefined8 **)(lVar51 + (long)pcVar40 * 8) = plVar37;
- plVar37 = plVar35;
+ *plVar31 = *plVar37;
+ *plVar37 = **(long **)(lVar52 + (long)plVar40 * 8);
+ **(undefined8 **)(lVar52 + (long)plVar40 * 8) = plVar37;
+ plVar37 = plVar31;
}
}
- plVar35 = plVar37;
- plVar37 = (long *)*plVar35;
+ plVar31 = plVar37;
+ plVar37 = (long *)*plVar31;
} while (plVar37 != (long *)0x0);
}
}
}
- else if (pcVar28 < pcVar39) {
- pcVar40 = (cfstringStruct *)
- (long)((float)*(ulong *)(lVar50 + 0x118) / *(float *)(lVar50 + 0x120));
- if ((pcVar39 < (cfstringStruct *)0x3) ||
- (uVar17 = CONCAT17(POPCOUNT((char)((ulong)pcVar39 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)pcVar39 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)pcVar39 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)pcVar39 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)pcVar39 >>
+ else if (plVar31 < plVar29) {
+ plVar39 = (long *)(long)((float)*(ulong *)(lVar50 + 0x118) / *(float *)(lVar50 + 0x120));
+ if ((plVar29 < (long *)0x3) ||
+ (uVar14 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar29 >>
0x18)),
CONCAT12(POPCOUNT((char)((ulong)
- pcVar39 >> 0x10)),
- CONCAT11(POPCOUNT((char)((ulong)pcVar39 >> 8)),
- POPCOUNT((char)pcVar39)))))))),
- uVar52 = NEON_uaddlv(uVar17,1),
- 1 < (CONCAT62((int6)((ulong)uVar17 >> 0x10),uVar52) & 0xffffffff))) {
- std::__next_prime((ulong)pcVar40);
- }
- else if ((cfstringStruct *)0x1 < pcVar40) {
- pcVar40 = (cfstringStruct *)
- (1L << (-LZCOUNT((undefined1 *)((long)&pcVar40[-1].field3_0x18 + 7)) & 0x3fU));
- }
- if (pcVar28 <= pcVar40) {
- pcVar28 = pcVar40;
- }
- if (pcVar28 < pcVar39) {
- if (pcVar28 != (cfstringStruct *)0x0) goto LAB_15;
- pvVar15 = *(void **)(lVar50 + 0x100);
+ plVar29 >> 0x10)),
+ CONCAT11(POPCOUNT((char)((ulong)plVar29 >> 8)),
+ POPCOUNT((char)plVar29)))))))),
+ uVar53 = NEON_uaddlv(uVar14,1),
+ 1 < (CONCAT62((int6)((ulong)uVar14 >> 0x10),uVar53) & 0xffffffff))) {
+ std::__next_prime((ulong)plVar39);
+ }
+ else if ((long *)0x1 < plVar39) {
+ plVar39 = (long *)(1L << (-LZCOUNT((long)plVar39 + -1) & 0x3fU));
+ }
+ if (plVar31 <= plVar39) {
+ plVar31 = plVar39;
+ }
+ if (plVar31 < plVar29) {
+ if (plVar31 != (long *)0x0) goto LAB_15;
+ pvVar17 = *(void **)(lVar50 + 0x100);
*(undefined8 *)(lVar50 + 0x100) = 0;
- if (pvVar15 != (void *)0x0) {
- operator_delete(pvVar15);
- }
- pcVar39 = (cfstringStruct *)0x0;
+ if (pvVar17 != (void *)0x0) {
+ operator_delete(pvVar17);
+ }
+ plVar29 = (long *)0x0;
*(undefined8 *)(lVar50 + 0x108) = 0;
}
else {
- pcVar39 = *(cfstringStruct **)(lVar50 + 0x108);
- }
- }
- puVar29 = (undefined1 *)((long)&pcVar39[-1].field3_0x18 + 7);
- if (((ulong)pcVar39 & (ulong)puVar29) == 0) {
- pcVar40 = (cfstringStruct *)((ulong)puVar29 & (ulong)pcVar48);
+ plVar29 = *(long **)(lVar50 + 0x108);
+ }
+ }
+ if (((ulong)plVar29 & (long)plVar29 - 1U) == 0) {
+ plVar31 = (long *)((long)plVar29 - 1U & (ulong)plVar49);
}
else {
- pcVar40 = pcVar48;
- if (pcVar39 <= pcVar48) {
- uVar25 = 0;
- if (pcVar39 != (cfstringStruct *)0x0) {
- uVar25 = (ulong)pcVar48 / (ulong)pcVar39;
- }
- pcVar40 = (cfstringStruct *)((long)pcVar48 - uVar25 * (long)pcVar39);
- }
- }
- }
- lVar51 = *(long *)(lVar50 + 0x100);
- pqVar30 = *(qword **)(lVar51 + (long)pcVar40 * 8);
- if (pqVar30 == (qword *)0x0) {
- pcVar26->field0_0x0 = *(qword *)(lVar50 + 0x110);
- *(cfstringStruct **)(lVar50 + 0x110) = pcVar26;
- *(long *)(lVar51 + (long)pcVar40 * 8) = lVar50 + 0x110;
- if (pcVar26->field0_0x0 != 0) {
- pcVar48 = *(cfstringStruct **)(pcVar26->field0_0x0 + 8);
- puVar29 = (undefined1 *)((long)&pcVar39[-1].field3_0x18 + 7);
- if (((ulong)pcVar39 & (ulong)puVar29) == 0) {
- pcVar48 = (cfstringStruct *)((ulong)pcVar48 & (ulong)puVar29);
- }
- else if (pcVar39 <= pcVar48) {
- uVar25 = 0;
- if (pcVar39 != (cfstringStruct *)0x0) {
- uVar25 = (ulong)pcVar48 / (ulong)pcVar39;
- }
- pcVar48 = (cfstringStruct *)((long)pcVar48 - uVar25 * (long)pcVar39);
- }
- pqVar30 = (qword *)(*(long *)(lVar50 + 0x100) + (long)pcVar48 * 8);
+ plVar31 = plVar49;
+ if (plVar29 <= plVar49) {
+ uVar28 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar28 = (ulong)plVar49 / (ulong)plVar29;
+ }
+ plVar31 = (long *)((long)plVar49 - uVar28 * (long)plVar29);
+ }
+ }
+ }
+ lVar52 = *(long *)(lVar50 + 0x100);
+ plVar49 = *(long **)(lVar52 + (long)plVar31 * 8);
+ if (plVar49 == (long *)0x0) {
+ *plVar36 = *(long *)(lVar50 + 0x110);
+ *(long **)(lVar50 + 0x110) = plVar36;
+ *(long *)(lVar52 + (long)plVar31 * 8) = lVar50 + 0x110;
+ if (*plVar36 != 0) {
+ plVar49 = *(long **)(*plVar36 + 8);
+ if (((ulong)plVar29 & (long)plVar29 - 1U) == 0) {
+ plVar49 = (long *)((ulong)plVar49 & (long)plVar29 - 1U);
+ }
+ else if (plVar29 <= plVar49) {
+ uVar28 = 0;
+ if (plVar29 != (long *)0x0) {
+ uVar28 = (ulong)plVar49 / (ulong)plVar29;
+ }
+ plVar49 = (long *)((long)plVar49 - uVar28 * (long)plVar29);
+ }
+ plVar49 = (long *)(*(long *)(lVar50 + 0x100) + (long)plVar49 * 8);
goto LAB_16;
}
}
else {
- pcVar26->field0_0x0 = *pqVar30;
+ *plVar36 = *plVar49;
LAB_16:
- *pqVar30 = (qword)pcVar26;
+ *plVar49 = (long)plVar36;
}
*(long *)(lVar50 + 0x118) = *(long *)(lVar50 + 0x118) + 1;
LAB_14:
- local_f00 = &local_1f0;
+ local_f00 = (uint *******)&local_1f0;
std::vector<unsigned_int,TInlineBufferAllocator<unsigned_int,30ul>>::__destroy_vector::
operator()[abi_fn200100_((__destroy_vector *)param_2);
- local_1f0 = &local_ef8;
+ local_1f0 = (uint *******)&local_ef8;
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi_fn200100_
((__destroy_vector *)param_2);
- local_ef8.field0_0x0 = (qword)&local_148;
+ local_ef8 = (uint *******)&local_148;
std::vector<unsigned_int,TInlineBufferAllocator<unsigned_int,36ul>>::__destroy_vector::
operator()[abi_fn200100_((__destroy_vector *)param_2);
LAB_13:
- qVar9 = local_288.field1_0x8;
- qVar8 = local_288.field0_0x0;
+ ppppppuVar51 = local_280;
+ ppppppuVar38 = local_288;
_os_unfair_lock_unlock(lVar50 + 0xd0);
- if (qVar8 == qVar9) {
- uVar17 = 1;
+ if (ppppppuVar38 == ppppppuVar51) {
+ uVar14 = 1;
}
else {
- sVar3 = *(short *)(*(long *)(*(long *)(param_1 + 8) + 0x198) + 0x1a8);
- local_1f0 = (cfstringStruct *)CONCAT62(local_1f0._2_6_,sVar3);
- if (sVar3 == -1) {
- _objc_retain(*(long *)(*(long *)(param_1 + 8) + 0x198) + 0x58);
- if (in_tmp_ldXn == &cfstringStruct_1ee7c5c20) {
- _objc_release(&cfstringStruct_1ee7c5c20);
- }
- else {
- if (in_tmp_ldXn == (cfstringStruct *)0x0) {
- _objc_release(0);
- }
- else {
- pcVar26 = in_tmp_ldXn;
- _CFStringHasPrefix(in_tmp_ldXn,&cfstringStruct_1ee7c5c20);
- _objc_release(in_tmp_ldXn);
- if ((int)pcVar26 != 0) goto LAB_17;
- }
- local_290 = &local_2a8;
- local_2a0 = &local_1f0;
- local_2a8 = &DAT_18;
- OTL::GCommon::IterateFeatureTables
- (*(undefined8 *)(param_1 + 0xa0),*(undefined8 *)(param_1 + 0xb8),
- *(undefined8 *)(param_1 + 0xa8),&local_2a8);
- std::__function::__value_func<bool(unsigned_int,OTL::FeatureTable_const*,bool&)>::
- ~__value_func_abi_fn200100_
- ((__value_func<bool(unsigned_int,OTL::FeatureTable_const*,bool&)> *)param_2);
- if ((ushort)local_1f0 == -1) {
- local_1f0 = (cfstringStruct *)((ulong)local_1f0 & 0xffffffffffff0000);
- }
- }
-LAB_17:
- sVar3 = (ushort)local_1f0 + 1;
- local_1f0 = (cfstringStruct *)CONCAT62(local_1f0._2_6_,sVar3);
- *(short *)(*(long *)(*(long *)(param_1 + 8) + 0x198) + 0x1a8) = sVar3;
- }
- _memset(&local_ef8.field3_0x18,0xaa,0xc30);
- local_ef8.field0_0x0 = 0;
- local_ef8.field1_0x8 = 0;
- local_ef8.field2_0x10 = (undefined *)0x0;
- uVar17 = *(undefined8 *)param_1;
- local_2b0 = &local_ef8.field3_0x18;
+ sVar26 = *(short *)(*(long *)(*(long *)(param_1 + 8) + 0x198) + 0x1a8);
+ local_1f0 = (uint *******)CONCAT62(local_1f0._2_6_,sVar26);
+ if (sVar26 == -1) {
+ local_290 = &local_2a8;
+ local_2a0 = (uint *******)&local_1f0;
+ local_2a8 = &DAT_17;
+ OTL::GCommon::IterateFeatureTables
+ (*(undefined8 *)(param_1 + 0xa0),*(undefined8 *)(param_1 + 0xb8),
+ *(undefined8 *)(param_1 + 0xa8),&local_2a8);
+ std::__function::__value_func<bool(unsigned_int,OTL::FeatureTable_const*,bool&)>::
+ ~__value_func_abi_fn200100_
+ ((__value_func<bool(unsigned_int,OTL::FeatureTable_const*,bool&)> *)param_2);
+ sVar26 = (ushort)local_1f0;
+ if ((ushort)local_1f0 == -1) {
+ sVar26 = 0;
+ local_1f0 = (uint *******)((ulong)local_1f0 & 0xffffffffffff0000);
+ }
+ *(short *)(*(long *)(*(long *)(param_1 + 8) + 0x198) + 0x1a8) = sVar26;
+ }
+ _memset(&local_ee0,0xaa,0xc30);
+ local_ef8 = (uint *******)0x0;
+ local_ef0 = (uint *******)0x0;
+ local_ee8 = (uint *******)0x0;
+ uVar14 = *(undefined8 *)param_1;
+ local_2b0 = (uint ******)&local_ee0;
TRunGlue::length((TRunGlue *)param_2);
- qVar8 = local_288.field1_0x8;
- for (puVar42 = (uint *)local_288.field0_0x0; puVar42 != (uint *)qVar8; puVar42 = puVar42 + 1) {
- pcVar26 = (cfstringStruct *)((ulong)pcVar26 & 0xffffffff00000000 | (ulong)*puVar42);
- OTL::GlyphLookups::SetLookupInRange<false>(&local_ef8,pcVar26,0,uVar17);
- }
- if (local_ef8.field1_0x8 - local_ef8.field0_0x0 != 0) {
- pcVar48 = *(cfstringStruct **)param_1;
- iVar1 = *(int *)(param_1 + 0x10);
- uVar32 = (uint)(ushort)local_1f0;
- uVar44 = ((long)(local_ef8.field1_0x8 - local_ef8.field0_0x0) >> 3) * 0x4ec4ec4ec4ec4ec5;
- uVar38 = pcVar48[6].field0_0x0;
- pcVar26 = pcVar48;
+ ppppppuVar51 = local_280;
+ pSVar47 = param_1;
+ for (ppppppuVar38 = local_288; ppppppuVar38 != ppppppuVar51;
+ ppppppuVar38 = (uint ******)((long)ppppppuVar38 + 4)) {
+ pSVar47 = (SyncState *)((ulong)pSVar47 & 0xffffffff00000000 | (ulong)*(uint *)ppppppuVar38);
+ OTL::GlyphLookups::SetLookupInRange<false>(&local_ef8,pSVar47,0,uVar14);
+ }
+ if ((long)local_ef0 - (long)local_ef8 != 0) {
+ pppppppuVar48 = *(uint ********)param_1;
+ iVar2 = *(int *)(param_1 + 0x10);
+ uVar33 = (uint)(ushort)local_1f0;
+ uVar43 = ((long)local_ef0 - (long)local_ef8 >> 3) * 0x4ec4ec4ec4ec4ec5;
+ ppppppuVar38 = pppppppuVar48[0x18];
+ pppppppuVar16 = pppppppuVar48;
TRunGlue::length((TRunGlue *)param_2);
- pGVar31 = *(GPOS **)(*(long *)(param_1 + 0x90) + 0x198);
- _os_unfair_lock_lock_with_options(pGVar31 + 0x150,0x50000);
- uVar25 = 0;
- if (uVar44 < 2) {
- uVar44 = 1;
+ pGVar32 = *(GPOS **)(*(long *)(param_1 + 0x90) + 0x198);
+ _os_unfair_lock_lock_with_options(pGVar32 + 0x150,0x50000);
+ uVar28 = 0;
+ if (uVar43 < 2) {
+ uVar43 = 1;
}
do {
- uVar33 = ((long)(local_ef8.field1_0x8 - local_ef8.field0_0x0) >> 3) * 0x4ec4ec4ec4ec4ec5;
- if (uVar33 < uVar25 || uVar33 - uVar25 == 0) {
+ uVar34 = ((long)local_ef0 - (long)local_ef8 >> 3) * 0x4ec4ec4ec4ec4ec5;
+ if (uVar34 < uVar28 || uVar34 - uVar28 == 0) {
/* WARNING: Does not return */
- pcVar12 = (code *)SoftwareBreakpoint(1,0x1833cb984);
+ pcVar12 = (code *)SoftwareBreakpoint(1,0x1833a190c);
(*pcVar12)();
}
- uVar2 = *(uint *)(local_ef8.field0_0x0 + uVar25 * 0x68);
- pLVar18 = TBaseFont::NthLookup<OTL::GPOS>((TBaseFont *)param_2,pGVar31,(uint)pFVar45);
- if (pLVar18 != (Lookup *)0x0) {
- uVar4 = *(ushort *)(pLVar18 + 0x10);
- uVar43 = (uint)uVar4;
- if ((((pcVar26 != (cfstringStruct *)0x1) ||
- (uVar4 < 9 && (1 << (ulong)(uVar43 & 0x1f) & 0x182U) != 0)) &&
- ((pcVar48[6].field1_0x8 & *(ulong *)(pLVar18 + 0x18)) != 0)) &&
- (((ulong)pcVar48[6].field2_0x10 & *(ulong *)(pLVar18 + 0x20)) != 0)) {
- if (uVar38 != 0) {
- pLVar19 = pLVar18 + 0x28;
- OTL::CoverageBitmap::CoversBitmap((CoverageBitmap *)param_2,(uchar *)pLVar19,uVar38);
- if ((int)pLVar19 == 0) goto LAB_19;
- }
- pcVar39 = (cfstringStruct *)local_ef8.field0_0x0;
- pcVar28 = (cfstringStruct *)local_ef8.field0_0x0;
- if (uVar43 == 3) {
- iVar23 = -1;
- if ((*(ushort *)(*(long *)pLVar18 + 2) & 0x100) == 0) {
- iVar23 = 1;
+ uVar4 = *(uint *)(local_ef8 + uVar28 * 0xd);
+ uVar1 = uVar4 & 0xffff;
+ pLVar19 = TBaseFont::NthLookup<OTL::GPOS>((TBaseFont *)param_2,pGVar32,(uint)pFVar44);
+ if (pLVar19 != (Lookup *)0x0) {
+ uVar5 = *(ushort *)(pLVar19 + 0x10);
+ uVar42 = (uint)uVar5;
+ if ((((pppppppuVar16 != (uint *******)0x1) ||
+ (uVar5 < 9 && (1 << (ulong)(uVar42 & 0x1f) & 0x182U) != 0)) &&
+ (((ulong)pppppppuVar48[0x19] & *(ulong *)(pLVar19 + 0x18)) != 0)) &&
+ (((ulong)pppppppuVar48[0x1a] & *(ulong *)(pLVar19 + 0x20)) != 0)) {
+ if (ppppppuVar38 != (uint ******)0x0) {
+ pLVar20 = pLVar19 + 0x28;
+ OTL::CoverageBitmap::CoversBitmap
+ ((CoverageBitmap *)param_2,(uchar *)pLVar20,(ulong)ppppppuVar38);
+ if ((int)pLVar20 == 0) goto LAB_18;
+ }
+ if (uVar42 == 3) {
+ iVar27 = -1;
+ if ((*(ushort *)(*(long *)pLVar19 + 2) & 0x100) == 0) {
+ iVar27 = 1;
}
}
else {
- iVar23 = 1;
- }
- while ((pcVar28 != (cfstringStruct *)local_ef8.field1_0x8 &&
- (pcVar39 = pcVar28,
- (uint)(ushort)pcVar28->field0_0x0 != (uVar2 & 0xffff) ||
- (uint)*(ushort *)((long)&pcVar28->field0_0x0 + 2) != uVar2 >> 0x10))) {
- pcVar28 = (cfstringStruct *)&pcVar28[3].field1_0x8;
- pcVar39 = (cfstringStruct *)local_ef8.field1_0x8;
- }
- plVar35 = (long *)pcVar39->field1_0x8;
- plVar37 = (long *)pcVar39->field2_0x10;
- if (plVar35 != plVar37) {
+ iVar27 = 1;
+ }
+ pppppppuVar21 = local_ef8;
+ if (local_ef8 != local_ef0) {
+ pppppppuVar10 = local_ef8;
+ do {
+ pppppppuVar21 = pppppppuVar10;
+ if (*(ushort *)pppppppuVar21 == uVar1 &&
+ (uint)*(ushort *)((long)pppppppuVar21 + 2) == uVar4 >> 0x10) break;
+ pppppppuVar10 = pppppppuVar21 + 0xd;
+ pppppppuVar21 = local_ef0;
+ } while (pppppppuVar10 != local_ef0);
+ }
+ ppppppuVar51 = pppppppuVar21[1];
+ ppppppuVar3 = pppppppuVar21[2];
+ if (ppppppuVar51 != ppppppuVar3) {
do {
local_100 = (Lookup *)&SUB_12;
puStack_108 = &SUB_12;
local_110 = &SUB_12;
puStack_118 = &SUB_12;
- local_120 = (cfstringStruct *)&SUB_12;
- local_148.field1_0x8 = CONCAT44(0xaaaaaaaa,iVar23 * iVar1);
- local_148.field2_0x10 = (undefined *)(*plVar35 + -1);
- local_148.field3_0x18 = plVar35[1] + *plVar35;
- pcStack_128 = (cfstringStruct *)0xffffffffffffffff;
- pcVar28 = pcVar48;
- local_148.field0_0x0 = (qword)pcVar48;
+ local_120 = (uint *******)&SUB_12;
+ local_140 = CONCAT44(0xaaaaaaaa,iVar27 * iVar2);
+ puStack_138 = (undefined1 *)((long)*ppppppuVar51 + -1);
+ local_130 = (undefined1 *)((long)ppppppuVar51[1] + (long)*ppppppuVar51);
+ pppppppuStack_128 = (uint *******)0xffffffffffffffff;
+ pppppppuVar21 = pppppppuVar48;
+ local_148 = pppppppuVar48;
TRunGlue::length((TRunGlue *)param_2);
- puVar10 = local_148.field2_0x10;
+ puVar9 = puStack_138;
local_110 = (undefined1 *)0xffffffffffffffff;
puStack_108 = (undefined1 *)0xffffffffffffffff;
local_100 = (Lookup *)0x0;
- local_120 = pcVar28;
- if (iVar23 * iVar1 < 0) {
- local_148.field2_0x10 = (undefined *)local_148.field3_0x18;
- local_148.field3_0x18 = (long)puVar10;
- local_120 = pcStack_128;
- pcStack_128 = pcVar28;
+ local_120 = pppppppuVar21;
+ if (iVar27 * iVar2 < 0) {
+ puStack_138 = local_130;
+ local_130 = puVar9;
+ local_120 = pppppppuStack_128;
+ pppppppuStack_128 = pppppppuVar21;
}
- pLVar19 = pLVar18;
- puStack_118 = local_148.field2_0x10;
- OTL::Lookup::ignore((GDEF *)pLVar18);
- puStack_118 = local_148.field2_0x10;
- local_100 = pLVar19;
- if (((uVar32 - 1 & 0xffff) == (uVar2 & 0xffff) && uVar43 == 2) &&
- (uVar24 = (int)*(undefined8 *)(pLVar18 + 0x68) -
- (int)*(undefined8 *)(pLVar18 + 0x60), (uVar24 >> 6 & 0xffff) < 0x11)) {
- pFVar20 = pFVar45;
+ pLVar20 = pLVar19;
+ puStack_118 = puStack_138;
+ OTL::Lookup::ignore((GDEF *)pLVar19);
+ puStack_118 = puStack_138;
+ local_100 = pLVar20;
+ if (uVar33 == uVar1 && uVar42 == 2) {
+ pFVar22 = pFVar44;
OTL::GPOS::ApplyPairPosAccelerated
- ((GPOS *)param_2,(Lookup *)pFVar45,(uint)pLVar18,
- (TGlyphIterator *)(ulong)(uVar24 >> 6 & 0x1f));
- *param_2 = (KerningStatus)((byte)*(TRun *)param_2 | (byte)pFVar20);
+ ((GPOS *)param_2,(Lookup *)pFVar44,(TGlyphIterator *)pLVar19);
+ *param_2 = (KerningStatus)((byte)*(TRun *)param_2 | (byte)pFVar22);
}
else {
- pcVar28 = &local_148;
- TGlyphIterator::NextCoveredBy((Lookup *)pcVar28);
- if ((int)pcVar28 != 0) {
+ pLVar20 = (Lookup *)&local_148;
+ TGlyphIterator::NextCoveredBy(pLVar20);
+ if ((int)pLVar20 != 0) {
do {
- pFVar20 = pFVar45;
+ pFVar22 = pFVar44;
OTL::GPOS::ApplyLookupAt
- ((GPOS *)param_2,(Lookup *)pFVar45,(uint)pLVar18,
- (TGlyphIterator *)(ulong)uVar4,(ulong)&local_148);
- *param_2 = (KerningStatus)((byte)*(TRun *)param_2 | (byte)pFVar20);
- pcVar28 = &local_148;
- TGlyphIterator::NextCoveredBy((Lookup *)pcVar28);
- } while (((ulong)pcVar28 & 1) != 0);
+ ((GPOS *)param_2,(Lookup *)pFVar44,(uint)pLVar19,
+ (TGlyphIterator *)(ulong)uVar5,(ulong)&local_148);
+ *param_2 = (KerningStatus)((byte)*(TRun *)param_2 | (byte)pFVar22);
+ pLVar20 = (Lookup *)&local_148;
+ TGlyphIterator::NextCoveredBy(pLVar20);
+ } while (((ulong)pLVar20 & 1) != 0);
}
}
- plVar35 = plVar35 + 2;
- } while (plVar35 != plVar37);
+ ppppppuVar51 = ppppppuVar51 + 2;
+ } while (ppppppuVar51 != ppppppuVar3);
}
}
}
-LAB_19:
- uVar25 = uVar25 + 1;
- } while (uVar25 != uVar44);
- _os_unfair_lock_unlock(pGVar31 + 0x150);
- }
- pdVar7 = _DAT_20;
+LAB_18:
+ uVar28 = uVar28 + 1;
+ } while (uVar28 != uVar43);
+ _os_unfair_lock_unlock(pGVar32 + 0x150);
+ }
+ pdVar8 = _DAT_19;
if (*(long *)(param_1 + 0xf8) == 0) {
- uVar17 = 1;
+ uVar14 = 1;
}
else {
lVar50 = *(long *)param_1;
- dVar57 = *(double *)(lVar50 + 0x208);
- dVar58 = *(double *)(lVar50 + 0x210);
+ dVar58 = *(double *)(lVar50 + 0x208);
+ dVar59 = *(double *)(lVar50 + 0x210);
if ((*(long *)(lVar50 + 0x90) == 0) && (*(long *)(lVar50 + 0xb8) == 0)) {
- uVar17 = 0;
+ uVar14 = 0;
}
else {
- pSVar46 = *(SyncState **)(param_1 + 0xe8);
- while (pSVar46 != param_1 + 0xf0) {
- dVar54 = *(double *)(pSVar46 + 0x28);
- if ((dVar54 != 0.0) || (*(double *)(pSVar46 + 0x30) != 0.0)) {
- dVar56 = dVar58 * *(double *)(pSVar46 + 0x30);
- dVar55 = -(dVar57 * dVar54);
+ pSVar47 = *(SyncState **)(param_1 + 0xe8);
+ while (pSVar47 != param_1 + 0xf0) {
+ dVar55 = *(double *)(pSVar47 + 0x28);
+ if ((dVar55 != 0.0) || (*(double *)(pSVar47 + 0x30) != 0.0)) {
+ dVar57 = dVar59 * *(double *)(pSVar47 + 0x30);
+ dVar56 = -(dVar58 * dVar55);
if (param_1[0x14] == (SyncState)0x0) {
- dVar55 = dVar57 * dVar54;
- }
- dVar54 = pdVar7[1];
+ dVar56 = dVar58 * dVar55;
+ }
+ dVar55 = pdVar8[1];
bVar13 = false;
- if ((dVar55 == *pdVar7) && (bVar13 = false, !NAN(dVar56) && !NAN(dVar54))) {
- bVar13 = dVar56 == dVar54;
+ if ((dVar56 == *pdVar8) && (bVar13 = false, !NAN(dVar57) && !NAN(dVar55))) {
+ bVar13 = dVar57 == dVar55;
}
if ((!bVar13) &&
- (TRunGlue::SetOrigin(dVar55,dVar56,*(undefined8 *)param_1,
- *(undefined8 *)(pSVar46 + 0x20)),
+ (TRunGlue::SetOrigin(dVar56,dVar57,*(undefined8 *)param_1,
+ *(undefined8 *)(pSVar47 + 0x20)),
*(long *)(*(long *)param_1 + 0x90) != 0)) {
- TRun::NoteCrossStreamPosition((TRun *)param_2,dVar58 * dVar56);
+ TRun::NoteCrossStreamPosition((TRun *)param_2,dVar59 * dVar57);
}
}
- pSVar11 = *(SyncState **)(pSVar46 + 8);
- pSVar47 = pSVar46;
- if (*(SyncState **)(pSVar46 + 8) == (SyncState *)0x0) {
+ pSVar11 = *(SyncState **)(pSVar47 + 8);
+ pSVar45 = pSVar47;
+ if (*(SyncState **)(pSVar47 + 8) == (SyncState *)0x0) {
do {
- pSVar46 = *(SyncState **)(pSVar47 + 0x10);
- bVar13 = *(SyncState **)pSVar46 != pSVar47;
- pSVar47 = pSVar46;
+ pSVar47 = *(SyncState **)(pSVar45 + 0x10);
+ bVar13 = *(SyncState **)pSVar47 != pSVar45;
+ pSVar45 = pSVar47;
} while (bVar13);
}
else {
do {
- pSVar46 = pSVar11;
- pSVar11 = *(SyncState **)pSVar46;
- } while (*(SyncState **)pSVar46 != (SyncState *)0x0);
+ pSVar47 = pSVar11;
+ pSVar11 = *(SyncState **)pSVar47;
+ } while (*(SyncState **)pSVar47 != (SyncState *)0x0);
}
}
- uVar17 = 1;
+ uVar14 = 1;
*param_2 = (KerningStatus)0x1;
}
}
- local_148.field0_0x0 = (qword)&local_ef8;
+ local_148 = (uint *******)&local_ef8;
std::
vector<std::pair<std::pair<unsigned_short,unsigned_short>,TInlineVector<CFRange,4ul>>,TInlineBufferAllocator<std::pair<std::pair<unsigned_short,unsigned_short>,TInlineVector<CFRange,4ul>>,30ul>>
::__destroy_vector::operator()[abi_fn200100_((__destroy_vector *)param_2);
}
- if (bVar5) {
- pTVar14 = *(TRunGlue **)param_1;
- ZeroMarkWidths(pTVar14,(GDEF *)(param_1 + 0x28));
- *param_2 = (KerningStatus)((byte)*(__destroy_vector *)param_2 | (byte)pTVar14);
- }
- local_ef8.field0_0x0 = (qword)&local_288;
+ if (bVar6) {
+ uVar23 = *(undefined8 *)param_1;
+ ZeroMarkWidths(uVar23,param_1 + 0x28);
+ *param_2 = (KerningStatus)((byte)*(__destroy_vector *)param_2 | (byte)uVar23);
+ }
+ local_ef8 = &local_288;
std::vector<unsigned_int,TInlineBufferAllocator<unsigned_int,30ul>>::__destroy_vector::
operator()[abi_fn200100_((__destroy_vector *)param_2);
LAB_4:
*(undefined8 *)(*(long *)param_1 + 0x70) = uVar41;
if (*_DAT_0 == local_98) {
- return uVar17;
+ return uVar14;
}
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address,calling |
| ratio | 0.98 |
| i_ratio | 0.65 |
| m_ratio | 1.0 |
| b_ratio | 0.99 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | ApplyFont | ApplyFont |
| fullname | TAttributes::ApplyFont | TAttributes::ApplyFont |
| refcount | 3 | 3 |
length |
2504 | 2480 |
| called | Expand for full list:TCFRef<CTRun*>::Retain |
Expand for full list:TCFRef<CTRun*>::Retain |
calling |
TAttributes::TAttributes TAttributes::TAttributes |
TAttributes::TAttributes TAttributes::TAttributes |
| paramcount | 5 | 5 |
address |
18349da94 | 183474540 |
| sig | undefined __swiftcall ApplyFont(__CFDictionary * param_1, __CTFont * param_2, TCharStream * param_3, CFRange param_4, void * * param_5) | undefined __swiftcall ApplyFont(__CFDictionary * param_1, __CTFont * param_2, TCharStream * param_3, CFRange param_4, void * * param_5) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TAttributes::ApplyFont
+++ TAttributes::ApplyFont
@@ -1,488 +1,484 @@
-/* WARNING: Removing unreachable block (ram,0x00018349dc9c) */
+/* WARNING: Removing unreachable block (ram,0x000183474748) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* TAttributes::ApplyFont(__CFDictionary const*, __CTFont const*, TCharStream const*, CFRange, void
const**) */
void TAttributes::ApplyFont
(TAttributes *param_1,undefined8 param_2,long param_3,undefined1 *param_4,
long *param_5,undefined8 param_6,undefined8 param_7)
{
TAttributes *pTVar1;
bool bVar2;
TCFRef<CTRun*> TVar3;
bool bVar4;
bool bVar5;
__CFDictionary *in_tmp_ldXn;
__CFDictionary *p_Var6;
undefined8 uVar7;
int iVar8;
TFont *pTVar9;
long lVar10;
__CFDictionary *p_Var11;
__CFDictionary *p_Var12;
__CFDictionary *p_Var13;
__CFDictionary *p_Var14;
long *plVar15;
__value_func<void(TAttributes&)> *p_Var16;
cfstringStruct *pcVar17;
TCFRef<CTRun*> *pTVar18;
long lVar19;
uint uVar20;
code *pcVar21;
TCFRef<CTRun*> *this;
__value_func<void(TAttributes&)> *p_Var22;
ulong uVar23;
ushort uVar24;
ushort uVar25;
__CFDictionary *in_xzr;
undefined1 *puVar26;
double dVar27;
undefined1 *puVar28;
undefined1 *local_530;
undefined8 uStack_528;
undefined8 uStack_520;
undefined8 uStack_518;
undefined8 local_510;
undefined8 uStack_508;
__CFDictionary *local_500;
undefined8 uStack_4f8;
undefined8 uStack_4f0;
undefined8 uStack_4e8;
undefined8 local_4e0;
undefined8 uStack_4d8;
__CFDictionary *local_4c8;
__CFDictionary *local_4c0;
undefined1 *local_4b8;
__value_func<void(TAttributes&)> *local_4b0;
__value_func<void(TAttributes&)> *local_4a8;
undefined8 local_4a0;
__value_func<void(TAttributes&)> a_Stack_498 [960];
__value_func<void(TAttributes&)> *local_d8;
__CFDictionary *local_d0;
undefined1 *puStack_c8;
undefined1 *puStack_c0;
long *local_b8;
undefined8 uStack_b0;
undefined8 local_a8;
__value_func<void(TAttributes&)> **pp_Stack_a0;
undefined8 local_98;
long local_88;
local_88 = *_DAT_0;
_memset(a_Stack_498,0xaa,0x3c0);
local_4b0 = (__value_func<void(TAttributes&)> *)0x0;
local_4a8 = (__value_func<void(TAttributes&)> *)0x0;
local_4a0 = 0;
uVar20 = (uint)(byte)((TCFRef<CTRun*> *)param_1)[0x32];
puVar26 = &SUB_1;
puStack_c8 = &DAT_2;
local_98 = 0xaaaaaaaaaaaa0000;
pcVar21 = ApplyAttributeHandlers;
local_d8 = a_Stack_498;
local_d0 = (__CFDictionary *)param_1;
puStack_c0 = param_4;
local_b8 = param_5;
uStack_b0 = param_6;
local_a8 = param_7;
pp_Stack_a0 = &local_4b0;
if (param_3 == 0) {
LAB_3:
_CFDictionaryApplyFunction(param_2,pcVar21,&local_d0);
uVar24 = (ushort)local_98;
TVar3 = (TCFRef<CTRun*>)((byte)((ulong)local_98 >> 8) & 1);
if (local_4b0 != local_4a8) {
TVar3 = (TCFRef<CTRun*>)0x1;
}
((TCFRef<CTRun*> *)param_1)[0x33] = TVar3;
uVar25 = (ushort)local_98 >> 8;
if ((char)puStack_c8 == '\x01') {
if (param_3 == 0) {
TCFRef<CTRun*>::Retain((TCFRef<CTRun*> *)param_1,param_1);
}
goto LAB_4;
}
uVar7 = *_DAT_5;
_CFDictionaryCreateMutableCopy(uVar7,0,param_2);
if (DAT_6 != -1) {
_dispatch_once_f(&DAT_6,(void *)0x0,GetDefaultFont()::{lambda(void*)#1}::__invoke);
}
TCFRef<CTRun*>::Retain((TCFRef<CTRun*> *)param_1,(TCFRef<CTRun*> *)param_1 + 0x10);
_CFDictionarySetValue
- ((TCFRef<CTRun*> *)param_1 + 0x10,uVar7,&cfstringStruct_1ee7c3800,in_tmp_ldXn);
+ ((TCFRef<CTRun*> *)param_1 + 0x10,uVar7,&cfstringStruct_1ee7c9a40,in_tmp_ldXn);
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)param_1;
*(undefined8 *)param_1 = uVar7;
LORelease();
_objc_release(in_tmp_ldXn);
bVar4 = false;
bVar5 = false;
p_Var22 = local_4b0;
p_Var16 = local_4a8;
}
else {
if (((byte)((TCFRef<CTRun*> *)param_1)[0x33] & 1) != 0) {
puStack_c8 = (undefined1 *)0xaaaaaaaaaaaaaa01;
pcVar21 = ApplyFontAttributeHandlers;
goto LAB_3;
}
uVar25 = 0;
uVar24 = 0;
LAB_4:
pTVar9 = (TFont *)param_1;
ApplyTextTransform((__CTFont *)param_1);
uVar20 = ((uint)pTVar9 ^ 1) & uVar20;
if ((*(ushort *)((TFont *)param_1 + 0x8a) >> 0xd & 1) == 0) {
bVar5 = false;
}
else {
local_d0 = (__CFDictionary *)&SUB_1;
OriginalFont();
lVar19 = *(long *)(in_tmp_ldXn + 0x28);
plVar15 = *(long **)(lVar19 + 0x198);
(**(code **)(*plVar15 + 0x328))(*plVar15 + 0x328);
p_Var6 = in_tmp_ldXn;
pTVar9 = (TFont *)param_1;
if ((plVar15 == (long *)0x0) &&
(lVar10 = lVar19, TFont::GetSecondaryScaleData((TFont *)param_1), p_Var6 = in_tmp_ldXn,
pTVar9 = (TFont *)param_1, lVar10 == 0)) {
bVar5 = false;
}
else {
param_1 = (TAttributes *)pTVar9;
EnsureRareData((TAttributes *)pTVar9);
puVar28 = *(undefined1 **)(lVar19 + 0x18);
p_Var11 = p_Var6;
_objc_retain((TCFRef<CTRun*> *)param_1 + 0x10);
pTVar1 = (TAttributes *)pTVar9 + 0x60;
if (p_Var6 == (__CFDictionary *)0x0) {
in_tmp_ldXn = p_Var6;
p_Var12 = p_Var11;
TCFRef<CTRun*>::Retain((TCFRef<CTRun*> *)param_1,pTVar1);
}
else {
p_Var12 = p_Var11;
_CTFontCreateCopyWithAttributes(p_Var11,0,0);
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)pTVar1;
*(__CFDictionary **)pTVar1 = p_Var12;
LORelease();
local_500 = in_xzr;
_objc_release(in_tmp_ldXn);
_objc_release(local_500);
this = (TCFRef<CTRun*> *)param_1;
EnsureBaselineAttributes(param_1);
puVar26 = puVar28;
if (((byte)((TCFRef<CTRun*> *)param_1)[0x108] & 1) == 0) {
puVar26 = (undefined1 *)0x0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0x100) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xf8) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xf0) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xe8) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xe0) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xd8) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xd0) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 200) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xc0) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xb8) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xb0) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xa8) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0xa0) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0x98) = 0;
lVar19 = 0x80;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0x90) = 0;
*(undefined8 *)((TCFRef<CTRun*> *)param_1 + 0x88) = 0;
pTVar18 = (TCFRef<CTRun*> *)param_1 + 0x90;
do {
pTVar18[-8] = (TCFRef<CTRun*>)0x0;
*pTVar18 = (TCFRef<CTRun*>)0x0;
lVar19 = lVar19 + -0x10;
pTVar18 = pTVar18 + 0x10;
} while (lVar19 != 0);
((TCFRef<CTRun*> *)param_1)[0x108] = (TCFRef<CTRun*>)0x1;
}
p_Var12 = in_tmp_ldXn;
TCFRef<CTRun*>::Retain(this,(TCFRef<CTRun*> *)param_1 + 0x110);
param_1 = (TAttributes *)this;
}
p_Var13 = in_tmp_ldXn;
CustomRatioFromAttributes(in_tmp_ldXn);
p_Var14 = in_tmp_ldXn;
TextScaleWeightMatchVariableOnly(in_tmp_ldXn);
local_500 = (__CFDictionary *)&SUB_1;
CopySecondaryScaleRecipeInternal
(&local_d0,&local_500,p_Var11,in_tmp_ldXn,p_Var13,
(ulong)p_Var12 & 0xff | 0xaaaaaaaaaaaaaa00,p_Var14);
bVar5 = in_tmp_ldXn != (__CFDictionary *)0x0;
if (in_tmp_ldXn == (__CFDictionary *)0x0) {
if (p_Var6 != (__CFDictionary *)0x0) {
if (((byte)((__CFString *)param_1)[0x32] & 1) == 0) {
puVar26 = (undefined1 *)0x0;
if ((*(long *)((__CFString *)param_1 + 0x78) != 0) &&
(*(long *)(*(long *)((__CFString *)param_1 + 0x78) + 0x28) != 0)) {
GetOriginalValueOf((__CFString *)param_1);
puVar26 = (undefined1 *)((double)puVar26 + 0.0);
}
*(undefined1 **)((TAttributes *)pTVar9 + 0x30) = puVar26;
}
if ((*(ushort *)((__CFString *)param_1 + 0x8a) >> 0xc & 1) == 0) {
GetOriginalValueOf((__CFString *)param_1);
*(double *)((TAttributes *)pTVar9 + 0x10) = (double)puVar26 + 0.0;
((TAttributes *)pTVar9)[0x18] = (TAttributes)0x1;
- *(ushort *)((__CFString *)param_1 + 0x8a) =
- *(ushort *)((__CFString *)param_1 + 0x8a) | 0x100;
}
}
}
else {
local_530 = (undefined1 *)0x0;
p_Var6 = in_tmp_ldXn;
- _CFDictionaryGetValue(in_tmp_ldXn,&cfstringStruct_1ee7cbf20);
+ _CFDictionaryGetValue(in_tmp_ldXn,&cfstringStruct_1ee7d2160);
if (p_Var6 != (__CFDictionary *)0x0) {
p_Var12 = p_Var6;
_CFGetTypeID();
p_Var13 = p_Var12;
_CFNumberGetTypeID();
if ((p_Var12 == p_Var13) || (_CFBooleanGetTypeID(), p_Var12 == p_Var13)) {
_CFNumberGetValue(p_Var6,0xd,&local_530);
}
else {
_CFStringGetTypeID();
if (p_Var12 == p_Var13) {
_CFStringGetDoubleValue(p_Var6);
local_530 = puVar26;
}
}
}
puVar28 = local_530;
if (((byte)((__CFString *)param_1)[0x32] & 1) == 0) {
dVar27 = 0.0;
if ((*(long *)((__CFString *)param_1 + 0x78) != 0) &&
(*(long *)(*(long *)((__CFString *)param_1 + 0x78) + 0x28) != 0)) {
GetOriginalValueOf((__CFString *)param_1);
}
puVar26 = (undefined1 *)((double)puVar28 + dVar27);
*(undefined1 **)((TAttributes *)pTVar9 + 0x30) = puVar26;
}
local_4b8 = (undefined1 *)0x0;
p_Var6 = in_tmp_ldXn;
- _CFDictionaryGetValue(&local_500,in_tmp_ldXn,&cfstringStruct_1ee7cbee0);
+ _CFDictionaryGetValue(&local_500,in_tmp_ldXn,&cfstringStruct_1ee7d2120);
if (p_Var6 != (__CFDictionary *)0x0) {
p_Var12 = p_Var6;
_CFGetTypeID();
p_Var13 = p_Var12;
_CFNumberGetTypeID();
if ((p_Var12 == p_Var13) || (_CFBooleanGetTypeID(), p_Var12 == p_Var13)) {
_CFNumberGetValue(p_Var6,0xd,&local_4b8);
}
else {
_CFStringGetTypeID();
if (p_Var12 == p_Var13) {
_CFStringGetDoubleValue(p_Var6);
local_4b8 = puVar26;
}
}
}
puVar28 = local_4b8;
if ((*(ushort *)((__CFString *)param_1 + 0x8a) >> 0xc & 1) == 0) {
GetOriginalValueOf((__CFString *)param_1);
*(double *)((TAttributes *)pTVar9 + 0x10) = (double)puVar28 + (double)puVar26;
((TAttributes *)pTVar9)[0x18] = (TAttributes)0x1;
- *(ushort *)((__CFString *)param_1 + 0x8a) =
- *(ushort *)((__CFString *)param_1 + 0x8a) | 0x100;
- }
- _CFDictionaryGetValue(&local_500,in_tmp_ldXn,&cfstringStruct_1ee7c3800);
+ }
+ _CFDictionaryGetValue(&local_500,in_tmp_ldXn,&cfstringStruct_1ee7c9a40);
p_Var6 = in_tmp_ldXn;
_objc_retain();
LOAcquire();
LORelease();
in_tmp_ldXn = (__CFDictionary *)0x0;
local_4c8 = in_xzr;
local_4c0 = p_Var6;
if (p_Var6 != (__CFDictionary *)0x0) {
LOAcquire();
LORelease();
LOAcquire();
in_tmp_ldXn = *(__CFDictionary **)((__CFString *)param_1 + 0x10);
*(__CFDictionary **)((__CFString *)param_1 + 0x10) = p_Var6;
LORelease();
local_4c0 = in_xzr;
_objc_release(in_tmp_ldXn);
((__CFString *)param_1)[0x30] = (__CFString)0x1;
}
_objc_release(local_4c0);
_objc_release(local_4c8);
}
_objc_release(local_500);
_objc_release(p_Var11);
}
_objc_release(local_d0);
}
bVar4 = true;
p_Var22 = local_4b0;
p_Var16 = local_4a8;
}
for (; p_Var22 != p_Var16; p_Var22 = p_Var22 + 0x20) {
puStack_c8 = &SUB_1;
local_d0 = (__CFDictionary *)&SUB_1;
local_b8 = (long *)&SUB_1;
puStack_c0 = &SUB_1;
std::__function::__value_func<void(TAttributes&)>::__value_func_abi_fn200100_
((__value_func<void(TAttributes&)> *)param_1,(__value_func *)&local_d0);
if (local_b8 == (long *)0x0) {
/* WARNING: Subroutine does not return */
std::__throw_bad_function_call_abi_fn200100_();
}
(**(code **)(*local_b8 + 0x30))(local_b8,param_1);
std::__function::__value_func<void(TAttributes&)>::~__value_func_abi_fn200100_
((__value_func<void(TAttributes&)> *)param_1);
}
uVar23 = *(ulong *)(in_tmp_ldXn + 0x28);
plVar15 = *(long **)(uVar23 + 0x198);
(**(code **)(*plVar15 + 0xa0))();
p_Var6 = in_tmp_ldXn;
if (((uint)plVar15 >> 0xd & 1) != 0) {
plVar15 = *(long **)(uVar23 + 0x198);
(**(code **)(*plVar15 + 0x2e8))();
p_Var6 = in_tmp_ldXn;
if (((ulong)plVar15 & 1) == 0) {
TFont::CopyAttribute(uVar23,(__CFString *)0x31);
p_Var6 = in_tmp_ldXn;
_objc_release(local_d0);
if ((in_tmp_ldXn == (__CFDictionary *)0x0) &&
(uVar7 = _DAT_7, _objc_msgSend_isMainThread(), (int)uVar7 != 0)) {
param_1[0x89] = (TAttributes)((byte)param_1[0x89] | 0x20);
if ((DAT_8 & 1) == 0) {
- iVar8 = -0x1311a0c8;
+ iVar8 = -0x13145b40;
___cxa_guard_acquire();
if (iVar8 != 0) {
- pcVar17 = &cfstringStruct_1ee7cc340;
+ pcVar17 = &cfstringStruct_1ee7d2580;
_NSClassFromString();
DAT_9 = pcVar17;
___cxa_guard_release(&DAT_8);
}
}
if (DAT_10 != -1) {
_dispatch_once(&DAT_10,&___block_literal_global);
}
pcVar17 = DAT_9;
_objc_msgSend_sharedApplication();
iVar8 = (int)pcVar17;
_objc_msgSend_effectiveAppearance();
_objc_msgSend_bestMatchFromAppearancesWithNames_();
_objc_msgSend_isEqualToString_();
if (iVar8 != 0) {
CreateCopyOfFontWithPalette((__CTFont *)&local_d0,p_Var6);
bVar2 = p_Var6 != (__CFDictionary *)0x0;
p_Var6 = (__CFDictionary *)0x0;
if (bVar2) {
LOAcquire();
LORelease();
LOAcquire();
p_Var6 = *(__CFDictionary **)(param_1 + 0x10);
*(__CFDictionary **)(param_1 + 0x10) = local_d0;
LORelease();
local_d0 = in_xzr;
_objc_release(p_Var6);
param_1[0x30] = (TAttributes)0x1;
}
_objc_release(local_d0);
}
}
}
}
lVar19 = *(long *)(param_1 + 0x78);
if (((lVar19 == 0) || (*(char *)(lVar19 + 0x18) != '\x01')) ||
(*(double *)(lVar19 + 0x10) == 0.0 || (uVar25 & 1) != 0)) {
uVar24 = uVar24 & 0xff;
if ((uVar25 & uVar24 != 1) != 1) goto LAB_11;
}
else {
if (bVar5) goto LAB_11;
uVar24 = 0;
}
local_d0 = (__CFDictionary *)&SUB_1;
CopyOfFontWithLigatureSetting(&local_d0,p_Var6,uVar24);
bVar5 = p_Var6 != (__CFDictionary *)0x0;
p_Var6 = (__CFDictionary *)0x0;
if (bVar5) {
LOAcquire();
LORelease();
LOAcquire();
p_Var6 = *(__CFDictionary **)(param_1 + 0x10);
*(__CFDictionary **)(param_1 + 0x10) = local_d0;
LORelease();
local_d0 = in_xzr;
_objc_release(p_Var6);
param_1[0x30] = (TAttributes)0x1;
}
_objc_release(local_d0);
LAB_11:
if (param_1[0x32] == (TAttributes)0x1) {
if ((uVar20 & 1) == 0) {
pTVar1 = param_1 + 0x38;
if (param_1[0x68] == (TAttributes)0x0) {
pTVar1 = _DAT_12;
}
local_b8 = *(long **)pTVar1;
puStack_c0 = *(undefined1 **)(pTVar1 + 0x10);
puStack_c8 = *(undefined1 **)(pTVar1 + 8);
local_d0 = *(__CFDictionary **)(pTVar1 + 0x18);
local_a8 = *(undefined8 *)(pTVar1 + 0x28);
uStack_b0 = *(undefined8 *)(pTVar1 + 0x20);
uStack_4f8 = 0x3ff0000000000000;
local_500 = (__CFDictionary *)0x0;
uStack_4e8 = 0;
uStack_4f0 = 0xbff0000000000000;
uStack_4d8 = 0;
local_4e0 = 0;
_CGAffineTransformConcat(&local_530,&local_d0,&local_500);
*(undefined8 *)(param_1 + 0x40) = uStack_528;
*(undefined1 **)(param_1 + 0x38) = local_530;
*(undefined8 *)(param_1 + 0x50) = uStack_518;
*(undefined8 *)(param_1 + 0x48) = uStack_520;
*(undefined8 *)(param_1 + 0x60) = uStack_508;
*(undefined8 *)(param_1 + 0x58) = local_510;
param_1[0x68] = (TAttributes)0x1;
}
VerticalCopyOf((__CTFont *)p_Var6);
if (p_Var6 != (__CFDictionary *)0x0) {
LOAcquire();
LORelease();
LOAcquire();
uVar7 = *(undefined8 *)(param_1 + 0x10);
*(__CFDictionary **)(param_1 + 0x10) = local_d0;
LORelease();
local_d0 = in_xzr;
_objc_release(uVar7);
param_1[0x30] = (TAttributes)0x1;
}
_objc_release(local_d0);
}
if (bVar4) {
SetLayoutAttributesForFont(param_1);
}
if (local_4b0 != (__value_func<void(TAttributes&)> *)0x0) {
p_Var16 = local_4a8;
p_Var22 = local_4b0;
if (local_4a8 != local_4b0) {
do {
p_Var16 = p_Var16 + -0x20;
std::__function::__value_func<void(TAttributes&)>::~__value_func_abi_fn200100_(p_Var22);
} while (p_Var16 != p_Var22);
}
local_4a8 = p_Var22;
if (local_4b0 < a_Stack_498 || (__value_func<void(TAttributes&)> *)&local_d8 <= local_4b0) {
operator_delete(local_4b0);
}
}
if (*_DAT_0 != local_88) {
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,sig,address,called |
| ratio | 0.39 |
| i_ratio | 0.51 |
| m_ratio | 1.0 |
| b_ratio | 0.91 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | ApplyPairPosAccelerated | ApplyPairPosAccelerated |
| fullname | OTL::GPOS::ApplyPairPosAccelerated | OTL::GPOS::ApplyPairPosAccelerated |
| refcount | 2 | 2 |
length |
3936 | 3952 |
called |
Expand for full list:TRunGlue::GetAdvance |
Expand for full list:TRunGlue::GetAdvance |
| calling | TOpenTypePositioningEngine::PositionRuns | TOpenTypePositioningEngine::PositionRuns |
| paramcount | 4 | 3 |
address |
1834a3a94 | 1833a2720 |
sig |
undefined __thiscall ApplyPairPosAccelerated(GPOS * this, Lookup * param_1, uint param_2, TGlyphIterator * param_3) | undefined __thiscall ApplyPairPosAccelerated(GPOS * this, Lookup * param_1, TGlyphIterator * param_2) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- OTL::GPOS::ApplyPairPosAccelerated called
+++ OTL::GPOS::ApplyPairPosAccelerated called
@@ -23,0 +24 @@
+std::vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>>::__base_destruct_at_end[abi:fn200100]--- OTL::GPOS::ApplyPairPosAccelerated
+++ OTL::GPOS::ApplyPairPosAccelerated
@@ -1,895 +1,908 @@
-/* WARNING: Heritage AFTER dead removal. Example location: x0 : 0x0001834a3b7c */
+/* WARNING: Heritage AFTER dead removal. Example location: x0 : 0x0001833a280c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Restarted to delay deadcode elimination for space: register */
-/* OTL::GPOS::ApplyPairPosAccelerated(OTL::Lookup const&, unsigned int, TGlyphIterator&) const */
+/* OTL::GPOS::ApplyPairPosAccelerated(OTL::Lookup const&, TGlyphIterator&) const */
undefined4 __thiscall
-OTL::GPOS::ApplyPairPosAccelerated(GPOS *this,Lookup *param_1,uint param_2,TGlyphIterator *param_3)
+OTL::GPOS::ApplyPairPosAccelerated(GPOS *this,Lookup *param_1,TGlyphIterator *param_2)
{
undefined8 *****pppppuVar1;
ulong *puVar2;
long *plVar3;
undefined2 *puVar4;
undefined8 *****pppppuVar5;
void *pvVar6;
- int iVar7;
- ushort uVar8;
- ushort uVar9;
- uint uVar10;
- uint uVar11;
- ulong uVar12;
- undefined8 ****ppppuVar13;
- code *pcVar14;
- uint uVar15;
- Lookup *pLVar16;
- Lookup *pLVar17;
- ClassDefTable *pCVar18;
- ValueRecord *pVVar19;
- ValueRecord *pVVar20;
- undefined2 *puVar21;
- long lVar22;
- ulong *puVar23;
- void *pvVar24;
- void *pvVar25;
- ulong uVar26;
- Lookup *in_x3;
- uint uVar27;
- PairPosFormat1 *this_00;
- long lVar28;
- long *plVar29;
- long lVar30;
+ long lVar7;
+ long lVar8;
+ int iVar9;
+ ushort uVar10;
+ ushort uVar11;
+ uint uVar12;
+ uint uVar13;
+ uint uVar14;
+ undefined8 ****ppppuVar15;
+ code *pcVar16;
+ uint uVar17;
+ uint uVar18;
+ Lookup *pLVar19;
+ ushort **ppuVar20;
+ long lVar21;
+ ushort *puVar22;
+ undefined2 *puVar23;
+ long lVar24;
+ ulong *puVar25;
+ void *pvVar26;
+ void *pvVar27;
+ Lookup *in_x2;
+ ushort *puVar28;
+ long lVar29;
+ long *plVar30;
ushort *puVar31;
ulong uVar32;
- long *plVar33;
- ulong uVar34;
- ulong uVar35;
+ ulong uVar33;
+ long *plVar34;
+ ClassDefTable *pCVar35;
ulong uVar36;
undefined8 *puVar37;
long *plVar38;
- long *plVar39;
+ ClassDefTable *pCVar39;
long *plVar40;
long *plVar41;
long *plVar42;
- uint uVar43;
+ long *plVar43;
long lVar44;
TGlyph *pTVar45;
long lVar46;
- long lVar47;
- TRunGlue *this_01;
- PairPosFormat1 *this_02;
- ClassDefTable *this_03;
- ulong uVar48;
- undefined4 uVar49;
- ulong uVar50;
- long lVar51;
- ValueRecord *pVVar52;
+ TRunGlue *this_00;
+ ClassDefTable *this_01;
+ TGlyph *this_02;
+ uint uVar47;
+ long lVar48;
+ ushort **ppuVar49;
+ ClassDefTable *pCVar50;
+ ushort *puVar51;
+ long lVar52;
long lVar53;
- void *pvVar54;
- undefined2 uVar55;
- ushort uVar56;
+ undefined4 uVar54;
+ void *pvVar55;
+ undefined2 uVar56;
ushort uVar57;
- float fVar58;
+ ushort uVar58;
float fVar59;
- undefined8 uVar60;
- ulong local_388;
+ float fVar60;
+ undefined8 uVar61;
+ ClassDefTable *local_388;
size_t local_380;
undefined4 local_324;
- ValueRecord *local_2d0;
+ ushort *local_2d0;
undefined8 local_2c8;
- ValueRecord *local_2c0;
+ ushort *local_2c0;
undefined8 uStack_2b8;
Lookup *local_2b0;
ushort local_2a2;
undefined *local_2a0;
undefined2 *puStack_298;
undefined **local_288;
undefined *local_280;
undefined2 *puStack_278;
undefined **local_268;
undefined *local_260;
ushort *puStack_258;
undefined **local_248;
undefined *local_240;
- ValueRecord **ppVStack_238;
+ ushort **ppuStack_238;
undefined **local_228;
undefined8 ****local_220 [4];
undefined1 *puStack_200;
undefined1 *local_1f8;
undefined1 *puStack_1f0;
undefined1 *local_1e8;
undefined1 *puStack_1e0;
undefined1 *local_1d8;
undefined1 *puStack_1d0;
undefined1 *local_1c8;
undefined1 *puStack_1c0;
undefined1 *local_1b8;
undefined1 *puStack_1b0;
undefined1 *local_1a8;
undefined1 *puStack_1a0;
undefined1 *local_198;
undefined1 *puStack_190;
undefined1 *local_188;
undefined1 *puStack_180;
undefined1 *local_178;
undefined1 *puStack_170;
undefined1 *local_168;
undefined1 *puStack_160;
undefined1 *local_158;
undefined1 *puStack_150;
undefined1 *local_148;
undefined1 *puStack_140;
undefined1 *local_138;
undefined1 *puStack_130;
undefined1 *local_128;
undefined1 *puStack_120;
undefined1 *local_118;
undefined1 *puStack_110;
undefined1 *local_108;
undefined1 *puStack_100;
undefined1 *puStack_f8;
undefined1 *puStack_f0;
undefined1 *local_e8;
undefined1 *puStack_e0;
undefined1 *puStack_d8;
undefined1 *puStack_d0;
undefined1 *local_c8;
undefined1 *puStack_c0;
undefined1 *puStack_b8;
undefined1 *puStack_b0;
undefined1 *local_a8;
undefined1 *puStack_a0;
undefined1 *puStack_98;
undefined1 *puStack_90;
undefined8 ****local_88;
long local_80;
- double dVar61;
+ double dVar62;
- uVar26 = (ulong)param_2;
local_80 = *_DAT_0;
- this_00 = *(PairPosFormat1 **)(param_1 + 0x28);
+ puVar28 = *(ushort **)(param_1 + 0x28);
+ lVar7 = *(long *)(param_2 + 0x60);
+ lVar8 = *(long *)(param_2 + 0x68);
pppppuVar1 = local_220 + 3;
puStack_a0 = &SUB_1;
local_a8 = &SUB_1;
puStack_90 = &SUB_1;
puStack_98 = &SUB_1;
puStack_c0 = &SUB_1;
local_c8 = &SUB_1;
puStack_b0 = &SUB_1;
puStack_b8 = &SUB_1;
puStack_e0 = &SUB_1;
local_e8 = &SUB_1;
puStack_d0 = &SUB_1;
puStack_d8 = &SUB_1;
puStack_100 = &SUB_1;
local_108 = &SUB_1;
puStack_f0 = &SUB_1;
puStack_f8 = &SUB_1;
puStack_110 = &SUB_1;
local_118 = &SUB_1;
puStack_120 = &SUB_1;
local_128 = &SUB_1;
puStack_130 = &SUB_1;
local_138 = &SUB_1;
puStack_140 = &SUB_1;
local_148 = &SUB_1;
puStack_150 = &SUB_1;
local_158 = &SUB_1;
puStack_160 = &SUB_1;
local_168 = &SUB_1;
puStack_170 = &SUB_1;
local_178 = &SUB_1;
puStack_180 = &SUB_1;
local_188 = &SUB_1;
puStack_190 = &SUB_1;
local_198 = &SUB_1;
puStack_1a0 = &SUB_1;
local_1a8 = &SUB_1;
puStack_1b0 = &SUB_1;
local_1b8 = &SUB_1;
puStack_1c0 = &SUB_1;
local_1c8 = &SUB_1;
puStack_1d0 = &SUB_1;
local_1d8 = &SUB_1;
puStack_1e0 = &SUB_1;
local_1e8 = &SUB_1;
puStack_1f0 = &SUB_1;
local_1f8 = &SUB_1;
puStack_200 = &SUB_1;
local_220[3] = (undefined8 ****)&SUB_1;
- uVar50 = (ulong)param_3 & 0xffffffff;
+ pCVar50 = (ClassDefTable *)((ulong)(lVar8 - lVar7) >> 6 & 0xffff);
local_220[0] = (undefined8 *****)0x0;
local_220[1] = (undefined8 *****)0x0;
local_220[2] = (undefined8 *****)0x0;
local_88 = pppppuVar1;
- if ((int)param_3 != 0) {
- uVar48 = uVar50 << 5 | 0x18;
- if (uVar48 < 0x199) {
- local_88 = (undefined8 ****)((long)local_220 + uVar48);
+ if (pCVar50 != (ClassDefTable *)0x0) {
+ uVar33 = (long)pCVar50 << 5 | 0x18;
+ if (uVar33 < 0x199) {
+ local_88 = (undefined8 ****)((long)local_220 + uVar33);
local_220[0] = pppppuVar1;
}
else {
local_220[0] = operator_new(param_1,0x1070c004c94a4e5);
}
- pppppuVar5 = (undefined8 *****)local_220[0] + uVar50 * 4;
+ pppppuVar5 = (undefined8 *****)local_220[0] + (long)pCVar50 * 4;
local_220[2] = pppppuVar5;
- _bzero(local_220[0],uVar50 << 5);
+ _bzero(local_220[0],(long)pCVar50 << 5);
local_220[1] = pppppuVar5;
}
- lVar28 = *(long *)(param_1 + 0x10);
- lVar47 = *(long *)(lVar28 + 0x198);
- _os_unfair_lock_lock_with_options(lVar28 + 0x1c8,0x50000);
+ lVar29 = *(long *)(param_1 + 0x10);
+ lVar48 = *(long *)(lVar29 + 0x198);
+ _os_unfair_lock_lock_with_options(lVar29 + 0x1c8,0x50000);
lVar44 = *(long *)(param_1 + 0x10);
- pLVar16 = in_x3;
- TGlyphIterator::NextCoveredBy(in_x3);
- if ((int)pLVar16 == 0) {
+ pLVar19 = in_x2;
+ TGlyphIterator::NextCoveredBy(in_x2);
+ if ((int)pLVar19 == 0) {
LAB_2:
- uVar49 = 0;
+ uVar54 = 0;
LAB_3:
- _os_unfair_lock_unlock(lVar28 + 0x1c8);
+ _os_unfair_lock_unlock(lVar29 + 0x1c8);
if (((undefined8 *****)local_220[0] != (undefined8 *****)0x0) &&
((local_220[1] = local_220[0], local_220[0] < pppppuVar1 || (&local_88 <= local_220[0])))) {
operator_delete(local_220[0]);
}
- if (*_DAT_0 != local_80) {
+ if (*_DAT_0 == local_80) {
+ return uVar54;
+ }
/* WARNING: Subroutine does not return */
- ___stack_chk_fail();
- }
- return uVar49;
+ ___stack_chk_fail();
}
local_324 = 0;
- puVar2 = (ulong *)(lVar47 + 0x1d0);
+ puVar2 = (ulong *)(lVar48 + 0x1d0);
plVar3 = (long *)(lVar44 + 0x1e0);
LAB_4:
- this_01 = *(TRunGlue **)(in_x3 + 0x30);
- local_2d0 = *(ValueRecord **)in_x3;
- local_2c8 = (TGlyph *)this_01;
- TRunGlue::TGlyph::glyphID((TGlyph *)this_01);
- uVar43 = (uint)pLVar16;
- pLVar17 = in_x3;
- TGlyphIterator::Next((TGlyphIterator *)this_01,(long)in_x3);
- uVar15 = (uint)pLVar17;
- uVar49 = local_324;
- if (uVar15 != 0) {
- pTVar45 = *(TGlyph **)(in_x3 + 0x30);
- local_2d0 = *(ValueRecord **)in_x3;
+ this_00 = *(TRunGlue **)(in_x2 + 0x30);
+ local_2d0 = *(ushort **)in_x2;
+ ppuVar20 = &local_2d0;
+ local_2c8 = (TGlyph *)this_00;
+ TRunGlue::TGlyph::glyphID((TGlyph *)this_00);
+ pLVar19 = in_x2;
+ TGlyphIterator::Next((TGlyphIterator *)this_00,(long)in_x2);
+ uVar17 = (uint)pLVar19;
+ uVar54 = local_324;
+ if (uVar17 != 0) {
+ pTVar45 = *(TGlyph **)(in_x2 + 0x30);
+ local_2d0 = *(ushort **)in_x2;
local_2c8 = pTVar45;
- TRunGlue::TGlyph::glyphID((TGlyph *)this_01);
- *(TRunGlue **)(in_x3 + 0x30) = this_01;
- uVar10 = uVar15 | uVar43 << 0x10;
- plVar42 = (long *)(ulong)uVar10;
- plVar29 = *(long **)(lVar44 + 0x1d8);
- if (plVar29 != (long *)0x0) {
- uVar60 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)plVar29 >> 0x18))
- ,CONCAT12(POPCOUNT((char)((ulong)plVar29
+ TRunGlue::TGlyph::glyphID((TGlyph *)this_00);
+ *(TRunGlue **)(in_x2 + 0x30) = this_00;
+ uVar47 = (uint)ppuVar20;
+ uVar12 = uVar17 | uVar47 << 0x10;
+ plVar43 = (long *)(ulong)uVar12;
+ plVar30 = *(long **)(lVar44 + 0x1d8);
+ if (plVar30 != (long *)0x0) {
+ uVar61 = CONCAT17(POPCOUNT((char)((ulong)plVar30 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar30 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar30 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar30 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar30 >> 0x18))
+ ,CONCAT12(POPCOUNT((char)((ulong)plVar30
>> 0x10)),
CONCAT11(POPCOUNT((char)((
- ulong)plVar29 >> 8)),POPCOUNT((char)plVar29)))))))
+ ulong)plVar30 >> 8)),POPCOUNT((char)plVar30)))))))
);
- uVar55 = NEON_uaddlv(uVar60,1);
- uVar48 = CONCAT62((int6)((ulong)uVar60 >> 0x10),uVar55) & 0xffffffff;
- uVar27 = (uint)plVar29;
- if (uVar48 < 2) {
- plVar33 = (long *)(ulong)(uVar27 - 1 & uVar10);
+ uVar56 = NEON_uaddlv(uVar61,1);
+ uVar33 = CONCAT62((int6)((ulong)uVar61 >> 0x10),uVar56) & 0xffffffff;
+ uVar18 = (uint)plVar30;
+ if (uVar33 < 2) {
+ plVar34 = (long *)(ulong)(uVar18 - 1 & uVar12);
}
else {
- plVar33 = plVar42;
- if (plVar29 <= plVar42) {
- uVar11 = 0;
- if (uVar27 != 0) {
- uVar11 = uVar10 / uVar27;
+ plVar34 = plVar43;
+ if (plVar30 <= plVar43) {
+ uVar13 = 0;
+ if (uVar18 != 0) {
+ uVar13 = uVar12 / uVar18;
}
- plVar33 = (long *)(ulong)(uVar10 - uVar11 * uVar27);
+ plVar34 = (long *)(ulong)(uVar12 - uVar13 * uVar18);
}
}
- plVar38 = *(long **)(*(long *)(lVar44 + 0x1d0) + (long)plVar33 * 8);
+ plVar38 = *(long **)(*(long *)(lVar44 + 0x1d0) + (long)plVar34 * 8);
if ((plVar38 != (long *)0x0) && (plVar38 = (long *)*plVar38, plVar38 != (long *)0x0)) {
do {
- plVar40 = (long *)plVar38[1];
- if (plVar40 == plVar42) {
- if (*(uint *)(plVar38 + 2) == uVar10) {
- fVar58 = *(float *)((long)plVar38 + 0x14);
- dVar61 = (double)(ulong)(uint)fVar58;
- if (fVar58 == 0.0) goto LAB_5;
- lVar46 = *(long *)in_x3;
- TRunGlue::GetAdvance(this_01,lVar46);
+ plVar41 = (long *)plVar38[1];
+ if (plVar41 == plVar43) {
+ if (*(uint *)(plVar38 + 2) == uVar12) {
+ fVar59 = *(float *)((long)plVar38 + 0x14);
+ dVar62 = (double)(ulong)(uint)fVar59;
+ if (fVar59 == 0.0) goto LAB_5;
+ lVar46 = *(long *)in_x2;
+ TRunGlue::GetAdvance(this_00,lVar46);
TRunGlue::SetAdvance
- (dVar61 + (double)fVar58 * *(double *)(lVar46 + 0x208),lVar46,this_01);
+ (dVar62 + (double)fVar59 * *(double *)(lVar46 + 0x208),lVar46,this_00);
goto LAB_6;
}
}
else {
- if (uVar48 < 2) {
- plVar40 = (long *)((ulong)plVar40 & (long)plVar29 - 1U);
- }
- else if (plVar29 <= plVar40) {
+ if (uVar33 < 2) {
+ plVar41 = (long *)((ulong)plVar41 & (long)plVar30 - 1U);
+ }
+ else if (plVar30 <= plVar41) {
uVar36 = 0;
- if (plVar29 != (long *)0x0) {
- uVar36 = (ulong)plVar40 / (ulong)plVar29;
- }
- plVar40 = (long *)((long)plVar40 - uVar36 * (long)plVar29);
- }
- if (plVar40 != plVar33) break;
+ if (plVar30 != (long *)0x0) {
+ uVar36 = (ulong)plVar41 / (ulong)plVar30;
+ }
+ plVar41 = (long *)((long)plVar41 - uVar36 * (long)plVar30);
+ }
+ if (plVar41 != plVar34) break;
}
plVar38 = (long *)*plVar38;
} while (plVar38 != (long *)0x0);
}
}
- if ((int)param_3 != 0) {
- lVar53 = 0;
- lVar51 = 0;
- uVar48 = 0;
- lVar46 = 8;
+ if ((lVar8 - lVar7 & 0x3fffc0U) != 0) {
+ lVar52 = 0;
+ lVar46 = 0;
+ this_01 = (ClassDefTable *)0x0;
+ lVar53 = 8;
+ ppuVar49 = ppuVar20;
do {
- lVar30 = *(long *)(uVar26 + 0x60);
- if ((ulong)(*(long *)(uVar26 + 0x68) - lVar30 >> 6) <= uVar48) goto LAB_2;
- lVar22 = lVar30 + lVar51 * 8;
- pcVar14 = *(code **)(lVar22 + 0x18);
- uVar36 = *(ulong *)(lVar22 + 0x20);
- lVar30 = lVar30 + ((long)uVar36 >> 1);
- if ((uVar36 & 1) != 0) {
- pcVar14 = *(code **)(*(long *)(lVar30 + lVar51 * 8 + 8) + ((ulong)pcVar14 & 0xffffffff));
+ lVar21 = *(long *)(param_2 + 0x60);
+ if ((ClassDefTable *)(*(long *)(param_2 + 0x68) - lVar21 >> 6) <= this_01)
+ goto LAB_2;
+ lVar24 = lVar21 + lVar46 * 8;
+ pcVar16 = *(code **)(lVar24 + 0x18);
+ uVar33 = *(ulong *)(lVar24 + 0x20);
+ lVar21 = lVar21 + ((long)uVar33 >> 1);
+ if ((uVar33 & 1) != 0) {
+ pcVar16 = *(code **)(*(long *)(lVar21 + lVar46 * 8 + 8) + ((ulong)pcVar16 & 0xffffffff));
}
- pCVar18 = (ClassDefTable *)(lVar30 + lVar46);
- (*pcVar14)(pCVar18,uVar43);
- ppppuVar13 = local_220[0];
- if ((int)pCVar18 != 0) {
- if ((ulong)((long)local_220[1] - (long)local_220[0] >> 5) <= uVar48) {
+ lVar21 = lVar21 + lVar53;
+ (*pcVar16)(lVar21,ppuVar49);
+ ppppuVar15 = local_220[0];
+ uVar18 = (uint)lVar21;
+ if (uVar18 != 0) {
+ if ((ClassDefTable *)((long)local_220[1] - (long)local_220[0] >> 5) <= this_01) {
LAB_7:
/* WARNING: Does not return */
- pcVar14 = (code *)SoftwareBreakpoint(1,0x1834a49ec);
- (*pcVar14)();
+ pcVar16 = (code *)SoftwareBreakpoint(1,0x1833a3688);
+ (*pcVar16)();
}
- pVVar52 = *(ValueRecord **)((long)local_220[0] + lVar53);
- this_03 = pCVar18;
- if (pVVar52 == (ValueRecord *)0x0) {
- if (uVar48 < (ulong)(*(long *)(uVar26 + 0x68) - *(long *)(uVar26 + 0x60) >> 6)) {
- pVVar52 = *(ValueRecord **)(*(long *)(uVar26 + 0x60) + lVar51 * 8);
+ puVar51 = *(ushort **)((long)local_220[0] + lVar52);
+ if (puVar51 == (ushort *)0x0) {
+ if (this_01 < (ClassDefTable *)
+ (*(long *)(param_2 + 0x68) - *(long *)(param_2 + 0x60) >> 6)) {
+ puVar51 = *(ushort **)(*(long *)(param_2 + 0x60) + lVar46 * 8);
}
else {
- pVVar52 = (ValueRecord *)0x0;
- }
- uVar49 = 0;
- if ((pVVar52 < *(ValueRecord **)(param_1 + 0x20)) || (this_00 < pVVar52 + 8))
+ puVar51 = (ushort *)0x0;
+ }
+ uVar54 = 0;
+ if ((puVar51 < *(ushort **)(param_1 + 0x20)) || (puVar28 < puVar51 + 4))
goto LAB_3;
- uVar8 = *(ushort *)pVVar52 >> 8 | *(ushort *)pVVar52 << 8;
- if (uVar8 == 2) {
- if (this_00 < pVVar52 + 0x10) goto LAB_2;
- pVVar19 = pVVar52 + ((uint)(*(ushort *)(pVVar52 + 8) >> 8) |
- (*(ushort *)(pVVar52 + 8) & 0xff00ff) << 8);
- if (this_00 < pVVar19 + 2) goto LAB_2;
- uVar8 = *(ushort *)pVVar19 >> 8 | *(ushort *)pVVar19 << 8;
- if (uVar8 == 2) {
- uVar8 = *(ushort *)(pVVar19 + 2);
- lVar30 = (ulong)((uint)(uVar8 >> 8) | (uVar8 & 0xff00ff) << 8) * 6 + 4;
- }
- else if (uVar8 == 1) {
- lVar30 = (ulong)((uint)(*(ushort *)(pVVar19 + 4) >> 8) |
- (*(ushort *)(pVVar19 + 4) & 0xff00ff) << 8) * 2 + 6;
+ uVar10 = *puVar51 >> 8 | *puVar51 << 8;
+ if (uVar10 == 2) {
+ if (puVar28 < puVar51 + 8) goto LAB_2;
+ puVar22 = (ushort *)
+ ((long)puVar51 +
+ (ulong)((uint)(puVar51[4] >> 8) | (puVar51[4] & 0xff00ff) << 8));
+ if (puVar28 < puVar22 + 1) goto LAB_2;
+ uVar10 = *puVar22 >> 8 | *puVar22 << 8;
+ if (uVar10 == 2) {
+ uVar10 = puVar22[1];
+ lVar24 = (ulong)((uint)(uVar10 >> 8) | (uVar10 & 0xff00ff) << 8) * 6 + 4;
+ }
+ else if (uVar10 == 1) {
+ lVar24 = (ulong)((uint)(puVar22[2] >> 8) | (puVar22[2] & 0xff00ff) << 8) * 2 + 6;
}
else {
- lVar30 = 0;
- }
- uVar49 = 0;
- if ((pVVar19 + lVar30 < pVVar19) || (this_00 < pVVar19 + lVar30)) goto LAB_3;
- pVVar20 = pVVar52 + ((uint)(*(ushort *)(pVVar52 + 10) >> 8) |
- (*(ushort *)(pVVar52 + 10) & 0xff00ff) << 8);
- if (this_00 < pVVar20 + 2) goto LAB_2;
- uVar8 = *(ushort *)pVVar20 >> 8 | *(ushort *)pVVar20 << 8;
- if (uVar8 == 2) {
- uVar8 = *(ushort *)(pVVar20 + 2);
- lVar30 = (ulong)((uint)(uVar8 >> 8) | (uVar8 & 0xff00ff) << 8) * 6 + 4;
- }
- else if (uVar8 == 1) {
- lVar30 = (ulong)((uint)(*(ushort *)(pVVar20 + 4) >> 8) |
- (*(ushort *)(pVVar20 + 4) & 0xff00ff) << 8) * 2 + 6;
+ lVar24 = 0;
+ }
+ uVar54 = 0;
+ if (((ushort *)(lVar24 + (long)puVar22) < puVar22) ||
+ (puVar28 < (ushort *)(lVar24 + (long)puVar22))) goto LAB_3;
+ puVar31 = (ushort *)
+ ((long)puVar51 +
+ (ulong)((uint)(puVar51[5] >> 8) | (puVar51[5] & 0xff00ff) << 8));
+ if (puVar28 < puVar31 + 1) goto LAB_2;
+ uVar10 = *puVar31 >> 8 | *puVar31 << 8;
+ if (uVar10 == 2) {
+ uVar10 = puVar31[1];
+ lVar24 = (ulong)((uint)(uVar10 >> 8) | (uVar10 & 0xff00ff) << 8) * 6 + 4;
+ }
+ else if (uVar10 == 1) {
+ lVar24 = (ulong)((uint)(puVar31[2] >> 8) | (puVar31[2] & 0xff00ff) << 8) * 2 + 6;
}
else {
- lVar30 = 0;
- }
- uVar49 = 0;
- if ((pVVar20 + lVar30 < pVVar20) || (this_00 < pVVar20 + lVar30)) goto LAB_3;
- _os_unfair_lock_lock_with_options(lVar47 + 0x1ac,0x50000);
- if ((uVar48 < (ulong)(*(long *)(lVar47 + 0x1b8) - *(long *)(lVar47 + 0x1b0) >> 3)) &&
- (puVar31 = *(ushort **)(*(long *)(lVar47 + 0x1b0) + lVar51),
+ lVar24 = 0;
+ }
+ uVar54 = 0;
+ if (((ushort *)(lVar24 + (long)puVar31) < puVar31) ||
+ (puVar28 < (ushort *)(lVar24 + (long)puVar31))) goto LAB_3;
+ _os_unfair_lock_lock_with_options(lVar48 + 0x1ac,0x50000);
+ if ((this_01 < (ClassDefTable *)
+ (*(long *)(lVar48 + 0x1b8) - *(long *)(lVar48 + 0x1b0) >> 3)) &&
+ (puVar31 = *(ushort **)(*(long *)(lVar48 + 0x1b0) + lVar46),
puVar31 != (ushort *)0x0)) {
- uVar8 = *puVar31;
- uVar9 = puVar31[1];
- puVar37 = (undefined8 *)((long)ppppuVar13 + lVar53);
- *puVar37 = pVVar52;
- *(undefined4 *)((long)ppppuVar13 + lVar51 * 4 + 8) = 2;
- *(ushort *)((long)puVar37 + 0xc) = uVar8;
- *(ushort *)((long)puVar37 + 0xe) = uVar9;
+ uVar10 = *puVar31;
+ uVar11 = puVar31[1];
+ puVar37 = (undefined8 *)((long)ppppuVar15 + lVar52);
+ *puVar37 = puVar51;
+ *(undefined4 *)((long)ppppuVar15 + lVar46 * 4 + 8) = 2;
+ *(ushort *)((long)puVar37 + 0xc) = uVar10;
+ *(ushort *)((long)puVar37 + 0xe) = uVar11;
puVar37[2] = puVar31 + 2;
- puVar37[3] = puVar31 + 2 + (ulong)uVar8 + 1;
+ puVar37[3] = puVar31 + 2 + (ulong)uVar10 + 1;
}
else {
- local_2d0 = (ValueRecord *)((ulong)local_2d0 & 0xffffffffffff0000);
+ local_2d0 = (ushort *)((ulong)local_2d0 & 0xffffffffffff0000);
local_228 = &local_240;
- ppVStack_238 = &local_2d0;
+ ppuStack_238 = &local_2d0;
local_240 = &DAT_8;
- ClassDefTable::Iterate(pCVar18,pVVar19,&local_240);
+ ClassDefTable::Iterate(this_01,puVar22,&local_240);
std::__function::__value_func<void(unsigned_short,unsigned_short,unsigned_short)>::
~__value_func_abi_fn200100_
((__value_func<void(unsigned_short,unsigned_short,unsigned_short)> *)
- this_03);
+ this_01);
local_2a2 = 0;
local_248 = &local_260;
puStack_258 = &local_2a2;
local_260 = &DAT_9;
ClassDefTable::Iterate();
std::__function::__value_func<void(unsigned_short,unsigned_short,unsigned_short)>::
~__value_func_abi_fn200100_
((__value_func<void(unsigned_short,unsigned_short,unsigned_short)> *)
- this_03);
- uVar36 = (ulong)local_2d0 & 0xffff;
- uVar34 = (ulong)local_2a2;
- puVar21 = operator_new__(pCVar18,0x1000c80bdfb0063);
- _bzero(puVar21,(uVar34 + uVar36) * 2 + 8);
- *puVar21 = local_2d0._0_2_;
- puVar4 = puVar21 + 2;
- puVar21[1] = local_2a2;
+ this_01);
+ uVar33 = (ulong)local_2d0 & 0xffff;
+ uVar36 = (ulong)local_2a2;
+ puVar23 = operator_new__(lVar21,0x1000c80bdfb0063);
+ _bzero(puVar23,(uVar36 + uVar33) * 2 + 8);
+ *puVar23 = local_2d0._0_2_;
+ puVar4 = puVar23 + 2;
+ puVar23[1] = local_2a2;
local_268 = &local_280;
local_280 = &DAT_10;
puStack_278 = puVar4;
ClassDefTable::Iterate();
std::__function::__value_func<void(unsigned_short,unsigned_short,unsigned_short)>::
~__value_func_abi_fn200100_
((__value_func<void(unsigned_short,unsigned_short,unsigned_short)> *)
- this_03);
- uVar36 = (ulong)local_2d0 & 0xffff;
+ this_01);
+ uVar33 = (ulong)local_2d0 & 0xffff;
local_288 = &local_2a0;
local_2a0 = &DAT_11;
- puStack_298 = puVar4 + uVar36 + 1;
+ puStack_298 = puVar4 + uVar33 + 1;
ClassDefTable::Iterate();
std::__function::__value_func<void(unsigned_short,unsigned_short,unsigned_short)>::
~__value_func_abi_fn200100_
((__value_func<void(unsigned_short,unsigned_short,unsigned_short)> *)
- this_03);
- pvVar24 = *(void **)(lVar47 + 0x1b0);
- pvVar25 = *(void **)(lVar47 + 0x1b8);
- local_380 = (long)pvVar25 - (long)pvVar24;
- uVar34 = (long)local_380 >> 3;
- if (uVar48 < uVar34) {
- lVar22 = *(long *)((long)pvVar24 + lVar51);
- *(undefined2 **)((long)pvVar24 + lVar51) = puVar21;
+ this_01);
+ pvVar26 = *(void **)(lVar48 + 0x1b0);
+ pvVar27 = *(void **)(lVar48 + 0x1b8);
+ local_380 = (long)pvVar27 - (long)pvVar26;
+ pCVar39 = (ClassDefTable *)((long)local_380 >> 3);
+ if (this_01 < pCVar39) {
+ lVar24 = *(long *)((long)pvVar26 + lVar46);
+ *(undefined2 **)((long)pvVar26 + lVar46) = puVar23;
}
else {
- uVar12 = uVar50 - uVar34;
- if (uVar34 <= uVar50 && uVar12 != 0) {
- if ((ulong)(*(long *)(lVar47 + 0x1c0) - (long)pvVar25 >> 3) < uVar12) {
- uVar32 = *(long *)(lVar47 + 0x1c0) - (long)pvVar24;
- uVar35 = (long)uVar32 >> 2;
- if (uVar35 <= uVar50) {
- uVar35 = uVar50;
+ uVar36 = (long)pCVar50 - (long)pCVar39;
+ if (pCVar50 < pCVar39 || uVar36 == 0) {
+ if (pCVar50 < pCVar39) {
+ std::
+ vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>>
+ ::__base_destruct_at_end_abi_fn200100_
+ ((vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>>
+ *)this_01,(unique_ptr *)(lVar48 + 0x1b0));
+ }
+ }
+ else if ((ulong)(*(long *)(lVar48 + 0x1c0) - (long)pvVar27 >> 3) < uVar36) {
+ uVar32 = *(long *)(lVar48 + 0x1c0) - (long)pvVar26;
+ pCVar35 = (ClassDefTable *)((long)uVar32 >> 2);
+ if (pCVar35 <= pCVar50) {
+ pCVar35 = pCVar50;
+ }
+ if (0x7ffffffffffffff7 < uVar32) {
+ pCVar35 = (ClassDefTable *)0x1fffffffffffffff;
+ }
+ pvVar27 = (void *)*puVar2;
+ puVar25 = (ulong *)((long)pvVar27 + (long)pCVar35 * 8);
+ if (puVar2 < puVar25) {
+ if ((ulong)pCVar35 >> 0x3d != 0) goto LAB_12;
+ pvVar27 = operator_new(pvVar27,0x50c00ee9192b6);
+ pvVar26 = *(void **)(lVar48 + 0x1b0);
+ local_380 = *(long *)(lVar48 + 0x1b8) - (long)pvVar26;
+ local_388 = (ClassDefTable *)((long)local_380 >> 3);
+ }
+ else {
+ *puVar2 = (ulong)puVar25;
+ local_388 = pCVar39;
+ }
+ pvVar6 = (void *)((long)pvVar27 + (long)pCVar39 * 8);
+ _bzero(pvVar6,uVar36 * 8);
+ pvVar55 = (void *)((long)pvVar6 + (long)local_388 * -8);
+ _memcpy(pvVar55,pvVar26,local_380);
+ puVar25 = *(ulong **)(lVar48 + 0x1b0);
+ *(void **)(lVar48 + 0x1b0) = pvVar55;
+ *(void **)(lVar48 + 0x1b8) = (void *)((long)pvVar6 + uVar36 * 8);
+ uVar36 = *(ulong *)(lVar48 + 0x1c0);
+ *(void **)(lVar48 + 0x1c0) = (void *)((long)pvVar27 + (long)pCVar35 * 8);
+ if (puVar25 != (ulong *)0x0) {
+ if ((puVar25 < (ulong *)(lVar48 + 0x1c8U)) || (puVar2 <= puVar25)) {
+ operator_delete(puVar25);
}
- if (0x7ffffffffffffff7 < uVar32) {
- uVar35 = 0x1fffffffffffffff;
- }
- pvVar25 = (void *)*puVar2;
- puVar23 = (ulong *)((long)pvVar25 + uVar35 * 8);
- if (puVar2 < puVar23) {
- if (uVar35 >> 0x3d != 0) goto LAB_12;
- pvVar25 = operator_new(pvVar25,0x50c00ee9192b6);
- pvVar24 = *(void **)(lVar47 + 0x1b0);
- local_380 = *(long *)(lVar47 + 0x1b8) - (long)pvVar24;
- local_388 = (long)local_380 >> 3;
- }
- else {
- *puVar2 = (ulong)puVar23;
- local_388 = uVar34;
- }
- pvVar6 = (void *)((long)pvVar25 + uVar34 * 8);
- _bzero(pvVar6,uVar12 * 8);
- pvVar54 = (void *)((long)pvVar6 + local_388 * -8);
- _memcpy(pvVar54,pvVar24,local_380);
- puVar23 = *(ulong **)(lVar47 + 0x1b0);
- *(void **)(lVar47 + 0x1b0) = pvVar54;
- *(void **)(lVar47 + 0x1b8) = (void *)((long)pvVar6 + uVar12 * 8);
- uVar34 = *(ulong *)(lVar47 + 0x1c0);
- *(void **)(lVar47 + 0x1c0) = (void *)((long)pvVar25 + uVar35 * 8);
- if (puVar23 != (ulong *)0x0) {
- if ((puVar23 < (ulong *)(lVar47 + 0x1c8U)) || (puVar2 <= puVar23)) {
- operator_delete(puVar23);
- }
- else if (uVar34 == *puVar2) {
- *puVar2 = (ulong)puVar23;
- }
+ else if (uVar36 == *puVar2) {
+ *puVar2 = (ulong)puVar25;
}
}
- else {
- _bzero(pvVar25,uVar12 * 8);
- *(void **)(lVar47 + 0x1b8) = (void *)((long)pvVar25 + uVar12 * 8);
- }
}
- lVar30 = *(long *)(lVar47 + 0x1b0);
- if ((ulong)(*(long *)(lVar47 + 0x1b8) - lVar30 >> 3) <= uVar48)
+ else {
+ _bzero(pvVar27,uVar36 * 8);
+ *(void **)(lVar48 + 0x1b8) = (void *)((long)pvVar27 + uVar36 * 8);
+ }
+ lVar21 = *(long *)(lVar48 + 0x1b0);
+ if ((ClassDefTable *)(*(long *)(lVar48 + 0x1b8) - lVar21 >> 3) <= this_01)
goto LAB_7;
- lVar22 = *(long *)(lVar30 + lVar51);
- *(undefined2 **)(lVar30 + lVar51) = puVar21;
+ lVar24 = *(long *)(lVar21 + lVar46);
+ *(undefined2 **)(lVar21 + lVar46) = puVar23;
}
- if (lVar22 != 0) {
- operator_delete__(lVar22,0x1000c80bdfb0063);
+ if (lVar24 != 0) {
+ operator_delete__(lVar24,0x1000c80bdfb0063);
}
- puVar37 = (undefined8 *)((long)ppppuVar13 + lVar53);
- *puVar37 = pVVar52;
- *(undefined4 *)((long)ppppuVar13 + lVar51 * 4 + 8) = 2;
+ puVar37 = (undefined8 *)((long)ppppuVar15 + lVar52);
+ *puVar37 = puVar51;
+ *(undefined4 *)((long)ppppuVar15 + lVar46 * 4 + 8) = 2;
*(undefined2 *)((long)puVar37 + 0xc) = local_2d0._0_2_;
*(ushort *)((long)puVar37 + 0xe) = local_2a2;
puVar37[2] = puVar4;
- puVar37[3] = puVar4 + uVar36 + 1;
- }
- _os_unfair_lock_unlock(lVar47 + 0x1ac);
+ puVar37[3] = puVar4 + uVar33 + 1;
+ }
+ _os_unfair_lock_unlock(lVar48 + 0x1ac);
}
else {
- if (uVar8 != 1) goto LAB_13;
- pVVar19 = pVVar52 + 10;
- if (this_00 < pVVar19) goto LAB_2;
- uVar34 = (ulong)((uint)(*(ushort *)(pVVar52 + 8) >> 8) |
- (*(ushort *)(pVVar52 + 8) & 0xff00ff) << 8);
- uVar36 = 0;
- if (pVVar52 + 0xc <= this_00) {
- uVar36 = (ulong)((long)this_00 - (long)pVVar19) >> 1;
- }
- if ((this_00 < pVVar19 + uVar34 * 2 || pVVar19 + uVar34 * 2 < pVVar19) &&
- (uVar36 != uVar34)) goto LAB_2;
- puVar37 = (undefined8 *)((long)local_220[0] + lVar53);
- *puVar37 = pVVar52;
- *(undefined4 *)((long)local_220[0] + lVar51 * 4 + 8) = 1;
+ if (uVar10 != 1) goto LAB_13;
+ puVar22 = puVar51 + 5;
+ if (puVar28 < puVar22) goto LAB_2;
+ uVar36 = (ulong)((uint)(puVar51[4] >> 8) | (puVar51[4] & 0xff00ff) << 8);
+ uVar33 = 0;
+ if (puVar51 + 6 <= puVar28) {
+ uVar33 = (ulong)((long)puVar28 - (long)puVar22) >> 1;
+ }
+ if ((puVar28 < puVar22 + uVar36 || puVar22 + uVar36 < puVar22) && (uVar33 != uVar36))
+ goto LAB_2;
+ puVar37 = (undefined8 *)((long)local_220[0] + lVar52);
+ *puVar37 = puVar51;
+ *(undefined4 *)((long)local_220[0] + lVar46 * 4 + 8) = 1;
*(undefined4 *)((long)puVar37 + 0x1c) = 0;
*(undefined8 *)((long)puVar37 + 0xc) = 0;
*(undefined8 *)((long)puVar37 + 0x14) = 0;
}
}
- uVar8 = *(ushort *)(pVVar52 + 4);
- uVar27 = (uint)(uVar8 >> 8) | (uVar8 & 0xff00ff) << 8;
- uVar9 = *(ushort *)(pVVar52 + 6);
- uVar11 = (uint)(uVar9 >> 8) | (uVar9 & 0xff00ff) << 8;
- iVar7 = *(int *)((long)ppppuVar13 + lVar51 * 4 + 8);
- pVVar19 = pVVar52;
- if (iVar7 == 2) {
- uVar56 = *(ushort *)((long)ppppuVar13 + lVar53 + 0xc);
- if (uVar43 < uVar56 || uVar43 == uVar56) {
- uVar56 = *(ushort *)
- (*(long *)((long)ppppuVar13 + lVar53 + 0x10) +
- ((ulong)pLVar16 & 0xffffffff) * 2);
+ uVar10 = puVar51[2];
+ uVar13 = (uint)(uVar10 >> 8) | (uVar10 & 0xff00ff) << 8;
+ uVar11 = puVar51[3];
+ uVar14 = (uint)(uVar11 >> 8) | (uVar11 & 0xff00ff) << 8;
+ iVar9 = *(int *)((long)ppppuVar15 + lVar46 * 4 + 8);
+ puVar22 = puVar51;
+ if (iVar9 == 2) {
+ uVar57 = *(ushort *)((long)ppppuVar15 + lVar52 + 0xc);
+ if (uVar47 < uVar57 || uVar47 == uVar57) {
+ uVar57 = *(ushort *)
+ (*(long *)((long)ppppuVar15 + lVar52 + 0x10) +
+ ((ulong)ppuVar20 & 0xffffffff) * 2);
}
else {
- uVar56 = 0;
- }
- uVar57 = *(ushort *)((long)ppppuVar13 + lVar53 + 0xe);
- if (uVar15 < uVar57 || uVar15 == uVar57) {
- pvVar24 = (void *)(ulong)*(ushort *)
- (*(long *)((long)ppppuVar13 + lVar53 + 0x18) +
- ((ulong)pLVar17 & 0xffffffff) * 2);
+ uVar57 = 0;
+ }
+ uVar58 = *(ushort *)((long)ppppuVar15 + lVar52 + 0xe);
+ if (uVar17 < uVar58 || uVar17 == uVar58) {
+ pvVar26 = (void *)(ulong)*(ushort *)
+ (*(long *)((long)ppppuVar15 + lVar52 + 0x18) +
+ ((ulong)pLVar19 & 0xffffffff) * 2);
}
else {
- pvVar24 = (void *)0x0;
- }
- pVVar20 = pVVar52;
- PairPosFormat2::ValuePair((PairPosFormat2 *)this_03,(ushort)pVVar52,uVar56,pvVar24);
+ pvVar26 = (void *)0x0;
+ }
+ puVar31 = puVar51;
+ PairPosFormat2::ValuePair((PairPosFormat2 *)this_01,(ushort)puVar51,uVar57,pvVar26);
}
else {
- if ((iVar7 != 1) ||
- (((uint)(*(ushort *)(pVVar52 + 8) >> 8) | (*(ushort *)(pVVar52 + 8) & 0xff00ff) << 8)
- < (uint)this_03)) goto LAB_13;
- this_02 = this_00;
- PairPosFormat1::NthPairSet(this_00,(uint)pVVar52,(void *)(ulong)((uint)this_03 - 1));
- if (pVVar19 == (ValueRecord *)0x0) goto LAB_2;
- pVVar20 = pVVar19;
- PairSet::ValuePair((PairSet *)this_02,(ushort)pVVar19,(ushort)pLVar17,(ushort)uVar27,
- (void *)(ulong)uVar11);
+ if ((iVar9 != 1) || (((uint)(puVar51[4] >> 8) | (puVar51[4] & 0xff00ff) << 8) < uVar18))
+ goto LAB_13;
+ PairPosFormat1::NthPairSet
+ ((PairPosFormat1 *)this_01,(uint)puVar51,(void *)(ulong)(uVar18 - 1));
+ if (puVar22 == (ushort *)0x0) goto LAB_2;
+ puVar31 = puVar22;
+ PairSet::ValuePair((PairSet *)this_01,(ushort)puVar22,(ushort)pLVar19,(ushort)uVar13,
+ (void *)(ulong)uVar14);
}
- if (pVVar20 != (ValueRecord *)0x0) {
- uVar56 = NEON_uaddlv((ulong)CONCAT11(POPCOUNT((char)(uVar8 >> 8)),POPCOUNT((char)uVar8))
- ,1);
- uVar57 = NEON_uaddlv((ulong)CONCAT11(POPCOUNT((char)(uVar9 >> 8)),POPCOUNT((char)uVar9))
- ,1);
- dVar61 = (double)(ulong)(uint3)uVar57;
- uVar48 = (ulong)((uint)(uint3)uVar57 + (uint)(uint3)uVar56);
- if ((pVVar20 < pVVar52) ||
- (pVVar20 + uVar48 * 2 < pVVar20 || this_00 < pVVar20 + uVar48 * 2)) {
- uVar36 = (ulong)((long)this_00 - (long)pVVar20) >> 1;
- if (this_00 < pVVar20 + 2 || pVVar20 < pVVar52) {
+ if (puVar31 != (ushort *)0x0) {
+ uVar57 = NEON_uaddlv((ulong)CONCAT11(POPCOUNT((char)(uVar10 >> 8)),
+ POPCOUNT((char)uVar10)),1);
+ this_02 = (TGlyph *)(ulong)(uint3)uVar57;
+ uVar58 = NEON_uaddlv((ulong)CONCAT11(POPCOUNT((char)(uVar11 >> 8)),
+ POPCOUNT((char)uVar11)),1);
+ dVar62 = (double)(ulong)(uint3)uVar58;
+ uVar33 = (ulong)((uint)(uint3)uVar58 + (uint)(uint3)uVar57);
+ if ((puVar31 < puVar51) || (puVar31 + uVar33 < puVar31 || puVar28 < puVar31 + uVar33)) {
+ uVar36 = (ulong)((long)puVar28 - (long)puVar31) >> 1;
+ if (puVar28 < puVar31 + 1 || puVar31 < puVar51) {
uVar36 = 0;
}
- if (uVar36 != uVar48) goto LAB_2;
- }
- pVVar52 = pVVar20;
- if (uVar8 == 0) {
- fVar58 = 0.0;
+ if (uVar36 != uVar33) goto LAB_2;
+ }
+ if (uVar10 == 0) {
+ fVar59 = 0.0;
}
else {
uStack_2b8 = *(undefined8 *)(param_1 + 0x10);
local_2c8._4_4_ = (undefined4)((ulong)local_2c8 >> 0x20);
- local_2c8 = (TGlyph *)CONCAT44(local_2c8._4_4_,uVar27);
- local_2d0 = pVVar20;
- local_2c0 = pVVar19;
+ local_2c8 = (TGlyph *)CONCAT44(local_2c8._4_4_,uVar13);
+ local_2d0 = puVar31;
+ local_2c0 = puVar22;
local_2b0 = param_1;
- ValueRecord::operator()(pVVar20,&local_2d0,*(undefined8 *)in_x3,this_01);
- fVar58 = (float)dVar61;
- }
- if (uVar9 != 0) {
- local_2d0 = pVVar52 + (ulong)(uint3)uVar56 * 2;
+ ValueRecord::operator()
+ ((ValueRecord *)this_02,&local_2d0,*(undefined8 *)in_x2,this_00);
+ fVar59 = (float)dVar62;
+ }
+ if (uVar11 != 0) {
+ local_2d0 = puVar31 + (long)this_02;
uStack_2b8 = *(undefined8 *)(param_1 + 0x10);
- local_2c8._4_4_ = (undefined4)((ulong)local_2c8 >> 0x20);
- local_2c8 = (TGlyph *)CONCAT44(local_2c8._4_4_,uVar11);
- local_2c0 = pVVar19;
+ local_2c8 = (TGlyph *)CONCAT44(local_2c8._4_4_,uVar14);
+ local_2c0 = puVar22;
local_2b0 = param_1;
ValueRecord::operator()();
- if (dVar61 != 0.0) {
- TRunGlue::TGlyph::clearSafeToBreakAfter((TGlyph *)pVVar52);
- }
- *(TGlyph **)(in_x3 + 0x30) = pTVar45;
+ if (dVar62 != 0.0) {
+ TRunGlue::TGlyph::clearSafeToBreakAfter(this_02);
+ }
+ *(TGlyph **)(in_x2 + 0x30) = pTVar45;
goto LAB_6;
}
- if ((uVar8 >> 8 & 0xffbb) != 0 || (uVar8 & 0xff) != 0) goto LAB_6;
- plVar29 = *(long **)(lVar44 + 0x1d8);
- if (plVar29 == (long *)0x0) {
- plVar33 = (long *)&SUB_1;
+ if ((uVar10 >> 8 & 0xffbb) != 0 || (uVar10 & 0xff) != 0) goto LAB_6;
+ plVar30 = *(long **)(lVar44 + 0x1d8);
+ if (plVar30 == (long *)0x0) {
+ plVar34 = (long *)&SUB_1;
goto LAB_14;
}
- uVar60 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)plVar29 >>
+ uVar61 = CONCAT17(POPCOUNT((char)((ulong)plVar30 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar30 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar30 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar30 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar30 >>
0x18)),
CONCAT12(POPCOUNT((char)((ulong)
- plVar29 >> 0x10)),
- CONCAT11(POPCOUNT((char)((ulong)plVar29 >> 8)),
- POPCOUNT((char)plVar29))))))));
- uVar55 = NEON_uaddlv(uVar60,1);
- uVar48 = CONCAT62((int6)((ulong)uVar60 >> 0x10),uVar55) & 0xffffffff;
- uVar43 = (uint)plVar29;
- if (uVar48 < 2) {
- plVar33 = (long *)(ulong)(uVar43 - 1 & uVar10);
+ plVar30 >> 0x10)),
+ CONCAT11(POPCOUNT((char)((ulong)plVar30 >> 8)),
+ POPCOUNT((char)plVar30))))))));
+ uVar56 = NEON_uaddlv(uVar61,1);
+ uVar33 = CONCAT62((int6)((ulong)uVar61 >> 0x10),uVar56) & 0xffffffff;
+ uVar17 = (uint)plVar30;
+ if (uVar33 < 2) {
+ plVar34 = (long *)(ulong)(uVar17 - 1 & uVar12);
}
else {
- plVar33 = plVar42;
- if (plVar29 <= plVar42) {
- uVar15 = 0;
- if (uVar43 != 0) {
- uVar15 = uVar10 / uVar43;
+ plVar34 = plVar43;
+ if (plVar30 <= plVar43) {
+ uVar47 = 0;
+ if (uVar17 != 0) {
+ uVar47 = uVar12 / uVar17;
}
- plVar33 = (long *)(ulong)(uVar10 - uVar15 * uVar43);
- }
- }
- puVar37 = *(undefined8 **)(*(long *)(lVar44 + 0x1d0) + (long)plVar33 * 8);
+ plVar34 = (long *)(ulong)(uVar12 - uVar47 * uVar17);
+ }
+ }
+ puVar37 = *(undefined8 **)(*(long *)(lVar44 + 0x1d0) + (long)plVar34 * 8);
if ((puVar37 == (undefined8 *)0x0) ||
(plVar38 = (long *)*puVar37, plVar38 == (long *)0x0)) goto LAB_14;
goto LAB_15;
}
}
LAB_13:
- uVar48 = uVar48 + 1;
- lVar46 = lVar46 + 0x40;
- lVar51 = lVar51 + 8;
- lVar53 = lVar53 + 0x20;
- } while (uVar50 << 3 != lVar51);
+ this_01 = this_01 + 1;
+ lVar46 = lVar46 + 8;
+ lVar52 = lVar52 + 0x20;
+ lVar53 = lVar53 + 0x40;
+ ppuVar49 = (ushort **)((ulong)ppuVar20 & 0xffffffff);
+ } while (pCVar50 != this_01);
}
goto LAB_5;
}
goto LAB_3;
LAB_15:
do {
- plVar40 = (long *)plVar38[1];
- if (plVar40 == plVar42) {
- if (*(uint *)(plVar38 + 2) == uVar10) goto LAB_16;
+ plVar41 = (long *)plVar38[1];
+ if (plVar41 == plVar43) {
+ if (*(uint *)(plVar38 + 2) == uVar12) goto LAB_16;
}
else {
- if (uVar48 < 2) {
- plVar40 = (long *)((ulong)plVar40 & (long)plVar29 - 1U);
- }
- else if (plVar29 <= plVar40) {
+ if (uVar33 < 2) {
+ plVar41 = (long *)((ulong)plVar41 & (long)plVar30 - 1U);
+ }
+ else if (plVar30 <= plVar41) {
uVar36 = 0;
- if (plVar29 != (long *)0x0) {
- uVar36 = (ulong)plVar40 / (ulong)plVar29;
+ if (plVar30 != (long *)0x0) {
+ uVar36 = (ulong)plVar41 / (ulong)plVar30;
}
- plVar40 = (long *)((long)plVar40 - uVar36 * (long)plVar29);
- }
- if (plVar40 != plVar33) break;
+ plVar41 = (long *)((long)plVar41 - uVar36 * (long)plVar30);
+ }
+ if (plVar41 != plVar34) break;
}
plVar38 = (long *)*plVar38;
} while (plVar38 != (long *)0x0);
LAB_14:
- plVar38 = operator_new(pVVar20,0x1020c0024daa5de);
+ plVar38 = operator_new(puVar31,0x1020c0024daa5de);
*plVar38 = 0;
- plVar38[1] = (long)plVar42;
- *(uint *)(plVar38 + 2) = uVar10;
+ plVar38[1] = (long)plVar43;
+ *(uint *)(plVar38 + 2) = uVar12;
*(undefined4 *)((long)plVar38 + 0x14) = 0;
- fVar59 = (float)(*(long *)(lVar44 + 0x1e8) + 1);
- if ((plVar29 == (long *)0x0) || (*(float *)(lVar44 + 0x1f0) * (float)plVar29 < fVar59)) {
- uVar48 = 1;
- if ((long *)0x2 < plVar29) {
- uVar48 = (ulong)(((ulong)plVar29 & (long)plVar29 - 1U) != 0);
- }
- plVar33 = (long *)(uVar48 | (long)plVar29 << 1);
- plVar29 = (long *)(long)(fVar59 / *(float *)(lVar44 + 0x1f0));
- if (plVar33 <= plVar29) {
- plVar33 = plVar29;
- }
- plVar40 = plVar38;
- if ((long)plVar33 - 1U == 0) {
- plVar33 = (long *)0x2;
- }
- else if (((ulong)plVar33 & (long)plVar33 - 1U) != 0) {
- std::__next_prime((ulong)plVar33);
- plVar40 = plVar33;
- }
- plVar29 = *(long **)(lVar44 + 0x1d8);
- if (plVar29 < plVar33) {
+ fVar60 = (float)(*(long *)(lVar44 + 0x1e8) + 1);
+ if ((plVar30 == (long *)0x0) || (*(float *)(lVar44 + 0x1f0) * (float)plVar30 < fVar60)) {
+ uVar33 = 1;
+ if ((long *)0x2 < plVar30) {
+ uVar33 = (ulong)(((ulong)plVar30 & (long)plVar30 - 1U) != 0);
+ }
+ plVar34 = (long *)(uVar33 | (long)plVar30 << 1);
+ plVar30 = (long *)(long)(fVar60 / *(float *)(lVar44 + 0x1f0));
+ if (plVar34 <= plVar30) {
+ plVar34 = plVar30;
+ }
+ plVar41 = plVar38;
+ if ((long)plVar34 - 1U == 0) {
+ plVar34 = (long *)0x2;
+ }
+ else if (((ulong)plVar34 & (long)plVar34 - 1U) != 0) {
+ std::__next_prime((ulong)plVar34);
+ plVar41 = plVar34;
+ }
+ plVar30 = *(long **)(lVar44 + 0x1d8);
+ if (plVar30 < plVar34) {
LAB_17:
- plVar29 = plVar33;
- if ((ulong)plVar29 >> 0x3d != 0) {
+ plVar30 = plVar34;
+ if ((ulong)plVar30 >> 0x3d != 0) {
LAB_12:
/* WARNING: Subroutine does not return */
std::
vector<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,TInlineBufferAllocator<std::pair<OTL::LookupSubtable_const*,OTL::Coverage>,4ul>>
::__throw_length_error_abi_fn200100_();
}
- pvVar24 = operator_new(plVar40,0x20c0093837f09);
- pvVar25 = *(void **)(lVar44 + 0x1d0);
- *(void **)(lVar44 + 0x1d0) = pvVar24;
- if (pvVar25 != (void *)0x0) {
- operator_delete(pvVar25);
- }
- plVar33 = (long *)0x0;
- *(long **)(lVar44 + 0x1d8) = plVar29;
+ pvVar26 = operator_new(plVar41,0x20c0093837f09);
+ pvVar27 = *(void **)(lVar44 + 0x1d0);
+ *(void **)(lVar44 + 0x1d0) = pvVar26;
+ if (pvVar27 != (void *)0x0) {
+ operator_delete(pvVar27);
+ }
+ plVar34 = (long *)0x0;
+ *(long **)(lVar44 + 0x1d8) = plVar30;
do {
- *(undefined8 *)(*(long *)(lVar44 + 0x1d0) + (long)plVar33 * 8) = 0;
- plVar33 = (long *)((long)plVar33 + 1);
- } while (plVar29 != plVar33);
- plVar33 = (long *)*plVar3;
- if (plVar33 != (long *)0x0) {
- plVar40 = (long *)plVar33[1];
- uVar60 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)plVar29 >> 0x18
+ *(undefined8 *)(*(long *)(lVar44 + 0x1d0) + (long)plVar34 * 8) = 0;
+ plVar34 = (long *)((long)plVar34 + 1);
+ } while (plVar30 != plVar34);
+ plVar34 = (long *)*plVar3;
+ if (plVar34 != (long *)0x0) {
+ plVar41 = (long *)plVar34[1];
+ uVar61 = CONCAT17(POPCOUNT((char)((ulong)plVar30 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar30 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar30 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar30 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar30 >> 0x18
)),
CONCAT12(POPCOUNT((char)((ulong)
- plVar29 >> 0x10)),
- CONCAT11(POPCOUNT((char)((ulong)plVar29 >> 8)),
- POPCOUNT((char)plVar29))))))));
- uVar55 = NEON_uaddlv(uVar60,1);
- uVar48 = CONCAT62((int6)((ulong)uVar60 >> 0x10),uVar55) & 0xffffffff;
- if (uVar48 < 2) {
- plVar40 = (long *)((ulong)plVar40 & (long)plVar29 - 1U);
+ plVar30 >> 0x10)),
+ CONCAT11(POPCOUNT((char)((ulong)plVar30 >> 8)),
+ POPCOUNT((char)plVar30))))))));
+ uVar56 = NEON_uaddlv(uVar61,1);
+ uVar33 = CONCAT62((int6)((ulong)uVar61 >> 0x10),uVar56) & 0xffffffff;
+ if (uVar33 < 2) {
+ plVar41 = (long *)((ulong)plVar41 & (long)plVar30 - 1U);
}
- else if (plVar29 <= plVar40) {
+ else if (plVar30 <= plVar41) {
uVar36 = 0;
- if (plVar29 != (long *)0x0) {
- uVar36 = (ulong)plVar40 / (ulong)plVar29;
+ if (plVar30 != (long *)0x0) {
+ uVar36 = (ulong)plVar41 / (ulong)plVar30;
}
- plVar40 = (long *)((long)plVar40 - uVar36 * (long)plVar29);
+ plVar41 = (long *)((long)plVar41 - uVar36 * (long)plVar30);
}
- *(long **)(*(long *)(lVar44 + 0x1d0) + (long)plVar40 * 8) = plVar3;
- plVar39 = (long *)*plVar33;
- if (plVar39 != (long *)0x0) {
+ *(long **)(*(long *)(lVar44 + 0x1d0) + (long)plVar41 * 8) = plVar3;
+ plVar40 = (long *)*plVar34;
+ if (plVar40 != (long *)0x0) {
do {
- plVar41 = (long *)plVar39[1];
- if (uVar48 < 2) {
- plVar41 = (long *)((ulong)plVar41 & (long)plVar29 - 1U);
- }
- else if (plVar29 <= plVar41) {
+ plVar42 = (long *)plVar40[1];
+ if (uVar33 < 2) {
+ plVar42 = (long *)((ulong)plVar42 & (long)plVar30 - 1U);
+ }
+ else if (plVar30 <= plVar42) {
uVar36 = 0;
- if (plVar29 != (long *)0x0) {
- uVar36 = (ulong)plVar41 / (ulong)plVar29;
- }
- plVar41 = (long *)((long)plVar41 - uVar36 * (long)plVar29);
- }
- if (plVar41 != plVar40) {
+ if (plVar30 != (long *)0x0) {
+ uVar36 = (ulong)plVar42 / (ulong)plVar30;
+ }
+ plVar42 = (long *)((long)plVar42 - uVar36 * (long)plVar30);
+ }
+ if (plVar42 != plVar41) {
lVar46 = *(long *)(lVar44 + 0x1d0);
- if (*(long *)(lVar46 + (long)plVar41 * 8) == 0) {
- *(long **)(lVar46 + (long)plVar41 * 8) = plVar33;
- plVar40 = plVar41;
+ if (*(long *)(lVar46 + (long)plVar42 * 8) == 0) {
+ *(long **)(lVar46 + (long)plVar42 * 8) = plVar34;
+ plVar41 = plVar42;
}
else {
- *plVar33 = *plVar39;
- *plVar39 = **(long **)(lVar46 + (long)plVar41 * 8);
- **(undefined8 **)(lVar46 + (long)plVar41 * 8) = plVar39;
- plVar39 = plVar33;
- }
- }
- plVar33 = plVar39;
- plVar39 = (long *)*plVar33;
- } while (plVar39 != (long *)0x0);
+ *plVar34 = *plVar40;
+ *plVar40 = **(long **)(lVar46 + (long)plVar42 * 8);
+ **(undefined8 **)(lVar46 + (long)plVar42 * 8) = plVar40;
+ plVar40 = plVar34;
+ }
+ }
+ plVar34 = plVar40;
+ plVar40 = (long *)*plVar34;
+ } while (plVar40 != (long *)0x0);
}
}
}
- else if (plVar33 < plVar29) {
- plVar40 = (long *)(long)((float)*(ulong *)(lVar44 + 0x1e8) / *(float *)(lVar44 + 0x1f0));
- if ((plVar29 < (long *)0x3) ||
- (uVar60 = CONCAT17(POPCOUNT((char)((ulong)plVar29 >> 0x38)),
- CONCAT16(POPCOUNT((char)((ulong)plVar29 >> 0x30)),
- CONCAT15(POPCOUNT((char)((ulong)plVar29 >> 0x28)),
- CONCAT14(POPCOUNT((char)((ulong)plVar29 >> 0x20)),
- CONCAT13(POPCOUNT((char)((ulong)plVar29 >>
+ else if (plVar34 < plVar30) {
+ plVar41 = (long *)(long)((float)*(ulong *)(lVar44 + 0x1e8) / *(float *)(lVar44 + 0x1f0));
+ if ((plVar30 < (long *)0x3) ||
+ (uVar61 = CONCAT17(POPCOUNT((char)((ulong)plVar30 >> 0x38)),
+ CONCAT16(POPCOUNT((char)((ulong)plVar30 >> 0x30)),
+ CONCAT15(POPCOUNT((char)((ulong)plVar30 >> 0x28)),
+ CONCAT14(POPCOUNT((char)((ulong)plVar30 >> 0x20)),
+ CONCAT13(POPCOUNT((char)((ulong)plVar30 >>
0x18)),
CONCAT12(POPCOUNT((char)((ulong)
- plVar29 >> 0x10)),
- CONCAT11(POPCOUNT((char)((ulong)plVar29 >> 8)),
- POPCOUNT((char)plVar29)))))))),
- uVar55 = NEON_uaddlv(uVar60,1),
- 1 < (CONCAT62((int6)((ulong)uVar60 >> 0x10),uVar55) & 0xffffffff))) {
- std::__next_prime((ulong)plVar40);
- }
- else if ((long *)0x1 < plVar40) {
- plVar40 = (long *)(1L << (-LZCOUNT((long)plVar40 + -1) & 0x3fU));
- }
- if (plVar33 <= plVar40) {
- plVar33 = plVar40;
- }
- if (plVar33 < plVar29) {
- if (plVar33 != (long *)0x0) goto LAB_17;
- pvVar24 = *(void **)(lVar44 + 0x1d0);
+ plVar30 >> 0x10)),
+ CONCAT11(POPCOUNT((char)((ulong)plVar30 >> 8)),
+ POPCOUNT((char)plVar30)))))))),
+ uVar56 = NEON_uaddlv(uVar61,1),
+ 1 < (CONCAT62((int6)((ulong)uVar61 >> 0x10),uVar56) & 0xffffffff))) {
+ std::__next_prime((ulong)plVar41);
+ }
+ else if ((long *)0x1 < plVar41) {
+ plVar41 = (long *)(1L << (-LZCOUNT((long)plVar41 + -1) & 0x3fU));
+ }
+ if (plVar34 <= plVar41) {
+ plVar34 = plVar41;
+ }
+ if (plVar34 < plVar30) {
+ if (plVar34 != (long *)0x0) goto LAB_17;
+ pvVar26 = *(void **)(lVar44 + 0x1d0);
*(undefined8 *)(lVar44 + 0x1d0) = 0;
- if (pvVar24 != (void *)0x0) {
- operator_delete(pvVar24);
+ if (pvVar26 != (void *)0x0) {
+ operator_delete(pvVar26);
}
- plVar29 = (long *)0x0;
+ plVar30 = (long *)0x0;
*(undefined8 *)(lVar44 + 0x1d8) = 0;
}
else {
- plVar29 = *(long **)(lVar44 + 0x1d8);
- }
- }
- if (((ulong)plVar29 & (long)plVar29 - 1U) == 0) {
- plVar33 = (long *)(ulong)((int)plVar29 - 1U & uVar10);
+ plVar30 = *(long **)(lVar44 + 0x1d8);
+ }
+ }
+ if (((ulong)plVar30 & (long)plVar30 - 1U) == 0) {
+ plVar34 = (long *)(ulong)((int)plVar30 - 1U & uVar12);
}
else {
- plVar33 = plVar42;
- if (plVar29 <= plVar42) {
- uVar48 = 0;
- if (plVar29 != (long *)0x0) {
- uVar48 = (ulong)plVar42 / (ulong)plVar29;
+ plVar34 = plVar43;
+ if (plVar30 <= plVar43) {
+ uVar33 = 0;
+ if (plVar30 != (long *)0x0) {
+ uVar33 = (ulong)plVar43 / (ulong)plVar30;
}
- plVar33 = (long *)((long)plVar42 - uVar48 * (long)plVar29);
+ plVar34 = (long *)((long)plVar43 - uVar33 * (long)plVar30);
}
}
}
lVar46 = *(long *)(lVar44 + 0x1d0);
- plVar42 = *(long **)(lVar46 + (long)plVar33 * 8);
- if (plVar42 == (long *)0x0) {
+ plVar43 = *(long **)(lVar46 + (long)plVar34 * 8);
+ if (plVar43 == (long *)0x0) {
*plVar38 = *plVar3;
*plVar3 = (long)plVar38;
- *(long **)(lVar46 + (long)plVar33 * 8) = plVar3;
+ *(long **)(lVar46 + (long)plVar34 * 8) = plVar3;
if (*plVar38 == 0) goto LAB_18;
- plVar42 = *(long **)(*plVar38 + 8);
- if (((ulong)plVar29 & (long)plVar29 - 1U) == 0) {
- plVar42 = (long *)((ulong)plVar42 & (long)plVar29 - 1U);
- }
- else if (plVar29 <= plVar42) {
- uVar48 = 0;
- if (plVar29 != (long *)0x0) {
- uVar48 = (ulong)plVar42 / (ulong)plVar29;
- }
- plVar42 = (long *)((long)plVar42 - uVar48 * (long)plVar29);
- }
- plVar42 = (long *)(*(long *)(lVar44 + 0x1d0) + (long)plVar42 * 8);
+ plVar43 = *(long **)(*plVar38 + 8);
+ if (((ulong)plVar30 & (long)plVar30 - 1U) == 0) {
+ plVar43 = (long *)((ulong)plVar43 & (long)plVar30 - 1U);
+ }
+ else if (plVar30 <= plVar43) {
+ uVar33 = 0;
+ if (plVar30 != (long *)0x0) {
+ uVar33 = (ulong)plVar43 / (ulong)plVar30;
+ }
+ plVar43 = (long *)((long)plVar43 - uVar33 * (long)plVar30);
+ }
+ plVar43 = (long *)(*(long *)(lVar44 + 0x1d0) + (long)plVar43 * 8);
}
else {
- *plVar38 = *plVar42;
+ *plVar38 = *plVar43;
}
- *plVar42 = (long)plVar38;
+ *plVar43 = (long)plVar38;
LAB_18:
*(long *)(lVar44 + 0x1e8) = *(long *)(lVar44 + 0x1e8) + 1;
LAB_16:
- *(float *)((long)plVar38 + 0x14) = fVar58;
+ *(float *)((long)plVar38 + 0x14) = fVar59;
LAB_6:
local_324 = 1;
LAB_5:
- pLVar16 = in_x3;
- TGlyphIterator::NextCoveredBy(in_x3);
- uVar49 = local_324;
- if (((ulong)pLVar16 & 1) == 0) goto LAB_3;
+ pLVar19 = in_x2;
+ TGlyphIterator::NextCoveredBy(in_x2);
+ uVar54 = local_324;
+ if (((ulong)pLVar19 & 1) == 0) goto LAB_3;
goto LAB_4;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,address,called |
| ratio | 0.95 |
| i_ratio | 0.6 |
| m_ratio | 0.99 |
| b_ratio | 0.85 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | CopySecondaryScaleRecipeInternal | CopySecondaryScaleRecipeInternal |
| fullname | CopySecondaryScaleRecipeInternal | CopySecondaryScaleRecipeInternal |
| refcount | 3 | 3 |
length |
1580 | 1540 |
called |
Expand for full list:_CFDictionarySetValue |
Expand for full list:_CFDictionaryGetValue |
| calling | TAttributes::ApplyFont _CTFontCopyTextScaleRecipeForStringAttributes |
TAttributes::ApplyFont _CTFontCopyTextScaleRecipeForStringAttributes |
| paramcount | 4 | 4 |
address |
1834a015c | 183476bf0 |
| sig | undefined __swiftcall CopySecondaryScaleRecipeInternal(__CTFont * param_1, __CTFont * param_2, optional param_3, bool param_4) | undefined __swiftcall CopySecondaryScaleRecipeInternal(__CTFont * param_1, __CTFont * param_2, optional param_3, bool param_4) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- CopySecondaryScaleRecipeInternal called
+++ CopySecondaryScaleRecipeInternal called
@@ -4,0 +5 @@
+TCFMutableDictionary::TCFMutableDictionary--- CopySecondaryScaleRecipeInternal
+++ CopySecondaryScaleRecipeInternal
@@ -1,264 +1,259 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* CopySecondaryScaleRecipeInternal(__CTFont const*, __CTFont const*, std::optional<double>, bool)
*/
void CopySecondaryScaleRecipeInternal
(undefined8 *param_1,cfstringStruct *param_2,cfstringStruct *param_3,double param_4,
ulong param_5,int param_6)
{
code *pcVar1;
bool bVar2;
cfstringStruct *in_tmp_ldXn;
cfstringStruct *pcVar3;
cfstringStruct *pcVar4;
undefined8 uVar5;
int iVar6;
bool *pbVar7;
qword qVar8;
cfstringStruct *pcVar9;
cfstringStruct *in_xzr;
double dVar10;
double dVar11;
cfstringStruct *local_e8;
cfstringStruct *local_e0;
double dStack_d8;
double local_d0;
double local_c8;
undefined1 *local_c0;
undefined1 *local_b8;
cfstringStruct *local_b0;
cfstringStruct *local_a8;
cfstringStruct *local_a0;
cfstringStruct *local_98;
cfstringStruct *local_90;
long local_88;
pcVar3 = sPreviousSecondaryScaleFontsAndRecipe;
local_88 = *_DAT_0;
bVar2 = param_2 == param_3;
pcVar4 = sPreviousSecondaryScaleFontsAndRecipe;
if (bVar2 && (param_5 & 1) == 0) {
LOAcquire();
LORelease();
in_tmp_ldXn = sPreviousSecondaryScaleFontsAndRecipe;
pcVar4 = in_xzr;
if (sPreviousSecondaryScaleFontsAndRecipe != (cfstringStruct *)0x0) {
pcVar4 = sPreviousSecondaryScaleFontsAndRecipe;
pcVar9 = in_xzr;
_CFArrayGetValueAtIndex(sPreviousSecondaryScaleFontsAndRecipe,0);
sPreviousSecondaryScaleFontsAndRecipe = pcVar9;
iVar6 = (int)pcVar4;
_CFEqual();
if (iVar6 != 0) {
pcVar4 = pcVar3;
_CFArrayGetValueAtIndex(pcVar3,1);
iVar6 = (int)pcVar4;
_CFEqual();
if (iVar6 != 0) {
*param_1 = &SUB_1;
pcVar4 = pcVar3;
_CFArrayGetValueAtIndex(pcVar3,2);
_objc_retain();
LOAcquire();
LORelease();
*param_1 = pcVar4;
local_e0 = in_xzr;
_objc_release(in_xzr);
LOAcquire();
LORelease();
pcVar4 = sPreviousSecondaryScaleFontsAndRecipe;
sPreviousSecondaryScaleFontsAndRecipe = pcVar3;
goto LAB_2;
}
}
_CFRelease(pcVar3);
pcVar4 = sPreviousSecondaryScaleFontsAndRecipe;
}
}
sPreviousSecondaryScaleFontsAndRecipe = pcVar4;
local_b0 = (cfstringStruct *)&SUB_1;
CopyPhysicalFamilyName((__CTFont *)&local_b0);
if (param_2 == param_3 || (param_5 & 1) != 0) {
local_b8 = &SUB_1;
CopyPhysicalFamilyName((__CTFont *)&local_b8);
if (param_3 != (cfstringStruct *)0x0) goto LAB_3;
dVar10 = 0.0;
}
else {
*param_1 = &SUB_1;
qVar8 = param_3[1].field1_0x8;
pcVar3 = in_tmp_ldXn;
_os_unfair_lock_lock_with_options(qVar8 + 0x178,0x50000);
_objc_retain(qVar8 + 0x180);
pcVar4 = pcVar3;
if (pcVar3 != (cfstringStruct *)0x0) {
_CFDictionaryGetValue(pcVar3,in_tmp_ldXn);
}
in_tmp_ldXn = pcVar4;
_objc_retain();
LOAcquire();
LORelease();
*param_1 = in_tmp_ldXn;
local_e0 = in_xzr;
_objc_release(in_xzr);
_objc_release(pcVar3);
_os_unfair_lock_unlock(qVar8 + 0x178);
pcVar4 = local_b0;
if (in_tmp_ldXn != (cfstringStruct *)0x0) goto LAB_2;
_objc_release(*param_1);
local_b8 = &SUB_1;
CopyPhysicalFamilyName((__CTFont *)&local_b8);
LAB_3:
dVar10 = *(double *)(param_3[1].field1_0x8 + 0x18);
}
dStack_d8 = -NAN;
local_e0 = (cfstringStruct *)0xffffffffffffffff;
local_c8 = -NAN;
local_d0 = -NAN;
local_c0 = &SUB_1;
pcVar3 = in_tmp_ldXn;
GetRoundedWeight((__CTFont *)param_2[1].field1_0x8);
SecondaryScaleRecipeForFont(&local_b8,&local_e0,param_2,in_tmp_ldXn,pcVar3,param_4,param_5);
if ((char)local_c0 == '\x01') {
if ((param_5 & 1) == 0) {
param_4 = (double)local_e0 / 100.0;
}
dVar10 = dVar10 * param_4;
if (param_6 == 0) {
LAB_4:
local_a8 = (cfstringStruct *)&SUB_1;
CreateCopyOfFontWithSizeAndWeightClass
((__CTFont *)&local_a8,dVar10,dStack_d8,SUB81(param_2,0));
pcVar9 = (cfstringStruct *)*_DAT_5;
pcVar4 = pcVar9;
- _CFDictionaryCreateMutable(pcVar9,0,_DAT_6,_DAT_1e6ae14b8);
+ _CFDictionaryCreateMutable(pcVar9,0,_DAT_6,_DAT_1e6aa5520);
local_e8 = pcVar4;
- _CFDictionarySetValue(pcVar3,&cfstringStruct_1ee7c3800,pcVar3);
+ _CFDictionarySetValue(pcVar3,&cfstringStruct_1ee7c9a40,pcVar3);
if (((ulong)local_c0 & 1) == 0) {
LAB_7:
/* WARNING: Does not return */
- pcVar1 = (code *)SoftwareBreakpoint(1,0x1834a0784);
+ pcVar1 = (code *)SoftwareBreakpoint(1,0x1834771f0);
(*pcVar1)();
}
TCFNumber::TCFNumber<double>((TCFNumber *)param_2,local_d0);
- _CFDictionarySetValue(pcVar3,&cfstringStruct_1ee7cbf20,pcVar3);
+ _CFDictionarySetValue(pcVar3,&cfstringStruct_1ee7d2160,pcVar3);
_objc_release(local_a0);
if (((ulong)local_c0 & 1) == 0) goto LAB_7;
TCFNumber::TCFNumber<double>((TCFNumber *)param_2,local_c8);
- _CFDictionarySetValue(pcVar3,&cfstringStruct_1ee7cbee0,pcVar3);
+ _CFDictionarySetValue(pcVar3,&cfstringStruct_1ee7d2120,pcVar3);
_objc_release(local_a0);
if (bVar2 && (param_5 & 1) == 0) {
local_a0 = param_2;
local_98 = param_3;
local_90 = pcVar3;
_CFArrayCreate(pcVar9,&local_a0,3,_DAT_8);
pcVar3 = sPreviousSecondaryScaleFontsAndRecipe;
LOAcquire();
LORelease();
sPreviousSecondaryScaleFontsAndRecipe = pcVar9;
_objc_release(pcVar3);
}
else if ((param_5 & 1) == 0) {
qVar8 = param_3[1].field1_0x8;
pcVar4 = pcVar3;
_os_unfair_lock_lock_with_options(&local_e8,qVar8 + 0x178,0x50000);
local_a0 = (cfstringStruct *)&SUB_1;
- if (pcVar4 == (cfstringStruct *)0x0) {
- _CFDictionaryCreateMutable(qVar8 + 0x180,pcVar9,0,_DAT_6,_DAT_1e6ae14b8);
- }
- else {
- pcVar9 = pcVar4;
- _objc_retain();
- }
- local_a0 = pcVar9;
- _CFDictionarySetValue(pcVar4,pcVar3,pcVar3);
+ pcVar9 = pcVar3;
+ TCFMutableDictionary::TCFMutableDictionary
+ ((TCFMutableDictionary *)pcVar3,(__CFDictionary *)&local_a0);
+ _CFDictionarySetValue(pcVar4,pcVar9,pcVar3);
LOAcquire();
LORelease();
LOAcquire();
uVar5 = *(undefined8 *)(qVar8 + 0x180);
*(undefined8 *)(qVar8 + 0x180) = local_a0;
LORelease();
local_a0 = in_xzr;
_objc_release(uVar5);
_objc_release(local_a0);
_os_unfair_lock_unlock(qVar8 + 0x178);
}
LOAcquire();
LORelease();
*param_1 = local_e8;
local_e8 = in_xzr;
_objc_release(in_xzr);
pcVar3 = local_a8;
}
else {
(**(code **)(**(long **)(param_2[1].field1_0x8 + 0x198) + 0x78))(&local_a0);
pcVar9 = pcVar3;
_objc_release(local_a0);
if (pcVar3 != (cfstringStruct *)0x0) {
local_a8 = (cfstringStruct *)&SUB_1;
pcVar3 = pcVar9;
if (((ulong)local_c0 & 1) == 0) goto LAB_7;
goto LAB_4;
}
local_e8 = (cfstringStruct *)&SUB_1;
GetRoundedWeight((__CTFont *)param_2[1].field1_0x8);
CreateCopyOfFontWithSizeAndWeightClass((__CTFont *)&local_e8,dVar10,param_4,SUB81(param_2,0));
LAB_9:
- local_a0 = &cfstringStruct_1ee7c3800;
+ local_a0 = &cfstringStruct_1ee7c9a40;
uVar5 = *_DAT_5;
local_a8 = pcVar9;
- _CFDictionaryCreate(uVar5,&local_a0,&local_a8,1,_DAT_6,_DAT_1e6ae14b8);
+ _CFDictionaryCreate(uVar5,&local_a0,&local_a8,1,_DAT_6,_DAT_1e6aa5520);
*param_1 = uVar5;
pcVar3 = local_e8;
}
_objc_release(pcVar3);
}
else {
pbVar7 = (bool *)param_3[1].field1_0x8;
TFont::IsSystemUIFontAndForShaping((TFont *)param_2,pbVar7);
if ((int)pbVar7 != 0) {
dStack_d8 = -NAN;
local_e0 = (cfstringStruct *)0xffffffffffffffff;
local_c8 = -NAN;
local_d0 = -NAN;
local_c0 = &SUB_1;
pcVar4 = pcVar3;
GetRoundedWeight((__CTFont *)param_3[1].field1_0x8);
SecondaryScaleRecipeForFont(&local_e0,param_3,pcVar3,pcVar4,param_4,param_5);
dVar11 = dStack_d8;
if ((char)local_c0 == '\x01') {
if ((param_5 & 1) == 0) {
param_4 = (double)local_e0 / 100.0;
}
dVar10 = dVar10 * param_4;
pcVar9 = pcVar4;
if (param_6 != 0) {
(**(code **)(**(long **)(param_2[1].field1_0x8 + 0x198) + 0x78))(&local_a0);
pcVar9 = pcVar4;
_objc_release(local_a0);
if (pcVar4 == (cfstringStruct *)0x0) {
GetRoundedWeight((__CTFont *)param_2[1].field1_0x8);
dVar11 = param_4;
}
}
local_e8 = (cfstringStruct *)&SUB_1;
CreateCopyOfFontWithSizeAndWeightClass((__CTFont *)&local_e8,dVar10,dVar11,SUB81(param_2,0))
;
goto LAB_9;
}
}
*param_1 = 0;
}
_objc_release(local_b8);
pcVar4 = local_b0;
LAB_2:
_objc_release(pcVar4);
if (*_DAT_0 == local_88) {
return;
}
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.77 |
| i_ratio | 0.53 |
| m_ratio | 0.99 |
| b_ratio | 0.81 |
| match_types | StructuralGraphExactHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_183418d94 | FUN_1833efa88 |
fullname |
FUN_183418d94 | FUN_1833efa88 |
| refcount | 2 | 2 |
length |
876 | 860 |
called |
FUN_183419100 FUN_183419154 FUN_1834191a8 FUN_1834191fc FUN_18352fa20 FUN_18352fab0 ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_boxed_opaque_existential_1 |
FUN_1833efde4 FUN_1833efe38 FUN_1833efe8c FUN_1833efee0 FUN_183505694 FUN_183505724 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_boxed_opaque_existential_1 |
calling |
FUN_1834198e4 | FUN_1833f05b8 |
| paramcount | 0 | 0 |
address |
183418d94 | 1833efa88 |
sig |
undefined FUN_183418d94(void) | undefined FUN_1833efa88(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_183418d94 called
+++ FUN_1833efa88 called
@@ -1,7 +1,7 @@
-FUN_183419100
-FUN_183419154
-FUN_1834191a8
-FUN_1834191fc
-FUN_18352fa20
-FUN_18352fab0
-___swift_instantiateConcreteTypeFromMangledNameV2
+FUN_1833efde4
+FUN_1833efe38
+FUN_1833efe8c
+FUN_1833efee0
+FUN_183505694
+FUN_183505724
+___swift_instantiateConcreteTypeFromMangledName--- FUN_183418d94 calling
+++ FUN_1833efa88 calling
@@ -1 +1 @@
-FUN_1834198e4
+FUN_1833f05b8--- FUN_183418d94
+++ FUN_1833efa88
@@ -1,96 +1,97 @@
-/* WARNING: Removing unreachable block (ram,0x000183418efc) */
-/* WARNING: Removing unreachable block (ram,0x000183418e7c) */
-/* WARNING: Removing unreachable block (ram,0x000183418f7c) */
-/* WARNING: Removing unreachable block (ram,0x000183418dfc) */
+/* WARNING: Removing unreachable block (ram,0x0001833efbe0) */
+/* WARNING: Removing unreachable block (ram,0x0001833efb64) */
+/* WARNING: Removing unreachable block (ram,0x0001833efc5c) */
+/* WARNING: Removing unreachable block (ram,0x0001833efae8) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_183418d94(long param_1)
+void FUN_1833efa88(long param_1)
{
undefined8 uVar1;
undefined8 uVar2;
char cVar3;
undefined *puVar4;
undefined *puVar5;
long extraout_x8;
long extraout_x8_00;
long extraout_x8_01;
long lVar6;
long extraout_x8_02;
long lVar7;
char *unaff_x20;
undefined1 *puVar8;
long lVar9;
undefined1 auStack_b0 [8];
long local_a8;
undefined *puStack_a0;
undefined1 *local_98;
long local_90;
undefined *puStack_88;
undefined1 *local_80;
long local_78;
undefined *puStack_70;
undefined1 local_53;
undefined1 local_52;
undefined1 local_51;
puVar4 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_183534b28);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_78 = *(long *)(puVar4 + -8);
puStack_70 = puVar4;
- (*_DAT_1)(*(long *)(local_78 + 0x40) + 0xfU & 0xfffffffffffffff0);
- puVar8 = auStack_b0 + -extraout_x8;
+ (*_DAT_1)(*(undefined8 *)(local_78 + 0x40));
+ puVar8 = auStack_b0 + -(extraout_x8 + 0xfU & 0xfffffffffffffff0);
puVar4 = &DAT_2;
local_80 = puVar8;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_2,&DAT_183534b30);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_90 = *(long *)(puVar4 + -8);
puStack_88 = puVar4;
- (*_DAT_1)(*(long *)(local_90 + 0x40) + 0xfU & 0xfffffffffffffff0);
+ (*_DAT_1)(*(undefined8 *)(local_90 + 0x40));
puVar4 = &DAT_3;
- local_98 = puVar8 + -extraout_x8_00;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_3,&DAT_183534b38);
+ local_98 = puVar8 + -(extraout_x8_00 + 0xfU & 0xfffffffffffffff0);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_a8 = *(long *)(puVar4 + -8);
puStack_a0 = puVar4;
- (*_DAT_1)(*(long *)(local_a8 + 0x40) + 0xfU & 0xfffffffffffffff0);
- puVar8 = puVar8 + -extraout_x8_00 + -extraout_x8_01;
+ (*_DAT_1)(*(undefined8 *)(local_a8 + 0x40));
+ puVar8 = puVar8 + -(extraout_x8_00 + 0xfU & 0xfffffffffffffff0) +
+ -(extraout_x8_01 + 0xfU & 0xfffffffffffffff0);
puVar4 = &DAT_4;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_4,&DAT_183534b40);
+ ___swift_instantiateConcreteTypeFromMangledName();
lVar6 = *(long *)(puVar4 + -8);
- (*_DAT_1)(*(long *)(lVar6 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar9 = (long)puVar8 - extraout_x8_02;
+ (*_DAT_1)(*(undefined8 *)(lVar6 + 0x40));
+ lVar9 = (long)puVar8 - (extraout_x8_02 + 0xfU & 0xfffffffffffffff0);
cVar3 = *unaff_x20;
uVar1 = *(undefined8 *)(param_1 + 0x18);
uVar2 = *(undefined8 *)(param_1 + 0x20);
___swift_project_boxed_opaque_existential_1(param_1,uVar1);
- FUN_183419100();
+ FUN_1833efde4();
puVar5 = &DAT_5;
- FUN_18352fab0(lVar9,&DAT_5,&DAT_5,param_1,uVar1,uVar2);
+ FUN_183505724(lVar9,&DAT_5,&DAT_5,param_1,uVar1,uVar2);
if (cVar3 == '\0') {
local_53 = 0;
- FUN_1834191fc();
- FUN_18352fa20(puVar8,&DAT_6,&local_53,puVar4,&DAT_6,puVar5);
+ FUN_1833efee0();
+ FUN_183505694(puVar8,&DAT_6,&local_53,puVar4,&DAT_6,puVar5);
puVar5 = puStack_a0;
lVar7 = local_a8;
}
else if (cVar3 == '\x01') {
local_52 = 1;
- FUN_1834191a8();
+ FUN_1833efe8c();
puVar8 = local_98;
- FUN_18352fa20(local_98,&DAT_7,&local_52,puVar4,&DAT_7,puVar5);
+ FUN_183505694(local_98,&DAT_7,&local_52,puVar4,&DAT_7,puVar5);
puVar5 = puStack_88;
lVar7 = local_90;
}
else {
local_51 = 2;
- FUN_183419154();
+ FUN_1833efe38();
puVar8 = local_80;
- FUN_18352fa20(local_80,&DAT_8,&local_51,puVar4,&DAT_8,puVar5);
+ FUN_183505694(local_80,&DAT_8,&local_51,puVar4,&DAT_8,puVar5);
puVar5 = puStack_70;
lVar7 = local_78;
}
(**(code **)(lVar7 + 8))(puVar8,puVar5);
(**(code **)(lVar6 + 8))(lVar9,puVar4);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.8 |
| i_ratio | 0.72 |
| m_ratio | 0.99 |
| b_ratio | 0.98 |
| match_types | StructuralGraphExactHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_183417830 | FUN_1833ee558 |
fullname |
FUN_183417830 | FUN_1833ee558 |
| refcount | 2 | 2 |
length |
2040 | 2012 |
called |
Expand for full list:FUN_18352fa00 |
Expand for full list:FUN_183505674 |
calling |
FUN_183416eec | FUN_1833edc14 |
| paramcount | 0 | 0 |
address |
183417830 | 1833ee558 |
sig |
undefined FUN_183417830(void) | undefined FUN_1833ee558(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_183417830 called
+++ FUN_1833ee558 called
@@ -1,14 +1,14 @@
-FUN_183417458
-FUN_1834174ac
-FUN_183417554
-FUN_1834175a8
-FUN_1834175fc
-FUN_183418028
-FUN_183419884
-FUN_18352f9b0
-FUN_18352f9c0
-FUN_18352f9d0
-FUN_18352f9e0
-FUN_18352fa00
-FUN_18352fa10
-FUN_18352faa0
+FUN_1833ee180
+FUN_1833ee1d4
+FUN_1833ee27c
+FUN_1833ee2d0
+FUN_1833ee324
+FUN_1833eed34
+FUN_1833f0558
+FUN_183505624
+FUN_183505634
+FUN_183505644
+FUN_183505654
+FUN_183505674
+FUN_183505684
+FUN_183505714
@@ -16 +16 @@
-___swift_instantiateConcreteTypeFromMangledNameV2
+___swift_instantiateConcreteTypeFromMangledName--- FUN_183417830 calling
+++ FUN_1833ee558 calling
@@ -1 +1 @@
-FUN_183416eec
+FUN_1833edc14--- FUN_183417830
+++ FUN_1833ee558
@@ -1,201 +1,202 @@
-/* WARNING: Removing unreachable block (ram,0x000183417a24) */
-/* WARNING: Removing unreachable block (ram,0x000183417920) */
-/* WARNING: Removing unreachable block (ram,0x0001834179a4) */
-/* WARNING: Removing unreachable block (ram,0x000183417aa4) */
-/* WARNING: Removing unreachable block (ram,0x00018341789c) */
-/* WARNING: Removing unreachable block (ram,0x000183417dac) */
-/* WARNING: Removing unreachable block (ram,0x000183417f48) */
+/* WARNING: Removing unreachable block (ram,0x0001833ee738) */
+/* WARNING: Removing unreachable block (ram,0x0001833ee63c) */
+/* WARNING: Removing unreachable block (ram,0x0001833ee6bc) */
+/* WARNING: Removing unreachable block (ram,0x0001833ee7b4) */
+/* WARNING: Removing unreachable block (ram,0x0001833ee5bc) */
+/* WARNING: Removing unreachable block (ram,0x0001833eeab8) */
+/* WARNING: Removing unreachable block (ram,0x0001833eec54) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-undefined1 [16] FUN_183417830(long param_1)
+undefined1 [16] FUN_1833ee558(long param_1)
{
uint uVar1;
undefined8 uVar2;
undefined8 uVar3;
int iVar4;
long lVar5;
undefined *puVar6;
undefined *puVar7;
undefined *puVar8;
long lVar9;
undefined *puVar10;
undefined8 *puVar11;
long extraout_x8;
long extraout_x8_00;
long lVar12;
long extraout_x8_01;
long extraout_x8_02;
undefined8 *puVar13;
long extraout_x8_03;
code *pcVar14;
ulong uVar15;
long lVar16;
long unaff_x21;
undefined8 *puVar17;
long lVar18;
undefined1 auVar19 [16];
undefined *apuStack_f0 [2];
long local_e0;
long local_d8;
undefined *local_d0;
undefined *local_c8;
long local_c0;
long local_b8;
long local_b0;
long local_a8;
long local_a0;
undefined *local_98;
undefined1 local_58;
undefined7 uStack_57;
puVar7 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_1835345b0);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_b8 = *(long *)(puVar7 + -8);
local_98 = puVar7;
- (*_DAT_1)(*(long *)(local_b8 + 0x40) + 0xfU & 0xfffffffffffffff0);
+ (*_DAT_1)(*(undefined8 *)(local_b8 + 0x40));
+ lVar12 = (long)apuStack_f0 - (extraout_x8 + 0xfU & 0xfffffffffffffff0);
puVar7 = &DAT_2;
- local_a0 = (long)apuStack_f0 - extraout_x8;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_2,&DAT_1835345b8);
+ local_a0 = lVar12;
+ ___swift_instantiateConcreteTypeFromMangledName();
local_b0 = *(long *)(puVar7 + -8);
local_c8 = puVar7;
- (*_DAT_1)(*(long *)(local_b0 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar12 = ((long)apuStack_f0 - extraout_x8) - extraout_x8_00;
+ (*_DAT_1)(*(undefined8 *)(local_b0 + 0x40));
+ lVar12 = lVar12 - (extraout_x8_00 + 0xfU & 0xfffffffffffffff0);
puVar7 = &DAT_3;
local_a8 = lVar12;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_3,&DAT_1835345c0);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_c0 = *(long *)(puVar7 + -8);
local_d0 = puVar7;
- (*_DAT_1)(*(long *)(local_c0 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar12 = lVar12 - extraout_x8_01;
+ (*_DAT_1)(*(undefined8 *)(local_c0 + 0x40));
+ lVar12 = lVar12 - (extraout_x8_01 + 0xfU & 0xfffffffffffffff0);
puVar7 = &DAT_4;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_4,&DAT_1835345c8);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_d8 = *(long *)(puVar7 + -8);
- (*_DAT_1)(*(long *)(local_d8 + 0x40) + 0xfU & 0xfffffffffffffff0);
- puVar17 = (undefined8 *)(lVar12 - extraout_x8_02);
+ (*_DAT_1)(*(undefined8 *)(local_d8 + 0x40));
+ puVar17 = (undefined8 *)(lVar12 - (extraout_x8_02 + 0xfU & 0xfffffffffffffff0));
puVar8 = &DAT_5;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_5,&DAT_1835345d0);
+ ___swift_instantiateConcreteTypeFromMangledName();
puVar13 = *(undefined8 **)(puVar8 + -8);
- (*_DAT_1)(puVar13[8] + 0xf & 0xfffffffffffffff0);
- lVar18 = (long)puVar17 - extraout_x8_03;
+ (*_DAT_1)(puVar13[8]);
+ lVar18 = (long)puVar17 - (extraout_x8_03 + 0xfU & 0xfffffffffffffff0);
uVar2 = *(undefined8 *)(param_1 + 0x18);
uVar3 = *(undefined8 *)(param_1 + 0x20);
lVar16 = param_1;
___swift_project_boxed_opaque_existential_1(param_1,uVar2);
lVar9 = lVar16;
- FUN_183417458();
- FUN_18352faa0(lVar18,&DAT_6,&DAT_6,lVar9,uVar2,uVar3);
+ FUN_1833ee180();
+ FUN_183505714(lVar18,&DAT_6,&DAT_6,lVar9,uVar2,uVar3);
puVar6 = local_98;
lVar5 = local_a0;
lVar9 = local_a8;
if (unaff_x21 == 0) {
puVar10 = puVar8;
apuStack_f0[1] = puVar7;
local_e0 = unaff_x21;
- FUN_18352fa10();
+ FUN_183505684();
uVar15 = *(ulong *)(puVar10 + 0x10);
puVar7 = puVar10;
- FUN_183419884();
+ FUN_1833f0558();
lVar16 = lVar18;
if ((((uint)puVar7 & 0xff) != 4) && ((uVar15 & 0x7fffffffffffffff) == 0)) {
uVar1 = (uint)puVar7 & 0xff;
if (uVar1 == 1 || ((ulong)puVar7 & 0xff) == 0) {
if (((ulong)puVar7 & 0xff) == 0) {
local_58 = 0;
- FUN_1834175fc();
- FUN_18352f9d0(puVar17,&DAT_7,&local_58,puVar8,&DAT_7,puVar7);
+ FUN_1833ee324();
+ FUN_183505644(puVar17,&DAT_7,&local_58,puVar8,&DAT_7,puVar7);
if (local_e0 != 0) {
LAB_8:
pcVar14 = (code *)puVar13[1];
puVar13 = puVar17;
goto LAB_9;
}
(**(code **)(local_d8 + 8))(puVar17,apuStack_f0[1]);
(*(code *)puVar13[1])(lVar18,puVar8);
_swift_unknownObjectRelease(puVar10);
puVar13 = (undefined8 *)0x0;
lVar16 = 3;
}
else {
local_58 = 1;
- FUN_1834175a8();
- FUN_18352f9d0(lVar12,&DAT_10,&local_58,puVar8,&DAT_10,puVar7);
+ FUN_1833ee2d0();
+ FUN_183505644(lVar12,&DAT_10,&local_58,puVar8,&DAT_10,puVar7);
puVar17 = puVar13;
if (local_e0 != 0) goto LAB_8;
- FUN_183418028();
+ FUN_1833eed34();
puVar7 = local_d0;
- FUN_18352fa00(&local_58);
+ FUN_183505674(&local_58);
(**(code **)(local_c0 + 8))(lVar12,puVar7);
(*(code *)puVar13[1])(lVar18,puVar8);
_swift_unknownObjectRelease(puVar10);
lVar16 = 0;
puVar13 = (undefined8 *)CONCAT71(uStack_57,local_58);
}
}
else if (uVar1 == 2) {
local_58 = SUB81(puVar7,0);
- FUN_183417554();
- FUN_18352f9d0(lVar9,&DAT_11,&local_58,puVar8,&DAT_11,puVar7);
+ FUN_1833ee27c();
+ FUN_183505644(lVar9,&DAT_11,&local_58,puVar8,&DAT_11,puVar7);
if (local_e0 != 0) {
puVar13 = puVar13 + 1;
(*(code *)*puVar13)(lVar18,puVar8);
goto LAB_12;
}
- FUN_183418028();
+ FUN_1833eed34();
puVar7 = local_c8;
- FUN_18352fa00(&local_58);
+ FUN_183505674(&local_58);
(**(code **)(local_b0 + 8))(lVar9,puVar7);
(*(code *)puVar13[1])(lVar18,puVar8);
_swift_unknownObjectRelease(puVar10);
puVar13 = (undefined8 *)CONCAT71(uStack_57,local_58);
lVar16 = 1;
}
else {
local_58 = 3;
- FUN_1834174ac();
- FUN_18352f9d0(lVar5,&DAT_13,&local_58,puVar8,&DAT_13,puVar7);
+ FUN_1833ee1d4();
+ FUN_183505644(lVar5,&DAT_13,&local_58,puVar8,&DAT_13,puVar7);
if (local_e0 != 0) {
puVar13 = puVar13 + 1;
(*(code *)*puVar13)(lVar18,puVar8);
_swift_unknownObjectRelease(puVar10);
goto LAB_14;
}
- FUN_183418028();
- FUN_18352fa00(&local_58);
+ FUN_1833eed34();
+ FUN_183505674(&local_58);
(**(code **)(local_b8 + 8))(lVar5,puVar6);
(*(code *)puVar13[1])(lVar18,puVar8);
_swift_unknownObjectRelease(puVar10);
puVar13 = (undefined8 *)CONCAT71(uStack_57,local_58);
lVar16 = 2;
}
___swift_destroy_boxed_opaque_existential_1(param_1);
goto LAB_15;
}
puVar11 = (undefined8 *)0x0;
- FUN_18352f9c0();
+ FUN_183505634();
puVar17 = _DAT_16;
_swift_allocError();
puVar7 = &DAT_17;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_17,&DAT_1835345d8);
+ ___swift_instantiateConcreteTypeFromMangledName();
iVar4 = *(int *)(puVar7 + 0x30);
*puVar17 = &DAT_18;
- FUN_18352f9e0(puVar8);
- FUN_18352f9b0((long)puVar17 + (long)iVar4);
+ FUN_183505654(puVar8);
+ FUN_183505624((long)puVar17 + (long)iVar4);
(**(code **)(puVar11[-1] + 0x68))(puVar17,*_DAT_19,puVar11);
_swift_willThrow();
pcVar14 = (code *)puVar13[1];
puVar13 = puVar11;
LAB_9:
(*pcVar14)(lVar18,puVar8);
LAB_12:
_swift_unknownObjectRelease(puVar10);
}
LAB_14:
___swift_destroy_boxed_opaque_existential_1(param_1);
LAB_15:
auVar19._8_8_ = lVar16;
auVar19._0_8_ = puVar13;
return auVar19;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.84 |
| i_ratio | 0.77 |
| m_ratio | 1.0 |
| b_ratio | 0.99 |
| match_types | StructuralGraphExactHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_1834146f8 | FUN_1833eb474 |
fullname |
FUN_1834146f8 | FUN_1833eb474 |
| refcount | 2 | 2 |
length |
676 | 672 |
called |
Expand for full list:_swift_bridgeObjectRetain |
Expand for full list:_swift_bridgeObjectRetain |
calling |
FUN_1834149a0 | FUN_1833eb718 |
| paramcount | 0 | 0 |
address |
1834146f8 | 1833eb474 |
sig |
undefined FUN_1834146f8(void) | undefined FUN_1833eb474(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_1834146f8 called
+++ FUN_1833eb474 called
@@ -1,7 +1,7 @@
-FUN_18341400c
-FUN_183414060
-FUN_183415348
-FUN_18341543c
-FUN_18352f9f0
-FUN_18352fa00
-FUN_18352faa0
+FUN_1833ead8c
+FUN_1833eade0
+FUN_1833ec0c4
+FUN_1833ec1b8
+FUN_183505664
+FUN_183505674
+FUN_183505714
@@ -9 +9 @@
-___swift_instantiateConcreteTypeFromMangledNameV2
+___swift_instantiateConcreteTypeFromMangledName--- FUN_1834146f8 calling
+++ FUN_1833eb474 calling
@@ -1 +1 @@
-FUN_1834149a0
+FUN_1833eb718--- FUN_1834146f8
+++ FUN_1833eb474
@@ -1,82 +1,83 @@
-/* WARNING: Removing unreachable block (ram,0x000183414768) */
-/* WARNING: Removing unreachable block (ram,0x0001834148e0) */
-/* WARNING: Removing unreachable block (ram,0x000183414898) */
-/* WARNING: Removing unreachable block (ram,0x0001834148fc) */
-/* WARNING: Removing unreachable block (ram,0x000183414914) */
-/* WARNING: Removing unreachable block (ram,0x000183414824) */
+/* WARNING: Removing unreachable block (ram,0x0001833eb4dc) */
+/* WARNING: Removing unreachable block (ram,0x0001833eb658) */
+/* WARNING: Removing unreachable block (ram,0x0001833eb610) */
+/* WARNING: Removing unreachable block (ram,0x0001833eb674) */
+/* WARNING: Removing unreachable block (ram,0x0001833eb68c) */
+/* WARNING: Removing unreachable block (ram,0x0001833eb59c) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_1834146f8(undefined8 *param_1,long param_2)
+void FUN_1833eb474(undefined8 *param_1,long param_2)
{
undefined8 uVar1;
undefined8 uVar2;
undefined *puVar3;
long lVar4;
undefined *puVar5;
undefined1 *puVar6;
undefined1 *puVar7;
undefined *puVar8;
long lVar9;
long extraout_x8;
long unaff_x21;
undefined1 auStack_90 [8];
undefined1 *local_88;
undefined *local_80;
undefined8 local_78;
undefined1 local_70;
undefined7 uStack_6f;
undefined8 uStack_68;
undefined1 local_51;
puVar3 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_183533f38);
+ ___swift_instantiateConcreteTypeFromMangledName();
lVar9 = *(long *)(puVar3 + -8);
- (*_DAT_1)(*(long *)(lVar9 + 0x40) + 0xfU & 0xfffffffffffffff0);
+ (*_DAT_1)(*(undefined8 *)(lVar9 + 0x40));
uVar1 = *(undefined8 *)(param_2 + 0x18);
uVar2 = *(undefined8 *)(param_2 + 0x20);
lVar4 = param_2;
___swift_project_boxed_opaque_existential_1(param_2,uVar1);
- FUN_183415348();
+ FUN_1833ec0c4();
puVar5 = &DAT_2;
- FUN_18352faa0(auStack_90 + -extraout_x8,&DAT_2,&DAT_2,lVar4,uVar1,uVar2);
+ FUN_183505714(auStack_90 + -(extraout_x8 + 0xfU & 0xfffffffffffffff0),&DAT_2,
+ &DAT_2,lVar4,uVar1,uVar2);
if (unaff_x21 == 0) {
local_51 = 0;
- FUN_18341543c();
- FUN_18352fa00(&local_70,_DAT_3,&local_51,puVar3,_DAT_3,puVar5);
+ FUN_1833ec1b8();
+ FUN_183505674(&local_70,_DAT_3,&local_51,puVar3,_DAT_3,puVar5);
uVar1 = CONCAT71(uStack_6f,local_70);
local_78 = uStack_68;
local_70 = 1;
puVar6 = &local_70;
puVar5 = puVar3;
- FUN_18352f9f0();
+ FUN_183505664();
local_70 = 2;
puVar7 = &local_70;
puVar8 = puVar3;
local_88 = puVar6;
local_80 = puVar5;
- FUN_18352f9f0();
- (**(code **)(lVar9 + 8))(auStack_90 + -extraout_x8,puVar3);
+ FUN_183505664();
+ (**(code **)(lVar9 + 8))(auStack_90 + -(extraout_x8 + 0xfU & 0xfffffffffffffff0),puVar3);
uVar2 = local_78;
puVar3 = local_80;
*param_1 = uVar1;
param_1[1] = local_78;
param_1[2] = local_88;
param_1[3] = local_80;
param_1[4] = puVar7;
param_1[5] = puVar8;
- FUN_18341400c(uVar1,local_78);
+ FUN_1833ead8c(uVar1,local_78);
_swift_bridgeObjectRetain(puVar3);
_swift_bridgeObjectRetain(puVar8);
___swift_destroy_boxed_opaque_existential_1(param_2);
- FUN_183414060(uVar1,uVar2);
+ FUN_1833eade0(uVar1,uVar2);
_swift_bridgeObjectRelease(puVar8);
_swift_bridgeObjectRelease(puVar3);
}
else {
___swift_destroy_boxed_opaque_existential_1(param_2);
}
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.8 |
| i_ratio | 0.78 |
| m_ratio | 1.0 |
| b_ratio | 0.99 |
| match_types | StructuralGraphExactHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_183414430 | FUN_1833eb1b0 |
fullname |
FUN_183414430 | FUN_1833eb1b0 |
| refcount | 2 | 2 |
length |
472 | 468 |
called |
FUN_18341400c FUN_183414060 FUN_183415348 FUN_18341539c FUN_18352fa30 FUN_18352fa40 FUN_18352fab0 ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_boxed_opaque_existential_1 |
FUN_1833ead8c FUN_1833eade0 FUN_1833ec0c4 FUN_1833ec118 FUN_1835056a4 FUN_1835056b4 FUN_183505724 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_boxed_opaque_existential_1 |
calling |
FUN_1834149b8 | FUN_1833eb730 |
| paramcount | 0 | 0 |
address |
183414430 | 1833eb1b0 |
sig |
undefined FUN_183414430(void) | undefined FUN_1833eb1b0(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_183414430 called
+++ FUN_1833eb1b0 called
@@ -1,8 +1,8 @@
-FUN_18341400c
-FUN_183414060
-FUN_183415348
-FUN_18341539c
-FUN_18352fa30
-FUN_18352fa40
-FUN_18352fab0
-___swift_instantiateConcreteTypeFromMangledNameV2
+FUN_1833ead8c
+FUN_1833eade0
+FUN_1833ec0c4
+FUN_1833ec118
+FUN_1835056a4
+FUN_1835056b4
+FUN_183505724
+___swift_instantiateConcreteTypeFromMangledName--- FUN_183414430 calling
+++ FUN_1833eb1b0 calling
@@ -1 +1 @@
-FUN_1834149b8
+FUN_1833eb730--- FUN_183414430
+++ FUN_1833eb1b0
@@ -1,63 +1,64 @@
-/* WARNING: Removing unreachable block (ram,0x00018341449c) */
+/* WARNING: Removing unreachable block (ram,0x0001833eb214) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_183414430(long param_1)
+void FUN_1833eb1b0(long param_1)
{
undefined8 uVar1;
undefined8 uVar2;
undefined8 uVar3;
undefined8 uVar4;
undefined *puVar5;
undefined8 uVar6;
undefined *puVar7;
long lVar8;
long extraout_x8;
undefined8 *unaff_x20;
long unaff_x21;
undefined1 auStack_a0 [8];
undefined8 local_98;
undefined8 uStack_90;
undefined8 local_88;
undefined8 uStack_80;
undefined8 local_70;
undefined8 uStack_68;
undefined1 local_51;
puVar5 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_183533f30);
+ ___swift_instantiateConcreteTypeFromMangledName();
lVar8 = *(long *)(puVar5 + -8);
- (*_DAT_1)(*(long *)(lVar8 + 0x40) + 0xfU & 0xfffffffffffffff0);
+ (*_DAT_1)(*(undefined8 *)(lVar8 + 0x40));
uVar1 = *unaff_x20;
uVar3 = unaff_x20[1];
uStack_80 = unaff_x20[2];
local_88 = unaff_x20[3];
uStack_90 = unaff_x20[4];
local_98 = unaff_x20[5];
uVar2 = *(undefined8 *)(param_1 + 0x18);
uVar4 = *(undefined8 *)(param_1 + 0x20);
___swift_project_boxed_opaque_existential_1(param_1,uVar2);
uVar6 = uVar1;
- FUN_18341400c(uVar1,uVar3);
- FUN_183415348();
+ FUN_1833ead8c(uVar1,uVar3);
+ FUN_1833ec0c4();
puVar7 = &DAT_2;
- FUN_18352fab0(auStack_a0 + -extraout_x8,&DAT_2,&DAT_2,uVar6,uVar2,uVar4);
+ FUN_183505724(auStack_a0 + -(extraout_x8 + 0xfU & 0xfffffffffffffff0),&DAT_2,
+ &DAT_2,uVar6,uVar2,uVar4);
local_51 = 0;
local_70 = uVar1;
uStack_68 = uVar3;
- FUN_18341539c();
- FUN_18352fa40(&local_70,&local_51,puVar5,_DAT_3,puVar7);
- FUN_183414060(local_70,uStack_68);
+ FUN_1833ec118();
+ FUN_1835056b4(&local_70,&local_51,puVar5,_DAT_3,puVar7);
+ FUN_1833eade0(local_70,uStack_68);
uVar2 = uStack_90;
uVar1 = local_98;
if (unaff_x21 == 0) {
local_70._0_1_ = 1;
- FUN_18352fa30(uStack_80,local_88,&local_70,puVar5);
+ FUN_1835056a4(uStack_80,local_88,&local_70,puVar5);
local_70 = CONCAT71(local_70._1_7_,2);
- FUN_18352fa30(uVar2,uVar1,&local_70,puVar5);
+ FUN_1835056a4(uVar2,uVar1,&local_70,puVar5);
}
- (**(code **)(lVar8 + 8))(auStack_a0 + -extraout_x8,puVar5);
+ (**(code **)(lVar8 + 8))(auStack_a0 + -(extraout_x8 + 0xfU & 0xfffffffffffffff0),puVar5);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.57 |
| i_ratio | 0.51 |
| m_ratio | 0.98 |
| b_ratio | 0.58 |
| match_types | StructuralGraphExactHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_1834163e0 | FUN_1833ed134 |
fullname |
FUN_1834163e0 | FUN_1833ed134 |
| refcount | 2 | 2 |
length |
1340 | 1296 |
called |
Expand for full list: |
Expand for full list: |
calling |
FUN_183416f20 | FUN_1833edc48 |
| paramcount | 0 | 0 |
address |
1834163e0 | 1833ed134 |
sig |
undefined FUN_1834163e0(void) | undefined FUN_1833ed134(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_1834163e0 called
+++ FUN_1833ed134 called
@@ -1,10 +1,10 @@
-FUN_183417458
-FUN_1834174ac
-FUN_183417500
-FUN_183417554
-FUN_1834175a8
-FUN_1834175fc
-FUN_18352fa20
-FUN_18352fa40
-FUN_18352fab0
-___swift_instantiateConcreteTypeFromMangledNameV2
+FUN_1833ee180
+FUN_1833ee1d4
+FUN_1833ee228
+FUN_1833ee27c
+FUN_1833ee2d0
+FUN_1833ee324
+FUN_183505694
+FUN_1835056b4
+FUN_183505724
+___swift_instantiateConcreteTypeFromMangledName--- FUN_1834163e0 calling
+++ FUN_1833ed134 calling
@@ -1 +1 @@
-FUN_183416f20
+FUN_1833edc48--- FUN_1834163e0
+++ FUN_1833ed134
@@ -1,131 +1,131 @@
-/* WARNING: Removing unreachable block (ram,0x0001834165cc) */
-/* WARNING: Removing unreachable block (ram,0x0001834164d0) */
-/* WARNING: Removing unreachable block (ram,0x00018341654c) */
-/* WARNING: Removing unreachable block (ram,0x00018341664c) */
-/* WARNING: Removing unreachable block (ram,0x000183416450) */
+/* WARNING: Removing unreachable block (ram,0x0001833ed30c) */
+/* WARNING: Removing unreachable block (ram,0x0001833ed218) */
+/* WARNING: Removing unreachable block (ram,0x0001833ed290) */
+/* WARNING: Removing unreachable block (ram,0x0001833ed388) */
+/* WARNING: Removing unreachable block (ram,0x0001833ed19c) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_1834163e0(long param_1,long param_2,uint param_3)
+void FUN_1833ed134(long param_1,long param_2,uint param_3)
{
uint uVar1;
undefined8 uVar2;
undefined8 uVar3;
undefined *puVar4;
undefined *puVar5;
- undefined *puVar6;
long extraout_x8;
long extraout_x8_00;
long extraout_x8_01;
long extraout_x8_02;
- long lVar7;
+ long lVar6;
long extraout_x8_03;
- code *pcVar8;
+ code *pcVar7;
+ undefined *puVar8;
long lVar9;
long lVar10;
long lVar11;
long lVar12;
long local_c0;
long local_b8;
undefined *local_b0;
long local_a8;
undefined *local_a0;
long local_98;
long local_90;
undefined *local_88;
long local_80;
uint local_74;
undefined *local_70;
long local_58;
puVar4 = &DAT_0;
local_80 = param_2;
local_74 = param_3;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_183534588);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_90 = *(long *)(puVar4 + -8);
local_88 = puVar4;
- (*_DAT_1)(*(long *)(local_90 + 0x40) + 0xfU & 0xfffffffffffffff0);
+ (*_DAT_1)(*(undefined8 *)(local_90 + 0x40));
+ lVar12 = (long)&local_c0 - (extraout_x8 + 0xfU & 0xfffffffffffffff0);
puVar4 = &DAT_2;
- local_98 = (long)&local_c0 - extraout_x8;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_2,&DAT_183534590);
+ local_98 = lVar12;
+ ___swift_instantiateConcreteTypeFromMangledName();
local_a8 = *(long *)(puVar4 + -8);
local_a0 = puVar4;
- (*_DAT_1)(*(long *)(local_a8 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar12 = ((long)&local_c0 - extraout_x8) - extraout_x8_00;
+ (*_DAT_1)(*(undefined8 *)(local_a8 + 0x40));
+ lVar12 = lVar12 - (extraout_x8_00 + 0xfU & 0xfffffffffffffff0);
puVar4 = &DAT_3;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_3,&DAT_183534598);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_b8 = *(long *)(puVar4 + -8);
local_b0 = puVar4;
- (*_DAT_1)(*(long *)(local_b8 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar9 = lVar12 - extraout_x8_01;
+ (*_DAT_1)(*(undefined8 *)(local_b8 + 0x40));
+ lVar10 = lVar12 - (extraout_x8_01 + 0xfU & 0xfffffffffffffff0);
puVar4 = &DAT_4;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_4,&DAT_1835345a0);
+ ___swift_instantiateConcreteTypeFromMangledName();
local_c0 = *(long *)(puVar4 + -8);
- (*_DAT_1)(*(long *)(local_c0 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar11 = lVar9 - extraout_x8_02;
+ (*_DAT_1)(*(undefined8 *)(local_c0 + 0x40));
+ lVar11 = lVar10 - (extraout_x8_02 + 0xfU & 0xfffffffffffffff0);
puVar5 = &DAT_5;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_5,&DAT_1835345a8);
- lVar7 = *(long *)(puVar5 + -8);
+ ___swift_instantiateConcreteTypeFromMangledName();
+ lVar6 = *(long *)(puVar5 + -8);
local_70 = puVar5;
- (*_DAT_1)(*(long *)(lVar7 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar10 = lVar11 - extraout_x8_03;
+ (*_DAT_1)(*(undefined8 *)(lVar6 + 0x40));
+ lVar9 = lVar11 - (extraout_x8_03 + 0xfU & 0xfffffffffffffff0);
uVar2 = *(undefined8 *)(param_1 + 0x18);
uVar3 = *(undefined8 *)(param_1 + 0x20);
___swift_project_boxed_opaque_existential_1(param_1,uVar2);
- FUN_183417458();
+ FUN_1833ee180();
puVar5 = &DAT_6;
- FUN_18352fab0(lVar10,&DAT_6,&DAT_6,param_1,uVar2,uVar3);
+ FUN_183505724(lVar9,&DAT_6,&DAT_6,param_1,uVar2,uVar3);
uVar1 = local_74 & 0xff;
if (uVar1 < 2) {
if (uVar1 == 0) {
local_58 = CONCAT71(local_58._1_7_,1);
- FUN_1834175a8();
- puVar6 = local_70;
- FUN_18352fa20(lVar9,&DAT_7,&local_58,local_70,&DAT_7,puVar5);
+ FUN_1833ee2d0();
+ puVar8 = local_70;
+ FUN_183505694(lVar10,&DAT_7,&local_58,local_70,&DAT_7,puVar5);
local_58 = local_80;
- FUN_183417500();
+ FUN_1833ee228();
puVar4 = local_b0;
- FUN_18352fa40(&local_58);
- (**(code **)(local_b8 + 8))(lVar9,puVar4);
- pcVar8 = *(code **)(lVar7 + 8);
- goto LAB_8;
+ FUN_1835056b4(&local_58);
+ pcVar7 = *(code **)(local_b8 + 8);
+ lVar12 = lVar10;
}
- local_58 = CONCAT71(local_58._1_7_,2);
- FUN_183417554();
- puVar6 = local_70;
- FUN_18352fa20(lVar12,&DAT_9,&local_58,local_70,&DAT_9,puVar5);
- local_58 = local_80;
- FUN_183417500();
- puVar4 = local_a0;
- FUN_18352fa40(&local_58);
- pcVar8 = *(code **)(local_a8 + 8);
+ else {
+ local_58 = CONCAT71(local_58._1_7_,2);
+ FUN_1833ee27c();
+ puVar8 = local_70;
+ FUN_183505694(lVar12,&DAT_8,&local_58,local_70,&DAT_8,puVar5);
+ local_58 = local_80;
+ FUN_1833ee228();
+ puVar4 = local_a0;
+ FUN_1835056b4(&local_58);
+ pcVar7 = *(code **)(local_a8 + 8);
+ }
}
else {
if (uVar1 != 2) {
local_58 = (ulong)local_58._1_7_ << 8;
- FUN_1834175fc();
- puVar6 = local_70;
- FUN_18352fa20(lVar11,&DAT_10,&local_58,local_70,&DAT_10,puVar5);
+ FUN_1833ee324();
+ puVar8 = local_70;
+ FUN_183505694(lVar11,&DAT_9,&local_58,local_70,&DAT_9,puVar5);
(**(code **)(local_c0 + 8))(lVar11,puVar4);
- (**(code **)(lVar7 + 8))(lVar10,puVar6);
+ (**(code **)(lVar6 + 8))(lVar9,puVar8);
return;
}
local_58 = CONCAT71(local_58._1_7_,3);
- FUN_1834174ac();
- puVar6 = local_70;
+ FUN_1833ee1d4();
+ puVar8 = local_70;
lVar12 = local_98;
- FUN_18352fa20(local_98,&DAT_11,&local_58,local_70,&DAT_11,puVar5);
+ FUN_183505694(local_98,&DAT_10,&local_58,local_70,&DAT_10,puVar5);
local_58 = local_80;
- FUN_183417500();
+ FUN_1833ee228();
puVar4 = local_88;
- FUN_18352fa40(&local_58);
- pcVar8 = *(code **)(local_90 + 8);
+ FUN_1835056b4(&local_58);
+ pcVar7 = *(code **)(local_90 + 8);
}
- (*pcVar8)(lVar12,puVar4);
- pcVar8 = *(code **)(lVar7 + 8);
-LAB_8:
- (*pcVar8)(lVar10,puVar6);
+ (*pcVar7)(lVar12,puVar4);
+ (**(code **)(lVar6 + 8))(lVar9,puVar8);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.76 |
| i_ratio | 0.76 |
| m_ratio | 0.99 |
| b_ratio | 0.98 |
| match_types | StructuralGraphExactHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_183416114 | FUN_1833ece6c |
fullname |
FUN_183416114 | FUN_1833ece6c |
| refcount | 2 | 2 |
length |
376 | 372 |
called |
FUN_183415fa8 FUN_183416f98 FUN_18352fa00 FUN_18352faa0 ___swift_destroy_boxed_opaque_existential_1 ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_boxed_opaque_existential_1 |
FUN_1833ecd00 FUN_1833edcc0 FUN_183505674 FUN_183505714 ___swift_destroy_boxed_opaque_existential_1 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_boxed_opaque_existential_1 |
calling |
FUN_183416290 | FUN_1833ecfe4 |
| paramcount | 0 | 0 |
address |
183416114 | 1833ece6c |
sig |
undefined FUN_183416114(void) | undefined FUN_1833ece6c(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_183416114 called
+++ FUN_1833ece6c called
@@ -1,4 +1,4 @@
-FUN_183415fa8
-FUN_183416f98
-FUN_18352fa00
-FUN_18352faa0
+FUN_1833ecd00
+FUN_1833edcc0
+FUN_183505674
+FUN_183505714
@@ -6 +6 @@
-___swift_instantiateConcreteTypeFromMangledNameV2
+___swift_instantiateConcreteTypeFromMangledName--- FUN_183416114 calling
+++ FUN_1833ece6c calling
@@ -1 +1 @@
-FUN_183416290
+FUN_1833ecfe4--- FUN_183416114
+++ FUN_1833ece6c
@@ -1,38 +1,40 @@
-/* WARNING: Removing unreachable block (ram,0x000183416184) */
+/* WARNING: Removing unreachable block (ram,0x0001833eced4) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_183416114(undefined8 *param_1,long param_2)
+void FUN_1833ece6c(undefined8 *param_1,long param_2)
{
undefined8 uVar1;
undefined8 uVar2;
undefined *puVar3;
long lVar4;
long lVar5;
long extraout_x8;
long unaff_x21;
+ long lVar6;
undefined8 local_70;
undefined1 local_68;
puVar3 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_1835341f0);
+ ___swift_instantiateConcreteTypeFromMangledName();
lVar5 = *(long *)(puVar3 + -8);
- (*_DAT_1)(*(long *)(lVar5 + 0x40) + 0xfU & 0xfffffffffffffff0);
+ (*_DAT_1)(*(undefined8 *)(lVar5 + 0x40));
+ lVar6 = (long)&local_70 - (extraout_x8 + 0xfU & 0xfffffffffffffff0);
uVar1 = *(undefined8 *)(param_2 + 0x18);
uVar2 = *(undefined8 *)(param_2 + 0x20);
lVar4 = param_2;
___swift_project_boxed_opaque_existential_1(param_2,uVar1);
- FUN_183415fa8();
- FUN_18352faa0((long)&local_70 - extraout_x8,&DAT_2,&DAT_2,lVar4,uVar1,uVar2);
+ FUN_1833ecd00();
+ FUN_183505714(lVar6,&DAT_2,&DAT_2,lVar4,uVar1,uVar2);
if (unaff_x21 == 0) {
- FUN_183416f98();
- FUN_18352fa00(&local_70);
- (**(code **)(lVar5 + 8))((long)&local_70 - extraout_x8,puVar3);
+ FUN_1833edcc0();
+ FUN_183505674(&local_70);
+ (**(code **)(lVar5 + 8))(lVar6,puVar3);
*param_1 = local_70;
*(undefined1 *)(param_1 + 1) = local_68;
}
___swift_destroy_boxed_opaque_existential_1(param_2);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.89 |
| i_ratio | 0.85 |
| m_ratio | 0.96 |
| b_ratio | 0.96 |
| match_types | BSIM |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_183415b1c | FUN_1833ec888 |
fullname |
FUN_183415b1c | FUN_1833ec888 |
| refcount | 5 | 5 |
length |
112 | 104 |
called |
___swift_instantiateConcreteTypeFromMangledNameV2 | ___swift_instantiateConcreteTypeFromMangledName |
calling |
FUN_183415a60 FUN_183415ba8 FUN_18341893c FUN_183418a9c |
FUN_1833ec7d4 FUN_1833ec90c FUN_1833ef640 FUN_1833ef798 |
| paramcount | 0 | 0 |
address |
183415b1c | 1833ec888 |
sig |
undefined FUN_183415b1c(void) | undefined FUN_1833ec888(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_183415b1c called
+++ FUN_1833ec888 called
@@ -1 +1 @@
-___swift_instantiateConcreteTypeFromMangledNameV2
+___swift_instantiateConcreteTypeFromMangledName--- FUN_183415b1c calling
+++ FUN_1833ec888 calling
@@ -1,4 +1,4 @@
-FUN_183415a60
-FUN_183415ba8
-FUN_18341893c
-FUN_183418a9c
+FUN_1833ec7d4
+FUN_1833ec90c
+FUN_1833ef640
+FUN_1833ef798--- FUN_183415b1c
+++ FUN_1833ec888
@@ -1,12 +1,12 @@
-undefined8 FUN_183415b1c(undefined8 param_1,undefined8 param_2)
+undefined8 FUN_1833ec888(undefined8 param_1,undefined8 param_2)
{
undefined *puVar1;
puVar1 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_1835341e0);
+ ___swift_instantiateConcreteTypeFromMangledName();
(**(code **)(*(long *)(puVar1 + -8) + 0x10))(param_2,param_1,puVar1);
return param_2;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.32 |
| i_ratio | 0.46 |
| m_ratio | 0.99 |
| b_ratio | 0.68 |
| match_types | BSIM |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_1834192c4 | FUN_1833effa8 |
fullname |
FUN_1834192c4 | FUN_1833effa8 |
| refcount | 2 | 2 |
length |
1472 | 1456 |
called |
Expand for full list:___swift_instantiateConcreteTypeFromMangledNameV2 |
Expand for full list:___swift_instantiateConcreteTypeFromMangledName |
calling |
FUN_1834198cc | FUN_1833f05a0 |
| paramcount | 0 | 0 |
address |
1834192c4 | 1833effa8 |
sig |
undefined FUN_1834192c4(void) | undefined FUN_1833effa8(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_1834192c4 called
+++ FUN_1833effa8 called
@@ -1,10 +1,10 @@
-FUN_183419100
-FUN_183419154
-FUN_1834191a8
-FUN_1834191fc
-FUN_18352f9b0
-FUN_18352f9c0
-FUN_18352f9d0
-FUN_18352f9e0
-FUN_18352fa10
-FUN_18352faa0
+FUN_1833efde4
+FUN_1833efe38
+FUN_1833efe8c
+FUN_1833efee0
+FUN_183505624
+FUN_183505634
+FUN_183505644
+FUN_183505654
+FUN_183505684
+FUN_183505714
@@ -12 +12 @@
-___swift_instantiateConcreteTypeFromMangledNameV2
+___swift_instantiateConcreteTypeFromMangledName--- FUN_1834192c4 calling
+++ FUN_1833effa8 calling
@@ -1 +1 @@
-FUN_1834198cc
+FUN_1833f05a0--- FUN_1834192c4
+++ FUN_1833effa8
@@ -1,154 +1,157 @@
-/* WARNING: Removing unreachable block (ram,0x000183419434) */
-/* WARNING: Removing unreachable block (ram,0x0001834193b4) */
-/* WARNING: Removing unreachable block (ram,0x0001834194b4) */
-/* WARNING: Removing unreachable block (ram,0x000183419330) */
+/* WARNING: Removing unreachable block (ram,0x0001833f0108) */
+/* WARNING: Removing unreachable block (ram,0x0001833f008c) */
+/* WARNING: Removing unreachable block (ram,0x0001833f0184) */
+/* WARNING: Removing unreachable block (ram,0x0001833f000c) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_1834192c4(char *param_1,long param_2)
+void FUN_1833effa8(char *param_1,long param_2)
{
undefined8 uVar1;
undefined8 uVar2;
char cVar3;
int iVar4;
- undefined *puVar5;
- undefined1 *puVar6;
+ undefined1 *puVar5;
+ undefined *puVar6;
undefined *puVar7;
undefined *puVar8;
- undefined *puVar9;
- long lVar10;
- undefined8 *puVar11;
+ long lVar9;
+ undefined8 *puVar10;
long extraout_x8;
long extraout_x8_00;
long extraout_x8_01;
long extraout_x8_02;
- code *pcVar12;
+ code *pcVar11;
+ char *pcVar12;
long unaff_x21;
long lVar13;
long lVar14;
long lVar15;
- char *pcVar16;
undefined1 auStack_c0 [8];
undefined *local_b8;
long local_b0;
long local_a8;
long local_a0;
undefined *puStack_98;
undefined *local_90;
char *local_88;
- undefined *local_80;
+ long local_80;
undefined1 *local_78;
long local_70;
undefined1 local_53;
undefined1 local_52;
undefined1 local_51;
- puVar7 = &DAT_0;
+ puVar6 = &DAT_0;
local_88 = param_1;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_183534b48);
- local_a0 = *(long *)(puVar7 + -8);
- puStack_98 = puVar7;
- (*_DAT_1)(*(long *)(local_a0 + 0x40) + 0xfU & 0xfffffffffffffff0);
- puVar7 = &DAT_2;
- local_78 = auStack_c0 + -extraout_x8;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_2,&DAT_183534b50);
- local_a8 = *(long *)(puVar7 + -8);
- local_90 = puVar7;
- (*_DAT_1)(*(long *)(local_a8 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar13 = (long)(auStack_c0 + -extraout_x8) - extraout_x8_00;
- puVar7 = &DAT_3;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_3,&DAT_183534b58);
- local_80 = *(undefined **)(puVar7 + -8);
- (*_DAT_1)(*(long *)(local_80 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar15 = lVar13 - extraout_x8_01;
- puVar8 = &DAT_4;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_4,&DAT_183534b60);
- local_70 = *(long *)(puVar8 + -8);
- (*_DAT_1)(*(long *)(local_70 + 0x40) + 0xfU & 0xfffffffffffffff0);
- lVar14 = lVar15 - extraout_x8_02;
+ ___swift_instantiateConcreteTypeFromMangledName();
+ local_a0 = *(long *)(puVar6 + -8);
+ puStack_98 = puVar6;
+ (*_DAT_1)(*(undefined8 *)(local_a0 + 0x40));
+ puVar6 = &DAT_2;
+ local_78 = auStack_c0 + -(extraout_x8 + 0xfU & 0xfffffffffffffff0);
+ ___swift_instantiateConcreteTypeFromMangledName();
+ local_a8 = *(long *)(puVar6 + -8);
+ local_90 = puVar6;
+ (*_DAT_1)(*(undefined8 *)(local_a8 + 0x40));
+ lVar13 = (long)(auStack_c0 + -(extraout_x8 + 0xfU & 0xfffffffffffffff0)) -
+ (extraout_x8_00 + 0xfU & 0xfffffffffffffff0);
+ puVar6 = &DAT_3;
+ ___swift_instantiateConcreteTypeFromMangledName();
+ local_80 = *(long *)(puVar6 + -8);
+ (*_DAT_1)(*(undefined8 *)(local_80 + 0x40));
+ lVar15 = lVar13 - (extraout_x8_01 + 0xfU & 0xfffffffffffffff0);
+ puVar7 = &DAT_4;
+ ___swift_instantiateConcreteTypeFromMangledName();
+ local_70 = *(long *)(puVar7 + -8);
+ (*_DAT_1)(*(undefined8 *)(local_70 + 0x40));
+ lVar14 = lVar15 - (extraout_x8_02 + 0xfU & 0xfffffffffffffff0);
uVar1 = *(undefined8 *)(param_2 + 0x18);
uVar2 = *(undefined8 *)(param_2 + 0x20);
- lVar10 = param_2;
+ lVar9 = param_2;
___swift_project_boxed_opaque_existential_1(param_2,uVar1);
- FUN_183419100();
- FUN_18352faa0(lVar14,&DAT_5,&DAT_5,lVar10,uVar1,uVar2);
- puVar6 = local_78;
- puVar5 = local_80;
+ FUN_1833efde4();
+ FUN_183505714(lVar14,&DAT_5,&DAT_5,lVar9,uVar1,uVar2);
+ puVar5 = local_78;
+ lVar9 = local_80;
if (unaff_x21 != 0) goto LAB_6;
- puVar9 = puVar8;
- local_b8 = puVar7;
+ puVar8 = puVar7;
+ local_b8 = puVar6;
local_b0 = unaff_x21;
- FUN_18352fa10();
- lVar10 = local_70;
- if ((*(long *)(puVar9 + 0x10) == 0) ||
- (cVar3 = puVar9[0x20], *(long *)(puVar9 + 0x10) != 1 || cVar3 == '\x03')) {
- lVar10 = 0;
- FUN_18352f9c0();
- puVar11 = _DAT_7;
+ FUN_183505684();
+ if ((*(long *)(puVar8 + 0x10) == 0) ||
+ (cVar3 = puVar8[0x20], *(long *)(puVar8 + 0x10) != 1 || cVar3 == '\x03')) {
+ lVar9 = 0;
+ FUN_183505634();
+ puVar10 = _DAT_7;
_swift_allocError();
- puVar7 = &DAT_8;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_8,&DAT_1835345d8);
- iVar4 = *(int *)(puVar7 + 0x30);
- *puVar11 = &DAT_9;
- FUN_18352f9e0(puVar8);
- FUN_18352f9b0((long)puVar11 + (long)iVar4);
- (**(code **)(*(long *)(lVar10 + -8) + 0x68))(puVar11,*_DAT_10,lVar10);
+ puVar6 = &DAT_8;
+ ___swift_instantiateConcreteTypeFromMangledName();
+ iVar4 = *(int *)(puVar6 + 0x30);
+ *puVar10 = &DAT_9;
+ FUN_183505654(puVar7);
+ FUN_183505624((long)puVar10 + (long)iVar4);
+ (**(code **)(*(long *)(lVar9 + -8) + 0x68))(puVar10,*_DAT_10,lVar9);
_swift_willThrow();
- (**(code **)(local_70 + 8))(lVar14,puVar8);
+ (**(code **)(local_70 + 8))(lVar14,puVar7);
}
- else if (cVar3 == '\0') {
- local_53 = 0;
- puVar7 = puVar9;
- FUN_1834191fc();
- FUN_18352f9d0(lVar15,&DAT_11,&local_53,puVar8,&DAT_11,puVar7);
- lVar10 = local_70;
- if (local_b0 == 0) {
- (**(code **)(puVar5 + 8))(lVar15,local_b8);
- (**(code **)(lVar10 + 8))(lVar14,puVar8);
- _swift_unknownObjectRelease(puVar9);
- pcVar16 = local_88;
+ else {
+ if (cVar3 != '\0') {
+ if (cVar3 == '\x01') {
+ local_52 = 1;
+ puVar6 = puVar8;
+ FUN_1833efe8c();
+ FUN_183505644(lVar13,&DAT_11,&local_52,puVar7,&DAT_11,puVar6);
+ lVar9 = local_70;
+ pcVar12 = local_88;
+ if (local_b0 == 0) {
+ (**(code **)(local_a8 + 8))(lVar13,local_90);
+ pcVar11 = *(code **)(lVar9 + 8);
LAB_12:
- *pcVar16 = cVar3;
+ (*pcVar11)(lVar14,puVar7);
+ _swift_unknownObjectRelease(puVar8);
+LAB_13:
+ *pcVar12 = cVar3;
+ ___swift_destroy_boxed_opaque_existential_1(param_2);
+ return;
+ }
+ pcVar11 = *(code **)(local_70 + 8);
+ }
+ else {
+ local_51 = 2;
+ puVar6 = puVar8;
+ FUN_1833efe38();
+ FUN_183505644(puVar5,&DAT_14,&local_51,puVar7,&DAT_14,puVar6);
+ lVar9 = local_70;
+ pcVar12 = local_88;
+ if (local_b0 == 0) {
+ (**(code **)(local_a0 + 8))(puVar5,puStack_98);
+ pcVar11 = *(code **)(lVar9 + 8);
+ goto LAB_12;
+ }
+ pcVar11 = *(code **)(local_70 + 8);
+ }
+ (*pcVar11)(lVar14,puVar7);
+ _swift_unknownObjectRelease(puVar8);
goto LAB_6;
}
- (**(code **)(local_70 + 8))(lVar14,puVar8);
+ local_53 = 0;
+ puVar6 = puVar8;
+ FUN_1833efee0();
+ FUN_183505644(lVar15,&DAT_15,&local_53,puVar7,&DAT_15,puVar6);
+ if (local_b0 == 0) {
+ (**(code **)(lVar9 + 8))(lVar15,local_b8);
+ (**(code **)(local_70 + 8))(lVar14,puVar7);
+ _swift_unknownObjectRelease(puVar8);
+ pcVar12 = local_88;
+ goto LAB_13;
+ }
+ (**(code **)(local_70 + 8))(lVar14,puVar7);
}
- else {
- local_80 = puVar9;
- if (cVar3 == '\x01') {
- local_52 = 1;
- FUN_1834191a8();
- FUN_18352f9d0(lVar13,&DAT_13,&local_52,puVar8,&DAT_13,puVar9);
- pcVar16 = local_88;
- if (local_b0 == 0) {
- (**(code **)(local_a8 + 8))(lVar13,local_90);
- pcVar12 = *(code **)(lVar10 + 8);
-LAB_14:
- (*pcVar12)(lVar14,puVar8);
- _swift_unknownObjectRelease(local_80);
- goto LAB_12;
- }
- pcVar12 = *(code **)(lVar10 + 8);
- }
- else {
- local_51 = 2;
- FUN_183419154();
- FUN_18352f9d0(puVar6,&DAT_15,&local_51,puVar8,&DAT_15,puVar9);
- pcVar16 = local_88;
- if (local_b0 == 0) {
- (**(code **)(local_a0 + 8))(puVar6,puStack_98);
- pcVar12 = *(code **)(lVar10 + 8);
- goto LAB_14;
- }
- pcVar12 = *(code **)(lVar10 + 8);
- }
- (*pcVar12)(lVar14,puVar8);
- puVar9 = local_80;
- }
- _swift_unknownObjectRelease(puVar9);
+ _swift_unknownObjectRelease(puVar8);
LAB_6:
___swift_destroy_boxed_opaque_existential_1(param_2);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling |
| ratio | 0.56 |
| i_ratio | 0.49 |
| m_ratio | 0.97 |
| b_ratio | 0.43 |
| match_types | BSIM |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
___swift_instantiateConcreteTypeFromMangledNameV2 | ___swift_instantiateConcreteTypeFromMangledName |
fullname |
___swift_instantiateConcreteTypeFromMangledNameV2 | ___swift_instantiateConcreteTypeFromMangledName |
| refcount | 32 | 32 |
length |
72 | 76 |
| called | _swift_getTypeByMangledNameInContext2 | _swift_getTypeByMangledNameInContext2 |
calling |
Expand for full list:FUN_18341893c |
Expand for full list:FUN_1833ef640 |
| paramcount | 0 | 0 |
address |
1834152bc | 1833ec034 |
sig |
undefined ___swift_instantiateConcreteTypeFromMangledNameV2(void) | undefined ___swift_instantiateConcreteTypeFromMangledName(void) |
| sym_type | Function | Function |
| sym_source | IMPORTED | IMPORTED |
| external | False | False |
--- ___swift_instantiateConcreteTypeFromMangledNameV2 calling
+++ ___swift_instantiateConcreteTypeFromMangledName calling
@@ -1,15 +1,15 @@
-FUN_183414430
-FUN_1834146f8
-FUN_18341596c
-FUN_183415a60
-FUN_183415b1c
-FUN_183415ba8
-FUN_183415e50
-FUN_183416114
-FUN_1834163e0
-FUN_183417830
-FUN_183418848
-FUN_18341893c
-FUN_183418a9c
-FUN_183418d94
-FUN_1834192c4
+FUN_1833eb1b0
+FUN_1833eb474
+FUN_1833ec6e8
+FUN_1833ec7d4
+FUN_1833ec888
+FUN_1833ec90c
+FUN_1833ecbac
+FUN_1833ece6c
+FUN_1833ed134
+FUN_1833ee558
+FUN_1833ef554
+FUN_1833ef640
+FUN_1833ef798
+FUN_1833efa88
+FUN_1833effa8--- ___swift_instantiateConcreteTypeFromMangledNameV2
+++ ___swift_instantiateConcreteTypeFromMangledName
@@ -1,14 +1,17 @@
-void ___swift_instantiateConcreteTypeFromMangledNameV2(long *param_1,long *param_2)
+void ___swift_instantiateConcreteTypeFromMangledName(long *param_1)
{
long lVar1;
+ long lVar2;
- if (*param_1 == 0) {
- lVar1 = (long)param_2 + (long)(int)*param_2;
- _swift_getTypeByMangledNameInContext2(lVar1,*param_2 >> 0x20,0,0);
- *param_1 = lVar1;
+ lVar1 = *param_1;
+ if (-1 < lVar1) {
+ return;
}
+ lVar2 = (long)param_1 + (long)(int)lVar1;
+ _swift_getTypeByMangledNameInContext2(lVar2,-(lVar1 >> 0x20),0,0);
+ *param_1 = lVar2;
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling,called |
| ratio | 0.66 |
| i_ratio | 0.69 |
| m_ratio | 0.99 |
| b_ratio | 0.98 |
| match_types | BSIM |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_183415e50 | FUN_1833ecbac |
fullname |
FUN_183415e50 | FUN_1833ecbac |
| refcount | 2 | 2 |
length |
344 | 340 |
called |
FUN_183415fa8 FUN_183415ffc FUN_18352fa40 FUN_18352fab0 ___swift_instantiateConcreteTypeFromMangledNameV2 ___swift_project_boxed_opaque_existential_1 |
FUN_1833ecd00 FUN_1833ecd54 FUN_1835056b4 FUN_183505724 ___swift_instantiateConcreteTypeFromMangledName ___swift_project_boxed_opaque_existential_1 |
calling |
FUN_1834162a8 | FUN_1833ecffc |
| paramcount | 0 | 0 |
address |
183415e50 | 1833ecbac |
sig |
undefined FUN_183415e50(void) | undefined FUN_1833ecbac(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_183415e50 called
+++ FUN_1833ecbac called
@@ -1,5 +1,5 @@
-FUN_183415fa8
-FUN_183415ffc
-FUN_18352fa40
-FUN_18352fab0
-___swift_instantiateConcreteTypeFromMangledNameV2
+FUN_1833ecd00
+FUN_1833ecd54
+FUN_1835056b4
+FUN_183505724
+___swift_instantiateConcreteTypeFromMangledName--- FUN_183415e50 calling
+++ FUN_1833ecbac calling
@@ -1 +1 @@
-FUN_1834162a8
+FUN_1833ecffc--- FUN_183415e50
+++ FUN_1833ecbac
@@ -1,37 +1,39 @@
-/* WARNING: Removing unreachable block (ram,0x000183415ebc) */
+/* WARNING: Removing unreachable block (ram,0x0001833ecc10) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_183415e50(long param_1)
+void FUN_1833ecbac(long param_1)
{
undefined8 uVar1;
undefined8 uVar2;
undefined1 uVar3;
undefined *puVar4;
long lVar5;
long extraout_x8;
undefined8 *unaff_x20;
- undefined8 uVar6;
+ long lVar6;
+ undefined8 uVar7;
undefined8 local_70;
undefined1 local_68;
puVar4 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameV2(&DAT_0,&DAT_1835341e8);
+ ___swift_instantiateConcreteTypeFromMangledName();
lVar5 = *(long *)(puVar4 + -8);
- (*_DAT_1)(*(long *)(lVar5 + 0x40) + 0xfU & 0xfffffffffffffff0);
- uVar6 = *unaff_x20;
+ (*_DAT_1)(*(undefined8 *)(lVar5 + 0x40));
+ lVar6 = (long)&local_70 - (extraout_x8 + 0xfU & 0xfffffffffffffff0);
+ uVar7 = *unaff_x20;
uVar3 = *(undefined1 *)(unaff_x20 + 1);
uVar1 = *(undefined8 *)(param_1 + 0x18);
uVar2 = *(undefined8 *)(param_1 + 0x20);
___swift_project_boxed_opaque_existential_1(param_1,uVar1);
- FUN_183415fa8();
- FUN_18352fab0((long)&local_70 - extraout_x8,&DAT_2,&DAT_2,param_1,uVar1,uVar2);
- local_70 = uVar6;
+ FUN_1833ecd00();
+ FUN_183505724(lVar6,&DAT_2,&DAT_2,param_1,uVar1,uVar2);
+ local_70 = uVar7;
local_68 = uVar3;
- FUN_183415ffc();
- FUN_18352fa40(&local_70);
- (**(code **)(lVar5 + 8))((long)&local_70 - extraout_x8,puVar4);
+ FUN_1833ecd54();
+ FUN_1835056b4(&local_70);
+ (**(code **)(lVar5 + 8))(lVar6,puVar4);
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,calling |
| ratio | 0.52 |
| i_ratio | 0.53 |
| m_ratio | 0.95 |
| b_ratio | 0.42 |
| match_types | BSIM |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
___swift_instantiateConcreteTypeFromMangledNameAbstractV2 | ___swift_instantiateConcreteTypeFromMangledNameAbstract |
fullname |
___swift_instantiateConcreteTypeFromMangledNameAbstractV2 | ___swift_instantiateConcreteTypeFromMangledNameAbstract |
| refcount | 2 | 2 |
length |
72 | 80 |
| called | _swift_getTypeByMangledNameInContextInMetadataState2 | _swift_getTypeByMangledNameInContextInMetadataState2 |
calling |
FUN_1834199bc | FUN_1833f0690 |
| paramcount | 0 | 0 |
address |
183419a0c | 1833f06d8 |
sig |
undefined ___swift_instantiateConcreteTypeFromMangledNameAbstractV2(void) | undefined ___swift_instantiateConcreteTypeFromMangledNameAbstract(void) |
| sym_type | Function | Function |
| sym_source | IMPORTED | IMPORTED |
| external | False | False |
--- ___swift_instantiateConcreteTypeFromMangledNameAbstractV2 calling
+++ ___swift_instantiateConcreteTypeFromMangledNameAbstract calling
@@ -1 +1 @@
-FUN_1834199bc
+FUN_1833f0690--- ___swift_instantiateConcreteTypeFromMangledNameAbstractV2
+++ ___swift_instantiateConcreteTypeFromMangledNameAbstract
@@ -1,15 +1,18 @@
-void ___swift_instantiateConcreteTypeFromMangledNameAbstractV2(long *param_1,long *param_2)
+void ___swift_instantiateConcreteTypeFromMangledNameAbstract(long *param_1)
{
long lVar1;
+ long lVar2;
- if (*param_1 == 0) {
- lVar1 = 0xff;
- _swift_getTypeByMangledNameInContextInMetadataState2
- (0xff,(long)param_2 + (long)(int)*param_2,*param_2 >> 0x20,0,0);
- *param_1 = lVar1;
+ lVar1 = *param_1;
+ if (-1 < lVar1) {
+ return;
}
+ lVar2 = 0xff;
+ _swift_getTypeByMangledNameInContextInMetadataState2
+ (0xff,(long)param_1 + (long)(int)lVar1,-(lVar1 >> 0x20),0,0);
+ *param_1 = lVar2;
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,name,fullname,length,sig,address,called |
| ratio | 0.92 |
| i_ratio | 0.53 |
| m_ratio | 0.95 |
| b_ratio | 0.95 |
| match_types | BSIM |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
name |
FUN_1834199bc | FUN_1833f0690 |
fullname |
FUN_1834199bc | FUN_1833f0690 |
| refcount | 0 | 0 |
length |
80 | 72 |
called |
___swift_instantiateConcreteTypeFromMangledNameAbstractV2 _swift_getWitnessTable |
___swift_instantiateConcreteTypeFromMangledNameAbstract _swift_getWitnessTable |
| calling | ||
| paramcount | 0 | 0 |
address |
1834199bc | 1833f0690 |
sig |
undefined FUN_1834199bc(void) | undefined FUN_1833f0690(void) |
| sym_type | Function | Function |
| sym_source | DEFAULT | DEFAULT |
| external | False | False |
--- FUN_1834199bc called
+++ FUN_1833f0690 called
@@ -1 +1 @@
-___swift_instantiateConcreteTypeFromMangledNameAbstractV2
+___swift_instantiateConcreteTypeFromMangledNameAbstract--- FUN_1834199bc
+++ FUN_1833f0690
@@ -1,17 +1,17 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-void FUN_1834199bc(void)
+void FUN_1833f0690(void)
{
undefined *puVar1;
undefined8 uVar2;
puVar1 = &DAT_0;
- ___swift_instantiateConcreteTypeFromMangledNameAbstractV2(&DAT_0,&DAT_183534c48);
+ ___swift_instantiateConcreteTypeFromMangledNameAbstract(&DAT_0);
uVar2 = _DAT_1;
_swift_getWitnessTable(_DAT_1,puVar1);
DAT_2 = uVar2;
return;
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,length,sig,address,called |
| ratio | 0.13 |
| i_ratio | 0.22 |
| m_ratio | 0.71 |
| b_ratio | 0.48 |
| match_types | Implied Match |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | ZeroMarkWidths | ZeroMarkWidths |
| fullname | ZeroMarkWidths | ZeroMarkWidths |
| refcount | 4 | 4 |
length |
548 | 992 |
called |
OTL::ClassDefTable::PopulateGlyphClassBitmap OTL::GCommon::GCommon ScriptTagForScriptCode TBaseFont::DetermineFontFlags TBaseFont::GetCommonTable ZeroMarkWidths ___stack_chk_fail _bzero |
Expand for full list:TRunGlue::TGlyph::glyphID |
| calling | TOpenTypePositioningEngine::PositionRuns | TOpenTypePositioningEngine::PositionRuns |
| paramcount | 2 | 3 |
address |
1833cc960 | 1834942a0 |
sig |
undefined __swiftcall ZeroMarkWidths(TRunGlue * param_1, GDEF * param_2) | undefined __swiftcall ZeroMarkWidths(TRunGlue * param_1, GDEF * param_2, ZeroMarkWidths param_3) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- ZeroMarkWidths called
+++ ZeroMarkWidths called
@@ -6 +6,9 @@
-ZeroMarkWidths
+TRunGlue::GetAdvance
+TRunGlue::GetGlyphProps
+TRunGlue::GetOrigin
+TRunGlue::IsDeleted
+TRunGlue::SetAdvance
+TRunGlue::SetOrigin
+TRunGlue::TGlyph::glyphID
+TRunGlue::length
+ZeroCombiningMarkWidths--- ZeroMarkWidths
+++ ZeroMarkWidths
@@ -1,104 +1,217 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-/* ZeroMarkWidths(TRunGlue&, OTL::GDEF const&) */
-
-void ZeroMarkWidths(TRunGlue *param_1,GDEF *param_2)
+/* ZeroMarkWidths(TRunGlue&, OTL::GDEF const&, ZeroMarkWidths) */
+
+TRunGlue * ZeroMarkWidths(undefined1 *param_1_00,double param_2_00,TRunGlue *param_1,long param_2)
{
- code *pcVar1;
- undefined1 *puVar2;
+ undefined8 *puVar1;
+ code *pcVar2;
+ bool bVar3;
+ long lVar4;
+ TRunGlue **ppTVar5;
+ TRunGlue *pTVar6;
+ GCommon *pGVar7;
+ size_t sVar8;
long extraout_x8;
- long lVar3;
- long lVar4;
- undefined1 *puVar5;
+ long lVar9;
+ ulong uVar10;
+ TBaseFont *this;
+ TGlyph *this_00;
+ TRunGlue *pTVar11;
+ TRunGlue *pTVar12;
ulong unaff_x30;
- undefined1 *local_90;
- undefined1 *puStack_88;
+ undefined1 *puVar13;
+ double dVar14;
+ double dVar15;
+ TRunGlue *local_d0;
+ TRunGlue *pTStack_c8;
+ undefined1 *local_c0;
+ undefined1 *puStack_b8;
+ undefined1 *puStack_b0;
+ undefined1 *puStack_a8;
+ undefined1 *local_a0;
+ undefined1 *puStack_98;
+ undefined1 *puStack_90;
+ undefined1 *local_88;
undefined1 *local_80;
- undefined1 *puStack_78;
- undefined1 *puStack_70;
- undefined1 *puStack_68;
- undefined1 *local_60;
- undefined1 *puStack_58;
- undefined1 *puStack_50;
- undefined1 *local_48;
- undefined1 *local_40;
- long local_38;
+ long local_78;
- local_38 = *_DAT_0;
+ local_78 = *_DAT_0;
if (*(undefined2 **)(param_2 + 0x10) == &OTL::GDEF::kNullClassDefTable) {
- if (*_DAT_0 == local_38) {
- if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) == 0) {
- ZeroMarkWidths(param_1,(void *)0x0,
- ZeroCombiningMarkWidths(TRunGlue&)::$_0::__invoke(void*,TRunGlue::TGlyph_);
- return;
+ if (*_DAT_0 == local_78) {
+ if (((unaff_x30 ^ unaff_x30 << 1) >> 0x3e & 1) != 0) {
+ /* WARNING: Does not return */
+ pcVar2 = (code *)SoftwareBreakpoint(0xc471,0x1834944c4);
+ (*pcVar2)();
}
+ ZeroCombiningMarkWidths(param_1);
+ return param_1;
+ }
+ goto LAB_1;
+ }
+ lVar9 = *(long *)(param_1 + 0x1f0);
+ this = *(TBaseFont **)(lVar9 + 0x198);
+ if ((*(uint *)(this + 0xa0) >> 10 & 1) == 0) {
+ TBaseFont::DetermineFontFlags(this,(uint)this);
+ }
+ if ((*(uint *)(this + 0x9c) >> 10 & 1) == 0) {
+ lVar4 = *(long *)(lVar9 + 0x198);
+ TBaseFont::GetCommonTable(this,(uint)lVar4,(uint *)0x616d6f72);
+ if (lVar4 != 0) goto LAB_2;
+ pGVar7 = *(GCommon **)(lVar9 + 0x198);
+ TBaseFont::GetCommonTable(this,(uint)pGVar7,(uint *)0x47535542);
+ if (pGVar7 == (GCommon *)0x0) goto LAB_2;
+ if (*(long *)(param_1 + 0x10) < 1) {
+ uVar10 = 0;
+ }
+ else {
+ lVar4 = *(long *)(*(long *)param_1 + 0x10);
+ if ((ulong)(*(long *)(*(long *)param_1 + 0x18) - lVar4 >> 3) <= *(ulong *)(param_1 + 8)) {
/* WARNING: Does not return */
- pcVar1 = (code *)SoftwareBreakpoint(0xc471,0x1833ccadc);
- (*pcVar1)();
- }
- goto LAB_1;
- }
- lVar3 = *(long *)(param_1 + 0x1f0);
- lVar4 = *(long *)(lVar3 + 0x198);
- if ((*(uint *)(lVar4 + 0xa0) >> 10 & 1) == 0) {
- TBaseFont::DetermineFontFlags((TBaseFont *)param_2,(uint)lVar4);
- }
- if ((*(uint *)(lVar4 + 0x9c) >> 10 & 1) == 0) {
- lVar4 = *(long *)(lVar3 + 0x198);
- TBaseFont::GetCommonTable((TBaseFont *)param_2,(uint)lVar4,(uint *)0x616d6f72);
- if (lVar4 != 0) goto LAB_2;
- lVar3 = *(long *)(lVar3 + 0x198);
- TBaseFont::GetCommonTable((TBaseFont *)param_2,(uint)lVar3,(uint *)0x47535542);
- if (lVar3 == 0) goto LAB_2;
- if (0 < *(long *)(param_1 + 0x10)) {
- lVar3 = *(long *)(*(long *)param_1 + 0x10);
- if ((ulong)(*(long *)(*(long *)param_1 + 0x18) - lVar3 >> 3) <= *(ulong *)(param_1 + 8)) {
- /* WARNING: Does not return */
- pcVar1 = (code *)SoftwareBreakpoint(1,0x1833ccb80);
- (*pcVar1)();
+ pcVar2 = (code *)SoftwareBreakpoint(1,0x18349467c);
+ (*pcVar2)();
}
- ScriptTagForScriptCode
- (*(undefined4 *)
- (*(long *)(*(long *)(lVar3 + *(ulong *)(param_1 + 8) * 8) + 0x30) + 0x130));
- }
- local_40 = &SUB_3;
- puStack_58 = &SUB_3;
- local_60 = &SUB_3;
- local_48 = &SUB_3;
- puStack_50 = &SUB_3;
- puStack_78 = &SUB_3;
+ uVar10 = (ulong)*(uint *)(*(long *)(*(long *)(lVar4 + *(ulong *)(param_1 + 8) * 8) + 0x30) +
+ 0x130);
+ ScriptTagForScriptCode(uVar10);
+ }
local_80 = &SUB_3;
- puStack_68 = &SUB_3;
- puStack_70 = &SUB_3;
- puStack_88 = &SUB_3;
- local_90 = &SUB_3;
- OTL::GCommon::GCommon();
- if ((int)local_48 != 0) goto LAB_2;
+ param_1_00 = &SUB_3;
+ puStack_98 = &SUB_3;
+ local_a0 = &SUB_3;
+ local_88 = &SUB_3;
+ puStack_90 = &SUB_3;
+ puStack_b8 = &SUB_3;
+ local_c0 = &SUB_3;
+ puStack_a8 = &SUB_3;
+ puStack_b0 = &SUB_3;
+ pTStack_c8 = (TRunGlue *)&SUB_3;
+ local_d0 = (TRunGlue *)&SUB_3;
+ OTL::GCommon::GCommon(pGVar7,&local_d0,0,lVar9,pGVar7,param_2,uVar10,0);
+ if ((int)local_88 != 0) goto LAB_2;
+LAB_4:
+ pTVar11 = (TRunGlue *)0x0;
}
else {
LAB_2:
- puVar2 = (undefined1 *)0x2000;
- if (*(ulong *)(param_1 + 0x1f8) < 0x10001) {
- puVar2 = (undefined1 *)((ulong)((int)*(ulong *)(param_1 + 0x1f8) + 0x3fU >> 3) & 0x7ff8);
- }
- (*_DAT_4)((int)puVar2 + 0xfU & 0xfff0);
- puVar5 = (undefined1 *)((long)&local_90 - extraout_x8);
- local_90 = puVar5;
- puStack_88 = puVar2;
- _bzero(puVar5,(size_t)puVar2);
+ uVar10 = *(ulong *)(param_1 + 0x1f8);
+ sVar8 = 0x2000;
+ if (uVar10 < 0x10001) {
+ sVar8 = (ulong)((int)uVar10 + 0x3fU >> 3) & 0x7ff8;
+ }
+ (*_DAT_5)((int)sVar8 + 0xfU & 0xfff0);
+ this_00 = (TGlyph *)((long)&local_d0 - extraout_x8);
+ _bzero(this_00,sVar8);
OTL::ClassDefTable::PopulateGlyphClassBitmap
- ((ClassDefTable *)param_2,(ushort)*(undefined8 *)((ClassDefTable *)param_2 + 0x10),
- (uchar *)0x3,(long)puVar5);
- ZeroMarkWidths(param_1,&local_90,
- ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph_
- );
- }
- if (*_DAT_0 == local_38) {
- return;
+ ((ClassDefTable *)this_00,(ushort)*(undefined8 *)(param_2 + 0x10),(uchar *)0x3,
+ (long)this_00);
+ if (*(int *)(param_1 + 0x18) < 0) {
+ pTVar12 = param_1;
+ TRunGlue::length((TRunGlue *)this_00);
+ puVar1 = _DAT_6;
+ if (pTVar12 == (TRunGlue *)0x0) goto LAB_4;
+ pTVar11 = (TRunGlue *)0x0;
+ pTVar12 = pTVar12 + -1;
+ dVar15 = 0.0;
+ do {
+ ppTVar5 = &local_d0;
+ local_d0 = param_1;
+ pTStack_c8 = pTVar12;
+ TRunGlue::TGlyph::glyphID(this_00);
+ if (((uint)ppTVar5 != 0xffff) &&
+ (pTVar6 = local_d0, TRunGlue::IsDeleted((TRunGlue *)this_00,(long)local_d0),
+ ((ulong)pTVar6 & 1) == 0)) {
+ if (((long)((ulong)ppTVar5 & 0xffffffff) < (long)uVar10) &&
+ (((byte)((TRunGlue *)this_00)[((ulong)ppTVar5 & 0xffffffff) >> 3] >>
+ (ulong)((uint)ppTVar5 & 7) & 1) != 0)) {
+ TRunGlue::GetAdvance((TRunGlue *)this_00,(long)local_d0);
+ dVar15 = dVar15 + (double)param_1_00;
+ if ((dVar15 != 0.0) &&
+ (pTVar6 = local_d0, puVar13 = param_1_00,
+ TRunGlue::GetGlyphProps((TRunGlue *)this_00,(long)local_d0),
+ ((uint)pTVar6 >> 0xe & 1) != 0)) {
+ TRunGlue::GetOrigin((long)local_d0);
+ TRunGlue::SetOrigin((double)puVar13 - dVar15,local_d0,pTStack_c8);
+ }
+ puVar13 = (undefined1 *)*puVar1;
+ dVar14 = (double)puVar1[1];
+ bVar3 = false;
+ if (((double)param_1_00 == (double)puVar13) &&
+ (bVar3 = false, !NAN(param_2_00) && !NAN(dVar14))) {
+ bVar3 = param_2_00 == dVar14;
+ }
+ param_1_00 = puVar13;
+ param_2_00 = dVar14;
+ if (!bVar3) {
+ TRunGlue::SetAdvance(local_d0,pTStack_c8);
+ pTVar11 = (TRunGlue *)0x1;
+ param_1_00 = puVar13;
+ param_2_00 = dVar14;
+ }
+ }
+ else {
+ dVar15 = 0.0;
+ }
+ }
+ pTVar12 = pTVar12 + -1;
+ } while (pTVar12 != (TRunGlue *)0xffffffffffffffff);
+ }
+ else {
+ pTStack_c8 = (TRunGlue *)0x0;
+ local_d0 = param_1;
+ TRunGlue::length((TRunGlue *)this_00);
+ puVar1 = _DAT_6;
+ if (param_1 == (TRunGlue *)0x0) goto LAB_4;
+ pTVar11 = (TRunGlue *)0x0;
+ dVar15 = 0.0;
+ do {
+ ppTVar5 = &local_d0;
+ TRunGlue::TGlyph::glyphID(this_00);
+ if (((uint)ppTVar5 != 0xffff) &&
+ (pTVar12 = local_d0, TRunGlue::IsDeleted((TRunGlue *)this_00,(long)local_d0),
+ ((ulong)pTVar12 & 1) == 0)) {
+ if (((long)((ulong)ppTVar5 & 0xffffffff) < (long)uVar10) &&
+ (((byte)((TRunGlue *)this_00)[((ulong)ppTVar5 & 0xffffffff) >> 3] >>
+ (ulong)((uint)ppTVar5 & 7) & 1) != 0)) {
+ TRunGlue::GetAdvance((TRunGlue *)this_00,(long)local_d0);
+ if ((dVar15 != 0.0) &&
+ (pTVar12 = local_d0, puVar13 = param_1_00,
+ TRunGlue::GetGlyphProps((TRunGlue *)this_00,(long)local_d0),
+ ((uint)pTVar12 >> 0xe & 1) != 0)) {
+ TRunGlue::GetOrigin((long)local_d0);
+ TRunGlue::SetOrigin(dVar15 + (double)puVar13,local_d0,pTStack_c8);
+ }
+ dVar15 = dVar15 + (double)param_1_00;
+ puVar13 = (undefined1 *)*puVar1;
+ dVar14 = (double)puVar1[1];
+ bVar3 = false;
+ if (((double)param_1_00 == (double)puVar13) &&
+ (bVar3 = false, !NAN(param_2_00) && !NAN(dVar14))) {
+ bVar3 = param_2_00 == dVar14;
+ }
+ param_1_00 = puVar13;
+ param_2_00 = dVar14;
+ if (!bVar3) {
+ TRunGlue::SetAdvance(local_d0,pTStack_c8);
+ pTVar11 = (TRunGlue *)0x1;
+ param_1_00 = puVar13;
+ param_2_00 = dVar14;
+ }
+ }
+ else {
+ dVar15 = 0.0;
+ }
+ }
+ pTStack_c8 = pTStack_c8 + 1;
+ } while (pTStack_c8 != param_1);
+ }
+ }
+ if (*_DAT_0 == local_78) {
+ return pTVar11;
}
LAB_1:
/* WARNING: Subroutine does not return */
___stack_chk_fail();
}
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | code,refcount,length,address,calling,called |
| ratio | 0.69 |
| i_ratio | 0.49 |
| m_ratio | 0.98 |
| b_ratio | 0.84 |
| match_types | Implied Match |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | TCFMutableDictionary | TCFMutableDictionary |
| fullname | TCFMutableDictionary::TCFMutableDictionary | TCFMutableDictionary::TCFMutableDictionary |
refcount |
41 | 4 |
length |
92 | 88 |
called |
_CFDictionaryCreateMutable _CFDictionaryCreateMutableCopy |
_CFDictionaryCreateMutable _objc_retain |
calling |
Expand for full list:TBaseFont::PreloadFamilyNames |
CopySecondaryScaleRecipeInternal TBaseFont::CopyLocalizedName |
| paramcount | 2 | 2 |
address |
18344f02c | 1833990e0 |
| sig | undefined __thiscall TCFMutableDictionary(TCFMutableDictionary * this, __CFDictionary * param_1) | undefined __thiscall TCFMutableDictionary(TCFMutableDictionary * this, __CFDictionary * param_1) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TCFMutableDictionary::TCFMutableDictionary called
+++ TCFMutableDictionary::TCFMutableDictionary called
@@ -2 +2 @@
-_CFDictionaryCreateMutableCopy
+_objc_retain--- TCFMutableDictionary::TCFMutableDictionary calling
+++ TCFMutableDictionary::TCFMutableDictionary calling
@@ -1,7 +1 @@
-AddDefaultsToVariation
-CTFontDescriptorsCopyAttributesInternal
-CreateCopyOfFontWithSizeAndWeightClass
-CreateErrorByAddingFontURLToError
-CreateMergedVariation
-CreateTraitsWithVariation
-TAttributes::GetDictionary
+CopySecondaryScaleRecipeInternal
@@ -9,28 +2,0 @@
-TBaseFont::CopyName
-TBaseFont::CopyVariationAxesExternal
-TBaseFont::CreateTraitsValuesPerFontInfo
-TBaseFont::PreloadFamilyNames
-TBaseFont::SystemUIFontAttributesForSymbolicTraits
-TCollection::CopyMatchingFontDescriptorsForFamily
-TCollection::InitFromDictionary
-TDescriptor::CreateMatchingDescriptorInternal
-TDescriptor::TDescriptor
-TDescriptor::TDescriptor
-TDescriptor::TDescriptor
-TDescriptorSource::CopyDescriptorForRequest
-TDescriptorSource::CopyDescriptorsForRequest
-TDescriptorSource::CopyFontDescriptorWithOptions
-TDescriptorSource::CopySplicedDescriptorsForRequest
-TDescriptorSource::CopyXTypeRequestProperties
-TDescriptorSource::CreateDescriptorForUIFontDesign
-TFont::CompareExtras
-TFontFeatures::Externalize
-TInstanceFont::CopyName
-TInstanceFont::ModifyTraitsDictionary
-TRubyAnnotationLine::InitWithAnnotation
-TRubyRun::InitializeAnnotation
-TTenuousComponentFont::InitWithOpticalSize
-VariationsForGraphicsFontByAddingVariation
-_CTFontDescriptorCreateCopyWithSymbolicTraits
-_CTFontDescriptorRequiresFontAssetRequest
-_CTFontManagerRegisterActionFontsForURLs--- TCFMutableDictionary::TCFMutableDictionary
+++ TCFMutableDictionary::TCFMutableDictionary
@@ -1,22 +1,21 @@
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
-/* TCFMutableDictionary::TCFMutableDictionary(__CFDictionary const*) */
+/* TCFMutableDictionary::TCFMutableDictionary(__CFDictionary*) */
__CFDictionary * __thiscall
TCFMutableDictionary::TCFMutableDictionary(TCFMutableDictionary *this,__CFDictionary *param_1)
{
- undefined8 uVar1;
long in_x1;
- uVar1 = *_DAT_0;
if (in_x1 == 0) {
- _CFDictionaryCreateMutable(uVar1,0,_DAT_1,_DAT_1e6ae14b8);
+ in_x1 = *_DAT_0;
+ _CFDictionaryCreateMutable(in_x1,0,_DAT_1,_DAT_1e6aa5520);
}
else {
- _CFDictionaryCreateMutableCopy(uVar1,0);
+ _objc_retain();
}
- *(undefined8 *)param_1 = uVar1;
+ *(long *)param_1 = in_x1;
return param_1;
}
Slightly modified functions have no code changes, rather differnces in:
- refcount
- length
- called
- calling
- name
- fullname
| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | refcount,address,calling |
| ratio | 1.0 |
| i_ratio | 0.79 |
| m_ratio | 1.0 |
| b_ratio | 1.0 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | length | length |
| fullname | TRunGlue::length | TRunGlue::length |
refcount |
103 | 104 |
| length | 76 | 76 |
| called | TRunGlue::ComputeEndIndex | TRunGlue::ComputeEndIndex |
calling |
Expand for full list:MyanmarShapingEngine::ApplyScriptShaping |
Expand for full list:MyanmarShapingEngine::ApplyScriptShaping |
| paramcount | 1 | 1 |
address |
18341ed10 | 1833f59e4 |
| sig | undefined __thiscall length(TRunGlue * this) | undefined __thiscall length(TRunGlue * this) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TRunGlue::length calling
+++ TRunGlue::length calling
@@ -1,2 +1,2 @@
-FUN_18342f3d8
-FUN_18351be1c
+FUN_1834060b4
+FUN_1834f1a90
@@ -54,0 +55 @@
+ZeroCombiningMarkWidths| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | refcount,address,calling |
| ratio | 1.0 |
| i_ratio | 0.76 |
| m_ratio | 1.0 |
| b_ratio | 1.0 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | operator()[abi:fn200100] | operator()[abi:fn200100] |
| fullname | std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100] | std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100] |
refcount |
130 | 132 |
| length | 68 | 68 |
| called | ::operator.delete | ::operator.delete |
calling |
Expand for full list:IndicClassTable::IndicClassTable |
Expand for full list:IndicClassTable::IndicClassTable |
| paramcount | 1 | 1 |
address |
18341ee24 | 1833f5af8 |
| sig | undefined __thiscall operator()[abi:fn200100](__destroy_vector * this) | undefined __thiscall operator()[abi:fn200100](__destroy_vector * this) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100] calling
+++ std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100] calling
@@ -39,0 +40 @@
+TDescriptorSource::IsOnlySearchableAttributeInRequest| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | refcount,address,calling |
| ratio | 1.0 |
| i_ratio | 0.85 |
| m_ratio | 1.0 |
| b_ratio | 1.0 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | __base_destruct_at_end[abi:fn200100] | __base_destruct_at_end[abi:fn200100] |
| fullname | std::vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>>::__base_destruct_at_end[abi:fn200100] | std::vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>>::__base_destruct_at_end[abi:fn200100] |
refcount |
4 | 5 |
| length | 104 | 104 |
| called | ::operator.delete[] | ::operator.delete[] |
calling |
TBaseFont::~TBaseFont std::vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,4ul>>::resize |
OTL::GPOS::ApplyPairPosAccelerated TBaseFont::~TBaseFont std::vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,4ul>>::resize |
| paramcount | 2 | 2 |
address |
18342faa8 | 183406784 |
| sig | undefined __thiscall __base_destruct_at_end[abi:fn200100](vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>> * this, unique_ptr * param_1) | undefined __thiscall __base_destruct_at_end[abi:fn200100](vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>> * this, unique_ptr * param_1) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- std::vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>>::__base_destruct_at_end[abi:fn200100] calling
+++ std::vector<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,TInlineBufferAllocator<std::unique_ptr<unsigned_short_const[],std::default_delete<unsigned_short_const[]>>,1ul>>::__base_destruct_at_end[abi:fn200100] calling
@@ -0,0 +1 @@
+OTL::GPOS::ApplyPairPosAccelerated| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | refcount,address,calling |
| ratio | 1.0 |
| i_ratio | 0.87 |
| m_ratio | 1.0 |
| b_ratio | 1.0 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | glyphID | glyphID |
| fullname | TRunGlue::TGlyph::glyphID | TRunGlue::TGlyph::glyphID |
refcount |
103 | 102 |
| length | 92 | 92 |
| called | TRunGlue::FocusOnIndex | TRunGlue::FocusOnIndex |
calling |
Expand for full list:OTL::GPOS::ApplyContextPosFormat2 |
Expand for full list:OTL::GPOS::ApplyContextPosFormat2 |
| paramcount | 1 | 1 |
address |
18341f5bc | 1833f6290 |
| sig | undefined __thiscall glyphID(TGlyph * this) | undefined __thiscall glyphID(TGlyph * this) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TRunGlue::TGlyph::glyphID calling
+++ TRunGlue::TGlyph::glyphID calling
@@ -3,2 +3,2 @@
-FUN_18342f3d8
-FUN_18351be1c
+FUN_1834060b4
+FUN_1834f1a90
@@ -50 +49,0 @@
-ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph)| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | refcount,address,calling |
| ratio | 1.0 |
| i_ratio | 0.83 |
| m_ratio | 1.0 |
| b_ratio | 1.0 |
| match_types | SymbolsHash |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | GetAdvance | GetAdvance |
| fullname | TRunGlue::GetAdvance | TRunGlue::GetAdvance |
refcount |
25 | 26 |
| length | 144 | 144 |
| called | TRunGlue::FocusOnIndex | TRunGlue::FocusOnIndex |
calling |
Expand for full list:ValueRecord::operator() |
Expand for full list:ValueRecord::operator() |
| paramcount | 2 | 2 |
address |
1833ce2f8 | 1833a4fcc |
| sig | undefined __thiscall GetAdvance(TRunGlue * this, long param_1) | undefined __thiscall GetAdvance(TRunGlue * this, long param_1) |
| sym_type | Function | Function |
| sym_source | ANALYSIS | ANALYSIS |
| external | False | False |
--- TRunGlue::GetAdvance calling
+++ TRunGlue::GetAdvance calling
@@ -12,0 +13 @@
+ZeroCombiningMarkWidths| Key | CoreText_26_1 - CoreText_26_0_1 |
|---|---|
| diff_type | refcount,address |
| ratio | 1.0 |
| i_ratio | 1.0 |
| m_ratio | 1.0 |
| b_ratio | 1.0 |
| match_types | ExactBytesFunctionHasher |
| Key | CoreText_26_1 | CoreText_26_0_1 |
|---|---|---|
| name | __Block_byref_object_copy | __Block_byref_object_copy |
| fullname | __Block_byref_object_copy | __Block_byref_object_copy |
refcount |
2 | 4 |
| length | 12 | 12 |
| called | ||
| calling | ||
| paramcount | 0 | 0 |
address |
183480fa0 | 183457964 |
| sig | undefined __Block_byref_object_copy(void) | undefined __Block_byref_object_copy(void) |
| sym_type | Function | Function |
| sym_source | IMPORTED | IMPORTED |
| external | False | False |
Generated with ghidriff version: 1.0.0 on 2025-12-19T20:10:50