Decompilation processing

Native-code decompilation reconstructs Delphi-like Pascal from machine instructions and available metadata. The same processing options apply to supported applications written in Delphi or built with C++Builder.

Reconstructed program logic

The decompiler recovers conditions, case blocks, loops and calls, including recognized VCL methods. Source-level names and types depend on the information retained in the binary. Generated variable names, inferred structure layouts and calls without recognized VCL names are normal consequences of native-code reconstruction. See Interpreting recovered code for details.

Controls for decompilation processing.
Controls for decompilation processing.

Delphi expressions and runtime operations

Recognized control flow includes if/else, case, for, while and repeat/until, with Break and Continue where the native branches establish their meaning.

Available RTTI, class metadata and signatures support object fields, properties, virtual methods, VCL calls and imported Windows API calls. Common RTL operations can be represented as Delphi string expressions, Length, Copy, Delete, Insert, array resizing and indexing, Variant-array access, and TextFile input operations.

These transformations depend on recognized types, calling conventions and data flow. Where the evidence is insufficient, the listing retains explicit calls, pointers or branches. Generated semantic variable names describe inferred roles and are not recovered original identifiers.

Stack parameters and optimization

Parse stack parameters contributes to reconstruction of calls and higher-level expressions. Procedure analyzer and optimizer simplifies recognized expression and control-flow patterns. Compare the resulting listing with these controls disabled when an expression or branch is unclear.

Control-flow processing

Process If ... End If blocks (Native Code) reconstructs recognized conditional jumps as high-level conditional blocks. Process 'Else' blocks adds heuristics for Else branches and requires If-block processing. Compare these controls enabled and disabled when investigating an ambiguous branch.

Prototypes and addresses

Analyze prototypes performs preliminary heuristic analysis of procedure arguments and return values. It is useful in Fast decompilation mode when private functions lack explicit signature metadata. This analysis takes additional initial processing time. Check inferred signatures against callers and native instructions when they affect an analysis conclusion.

Add Addresses retains virtual addresses in the high-level listing for comparison and navigation. Keep it enabled for Copy to disassembler. The Disassembler displays addresses independently of this setting.

When output is cached or the complete project has already been processed, reopen or reprocess the input after changing the relevant settings.