Skip to content

Instantly share code, notes, and snippets.

@csrXamfi
Created December 19, 2025 17:15
Show Gist options
  • Select an option

  • Save csrXamfi/d94eb2ecf8ac0e64ddcfa57168115b97 to your computer and use it in GitHub Desktop.

Select an option

Save csrXamfi/d94eb2ecf8ac0e64ddcfa57168115b97 to your computer and use it in GitHub Desktop.

CoreText_26_1-CoreText_26_0_1 Diff

TOC

Visual Chart Diff

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

Loading
pie showData
    title Function Matches - 99.8892%
"unmatched_funcs_len" : 17
"matched_funcs_len" : 15322
Loading
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
Loading

Metadata

Ghidra Diff Engine

Command Line

Captured Command Line

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

Verbose Args

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

Binary Metadata Diff

--- 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

Program Options

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

Diff Stats

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
Loading
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
Loading
pie showData
    title Diff Stats
"added_funcs_len" : 8
"deleted_funcs_len" : 9
"modified_funcs_len" : 63
Loading
pie showData
    title Symbols
"added_symbols_len" : 1
"deleted_symbols_len" : 1
Loading

Strings

pie showData
    title Strings
"deleted_strings_len" : 6
"added_strings_len" : 5
Loading

Strings Diff

--- 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 References

Old

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

New

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

Deleted

FUN_18341596c

Function Meta

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)();
-}
-

FUN_183415a60

Function Meta

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;
-}
-

FUN_183415ba8

Function Meta

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;
-}
-

FUN_183418848

Function Meta

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)();
-}
-

FUN_18341893c

Function Meta

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;
-}
-

FUN_183418a9c

Function Meta

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;
-}
-

GetNextUrduSequenceFromString(__CFString_const*,CFRange,bool)::$_0::operator()

Function Meta

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)();
-}
-

ZeroMarkWidths

Function Meta

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;
-}
-

ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph)

Function Meta

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;
-}
-

Added

ZeroCombiningMarkWidths

Function Meta

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;
+}
+

FUN_1833ec6e8

Function Meta

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)();
+}
+

FUN_1833ec7d4

Function Meta

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;
+}
+

FUN_1833ec90c

Function Meta

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;
+}
+

FUN_1833ef554

Function Meta

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)();
+}
+

FUN_1833ef640

Function Meta

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;
+}
+

FUN_1833ef798

Function Meta

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;
+}
+

SoftLinked__ISEnumerateKnownUrduSequencesInString

Function Meta

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

Modified functions contain code changes

TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun

Match Info

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

Function Meta Diff

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::ProcessGlyphsTTRunGlue::TGlyphInSingleRun Diff

--- 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

Match Info

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

Function Meta Diff

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;
 }
 

TDescriptorSource::CopyAllDescriptorsInternal

Match Info

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

Function Meta Diff

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 Diff

--- 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;
 }
 

TGlyphComposer::ComposeGlyphs

Match Info

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

Function Meta Diff

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:
::operator.delete
::operator.new
FirstBlockForScript
OTL::ClassDefTable::ClassOf
OTL::GDEF::GDEF
ScriptCodeForLongCharacter
ScriptTagForScriptCode
TAttributes::GetKernSetting
TBaseFont::GetCommonTable
TBaseFont::GetGlyphCount
TFont::GetBoundingBoxForGlyph
TFont::GetBoundingBoxesForGlyphs
TGlyphComposer::GetPositionForGlyph
TLine::FindRunWithCharIndex
TRun::GetGlyphIndexForCharIndex
TRun::GetNextChar
TRun::NoteCrossStreamPosition
TStorageRange::SetAdvance
_CFUniCharIsMemberOf
_CGRectGetMaxX
_CGRectGetMaxY
_CGRectGetMinX
_CGRectUnion
___stack_chk_fail
_memcpy
_objc_msgSend$originAtIndex:
_objc_msgSend$setOrigin:atIndex:
_objc_msgSend$setProps:atIndex:
_u_charType
_u_getCombiningClass
_u_getIntPropertyValue
_u_hasBinaryProperty
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>>>::__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long_const&>,std::tuple<>>
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>>>::__rehash
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>>>::find
std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100]
Expand for full list:
::operator.delete
::operator.new
FirstBlockForScript
OTL::ClassDefTable::ClassOf
OTL::GDEF::GDEF
ScriptCodeForLongCharacter
ScriptTagForScriptCode
TAttributes::GetKernSetting
TBaseFont::GetCommonTable
TBaseFont::GetGlyphCount
TFont::GetBoundingBoxForGlyph
TFont::GetBoundingBoxesForGlyphs
TGlyphComposer::GetPositionForGlyph
TLine::FindRunWithCharIndex
TRun::GetGlyphIndexForCharIndex
TRun::GetNextChar
TRun::NoteCrossStreamPosition
TStorageRange::SetAdvance
_CFUniCharIsMemberOf
_CGRectGetMaxX
_CGRectGetMaxY
_CGRectGetMinX
_CGRectUnion
___stack_chk_fail
_memcpy
_objc_msgSend$originAtIndex:
_objc_msgSend$setOrigin:atIndex:
_objc_msgSend$setProps:atIndex:
_u_charType
_u_getCombiningClass
_u_getIntPropertyValue
_u_hasBinaryProperty
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>>>::__emplace_unique_key_args<long,std::piecewise_construct_t_const&,std::tuple<long_const&>,std::tuple<>>
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>>>::__rehash
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>>>::find
std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100]
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 Diff

--- 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;
 }
 

OTL::GCommon::GetFeatureVariationsTable

Match Info

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

Function Meta Diff

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 Diff

--- 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;
 }
 

TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun

Match Info

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

Function Meta Diff

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::ProcessGlyphsTTRunGlue::TGlyphInSingleRun Diff

--- 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;
 }
 

OTL::GCommon::IterateScriptTables

Match Info

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

Function Meta Diff

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 Diff

--- 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;
 }
 

EnumerateKnownUrduSequencesInString

Match Info

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

Function Meta Diff

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 Diff

--- 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 Diff

--- 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;
 }
 

TDescriptorSource::IsOnlySearchableAttributeInRequest

Match Info

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

Function Meta Diff

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 Diff

--- 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 Diff

--- 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();
 }
 

TDescriptorSource::CopyDescriptorsForRequest

Match Info

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

