Usage: <executable> [PRE-OPTIONS] [COMMAND]

Executable:
       Linux: ffdec or ffdec.sh
      Mac OS: ffdec.sh
     Windows: ffdec-cli.exe or ffdec.bat
        Java: java -jar ffdec.jar

Commands:
-help [<command> | -all]
alias --help
alias /?
    Show help options about a command.
    Show help topic about specified <command>.
    If parameter is omitted, then main help for the app is shown.
    If -all parameter passed, help for all commands is printed.

<infile> [<infile2> <infile3> ...]
    Open SWF file(s) with the decompiler GUI.

-export <itemtypes> <outdirectory> <infile_or_directory>
    Export sources.
    Export <infile_or_directory> sources to <outdirectory>.
    Exports all files from <infile_or_directory> when it is a folder.
    Values for <itemtypes> parameter:
        script - Scripts (Default format: ActionScript source)
        image - Images (Default format: PNG/JPEG)
        shape - Shapes (Default format: SVG)
    morphshape - MorphShapes (Default format: SVG)
        movie - Movies (Default format: FLV without sound)
        font - Fonts (Default format: TTF)
        font4 - DefineFont4 (Default format: CFF)
        frame - Frames (Default format: PNG)
        sprite - Sprites (Default format: PNG)
        button - Buttons (Default format: PNG)
        sound - Sounds (Default format: MP3/WAV/FLV only sound)
        binaryData - Binary data (Default format:  Raw data)
        symbolClass - Symbol-Class mapping (Default format: CSV)
        text - Texts (Default format: Plain text)
        all - Every resource (but not FLA and XFL)
        fla - Everything to FLA compressed format
        xfl - Everything to uncompressed FLA format (XFL)
    You can export multiple types of items by using colon ",".
    DO NOT PUT space between comma (,) and next value.

-dumpSWF <infile>
    Dump list of SWF tags to console.

-dumpAS2 [-exportNames] <infile>
    Dump list of AS1/2 scripts to console.
    Use -exportNames option to print names in export format
    (used in -replace command etc.)

-dumpAS3 <infile>
    Dump list of AS3 scripts to console.

-compress <infile> <outfile> [(zlib|lzma)]
    Compress SWF file.
    Compress SWF <infile> and save it to <outfile>.
    If <infile> is already compressed, it will be re-compressed.
    Default compression method is ZLIB

-decompress <infile> <outfile>
    Decompress SWF file.
    Decompress <infile> and save it to <outfile>

-encrypt <infile> <outfile>
    Encrypt SWF file with HARMAN Air encryption.
    Encrypt file <infile> with HARMAN Air encryption and saves it to <outfile>.

-decrypt <infile> <outfile>
    Decrypt HARMAN Air encrypted file.
    Decrypt HARMAN Air encrypted file <infile> and saves it to <outfile>.

-swf2xml <infile> <outfile>
    Convert SWF to XML.
    Convert the <infile> SWF to <outfile> XML file.

-xml2swf <infile> <outfile>
    Convert XML to SWF.
    Convert the <infile> XML to <outfile> SWF file.

-extract <infile> [-o <outpath>|<outfile>] [nocheck] \
         [(all|biggest|smallest|first|last)]    
    Extract SWF files from ZIP or other binary files.
    -o parameter should contain a file path 
        when "biggest" or "first" parameter is specified
    -o parameter should contain a folder path 
        when no extaction mode or "all" parameter is specified

-memorySearch (<processName1>|<processId1>) (<processName2>|<processId2>)...
    Search SWF files in the memory.

-renameInvalidIdentifiers (typeNumber|randomWord) <infile> <outfile>
    Rename invalid identifiers.
    Rename the invalid identifiers in <infile> and save it to <outfile>

-flashpaper2pdf <infile> <outfile>
    Convert FlashPaper SWF file to PDF.
    Convert FlashPaper SWF file <infile> to PDF <outfile>.
    Use -zoom parameter to specify image quality.

