The function "ParseCode" examines the x86 instruction beginning at the specified address. A detailed analysis of the instruction is returned. You can loop through code blocks by using "result.Next".

  TCodeInfo = record
    IsValid     : boolean;   // was the specified code pointer valid?
    Opcode      : word;      // Opcode, one byte ($00xx) or two byte ($0fxx)
    ModRm       : byte;      // ModRm byte, if available, otherwise 0
    Call        : boolean;   // is this instruction a call?
    Jmp         : boolean;   // is this instruction a jmp?
    RelTarget   : boolean;   // is this target relative (or absolute)?
    Target      : pointer;   // absolute target address
    PTarget     : pointer;   // pointer to the target information in the code
    PPTarget    : TPPointer; // pointer to pointer to the target information
    TargetSize  : integer;   // size of the target information in bytes (1/2/4)
    Enlargeable : boolean;   // can the target size of this opcode be extended?
    This        : pointer;   // where does this instruction begin?
    Next        : pointer;   // next code location

function ParseCode (code: pointer                    ) : TCodeInfo; overload;
function ParseCode (code: pointer; var disAsm: string) : TCodeInfo; overload;