Function Meta Diff

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:
CopySortedDescriptorsForRequest
CreateCopyOfDictionaryFilteredByKeys
CreateDescriptorArrayFilteringDuplicates
TCFBase_NEW<CTFontDescriptor,CTFontDescriptor*,__CFDictionary_const*>
TCFLazyMutableArray::LazyCreate
TCFMutableArray::TCFMutableArray
TCFMutableDictionary::TCFMutableDictionary
TDescriptor::InitBaseFont
TDescriptorSource::AddMissedRequest
TDescriptorSource::AddSystemVisibleFontDescriptors
TDescriptorSource::CopyAllDescriptorsInternal
TDescriptorSource::CopyDescriptor
TDescriptorSource::CopyDescriptorsForRequest
TDescriptorSource::CopyDescriptorsForRequestFromArray
TDescriptorSource::CopyDownloadableDescriptorsForRequest
TDescriptorSource::CopyFontDescriptorPerPostScriptName
TDescriptorSource::CopyFontDescriptorWithOptions
TDescriptorSource::CopyMandatoryMatchableRequest
TDescriptorSource::CopySplicedDescriptorsForRequest
TDescriptorSource::CopyXTypeRequestProperties
TDescriptorSource::CreateDefaultDescriptor
TDescriptorSource::EnsureUserSplicedFontStash
TDescriptorSource::GetPostScriptNameAndAttribute
TDescriptorSource::HasMissedRequest
TDescriptorSource::IsOnlySearchableAttributeInRequest
TPerThreadLRUCache<TRequestCacheNode,(ThreadSpecificKey)3,16ul>::TPerThreadLRUCache
TRequestCache::AddResultForRequest
TRequestCache::CopyResultForRequest
_CFArrayAppendValue
_CFArrayCreate
_CFArrayCreateMutable
_CFArrayGetCount
_CFArrayGetTypeID
_CFArrayGetValueAtIndex
_CFArraySortValues
_CFBooleanGetTypeID
_CFDictionaryAddValue
_CFDictionaryContainsKey
_CFDictionaryCreateMutable
_CFDictionaryGetCount
_CFDictionaryGetKeysAndValues
_CFDictionaryGetTypeID
_CFDictionaryGetValue
_CFDictionaryRemoveValue
_CFEqual
_CFGetTypeID
_CFNumberGetTypeID
_CFNumberGetValue
_CFSetAddValue
_CFSetCreateMutable
_CFSetGetCount
_CFStringGetIntValue
_CFStringGetTypeID
_XTCopyFontsWithProperties
___stack_chk_fail
_bzero
_dispatch_get_specific
_dispatch_once_f
_objc_msgSend$minusSet:
_objc_release
_objc_retain
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<void_const*,TInlineBufferAllocator<void_const*,30ul>>::__vallocate[abi:fn200100]
Expand for full list:
CopySortedDescriptorsForRequest
CreateCopyOfDictionaryFilteredByKeys
CreateDescriptorArrayFilteringDuplicates
TCFBase_NEW<CTFontDescriptor,CTFontDescriptor*,__CFDictionary_const*>
TCFLazyMutableArray::LazyCreate
TCFMutableArray::TCFMutableArray
TCFMutableDictionary::TCFMutableDictionary
TDescriptor::InitBaseFont
TDescriptorSource::AddMissedRequest
TDescriptorSource::AddSystemVisibleFontDescriptors
TDescriptorSource::CopyAllDescriptorsInternal
TDescriptorSource::CopyDescriptor
TDescriptorSource::CopyDescriptorsForRequest
TDescriptorSource::CopyDescriptorsForRequestFromArray
TDescriptorSource::CopyDownloadableDescriptorsForRequest
TDescriptorSource::CopyFontDescriptorPerPostScriptName
TDescriptorSource::CopyFontDescriptorWithOptions
TDescriptorSource::CopyMandatoryMatchableRequest
TDescriptorSource::CopySplicedDescriptorsForRequest
TDescriptorSource::CopyXTypeRequestProperties
TDescriptorSource::CreateDefaultDescriptor
TDescriptorSource::EnsureUserSplicedFontStash
TDescriptorSource::GetPostScriptNameAndAttribute
TDescriptorSource::HasMissedRequest
TDescriptorSource::IsOnlySearchableAttributeInRequest
TPerThreadLRUCache<TRequestCacheNode,(ThreadSpecificKey)3,16ul>::TPerThreadLRUCache
TRequestCache::AddResultForRequest
TRequestCache::CopyResultForRequest
_CFArrayAppendValue
_CFArrayCreate
_CFArrayCreateMutable
_CFArrayGetCount
_CFArrayGetTypeID
_CFArrayGetValueAtIndex
_CFArraySortValues
_CFBooleanGetTypeID
_CFDictionaryAddValue
_CFDictionaryContainsKey
_CFDictionaryCreateMutable
_CFDictionaryGetCount
_CFDictionaryGetKeysAndValues
_CFDictionaryGetTypeID
_CFDictionaryGetValue
_CFDictionaryRemoveValue
_CFEqual
_CFGetTypeID
_CFNumberGetTypeID
_CFNumberGetValue
_CFSetAddValue
_CFSetCreateMutable
_CFSetGetCount
_CFStringGetIntValue
_CFStringGetTypeID
_XTCopyFontsWithProperties
___stack_chk_fail
_bzero
_dispatch_get_specific
_dispatch_once_f
_objc_msgSend$minusSet:
_objc_release
_objc_retain
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<void_const*,TInlineBufferAllocator<void_const*,30ul>>::__vallocate[abi:fn200100]
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 Diff

--- 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;
 }
 

TDescriptorSource::AddSystemVisibleFontDescriptors

Match Info

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

Function Meta Diff

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 Diff

--- 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;
 }
 

TAATMorphSubtableMorx::Process

Match Info

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

Function Meta Diff

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:
::operator.delete
GlyphName
TAATLookupTable::SetTable
TAATMorphSubtable::DoSwashSubtable
TAATMorphSubtableMorx::DoContextualAction
TAATMorphSubtableMorx::DoInsertionSubtable
TAATMorphSubtableMorx::DoLigatureActionTRunGlue::TGlyphInSingleRun(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)::{lambda()#1}::operator()
TAATMorphSubtableMorx::DoRearrangementSubtable
TAATMorphSubtableMorx::FetchClass
TAATMorphSubtableMorx::FetchInitialClass
TAATMorphSubtableMorx::InitInsertionState
TAATMorphSubtableMorx::InitLigatureState
TAATMorphSubtableMorx::InitRearrangementState
TRunGlue::IsDeleted
TRunGlue::TGlyph::glyphID
___stack_chk_fail
_memset
std::vector<CTRun*,TInlineBufferAllocator<CTRun*,3ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<long,TInlineBufferAllocator<long,30ul>>::insert
std::vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>::push_back[abi:fn200100]
Expand for full list:
::operator.delete
GlyphName
TAATLookupTable::SetTable
TAATMorphSubtable::DoSwashSubtable
TAATMorphSubtableMorx::DoContextualAction
TAATMorphSubtableMorx::DoInsertionSubtable
TAATMorphSubtableMorx::DoLigatureActionTRunGlue::TGlyphInSingleRun(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)::{lambda()#1}::operator()
TAATMorphSubtableMorx::DoRearrangementSubtable
TAATMorphSubtableMorx::FetchClass
TAATMorphSubtableMorx::FetchInitialClass
TAATMorphSubtableMorx::InitInsertionState
TAATMorphSubtableMorx::InitLigatureState
TAATMorphSubtableMorx::InitRearrangementState
TRunGlue::IsDeleted
TRunGlue::TGlyph::glyphID
___stack_chk_fail
_memset
std::vector<CTRun*,TInlineBufferAllocator<CTRun*,3ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<long,TInlineBufferAllocator<long,30ul>>::insert
std::vector<std::tuple<unsigned_short,unsigned_short,unsigned_short>,TInlineBufferAllocator<std::tuple<unsigned_short,unsigned_short,unsigned_short>,4ul>>::push_back[abi:fn200100]
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 Diff

--- 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();
 }
 

OTL::GCommon::IgnoreScriptAnalysis

Match Info

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

Function Meta Diff

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 Diff

--- 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;
 }
 

TDescriptorSource::CopySplicedDescriptorsForRequest

Match Info

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