-replace <infile> <outfile> \
       (<characterId1>|<scriptName1>) <importDataFile1> \
       [nofill] [-startFrame <startFrame>] ([<format1>][<methodBodyIndex1>]) \
       [(<characterId2>|<scriptName2>) <importDataFile2> \
       [nofill] [-startFrame <startFrame>] ([<format2>][<methodBodyIndex2>])]...
    Replace data.
    Replaces the data of the specified BinaryData, Image, Shape, Text, Font,
    Sound tag or Script.
    nofill parameter can be specified only for shape replace.
    <startFrame> parameter sets sound range start frame (for sound streams)
    <format> parameter can be specified for Image and Shape tags.
    valid formats: lossless, lossless2, jpeg2, jpeg3, jpeg4.
    <methodBodyIndexN> parameter should be specified if and only if the imported entity is an AS3 P-Code.
    Use -1 as characterId to replace main timeline SoundStreamHead.

-replace <infile> <outfile> <argsfile>
    Replace data using argsfile.     
    Same as -replace command, but the rest of arguments is read as lines from
    a text file <argsfile>

-replaceAlpha <infile> <outfile> <imageId1> <importDataFile1> \
              [<imageId2> <importDataFile2>]...    
    Replace the alpha channel of the specified JPEG3/4 tag.

-replaceCharacter <infile> <outfile> <characterId1> <newCharacterId1> \
                  [<characterId2> <newCharacterId2>]...
    Replace a character tag with another from the same SWF.

-replaceCharacterId <infile> <outfile> <oldId1>,<newId1>,<oldId2>,<newId2>...
    Replace character ids.
    Replace the <oldId1> character id with <newId1>.

-replaceCharacterId <infile> <outfile> (pack|sort)
    Replace character ids bulk operation.
    pack: removes the spaces between the character ids (1,4,3 => 1,3,2)
    sort: assigns increasing IDs to the character tags + pack (1,4,3 => 1,2,3)
    DO NOT PUT space between comma (,) and next value.

-remove <infile> <outfile> <tagIndex1> [<tagIndex2>]...
    Remove a tag from the SWF.
    Remove tags based in index from main SWF timeline.

-removeCharacter <infile> <outfile> <characterId1> [<characterId2>]...
    Remove a character tag from the SWF.

-removeCharacterWithDependencies <infile> <outfile> <characterId1> \
                                 [<characterId2>]...
    Remove a character tag from the SWF with dependencies.

-importSymbolClass <infile> <outfile> <symbolclassfile>
    Import Symbol-Class mapping.
    Import Symbol-Class mapping to <infile> and saves the result to <outfile>.

-importMovies <infile> <outfile> <moviesfolder>
    Bulk import movies.
    Import movies to <infile> and saves the result to <outfile>.

-importSounds <infile> <outfile> <soundsfolder>
    Bulk import sounds.
    Import sounds to <infile> and saves the result to <outfile>.

-importShapes <infile> <outfile> [nofill] <shapesfolder>
    Bulk import shapes.
    Import shapes to <infile> and saves the result to <outfile>.

-importImages <infile> <outfile> <imagesfolder>
    Bulk import images.
    Import images to <infile> and saves the result to <outfile>.

-importSprites <infile> <outfile> <spritesfolder>
    Bulk import sprites.
    Import sprites to <infile> and saves the result to <outfile>.

-importText <infile> <outfile> <textsfolder>
    Bulk import texts.
    Import texts to <infile> and saves the result to <outfile>,

-importScript <infile> <outfile> <scriptsfolder>
    Bulk import scripts.
    Import scripts to <infile> and saves the result to <outfile>.

-deobfuscate <level> <infile> <outfile>
    Deobfuscate AS3 P-code.
    Deobfuscate AS3 P-code in <infile> and saves result to <outfile>.
    <level> can be one of: traps/2/max, deadcode/1

-enabledebugging [-injectas3|-generateswd] [-pcode] <infile> <outfile>
    Enable debugging in SWF file.
    Enable debugging for <infile> and saves result to <outfile>.
    -injectas3 (optional) causes debugfile and debugline instructions
               to be injected into the code to match decompiled/pcode source.
    -generateswd (optional) parameter creates SWD file needed for AS1/2 
               debugging. For <outfile.swf>, <outfile.swd> is generated.
    -pcode (optional) parameter specified after -injectas3 or -generateswd
                     causes lines to be handled as lines in P-code 
                     => All P-code lines are injected, etc.
    WARNING: Injected/SWD script filenames may be different than from standard
             compiler.

