****************************************************************************
*                   INQUISITION - The Decompiling Plugin                   *
*                       by The INQUISITION Team                            *
*            Polaris - Decompiling Engines & IDA Pro programming           *
*                     MastroSoft - GUI Programming                         *
*             D!nyo - Inquisition GUI artwork & WebSite Logo For           *
*                             Inquisition Page                             *
****************************************************************************

**** Index
        1 What is INQUISITION ?
        2 How do I install INQUISITION ?
        3 How do I invoke INQUISITION ?
        4 Disclaimers, Contact & More
        5 History

**** What is INQUISITION ?

        Inquisition is a Local-Assembler-To-PseudoC syntax-guided-translator.
        If this very long definition does mean nothing to you, well, consider
        INQUISITION as a decompiler plugin.

**** How do I install INQUISITION ?

        As for any IDA Pro plugin:

                --> Copy INQUISITION.plw to your IDA Pro plugin dir
                    (by default ..\ida\plugins)
                --> Edit the plugins.cfg if you want to override the
                    default hotkey & name for the INQUISITION plugin

        Also, put the INQ_VB.dll in the directory where main IDA executable
        resides.

        Consider this example:

                --> IDA Directory : c:\rceng\ida
                --> c:\rceng\ida <-- INQ_VB.dll must be here
                --> c:\rceng\ida\plugins <-- INQUISITION.plw must be here

**** How do I invoke INQUISITION ?

        First, go with the cursor inside the target subroutine.
        There are two ways to invoke the Plugin:

        --> Go to Edit->Plugins-> and select INQUISITION

        --> Press INQUISITION hotkey (by default Alt-I)

**** Disclaimers, Contact & More

        Since INQUISITION is a complex project, it will be surely
        full of any kind of horrible :[] bugs. The authors take NO
        responsability for any use or misuse of INQUISITION.

        For:
                --> Feedback
                --> Bug report
                --> Wanted Features
                --> Support requests

        please contact me at:

                     masterofnebulahfrost@hotmail.com

        INQUISITION is property of Polaris, copyright 2003.

        You are allowed to use freely INQUISITION as long as you do
        not make money using INQUISITION. If so, please contact me.

        You are allowed to distribute freely INQUISITION as long as
        you:
                --> preserve archive integrity
                --> preserve copyright notices

        Many thanks to:

                MastroSoft & D!nyo - New members of the INQUISITION
                                     development team
                
                moogman,Zheng Tao - thanks for the interesting
                                    discussions! :)

**** History

        INQUISITION v1.000 beta
                The very first release...Surely full of horrible bugs!
                
                News:
                - 1-2-1 translation for most assembler commands
                - Jump Rebuilder operative at 100%

        INQUISITION v1.1 beta
                The plugin had undergone a heavy test work...Some
                obscene errors emerged :[]

                News:

                - Engine for Idiom recognizing is operative at 100%
                  Database currently holds 4 idioms
                  When the analizer detects an idiom, often some
                  SEMANTIC/SINTACTIC comment is added for helping out
                - Operands are filtered: no more 401234loc_401234 ;)


                Fixes:
                - corrected setz/setnz bug :(((( Too bad!
                - data in subroutine caused the plugin to go loop.
                  Now INQUISITION works correctly, but emits some
                  warning messages :O
                - some useless code was killed ! :)
                - operand #2 was displayed as *operand_2*
                
        INQUISITION v2.0 beta
                INQUISITION has been heavily improved, by adding the
                Call Decompiler Engine, for both functions & external
                symbols (_dllcalls).

                News:
                - INQUISITION decompiles correctly nested call statements,
                  by stack emulation
                  Small example...

                ; int __stdcall sub_401203(int nWidth,int nHeight)
                sub_401203      proc near               ; CODE XREF: sub_401C74+137p

                nWidth          = dword ptr  4
                nHeight         = dword ptr  8

                        push    1               ; bErase
                        mov     eax, hWnd
                        push    0               ; lpRect
                        push    eax             ; hWnd
                        call    ds:InvalidateRect
                        push    1               ; bRepaint
                        push    [esp+4+nHeight] ; nHeight
                        push    [esp+8+nWidth]  ; nWidth
                        push    0               ; Y
                        push    0               ; X
                        push    hWnd            ; hWnd
                        call    ds:MoveWindow
                        retn    8

                sub_401203      endp

                Becomes:

                INQUISITION Plugin version 2.0 beta was invoked! Copyright Polaris 2003.

                 --> INQUISITION is analyzing function sub_401203
                 --> Scanning assembler listing...Done.

                /**
                 * This is the translated output for subroutine sub_401203
                 * Generated AUTOMATICALLY by the INQUISITION plugin by Polaris
                 */             

                 sub_401203:
                     eax = hWnd;
                     ds:004064E8InvalidateRect(eax,0,1);
                     ds:004064ECMoveWindow(hWnd,0,0,[esp+8+nWidth],[esp+4+nHeight],1);
                     return;

                INQUISITION Plugin: Copyright Polaris 2003.
                Your feedback at masterofnebulahfrost@hotmail.com

                  Try it for yourself! :)
                - Now you don't have to go to function's first instruction,
                  just invoke INQUISITION anywhere inside the sub :)
                - Idiom engine has been updated. Some idioms were
                  taken from David Eriksson's thesis on decompilation
                  (desquirr Master Thesis). Thanks David!
                - Another horde of bugs was corrected.

        INQUISITION v3.0 beta
                Internal release only :( Just for trying out the GUI

                News:
                - GUI v0.1 beta

        INQUISITION v3.1
                First public release with GUI
                MastroSoft joined the project as the guy behind the GUI :)
                Dyn!o joined the project as the artwork master 

                News:
                - GUI v1.0 beta
                - Some bugfixing :[]
                - Now INQUISITION handles correctly subroutines prologs
                  and epilogs
                - Some correct type castings (thanks to Zheng Tao!)
                - IR reworked  :)

        INQUISITION v3.11 (bugfix release)
                Bugfix release

                News:
                - None

                Bugfixes:
                - jump rebuilder handles correctly "test" instructions
                  (thanks to Volodya)
                - jump rebuilder handles correctly AND,OR,XOR and NOT
                  operators (thanks to volodya)

        INQUISITION v3.12
                Small update & bugfix release.First release for IDA Pro 4.5

                News:
                - Added support for more ins (in,out...)

                Bugfixes:
                - No more duplicated labels
                - Idiom engine has been fixed to not cause any crash
                - Some minor issues :[]
             