Function Meta Diff

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:
TCFMutableDictionary::TCFMutableDictionary
TDescriptorSource::CopyDescriptorsForRequestFromArray
TDescriptorSource::CopyMatchingDescriptorsForFamily
TDescriptorSource::CopySpliceFontForName
TDescriptorSource::CopySplicedDescriptorForName
TDescriptorSource::EnsureSplicedFontStash
TDescriptorSource::FindFontNameForTextStyle
TDescriptorSource::FontNamesForFamily
TDescriptorSource::GetPostScriptNameAndAttribute
TDescriptorSource::GetUIFontFamilyNameForDesign
_CFArrayAppendValue
_CFArrayCreate
_CFArrayCreateMutable
_CFBooleanGetTypeID
_CFDictionaryGetCount
_CFDictionaryGetTypeID
_CFDictionaryGetValue
_CFDictionaryRemoveValue
_CFGetTypeID
_CFNumberGetTypeID
_CFNumberGetValue
_CFStringHasPrefix
_objc_release
_objc_retain
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
Expand for full list:
TCFMutableDictionary::TCFMutableDictionary
TDescriptorSource::CopyDescriptorsForRequestFromArray
TDescriptorSource::CopyMatchingDescriptorsForFamily
TDescriptorSource::CopySpliceFontForName
TDescriptorSource::CopySplicedDescriptorForName
TDescriptorSource::EnsureSplicedFontStash
TDescriptorSource::FindFontNameForTextStyle
TDescriptorSource::FontNamesForFamily
TDescriptorSource::GetPostScriptNameAndAttribute
TDescriptorSource::GetUIFontFamilyNameForDesign
_CFArrayAppendValue
_CFArrayCreate
_CFArrayCreateMutable
_CFBooleanGetTypeID
_CFDictionaryGetCount
_CFDictionaryGetTypeID
_CFDictionaryGetValue
_CFDictionaryRemoveValue
_CFGetTypeID
_CFNumberGetTypeID
_CFNumberGetValue
_objc_release
_objc_retain
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
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 Diff

--- TDescriptorSource::CopySplicedDescriptorsForRequest called
+++ TDescriptorSource::CopySplicedDescriptorsForRequest called
@@ -22 +21,0 @@
-_CFStringHasPrefix

TDescriptorSource::CopySplicedDescriptorsForRequest Diff

--- 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;
 }
 

TOpenTypePositioningEngine::PositionRuns

Match Info

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

Function Meta Diff

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:
::operator.delete
::operator.new
::std::__next_prime
ConvertSettingsToOTFeatures
FirstBlockForScript
OTL::CoverageBitmap::CoversBitmap
OTL::FeatureList::StripMissingFeaturesFrom
OTL::GCommon::GetFeatures
OTL::GCommon::GetLookups
OTL::GCommon::IterateFeatureTables
OTL::GPOS::ApplyLookupAt
OTL::GPOS::ApplyPairPosAccelerated
OTL::GlyphLookups::SetLookupInRange
OTL::Lookup::ignore
TBaseFont::GetCommonTable
TBaseFont::NthLookupOTL::GPOS
TGlyphIterator::NextCoveredBy
TInlineVector<std::pair<unsigned_short,unsigned_short>,30ul>::TInlineVector
TRun::NoteCrossStreamPosition
TRunGlue::SetOrigin
TRunGlue::length
ZeroMarkWidths
ZeroMarkWidths
_CFStringHasPrefix
___stack_chk_fail
_memcpy
_memset
_objc_release
_objc_retain
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
std::__function::__value_func<bool(unsigned_int,OTL::FeatureTable_const*,bool&)>::__value_func[abi:fn200100]
std::__split_buffer<long,TInlineBufferAllocator<long,30ul>&>::
__split_buffer
std::__throw_bad_optional_access[abi:fn200100]
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100]
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]
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>>>
std::vector<unsigned_int,TInlineBufferAllocator<unsigned_int,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<unsigned_int,TInlineBufferAllocator<unsigned_int,36ul>>::__destroy_vector::operator()[abi:fn200100]
Expand for full list:
::operator.delete
::operator.new
::std::__next_prime
ConvertSettingsToOTFeatures
FirstBlockForScript
OTL::CoverageBitmap::CoversBitmap
OTL::FeatureList::StripMissingFeaturesFrom
OTL::GCommon::GetFeatures
OTL::GCommon::GetLookups
OTL::GCommon::IterateFeatureTables
OTL::GPOS::ApplyLookupAt
OTL::GPOS::ApplyPairPosAccelerated
OTL::GlyphLookups::SetLookupInRange
OTL::Lookup::ignore
TBaseFont::GetCommonTable
TBaseFont::NthLookupOTL::GPOS
TGlyphIterator::NextCoveredBy
TInlineVector<std::pair<unsigned_short,unsigned_short>,30ul>::TInlineVector
TRun::NoteCrossStreamPosition
TRunGlue::SetOrigin
TRunGlue::length
ZeroCombiningMarkWidths
ZeroMarkWidths
___stack_chk_fail
_memcpy
_memset
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
std::__function::__value_func<bool(unsigned_int,OTL::FeatureTable_const*,bool&)>::__value_func[abi:fn200100]
std::__split_buffer<long,TInlineBufferAllocator<long,30ul>&>::
__split_buffer
std::__throw_bad_optional_access[abi:fn200100]
std::vector<long,TInlineBufferAllocator<long,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100]
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]
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>>>
std::vector<unsigned_int,TInlineBufferAllocator<unsigned_int,30ul>>::__destroy_vector::operator()[abi:fn200100]
std::vector<unsigned_int,TInlineBufferAllocator<unsigned_int,36ul>>::__destroy_vector::operator()[abi:fn200100]
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 Diff

--- 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 Calling Diff

TOpenTypePositioningEngine::PositionRuns Diff

--- 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();
 }
 

TAttributes::ApplyFont

Match Info

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