-doc -type <type> [-out <outfile>] [-format <format>] [-locale <locale>]
    Generate documentation.
    -type <type> Selects documentation type
    <type> can be: 
           as3.pcode.instructions - AVM2 instruction list
           as12.pcode.instructions - AVM1 action list
    -out <outfile> (optional) If specified, output is written 
                              to <outfile> instead of stdout
    -format <format> (optional, html is default) Selects output format
    <format> is currently only html
    -locale <locale> (optional) Override default locale
    <locale> is localization identifier, en for english for example    

-getInstanceMetadata -instance <instanceName> [-outputFormat <outputFormat>] \
                     [-key <key> ] [-datafile <datafile>] <swffile>
    Read instance metadata.
    -instance <instanceName>: name of instance to fetch metadata from
    -outputFormat <outputFormat> (optional): format of output 
                                            - jslike|raw. Default is jslike.
    - key <key> (optional): name of subkey to display. 
                When present, only value from subkey <key> is shown,
                whole object value otherwise.
    -datafile <datafile> (optional): File to write the data to.
                                     If omitted, stdout is used.
    <swffile>: SWF file to read metadata from.

-setInstanceMetadata -instance <instanceName>  [-inputFormat <inputFormat>] \
                     [-key <key> ] [-value <value> | -datafile <datafile>] \
                     [-outfile <outFile>] <swffile>
    Add metadata to instance.
    -instance <instanceName>: name of instance to replace data in
    -inputFormat <inputFormat>: format of input data - jslike|raw. 
                                Default is jslike.
    -key <key> (optional): name of subkey to use. When present, the value 
                            is set as object property with the <key> name.
                            Otherwise the value is set directly to the
                            instance without any subkeys.
    -value <value> (optional): value to set.
    -datafile <datafile> (optional): value to set from file.
    If no -value or -infile parameter present, the value to set is taken
    from stdin.
    -outfile <outfile> (optional): Where to save resulting file.
                                   If omitted, original SWF file is overwritten.
    <swffile>: SWF file to search instance in

-removeInstanceMetadata -instance <instanceName> [-key <key>] \
                        [-outfile <outFile>] <swffile>
    Remove metadata from instance.
    -instance <instanceName>: name of instance to remove data from
    -key <key> (optional): name of subkey to remove. 
        When present, only the value from subkey <key> of
        the AMF object is removed.
        Otherwise all metadata are removed from the instance.
    -outfile <outfile> (optional): Where to save resulting file.
                                   If omitted, original SWF file is overwritten.
    <swffile>: SWF file to search instance in

-linkReport [-outfile <outfile>] <swffile>
    Generate linker report for the swffile.
    -outfile <outfile> (optional): Saves XML report to <outfile>. 
                                  When omitted, the report is printed to stdout.
    <swffile>: SWF file to search instance in

-swf2swc <outfile> <swffile>
    Generate SWC file from SWF.
    <outfile>: Where to save SWC file
    <swffile>: Input SWF file

-abcmerge <outfile> <swffile>
    Merge all ABC tags in SWF file to one.
    <outfile>: Where to save merged file
    <swffile>: Input SWF file

-abcclean <infile> <outfile>
    Cleans specified ABC file by removing all unused items from the ABC.
    <infile>: Input ABC (.abc extension) or SWF file (.swf or .gfx)
    <outfile>: Where to save result

-swf2exe <exportMode> <outfile> <swffile>
    Export SWF to executable file.
    <exportMode>: wrapper|projector_win||projector_mac|projector_linux

-header -set <key> <value> [-set <key2> <value2> ...] <swffile> [<outfile>]
    Print or set SWF header values.
    Print header or sets SWF header values (with -set arguments) in <swffile>
    and saves it to <outfile>.
    Available keys: version
                    gfx (true/false)
                    displayrect ([x1,y1,x2,y2])
                    width
                    height
                    framecount
                    framerate
    For width, height and displayrect subvalues you can use suffix px for
    pixel values. Otherwise its twips.

