Mpj ddlmZddlmZddlmZddlZddlZddlZddlZ ddlZdZ ddl m Z ddl mZmZdd lmZej$dd kZd aerd ZneZd ZdZdZdZdZdZdZdZdAdZdZ dZ!dZ"dZ#dZ$ejJfdZ&ejJfdZ'dZ(iddgdd d!d"gdd d#d$gdd d d%gdd d&d'gdd d(d)gdd d*d+gdd d,d-gdd d.d/gdd d0d1gdd d2d3gdd d4d5gdd d6d7gdd d8d9gdd d:d;gdd dgdd id?d@gdd dAdBgdd dCdDgdd dEdFgdd dGdHgdd dIdJgdd dKdLgdd dMdNgdd dOdPgdd dQdRgdd dSdTgdd dUdVgdd dWdXgdd dYdZgdd d[d\d]gdd d^d_d]gdd d`dad]gdd idbdcd]gdd dddedfgdd dgdhd]dfgdd didjd]dfgdd dkdld]dfgdd dmdnd]gdd dodpd]gdd dqdrd]gdd dsdtdfgdd dudvd]dfgdd dwdxd]dfgdd dydzd]dfgdd d{d|d]gdd d}d~d]gdd ddd]gdd dddfgdd ddd]dfgdd iddd]dfgdd ddd]dfgdd ddd]gdd ddd]gdd ddd]dfgdd ddd]dfgdd ddd]gdd ddd]gdd ddd]dfgdd ddd]dfgdd ddd]gdd ddd]gdd ddd]dfgdd ddd]dfgdd ddd]dfgdd ddd]dfgdd ddd]dfgdd iddd]dfgdd ddgdd dddfgdd ddgdd ddgdd ddd]gdd ddd]gdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd idddfgdd dddfgdd ddgdd ddgdd ddgdd dddgdd ddgdd dddfdfgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd idddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd dddfgdd ddgdd d d d gdd d d d]dfgdd ddd]dfgdd iddd]dfgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd d d!gdd d"d#gdd d$d%gdd d&d'gdd d(d)gdd d*d+gdd d,d-gdd d.d/gdd d0d1gdd id2d3gdd d4d5gdd d6d7dfgdd d8d9gdd d:d;gdd d<d=gdd d>d?gdd d@dAgdd dBdCgdd dDdEdfgdd dFdGgdd dHdIgdd dJdKdgdd dLdMgdd dNdOd gdd dPdQd gdd dRdSgdd idTdUd]gdd dVdWd]gdd dXdYgdd dZd[gdd d\d]dgdd d^d_dgdd d`dagdbdd dcddgdd dedfgdd dgdhgdd didjd]gdd dkdlgdd dmdndfgdd dodpgdd dqdrgdd dsdtd]gdd dudvgdbdd idwdxgdbdd dydzgdd d{d|dfgdd d}d~dfdfgdd ddgdbdd dddfgdd dddfdfgdd ddgdbdd ddgdd dddfgdd dddfdfgdd ddgdbdd dddfdfgdd ddgdbdd ddgdd ddgdd ddgdd iddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddgddd ddgddd ddgddd ddgddd ddgdd ddgdd ddgdd dddgdd ddgdd ddgdd iddd]gdd ddgdd ddgdd dddfgdd dĐdgdd dƐdgdd dȐdgdd dʐdgdd d̐dd]gdd dΐdgdd dАdgdd dҐdgdd dԐdgdd d֐dgdd dؐdgdd dڐdgdd dܐdgdd idސdgdd ddgdd ddgdd ddgdd dddfgdd ddgdd dddfgdd ddgddd ddgddd ddgdd ddgdd ddd]gdd ddgdd ddgdd dddfgdd ddgdd ddgdd idddgdd ddgdd ddgdd dddfdfgdd dd gdd d d d gdd d dgdd dddgdd ddgdd ddgdd ddgdd ddgdd ddgdd ddd]gdd ddgdd d d!gdd d"d#gdd d$gdd d%gdd d&gdd d'gdd d(gdd d)gdd d*d]gdd d+gdd d,gdd d- Z)d.Z*d/Z+d0Z,d1Z-d2Z.d3Z/d4Z0d5Z1d6Z2d7Z3d8Z4d9Z5d:Z6ejJfd;Z7ejJfd<Z8ejJfd=Z9ejJfd>Z:d?Z;e<d@k(re;yy#e $rdZ Y wxYw(B)print_function)absolute_import)divisionNTF unpack_from) VBA_Parserdecompress_stream) codepageslatin1cN|jtdjdS)Nreplaceerrorszutf-8)decodecodecencodexs _/mnt/ssd/data/Dropbox/adrian/scripts/msg_venv/lib/python3.12/site-packages/pcodedmp/pcodedmp.pyrrs xxix077@@c|SNrs rordrsrc0|jtdS)Nrr)rrrs rrrsxxix00rzA VBA p-code disassemblerGPLz$https://github.com/bontchev/pcodedmpz1.2.6zVesselin Bontchevzvbontchev@yahoo.comc d}d}d}tdt||D]3}||||z}|dj||||dzdz ||z }5|S)Nc2djd|DS)N c3PK|]}djt| ywz{:02X}Nformatr.0is r z,hexdump....(s"Iq8??3q6#:"I$&joindatas rzhexdump..(s#(("ID"IIrc2djd|DS)Nc3vK|]1}dt|cxkrdkrnntt|nd3yw).N)rchrr&s rr)z,hexdump....)s.!\RS"s1v2C2C#c!f+#"M!\s79r+r-s rr/zhexdump..)s"''!\W[!\\rr1rz{:08X} {:{}} {} r )xrangelenr%)bufferlengththeHextheStrresultoffsetr.s rhexdumpr@'sw IF \F FCK0ffVf_-*11&&,QR UVX^_cXdeef Mrc(t|dz||dS)NHrrr:r?endians rgetWordrE0 v|VV 4Q 77rc(t|dz||dS)NLrrrCs rgetDWordrI3rFrc|rt|||}|dz }|xr|dk(}nt|||}|dz }|xr|dk(}|s|||zz }|S)NrIrE)r:r?rD isLengthDW elementSizecheckForMinusOner;skips r skipStructurerT6sh&&&1! :Vz%90! 6Vv%5 &;&& Mrc^|rt|||}|dz }||fSt|||}|dz }||fS)NrKrMrO)r:r?rDisDWordvalues rgetVarrXCsK0!  5=/!  5=rc|dk(rt||t||dzfSt||dzt||fS)N>r7)rrCs rgetTypeAndLengthr[LsM }6&>"Cvz(:$;;;6&1*%&F6N(;;;rciddddddddd d d d d ddddddddddddddddddd d!d"id#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDidEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidj}|jstdk|ltdm|ldn}|jj|j }t |}t |}g} |jsKtdoj||l|jrtt||ltdp|ldq} | |krP t|| dr} t|| dzdr} | dk(rd } n| dk(rd} | |vrds} n|| } |jstdtj| | du|v| d z } | r|js)tdw|ltt|| | | z|l| dk(r#t|| dr}tj|a nc| d\k(rG|| | | zjdxdyz}tr|j!d{dyz}n|}| j#|n| dk(rt%|| dr}|dk(}| | z } n|js tdu|l| |krP|| |fS#Y xYw)|Nr7 PROJ_SYSKINDrM PROJ_LCIDr PROJ_CODEPAGErK PROJ_NAMEPROJ_DOCSTRING PROJ_HELPFILEPROJ_HELPCONTEXT PROJ_LIBFLAGS PROJ_VERSION PROJ_GUID PROJ_PROPERTIES PROJ_CONSTANTS PROJ_LIBID_REGISTEREDPROJ_LIBID_PROJPROJ_MODULECOUNTrPROJ_EOFPROJ_TYPELIB_VERSIONPROJ_COMPAT_EXE PROJ_COOKIEPROJ_LCIDINVOKEPROJ_COMMAND_LINEPROJ_REFNAME_PROJMOD_NAME MOD_STREAM MOD_DOCSTRING MOD_HELPFILEMOD_HELPCONTEXT MOD_PROPERTIES!MOD_FBASMOD_StdMods"MOD_FBASMOD_Classes#MOD_FBASMOD_Creatable$MOD_FBASMOD_NoDisplay%MOD_FBASMOD_NoEdit&MOD_FBASMOD_RefLibs'MOD_FBASMOD_NonBasic(MOD_FBASMOD_Private)MOD_FBASMOD_Internal*MOD_FBASMOD_AllModTypes+MOD_END,MOD_COOKIETYPE-MOD_BASECLASSNULL. MOD_BASECLASS/PROJ_LIBID_TWIDDLED0PROJ_LIBID_EXTENDED1MOD_TEXTOFFSET2MOD_UNICODESTREAM<PROJ_UNICODE_CONSTANTS=PROJ_UNICODE_HELPFILE>PROJ_UNICODE_REFNAME_PROJ?PROJ_UNICODE_COMMAND_LINE@PROJ_UNICODE_DOCSTRINGMOD_UNICODE_NAMEMOD_UNICODE_DOCSTRINGMOD_UNICODE_HELPFILE)GHIO-------------------------------------------------------------------------------filezdir stream after decompression:F {:d} byteszdir stream parsed:r<UNKNOWNz {:08X}: {}r1endr: utf_16_lerrutf8) disasmOnlyprintole_file openstreamreadr r9r%verboser@rEr codepage2codecrrPYTHON2rappendrI) vbaParserdirPathargs output_filetagsis64bitdirDataCompresseddirData streamSize codeModulesr?tagwLengthtagNamecodepagestream_name_unicode stream_namesysKinds r processDirrRs< n< k< o< k <   <  o < < o< n< k< < < < < <  j!< "#< $%< &m'< ()< *+< ,-< 0j1< 2l3< 6o7< 8n9< :;< >?< @A< BC< DE< FG< HI< JK< LM< NO< PQ< RS< TiU< VW< XY< Zo[< \]< ^_< `a< bc< fg< hi< j!k< l!m< no< rw< D| ?? h[) /kBG!**55g>CCE 12GWJK ?? l!!*-K@ << ''" 5 "5 F : ) '63/Cgvz37Gax$;#s)??m**67;+V aKF#K0''&'1A"BC+Vo-&wE 33*1&'9I*J*Q*QR]fo*Q*p'&9&@&@PY&@&Z ': &&{3.&wBGGIN  (% {3 ,  c.1 2E || gn%K8 rc ,g} t|dd}|dk7r|St|dd}|dk\xr|dvxs|dk(}|dk\xr|dvxs|dk(}|dkxr|dk7xsd |cxkDxrd kDnc}t|d d}|d k(rd }nd}d} t|| |d\} } | dz } tjd| D]} t|| |d\} } | dk(r| dz } nR|r| d ks|s | dkr| | z } n>|r || dz} n|| dz} | | z } t t | dvrt || |ddd} | dz } t|| |d\} }|st || |ddd} t|| |d\} }|r| dz } | |dzz } t || |ddd} t || |ddd} | dz } t || |ddd} t || |ddd} t || |ddd} | dz } t|| |d\} }tjd|D]} t|| |d\} }|r| |z } |r|rt|| |d\} }| |z } t || |ddd} t || |ddd} t|| |d\} } |d k\rt || |ddd} t || |ddd} | dz } |dk7r| dz } t || |ddd} | dz } | dz } t || |ddd} | dz } t|| |d\} }t|| |d\} }t|| |d\} }| dz } ||z|z }||z }tjd|D]+} | dz } t|| |\}}| dz } |dkDr| dz } | |z } -tjd|D]|} d}d}t|| |\}}| dz } |dk(r!|dk(r| dz } t|| |\}}| dz } d}|dzr| dz } |r't|| | |z}|j|| |z } |rx| dz } ~ |S#t$r5}tdj|tjYd}~|Sd}~wwxYw) NrriarM[)`bcNY_krarsrZrFrcr rK)CDr7rkTdQrgrmr4r1 Error: {}.r)rErX itertoolsrepeatr6rrTr[rr Exceptionrr%sysstderr)r identifiersmagicversion unicodeRef unicodeNamenonUnicodeNamewordrDr?numRefs_ refLengthcr numProjectsw0numIDsw1 numJunkIDsidTypeidLengthisKwdidentes rgetTheIdentifiersrs[Ko73/ F? .!S1$OFF G! !!$0 'A &~vvu M FIA~! Y]jy[\}i'F!*6A:6*6A:6i'F3q6{j0!.~vvuVWY^!_ bLF!.&&%HLFD&~vvuaQVW"("OaKF'B,&- '0~vvuaO~vvuaO! ~vvuaN~vvuaN~vvuaN$$^VVUK !!$ 4 A$^VVUKOFG'!&,^VVU&SOFG'!">665!USF">665!TRF~vvuEIFA$&~vvuaQUV">665!TRF aKF$! ">665!USF bLF) * ! ~vvtQN! NFFEB FNFFEB ! b[2% b!!$ 3 A aKF/O FH aKF}!  h F  !!$/ AEE/O FH aKFA FaK! #3NFF#S ! }! ~fVh5FGH""5)("! # (  7 l!!!$3::66 7s*ODO6JO O P*PPImp)mnemrvargr7EqvrMXorOrrKAndraEqrcNereLergGeriLtrkGtrmAddroSubrqModrsIDivruMulDivrxConcatrzLiker|Pwrr~IsrNotrUMiFnAbsFnFixrFnIntrFnSgnFnLenrFnLenBrParenrSharpr3LdLHSnamerLdrMemLdrDictLdrIndexLd0xrArgsLdr ArgsMemLdr ArgsDictLdrStrMemStrDictStrIndexStrArgsStr ArgsMemStr ArgsDictStrSetrMemsetrDictsetrIndexsetrArgsSet3 ArgsMemSet4 ArgsDictSet5 MemLdWith6 DictLdWith7 ArgsMemLdWith8ArgsDictLdWith9 MemStWith: DictStWith; ArgsMemStWithrArgsDictStWithr MemSetWithr DictSetWithrArgsMemSetWithrArgsDictSetWithAArgsCallB ArgsMemCallCArgsMemCallWithD ArgsArrayEAssertFBoSr BoSImplicitrBoLr LdAddressOfJ MemAddressOfKCaseLCaseToMCaseGtrCaseLtOCaseGePCaseLerCaseNeRCaseEqSCaseElseTCaseDoneUCircleVCloseWCloseAllXCoercer CoerceVarZContextcontext_rDebug\DefType]Dim^ DimImplicitrDorDoEventsaDoUnitilrDoWhilerElser ElseBlocke ElseIfBlockfElseIfTypeBlockimp_gEndh EndContextiEndFuncjEndIfr EndIfBlockl EndImmediatemEndPropn EndSelectoEndSubpEndTypeqEndWithrErasesErrort EventDeclfunc_u RaiseEventvArgsMemRaiseEventwArgsMemRaiseEventWithxExitDoyExitForzExitFunc{ExitProp|ExitSub}FnCurDir~FnDirr4Empty0rEmpty1FnErrorFnFormat FnFreeFileFnInStrFnInStr3FnInStr4FnInStrB FnInStrB3 FnInStrB4FnLBoundFnMidFnMidB FnStrComp FnStrComp3 FnStringVar FnStringStrFnUBoundForForEach ForEachAsForStepFuncDefn FuncDefnSaveGetRecGoSubGoToIfIfBlockTypeOf IfTypeBlock Implements)rBrBrBrBInput InputDone InputItemLabelLetLineLineCont LineInputLineNumLitCyLitDate LitDefaultLitDI2LitDI4LitDI8LitHI2LitHI4LitHI8 LitNothingLitOI2LitOI4LitOI8LitR4LitR8 LitSmallI2LitStr LitVarSpecialLockLoop LoopUntil LoopWhileLSetMe MeImplicitMemRedim)r=rBtype_ MemRedimWith MemRedimAsMemRedimAsWithMidMidBNameNewNextNextVarOnErrorOnGosubOnGotoOpenOption OptionBase ParamByVal ParamOmitted ParamNamed PrintChan PrintCommaPrintEoSPrintItemComma PrintItemNL PrintItemSemiPrintNLPrintObj PrintSemiPrintSpcPrintTab PrintTabCommaPSetPutRecQuoteRemRedimRedimAsReparseRemResumeReturnRSetScaleSeek SelectCaseSelectIs SelectTypeSetStmtStackStopTyperec_UnlockVarDefnvar_WendWhileWith WriteChan ConstFuncExprLbConstLbIfLbElseLbElseIfLbEndIfLbMarkEndForVariableStartForVariableNewRedim StartWithExprSetOrStEndEnumIllegal) iiiiiiic|dk(rd|cxkrdkr|Sd|cxkr dkr|dzSd|cxkr dkr|d zSd |cxkr d kr|d zSd |cxkr dkr|dzSd|cxkr dkr|dzSd|cxkr dkr|dzSd|cxkr dkr |dzS|dzS|dzS|dk(r~d|cxkrdkr|Sd|cxkr dkr|dzSd|cxkr d kr|dzSd|cxkr d kr|dzSd |cxkr dkr|d zSd|cxkr dkr|dzSd!|cxkr dkr |dzS|dzS|dzS|s:d|cxkrd"kr|Sd#|cxkr d$kr|dzSd%|cxkr d&kr |dzS|dzS|dzS|S)'Nr rrmrorsrMrrrKrrrgr r#rir%r'rkr)r-rmr/rror3rarqr7rrrer r+r5r7r9r;r?r)opcodevbaVerrs rtranslateOpcoder[sB 1F!r!M"F!r!Q; "F!c!Q; " F !c !Q; " F !c !Q; " F !c !B; " F !c !B; " F !c !B; "B; 6B;  1F!r!M"F!r!Q; "F!c!Q; " F !c !Q; " F !c !Q; " F !c !Q; " F !c !B; "B; 6B; F!c!M" F !c !Q; " F !c !Q; "Q; 6Q;  rcgd}|}|dz} |dk\r%|dz}|dk\r|dz}|r|dz}|dkDr|dz}||S|dk\r |dk\r|dz}||S#d j|cYSxYw) N)z0AbsAccess AddressOfAliasrAnyAppendArrayAsrrBBaseBFBinaryBooleanByRefByteByValCallr{CBoolCByteCCurCDateCDecCDblCDeclChDirCIntrCLngrCompareConstCSngCStrCurDirzCurDir$CVarCVDateCVErrCurrencyDatabaseDatezDate$rDecimalDeclareDefBoolDefByteDefCurDefDateDefDecDefDblDefIntDefLngDefObjDefSngDefStrDefVarrDirzDir$rrDoubleEachrElseIfEmptyrrEnumrrrzError$Event WithEventsExplicitFFalseFixrFormatzFormat$FreeFileFriendFunctionGetGlobalGorGotorrrInrzInput$InputBr6InStrzInputB$IntInStrBr.IntegerLeftLBoundLenBLenLibr$r&r,LoadLocalrRLongrTrZr\rizMid$rkzMidB$r'Modulermrorqr/NothingNullObjectOnr{r}OptionalrOutput ParamArrayPreservePrintPrivatePropertyrPublicPutrRandom RandomizeReadReDimrrrRGBrrrSelectrMSgnSharedSingleSpcStaticSteprStrCompStringzString$r&TabTextThenToTruerrUBoundUnloadrUnknownUntilVariantWEndrWidthrWriterz#Constz#Elsez#ElseIfz#Endz#If AttributeVB_Base VB_Control VB_CreatableVB_CustomizableVB_Description VB_Exposed VB_Ext_Key VB_HelpIDVB_Invoke_FuncVB_Invoke_PropertyVB_Invoke_PropertyPutVB_Invoke_PropertyPutRefVB_MemberFlagsVB_NameVB_PredecraredID VB_ProcDataVB_TemplateDerivedVB_VarDescription VB_VarHelpIDVB_VarMemberFlagsVB_VarProcData VB_UserMemIDVB_VarUserMemIDVB_GlobalNameSpace,r5"r !#&'()*+-z /r;rz<=z<>=z=rZz>=?\^z:=r7rrerKr rWrbz id_{:04X})r%)idCoderrr internalNamesorigCodes rgetIDrs!MFH qLF, U? eOF{! aKFD=aKFv& &{T>aKF ( (,!!(++s)A A A c<t|||}t||||}|Sr)rEr)r:rr?rDrrobjectID objectNames rgetNamers&vvv.Hxfg>J rcgd}t||||}|t|kr||}nd}|dk(rd|zdz}|dk(rd}|dk(rd}n|d k(rd }n|d k(rd}|dk(rd }n|d k7rd}||zdzS)N)r1r%rrr@r$rrrrrr1r[]rur7z (Resume Next)rMz(GoTo 0)rz(Next)rr!)rr9) rrmnemonicopTyperrvarTypesvarNamestrTypes r disasmNamersTHD+vw7G H 6" R<Gmc)G Y  q[%G q[ G X  q[G q[G W s ""rc|dk7r?|dk(r&t||dzk\rt|||dz|||}|Sdj||}|Sgd} gd} |dz} |d zdz } |d zd z } d }| d zr|dz }n+| dzr|dz }n | dzr|dz }n| dzr|dz }n | dk(r|dz }| r| t| kr|d| | d z zz }| r'| dzr|dz }n| t| kr|d| | d z zz }|dz }|S)Nr{rrgrcz {}{:04X} )rSrk Read Write)rrkrSriiroz(For r7rrMrIrKrQrrrz Access z Sharedz Lock r)r9rr%) objectTablerargrrrDrrimpName accessModelockModemodeaccesslocks r disasmImprsS6 &=c+.$(:k;q&&RYZG8 N5"((d3G4 N15 4f}-Q&-B& D[ w G D[ x G D[ x G D[ x G T\ x G vZ0 zJvz$:: :G d{9$Z(8htax&8883 Nrcft|||dz|||}t||dz|}|dzdk(rd|z}|S)NrMrzr7rz (Private) )rrE) indirectTablerdwordrDrrroptionss r disasmRecrsI UQYPWXJmURZ8G! !J. rcbgd}|dz}|dz}|t|kr||}nd}|dzr|dz }|S)Nr1rEr:rBrYr"rrr^rFrrrhr1rr1r1rrir1rPtr)r9)typeIDdimTypes typeFlagstypeNames r getTypeNamer sNiH I eOF H F#4E Orc|gd}t||dz}|t|kr||}|Sdj|}|S)Nrrcz type_{:08X})rr9r%)rrrrrs r disasmTypersQiH uqy) *F H F# O!''. Orc"|ryt|||}t|||}|dzrt||} | St||dz|} | dk(rd} | S| dz dz} | dzt|kDryt|| |}t|| dz|} t | |||} | S)Nr1rMrrkrKrc)rIrErr9r) rrrr?rDrrtypeDescflagsrroffshlNames r disasmObjectrs vv6H M8V 4E t|mX60 O-}hlF; 19H( O%AI#Dax#k**[$7E[$(F;FV[&'BH Orc t||}t||dz}|dzdk7} |dzdk7} t|||dz|||} | s| rd} | r | dz } | r| dz } | rf|rd} nd } t||| zdz|}|d k(rt||| z}t|}nt ||||| z|||}t |dkDr| d |zz } t | dkDr | d | zd zz } | S)Nr7rrrMr1ror!rrorNzAs z (r)rrrErrr9)rrrrrDrrbFlag1bFlag2hasAshasNewrvarTyperrrrs r disasmVarr@s% u% &F uqy) *Ftm !Etm !Fm[%!)VVWUG   u G3 =%$,*:FCDv~]54<89&v.' {KQVY]Q]_egmovw8}q 58++ waM; 66SZ[w]INFC   "ai"nsS`Oa>a dii((3..H F j Z /z)F"6*H}k7Q;PVX_`HH OH Orc ||||z}dj|} |dvr| dt|zdzz } | S|dvry|} g} tjdt |dz D]0} t || |d\} } | j t| |||2| djd| Dd zz } | Sd jd |D}| |z } | S) Nz 0x{:04X} )rNrrrr)rwryrMFrc3 K|]}|ywrr)r'vs rr)zdisasmVarArg..s0a0s r!c3PK|]}djt| ywr#r$)r'r s rr)zdisasmVarArg..sFq8??3q62Fr*) r%rrrintrXrrr,) moduleDatarr?rrrDrr substring varArgNameoffset1varsr rr@s r disasmVarArgrs6&7"23I##G,J;;cF9--33   * *!!$GaK(89 CA":wFMGT KKdKA B C dii0400366  ((FIFFg rc  gd} gd}gd}| r"|dkDrtdj|d| tdj| | |dkry| rtt||||z| |}||z}||krt|||d \}}|d zd z }|d z}t |||}|t vrtdj||| yt |}|d}tdd| | rtdj|d| tdj|d| |dvrd|t | kr"tdj| |d| ni|dk(rtdd| nTtdj|d| n5|dvrg}|dzr|jdnD|dzr|jdn-|dzr|jdn|dzr|jd |d!zr|d"k7r|jd#t |rtdjd$j|d| n|d%k(r!td&j||d| n[|d'vr|dkrtd(d| nC|dz}n=|d)k(r!td*j||d| n|d+vr|dzrtd,d| |d-D]P}|d.k(r?t|||d \}}t||||||}td/j|d| H|d0vrAt|||d \}}t||||||||}td/j|d| |d1vst|||d2\}}|d3k(r@t ||d4zk\r/t||||||}td/j|d| n0|d5k(r;t ||d6zk\r*t||}td7j|d| n|d8k(rt ||dzk\rv|dzrtd9d| t|||||||}td/j|d| |dzrt|||}|d:z }td;j|d| nd|dj||d| |s|d?k(s#t|||d2\}}td@j|d| S|dArOt|||d \}}!t!||||!||||}"td/j|"d| ||!z }|!d!zr|d!z }td| ||kryy)BN) Varrr8LngSngDblCurrStrObjErrBoolr)r+rcrEr%)zBase 0zBase 1z Compare TextzCompare Binaryr)zPrivate Modulerz{:04X}: r1rz Line #{:d}:rFirkiz0Unrecognized opcode 0x{:04X} at offset 0x{:08X}.r z{:04X} z{} )rrrz({}) rxz(Byte) z({:d}) )rrrrKr2rgrOrrMrr[r7rr r!rPz({}))rjrlrnz(Call) r}z ({}))rrz (Preserve) rr=z{})rBr)rrrrarTrr~rarez(As {})rz (WithEvents) rMz 0x{:04X}rrz {}{:08X} rz{:08X} r)rr%r@rXropcodesr9rr,rrrrrrErr)#r lineStart lineLengthrDrrrrrrrliner varTypesLongspecialsrr? endOfLinerrtranslatedOpcode instructionrdimTyperrtheNametheImprtheRectheTypetheVartheFuncr theVarArgs# rdumpLinersnL1HbGJN j *E -  t $;7Q gj9z+ABC+V FJ&I 9  FFEB7"r)&*667C7* DKKFTZ[bm n ./ v& d-  )""6* E ell8$";? 9 9L))gnn\&%9:U2iRk:i&&v.B[I 7 7G$x($x($y)$x( H$6w'7|gnnSXXg%67RkR  ( &-- 01r L G G{iRk:"   ! '..1r L - -{m+>v&! MCf}%j&&%H $T;&&RYZdkk'*E&%j&&%H "; S$RXZ`bijdkk&)r DFF &z664 H Vm#m*< *J&}k5&RXZabF$++f-2KHWn3}+=+J(>G)**73+NVm#m*< *J}o2KH&}k;PUW]_egnoF$++f-2KH}&z66B! k006B[QWn3}+=+K(8H+W\^dflntv}~G$++g.B[I+,,S%8b{Sz 1$*:vvt$LMFE)**51r LC! MD v $ZGOFG$ZfgxY_agipqI $++i(b{ C g F{!  b{#q 9 rc|jr"|jstt||t |dddkDrd}nd}d} t |d|} |jrtdj | || dk\r| d k\rd }nd }|r(t |d |} |d d | z} t |d|} | dz} n't |d|} |d d | z} t |d|} | dz} t || |} | dz } || | | z} t |d|} | dz}t |||} |dz }|||| z}d}nd}d}t |||} |dz}|||| z} t|||ddd}|dz }t|||ddd}t|||ddd}|d z }t|||ddd}|dz}t |||} | dz} | dz}t |||} || | | z} t |||} | dz}t |||} |dz }|||| z}|dz }|jrt| r#td|tt| |t| r#td |tt| |t|r#td!|tt||t |||} | d"z}t|||d\}}|d#k7ry|dz }t|||d\}}||dzzdz}t|D]S}|dz }t|||d\}}|dz }t|||d\}}t|||z||||||| | |j||$ U y#t$r4}td%j |tjYd}~yd}~wwxYw)&NrrMrrrZr z"Internal Office version: 0x{:04X}.rr rercrmrrxrorrkrKrarrrmTr7Frrrgrsr~zDeclaration table:zIndirect table:z Object table:rirr)rrrr@rEr%rIrTr9rXrangerrrr)rrrrrrrrDrrdwLengthr tableStartr dwLength2rr?rrnumLines pcodeStartrr lineOffsetrs r pcodeDumpr;s ||DOO gj! 4z1c"T) FQ7.!V4 << 6==gF[ Y d?$#J?#-fVh5F#G #J?%] #J?#-fVh5F#G #J?%]  J?H !OJ&z*x2GHM FF;H 4I Iv>H NI$Yy8/CDKFFF FF;HA:D)$th? ":vvq%PF bLF":vvub%PF":vvq%PF aKF":vvq%PFA:D D&9H!BJb=D D&9H&z*x2GHM FF;Hf$D D&9H AID$T$/:K bLF <<#$*=g./kB=!'k:gm,;?;oK8gk*=J7F"z665A  F? ! !*ffeDhm+b0 (O pD aKF!' FFE!J FJ aKF!' FFD!I FJ Zj!8*ffV]_j -1A4<    $7  ' ' )%8  7 l!!!$3::667sG1GG11 H.:*H))H.crtdj||d} t|}|j |jD]}t |||nt ||||r|jyy#t $r4}tdj|tjYd}~Ld}~wwxYw)NzProcessing file: {}rrr) rr%rr ole_subfilesr'rrrclose)fileNamerrrsubFilers r processFiler-s  & &x 0{CI7x(    %$11 Gw+F G 9d D 7 l!!!$3::667sAA99 B6*B11B6ctjd}|jddddjt|jdd d d |jd ddd d|jddd d |jddddd|jddd|j }d} t j}|jt|jd}|jD]}tjj|rtj|D]i\}}}|D]0}tjj||}t!||| 2|j"sIt%|dkDsX|d=t%|dkDrktjj'|rt!||| t)d!j|t j*" |jj/t j0|y#t,$r6} t)d#j| t j*"d$}Yd} ~ ld} ~ wwxYw)%Nz-Dumps the p-code of VBA-containing documents.) descriptionz-vz --versionrz%(prog)s version {})actionrz-nz --norecurse store_truezDon't recurse into directories)r0helpz-dz --disasmonlyrz!Only disassemble, no stream dumps)destr0r2z-bz --verbosezDump the stream contentsz-oz--output outputfilezOutput file name)r3defaultr2 fileOrDirrz File or dir)nargsr2rwrz{} does not exist.rr)argparseArgumentParser add_argumentr% __VERSION__ parse_argsrstdoutr4openr6ospathisdirwalkr,r- norecurser9isfilerrrr*exit) parserr errorLevelrr= subdirListfileListfnamefullNamers rmainrNs*  $ $1` aF k) 5 < <[ IK mL=? n< @B k,79 j|T/1  3]C    DJjj ?? &t4KNN JDww}}T"24''$-/.D*h!)M#%77<<e#<#Hd LM~~!*o1 *1 "*o1 /%D$K@*11$7cjjI J  "HHZ  l!!!$3::6 s,r\s&&  9%  1  ! AF1. 0 ! 88 < 69ZZy)vFIZZ rpI 2V[]I 2V[]I 2V[]I 2V[] I  2V[] I  2V[] I 2V[]I 2V[]I 2V[]I 2V[]I 2V[]I 2V[]I 2V[]I 2V[]I 2V[]I  2V[]!I "2V[]#I $2V[]%I &2V[]'I (2V[])I *2V[]+I ,2V[]-I .2V[]/I 02V[]1I 22V[]3I 42V[]5I 62V[]7I 82V[]9I :2V[];I <2V[]=I >2V[]?I @F8V[]AI BF8V[]CI DF8V[]EI FF8V[]GI HD6V[]II JFd3CV[]KI LFd3CV[]MI NFd3CV[]OI PF8V[]QI RF8V[]SI TF8V[]UI VD6V[]WI XFd3CV[]YI ZFd3CV[][I \Fd3CV[]]I ^F8V[]_I `F8V[]aI bF8V[]cI dD6V[]eI fFd3CV[]gI hFd3CV[]iI jFd3CV[]kI lF8V[]mI nF8V[]oI pFd3CV[]qI r!Fd3CV[]sI tF8V[]uI vF8V[]wI xFd3CV[]yI z!Fd3CV[]{I |F8V[]}I ~F8V[]I @!Fd3CV[]AI B"Fd3CV[]CI DFd3CV[]EI FFd3CV[]GI H"Fd3CV[]II JFd3CV[]KI L2V[]MI ND6V[]OI P2V[]QI R2V[]SI TF8V[]UI VF8V[]WI X2V[]YI Z2V[][I \2V[]]I ^2V[]_I `2V[]aI b2V[]cI d2V[]eI f2V[]gI h2V[]iI j2V[]kI lD6V[]mI nD6V[]oI p2V[]qI r2V[]sI t2V[]uI vJV[]mI n$FD>V[]oI p(FD>V[]qI r2V[]sI t2V[]uI v2V[]wI x2V[]yI z2V[]{I |2V[]}I ~2V[]I @2V[]AI B2V[]CI D2V[]EI F2V[]GI H2V[]II J2V[]KI L2V[]MI N2V[]OI P2V[]QI R2V[]SI T2V[]UI VD6V[]WI X2V[]YI Z2V[][I \2V[]]I ^2V[]_I `2V[]aI b2V[]cI dD6V[]eI f2V[]gI h2V[]iI jF8V[]kI l2V[]mI nG9V[]oI pG9V[]qI r2V[]sI tF8V[]uI vF8V[]wI x2V[]yI z2V[]{I |F8V[]}I ~F8V[]I @3KV[]AI B2V[]CI D2V[]EI F2V[]GI HF8V[]II J2V[]KI LD6V[]MI N2W[]OI P2V[]QI RF8V[]SI T3KV[]UI V3KV[]WI X2V[]YI ZD6V[][I \D$h?