Function Meta Diff

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:
::operator.delete
CopySecondaryScaleRecipeInternal
CreateCopyOfFontWithPalette
CustomRatioFromAttributes
TAttributes::ApplyTextTransform
TAttributes::CopyOfFontWithLigatureSetting
TAttributes::EnsureBaselineAttributes
TAttributes::EnsureRareData
TAttributes::GetOriginalValueOf
TAttributes::OriginalFont
TAttributes::SetLayoutAttributesForFont
TCFRef<CTRun*>::Retain
TFont::CopyAttribute
TFont::GetSecondaryScaleData
TextScaleWeightMatchVariableOnly
VerticalCopyOf
_CFBooleanGetTypeID
_CFDictionaryApplyFunction
_CFDictionaryCreateMutableCopy
_CFDictionaryGetValue
_CFDictionarySetValue
_CFGetTypeID
_CFNumberGetTypeID
_CFNumberGetValue
_CFStringGetDoubleValue
_CFStringGetTypeID
_CGAffineTransformConcat
_CTFontCreateCopyWithAttributes
_NSClassFromString
___cxa_guard_acquire
___cxa_guard_release
___stack_chk_fail
_dispatch_once
_dispatch_once_f
_memset
_objc_msgSend$bestMatchFromAppearancesWithNames:
_objc_msgSend$effectiveAppearance
_objc_msgSend$isEqualToString:
_objc_msgSend$isMainThread
_objc_msgSend$sharedApplication
_objc_release
_objc_retain
std::__function::__value_func<void(TAttributes&)>::__value_func[abi:fn200100]
std::__function::__value_func<void(TAttributes&)>::~__value_func[abi:fn200100]
std::__throw_bad_function_call[abi:fn200100]
Expand for full list:
::operator.delete
CopySecondaryScaleRecipeInternal
CreateCopyOfFontWithPalette
CustomRatioFromAttributes
TAttributes::ApplyTextTransform
TAttributes::CopyOfFontWithLigatureSetting
TAttributes::EnsureBaselineAttributes
TAttributes::EnsureRareData
TAttributes::GetOriginalValueOf
TAttributes::OriginalFont
TAttributes::SetLayoutAttributesForFont
TCFRef<CTRun*>::Retain
TFont::CopyAttribute
TFont::GetSecondaryScaleData
TextScaleWeightMatchVariableOnly
VerticalCopyOf
_CFBooleanGetTypeID
_CFDictionaryApplyFunction
_CFDictionaryCreateMutableCopy
_CFDictionaryGetValue
_CFDictionarySetValue
_CFGetTypeID
_CFNumberGetTypeID
_CFNumberGetValue
_CFStringGetDoubleValue
_CFStringGetTypeID
_CGAffineTransformConcat
_CTFontCreateCopyWithAttributes
_NSClassFromString
___cxa_guard_acquire
___cxa_guard_release
___stack_chk_fail
_dispatch_once
_dispatch_once_f
_memset
_objc_msgSend$bestMatchFromAppearancesWithNames:
_objc_msgSend$effectiveAppearance
_objc_msgSend$isEqualToString:
_objc_msgSend$isMainThread
_objc_msgSend$sharedApplication
_objc_release
_objc_retain
std::__function::__value_func<void(TAttributes&)>::__value_func[abi:fn200100]
std::__function::__value_func<void(TAttributes&)>::~__value_func[abi:fn200100]
std::__throw_bad_function_call[abi:fn200100]
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 Calling Diff

TAttributes::ApplyFont Diff

--- 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;
 }
 

OTL::GPOS::ApplyPairPosAccelerated

Match Info

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

Function Meta Diff

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:
::operator.delete
::operator.delete[]
::operator.new
::operator.new[]
::std::__next_prime
OTL::ClassDefTable::Iterate
PairPosFormat1::NthPairSet
PairPosFormat2::ValuePair
PairSet::ValuePair
TGlyphIterator::Next
TGlyphIterator::NextCoveredBy
TRunGlue::GetAdvance
TRunGlue::SetAdvance
TRunGlue::TGlyph::clearSafeToBreakAfter
TRunGlue::TGlyph::glyphID
ValueRecord::operator()
___stack_chk_fail
_bzero
_memcpy
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
std::__function::__value_func<void(unsigned_short,unsigned_short,unsigned_short)>::~__value_func[abi:fn200100]
std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[abi:fn200100]
Expand for full list:
::operator.delete
::operator.delete[]
::operator.new
::operator.new[]
::std::__next_prime
OTL::ClassDefTable::Iterate
PairPosFormat1::NthPairSet
PairPosFormat2::ValuePair
PairSet::ValuePair
TGlyphIterator::Next
TGlyphIterator::NextCoveredBy
TRunGlue::GetAdvance
TRunGlue::SetAdvance
TRunGlue::TGlyph::clearSafeToBreakAfter
TRunGlue::TGlyph::glyphID
ValueRecord::operator()
___stack_chk_fail
_bzero
_memcpy
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
std::__function::__value_func<void(unsigned_short,unsigned_short,unsigned_short)>::~__value_func[abi:fn200100]
std::vector<std::pairOTL::LookupSubtable_const*,OTL::Coverage,TInlineBufferAllocator<std::pairOTL::LookupSubtable_const*,OTL::Coverage,4ul>>::__throw_length_error[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]
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 Diff

--- 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 Diff

--- 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;
 }
 

CopySecondaryScaleRecipeInternal

Match Info

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

Function Meta Diff

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:
CopyPhysicalFamilyName
CreateCopyOfFontWithSizeAndWeightClass
GetRoundedWeight
SecondaryScaleRecipeForFont
TCFNumber::TCFNumber
TFont::IsSystemUIFontAndForShaping
_CFArrayCreate
_CFArrayGetValueAtIndex
_CFDictionaryCreate
_CFDictionaryCreateMutable
_CFDictionaryGetValue
_CFDictionarySetValue
_CFEqual
_CFRelease
___stack_chk_fail
_objc_release
_objc_retain
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
Expand for full list:
CopyPhysicalFamilyName
CreateCopyOfFontWithSizeAndWeightClass
GetRoundedWeight
SecondaryScaleRecipeForFont
TCFMutableDictionary::TCFMutableDictionary
TCFNumber::TCFNumber
TFont::IsSystemUIFontAndForShaping
_CFArrayCreate
_CFArrayGetValueAtIndex
_CFDictionaryCreate
_CFDictionaryCreateMutable
_CFDictionaryGetValue
_CFDictionarySetValue
_CFEqual
_CFRelease
___stack_chk_fail
_objc_release
_objc_retain
_os_unfair_lock_lock_with_options
_os_unfair_lock_unlock
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 Diff

--- CopySecondaryScaleRecipeInternal called
+++ CopySecondaryScaleRecipeInternal called
@@ -4,0 +5 @@
+TCFMutableDictionary::TCFMutableDictionary

CopySecondaryScaleRecipeInternal Diff

--- 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();
 }
 

FUN_183418d94

Match Info

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

Function Meta Diff

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 Diff

--- 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 Diff

--- FUN_183418d94 calling
+++ FUN_1833efa88 calling
@@ -1 +1 @@
-FUN_1834198e4
+FUN_1833f05b8

FUN_183418d94 Diff

--- 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;
 }
 

FUN_183417830

Match Info

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

Function Meta Diff

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_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
___swift_destroy_boxed_opaque_existential_1
___swift_instantiateConcreteTypeFromMangledNameV2
___swift_project_boxed_opaque_existential_1
_swift_allocError
_swift_unknownObjectRelease
_swift_willThrow
Expand for full list:
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
___swift_destroy_boxed_opaque_existential_1
___swift_instantiateConcreteTypeFromMangledName
___swift_project_boxed_opaque_existential_1
_swift_allocError
_swift_unknownObjectRelease
_swift_willThrow
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 Diff

--- 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 Diff

--- FUN_183417830 calling
+++ FUN_1833ee558 calling
@@ -1 +1 @@
-FUN_183416eec
+FUN_1833edc14

FUN_183417830 Diff

--- 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;
 }
 

FUN_1834146f8

Match Info

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

Function Meta Diff

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:
FUN_18341400c
FUN_183414060
FUN_183415348
FUN_18341543c
FUN_18352f9f0
FUN_18352fa00
FUN_18352faa0
___swift_destroy_boxed_opaque_existential_1
___swift_instantiateConcreteTypeFromMangledNameV2
___swift_project_boxed_opaque_existential_1
_swift_bridgeObjectRelease
_swift_bridgeObjectRetain
Expand for full list:
FUN_1833ead8c
FUN_1833eade0
FUN_1833ec0c4
FUN_1833ec1b8
FUN_183505664
FUN_183505674
FUN_183505714
___swift_destroy_boxed_opaque_existential_1
___swift_instantiateConcreteTypeFromMangledName
___swift_project_boxed_opaque_existential_1
_swift_bridgeObjectRelease
_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 Diff

