decompiler  1.0.0
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 12]
 CActionLarge scale transformations applied to the varnode/op graph
 CActionActiveParamDetermine active parameters to sub-functions
 CActionActiveReturnDetermine which sub-functions have active output Varnodes
 CActionAssignHighAssign initial high-level HighVariable objects to each Varnode
 CActionBlockStructureStructure control-flow using standard high-level code constructs
 CActionConditionalConstPropagate conditional constants
 CActionConditionalExeSearch for and remove various forms of redundant CBRANCH operations
 CActionConstantPtrCheck for constants, with pointer type, that correspond to global symbols
 CActionConstbaseSearch for input Varnodes that have been officially provided constant values
 CActionCopyMarkerMark COPY operations between Varnodes representing the object as non-printing
 CActionDatabaseDatabase of root Action objects that can be used to transform a function
 CActionDeadCodeDead code removal. Eliminate dead p-code ops
 CActionDefaultParamsFind a prototype for each sub-function
 CActionDeindirectEliminate locally constant indirect calls
 CActionDeterminedBranchRemove conditional branches if the condition is constant
 CActionDirectWriteMark Varnodes built out of legal parameters
 CActionDominantCopyReplace COPYs from the same source with a single dominant COPY
 CActionDoNothingRemove blocks that do nothing
 CActionDynamicMappingAttach dynamically mapped symbols to Varnodes in time for data-type propagation
 CActionDynamicSymbolsMake final attachments of dynamically mapped symbols to Varnodes
 CActionExtraPopSetupDefine formal link between stack-pointer values before and after sub-function calls
 CActionFinalStructurePerform final organization of the control-flow structure
 CActionForceGotoApply any overridden forced gotos
 CActionFuncLinkPrepare for data-flow analysis of function parameters
 CActionFuncLinkOutOnlyPrepare for data-flow analysis of function parameters, when recovery isn't required
 CActionGroupA group of actions (generally) applied in sequence
 CActionGroupListThe list of groups defining a root Action
 CActionHeritageBuild Static Single Assignment (SSA) representation for function
 CActionHideShadowLocate shadow Varnodes and adjust them so they are hidden
 CActionInferTypesInfer and propagate data-types
 CActionInputPrototypeCalculate the prototype for the function
 CActionLaneDivideFind Varnodes with a vectorized lane scheme and attempt to split the lanes
 CActionLikelyTrashGet rid of registers with trash values
 CActionMapGlobalsCreate symbols for any discovered global variables in the function
 CActionMarkExplicitFind explicit Varnodes: Varnodes that have an explicit token representing them in the output
 CActionMarkImpliedMark all the implied Varnode objects, which will have no explicit token in the output
 CActionMarkIndirectOnlyMark illegal Varnode inputs used only in CPUI_INDIRECT ops
 CActionMergeAdjacentTry to merge an op's input Varnode to its output, if they are at the same storage location
 CActionMergeCopyTry to merge the input and output Varnodes of a CPUI_COPY op
 CActionMergeMultiEntryTry to merge Varnodes specified by Symbols with multiple SymbolEntrys
 CActionMergeRequiredMake required Varnode merges as dictated by CPUI_MULTIEQUAL, CPUI_INDIRECT, and addrtied property
 CActionMergeTypeTry to merge Varnodes of the same type (if they don't hold different values at the same time)
 CActionMultiCsePerform Common Sub-expression Elimination on CPUI_MULTIEQUAL ops
 CActionNameVarsChoose names for all high-level variables (HighVariables)
 CActionNodeJoinLook for conditional branch expressions that have been split and rejoin them
 CActionNonzeroMaskCalculate the non-zero mask property on all Varnode objects
 CActionNormalizeBranchesFlip conditional control-flow so that preferred comparison operators are used
 CActionNormalizeSetupPrepare function prototypes for "normalize" simplification
 CActionOutputPrototypeSet the (already) recovered output data-type as a formal part of the prototype
 CActionParamDoubleDeal with situations that look like double precision parameters
 CActionPoolA pool of Rules that apply simultaneously
 CActionPreferComplementAttempt to normalize symmetric block structures
 CActionPrototypeTypesLay down locked input and output data-type information
 CActionPrototypeWarningsAdd warnings for prototypes that aren't modeled properly
 CActionRedundBranchGet rid of redundant branches: duplicate edges between the same input and output block
 CActionRestartGroupAction which checks if restart (sub)actions have been generated and restarts itself
 CActionRestrictLocalRestrict possible range of local variables
 CActionRestructureHighCreate symbols that map out the local stack-frame for the function
 CActionRestructureVarnodeCreate symbols that map out the local stack-frame for the function
 CActionReturnRecoveryDetermine data-flow holding the return value of the function
 CActionReturnSplitSplit the epilog code of the function
 CActionSegmentizeMake sure pointers into segmented spaces have the correct form
 CActionSetCastsFill-in CPUI_CAST p-code ops as required by the casting strategy
 CActionShadowVarCheck for one CPUI_MULTIEQUAL input set defining more than one Varnode
 CActionSpacebaseMark Varnode objects that hold stack-pointer values and set-up special data-type
 CActionStackPtrFlowAnalyze change to the stack pointer across sub-function calls
 CActionStartGather raw p-code for a function
 CActionStartCleanUpStart clean up after main transform phase
 CActionStartTypesAllow type recovery to start happening
 CActionStopDo any post-processing after decompilation
 CActionSwitchNormNormalize jump-table construction
 CActionUnjustifiedParamsAdjust improperly justified parameters
 CActionUnreachableRemove unreachable blocks
 CActionVarnodePropsTransform based on Varnode properties, such as read-only and volatile
 CAddForm
 CAddressA low-level machine address for labelling bytes and data
 CAddressResolverAbstract class for converting native constants to addresses
 CAddrSpaceA region where processor data is stored
 CAddrSpaceManagerA manager for different address spaces
 CAddTreeStateStructure for sorting out pointer expression trees
 CAliasCheckerA light-weight class for analyzing pointers and aliasing on the stack
 CAncestorRealisticHelper class for determining if Varnodes can trace their value from a legitimate source
 CArchitectureManager for all the major decompiler subsystems
 CArchitectureCapabilityAbstract extension point for building Architecture objects
 CArchitectureGhidraAn implementation of the Architecture interface and connection to a Ghidra client
 CArchOptionBase class for options classes that affect the configuration of the Architecture object
 CAssemblyEmitAbstract class for emitting disassembly to an application
 CAttributesThe attributes for a single XML element
 CBadDataErrorException for bad instruction data
 CBfdArchitectureArchitecture that reads executable files using GNU BFD libraries
 CBfdArchitectureCapabilityExtension point for building a GNU BFD capable Architecture
 CBlockBasicA basic block for p-code operations
 CBlockConditionTwo conditional blocks combined into one conditional using BOOL_AND or BOOL_OR
 CBlockCopyThis class is used to mirror the BlockBasic objects in the fixed control-flow graph for a function
 CBlockDoWhileA loop structure where the condition is checked at the bottom
 CBlockEdgeA control-flow edge between blocks (FlowBlock)
 CBlockForA loop structure with an initializer list, condition block, and post-body block statement
 CBlockGotoA block that terminates with an unstructured (goto) branch to another block
 CBlockGraphA control-flow block built out of sub-components
 CBlockIfA basic "if" block
 CBlockInfLoopAn infinite loop structure
 CBlockListA series of blocks that execute in sequence
 CBlockMapHelper class for resolving cross-references while deserializing BlockGraph objects
 CBlockMultiGotoA block with multiple edges out, at least one of which is an unstructured (goto) branch
 CBlockSwitchA structured switch construction
 CBlockVarnodeHelper class associating a Varnode with the block where it is defined
 CBlockWhileDoA loop structure where the condition is checked at the top
 CBreakCallBackA breakpoint object
 CBreakTableA collection of breakpoints for the emulator
 CBreakTableCallBackA basic instantiation of a breakpoint table
 CCapabilityPointClass for automatically registering extension points to the decompiler
 CCastStrategyA strategy for applying type casts
 CCastStrategyCCasting strategies that are specific to the C language
 CCastStrategyJavaCasting strategies that are specific to the Java language
 CCircleRangeA class for manipulating integer value ranges
 CcircularqueueA circular buffer template
 CCollapseStructureBuild a code structure from a control-flow graph (BlockGraph)
 CCommentA comment attached to a specific function and code address
 CCommentDatabaseAn interface to a container of comments
 CCommentDatabaseGhidraAn implementation of CommentDatabase backed by a Ghidra client
 CCommentDatabaseInternalAn in-memory implementation of the CommentDatabase API
 CCommentOrderCompare two Comment pointers
 CCommentSorterA class for sorting comments into and within basic blocks
 CCompilerTagContents of a <compiler> tag in a .ldefs file
 CConditionalExecutionA class for simplifying a series of conditionally executed statements
 CConditionalJoinDiscover and eliminate split conditions
 CConditionMarkerA helper class for describing the similarity of the boolean condition between 2 CBRANCH operations
 CConstantPoolAn interface to the pool of constant objects for byte-code languages
 CConstantPoolGhidraAn implementation of ConstantPool using a Ghidra client as the backing storage
 CConstantPoolInternalAn implementation of the ConstantPool interface storing records internally in RAM
 CConstantSpaceSpecial AddrSpace for representing constants during analysis
 CContentHandlerThe SAX interface for parsing XML documents
 CContextBitRangeDescription of a context variable within the disassembly context blob
 CContextCacheA helper class for caching the active context blob to minimize database lookups
 CContextDatabaseAn interface to a database of disassembly/decompiler context information
 CContextGhidraAn implementation of a ContextDatabase obtaining context information via a Ghidra client
 CContextInternalAn in-memory implementation of the ContextDatabase interface
 CCoverA description of the topological scope of a single variable object
 CCoverBlockThe topological scope of a variable within a basic block
 CCPoolRecordA description of a byte-code object referenced by a constant
 CDatabaseA manager for symbol scopes for a whole executable
 CDatatypeThe base datatype class for the decompiler
 CDatatypeCompareCompare two Datatype pointers for equivalence of their description
 CDatatypeNameCompareCompare two Datatype pointers: first by name, then by id
 CDataUnavailErrorException indicating data was not available
 CDecompileAtCommand to decompile a specific function
 CDeregisterProgramCommand to release all resources associated with a Program (executable) in the decompiler
 CDisassemblyCache
 CDocumentA complete in-memory XML document
 CDocumentStorageA container for parsed XML documents
 CDynamicHashA hash utility to uniquely identify a temporary Varnode in data-flow
 CDynamicRecommendA name recommendation for a particular dynamic storage location
 CEffectRecordDescription of the indirect effect a sub-function has on a memory range
 CElementAn XML element. A node in the DOM tree
 CEmitNoXmlA trivial emitter that outputs syntax straight to the stream
 CEmitPrettyPrintA generic source code pretty printer
 CEmitXmlBase class (and interface) for pretty printing and XML markup of tokens
 CEmulateA pcode-based emulator interface
 CEmulateFunctionA light-weight emulator to calculate switch targets from switch variables
 CEmulateMemoryAn abstract Emulate class using a MemoryState object as the backing machine state
 CEmulatePcodeCacheA SLEIGH based implementation of the Emulate interface
 CEmulatePcodeOpEmulation based on (existing) PcodeOps and Varnodes
 CEmulateSnippetEmulate a snippet of PcodeOps out of a functional context
 CEqual1Form
 CEqual2Form
 CEqual3Form
 CEquateSymbolA Symbol that holds equate information for a constant
 CEvaluationError
 CExecutablePcodeA snippet of p-code that can be executed outside of normal analysis
 CExecutablePcodeGhidraA p-code script that uses a Ghidra client to generate the p-code ops
 CExternRefSymbolA function Symbol referring to an external location
 CFileStreamState
 CFloatFormatEncoding information for a single floating-point format
 CFloatingEdgeClass for holding an edge while the underlying graph is being manipulated
 CFlowBlockDescription of a control-flow block containing PcodeOps
 CFlowInfoA class for generating the control-flow structure for a single function
 CFlushNativeCommand to flush all symbols associated with a Program (executable)
 CFspecSpaceA special space for encoding FuncCallSpecs
 CFuncCallSpecsA class for analyzing parameters to a sub-function call
 CFuncdataContainer for data structures associated with a single function
 CFuncProtoA function prototype
 CFunctionSymbolA Symbol representing an executable function
 CGhidraCapabilityRegistration point and dispatcher for commands sent to the decompiler
 CGhidraCommandBase class for a command to the decompiler as issued by a Ghidra client
 CGhidraDecompCapabilityThe core decompiler commands capability
 CGhidraStringManagerImplementation of the StringManager that queries through the ghidra client
 CGhidraTranslateAn implementation of Translate that queries a Ghidra client for p-code information
 CGuardRecordA (putative) switch variable Varnode and a constraint imposed by a CBRANCH
 CHeritageManage the construction of Static Single Assignment (SSA) form
 CHeritageInfoInformation about heritage passes performed for a specific address space
 CHighEdgeA record for caching a Cover intersection test between two HighVariable objects
 CHighVariableA high-level variable modeled as a list of low-level variables, each written once
 CIndirectForm
 CInjectCallfixupGhidraA call-fixup injection that uses a Ghidra client to generate the p-code ops
 CInjectCallotherGhidraA callother-fixup injection that uses a Ghidra client to generate the p-code ops
 CInjectContextContext needed to emit a p-code injection as a full set of p-code operations
 CInjectContextGhidraAn injection context that can be serialized and sent to the Ghidra client
 CInjectedUserOpA user defined operation that is injected with other p-code
 CInjectParameterAn input or output parameter to a p-code injection payload
 CInjectPayloadAn active container for a set of p-code operations that can be injected into data-flow
 CInjectPayloadGhidraAn injection payload that uses a Ghidra client to generate the p-code ops
 CIopSpaceSpace for storing internal PcodeOp pointers as addresses
 CJavaErrorException that mirrors exceptions thrown by the Ghidra client
 CJoinRecordA record describing how logical values are split
 CJoinRecordCompareComparator for JoinRecord objects
 CJoinSpaceThe pool of logically joined variables
 CJumpAssistedA jump-table model assisted by pseudo-op directives in the code
 CJumpAssistOpA user defined p-code op for assisting the recovery of jump tables
 CJumpBasicThe basic switch model
 CJumpBasic2A basic jump-table model with an added default address path
 CJumpBasicOverrideA basic jump-table model incorporating manual override information
 CJumpModelA jump-table execution model
 CJumpModelTrivialA trivial jump-table model, where the BRANCHIND input Varnode is the switch variable
 CJumpTableA map from values to control-flow targets within a function
 CJumptableNotReachableErrorException thrown is there are no legal flows to a switch
 CJumptableThunkErrorException thrown for a thunk mechanism that looks like a jump-table
 CJumpValuesAn iterator over values a switch variable can take
 CJumpValuesRangeSingle entry switch variable that can take a range of values
 CJumpValuesRangeDefaultA jump-table starting range with two possible execution paths
 CLabSymbolA Symbol that labels code internal to a function
 CLaneDescriptionDescription of logical lanes within a big Varnode
 CLaneDivide
 CLanedRegisterDescribes a (register) storage location and the ways it might be split into lanes
 CLanguageDescriptionContents of the <language> tag in a .ldefs file
 CLessConstForm
 CLessThreeWay
 CLoadGuardDescription of a LOAD operation that needs to be guarded
 CLoadImageAn interface into a particular binary executable image
 CLoadImageFuncA record indicating a function symbol
 CLoadImageGhidraAn implementation of the LoadImage interface using a Ghidra client as the back-end
 CLoadImageSectionA record describing a section bytes in the executable
 CLoadImageXmlImplementation of the LoadImage interface using underlying data stored in an XML format
 CLoadTableA description where and how data was loaded from memory
 CLocationMapMap object for keeping track of which address ranges have been heritaged
 CLogicalForm
 CLoopBodyA description of the body of a loop
 CLowlevelErrorThe lowest level error generated by the decompiler
 CMapIteratorAn iterator over SymbolEntry objects in multiple address spaces
 CMapStateA container for hints about the data-type layout of an address space
 CMemoryBankMemory storage/state for a single AddressSpace
 CMemoryHashOverlayA memory bank that implements reads and writes using a hash table
 CMemoryImageA kind of MemoryBank which retrieves its data from an underlying LoadImage
 CMemoryPageOverlayMemory bank that overlays some other memory bank, using a "copy on write" behavior
 CMemoryStateAll storage/state for a pcode machine
 CMergeClass for merging low-level Varnodes into high-level HighVariables
 CMultForm
 CNameRecommendA symbol name recommendation with its associated storage location
 COpBehaviorClass encapsulating the action/behavior of specific pcode opcodes
 COpBehaviorBoolAndCPUI_BOOL_AND behavior
 COpBehaviorBoolNegateCPUI_BOOL_NEGATE behavior
 COpBehaviorBoolOrCPUI_BOOL_OR behavior
 COpBehaviorBoolXorCPUI_BOOL_XOR behavior
 COpBehaviorCopyCPUI_COPY behavior
 COpBehaviorEqualCPUI_INT_EQUAL behavior
 COpBehaviorFloatAbsCPUI_FLOAT_ABS behavior
 COpBehaviorFloatAddCPUI_FLOAT_ADD behavior
 COpBehaviorFloatCeilCPUI_FLOAT_CEIL behavior
 COpBehaviorFloatDivCPUI_FLOAT_DIV behavior
 COpBehaviorFloatEqualCPUI_FLOAT_EQUAL behavior
 COpBehaviorFloatFloat2FloatCPUI_FLOAT_FLOAT2FLOAT behavior
 COpBehaviorFloatFloorCPUI_FLOAT_FLOOR behavior
 COpBehaviorFloatInt2FloatCPUI_FLOAT_INT2FLOAT behavior
 COpBehaviorFloatLessCPUI_FLOAT_LESS behavior
 COpBehaviorFloatLessEqualCPUI_FLOAT_LESSEQUAL behavior
 COpBehaviorFloatMultCPUI_FLOAT_MULT behavior
 COpBehaviorFloatNanCPUI_FLOAT_NAN behavior
 COpBehaviorFloatNegCPUI_FLOAT_NEG behavior
 COpBehaviorFloatNotEqualCPUI_FLOAT_NOTEQUAL behavior
 COpBehaviorFloatRoundCPUI_FLOAT_ROUND behavior
 COpBehaviorFloatSqrtCPUI_FLOAT_SQRT behavior
 COpBehaviorFloatSubCPUI_FLOAT_SUB behavior
 COpBehaviorFloatTruncCPUI_FLOAT_TRUNC behavior
 COpBehaviorInt2CompCPUI_INT_2COMP behavior
 COpBehaviorIntAddCPUI_INT_ADD behavior
 COpBehaviorIntAndCPUI_INT_AND behavior
 COpBehaviorIntCarryCPUI_INT_CARRY behavior
 COpBehaviorIntDivCPUI_INT_DIV behavior
 COpBehaviorIntLeftCPUI_INT_LEFT behavior
 COpBehaviorIntLessCPUI_INT_LESS behavior
 COpBehaviorIntLessEqualCPUI_INT_LESSEQUAL behavior
 COpBehaviorIntMultCPUI_INT_MULT behavior
 COpBehaviorIntNegateCPUI_INT_NEGATE behavior
 COpBehaviorIntOrCPUI_INT_OR behavior
 COpBehaviorIntRemCPUI_INT_REM behavior
 COpBehaviorIntRightCPUI_INT_RIGHT behavior
 COpBehaviorIntSborrowCPUI_INT_SBORROW behavior
 COpBehaviorIntScarryCPUI_INT_SCARRY behavior
 COpBehaviorIntSdivCPUI_INT_SDIV behavior
 COpBehaviorIntSextCPUI_INT_SEXT behavior
 COpBehaviorIntSlessCPUI_INT_SLESS behavior
 COpBehaviorIntSlessEqualCPUI_INT_SLESSEQUAL behavior
 COpBehaviorIntSremCPUI_INT_SREM behavior
 COpBehaviorIntSrightCPUI_INT_SRIGHT behavior
 COpBehaviorIntSubCPUI_INT_SUB behavior
 COpBehaviorIntXorCPUI_INT_XOR behavior
 COpBehaviorIntZextCPUI_INT_ZEXT behavior
 COpBehaviorNotEqualCPUI_INT_NOTEQUAL behavior
 COpBehaviorPieceCPUI_PIECE behavior
 COpBehaviorPopcountCPUI_POPCOUNT behavior
 COpBehaviorSubpieceCPUI_SUBPIECE behavior
 COpFollowA simple node used to dynamically define a sequence of operations
 COptionAliasBlockSet how locked data-types on the stack affect alias heuristics
 COptionAllowContextSetToggle whether the disassembly engine is allowed to modify context
 COptionCommentHeaderToggle whether different comment types are emitted by the decompiler in the header for a function
 COptionCommentIndentHow many characters to indent comment lines
 COptionCommentInstructionToggle whether different comment types are emitted by the decompiler in the body of a function
 COptionCommentStyleSet the style of comment emitted by the decompiler
 COptionConventionPrintingToggle whether the calling convention is printed when emitting function prototypes
 COptionCurrentActionToggle a sub-group of actions within a root Action
 COptionDatabaseA Dispatcher for possible ArchOption commands
 COptionDefaultPrototypeSet the default prototype model for analyzing unknown functions
 COptionErrorReinterpretedToggle whether off-cut reinterpretation of an instruction is a fatal error
 COptionErrorTooManyInstructionsToggle whether too many instructions in one function body is considered a fatal error
 COptionErrorUnimplementedToggle whether unimplemented instructions are treated as a fatal error
 COptionExtraPopSet the extrapop parameter used by the (default) prototype model
 COptionHideExtensionsToggle whether implied extensions (ZEXT or SEXT) are printed
 COptionIgnoreUnimplementedToggle whether unimplemented instructions are treated as a no-operation
 COptionIndentIncrementSet the number of characters to indent per nested scope
 COptionInferConstPtrToggle whether the decompiler attempts to infer constant pointers
 COptionInlineMark/unmark a specific function as inline
 COptionInPlaceOpsToggle whether in-place operators (+=, *=, &=, etc.) are emitted by the decompiler
 COptionIntegerFormatSet the formatting strategy used by the decompiler to emit integers
 COptionJumpLoadToggle whether the decompiler should try to recover the table used to evaluate a switch
 COptionMaxInstruction
 COptionMaxLineWidthSet the maximum number of characters per decompiled line
 COptionNamespaceStrategyHow should namespace tokens be displayed
 COptionNoCastPrintingToggle whether cast syntax is emitted by the decompiler or stripped
 COptionNoReturnMark/unmark a specific function with the noreturn property
 COptionNullPrintingToggle whether null pointers should be printed as the string "NULL"
 COptionProtoEvalSet the prototype model to use when evaluating the parameters of the current function
 COptionReadOnlyToggle whether read-only memory locations have their value propagated
 COptionSetActionEstablish a new root Action for the decompiler
 COptionSetLanguageSet the current language emitted by the decompiler
 COptionStructAlignAlter the "structure alignment" data organization setting
 COptionToggleRuleToggle whether a specific Rule is applied in the current Action
 COptionWarningToggle whether a warning should be issued if a specific action/rule is applied
 COpTokenA token representing an operator in the high-level language
 COtherSpaceSpecial AddrSpace for special/user-defined address spaces
 COverlaySpaceAn overlay space
 COverrideA container of commands that override the decompiler's default behavior for a single function
 CParamActiveContainer class for ParamTrial objects
 CParamEntryA contiguous range of memory that can be used to pass parameters
 CParamEntryRangeClass for storing ParamEntry objects in an interval range (rangemap)
 CParameterBasicA stand-alone parameter with no backing symbol
 CParameterPiecesBasic elements of a parameter: address, data-type, properties
 CParameterSymbolA parameter with a formal backing Symbol
 CParamIDAnalysis
 CParamList
 CParamListMergedA union of other input parameter passing models
 CParamListRegisterAn unstructured model for passing input parameters to a function
 CParamListStandardA standard model for parameters as an ordered list of storage resources
 CParamListStandardOutA standard model for passing back return values from a function
 CParamMeasure
 CParamTrialA register or memory register that may be used to pass a parameter or return value
 CParamUnassignedErrorException thrown when a prototype can't be modeled properly
 CParseErrorAn error generated while parsing a command or language
 CPartialSymbolEntryA structure for pushing nested fields to the RPN stack
 CPartitionA range of nodes (within the weak topological ordering) that are iterated together
 CpartmapA map from a linear space to value objects
 CPathMeldAll paths from a (putative) switch variable to the CPUI_BRANCHIND
 CPcodeCacher
 CPcodeData
 CPcodeEmitAbstract class for emitting pcode to an application
 CPcodeEmitCacheP-code emitter that dumps its raw Varnodes and PcodeOps to an in memory cache
 CPcodeEmitFdA p-code emitter for building PcodeOp objects
 CPcodeInjectLibraryA collection of p-code injection payloads
 CPcodeInjectLibraryGhidraA p-code injection library that uses a Ghidra client to generate/compile the injection p-code
 CPcodeOpLowest level operation of the p-code language
 CPcodeOpBankContainer class for PcodeOps associated with a single function
 CPcodeOpEdgeClass representing a term in an additive expression
 CPcodeOpRawA low-level representation of a single pcode operation
 CPhiForm
 CPreferSplitManager
 CPreferSplitRecord
 CPrintCThe c-language token emitter
 CPrintCCapabilityFactory and static initializer for the "c-language" back-end to the decompiler
 CPrintJavaThe java-language token emitter
 CPrintJavaCapabilityFactory and static initializer for the "java-language" back-end to the decompiler
 CPrintLanguageThe base class API for emitting a high-level language
 CPrintLanguageCapabilityBase class for high-level language capabilities
 CPriorityQueuePriority queue for the phi-node (MULTIEQUAL) placement algorithm
 CPropagationStateA class that holds a data-type traversal state during type propagation
 CProtoModelA prototype model: a model for passing parameters between functions
 CProtoModelMergedA prototype model made by merging together other models
 CProtoParameterA function parameter viewed as a name, data-type, and storage address
 CProtoStoreA collection parameter descriptions making up a function prototype
 CProtoStoreInternalA collection of parameter descriptions without backing symbols
 CProtoStoreSymbolA collection of parameter descriptions backed by Symbol information
 CPrototypePiecesRaw components of a function prototype (obtained from parsing source code)
 CRangeA contiguous range of bytes in some address space
 CRangeHintPartial data-type information mapped to a specific range of bytes
 CRangeListA disjoint set of Ranges, possibly across multiple address spaces
 CrangemapAn interval map container
 CRawBinaryArchitectureArchitecture that reads its binary as a raw file
 CRawBinaryArchitectureCapabilityExtension point for building an Architecture that reads in raw images
 CRawLoadImageA simple raw binary loadimage
 CRecovErrorA generic recoverable error
 CRegisterProgramCommand to register a new Program (executable) with the decompiler
 CRelativeRecord
 CRuleClass for performing a single transformation on a PcodeOp or Varnode
 CRule2Comp2MultEliminate INT_2COMP: -V => V * -1
 CRule2Comp2SubCleanup: Convert INT_ADD back to INT_SUB: V + -W ==> V - W
 CRuleAddMultCollapseCollapse constants in an additive or multiplicative expression
 CRuleAddUnsignedCleanup: Convert INT_ADD of constants to INT_SUB: V + 0xff... => V - 0x00...
 CRuleAndCommuteCommute INT_AND with INT_LEFT and INT_RIGHT: (V << W) & d => (V & (W >> c)) << c
 CRuleAndCompareSimplify INT_ZEXT and SUBPIECE in masked comparison: zext(V) & c == 0 => V & (c & mask) == 0
 CRuleAndDistributeDistribute INT_AND through INT_OR if result is simpler
 CRuleAndMaskCollapse unnecessary INT_AND
 CRuleAndOrLumpCollapse constants in logical expressions: (V & c) & d => V & (c & d)
 CRuleAndPieceConvert PIECE to INT_ZEXT where appropriate: V & concat(W,X) => zext(X)
 CRuleBitUndistributeUndo distributed operations through INT_AND, INT_OR, and INT_XOR
 CRuleBooleanNegateSimplify comparisons with boolean values: V == false => !V, V == true => V
 CRuleBoolNegateApply a set of identities involving BOOL_NEGATE
 CRuleBoolZextSimplify boolean expressions of the form zext(V) * -1
 CRuleBxor2NotEqualEliminate BOOL_XOR: V ^^ W => V != W
 CRuleCarryElimTransform INT_CARRY using a constant: carry(V,c) => -c <= V
 CRuleCollapseConstantsCollapse constant expressions
 CRuleCollectTermsCollect terms in a sum: V * c + V * d => V * (c + d)
 CRuleConcatCommuteCommute PIECE with INT_AND, INT_OR, and INT_XOR
 CRuleConcatLeftShiftSimplify concatenation of extended value: concat(V, zext(W) << c) => concat( concat(V,W), 0)
 CRuleConcatShiftSimplify INT_RIGHT canceling PIECE: concat(V,W) >> c => zext(V)
 CRuleConcatZeroSimplify concatenation with zero: concat(V,0) => zext(V) << c
 CRuleConcatZextCommute PIECE with INT_ZEXT: concat(zext(V),W) => zext(concat(V,W))
 CRuleConditionalMoveSimplify various conditional move situations
 CRuleCondNegateFlip conditions to match structuring cues
 CRuleDivOptConvert INT_MULT and shift forms into INT_DIV or INT_SDIV
 CRuleDivTermAddSimplify expressions associated with optimized division expressions
 CRuleDivTermAdd2Simplify another expression associated with optimized division
 CRuleDoubleArithShiftSimplify two sequential INT_SRIGHT: (x s>> #c) s>> #d => x s>> saturate(#c + #d)
 CRuleDoubleIn
 CRuleDoubleLoad
 CRuleDoubleShiftSimplify chained shifts INT_LEFT and INT_RIGHT
 CRuleDoubleSubSimplify chained SUBPIECE: sub( sub(V,c), d) => sub(V, c+d)
 CRuleDumptyHumpSimplify join and break apart: sub( concat(V,W), c) => sub(W,c)
 CRuleEarlyRemovalGet rid of unused PcodeOp objects where we can guarantee the output is unused
 CRuleEmbedSimplify PIECE intended as embedding: concat(V, sub(W,0)) => W & 0xff | (zext(W) << 8)
 CRuleEqual2ConstantSimplify INT_EQUAL applied to arithmetic expressions
 CRuleEqual2ZeroSimplify INT_EQUAL applied to 0: 0 == V + W * -1 => V == W or 0 == V + c => V == -c
 CRuleEqualityCollapse INT_EQUAL and INT_NOTEQUAL: f(V,W) == f(V,W) => true
 CRuleFloatCastReplace (casttosmall)(casttobig)V with identity or with single cast
 CRuleFloatRangeMerge range conditions of the form: V f< c, c f< V, V f== c etc
 CRuleFuncPtrEncodingEliminate ARM/THUMB style masking of the low order bits on function pointers
 CRuleHighOrderAndSimplify INT_AND when applied to aligned INT_ADD: (V + c) & 0xfff0 => V + (c & 0xfff0)
 CRuleHumptyDumptySimplify break and rejoin: concat( sub(V,c), sub(V,0) ) => V
 CRuleHumptyOrSimplify masked pieces INT_ORed together: (V & ff00) | (V & 00ff) => V
 CRuleIdentityElCollapse operations using identity element: V + 0 => V
 CRuleIgnoreNanTreat FLOAT_NAN as always evaluating to false
 CRuleIndirectCollapseRemove a CPUI_INDIRECT if its blocking PcodeOp is dead
 CRuleIntLessEqualConvert LESSEQUAL to LESS: V <= c => V < (c+1)
 CRuleLeftRightTransform canceling INT_RIGHT or INT_SRIGHT of INT_LEFT
 CRuleLess2ZeroSimplify INT_LESS applied to extremal constants
 CRuleLessEqualSimplify 'less than or equal': V < W || V == W => V <= W
 CRuleLessEqual2ZeroSimplify INT_LESSEQUAL applied to extremal constants
 CRuleLessNotEqualSimplify INT_LESSEQUAL && INT_NOTEQUAL: V <= W && V != W => V < W
 CRuleLessOneTransform INT_LESS of 0 or 1: V < 1 => V == 0, V <= 0 => V == 0
 CRuleLoadVarnodeConvert LOAD operations using a constant offset to COPY
 CRuleLogic2BoolConvert logical to boolean operations: V & W => V && W, V | W => V || W
 CRuleModOptSimplify expressions that optimize INT_REM and INT_SREM
 CRuleMultiCollapseCollapse MULTIEQUAL whose inputs all trace to the same value
 CRuleMultNegOneCleanup: Convert INT_2COMP from INT_MULT: V * -1 => -V
 CRuleNegateIdentityApply INT_NEGATE identities: V & ~V => #0, V | ~V -> #-1
 CRuleNegateNegateSimplify INT_NEGATE chains: ~~V => V
 CRuleNotDistributeDistribute BOOL_NEGATE: !(V && W) => !V || !W
 CRuleOrCollapseCollapse unnecessary INT_OR
 CRuleOrConsumeSimply OR with unconsumed input: `V = A | B => V = B if nzm(A) & consume(V) == 0
 CRuleOrMaskSimplify INT_OR with full mask: V = W | 0xffff => V = W
 CRuleOrPredicateSimplify predication constructions involving the INT_OR operator
 CRulePiece2SextConcatenation with sign bits becomes an extension: concat( V s>> #0x1f , V) => sext(V)
 CRulePiece2ZextConcatenation with 0 becomes an extension: V = concat(#0,W) => V = zext(W)
 CRulePiecePathologySearch for concatenations with unlikely things to inform return/parameter consumption calculation
 CRulePopcountBoolXorSimplify boolean expressions that are combined through POPCOUNT
 CRulePositiveDivSigned division of positive values is unsigned division
 CRulePropagateCopyPropagate the input of a COPY to all the places that read the output
 CRulePtraddUndoRemove PTRADD operations with mismatched data-type information
 CRulePtrArithTransform pointer arithmetic
 CRulePtrFlowMark Varnode and PcodeOp objects that are carrying or operating on pointers
 CRulePtrsubCharConstantCleanup: Set-up to print string constants
 CRulePtrsubUndoRemove PTRSUB operations with mismatched data-type information
 CRulePullsubIndirectPull-back SUBPIECE through INDIRECT
 CRulePullsubMultiPull SUBPIECE back through MULTIEQUAL
 CRulePushMultiSimplify MULTIEQUAL operations where the branches hold the same value
 CRulePushPtrPush a Varnode with known pointer data-type to the bottom of its additive expression
 CRuleRangeMeldMerge range conditions of the form: V s< c, c s< V, V == c, V != c
 CRuleRightShiftAndSimplify INT_RIGHT and INT_SRIGHT ops where an INT_AND mask becomes unnecessary
 CRuleSborrowSimplify signed comparisons using INT_SBORROW
 CRuleSegmentPropagate constants through a SEGMENTOP
 CRuleSelectCseLook for common sub-expressions (built out of a restricted set of ops)
 CRuleShift2MultConvert INT_LEFT to INT_MULT: V << 2 => V * 4
 CRuleShiftAndEliminate any INT_AND when the bits it zeroes out are discarded by a shift
 CRuleShiftBitopsShifting away all non-zero bits of one-side of a logical/arithmetic op
 CRuleShiftCompareTransform shifts in comparisons: V >> c == d => V == (d << c)
 CRuleShiftPieceConvert "shift and add" to PIECE: (zext(V) << 16) + zext(W) => concat(V,W)
 CRuleShiftSubSimplify SUBPIECE applied to INT_LEFT: sub( V << 8*c, c) => sub(V,0)
 CRuleSignDiv2Convert INT_SRIGHT form into INT_SDIV: (V + -1*(V s>> 31)) s>> 1 => V s/ 2
 CRuleSignFormNormalize sign extraction: sub(sext(V),c) => V s>> 31
 CRuleSignNearMultSimplify division form: (V + (V s>> 0x1f)>>(32-n)) & (-1<<n) => (V s/ 2^n) * 2^n
 CRuleSignShiftNormalize sign-bit extraction: V >> 0x1f => (V s>> 0x1f) * -1
 CRuleSLess2ZeroSimplify INT_SLESS applied to 0 or -1
 CRuleSlessToLessConvert INT_SLESS to INT_LESS when comparing positive values
 CRuleSplitFlowTry to detect and split artificially joined Varnodes
 CRuleStoreVarnodeConvert STORE operations using a constant offset to COPY
 CRuleStructOffset0Convert a LOAD or STORE to the first element of a structure to a PTRSUB
 CRuleSub2AddEliminate INT_SUB: V - W => V + W * -1
 CRuleSubCancelSimplify composition of SUBPIECE with INT_ZEXT or INT_SEXT
 CRuleSubCommuteCommute SUBPIECE operations with earlier operations where possible
 CRuleSubExtCommCommute SUBPIECE and INT_ZEXT: sub(zext(V),c) => zext(sub(V,c))
 CRuleSubfloatConvertPerform SubfloatFlow analysis triggered by FLOAT_FLOAT2FLOAT
 CRuleSubNormalPull-back SUBPIECE through INT_RIGHT and INT_SRIGHT
 CRuleSubRightCleanup: Convert truncation to cast: sub(V,c) => sub(V>>c*8,0)
 CRuleSubvarAndPerform SubVariableFlow analysis triggered by INT_AND
 CRuleSubvarCompZeroPerform SubvariableFlow analysis triggered by testing of a single bit
 CRuleSubvarSextPerform SubvariableFlow analysis triggered by INT_SEXT
 CRuleSubvarShiftPerform SubvariableFlow analysis triggered by INT_RIGHT
 CRuleSubvarSubpiecePerform SubVariableFlow analysis triggered by SUBPIECE
 CRuleSubvarZextPerform SubvariableFlow analysis triggered by INT_ZEXT
 CRuleSubZextSimplify INT_ZEXT applied to SUBPIECE expressions
 CRuleSwitchSingleConvert BRANCHIND with only one computed destination to a BRANCH
 CRuleTermOrderOrder the inputs to commutative operations
 CRuleTestSignConvert sign-bit test to signed comparison: (V s>> 0x1f) != 0 => V s< 0
 CRuleThreeWayCompareSimplify expressions involving three-way comparisons
 CRuleTransformCpoolTransform CPOOLREF operations by looking up the value in the constant pool
 CRuleTrivialArithSimplify trivial arithmetic expressions
 CRuleTrivialBoolSimplify boolean expressions when one side is constant
 CRuleTrivialShiftSimplify trivial shifts: V << 0 => V, V << #64 => 0
 CRuleXorCollapseEliminate INT_XOR in comparisons: (V ^ W) == 0 => V == W
 CRuleXorSwap
 CRuleZextCommuteCommute INT_ZEXT with INT_RIGHT: zext(V) >> W => zext(V >> W)
 CRuleZextEliminateEliminate INT_ZEXT in comparisons: zext(V) == c => V == c
 CRuleZextShiftZextSimplify multiple INT_ZEXT operations: zext( zext(V) << c ) => zext(V) << c
 CRuleZextSlessTransform INT_ZEXT and INT_SLESS: zext(V) s< c => V < c
 CScopeA collection of Symbol objects within a single (namespace or functional) scope
 CScopeGhidraAn implementation of the Scope interface by querying a Ghidra client for Symbol information
 CScopeGhidraNamespaceA global namespace Scope
 CScopeInternalAn in-memory implementation of the Scope interface
 CScopeLocalA Symbol scope for local variables of a particular function
 CScopeMapperAn Address range associated with the symbol Scope that owns it
 CScoreProtoModelClass for calculating "goodness of fit" of parameter trials against a prototype model
 CSegmentedResolverA resolver for segmented architectures
 CSegmentOpThe segmented address operator
 CSeqNumA class for uniquely labelling and comparing PcodeOps
 CSetActionCommand to set the root Action used by the decompiler or toggle output components
 CSetOptionsCommand to toggle options within the decompiler
 CShiftForm
 CSizePassLabel for describing extent of address range that has been heritaged
 CSleigh
 CSleighArchitectureAn Architecture that uses the decompiler's native SLEIGH translation engine
 CSleighBaseCommon core of classes that read or write SLEIGH specification files natively
 CSleighBuilder
 CSpacebaseSpaceA virtual space stack space
 CSplitFlowClass for splitting up Varnodes that hold 2 logical variables
 CSplitVarnode
 CStackEqnA stack equation
 CStackSolverA class that solves for stack-pointer changes across unknown sub-functions
 CStringManagerStorage for decoding and storing strings associated with an address
 CStringManagerUnicodeAn implementation of StringManager that understands terminated unicode strings
 CStructureGraphCommand to structure a control-flow graph
 CSubfloatFlowClass for tracing changes of precision in floating point variables
 CSubForm
 CSubvariableFlowClass for shrinking big Varnodes carrying smaller logical values
 CSymbolThe base class for a symbol in a symbol table or scope
 CSymbolCompareNameComparator for sorting Symbol objects by name
 CSymbolEntryA storage location for a particular Symbol
 CTermOrderA class for ordering Varnode terms in an additive expression
 CTermPatternOpA user defined p-code op that has a dynamically defined procedure
 CTokenSplitA token/command object in the pretty printing stream
 CToOpEdgeAn edge between a Varnode and a PcodeOp
 CTraceDAGAlgorithm for selecting unstructured edges based an Directed Acyclic Graphs (DAG)
 CTrackedContextA tracked register (Varnode) and the value it contains
 CTransformManagerClass for splitting larger registers holding smaller logical lanes
 CTransformOpPlaceholder node for PcodeOp that will exist after a transform is applied to a function
 CTransformVarPlaceholder node for Varnode that will exist after a transform is applied to a function
 CTranslateThe interface to a translation engine for a processor
 CTreeHandlerA SAX interface implementation for constructing an in-memory DOM model
 CTruncationTagObject for describing how a space should be truncated
 CTypeArrayDatatype object representing an array of elements
 CTypeBaseBase class for the fundamental atomic types
 CTypeCharBase type for character data-types: i.e. char
 CTypeCodeDatatype object representing executable code
 CTypeEnumAn enumerated Datatype object: an integer with named values
 CTypeFactoryContainer class for all Datatype objects in an Architecture
 CTypeFactoryGhidraAn implementation of the TypeFactory interface, query a Ghidra client for data-type information
 CTypeFieldSpecifies subfields of a structure or what a pointer points to
 CTypeOpAssociate data-type and behavior information with a specific p-code op-code
 CTypeOpBinaryA generic binary operator: two inputs and one output
 CTypeOpBoolAndInformation about the BOOL_AND op-code
 CTypeOpBoolNegateInformation about the BOOL_NEGATE op-code
 CTypeOpBoolOrInformation about the BOOL_OR op-code
 CTypeOpBoolXorInformation about the BOOL_XOR op-code
 CTypeOpBranchInformation about the BRANCH op-code
 CTypeOpBranchindInformation about the BRANCHIND op-code
 CTypeOpCallInformation about the CALL op-code
 CTypeOpCallindInformation about the CALLIND op-code
 CTypeOpCallotherInformation about the CALLOTHER op-code (user defined p-code operations)
 CTypeOpCastInformation about the CAST op-code
 CTypeOpCbranchInformation about the CBRANCH op-code
 CTypeOpCopyInformation about the COPY op-code
 CTypeOpCpoolrefInformation about the CPOOLREF op-code
 CTypeOpEqualInformation about the INT_EQUAL op-code
 CTypeOpExtractInformation about the EXTRACT op-code
 CTypeOpFloatAbsInformation about the FLOAT_ABS op-code
 CTypeOpFloatAddInformation about the FLOAT_ADD op-code
 CTypeOpFloatCeilInformation about the FLOAT_CEIL op-code
 CTypeOpFloatDivInformation about the FLOAT_DIV op-code
 CTypeOpFloatEqualInformation about the FLOAT_EQUAL op-code
 CTypeOpFloatFloat2FloatInformation about the FLOAT_FLOAT2FLOAT op-code
 CTypeOpFloatFloorInformation about the FLOAT_FLOOR op-code
 CTypeOpFloatInt2FloatInformation about the FLOAT_INT2FLOAT op-code
 CTypeOpFloatLessInformation about the FLOAT_LESS op-code
 CTypeOpFloatLessEqualInformation about the FLOAT_LESSEQUAL op-code
 CTypeOpFloatMultInformation about the FLOAT_MULT op-code
 CTypeOpFloatNanInformation about the FLOAT_NAN op-code
 CTypeOpFloatNegInformation about the FLOAT_NEG op-code
 CTypeOpFloatNotEqualInformation about the FLOAT_NOTEQUAL op-code
 CTypeOpFloatRoundInformation about the FLOAT_ROUND op-code
 CTypeOpFloatSqrtInformation about the FLOAT_SQRT op-code
 CTypeOpFloatSubInformation about the FLOAT_SUB op-code
 CTypeOpFloatTruncInformation about the FLOAT_TRUNC op-code
 CTypeOpFuncA generic functional operator
 CTypeOpIndirectInformation about the INDIRECT op-code
 CTypeOpInsertInformation about the INSERT op-code
 CTypeOpInt2CompInformation about the INT_2COMP op-code
 CTypeOpIntAddInformation about the INT_ADD op-code
 CTypeOpIntAndInformation about the INT_AND op-code
 CTypeOpIntCarryInformation about the INT_CARRY op-code
 CTypeOpIntDivInformation about the INT_DIV op-code
 CTypeOpIntLeftInformation about the INT_LEFT op-code
 CTypeOpIntLessInformation about the INT_LESS op-code
 CTypeOpIntLessEqualInformation about the INT_LESSEQUAL op-code
 CTypeOpIntMultInformation about the INT_MULT op-code
 CTypeOpIntNegateInformation about the INT_NEGATE op-code
 CTypeOpIntOrInformation about the INT_OR op-code
 CTypeOpIntRemInformation about the INT_REM op-code
 CTypeOpIntRightInformation about the INT_RIGHT op-code
 CTypeOpIntSborrowInformation about the INT_SBORROW op-code
 CTypeOpIntScarryInformation about the INT_SCARRY op-code
 CTypeOpIntSdivInformation about the INT_SDIV op-code
 CTypeOpIntSextInformation about the INT_SEXT op-code
 CTypeOpIntSlessInformation about the INT_SLESS op-code
 CTypeOpIntSlessEqualInformation about the INT_SLESSEQUAL op-code
 CTypeOpIntSremInformation about the INT_SREM op-code
 CTypeOpIntSrightInformation about the INT_SRIGHT op-code
 CTypeOpIntSubInformation about the INT_SUB op-code
 CTypeOpIntXorInformation about the INT_XOR op-code
 CTypeOpIntZextInformation about the INT_ZEXT op-code
 CTypeOpLoadInformation about the LOAD op-code
 CTypeOpMultiInformation about the MULTIEQUAL op-code
 CTypeOpNewInformation about the NEW op-code
 CTypeOpNotEqualInformation about the INT_NOTEQUAL op-code
 CTypeOpPieceInformation about the PIECE op-code
 CTypeOpPopcountInformation about the POPCOUNT op-code
 CTypeOpPtraddInformation about the PTRADD op-code
 CTypeOpPtrsubInformation about the PTRSUB op-code
 CTypeOpReturnInformation about the RETURN op-code
 CTypeOpSegmentInformation about the SEGMENTOP op-code
 CTypeOpStoreInformation about the STORE op-code
 CTypeOpSubpieceInformation about the SUBPIECE op-code
 CTypeOpUnaryA generic unary operator: one input and one output
 CTypePointerDatatype object representing a pointer
 CTypeRecommendData-type for a storage location when there is no Symbol (yet)
 CTypeSpacebaseSpecial Datatype object used to describe pointers that index into the symbol table
 CTypeStructA composite Datatype object: A "structure" with component "fields"
 CTypeUnicodeThe unicode data-type: i.e. wchar
 CTypeVoidFormal "void" data-type object
 CUnimplErrorException for encountering unimplemented pcode
 CUniqueSpaceThe pool of temporary storage registers
 CUnspecializedPcodeOpA user defined p-code op with no specialization
 CUserOpManageManager/container for description objects (UserPcodeOp) of user defined p-code ops
 CUserPcodeOpThe base class for a detailed definition of a user-defined p-code operation
 CValueSetA range of values attached to a Varnode within a data-flow subsystem
 CValueSetReadA special form of ValueSet associated with the read point of a Varnode
 CValueSetSolverClass that determines a ValueSet for each Varnode in a data-flow system
 CVarnodeA low-level variable or contiguous set of bytes described by an Address and a size
 CVarnodeBankA container for Varnode objects from a specific function
 CVarnodeCompareDefLocCompare two Varnode pointers by definition then location
 CVarnodeCompareLocDefCompare two Varnode pointers by location then definition
 CVarnodeDataData defining a specific memory location
 CVolatileOpA base class for operations that access volatile memory
 CVolatileReadOpAn operation that reads from volatile memory
 CVolatileWriteOpAn operation that writes to volatile memory
 CWidenerClass holding a particular widening strategy for the ValueSetSolver iteration algorithm
 CWidenerFullClass for doing normal widening
 CWidenerNoneClass for freezing value sets at a specific iteration (to accelerate convergence)
 CXmlArchitectureAn Architecture that loads executables using an XML format
 CXmlArchitectureCapabilityExtension for building an XML format capable Architecture
 CXmlErrorAn exception thrown by the XML parser
 Cyy_buffer_state
 Cyy_trans_info
 Cyyalloc
 CYYSTYPE