-listconfigs
    List all available configuration keys and current values.
    These keys can be used in -config pre-option.

-storeConfigFile [-comments] [-all] <file>
    Stores current configuration to a file <file>.
    With -comments argument it adds titles and descriptions.
    With -all argument it exports all configs, not even modified.

-translator
    Runs the Translator app for FFDec localization

-soleditor
    Runs the Sol cookie editor as standalone application

Pre-options:
-format <formats>
    Applies to: -export
    Set output formats for export.
    Values for <formats> parameter:
        script:as - ActionScript source
        script:pcode - ActionScript P-code
        script:pcodehex - ActionScript P-code with hex
        script:hex - ActionScript Hex only
        shape:svg - SVG format for Shapes
        shape:png - PNG format for Shapes
        shape:canvas - HTML5 Canvas format for Shapes
        shape:bmp - BMP format for Shapes
        shape:webp - WEBP format for Shapes
        morphshape:svg - SVG format for MorphShapes
        morphshape:canvas - HTML5 Canvas  format for MorphShapes
        morphshape:png_start_end - PNG start-end format for MorphShapes
        morphshape:bmp_start_end - BMP start-end format for MorphShapes
        morphshape:webp_start_end - WEBP start-end format for MorphShapes
        morphshape:png_frames - PNG frames format for MorphShapes
        morphshape:bmp_frames - BMP frames format for MorphShapes
        morphshape:webp_frames - WEBP frames format for MorphShapes
        morphshape:webp - WEBP format for MorphShapes
        morphshape:apng - APNG format for MorphShapes
        frame:png - PNG format for Frames
        frame:apng - APNG format for Frames
        frame:gif - GIF format for Frames
        frame:avi - AVI format for Frames
        frame:svg - SVG format for Frames
        frame:canvas - HTML5 Canvas format for Frames
        frame:pdf - PDF format for Frames
        frame:bmp - BMP format for Frames
        frame:webp - WEBP format for Frames
        frame:webp_animated - WEBP animated format for Frames
        sprite:png - PNG format for Sprites
        sprite:apng - APNG format for Sprites
        sprite:gif - GIF format for Sprites
        sprite:avi - AVI format for Sprites
        sprite:svg - SVG format for Sprites
        sprite:canvas - HTML5 Canvas format for Sprites
        sprite:pdf - PDF format for Sprites
        sprite:bmp - BMP format for Sprites
        sprite:webp - WEBP format for Sprites
        sprite:webp_animated - WEBP animated format for Sprites
        button:png - PNG format for Buttons
        button:svg - SVG format for Buttons
        button:bmp - BMP format for Buttons
        button:webp - WEBP format for Buttons
        image:png_gif_jpeg - PNG/GIF/JPEG format for Images
        image:png - PNG format for Images
        image:jpeg - JPEG format for Images
        image:bmp - BMP format for Images
        image:png_gif_jpeg_alpha - PNG/GIF/JPEG+ALPHA format for Images
        image:webp - WEBP format for Images
        text:plain - Plain text format for Texts
        text:formatted - Formatted text format for Texts
        text:svg - SVG format for Texts
        sound:mp3_wav_flv - MP3/WAV/FLV format for Sounds
        sound:mp3_wav - MP3/WAV format for Sounds
        sound:wav - WAV format for Sounds
        sound:flv - FLV format for Sounds
        font:ttf - TTF format for Fonts
        font:woff - WOFF format for Fonts
        font4:cff - CFF format for DefineFont4
        fla:<flaversion> or xfl:<flaversion> - Specify FLA format version
    Values for <flaversion>: f5,mx,mx2004,f8,cs3,cs4,cs5,cs5.5,cs6,cc
    You can set multiple formats at once using comma (,)
    DO NOT PUT space between comma (,) and next value.
    The prefix with colon (:) is necessary.

-cli
    Applies to: main
    Command line mode. Parse the SWFs without opening the GUI.