--- 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 Diff

--- FUN_1834146f8 calling
+++ FUN_1833eb474 calling
@@ -1 +1 @@
-FUN_1834149a0
+FUN_1833eb718

FUN_1834146f8 Diff

--- 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;
 }
 

FUN_183414430

Match Info

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

Function Meta Diff

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 Diff

--- 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 Diff

--- FUN_183414430 calling
+++ FUN_1833eb1b0 calling
@@ -1 +1 @@
-FUN_1834149b8
+FUN_1833eb730

FUN_183414430 Diff

--- 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;
 }
 

FUN_1834163e0

Match Info

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

Function Meta Diff

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:
FUN_183417458
FUN_1834174ac
FUN_183417500
FUN_183417554
FUN_1834175a8
FUN_1834175fc
FUN_18352fa20
FUN_18352fa40
FUN_18352fab0
___swift_instantiateConcreteTypeFromMangledNameV2
___swift_project_boxed_opaque_existential_1
Expand for full list:
FUN_1833ee180
FUN_1833ee1d4
FUN_1833ee228
FUN_1833ee27c
FUN_1833ee2d0
FUN_1833ee324
FUN_183505694
FUN_1835056b4
FUN_183505724
___swift_instantiateConcreteTypeFromMangledName
___swift_project_boxed_opaque_existential_1
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 Diff

--- 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 Diff

--- FUN_1834163e0 calling
+++ FUN_1833ed134 calling
@@ -1 +1 @@
-FUN_183416f20
+FUN_1833edc48

FUN_1834163e0 Diff

--- 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;
 }
 

FUN_183416114

Match Info

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

Function Meta Diff

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 Diff

--- 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 Diff

--- FUN_183416114 calling
+++ FUN_1833ece6c calling
@@ -1 +1 @@
-FUN_183416290
+FUN_1833ecfe4

FUN_183416114 Diff

--- 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;
 }
 

FUN_183415b1c

Match Info

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

Function Meta Diff

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 Diff

--- FUN_183415b1c called
+++ FUN_1833ec888 called
@@ -1 +1 @@
-___swift_instantiateConcreteTypeFromMangledNameV2
+___swift_instantiateConcreteTypeFromMangledName

FUN_183415b1c Calling Diff

--- 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 Diff

--- 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;
 }
 

FUN_1834192c4

Match Info

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

Function Meta Diff

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:
FUN_183419100
FUN_183419154
FUN_1834191a8
FUN_1834191fc
FUN_18352f9b0
FUN_18352f9c0
FUN_18352f9d0
FUN_18352f9e0
FUN_18352fa10
FUN_18352faa0
___swift_destroy_boxed_opaque_existential_1
___swift_instantiateConcreteTypeFromMangledNameV2
___swift_project_boxed_opaque_existential_1
_swift_allocError
_swift_unknownObjectRelease
_swift_willThrow
Expand for full list:
FUN_1833efde4
FUN_1833efe38
FUN_1833efe8c
FUN_1833efee0
FUN_183505624
FUN_183505634
FUN_183505644
FUN_183505654
FUN_183505684
FUN_183505714
___swift_destroy_boxed_opaque_existential_1
___swift_instantiateConcreteTypeFromMangledName
___swift_project_boxed_opaque_existential_1
_swift_allocError
_swift_unknownObjectRelease
_swift_willThrow
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 Diff

--- 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 Diff

--- FUN_1834192c4 calling
+++ FUN_1833effa8 calling
@@ -1 +1 @@
-FUN_1834198cc
+FUN_1833f05a0

FUN_1834192c4 Diff

--- 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;
 }
 

___swift_instantiateConcreteTypeFromMangledNameV2

Match Info

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

Function Meta Diff

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_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
Expand for full list:
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
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 Diff

--- ___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 Diff

--- ___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;
 }
 

FUN_183415e50

Match Info

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

Function Meta Diff

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 Diff

--- 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 Diff

--- FUN_183415e50 calling
+++ FUN_1833ecbac calling
@@ -1 +1 @@
-FUN_1834162a8
+FUN_1833ecffc

FUN_183415e50 Diff

--- 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;
 }
 

___swift_instantiateConcreteTypeFromMangledNameAbstractV2

Match Info

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

Function Meta Diff

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 Diff

--- ___swift_instantiateConcreteTypeFromMangledNameAbstractV2 calling
+++ ___swift_instantiateConcreteTypeFromMangledNameAbstract calling
@@ -1 +1 @@
-FUN_1834199bc
+FUN_1833f0690

___swift_instantiateConcreteTypeFromMangledNameAbstractV2 Diff

--- ___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;
 }
 

FUN_1834199bc

Match Info

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

Function Meta Diff

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 Diff

--- FUN_1834199bc called
+++ FUN_1833f0690 called
@@ -1 +1 @@
-___swift_instantiateConcreteTypeFromMangledNameAbstractV2
+___swift_instantiateConcreteTypeFromMangledNameAbstract

FUN_1834199bc Diff

--- 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;
 }
 

ZeroMarkWidths

Match Info

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

Function Meta Diff

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:
OTL::ClassDefTable::PopulateGlyphClassBitmap
OTL::GCommon::GCommon
ScriptTagForScriptCode
TBaseFont::DetermineFontFlags
TBaseFont::GetCommonTable
TRunGlue::GetAdvance
TRunGlue::GetGlyphProps
TRunGlue::GetOrigin
TRunGlue::IsDeleted
TRunGlue::SetAdvance
TRunGlue::SetOrigin
TRunGlue::TGlyph::glyphID
TRunGlue::length
ZeroCombiningMarkWidths
___stack_chk_fail
_bzero
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 Diff

--- 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 Diff

--- 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();
 }
 

TCFMutableDictionary::TCFMutableDictionary

Match Info

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

Function Meta Diff

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:
AddDefaultsToVariation
CTFontDescriptorsCopyAttributesInternal
CreateCopyOfFontWithSizeAndWeightClass
CreateErrorByAddingFontURLToError
CreateMergedVariation
CreateTraitsWithVariation
TAttributes::GetDictionary
TBaseFont::CopyLocalizedName
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
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 Diff

--- TCFMutableDictionary::TCFMutableDictionary called
+++ TCFMutableDictionary::TCFMutableDictionary called
@@ -2 +2 @@
-_CFDictionaryCreateMutableCopy
+_objc_retain

TCFMutableDictionary::TCFMutableDictionary Calling Diff

--- 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 Diff

--- 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;
 }
 

Modified (No Code Changes)

Slightly modified functions have no code changes, rather differnces in:

  • refcount
  • length
  • called
  • calling
  • name
  • fullname

length

Match Info

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

Function Meta Diff

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:
FUN_18342f3d8
FUN_18351be1c
GlyphNames
HangulShapingEngine::SetFeatures
IndicShapingEngine::FindSyllableEnd
IndicShapingEngine::SetFeatures
JoiningScriptShapingEngine::ApplyStretching
JoiningScriptShapingEngine::FinishStretching
JoiningScriptShapingEngine::MakePositioningAdjustments
JoiningScriptShapingEngine::SetFeatures
KhmerShapingEngine::SetFeatures
MyanmarShapingEngine::ApplyScriptShaping
OTL::GSUB::ApplyLookupSubtable
OTL::GSUB::ApplyLookups
OpenTypeReorderingOutput::OpenTypeReorderingOutput
OpenTypeReorderingOutput::finalizeOutput
OpenTypeShapingEngine::ApplyScriptShaping
OpenTypeShapingEngine::OpenTypeShapingEngine
PostGSUBFixups::apply
SyriacShapingEngine::SetFeatures
TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun
TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInVector
TAATKernEngine::KernRuns
TAATKerxEngine::KernRuns
TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun
TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInVector
TAATKerxEngine::ProcessKerxIndexArrayWithTupleScalars
TAATMorphSubtable::FindFirstGlyph
TAATMorphSubtableMorx::DoInsertionSubtable
TAATMorphSubtableMorx::DoLigatureActionTRunGlue::TGlyphInSingleRun(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)::{lambda()#1}::operator()
TAATMorphSubtableMorx::InitInsertionState
TAATMorphSubtableMorx::InitRearrangementState
TAATMorphTable::ShapeGlyphs
TCompositionEngine::AdjustSpacing
TGlyphIterator::DoLigature
TKerningEngine::PositionGlyphs
TKerningEngineImplementation::TransferDeletedAdvances
TOpenTypeMorph::ApplyVerticalGlyphs
TOpenTypeMorph::ShapeGlyphs
TOpenTypePositioningEngine::PositionRuns
TRunGlue::CoveredByBitmap
TRunGlue::DetermineCoverage
TRunGlue::DoGlyphInsertion
TRunGlue::FilterJoiners
TRunGlue::GlyphRangeByTrimming
TRunGlue::GlyphRangeForGlyphIndex
TRunGlue::InitPropertiesFromDeletedGlyphs
TRunGlue::InsertGlyphs
TRunGlue::Rotate
TRunGlue::SelectRunForIndex
TRunGlue::UpdateAdvancesIfNeeded
TShapingEngine::ShapeGlyphs
ThaiShapingEngine::SetFeatures
UniversalShapingEngine::ApplyScriptShaping
ZeroMarkWidths
_CTFontShapeGlyphs
Expand for full list:
FUN_1834060b4
FUN_1834f1a90
GlyphNames
HangulShapingEngine::SetFeatures
IndicShapingEngine::FindSyllableEnd
IndicShapingEngine::SetFeatures
JoiningScriptShapingEngine::ApplyStretching
JoiningScriptShapingEngine::FinishStretching
JoiningScriptShapingEngine::MakePositioningAdjustments
JoiningScriptShapingEngine::SetFeatures
KhmerShapingEngine::SetFeatures
MyanmarShapingEngine::ApplyScriptShaping
OTL::GSUB::ApplyLookupSubtable
OTL::GSUB::ApplyLookups
OpenTypeReorderingOutput::OpenTypeReorderingOutput
OpenTypeReorderingOutput::finalizeOutput
OpenTypeShapingEngine::ApplyScriptShaping
OpenTypeShapingEngine::OpenTypeShapingEngine
PostGSUBFixups::apply
SyriacShapingEngine::SetFeatures
TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun
TAATKernEngine::KernOrderedList::ProcessGlyphsTTRunGlue::TGlyphInVector
TAATKernEngine::KernRuns
TAATKerxEngine::KernRuns
TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInSingleRun
TAATKerxEngine::KerxOrderedList::ProcessGlyphsTTRunGlue::TGlyphInVector
TAATKerxEngine::ProcessKerxIndexArrayWithTupleScalars
TAATMorphSubtable::FindFirstGlyph
TAATMorphSubtableMorx::DoInsertionSubtable
TAATMorphSubtableMorx::DoLigatureActionTRunGlue::TGlyphInSingleRun(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)::{lambda()#1}::operator()
TAATMorphSubtableMorx::InitInsertionState
TAATMorphSubtableMorx::InitRearrangementState
TAATMorphTable::ShapeGlyphs
TCompositionEngine::AdjustSpacing
TGlyphIterator::DoLigature
TKerningEngine::PositionGlyphs
TKerningEngineImplementation::TransferDeletedAdvances
TOpenTypeMorph::ApplyVerticalGlyphs
TOpenTypeMorph::ShapeGlyphs
TOpenTypePositioningEngine::PositionRuns
TRunGlue::CoveredByBitmap
TRunGlue::DetermineCoverage
TRunGlue::DoGlyphInsertion
TRunGlue::FilterJoiners
TRunGlue::GlyphRangeByTrimming
TRunGlue::GlyphRangeForGlyphIndex
TRunGlue::InitPropertiesFromDeletedGlyphs
TRunGlue::InsertGlyphs
TRunGlue::Rotate
TRunGlue::SelectRunForIndex
TRunGlue::UpdateAdvancesIfNeeded
TShapingEngine::ShapeGlyphs
ThaiShapingEngine::SetFeatures
UniversalShapingEngine::ApplyScriptShaping
ZeroCombiningMarkWidths
ZeroMarkWidths
_CTFontShapeGlyphs
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

length Calling Diff

--- TRunGlue::length calling
+++ TRunGlue::length calling
@@ -1,2 +1,2 @@
-FUN_18342f3d8
-FUN_18351be1c
+FUN_1834060b4
+FUN_1834f1a90
@@ -54,0 +55 @@
+ZeroCombiningMarkWidths

operator()[abi:fn200100]

Match Info

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

Function Meta Diff

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:
ApplyArabicLowConnections<std::__wrap_iter<CTRun**>>
ArabicShapingEngine::ApplyScriptShaping
CTFontDescriptorsCopyAttributesInternal
CompareTraits
CreateClosestInstanceVariation
CreateCodableVariationFromDefaultVariation
CreateCopyOfFontWithSizeAndWeightClass
CreateFontWithVariation
CreateSortedArrayWithSet
CreateValidVariation
HangulShapingEngine::SetFeatures
IndicClassTable::IndicClassTable
IndicShapingEngine::SetFeatures
JoiningScriptShapingEngine::ApplyStretching
JoiningScriptShapingEngine::SetFeatures
MyanmarShapingEngine::ApplyScriptShaping
OTL::GPOS::ApplyChainContextPosFormat3
OTL::GSUB::ApplyLigatureSubst
OpenTypeReorderingOutput::forEachUnwrittenIndex
OpenTypeShapingEngine::~OpenTypeShapingEngine
SyriacShapingEngine::SetFeatures
TAATKerxEngine::KernRuns
TAATKerxEngine::~TAATKerxEngine
TAATMorphChain::ResolveFlags
TAATMorphSubtableMorx::DoLigatureActionTRunGlue::TGlyphInSingleRun(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)::{lambda()#1}::operator()
TAATMorphSubtableMorx::Process
TAATMorphTable::AddShapingLanguages
TArabicJustEngine::GenerateMaximas
TBMPDataCachePage::TBMPDataCachePage
TBaseFont::CopyName
TBaseFont::CreateDescriptorAttributes
TBaseFont::HasPostScriptNameAlias
TBaseFont::IsBaseVariation
TCollection::CopyMatchingFontDescriptorsUnlocked
TCombiningEngine::ResolveCombiningMarks
TCompositionEngine::AdjustSpacing
TDescriptor::CreateMatchingDescriptorInternal
TDescriptor::TDescriptor
TDescriptorSource::CopyDescriptorsForRequest
TFont::CopyDescriptor
TFont::GetBoundingBoxesForGlyphs
TFont::GetBoundingBoxesForGlyphs
TFont::GetOpticalBoundsForGlyphs
TGlyphEncoder::EncodeChars
TInstanceFont::CopyQuickdrawInstances
TInstanceFont::GetPresetFallbacksKey
TJustEngine::ApplyTrackingToRun
TJustEngine::CreateJustifiedLine
TKerningEngine::PositionGlyphs
TLine::CopyStringRange
TLine::DeleteGlyphs
TLine::EnumerateCaretOffsets
TLine::operator=
TOpenTypeMorph::ApplyVerticalGlyphs
TOpenTypeMorph::SetInitLookups
TOpenTypeMorph::SetLookups
TOpenTypeMorph::SetPresentationLookups
TOpenTypeMorph::ShapeGlyphs
TOpenTypeMorph::ShapeGlyphs(SyncState&)::$_2::operator()
TOpenTypePositioningEngine::PositionRuns
TRun::DeleteChars
TRun::SetAttachmentsLeftToRight
TRun::SetAttachmentsLeftToRight
TRun::SetAttachmentsRightToLeft
TRun::SetAttachmentsRightToLeft
TRunGlue::FilterSurrogates
TRunGlue::InitPropertiesForCombining
TSampleManagerImp::Copy
TSampleManagerImp::CopySampleLettersForLanguage
TScriptRun::GetScriptRunsForLine
TStorageRange::UpdateAdvances
TSupplementaryDataCachePage::TSupplementaryDataCachePage
TTenuousComponentFont::CopyAttribute
TTrackingEngine::TrackRuns
UniversalShapingEngine::ApplyScriptShaping
_CTFontCreateWithQuickdrawInstance
hasForm
std::__function::__func<TOpenTypeMorph::AddCoveredGlyphs(TFont_const&,CTFeatureSetting*,std::function<void(unsigned_short,unsigned_short)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1},std::allocator<TOpenTypeMorph::AddCoveredGlyphs(TFont_const&,CTFeatureSetting*,std::function<void(unsigned_short,unsigned_short)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1}>,bool(unsigned_int,OTL::LangSysTable_const*,bool&)>::operator()
std::__function::__func<TOpenTypeMorph::AddShapingGlyphs(TFont_const&,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_int)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1},std::allocator<TOpenTypeMorph::AddShapingGlyphs(TFont_const&,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_int)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1}>,bool(unsigned_int,OTL::LangSysTable_const*,bool&)>::operator()
tuplesBracketingValue
Expand for full list:
ApplyArabicLowConnections<std::__wrap_iter<CTRun**>>
ArabicShapingEngine::ApplyScriptShaping
CTFontDescriptorsCopyAttributesInternal
CompareTraits
CreateClosestInstanceVariation
CreateCodableVariationFromDefaultVariation
CreateCopyOfFontWithSizeAndWeightClass
CreateFontWithVariation
CreateSortedArrayWithSet
CreateValidVariation
HangulShapingEngine::SetFeatures
IndicClassTable::IndicClassTable
IndicShapingEngine::SetFeatures
JoiningScriptShapingEngine::ApplyStretching
JoiningScriptShapingEngine::SetFeatures
MyanmarShapingEngine::ApplyScriptShaping
OTL::GPOS::ApplyChainContextPosFormat3
OTL::GSUB::ApplyLigatureSubst
OpenTypeReorderingOutput::forEachUnwrittenIndex
OpenTypeShapingEngine::~OpenTypeShapingEngine
SyriacShapingEngine::SetFeatures
TAATKerxEngine::KernRuns
TAATKerxEngine::~TAATKerxEngine
TAATMorphChain::ResolveFlags
TAATMorphSubtableMorx::DoLigatureActionTRunGlue::TGlyphInSingleRun(TRunGlue&,unsigned_short,TAATMorphSubtableMorx::MorxLigatureState*)::{lambda()#1}::operator()
TAATMorphSubtableMorx::Process
TAATMorphTable::AddShapingLanguages
TArabicJustEngine::GenerateMaximas
TBMPDataCachePage::TBMPDataCachePage
TBaseFont::CopyName
TBaseFont::CreateDescriptorAttributes
TBaseFont::HasPostScriptNameAlias
TBaseFont::IsBaseVariation
TCollection::CopyMatchingFontDescriptorsUnlocked
TCombiningEngine::ResolveCombiningMarks
TCompositionEngine::AdjustSpacing
TDescriptor::CreateMatchingDescriptorInternal
TDescriptor::TDescriptor
TDescriptorSource::CopyDescriptorsForRequest
TDescriptorSource::IsOnlySearchableAttributeInRequest
TFont::CopyDescriptor
TFont::GetBoundingBoxesForGlyphs
TFont::GetBoundingBoxesForGlyphs
TFont::GetOpticalBoundsForGlyphs
TGlyphEncoder::EncodeChars
TInstanceFont::CopyQuickdrawInstances
TInstanceFont::GetPresetFallbacksKey
TJustEngine::ApplyTrackingToRun
TJustEngine::CreateJustifiedLine
TKerningEngine::PositionGlyphs
TLine::CopyStringRange
TLine::DeleteGlyphs
TLine::EnumerateCaretOffsets
TLine::operator=
TOpenTypeMorph::ApplyVerticalGlyphs
TOpenTypeMorph::SetInitLookups
TOpenTypeMorph::SetLookups
TOpenTypeMorph::SetPresentationLookups
TOpenTypeMorph::ShapeGlyphs
TOpenTypeMorph::ShapeGlyphs(SyncState&)::$_2::operator()
TOpenTypePositioningEngine::PositionRuns
TRun::DeleteChars
TRun::SetAttachmentsLeftToRight
TRun::SetAttachmentsLeftToRight
TRun::SetAttachmentsRightToLeft
TRun::SetAttachmentsRightToLeft
TRunGlue::FilterSurrogates
TRunGlue::InitPropertiesForCombining
TSampleManagerImp::Copy
TSampleManagerImp::CopySampleLettersForLanguage
TScriptRun::GetScriptRunsForLine
TStorageRange::UpdateAdvances
TSupplementaryDataCachePage::TSupplementaryDataCachePage
TTenuousComponentFont::CopyAttribute
TTrackingEngine::TrackRuns
UniversalShapingEngine::ApplyScriptShaping
_CTFontCreateWithQuickdrawInstance
hasForm
std::__function::__func<TOpenTypeMorph::AddCoveredGlyphs(TFont_const&,CTFeatureSetting*,std::function<void(unsigned_short,unsigned_short)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1},std::allocator<TOpenTypeMorph::AddCoveredGlyphs(TFont_const&,CTFeatureSetting*,std::function<void(unsigned_short,unsigned_short)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1}>,bool(unsigned_int,OTL::LangSysTable_const*,bool&)>::operator()
std::__function::__func<TOpenTypeMorph::AddShapingGlyphs(TFont_const&,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_int)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1},std::allocator<TOpenTypeMorph::AddShapingGlyphs(TFont_const&,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_short,unsigned_short)>,std::function<void(unsigned_int)>,std::function<void()>)::$_0::TEMPNAMEPLACEHOLDERVALUE(unsigned_int,OTL::ScriptTable_const*,bool&)const::{lambda(unsigned_int,OTL::LangSysTable_const*,bool&)#1}>,bool(unsigned_int,OTL::LangSysTable_const*,bool&)>::operator()
tuplesBracketingValue
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

operator()[abi:fn200100] Calling Diff

--- 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

__base_destruct_at_end[abi:fn200100]

Match Info

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

Function Meta Diff

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

__base_destruct_at_end[abi:fn200100] Calling Diff

--- 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

glyphID

Match Info

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

Function Meta Diff

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:
EqualClassSequenceAndNote<BigEndianScalar<unsigned_short>>
EqualSequenceAndNote<BigEndianScalar<unsigned_short>>
FUN_18342f3d8
FUN_18351be1c
GlyphNames
IndicClassTable::IndicClassTable
JoiningScriptShapingEngine::FinishStretching
JoiningScriptShapingEngine::SetFeatures
OTL::GPOS::ApplyChainContextPosFormat1
OTL::GPOS::ApplyChainContextPosFormat2
OTL::GPOS::ApplyContextPosFormat1
OTL::GPOS::ApplyContextPosFormat2
OTL::GPOS::ApplyCursivePos
OTL::GPOS::ApplyLookupAt
OTL::GPOS::ApplyMarkBasePos
OTL::GPOS::ApplyMarkLigPos
OTL::GPOS::ApplyMarkMarkPos
OTL::GPOS::ApplyPairPos
OTL::GPOS::ApplyPairPosAccelerated
OTL::GSUB::ApplyAlternateSubst
OTL::GSUB::ApplyChainContextSubstFormat1
OTL::GSUB::ApplyChainContextSubstFormat2
OTL::GSUB::ApplyContextSubstFormat1
OTL::GSUB::ApplyContextSubstFormat2
OTL::GSUB::ApplyLigatureSubst
OTL::GSUB::ApplyLookupAt
OTL::GSUB::ApplyReverseChainSingleSubst
OTL::GSUB::ApplySingleSubst
OTL::GSUB::ApplySubstLookupRecords
OpenTypeReorderingOutput::finalizeOutput
PostGSUBFixups::apply
SyriacShapingEngine::SetFeatures
TAATKernEngine::KernRuns
TAATKerxEngine::KernRuns
TAATKerxEngine::ProcessKerxIndexArrayWithTupleScalars
TAATMorphSubtable::DoSwashSubtable
TAATMorphSubtable::push
TAATMorphSubtableMorx::DoContextualAction
TAATMorphSubtableMorx::DoInsertionSubtable
TAATMorphSubtableMorx::DoRearrangementSubtable
TAATMorphSubtableMorx::FetchInitialClass
TAATMorphSubtableMorx::Process
TGlyphIterator::CurrentGlyphIsIgnored
TGlyphIterator::MatchCoverSequence<(MatchDirection)0>
TGlyphIterator::MatchCoverSequence<(MatchDirection)1>
TGlyphIterator::MatchCoverSequenceAndNote
TKerningEngineImplementation::MergeDeltas
TRunGlue::FilterJoiners
ZeroMarkWidths
ZeroMarkWidths(TRunGlue&,OTL::GDEF_const&)::$_0::__invoke(void*,TRunGlue::TGlyph)
Expand for full list:
EqualClassSequenceAndNote<BigEndianScalar<unsigned_short>>
EqualSequenceAndNote<BigEndianScalar<unsigned_short>>
FUN_1834060b4
FUN_1834f1a90
GlyphNames
IndicClassTable::IndicClassTable
JoiningScriptShapingEngine::FinishStretching
JoiningScriptShapingEngine::SetFeatures
OTL::GPOS::ApplyChainContextPosFormat1
OTL::GPOS::ApplyChainContextPosFormat2
OTL::GPOS::ApplyContextPosFormat1
OTL::GPOS::ApplyContextPosFormat2
OTL::GPOS::ApplyCursivePos
OTL::GPOS::ApplyLookupAt
OTL::GPOS::ApplyMarkBasePos
OTL::GPOS::ApplyMarkLigPos
OTL::GPOS::ApplyMarkMarkPos
OTL::GPOS::ApplyPairPos
OTL::GPOS::ApplyPairPosAccelerated
OTL::GSUB::ApplyAlternateSubst
OTL::GSUB::ApplyChainContextSubstFormat1
OTL::GSUB::ApplyChainContextSubstFormat2
OTL::GSUB::ApplyContextSubstFormat1
OTL::GSUB::ApplyContextSubstFormat2
OTL::GSUB::ApplyLigatureSubst
OTL::GSUB::ApplyLookupAt
OTL::GSUB::ApplyReverseChainSingleSubst
OTL::GSUB::ApplySingleSubst
OTL::GSUB::ApplySubstLookupRecords
OpenTypeReorderingOutput::finalizeOutput
PostGSUBFixups::apply
SyriacShapingEngine::SetFeatures
TAATKernEngine::KernRuns
TAATKerxEngine::KernRuns
TAATKerxEngine::ProcessKerxIndexArrayWithTupleScalars
TAATMorphSubtable::DoSwashSubtable
TAATMorphSubtable::push
TAATMorphSubtableMorx::DoContextualAction
TAATMorphSubtableMorx::DoInsertionSubtable
TAATMorphSubtableMorx::DoRearrangementSubtable
TAATMorphSubtableMorx::FetchInitialClass
TAATMorphSubtableMorx::Process
TGlyphIterator::CurrentGlyphIsIgnored
TGlyphIterator::MatchCoverSequence<(MatchDirection)0>
TGlyphIterator::MatchCoverSequence<(MatchDirection)1>
TGlyphIterator::MatchCoverSequenceAndNote
TKerningEngineImplementation::MergeDeltas
TRunGlue::FilterJoiners
ZeroMarkWidths
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

glyphID Calling Diff

--- 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)