-select <ranges>
    Applies to: -export
    Select frames/pages for export.
    Comma separated ranges in format <min>-<max> (<max> is optional) or <num>.
    If it has prefix "<characterId>:" then all following ranges apply
    to the character with specific id.
    Use "all" as characterId to apply for every character. 
    Use "0" (default) as characterId to apply for main timeline.
    Example <ranges> formats:
                1-5              ... exports frames 1,2,3,4,5
                2,3              ... exports frames 2 and 3
                2-5,7,9-         ... exports frames 2,3,4,5,7,9 and all after
                57:5-10,12,62:5  ... exports frames 5,6,7,8,9,10,12 
                                     of character 57 and frame 5 of character 62
                all:12-29        ... exports frames 12 to 29 of all characters
                12:3,4,0:1-12    ... exports frames 3 and 4 of character 12
                                     and first 12 frames of main timeline
    DO NOT PUT space between comma (,) and next range.

-selectid <charRanges>
    Applies to: -export
    Select characters for export by character id.
    Comma separated ranges in format <min>-<max> (<max> is optional) or <characterId>.
    Example <charRanges> formats:
                1-5          ... exports characters 1,2,3,4,5
                2,3          ... exports characters 2 and 3
                2-5,7,9-     ... exports characters 2,3,4,5,7,9 and all ids after

-selectclass <classnames>
    Applies to: -export
    Select scripts to export by class name (AS 3 ONLY).
    <classnames> format:
        com.example.MyClass
        com.example.+   (all classes in package "com.example")
        com.++,net.company.MyClass  (all classes in package "com" and all 
                                    subpackages, class net.company.MyClass)
        DO NOT PUT space between comma (,) and next class.

-sublength <length>
    Applies to: -export
    Export subsprite animation of length <length>.
    <length> is measured in number of subframes. Must be >= 1.

-exportembed
    Applies to: -export
    Allow exporting embedded assets via [Embed tag].

-config key=value[,key2=value2][,key3=value3...]
    Applies to: *
    Set configuration values.
    Use -listconfigs command to list the available configuration settings.
    Values are boolean, you can use 0/1, true/false, on/off or yes/no.
    If no other parameters passed, configuration is saved.
    Otherwise it is used only once.
    DO NOT PUT space between comma (,) and next value.

-configFile <file>
    Applies to: *
    Use configuration from a file <file>. TOML file format is expected.
    When it has .bin extension, legacy storage is used.

-onerror (abort|retry <N>|ignore)
    Applies to: -export, -importScript
    Error handling mode.
    "abort" stops the exporting
    "retry" tries the exporting N times
    "ignore" ignores the current file

-timeout <N>
    Applies to: -export
    Decompilation timeout for a single method in AS3 or single action in AS1/2
    in seconds.

-exportTimeout <N>
    Applies to: -export
    Total export timeout in seconds.

-exportFileTimeout <N>
    Applies to: -export
    Export timeout for a single AS3 class in seconds.

-stat
    Applies to: -export
    Show export performance statistics.

-zoom <N>
    Applies to: -export, -flashpaper2pdf
    Apply zoom during export.

-custom <customparameter1> [<customparameter2>]...
    Applies to: main
    Forward all parameters after the -custom parameter to the plugins.

-charset <charsetName>
    Applies to: *
    Set desired character set for reading/writing SWF files with
    SWF version <= 5.

-air
    Applies to: -replace, -importScript
    Use AIR ("airglobal.swc") for AS3 compilation instead of "playerglobal.swc".

-resamplewav
    Applies to: -export
    Enables resampling exported WAV sound files to 44kHz.

-ignorebackground
    Applies to: -export
    Ignores SWF background color when exporting frames
    and thus make background transparent.

-importAssets <importOptions>
    Applies to: -export
    Specifies options for importAssets tag - using external SWFs.
    <importOptions> format: (combination of yes,ask,local)
            yes = use external SWFs when available
            ask = ask whether to use external SWFs
            yes,ask = use external SWFs, ask for alternatives when not available
            yes,local = ignores URLs - SWFs starting with http/s:// prefix

-changeImport <source> <target>
    Applies to: -export
    Replaces <source> URL in importAssets tag with <target>
    for purposes of export. Can be used multiple times.

-morphDuration <duration>
    Applies to: -export
    Specifies duration in seconds (float value) for morphshape exporting.

-morphNumFrames <numberOfFrames>
    Applies to: -export
    Specifies number of frames for morphshape exporting.