GetAdvance

Match Info

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

Function Meta Diff

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:
HangulShapingEngine::SetFeatures
JoiningScriptShapingEngine::FinishStretching
OTL::GPOS::ApplyCursivePos
OTL::GPOS::ApplyPairPosAccelerated
OpenTypeReorderingOutput::finalizeOutput
TAATKerxEngine::KernRuns
TAATMorphSubtable::push
TCompositionEngine::AdjustSpacing
TKerningEngineImplementation::MergeDeltas
TKerningEngineImplementation::TransferDeletedAdvances
TRunGlue::GetUnscaledAdvance
ValueRecord::operator()
ZeroMarkWidths
Expand for full list:
HangulShapingEngine::SetFeatures
JoiningScriptShapingEngine::FinishStretching
OTL::GPOS::ApplyCursivePos
OTL::GPOS::ApplyPairPosAccelerated
OpenTypeReorderingOutput::finalizeOutput
TAATKerxEngine::KernRuns
TAATMorphSubtable::push
TCompositionEngine::AdjustSpacing
TKerningEngineImplementation::MergeDeltas
TKerningEngineImplementation::TransferDeletedAdvances
TRunGlue::GetUnscaledAdvance
ValueRecord::operator()
ZeroCombiningMarkWidths
ZeroMarkWidths
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

GetAdvance Calling Diff

--- TRunGlue::GetAdvance calling
+++ TRunGlue::GetAdvance calling
@@ -12,0 +13 @@
+ZeroCombiningMarkWidths

__Block_byref_object_copy

Match Info

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

Function Meta Diff

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment